1 #ifndef __CPPLUGINS__IMAGE__HXX__
2 #define __CPPLUGINS__IMAGE__HXX__
4 #include <cpPlugins_Instances/ImageITK2VTK.h>
6 // -------------------------------------------------------------------------
7 template< unsigned int D >
8 bool cpPlugins::Image::
9 _ITK_2_VTK_0( itk::LightObject* o )
12 if( dynamic_cast< itk::ImageBase< D >* >( o ) != NULL )
14 s |= this->_ITK_2_VTK_1< char, D >( o );
15 s |= this->_ITK_2_VTK_1< short, D >( o );
16 s |= this->_ITK_2_VTK_1< int, D >( o );
17 s |= this->_ITK_2_VTK_1< long, D >( o );
18 s |= this->_ITK_2_VTK_1< float, D >( o );
19 s |= this->_ITK_2_VTK_1< double, D >( o );
20 s |= this->_ITK_2_VTK_1< unsigned char, D >( o );
21 s |= this->_ITK_2_VTK_1< unsigned short, D >( o );
22 s |= this->_ITK_2_VTK_1< unsigned int, D >( o );
23 s |= this->_ITK_2_VTK_1< unsigned long, D >( o );
24 s |= this->_ITK_2_VTK_1< itk::RGBPixel< char >, D >( o );
25 s |= this->_ITK_2_VTK_1< itk::RGBPixel< short >, D >( o );
26 s |= this->_ITK_2_VTK_1< itk::RGBPixel< int >, D >( o );
27 s |= this->_ITK_2_VTK_1< itk::RGBPixel< long >, D >( o );
28 s |= this->_ITK_2_VTK_1< itk::RGBPixel< float >, D >( o );
29 s |= this->_ITK_2_VTK_1< itk::RGBPixel< double >, D >( o );
30 s |= this->_ITK_2_VTK_1< itk::RGBPixel< unsigned char >, D >( o );
31 s |= this->_ITK_2_VTK_1< itk::RGBPixel< unsigned short >, D >( o );
32 s |= this->_ITK_2_VTK_1< itk::RGBPixel< unsigned int >, D >( o );
33 s |= this->_ITK_2_VTK_1< itk::RGBPixel< unsigned long >, D >( o );
34 s |= this->_ITK_2_VTK_1< itk::RGBAPixel< char >, D >( o );
35 s |= this->_ITK_2_VTK_1< itk::RGBAPixel< short >, D >( o );
36 s |= this->_ITK_2_VTK_1< itk::RGBAPixel< int >, D >( o );
37 s |= this->_ITK_2_VTK_1< itk::RGBAPixel< long >, D >( o );
38 s |= this->_ITK_2_VTK_1< itk::RGBAPixel< float >, D >( o );
39 s |= this->_ITK_2_VTK_1< itk::RGBAPixel< double >, D >( o );
40 s |= this->_ITK_2_VTK_1< itk::RGBAPixel< unsigned char >, D >( o );
41 s |= this->_ITK_2_VTK_1< itk::RGBAPixel< unsigned short >, D >( o );
42 s |= this->_ITK_2_VTK_1< itk::RGBAPixel< unsigned int >, D >( o );
43 s |= this->_ITK_2_VTK_1< itk::RGBAPixel< unsigned long >, D >( o );
45 s |= this->_ITK_2_VTK_1< itk::DiffusionTensor3D< float >, D >( o );
46 s |= this->_ITK_2_VTK_1< itk::DiffusionTensor3D< double >, D >( o );
47 s |= this->_ITK_2_VTK_1< itk::Vector< float, D >, D >( o );
48 s |= this->_ITK_2_VTK_1< itk::Vector< double, D >, D >( o );
49 s |= this->_ITK_2_VTK_1< itk::CovariantVector< float, D >, D >( o );
50 s |= this->_ITK_2_VTK_1< itk::CovariantVector< double, D >, D >( o );
51 s |= this->_ITK_2_VTK_1< itk::Point< float, D >, D >( o );
52 s |= this->_ITK_2_VTK_1< itk::Point< double, D >, D >( o );
53 s |= this->_ITK_2_VTK_1< itk::SymmetricSecondRankTensor< float, D >, D >( o );
54 s |= this->_ITK_2_VTK_1< itk::SymmetricSecondRankTensor< double, D >, D >( o );
61 // -------------------------------------------------------------------------
62 template< class P, unsigned int D >
63 bool cpPlugins::Image::
64 _ITK_2_VTK_1( itk::LightObject* o )
66 if( dynamic_cast< itk::Image< P, D >* >( o ) != NULL )
67 return( this->_ITK_2_VTK_2< itk::Image< P, D > >( o ) );
72 // -------------------------------------------------------------------------
74 bool cpPlugins::Image::
75 _ITK_2_VTK_2( itk::LightObject* o )
77 typedef itk::ImageToVTKImageFilter< T > _I2V;
79 T* image = dynamic_cast< T* >( o );
82 _I2V* f = dynamic_cast< _I2V* >( this->m_ITKvVTK.GetPointer( ) );
85 typename _I2V::Pointer nf = _I2V::New( );
94 this->m_ITKObject = o;
95 this->m_VTKObject = f->GetOutput( );
103 * =========================================================================
105 * =========================================================================
107 #define cpPlugins_Image_Demangle_Dim( F, I, D ) \
108 if( dynamic_cast< itk::ImageBase< D >* >( I ) != NULL ) \
109 this->F( dynamic_cast< itk::ImageBase< D >* >( I ) )
111 #define cpPlugins_Image_Demangle_Pixel_Dim( F, I, P, D ) \
112 if( dynamic_cast< itk::Image< P, D >* >( I ) != NULL ) \
113 this->F( dynamic_cast< itk::Image< P, D >* >( I ) )
115 #define cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, P, D ) \
116 if( dynamic_cast< itk::Image< itk::C##Pixel< P >, D >* >( I ) != NULL ) \
117 this->F( dynamic_cast< itk::Image< itk::C##Pixel< P >, D >* >( I ) )
119 #define cpPlugins_Image_Demangle_VectorPixel_Dim( F, I, V, P, D ) \
120 if( dynamic_cast< itk::Image< itk::V< P, D >, D >* >( I ) != NULL ) \
121 this->F( dynamic_cast< itk::Image< itk::V< P, D >, D >* >( I ) )
123 #define cpPlugins_Image_Demangle_Pixel_AllInts( F, I, D ) \
124 cpPlugins_Image_Demangle_Pixel_Dim ( F, I, char, D ); \
125 else cpPlugins_Image_Demangle_Pixel_Dim( F, I, short, D ); \
126 else cpPlugins_Image_Demangle_Pixel_Dim( F, I, int, D ); \
127 else cpPlugins_Image_Demangle_Pixel_Dim( F, I, long, D )
129 #define cpPlugins_Image_Demangle_Pixel_AllUInts( F, I, D ) \
130 cpPlugins_Image_Demangle_Pixel_Dim ( F, I, unsigned char, D ); \
131 else cpPlugins_Image_Demangle_Pixel_Dim( F, I, unsigned short, D ); \
132 else cpPlugins_Image_Demangle_Pixel_Dim( F, I, unsigned int, D ); \
133 else cpPlugins_Image_Demangle_Pixel_Dim( F, I, unsigned long, D )
135 #define cpPlugins_Image_Demangle_Pixel_AllFloats( F, I, D ) \
136 cpPlugins_Image_Demangle_Pixel_Dim ( F, I, float, D ); \
137 else cpPlugins_Image_Demangle_Pixel_Dim( F, I, double, D )
139 #define cpPlugins_Image_Demangle_Pixel_AllScalars( F, I, D ) \
140 cpPlugins_Image_Demangle_Pixel_AllInts ( F, I, D ); \
141 else cpPlugins_Image_Demangle_Pixel_AllUInts ( F, I, D ); \
142 else cpPlugins_Image_Demangle_Pixel_AllFloats( F, I, D )
144 #define cpPlugins_Image_Demangle_ColorPixel_AllInts( F, I, C, D ) \
145 cpPlugins_Image_Demangle_ColorPixel_Dim ( F, I, C, char, D ); \
146 else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, short, D ); \
147 else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, int, D ); \
148 else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, long, D )
150 #define cpPlugins_Image_Demangle_ColorPixel_AllUInts( F, I, C, D ) \
151 cpPlugins_Image_Demangle_ColorPixel_Dim ( F, I, C, unsigned char, D ); \
152 else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, unsigned short, D ); \
153 else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, unsigned int, D ); \
154 else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, unsigned long, D )
156 #define cpPlugins_Image_Demangle_ColorPixel_AllFloats( F, I, C, D ) \
157 cpPlugins_Image_Demangle_ColorPixel_Dim ( F, I, C, float, D ); \
158 else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, double, D )
160 #define cpPlugins_Image_Demangle_ColorPixel_AllScalars( F, I, C, D ) \
161 cpPlugins_Image_Demangle_ColorPixel_AllInts ( F, I, C, D ); \
162 else cpPlugins_Image_Demangle_ColorPixel_AllUInts ( F, I, C, D ); \
163 else cpPlugins_Image_Demangle_ColorPixel_AllFloats( F, I, C, D )
165 #define cpPlugins_Image_Demangle_VectorPixel_AllFloats( F, I, V, D ) \
166 cpPlugins_Image_Demangle_VectorPixel_Dim ( F, I, V, float, D ); \
167 else cpPlugins_Image_Demangle_VectorPixel_Dim( F, I, V, double, D )
170 #define cpPlugins_Image_Demangle_Pixel_AllVector( r, FUNC, INPUT, D ) \
171 r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< char >, D ); \
172 if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< short >, D ); \
173 if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< int >, D ); \
174 if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< long >, D ); \
175 if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< float >, D ); \
176 if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< double >, D ); \
177 if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< unsigned char >, D ); \
178 if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< unsigned short >, D ); \
179 if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< unsigned int >, D ); \
180 if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< unsigned long >, D ); \
181 if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< char >, D ); \
182 if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< short >, D ); \
183 if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< int >, D ); \
184 if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< long >, D ); \
185 if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< float >, D ); \
186 if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< double >, D ); \
187 if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< unsigned char >, D ); \
188 if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< unsigned short >, D ); \
189 if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< unsigned int >, D ); \
190 if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< unsigned long >, D )
192 #define cpPlugins_Image_Demangle_VectorPixel_AllFloats( r, FUNC, INPUT, VECTOR, D ) \
193 r = cpPlugins_Image_Demangle_VectorPixel_Dim( FUNC, INPUT, VECTOR, float, D ); \
194 if( r != "" ) r = cpPlugins_Image_Demangle_VectorPixel_Dim( FUNC, INPUT, VECTOR, double, D )
196 #endif // __CPPLUGINS__IMAGE__HXX__