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
- 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>
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;
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;
}
}
+ float *p = points;
switch (field) {
case UNIFORM:
for (i=0; i<GetNumberOfDimensions(); i++) {
//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);
//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);
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;
// 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)