#include #include #include #include #include #include #include #include #include #include #include //#include #include "boost/filesystem/path.hpp" namespace creaImageIO { //===================================================================== /* void IRFillFields(DicomNode* node, GDCM_NAME_SPACE::File* gdcmFile) { const DicomNodeTypeDescription::FieldDescriptionMapType& dm = node->GetTypeDescription().GetFieldDescriptionMap(); DicomNodeTypeDescription::FieldDescriptionMapType::const_iterator i; DicomNode::FieldValueMapType& vm = node->GetFieldValueMap(); for (i=dm.begin(); i!=dm.end(); ++i) { if ( (i->second.flags==0) && (i->second.group!=0) && (i->second.element!=0) ) { uint16_t gr = i->second.group; uint16_t el = i->second.element; std::string val = gdcmFile->GetEntryString(gr,el); vm[i->first] = irclean(val); } else { vm[i->first] = ""; } } } */ //===================================================================== //===================================================================== ImageReader::ImageReader() : mUnreadableImage(0), mLastFilename("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"), mLastReader(0) { // std::cout << "#### ImageReader::ImageReader()"<::const_iterator i; for (i=GetKnownExtensions().begin(); i!=GetKnownExtensions().end(); i++) { std::cout << "'"<<(*i)<<"'"<SetDimensions ( dim ); mUnreadableImage->SetScalarTypeToUnsignedChar(); mUnreadableImage->AllocateScalars(); for (int i=0;iSetScalarComponentFromFloat(i,j,0,0,0); for (int i=0;iSetScalarComponentFromFloat(i,i,0,0,255); mUnreadableImage->SetScalarComponentFromFloat(dim[0]-1-i,i,0,0,255); } } //===================================================================== //===================================================================== ImageReader::~ImageReader() { // std::cout << "#### ImageReader::~ImageReader()"<::iterator i; for (i=mReader.begin(); i!=mReader.end(); i++) { // std::cout << "#### ImageReader::UnRegister(" // << (*i)->GetName()<<")"<Delete(); mUnreadableImage = 0; } } //===================================================================== //===================================================================== void ImageReader::Register(SpecificImageReader* r) { // std::cout << "#### ImageReader::Register("<GetName()<<")"<PushBackExtensions(mKnownExtensions); } //===================================================================== //===================================================================== // Returns true iff the file is readable bool ImageReader::CanRead( const std::string& filename, const std::string& exclude ) { // std::cout << "## ImageReader::CanRead("<::iterator i; for (i=mReader.begin(); i!=mReader.end(); i++) { if ((*i)->GetName()==exclude) continue; ok = (*i)->CanRead(filename); if (ok) { mLastFilename = filename; mLastReader = *i; break; } } return ok; } //===================================================================== //===================================================================== // Reads the file (CanRead must be called before : no test here) vtkImageData* ImageReader::ReadImage( const std::string& filename, const std::string& exclude ) { // std::cout << "## ImageReader::Read("<ShallowCopy(mUnreadableImage); return im; } } vtkImageData* i = mLastReader->ReadImage(mLastFilename); // std::cout << "i="<ShallowCopy(mUnreadableImage); } // std::cout << "i="<& attr) { // std::cout << "ImageReader::ReadDicomInfo '"<ReadAttributes(mLastFilename,attr); } //===================================================================== } // namespace creaImageIO