X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOImageReader.cpp;h=4b67e04c005f2c37ae91a1dc7fefdc588ef82741;hb=3a22e19184c369b130d4caa992a8e98e50c7a0ee;hp=281af5f5848f40689b664bdb0b81ac5f00d73ca3;hpb=c8ff6165bb552b048528c4ac94844642ff8b198d;p=creaImageIO.git diff --git a/src2/creaImageIOImageReader.cpp b/src2/creaImageIOImageReader.cpp index 281af5f..4b67e04 100644 --- a/src2/creaImageIOImageReader.cpp +++ b/src2/creaImageIOImageReader.cpp @@ -3,9 +3,13 @@ #include #include -#include +#if defined (USE_GDCM) + #include +#endif +#if defined(USE_GDCM2) + #include +#endif #include - #include #include #include @@ -15,7 +19,6 @@ //#include - #include "boost/filesystem/path.hpp" namespace creaImageIO @@ -29,34 +32,23 @@ namespace creaImageIO ImageReader::ImageReader() : mUnreadableImage(0), - mLastFilename("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"), - mLastReader(0) - + mLastFilename("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&") { // std::cout << "#### ImageReader::ImageReader()"<(new VtkImageReader(vtkPNGReader::New(), "PNG", ".png"))); + Register(boost::shared_ptr(new VtkImageReader(vtkTIFFReader::New(), "JPEG", ".jpeg"))); + Register(boost::shared_ptr(new VtkImageReader(vtkJPEGReader::New()))); + Register(boost::shared_ptr(new VtkImageReader(vtkBMPReader::New()))); + Register(boost::shared_ptr(new VtkImageReader(vtkSLCReader::New()))); + Register(boost::shared_ptr(new VtkImageReader(vtkMetaImageReader::New(),"MHD",".mhd"))); // Register(new VtkImageReader(vtkGESignalReader::New())); - Register(new DicomImageReader); - Register(new UltrasonixImageReader); - - /* - std::cout << "## Registered file extensions : "<::const_iterator i; - for (i=GetKnownExtensions().begin(); - i!=GetKnownExtensions().end(); - i++) - { - std::cout << "'"<<(*i)<<"'"<(new DicomImageReader)); + Register(boost::shared_ptr(new UltrasonixImageReader)); + + UnRegister(".txt"); + mUnreadableImage = vtkImageData::New(); int dim[3]; dim[0] = dim[1] = 128; @@ -81,15 +73,12 @@ namespace creaImageIO //===================================================================== ImageReader::~ImageReader() { - // std::cout << "#### ImageReader::~ImageReader()"<::iterator i; - for (i=mReader.begin(); i!=mReader.end(); i++) - { - // std::cout << "#### ImageReader::UnRegister(" - // << (*i)->GetName()<<")"<Delete(); @@ -99,63 +88,90 @@ namespace creaImageIO //===================================================================== //===================================================================== - void ImageReader::Register(AbstractImageReader* r) + void ImageReader::Register(boost::shared_ptr r) { - // std::cout << "#### ImageReader::Register("<GetName()<<")"<PushBackExtensions(mKnownExtensions); + + } + + void ImageReader::UnRegister(const std::string i_val) + { + mUnReader.push_back(i_val); + } //===================================================================== + //===================================================================== + // Returns true iff the file is readable + bool ImageReader::ShallNotRead( const std::string& filename ) + { + bool ok = true; + if(filename != "") + { + std::vector::iterator i ; + for (i=mUnReader.begin(); i!=mUnReader.end(); i++) + { + + if ( (*i).c_str() == filename) + { + ok = false; + break; + } + } + } + return ok; + + } + + //===================================================================== // 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; + + if( !ShallNotRead(filename)) + { + return ok; + } + if(filename != "") + { + std::vector >::iterator i; + for (i=mReader.begin(); i!=mReader.end(); i++) + { + 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="<GetScalarTypeAsString()<<", pointer="<GetScalarTypeAsString()<<", pointer="<& attr) { - // std::cout << "ImageReader::ReadDicomInfo '"<GetScalarTypeAsString()<<", pointer="<& v) { - std::vector::iterator i; + std::vector >::iterator i; for (i=mReader.begin(); i!=mReader.end(); i++) { (*i)->PushBackExtensions(v);