From: guigues Date: Mon, 23 Feb 2009 10:22:43 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: EED.02Oct2009~177 X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;ds=inline;h=139340305dd41bfdfff00f02a8c8c59241d14cb1;p=creaImageIO.git *** empty log message *** --- diff --git a/src2/CMakeLists.txt b/src2/CMakeLists.txt index 8a40709..29c67a1 100644 --- a/src2/CMakeLists.txt +++ b/src2/CMakeLists.txt @@ -17,7 +17,7 @@ SET( SRCS creaImageIOTreeComparators # Image readers - creaImageIOSpecificImageReader + creaImageIOAbstractImageReader creaImageIOVtkImageReader creaImageIODicomImageReader creaImageIOImageReader diff --git a/src2/creaImageIOSpecificImageReader.h b/src2/creaImageIOAbstractImageReader.h similarity index 73% rename from src2/creaImageIOSpecificImageReader.h rename to src2/creaImageIOAbstractImageReader.h index abb6370..3d8ac24 100644 --- a/src2/creaImageIOSpecificImageReader.h +++ b/src2/creaImageIOAbstractImageReader.h @@ -1,5 +1,5 @@ -#ifndef __creaImageIOSpecificImageReader_h_INCLUDED__ -#define __creaImageIOSpecificImageReader_h_INCLUDED__ +#ifndef __creaImageIOAbstractImageReader_h_INCLUDED__ +#define __creaImageIOAbstractImageReader_h_INCLUDED__ #include @@ -17,15 +17,14 @@ namespace creaImageIO */ //===================================================================== - /// Abstract specific image reader - class SpecificImageReader + /// Abstract image reader + class AbstractImageReader { public: - SpecificImageReader() {} - virtual ~SpecificImageReader() {} + AbstractImageReader() {} + virtual ~AbstractImageReader() {} const std::string& GetName() const { return mName; } - virtual void PushBackExtensions(std::vector&) {} virtual bool CanRead(const std::string& filename) { return false; } virtual vtkImageData* ReadImage(const std::string& filename) { return 0; } @@ -45,4 +44,4 @@ namespace creaImageIO -#endif // #ifndef __creaImageIOSpecificImageReader_h_INCLUDED__ +#endif // #ifndef __creaImageIOAbstractImageReader_h_INCLUDED__ diff --git a/src2/creaImageIODicomImageReader.h b/src2/creaImageIODicomImageReader.h index 9fbfa88..d9e0595 100644 --- a/src2/creaImageIODicomImageReader.h +++ b/src2/creaImageIODicomImageReader.h @@ -2,7 +2,7 @@ #define __creaImageIODicomImageReader_h_INCLUDED__ -#include +#include // forward decl class vtkGdcmReader; @@ -16,8 +16,8 @@ namespace creaImageIO */ //===================================================================== - /// Specific image reader for DICOM images - class DicomImageReader : virtual public SpecificImageReader + /// Concrete image reader for DICOM images + class DicomImageReader : virtual public AbstractImageReader { public: DicomImageReader(); diff --git a/src2/creaImageIOImageReader.cpp b/src2/creaImageIOImageReader.cpp index a7937cc..96dec59 100644 --- a/src2/creaImageIOImageReader.cpp +++ b/src2/creaImageIOImageReader.cpp @@ -22,40 +22,6 @@ 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] = ""; - } - } - } - */ - //===================================================================== - - //===================================================================== @@ -114,7 +80,7 @@ namespace creaImageIO ImageReader::~ImageReader() { // std::cout << "#### ImageReader::~ImageReader()"<::iterator i; + std::vector::iterator i; for (i=mReader.begin(); i!=mReader.end(); i++) { // std::cout << "#### ImageReader::UnRegister(" @@ -131,25 +97,25 @@ namespace creaImageIO //===================================================================== //===================================================================== - void ImageReader::Register(SpecificImageReader* r) + void ImageReader::Register(AbstractImageReader* r) { // std::cout << "#### ImageReader::Register("<GetName()<<")"<PushBackExtensions(mKnownExtensions); + // r->PushBackExtensions(mKnownExtensions); } //===================================================================== //===================================================================== // Returns true iff the file is readable - bool ImageReader::CanRead( const std::string& filename, - const std::string& exclude ) + bool ImageReader::CanRead( const std::string& filename ) + // const std::string& exclude ) { // std::cout << "## ImageReader::CanRead("<::iterator i; + std::vector::iterator i; for (i=mReader.begin(); i!=mReader.end(); i++) { - if ((*i)->GetName()==exclude) continue; + // if ((*i)->GetName()==exclude) continue; ok = (*i)->CanRead(filename); if (ok) { @@ -164,13 +130,13 @@ namespace creaImageIO //===================================================================== // Reads the file (CanRead must be called before : no test here) - vtkImageData* ImageReader::ReadImage( const std::string& filename, - const std::string& exclude ) + vtkImageData* ImageReader::ReadImage( const std::string& filename) + // const std::string& exclude ) { // std::cout << "## ImageReader::Read("<& v) + { + std::vector::iterator i; + for (i=mReader.begin(); i!=mReader.end(); i++) + { + (*i)->PushBackExtensions(v); + } + } + //===================================================================== + } // namespace creaImageIO diff --git a/src2/creaImageIOImageReader.h b/src2/creaImageIOImageReader.h index 36fafd4..af7dee6 100644 --- a/src2/creaImageIOImageReader.h +++ b/src2/creaImageIOImageReader.h @@ -1,41 +1,32 @@ #ifndef __creaImageIOImageReader_h_INCLUDED__ #define __creaImageIOImageReader_h_INCLUDED__ - -#include -#include -#include -#include -#include +#include namespace creaImageIO { - /** - * \ingroup Model - */ - //===================================================================== - /// Image reader of a specific image format - class SpecificImageReader; - //===================================================================== - + /** + * \ingroup ReadWrite + */ //===================================================================== - /// Generic image reader which stores a vector of SpecificImageReader - class ImageReader + /// Generic image reader which uses all the specific concrete image reader +/// of the lib (tif, jpg, dicom, ...) +class ImageReader : virtual public AbstractImageReader { public: ImageReader(); ~ImageReader(); - + /// Pushes back all kwown extensions (without dot) in the vector given + void PushBackExtensions(std::vector&); + /// Returns true iff the file is readable - bool CanRead( const std::string& filename, - const std::string& exclude = ""); + bool CanRead( const std::string& filename); /// Reads and returns the image data. /// Returns an "Unreadable image" picture if fails - vtkImageData* ReadImage( const std::string& filename, - const std::string& exclude = ""); + vtkImageData* ReadImage( const std::string& filename); /// Reads the attributes of the image. /// Requested attributes names are provided as keys @@ -45,20 +36,19 @@ namespace creaImageIO void ReadAttributes(const std::string& filename, tree::AttributeMapType& attr); - /// Returns the known extensions - const std::vector& GetKnownExtensions() - { return mKnownExtensions; } + /// Exclude specific readers + /// TO DO... + protected: - void Register(SpecificImageReader*); + void Register(AbstractImageReader*); - std::vector mReader; - std::vector mKnownExtensions; + std::vector mReader; vtkImageData* mUnreadableImage; std::string mLastFilename; - SpecificImageReader* mLastReader; + AbstractImageReader* mLastReader; private: diff --git a/src2/creaImageIOTreeHandlerImageAdder.cpp b/src2/creaImageIOTreeHandlerImageAdder.cpp index 3f9d4aa..057f16e 100644 --- a/src2/creaImageIOTreeHandlerImageAdder.cpp +++ b/src2/creaImageIOTreeHandlerImageAdder.cpp @@ -29,7 +29,7 @@ namespace creaImageIO //===================================================================== bool TreeHandlerImageAdder::IsHandledFile( const std::string& filename) { - return (mReader.CanRead(filename,"")); + return (mReader.CanRead(filename)); } //===================================================================== diff --git a/src2/creaImageIOVtkImageReader.h b/src2/creaImageIOVtkImageReader.h index 8d28c76..836ba7f 100644 --- a/src2/creaImageIOVtkImageReader.h +++ b/src2/creaImageIOVtkImageReader.h @@ -2,7 +2,7 @@ #define __creaImageIOVtkImageReader_h_INCLUDED__ -#include +#include // forward decl class vtkImageReader2; @@ -16,8 +16,8 @@ namespace creaImageIO */ //===================================================================== - /// Specific image reader based on a vtkImageReader2 - class VtkImageReader : virtual public SpecificImageReader + /// Concrete image reader based on a vtkImageReader2 + class VtkImageReader : virtual public AbstractImageReader { public: VtkImageReader(vtkImageReader2* reader,