1 /*=========================================================================
4 Module: $RCSfile: clitkImageToImageGenericFilterBase.h,v $
6 Date: $Date: 2010/03/24 10:48:05 $
7 Version: $Revision: 1.3 $
8 Author : Joel Schaerer <joel.schaerer@creatis.insa-lyon.fr>
9 David Sarrut <david.sarrut@creatis.insa-lyon.fr>
12 Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
13 CREATIS-LRMN http://www.creatis.insa-lyon.fr
15 This program is free software: you can redistribute it and/or modify
16 it under the terms of the GNU General Public License as published by
17 the Free Software Foundation, version 3 of the License.
19 This program is distributed in the hope that it will be useful,
20 but WITHOUT ANY WARRANTY; without even the implied warranty of
21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 GNU General Public License for more details.
24 You should have received a copy of the GNU General Public License
25 along with this program. If not, see <http://www.gnu.org/licenses/>.
27 =========================================================================*/
29 #ifndef CLITKIMAGETOIMAGEGENERICFILTERBASE_H
30 #define CLITKIMAGETOIMAGEGENERICFILTERBASE_H
33 #include "clitkCommon.h"
34 #include "clitkImageCommon.h"
35 #include "clitkCommonGenericFilter.h"
42 #include "vvFromITK.h"
47 //--------------------------------------------------------------------
48 class ImageToImageGenericFilterBase: public itk::Object {
51 // constructor - destructor
52 ImageToImageGenericFilterBase(std::string filterName);
53 virtual ~ImageToImageGenericFilterBase();
56 typedef ImageToImageGenericFilterBase Self;
57 typedef Object Superclass;
58 typedef itk::SmartPointer<Self> Pointer;
59 typedef itk::SmartPointer<const Self> ConstPointer;
61 // Filters information
62 const std::string & GetFilterName();
63 void SetFilterName(std::string & n);
66 /// Returns the dimension and pixel type of the *first* input
67 void GetInputImageDimensionAndPixelType(unsigned int& dim, std::string& pixeltype,
68 unsigned int & components);
71 void SetInputFilename(const std::string & filename);
72 void AddInputFilename(const std::string & filename);
73 void SetInputFilenames(const std::vector<std::string> & filenames);
74 void EnableReadOnDisk(bool b);
75 void SetOutputFilename(const std::string & filename);
76 void AddOutputFilename(const std::string & filename);
77 void SetOutputFilenames(const std::vector<std::string> & filenames);
78 std::string GetOutputFilename();
79 void SetIOVerbose(bool b);
82 void SetInputVVImage (vvImage::Pointer input);
83 void SetInputVVImages (std::vector<vvImage::Pointer> input);
84 void AddInputVVImage (vvImage::Pointer input);
85 vvImage::Pointer GetOutputVVImage ();
86 std::vector<vvImage::Pointer> GetOutputVVImages ();
88 // Information on available image types
89 void PrintAvailableImageTypes();
90 virtual std::string GetAvailableImageTypes() = 0;
92 virtual bool CheckImageType(unsigned int dim,unsigned int ncomp, std::string pixeltype) = 0;
93 virtual bool CheckImageType() = 0;
95 // Main function to call for using the filter.
96 virtual bool Update() = 0;
100 /// Call this function to dispatch an output towards the correct sink
101 template<class ImageType>
102 void SetNextOutput(typename ImageType::Pointer output);
104 /// Call this function to get the nth itk input image, regardless of input source
105 template<class ImageType>
106 typename ImageType::Pointer GetInput(unsigned int n);
108 std::vector<std::string> mInputFilenames;
109 std::list<std::string> mOutputFilenames;
113 std::string mPixelTypeName;
114 unsigned int mNbOfComponents;
115 std::string mFilterName;
117 std::vector<vvImage::Pointer> mInputVVImages;
118 std::vector<vvImage::Pointer> mOutputVVImages;
120 void ImageTypeError();
121 void SetImageTypeError();
122 bool mFailOnImageTypeError;
124 }; // end class clitk::ImageToImageGenericFilter
126 #define ADD_VEC_IMAGE_TYPE(DIM, COMP, PT) this->mImageTypesManager.template AddNewDimensionAndPixelType<DIM,COMP, PT>();
127 #define ADD_IMAGE_TYPE(DIM, PT) this->mImageTypesManager.template AddNewDimensionAndPixelType<DIM, PT>();
129 //#include "clitkImageToImageGenericFilterBase.txx"
133 #endif /* end #define CLITKIMAGETOIMAGEGENERICFILTERBASE_H */