#ifndef __creaImageIOImageReader_h_INCLUDED__
#define __creaImageIOImageReader_h_INCLUDED__
-
-#include <vtkImageData.h>
-#include <string>
-#include <vector>
-#include <map>
-#include <creaImageIOTreeAttributeMapType.h>
+#include <creaImageIOSystem.h>
+#include <creaImageIOAbstractImageReader.h>
namespace creaImageIO
{
-
- /**
- * \ingroup Model
- */
- //=====================================================================
- /// Image reader of a specific image format
- class SpecificImageReader;
- //=====================================================================
-
- //=====================================================================
- /// Generic image reader which stores a vector of SpecificImageReader
- class ImageReader
+
+ /**
+ * \ingroup IO
+ * \brief Generic image reader which uses all the specific concrete image reader of the lib (tif, jpg, dicom, ...)
+ */
+ class CREAIMAGEIO_EXPORT ImageReader : virtual public AbstractImageReader
{
public:
ImageReader();
~ImageReader();
-
+ /// Pushes back all kwown extensions (without dot) in the vector given
+ void PushBackExtensions(std::vector<std::string>&);
+
/// 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
void ReadAttributes(const std::string& filename,
tree::AttributeMapType& attr);
- /// Returns the known extensions
- const std::vector<std::string>& GetKnownExtensions()
- { return mKnownExtensions; }
+ /// Exclude specific readers
+ /// TO DO...
+
protected:
- void Register(SpecificImageReader*);
+ /// Register a reader
+ void Register( boost::shared_ptr<AbstractImageReader> );
- std::vector<SpecificImageReader*> mReader;
- std::vector<std::string> mKnownExtensions;
+ std::vector<boost::shared_ptr<AbstractImageReader> > mReader;
vtkImageData* mUnreadableImage;
std::string mLastFilename;
- SpecificImageReader* mLastReader;
+ boost::shared_ptr<AbstractImageReader> mLastReader;
private: