]> Creatis software - creaImageIO.git/blob - src2/creaImageIOImageReader.h
Starting version 2
[creaImageIO.git] / src2 / creaImageIOImageReader.h
1 #ifndef __creaImageIOImageReader_h_INCLUDED__
2 #define __creaImageIOImageReader_h_INCLUDED__
3
4
5 #include <creaImageIOTreeAttributeDescriptor.h>
6
7 #include <vtkImageData.h>
8 #include <string>
9 #include <vector>
10 #include <map>
11
12 namespace creaImageIO
13 {
14
15
16   //=====================================================================
17   /// Image reader of a specific image format
18   class SpecificImageReader;
19   //=====================================================================
20
21   //=====================================================================
22   /// Generic image reader which stores a vector of SpecificImageReader
23   class ImageReader
24   {
25   public:
26     ImageReader();
27     ~ImageReader();
28
29     /// Returns the known extensions
30     const std::vector<std::string>& GetKnownExtensions()  
31     { return mKnownExtensions; }
32     /// Returns true iff the file is readable
33     bool CanRead( const std::string& filename, 
34                   const std::string& exclude = "");
35     /// Reads and returns the image data. 
36     /// Returns an "Unreadable image" picture if fails
37     vtkImageData* ReadImage( const std::string& filename,
38                              const std::string& exclude = "");
39     
40     /// Reads the attributes of the image.
41     /// Requested attributes names are provided as keys 
42     /// in a string to string map
43     /// On return, the values of the map are the values 
44     /// of the attributes (empty string if not available).
45     void ReadAttributes(const std::string& filename, 
46                         std::map<std::string,std::string>& attr);
47
48   protected:
49     
50     void Register(SpecificImageReader*);
51
52     std::vector<SpecificImageReader*> mReader;
53     std::vector<std::string> mKnownExtensions;
54     vtkImageData* mUnreadableImage;
55
56     std::string mLastFilename;
57     SpecificImageReader* mLastReader;
58     
59   private:
60
61   }; // class ImageReader
62   //=====================================================================
63
64
65
66 } // namespace creaImageIO
67
68
69
70 #endif // #ifndef __creaImageIOImageReader_h_INCLUDED__