--- /dev/null
+#ifndef __creaImageIOAbstractImageReader_h_INCLUDED__
+#define __creaImageIOAbstractImageReader_h_INCLUDED__
+
+
+#include <vtkImageData.h>
+#include <string>
+#include <map>
+#include <vector>
+#include "creaImageIOTreeAttributeMapType.h"
+
+namespace creaImageIO
+{
+
+
+ /**
+ * \ingroup IO
+ */
+
+ //=====================================================================
+ /// Abstract image reader
+ class AbstractImageReader
+ {
+ public:
+ AbstractImageReader() {}
+ virtual ~AbstractImageReader() {}
+
+ /// Get the reader's name
+ const std::string& GetName() const { return mName; }
+
+ /// Add file extensions read by the reader
+ virtual void PushBackExtensions(std::vector<std::string>&) {}
+
+ /// Test if file is read by this reader
+ virtual bool CanRead(const std::string& filename) { return false; }
+
+ /// return for a file a 2D VTkImage
+ virtual vtkImageData* ReadImage(const std::string& filename) { return 0; }
+
+ /// Read the attributes for a file
+ virtual void ReadAttributes(const std::string& filename,
+ tree::AttributeMapType& attr) {}
+
+ protected:
+
+ /// Set the reader's name
+ void SetName(const std::string& s) { mName = s; }
+ private:
+ std::string mName;
+ };
+ //=====================================================================
+
+
+
+} // namespace creaImageIO
+
+
+
+#endif // #ifndef __creaImageIOAbstractImageReader_h_INCLUDED__