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 cpPlugin_Image_Demangle_Dim( FUNC, INPUT, D ) \
108 this->FUNC( INPUT->GetITK< itk::ImageBase< D > >( ) )
110 #define cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, PIXEL, D ) \
111 this->FUNC( dynamic_cast< itk::Image< PIXEL, D >* >( INPUT ) )
113 #define cpPlugin_Image_Demangle_VectorPixel_Dim( FUNC, INPUT, VECTOR, PIXEL, D ) \
114 this->FUNC( dynamic_cast< itk::Image< VECTOR< PIXEL, D >, D >* >( INPUT ) )
116 #define cpPlugin_Image_Demangle_Pixel_AllScalars( r, FUNC, INPUT, D ) \
117 r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, char, D ); \
118 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, short, D ); \
119 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, int, D ); \
120 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, long, D ); \
121 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, float, D ); \
122 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, double, D ); \
123 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, unsigned char, D ); \
124 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, unsigned short, D ); \
125 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, unsigned int, D ); \
126 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, unsigned long, D )
128 #define cpPlugin_Image_Demangle_Pixel_AllColor( r, FUNC, INPUT, D ) \
129 r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< char >, D ); \
130 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< short >, D ); \
131 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< int >, D ); \
132 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< long >, D ); \
133 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< float >, D ); \
134 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< double >, D ); \
135 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< unsigned char >, D ); \
136 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< unsigned short >, D ); \
137 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< unsigned int >, D ); \
138 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< unsigned long >, D ); \
139 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< char >, D ); \
140 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< short >, D ); \
141 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< int >, D ); \
142 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< long >, D ); \
143 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< float >, D ); \
144 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< double >, D ); \
145 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< unsigned char >, D ); \
146 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< unsigned short >, D ); \
147 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< unsigned int >, D ); \
148 if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< unsigned long >, D )
150 #define cpPlugin_Image_Demangle_VectorPixel_AllFloats( r, FUNC, INPUT, VECTOR, D ) \
151 r = cpPlugin_Image_Demangle_VectorPixel_Dim( FUNC, INPUT, VECTOR, float, D ); \
152 if( r != "" ) r = cpPlugin_Image_Demangle_VectorPixel_Dim( FUNC, INPUT, VECTOR, double, D )
154 #endif // __CPPLUGINS__IMAGE__HXX__