X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOImageReader.cpp;h=4b67e04c005f2c37ae91a1dc7fefdc588ef82741;hb=3a22e19184c369b130d4caa992a8e98e50c7a0ee;hp=54257c1abc7fa45ea2fe87807f48ee28c5d6ddc5;hpb=c3995376cec80f027b3639ba919883590849df27;p=creaImageIO.git diff --git a/src2/creaImageIOImageReader.cpp b/src2/creaImageIOImageReader.cpp index 54257c1..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,24 +32,22 @@ 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); + Register(boost::shared_ptr(new DicomImageReader)); + Register(boost::shared_ptr(new UltrasonixImageReader)); + UnRegister(".txt"); mUnreadableImage = vtkImageData::New(); int dim[3]; @@ -72,12 +73,12 @@ namespace creaImageIO //===================================================================== ImageReader::~ImageReader() { - std::vector::iterator i; - for (i=mReader.begin(); i!=mReader.end(); i++) - { - delete (*i); - } - mReader.clear(); + + // for (i=mReader.begin(); i!=mReader.end(); i++) + // { + //delete (*i); + // } +// mReader.clear(); if (mUnreadableImage!=0) { mUnreadableImage->Delete(); @@ -87,21 +88,55 @@ namespace creaImageIO //===================================================================== //===================================================================== - void ImageReader::Register(AbstractImageReader* r) + void ImageReader::Register(boost::shared_ptr r) { mReader.push_back(r); + } + + 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 ) { bool ok = false; + + if( !ShallNotRead(filename)) + { + return ok; + } if(filename != "") { - std::vector::iterator i; + std::vector >::iterator i; for (i=mReader.begin(); i!=mReader.end(); i++) { ok = (*i)->CanRead(filename); @@ -122,7 +157,7 @@ namespace creaImageIO // Reads the file (CanRead must be called before : no test here) vtkImageData* ImageReader::ReadImage( const std::string& filename) { - if (mLastFilename!=filename) + if (mLastFilename!=filename) { if (!CanRead(filename)) { @@ -162,7 +197,7 @@ namespace creaImageIO /// Pushes back all kwown extensions (without dot) in the vector given void ImageReader::PushBackExtensions(std::vector& v) { - std::vector::iterator i; + std::vector >::iterator i; for (i=mReader.begin(); i!=mReader.end(); i++) { (*i)->PushBackExtensions(v);