]> Creatis software - clitk.git/blob - common/clitkImageToImageGenericFilter.cxx
835ab03e5ccdb6e8f0bb67b5c395ff409aab6119
[clitk.git] / common / clitkImageToImageGenericFilter.cxx
1 #include "clitkImageToImageGenericFilter.h"
2 #include "clitkImageCommon.h"
3
4 //--------------------------------------------------------------------
5 clitk::ImageToImageGenericFilterBase::ImageToImageGenericFilterBase(std::string n)
6   :mIOVerbose(false) {
7   mFilterName = n;
8   mFailOnImageTypeError = true;
9 }
10 //--------------------------------------------------------------------
11
12
13 //--------------------------------------------------------------------
14 void clitk::ImageToImageGenericFilterBase::SetInputFilenames(const std::vector<std::string> & filenames) {
15     mInputFilenames=filenames;
16 }
17 //--------------------------------------------------------------------
18
19
20 //--------------------------------------------------------------------
21 void clitk::ImageToImageGenericFilterBase::SetInputFilename(const std::string & filename) {
22   std::vector<std::string> f;
23   f.push_back(filename);
24   SetInputFilenames(f);
25 }
26 //--------------------------------------------------------------------
27
28
29 //--------------------------------------------------------------------
30 void clitk::ImageToImageGenericFilterBase::AddInputFilename(const std::string & filename) {
31   mInputFilenames.push_back(filename);
32 }
33 //--------------------------------------------------------------------
34
35
36 //--------------------------------------------------------------------
37 void clitk::ImageToImageGenericFilterBase::SetOutputFilename(const std::string & filename) {
38   mOutputFilenames.clear();
39   mOutputFilenames.push_back(filename);
40 }
41 //--------------------------------------------------------------------
42
43
44 //--------------------------------------------------------------------
45 void clitk::ImageToImageGenericFilterBase::AddOutputFilename(const std::string & filename)
46 {
47   mOutputFilenames.push_back(filename);
48 }
49 //--------------------------------------------------------------------
50
51
52 //--------------------------------------------------------------------
53 void clitk::ImageToImageGenericFilterBase::SetOutputFilenames(const std::vector<std::string> & filenames)
54 {
55     mOutputFilenames.clear();
56     std::copy(filenames.begin(),filenames.end(),mOutputFilenames.begin());
57 }
58 //--------------------------------------------------------------------
59
60
61 //--------------------------------------------------------------------
62 std::string clitk::ImageToImageGenericFilterBase::GetOutputFilename()
63 {
64     assert(mOutputFilenames.size() == 1);
65     return mOutputFilenames.front();
66 }
67 //--------------------------------------------------------------------
68
69
70 //--------------------------------------------------------------------
71 void clitk::ImageToImageGenericFilterBase::GetInputImageDimensionAndPixelType(unsigned int& dim, \
72         std::string& pixeltype,unsigned int& components)
73 {
74   if (mInputFilenames.size())
75     {
76       int comp_temp,dim_temp; //clitkCommonImage takes ints
77       ReadImageDimensionAndPixelType(mInputFilenames[0], dim_temp, pixeltype,comp_temp);
78       components=comp_temp; dim=dim_temp;
79     }
80   else if (mInputVVImages.size())
81     {
82       pixeltype=mInputVVImages[0]->GetScalarTypeAsString();
83       dim=mInputVVImages[0]->GetNumberOfDimensions();
84       components=mInputVVImages[0]->GetNumberOfScalarComponents();
85     }
86   else
87     assert(false); //No input image, shouldn't happen
88   
89   if (mIOVerbose) {
90     std::cout << "Input is " << mDim << "D " << mPixelTypeName << "." << std::endl;
91   }
92 }
93 //--------------------------------------------------------------------
94
95
96 //--------------------------------------------------------------------
97 vvImage::Pointer clitk::ImageToImageGenericFilterBase::GetOutputVVImage ()
98 {
99     assert(mOutputVVImages.size());
100     return mOutputVVImages[0];
101 }
102 //--------------------------------------------------------------------
103
104
105 //--------------------------------------------------------------------
106 std::vector<vvImage::Pointer> clitk::ImageToImageGenericFilterBase::GetOutputVVImages()
107 {
108     return mOutputVVImages;
109 }
110 //--------------------------------------------------------------------
111
112
113 //--------------------------------------------------------------------
114 void clitk::ImageToImageGenericFilterBase::SetInputVVImage (vvImage::Pointer input)
115 {
116     mInputVVImages.clear();
117     mInputVVImages.push_back(input);
118 }
119 //--------------------------------------------------------------------
120
121
122 //--------------------------------------------------------------------
123 void clitk::ImageToImageGenericFilterBase::AddInputVVImage (vvImage::Pointer input)
124 {
125     mInputVVImages.push_back(input);
126 }
127 //--------------------------------------------------------------------
128
129
130 //--------------------------------------------------------------------
131 void clitk::ImageToImageGenericFilterBase::SetInputVVImages (std::vector<vvImage::Pointer> input)
132 {
133     mInputVVImages=input;
134 }
135 //--------------------------------------------------------------------
136
137
138 //--------------------------------------------------------------------
139 void clitk::ImageToImageGenericFilterBase::PrintAvailableImageTypes() {
140   std::cout << GetAvailableImageTypes();
141 }
142 //--------------------------------------------------------------------
143
144
145
146 //--------------------------------------------------------------------
147 void clitk::ImageToImageGenericFilterBase::ImageTypeError() {
148   std::cerr << "**Error** The filter <" << mFilterName << "> is not available for " 
149             << mDim << "D images with pixel=" 
150             << mPixelTypeName << " and "
151             << mNbOfComponents << " component." << std::endl;
152   std::cerr << GetAvailableImageTypes();
153   exit(0);
154 }
155 //--------------------------------------------------------------------
156
157
158 //--------------------------------------------------------------------
159 void clitk::ImageToImageGenericFilterBase::SetImageTypeError() {
160   std::cerr << "TODO ! " << std::endl;
161   exit(0);
162 }
163 //--------------------------------------------------------------------