X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmHeaderHelper.cxx;h=05ade1c54c6e64685a3cb951e2192327f73d4d77;hb=900c8b2d6c78b925b07a48fc4f233659cc00faf8;hp=cb32855dc1c67997fe0a28ecec98fe51e4f2510a;hpb=5f5eda4e34ec5f7975adcb1c3fbc4064f918db98;p=gdcm.git diff --git a/src/gdcmHeaderHelper.cxx b/src/gdcmHeaderHelper.cxx index cb32855d..05ade1c5 100644 --- a/src/gdcmHeaderHelper.cxx +++ b/src/gdcmHeaderHelper.cxx @@ -1,4 +1,4 @@ -// $Header: /cvs/public/gdcm/src/Attic/gdcmHeaderHelper.cxx,v 1.2 2003/09/09 08:46:32 malaterre Exp $ +// $Header: /cvs/public/gdcm/src/Attic/gdcmHeaderHelper.cxx,v 1.5 2003/09/18 09:32:15 regrain Exp $ //This is needed when compiling in debug mode #ifdef _MSC_VER @@ -24,19 +24,22 @@ using namespace std; #include int GetDir(string dPath, list &filenames) { + //For now dPath should have an ending "\" WIN32_FIND_DATA FileData; HANDLE hFile; - hFile = FindFirstFile(dPath.c_str(), &FileData); + hFile = FindFirstFile((dPath+"*").c_str(), &FileData); if ( hFile == INVALID_HANDLE_VALUE ) { //No files ! return false; } - filenames.push_back( FileData.cFileName ); + if( strncmp(FileData.cFileName, ".", 1) != 0 ) + filenames.push_back( dPath+FileData.cFileName ); while( FindNextFile(hFile, &FileData ) != 0) { - filenames.push_back( FileData.cFileName ); + if( strncmp(FileData.cFileName, ".", 1) != 0 ) + filenames.push_back( dPath+FileData.cFileName ); } return true; } @@ -114,7 +117,7 @@ int gdcmHeaderHelper::GetPixelSize() { string gdcmHeaderHelper::GetPixelType() { string BitsAlloc; BitsAlloc = GetElValByName("Bits Allocated"); - if (BitsAlloc == "gdcm::Unfound") { + if (BitsAlloc == GDCM_UNFOUND) { dbg.Verbose(0, "gdcmHeader::GetPixelType: unfound Bits Allocated"); BitsAlloc = string("16"); } @@ -123,7 +126,7 @@ string gdcmHeaderHelper::GetPixelType() { string Signed; Signed = GetElValByName("Pixel Representation"); - if (Signed == "gdcm::Unfound") { + if (Signed == GDCM_UNFOUND) { dbg.Verbose(0, "gdcmHeader::GetPixelType: unfound Pixel Representation"); BitsAlloc = string("0"); } @@ -145,7 +148,7 @@ float gdcmHeaderHelper::GetXSpacing() { float xspacing, yspacing; string StrSpacing = GetPubElValByNumber(0x0028,0x0030); - if (StrSpacing == "gdcm::Unfound") { + if (StrSpacing == GDCM_UNFOUND) { dbg.Verbose(0, "gdcmHeader::GetXSpacing: unfound Pixel Spacing (0028,0030)"); return 1.; } @@ -165,7 +168,7 @@ float gdcmHeaderHelper::GetYSpacing() { float xspacing, yspacing; string StrSpacing = GetPubElValByNumber(0x0028,0x0030); - if (StrSpacing == "gdcm::Unfound") { + if (StrSpacing == GDCM_UNFOUND) { dbg.Verbose(0, "gdcmHeader::GetYSpacing: unfound Pixel Spacing (0028,0030)"); return 1.; } @@ -201,10 +204,10 @@ float gdcmHeaderHelper::GetZSpacing() { string StrSpacingBSlices = GetPubElValByNumber(0x0018,0x0088); - if (StrSpacingBSlices == "gdcm::Unfound") { + if (StrSpacingBSlices == GDCM_UNFOUND) { dbg.Verbose(0, "gdcmHeader::GetZSpacing: unfound StrSpacingBSlices"); string StrSliceThickness = GetPubElValByNumber(0x0018,0x0050); - if (StrSliceThickness == "gdcm::Unfound") + if (StrSliceThickness == GDCM_UNFOUND) return 1.; else // if no 'Spacing Between Slices' is found, @@ -240,10 +243,10 @@ float gdcmHeaderHelper::GetXOrigin() { float xImPos, yImPos, zImPos; string StrImPos = GetPubElValByNumber(0x0020,0x0032); - if (StrImPos == "gdcm::Unfound") { + if (StrImPos == GDCM_UNFOUND) { dbg.Verbose(0, "gdcmHeader::GetXImagePosition: unfound Image Position Patient (0020,0032)"); StrImPos = GetPubElValByNumber(0x0020,0x0030); // For ACR-NEMA images - if (StrImPos == "gdcm::Unfound") { + if (StrImPos == GDCM_UNFOUND) { dbg.Verbose(0, "gdcmHeader::GetXImagePosition: unfound Image Position (RET) (0020,0030)"); // How to tell the caller nothing was found ? return 0.; @@ -265,10 +268,10 @@ float gdcmHeaderHelper::GetYOrigin() { float xImPos, yImPos, zImPos; string StrImPos = GetPubElValByNumber(0x0020,0x0032); - if (StrImPos == "gdcm::Unfound") { + if (StrImPos == GDCM_UNFOUND) { dbg.Verbose(0, "gdcmHeader::GetYImagePosition: unfound Image Position Patient (0020,0032)"); StrImPos = GetPubElValByNumber(0x0020,0x0030); // For ACR-NEMA images - if (StrImPos == "gdcm::Unfound") { + if (StrImPos == GDCM_UNFOUND) { dbg.Verbose(0, "gdcmHeader::GetYImagePosition: unfound Image Position (RET) (0020,0030)"); // How to tell the caller nothing was found ? return 0.; @@ -291,7 +294,7 @@ float gdcmHeaderHelper::GetYOrigin() { float gdcmHeaderHelper::GetZOrigin() { float xImPos, yImPos, zImPos; string StrImPos = GetPubElValByNumber(0x0020,0x0032); - if (StrImPos != "gdcm::Unfound") { + if (StrImPos != GDCM_UNFOUND) { if( sscanf( StrImPos.c_str(), "%f\\%f\\%f", &xImPos, &yImPos, &zImPos) != 3) { dbg.Verbose(0, "gdcmHeader::GetZImagePosition: wrong Image Position Patient (0020,0032)"); return 0.; // bug in the element 0x0020,0x0032 @@ -300,7 +303,7 @@ float gdcmHeaderHelper::GetZOrigin() { } } StrImPos = GetPubElValByNumber(0x0020,0x0030); // For ACR-NEMA images - if (StrImPos != "gdcm::Unfound") { + if (StrImPos != GDCM_UNFOUND) { if( sscanf( StrImPos.c_str(), "%f\\%f\\%f", &xImPos, &yImPos, &zImPos) != 3) { dbg.Verbose(0, "gdcmHeader::GetZImagePosition: wrong Image Position (RET) (0020,0030)"); return 0.; // bug in the element 0x0020,0x0032 @@ -309,7 +312,7 @@ float gdcmHeaderHelper::GetZOrigin() { } } string StrSliceLocation = GetPubElValByNumber(0x0020,0x1041);// for *very* old ACR-NEMA images - if (StrSliceLocation != "gdcm::Unfound") { + if (StrSliceLocation != GDCM_UNFOUND) { if( sscanf( StrSliceLocation.c_str(), "%f", &zImPos) !=1) { dbg.Verbose(0, "gdcmHeader::GetZImagePosition: wrong Slice Location (0020,1041)"); return 0.; // bug in the element 0x0020,0x1041 @@ -319,7 +322,7 @@ float gdcmHeaderHelper::GetZOrigin() { } dbg.Verbose(0, "gdcmHeader::GetZImagePosition: unfound Slice Location (0020,1041)"); string StrLocation = GetPubElValByNumber(0x0020,0x0050); - if (StrLocation != "gdcm::Unfound") { + if (StrLocation != GDCM_UNFOUND) { if( sscanf( StrLocation.c_str(), "%f", &zImPos) !=1) { dbg.Verbose(0, "gdcmHeader::GetZImagePosition: wrong Location (0020,0050)"); return 0.; // bug in the element 0x0020,0x0050 @@ -344,7 +347,7 @@ int gdcmHeaderHelper::GetImageNumber() { // simpler and faster function. sscanf() can do all possible conversions whereas atoi() can //only do single decimal integer conversions. string StrImNumber = GetPubElValByNumber(0x0020,0x0013); //0020 0013 IS REL Image Number - if (StrImNumber != "gdcm::Unfound") { + if (StrImNumber != GDCM_UNFOUND) { return atoi( StrImNumber.c_str() ); } return 0; //Hopeless @@ -357,35 +360,48 @@ int gdcmHeaderHelper::GetImageNumber() { */ ModalityType gdcmHeaderHelper::GetModality(void) { string StrModality = GetPubElValByNumber(0x0008,0x0060); //0008 0060 CS ID Modality - if (StrModality != "gdcm::Unfound") { - if ( StrModality.find("CR") < StrModality.length()) - { - return CR; - } - else if ( StrModality.find("CT") < StrModality.length() ) - { - return CT; - } - else if ( StrModality.find("MR") < StrModality.length()) - { - return MR; - } - else if ( StrModality.find("NM") < StrModality.length()) - { - return NM; - } - else if ( StrModality.find("OT") < StrModality.length()) - { - return OT; - } - else if ( StrModality.find("US") < StrModality.length()) - { - return US; - } - else if ( StrModality.find("XA") < StrModality.length()) - { - return XA; - } + if (StrModality != GDCM_UNFOUND) { + if ( StrModality.find("AU") < StrModality.length()) return AU; + else if ( StrModality.find("AS") < StrModality.length()) return AS; + else if ( StrModality.find("BI") < StrModality.length()) return BI; + else if ( StrModality.find("CF") < StrModality.length()) return CF; + else if ( StrModality.find("CP") < StrModality.length()) return CP; + else if ( StrModality.find("CR") < StrModality.length()) return CR; + else if ( StrModality.find("CT") < StrModality.length()) return CT; + else if ( StrModality.find("CS") < StrModality.length()) return CS; + else if ( StrModality.find("DD") < StrModality.length()) return DD; + else if ( StrModality.find("DF") < StrModality.length()) return DF; + else if ( StrModality.find("DG") < StrModality.length()) return DG; + else if ( StrModality.find("DM") < StrModality.length()) return DM; + else if ( StrModality.find("DS") < StrModality.length()) return DS; + else if ( StrModality.find("DX") < StrModality.length()) return DX; + else if ( StrModality.find("ECG") < StrModality.length()) return ECG; + else if ( StrModality.find("EPS") < StrModality.length()) return EPS; + else if ( StrModality.find("FA") < StrModality.length()) return FA; + else if ( StrModality.find("FS") < StrModality.length()) return FS; + else if ( StrModality.find("HC") < StrModality.length()) return HC; + else if ( StrModality.find("HD") < StrModality.length()) return HD; + else if ( StrModality.find("LP") < StrModality.length()) return LP; + else if ( StrModality.find("LS") < StrModality.length()) return LS; + else if ( StrModality.find("MA") < StrModality.length()) return MA; + else if ( StrModality.find("MR") < StrModality.length()) return MR; + else if ( StrModality.find("NM") < StrModality.length()) return NM; + else if ( StrModality.find("OT") < StrModality.length()) return OT; + else if ( StrModality.find("PT") < StrModality.length()) return PT; + else if ( StrModality.find("RF") < StrModality.length()) return RF; + else if ( StrModality.find("RG") < StrModality.length()) return RG; + else if ( StrModality.find("RTDOSE") < StrModality.length()) return RTDOSE; + else if ( StrModality.find("RTIMAGE") < StrModality.length()) return RTIMAGE; + else if ( StrModality.find("RTPLAN") < StrModality.length()) return RTPLAN; + else if ( StrModality.find("RTSTRUCT") < StrModality.length()) return RTSTRUCT; + else if ( StrModality.find("SM") < StrModality.length()) return SM; + else if ( StrModality.find("ST") < StrModality.length()) return ST; + else if ( StrModality.find("TG") < StrModality.length()) return TG; + else if ( StrModality.find("US") < StrModality.length()) return US; + else if ( StrModality.find("VF") < StrModality.length()) return VF; + else if ( StrModality.find("XA") < StrModality.length()) return XA; + else if ( StrModality.find("XC") < StrModality.length()) return XC; + else { //throw error return value ??? @@ -447,7 +463,7 @@ void gdcmHeaderHelper::GetImageOrientationPatient( float* iop ) { iop[0] = iop[1] = iop[2] = iop[3] = iop[4] = iop[5] = 0; string StrImOriPat = GetPubElValByNumber(0x0020,0x0037); // 0020 0037 DS REL Image Orientation (Patient) - if (StrImOriPat != "gdcm::Unfound") { + if (StrImOriPat != GDCM_UNFOUND) { if( sscanf( StrImOriPat.c_str(), "%f\\%f\\%f\\%f\\%f\\%f", &iop[0], &iop[1], &iop[2], &iop[3], &iop[4], &iop[5]) != 6) { dbg.Verbose(0, "gdcmHeader::GetImageOrientationPatient: wrong Image Orientation Patient (0020,0037)"); @@ -459,7 +475,7 @@ void gdcmHeaderHelper::GetImageOrientationPatient( float* iop ) { //For ACR-NEMA StrImOriPat = GetPubElValByNumber(0x0020,0x0035); //0020 0035 DS REL Image Orientation (RET) - if (StrImOriPat != "gdcm::Unfound") { + if (StrImOriPat != GDCM_UNFOUND) { if( sscanf( StrImOriPat.c_str(), "%f\\%f\\%f\\%f\\%f\\%f", &iop[0], &iop[1], &iop[2], &iop[3], &iop[4], &iop[5]) != 6) { dbg.Verbose(0, "gdcmHeader::GetImageOrientationPatient: wrong Image Orientation Patient (0020,0035)");