]> Creatis software - clitk.git/blobdiff - common/clitkXdrImageIOReader.cxx
Change serie number to serie UID
[clitk.git] / common / clitkXdrImageIOReader.cxx
index bc3a24a98c5bca867d948b4ed535eeacd14f38f7..2e5ad4f2300234e8cf4b040044bae6c8b1b6a1c7 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>
@@ -202,10 +202,10 @@ static char *scan_header(const char *file, const char *name, int offset, int rem
 
 static int get_nki_compressed_size(FILE *f)
 {
-  NKI_MODE2            Header;
-  int                  iMode;
+  NKI_MODE2            Header;
+  int                  iMode;
 
-  fread((void *)&Header, sizeof(Header), 1 , f);
+  int tempReturn = fread((void *)&Header, sizeof(Header), 1 , f);
 
   iMode = Header.iMode;
 
@@ -593,7 +593,7 @@ int clitk::XdrImageIO::ReadImageInformationWithError()
   fstream = fopen(file, "rt");
   if (fstream == NULL) return ER_XDR_OPEN;
 
-  fgets(temp, 500, fstream);
+  char* tempReturn = fgets(temp, 500, fstream);
   fclose(fstream);
 
   if (memcmp(temp, "# AVS field file (produced by avs_nfwrite.c)", 44)==0) forcenoswap=1;
@@ -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;
@@ -937,7 +938,7 @@ bool clitk::XdrImageIO::CanReadFile(const char* FileNameToRead)
 //        AVSerror("Couldn't open file " << FileNameToRead);
     return false;
 //    }
-  fgets(temp, 500, fstream);
+  char* tempReturn = fgets(temp, 500, fstream);
   fclose(fstream);
 
   if (memcmp(temp, "# AVS", 5)==0)