-// $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
#include <windows.h>
int GetDir(string dPath, list<string> &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;
}
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");
}
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");
}
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.;
}
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.;
}
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,
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.;
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.;
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
}
}
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
}
}
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
}
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
// 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
*/
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 ???
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)");
//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)");