1 #include <cpPlugins/Interface/Image.h>
4 #include <vtkImageData.h>
6 #define ITK_MANUAL_INSTANTIATION
8 #include <itkImageToVTKImageFilter.h>
10 #include <itkCovariantVector.h>
11 #include <itkDiffusionTensor3D.h>
13 #include <itkRGBPixel.h>
14 #include <itkRGBAPixel.h>
15 #include <itkSymmetricSecondRankTensor.h>
16 #include <itkVector.h>
18 // -------------------------------------------------------------------------
19 void cpPlugins::Interface::Image::
20 SetITKDataObject( itk::DataObject* o )
23 if( dynamic_cast< itk::ImageBase< 1 >* >( o ) != NULL )
25 cpPlugins_Image_Array_Demangle(
26 itk::Vector, float, 1, 1, o, _Type, r
28 else cpPlugins_Image_Array_Demangle(
29 itk::Vector, double, 1, 1, o, _Type, r
31 else cpPlugins_Image_Array_Demangle(
32 itk::Point, float, 1, 1, o, _Type, r
34 else cpPlugins_Image_Array_Demangle(
35 itk::Point, double, 1, 1, o, _Type, r
37 else cpPlugins_Image_Array_Demangle(
38 itk::CovariantVector, float, 1, 1, o, _Type, r
40 else cpPlugins_Image_Array_Demangle(
41 itk::CovariantVector, double, 1, 1, o, _Type, r
43 else cpPlugins_Image_Array_Demangle(
44 itk::SymmetricSecondRankTensor, float, 1, 1, o, _Type, r
46 else cpPlugins_Image_Array_Demangle(
47 itk::SymmetricSecondRankTensor, double, 1, 1, o, _Type, r
49 else r = this->_Dim< 1 >( o );
51 else if( dynamic_cast< itk::ImageBase< 2 >* >( o ) != NULL )
53 cpPlugins_Image_Demangle(
54 itk::RGBPixel< char >, 2, o, _Type, r
56 else cpPlugins_Image_Demangle(
57 itk::RGBPixel< short >, 2, o, _Type, r
59 else cpPlugins_Image_Demangle(
60 itk::RGBPixel< unsigned char >, 2, o, _Type, r
62 else cpPlugins_Image_Demangle(
63 itk::RGBPixel< unsigned short >, 2, o, _Type, r
65 else cpPlugins_Image_Demangle(
66 itk::RGBAPixel< char >, 2, o, _Type, r
68 else cpPlugins_Image_Demangle(
69 itk::RGBAPixel< short >, 2, o, _Type, r
71 else cpPlugins_Image_Demangle(
72 itk::RGBAPixel< unsigned char >, 2, o, _Type, r
74 else cpPlugins_Image_Demangle(
75 itk::RGBAPixel< unsigned short >, 2, o, _Type, r
77 else cpPlugins_Image_Array_Demangle(
78 itk::Vector, float, 2, 2, o, _Type, r
80 else cpPlugins_Image_Array_Demangle(
81 itk::Vector, double, 2, 2, o, _Type, r
83 else cpPlugins_Image_Array_Demangle(
84 itk::Point, float, 2, 2, o, _Type, r
86 else cpPlugins_Image_Array_Demangle(
87 itk::Point, double, 2, 2, o, _Type, r
89 else cpPlugins_Image_Array_Demangle(
90 itk::CovariantVector, float, 2, 2, o, _Type, r
92 else cpPlugins_Image_Array_Demangle(
93 itk::CovariantVector, double, 2, 2, o, _Type, r
95 else cpPlugins_Image_Array_Demangle(
96 itk::SymmetricSecondRankTensor, float, 2, 2, o, _Type, r
98 else cpPlugins_Image_Array_Demangle(
99 itk::SymmetricSecondRankTensor, double, 2, 2, o, _Type, r
101 else r = this->_Dim< 2 >( o );
103 else if( dynamic_cast< itk::ImageBase< 3 >* >( o ) != NULL )
105 cpPlugins_Image_Demangle(
106 itk::RGBPixel< char >, 3, o, _Type, r
108 else cpPlugins_Image_Demangle(
109 itk::RGBPixel< short >, 3, o, _Type, r
111 else cpPlugins_Image_Demangle(
112 itk::RGBPixel< unsigned char >, 3, o, _Type, r
114 else cpPlugins_Image_Demangle(
115 itk::RGBPixel< unsigned short >, 3, o, _Type, r
117 else cpPlugins_Image_Demangle(
118 itk::RGBAPixel< char >, 3, o, _Type, r
120 else cpPlugins_Image_Demangle(
121 itk::RGBAPixel< short >, 3, o, _Type, r
123 else cpPlugins_Image_Demangle(
124 itk::RGBAPixel< unsigned char >, 3, o, _Type, r
126 else cpPlugins_Image_Demangle(
127 itk::RGBAPixel< unsigned short >, 3, o, _Type, r
129 else cpPlugins_Image_Array_Demangle(
130 itk::Vector, float, 3, 3, o, _Type, r
132 else cpPlugins_Image_Array_Demangle(
133 itk::Vector, double, 3, 3, o, _Type, r
135 else cpPlugins_Image_Array_Demangle(
136 itk::Point, float, 3, 3, o, _Type, r
138 else cpPlugins_Image_Array_Demangle(
139 itk::Point, double, 3, 3, o, _Type, r
141 else cpPlugins_Image_Array_Demangle(
142 itk::CovariantVector, float, 3, 3, o, _Type, r
144 else cpPlugins_Image_Array_Demangle(
145 itk::CovariantVector, double, 3, 3, o, _Type, r
147 else cpPlugins_Image_Array_Demangle(
148 itk::SymmetricSecondRankTensor, float, 3, 3, o, _Type, r
150 else cpPlugins_Image_Array_Demangle(
151 itk::SymmetricSecondRankTensor, double, 3, 3, o, _Type, r
153 else cpPlugins_Image_Demangle(
154 itk::DiffusionTensor3D< float >, 3, o, _Type, r
156 else cpPlugins_Image_Demangle(
157 itk::DiffusionTensor3D< double >, 3, o, _Type, r
159 else r = this->_Dim< 3 >( o );
161 else if( dynamic_cast< itk::ImageBase< 4 >* >( o ) != NULL )
163 this->m_ITKObject = o;
164 this->m_VTKObject = NULL;
165 this->m_ITKvVTKConnection = NULL;
170 // -------------------------------------------------------------------------
171 void cpPlugins::Interface::Image::
172 SetVTKDataObject( vtkDataObject* o )
174 // this->m_VTKObject = o;
175 std::cerr << "Image: TODO this!!!!" << std::endl;
179 // -------------------------------------------------------------------------
180 vtkImageData* cpPlugins::Interface::Image::
183 return( dynamic_cast< vtkImageData* >( this->GetVTKDataObject( ) ) );
186 // -------------------------------------------------------------------------
187 const vtkImageData* cpPlugins::Interface::Image::
188 GetVTKImageData( ) const
191 dynamic_cast< const vtkImageData* >( this->GetVTKDataObject( ) )
195 // -------------------------------------------------------------------------
196 cpPlugins::Interface::Image::
200 this->m_ClassName = "cpPlugins::Interface::Image";
201 this->m_ClassCategory = "BasicObject";
204 // -------------------------------------------------------------------------
205 cpPlugins::Interface::Image::
210 // -------------------------------------------------------------------------
211 template< unsigned int D >
212 bool cpPlugins::Interface::Image::
213 _Dim( itk::DataObject* o )
216 cpPlugins_Image_Demangle(
219 else cpPlugins_Image_Demangle(
220 short, D, o, _Type, r
222 else cpPlugins_Image_Demangle(
225 else cpPlugins_Image_Demangle(
228 else cpPlugins_Image_Demangle(
229 unsigned char, D, o, _Type, r
231 else cpPlugins_Image_Demangle(
232 unsigned short, D, o, _Type, r
234 else cpPlugins_Image_Demangle(
235 unsigned int, D, o, _Type, r
237 else cpPlugins_Image_Demangle(
238 unsigned long, D, o, _Type, r
240 else cpPlugins_Image_Demangle(
241 float, D, o, _Type, r
243 else cpPlugins_Image_Demangle(
244 double, D, o, _Type, r
248 this->m_ITKObject = o;
249 this->m_VTKObject = NULL;
250 this->m_ITKvVTKConnection = NULL;
256 // -------------------------------------------------------------------------
258 bool cpPlugins::Interface::Image::
259 _Type( itk::DataObject* o )
261 typedef itk::ImageToVTKImageFilter< I > _F;
263 typename _F::Pointer f = _F::New( );
264 f->SetInput( dynamic_cast< I* >( o ) );
267 this->m_ITKObject = o;
268 this->m_VTKObject = f->GetOutput( );
269 this->m_ITKvVTKConnection = f;