#include <creaImageIOTreeAttributeDescriptor.h>
#include <vtkStringArray.h>
-
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#endif
namespace creaImageIO
{
//=====================================================================
bool DicomImageReader::CanRead(const std::string& filename)
{
- // std::cout << "## Reader "<<GetName()
- //<<" ::CanRead("<<filename<<")"
- // <<std::endl;
- // return true;
-
-
- // GDCM_NAME_SPACE
- // std::cout << "GDCM_NAME_SPACE = '" << STRINGIFY_SYMBOL(GDCM_NAME_SPACE)
- // << "'"
- // <<std::endl;
-
+ GDCM_NAME_SPACE::Document*doc;
GDCM_NAME_SPACE::File* file = GDCM_NAME_SPACE::File::New();
file->SetLoadMode( GDCM_NAME_SPACE::LD_ALL);
file->SetFileName(filename.c_str());
file->Load();
bool ok = file->IsReadable();
+ if(!ok)
+ {
+ doc = (GDCM_NAME_SPACE::Document*)file;
+ ok = doc->IsReadable();
+ }
file->Delete();
return ok;
}
//=====================================================================
vtkImageData* DicomImageReader::ReadImage(const std::string& filename)
{
- // std::cout << "## Reader "<<GetName()
- //<<" ::Read("<<filename<<")"
- // <<std::endl;
-
vtkImageData* im = 0;
try
{
}
return im;
}
-
+
//=====================================================================
void DicomImageReader::PushBackExtensions(std::vector<std::string>& v)
{
//========================================================================
std::string irclean(const std::string& str)
{
- if (str == "GDCM::Unfound")
- {
- return "";
- }
- if (str[str.size()-1]==' ')
- {
- return str.substr(0,str.size()-1);
- }
- if (str[str.size()-1]==0)
- {
- return str.substr(0,str.size()-1);
- }
+ if(str.size() > 0)
+ {
+ if (str == "GDCM::Unfound")
+ {
+ return "";
+ }
+ if (str[str.size()-1]==' ')
+ {
+ return str.substr(0,str.size()-1);
+ }
+ if (str[str.size()-1]==0)
+ {
+ return str.substr(0,str.size()-1);
+ }
+ }
return str;
}
void DicomImageReader::ReadAttributes(const std::string& filename,
std::map<std::string,std::string>& attr)
{
- // std::cout << "DicomImageReader::ReadDicomInfo '"<<filename<<"'"<<std::endl;
GimmickMessage(2,"Reading attributes from DICOM file '"
<<filename<<"'"<<std::endl);
-
+
GDCM_NAME_SPACE::File* file = GDCM_NAME_SPACE::File::New();
+
+ GDCM_NAME_SPACE::Document *doc= GDCM_NAME_SPACE::File::New();
+ doc->SetLoadMode( GDCM_NAME_SPACE::LD_ALL);
+ doc->SetFileName(filename.c_str());
+ doc->Load();
file->SetLoadMode( GDCM_NAME_SPACE::LD_ALL);
file->SetFileName(filename.c_str());
file->Load();
- if (file->IsReadable())
+ if (file->IsReadable() ||((GDCM_NAME_SPACE::Document*) file)->IsReadable())
{
-
std::map<std::string,std::string>::iterator i;
for (i=attr.begin();i!=attr.end();++i)
{
else if ( i->first == "FullFileName" )
{
i->second = filename;
+ }
+ else if ( i->first == "FullFileDirectory" )
+ {
+ std::string::size_type last_pos = filename.find_last_of("//");
+ //find first separator
+ i->second = filename.substr(0, last_pos);
}
else
{
uint16_t gr;
uint16_t el;
tree::AttributeDescriptor::GetDicomGroupElementFromKey(i->first,gr,el);
- // GimmickMessage(2,"Key '"<<i->first<<"' : "<<gr<<"|"<<el
- // <<std::endl);
if ( ( gr!=0 ) && ( el!=0 ) )
{
std::string val = file->GetEntryString(gr,el);
i->second = irclean(val);
- // GimmickMessage(2,"Key '"<<i->first<<"' : "<<gr<<"|"<<el
- // <<"="<<i->second<<std::endl);
}
}
}
}
file->Delete();
}
-
+
//=====================================================================
} // namespace creaImageIO