]> Creatis software - clitk.git/blob - vv/vvImageWriter.h
6ead3d8398fbb99174b04d61a8f6618a13c75a75
[clitk.git] / vv / vvImageWriter.h
1 /*=========================================================================
2
3  Program:   vv
4  Module:    $RCSfile: vvImageWriter.h,v $
5  Language:  C++
6  Date:      $Date: 2010/01/06 13:31:58 $
7  Version:   $Revision: 1.1 $
8  Author :   Pierre Seroul (pierre.seroul@gmail.com)
9
10 Copyright (C) 2008
11 Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
12 CREATIS-LRMN http://www.creatis.insa-lyon.fr
13
14 This program is free software: you can redistribute it and/or modify
15 it under the terms of the GNU General Public License as published by
16 the Free Software Foundation, version 3 of the License.
17
18 This program is distributed in the hope that it will be useful,
19 but WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 GNU General Public License for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with this program.  If not, see <http://www.gnu.org/licenses/>.
25
26 =========================================================================*/
27 #ifndef vvImageWriter_H
28 #define vvImageWriter_H
29
30 #include <string>
31
32 // ITK includes
33 #include "itkImage.h"
34 #include "itkCommand.h"
35 #include "vvImage.h"
36
37 class vvImageWriter {
38
39 public:
40     // constructor
41     vvImageWriter();
42     ~vvImageWriter();
43
44     void SetOutputFileName(std::string filename);
45     void SetObserver(itk::Command::Pointer o) {
46         mUseAnObserver = true;
47         mObserver = o;
48     }
49     void DisableObserver() {
50         mUseAnObserver = false;
51     }
52
53     void SetInput(vvImage::Pointer image) {
54         mImage = image;
55     }
56
57     std::string GetLastError() {
58         return mLastError;
59     }
60
61     //====================================================================
62     // Main function
63     void Update() {
64         Update(mImage->GetNumberOfDimensions(),mImage->GetScalarTypeAsString());
65     }
66     void Update(int dim, std::string OutputPixelType);
67
68 protected:
69     //====================================================================
70     std::string mOutputFilename;
71     itk::Command::Pointer mObserver;
72
73     std::string mLastError;
74     bool mUseAnObserver;
75
76     //====================================================================
77     template<unsigned int VImageDimension>
78     void UpdateWithDim(std::string OutputPixelType);
79
80     //====================================================================
81     template<class OutputPixelType, unsigned int VImageDimension>
82     void UpdateWithDimAndOutputPixelType();
83
84 private:
85     vvImage::Pointer mImage;
86
87 }; // end class vvImageWriter
88
89 #endif /* end #define vvImageWriter_H */