]> Creatis software - clitk.git/blobdiff - common/clitkXdrImageIOReader.cxx
Remove warnings
[clitk.git] / common / clitkXdrImageIOReader.cxx
index bc3a24a98c5bca867d948b4ed535eeacd14f38f7..ee3f50b070658a4f504dd3f15a735486a3d06bed 100644 (file)
@@ -3,7 +3,7 @@
 
   Authors belong to:
   - University of LYON              http://www.universite-lyon.fr/
-  - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
+  - Léon Bérard cancer center       http://www.centreleonberard.fr
   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
 
   This software is distributed WITHOUT ANY WARRANTY; without even
@@ -14,7 +14,7 @@
 
   - BSD        See included LICENSE.txt file
   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-======================================================================-====*/
+===========================================================================**/
 /**
  * @file   clitkXdrImageIO.cxx
  * @author Simon Rit <simon.rit@gmail.com>
@@ -683,6 +683,7 @@ int clitk::XdrImageIO::ReadImageInformationWithError()
       }
     }
 
+    float *p = points;
     switch (field) {
     case UNIFORM:
       for (i=0; i<GetNumberOfDimensions(); i++) {
@@ -695,21 +696,21 @@ int clitk::XdrImageIO::ReadImageInformationWithError()
       //Error if fails
       for (i=0; i<GetNumberOfDimensions(); i++) {
         //Compute mean spacing
-        SetSpacing(i,10*(points[GetDimensions(i)-1]-points[0])/(GetDimensions(i)-1));
-        SetOrigin(i,10*points[0]);
+        SetSpacing(i,10*(p[GetDimensions(i)-1]-p[0])/(GetDimensions(i)-1));
+        SetOrigin(i,10*p[0]);
 
         //Test if rectilinear image is actually uniform (tolerance 0.1 mm)
-        for (j=0; j<GetDimensions(i)-1; j++) {
-          if (fabs((points[j+1]-points[j])*10-GetSpacing(i))>0.1) {
-            free(points);
-            fclose(fstream);
-            return ER_NOT_HANDLED;
+        if(i<3) { // Only for first 3 dimensions because spacing is barely used in other dims
+          for (j=0; j<GetDimensions(i)-1; j++) {
+            if (fabs((p[j+1]-p[j])*10-GetSpacing(i))>0.1) {
+              free(points);
+              fclose(fstream);
+              return ER_NOT_HANDLED;
+            }
           }
         }
-        points += (int)GetDimensions(i);
+        p += (int)GetDimensions(i);
       }
-      for (i=0; i<GetNumberOfDimensions(); i++)
-        points -= GetDimensions(i);
       break;
     case IRREGULAR:
       free(points);
@@ -749,7 +750,7 @@ int clitk::XdrImageIO::ReadWithError(void * buffer)
   //int      forcenoswap=0;
   char     *file = const_cast<char *>(m_FileName.c_str());
   int      offset=0;
-  AVSType  field=UNIFORM;
+  // AVSType  field=UNIFORM;
 
   for (i=0; i<GetNumberOfDimensions(); i++) coords += GetDimensions(i);
 
@@ -758,9 +759,9 @@ int clitk::XdrImageIO::ReadWithError(void * buffer)
 
   c = scan_header(file, "field", offset, 1);
   if (c) {
-    if (memicmp(c, "unifo", 5) == 0) field=UNIFORM, coords=nspace*2;
-    else if (memicmp(c, "recti", 5) == 0) field=RECTILINEAR;
-    else if (memicmp(c, "irreg", 5) == 0) field=IRREGULAR, coords=total*nspace;
+    if (memicmp(c, "unifo", 5) == 0) /*field=UNIFORM,*/ coords=nspace*2;
+    // else if (memicmp(c, "recti", 5) == 0) field=RECTILINEAR;
+    else if (memicmp(c, "irreg", 5) == 0) /*field=IRREGULAR,*/ coords=total*nspace;
     else return ER_XDR_FIELD;
   } else
     coords=0;