]> Creatis software - creaImageIO.git/blob - src/creaImageIOAbstractImageReader.h
#3185 creaImageIO Feature New Normal - Clean code
[creaImageIO.git] / src / creaImageIOAbstractImageReader.h
1 /*
2 # ---------------------------------------------------------------------
3 #
4 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image 
5 #                        pour la Santé)
6 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
7 # Previous Authors : Laurent Guigues, Jean-Pierre Roux
8 # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
9 #
10 #  This software is governed by the CeCILL-B license under French law and 
11 #  abiding by the rules of distribution of free software. You can  use, 
12 #  modify and/ or redistribute the software under the terms of the CeCILL-B 
13 #  license as circulated by CEA, CNRS and INRIA at the following URL 
14 #  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html 
15 #  or in the file LICENSE.txt.
16 #
17 #  As a counterpart to the access to the source code and  rights to copy,
18 #  modify and redistribute granted by the license, users are provided only
19 #  with a limited warranty  and the software's author,  the holder of the
20 #  economic rights,  and the successive licensors  have only  limited
21 #  liability. 
22 #
23 #  The fact that you are presently reading this means that you have had
24 #  knowledge of the CeCILL-B license and that you accept its terms.
25 # ------------------------------------------------------------------------
26 */
27
28 #ifndef __creaImageIOAbstractImageReader_h_INCLUDED__
29 #define __creaImageIOAbstractImageReader_h_INCLUDED__
30
31
32 #include <vtkImageData.h>
33 //#include <itkImage.h>
34 #include <string>
35 #include <map>
36 #include <vector>
37 #include "creaImageIOTreeAttributeMapType.h"
38
39 namespace creaImageIO
40 {
41
42
43   /**
44    * \ingroup IO
45    */
46   
47   //=====================================================================
48   /// Abstract image reader 
49   class AbstractImageReader 
50   {
51   public:
52     AbstractImageReader() {}
53     virtual ~AbstractImageReader() {}
54
55         /// Get the reader's name
56     const std::string& GetName() const { return mName; }
57
58         /// Add file extensions read by the reader
59     virtual void PushBackExtensions(std::vector<std::string>&) {}
60
61         /// Test if file is read by this reader
62     virtual bool CanRead(const std::string& filename) { return false; }
63
64         /// return for a file a 2D VTkImage
65     virtual vtkImageData* ReadImage(const std::string& filename) { return 0; }  
66
67
68         /// return for a file an ItkImage
69         //virtual itkImage* ReadImage(const std::string& filename) { return 0; }        
70         /// Read the attributes for a file
71     virtual void ReadAttributes(const std::string& filename, 
72                                 tree::AttributeMapType& attr) {}
73
74         /// Another function to read attributes for a file
75         virtual void getAttributes(const std::string filename, std::map <std::string , std::string> &infos, std::vector<std::string> i_attr){}
76   protected:
77
78     /// Set the reader's name
79     void SetName(const std::string& s) { mName = s; }
80   private:
81     std::string mName;
82   };
83   //=====================================================================
84
85
86
87 } // namespace creaImageIO
88
89
90
91 #endif // #ifndef __creaImageIOAbstractImageReader_h_INCLUDED__