1 #ifndef __CPPLUGINS__IMAGE__HXX__
2 #define __CPPLUGINS__IMAGE__HXX__
4 #include <cpPlugins_Instances_ScalarImages.h>
5 #include <cpPlugins_Instances_ColorImages.h>
7 // -------------------------------------------------------------------------
8 template< unsigned int D >
9 bool cpPlugins::Image::
10 _ITK_2_VTK_0_Scalar( itk::LightObject* o )
13 if( dynamic_cast< itk::ImageBase< D >* >( o ) != NULL )
15 s |= this->_ITK_2_VTK_1< char, D >( o );
16 if( !s ) s |= this->_ITK_2_VTK_1< short, D >( o );
17 if( !s ) s |= this->_ITK_2_VTK_1< int, D >( o );
18 if( !s ) s |= this->_ITK_2_VTK_1< long, D >( o );
19 if( !s ) s |= this->_ITK_2_VTK_1< float, D >( o );
20 if( !s ) s |= this->_ITK_2_VTK_1< double, D >( o );
21 if( !s ) s |= this->_ITK_2_VTK_1< unsigned char, D >( o );
22 if( !s ) s |= this->_ITK_2_VTK_1< unsigned short, D >( o );
23 if( !s ) s |= this->_ITK_2_VTK_1< unsigned int, D >( o );
24 if( !s ) s |= this->_ITK_2_VTK_1< unsigned long, D >( o );
30 // -------------------------------------------------------------------------
31 template< unsigned int D >
32 bool cpPlugins::Image::
33 _ITK_2_VTK_0_Color( itk::LightObject* o )
36 if( dynamic_cast< itk::ImageBase< D >* >( o ) != NULL )
38 s |= this->_ITK_2_VTK_1< itk::RGBPixel< char >, D >( o );
39 if( !s ) s |= this->_ITK_2_VTK_1< itk::RGBPixel< short >, D >( o );
40 if( !s ) s |= this->_ITK_2_VTK_1< itk::RGBPixel< int >, D >( o );
41 if( !s ) s |= this->_ITK_2_VTK_1< itk::RGBPixel< long >, D >( o );
42 if( !s ) s |= this->_ITK_2_VTK_1< itk::RGBPixel< float >, D >( o );
43 if( !s ) s |= this->_ITK_2_VTK_1< itk::RGBPixel< double >, D >( o );
44 if( !s ) s |= this->_ITK_2_VTK_1< itk::RGBPixel< unsigned char >, D >( o );
45 if( !s ) s |= this->_ITK_2_VTK_1< itk::RGBPixel< unsigned short >, D >( o );
46 if( !s ) s |= this->_ITK_2_VTK_1< itk::RGBPixel< unsigned int >, D >( o );
47 if( !s ) s |= this->_ITK_2_VTK_1< itk::RGBPixel< unsigned long >, D >( o );
48 if( !s ) s |= this->_ITK_2_VTK_1< itk::RGBAPixel< char >, D >( o );
49 if( !s ) s |= this->_ITK_2_VTK_1< itk::RGBAPixel< short >, D >( o );
50 if( !s ) s |= this->_ITK_2_VTK_1< itk::RGBAPixel< int >, D >( o );
51 if( !s ) s |= this->_ITK_2_VTK_1< itk::RGBAPixel< long >, D >( o );
52 if( !s ) s |= this->_ITK_2_VTK_1< itk::RGBAPixel< float >, D >( o );
53 if( !s ) s |= this->_ITK_2_VTK_1< itk::RGBAPixel< double >, D >( o );
54 if( !s ) s |= this->_ITK_2_VTK_1< itk::RGBAPixel< unsigned char >, D >( o );
55 if( !s ) s |= this->_ITK_2_VTK_1< itk::RGBAPixel< unsigned short >, D >( o );
56 if( !s ) s |= this->_ITK_2_VTK_1< itk::RGBAPixel< unsigned int >, D >( o );
57 if( !s ) s |= this->_ITK_2_VTK_1< itk::RGBAPixel< unsigned long >, D >( o );
63 // -------------------------------------------------------------------------
64 template< class P, unsigned int D >
65 bool cpPlugins::Image::
66 _ITK_2_VTK_1( itk::LightObject* o )
68 if( dynamic_cast< itk::Image< P, D >* >( o ) != NULL )
69 return( this->_ITK_2_VTK_2< itk::Image< P, D > >( o ) );
74 // -------------------------------------------------------------------------
76 bool cpPlugins::Image::
77 _ITK_2_VTK_2( itk::LightObject* o )
79 typedef itk::ImageToVTKImageFilter< T > _I2V;
81 T* image = dynamic_cast< T* >( o );
84 _I2V* f = dynamic_cast< _I2V* >( this->m_ITKvVTK.GetPointer( ) );
87 typename _I2V::Pointer nf = _I2V::New( );
96 this->m_ITKObject = o;
97 this->m_VTKObject = f->GetOutput( );
105 * =========================================================================
107 * =========================================================================
109 #define cpPlugins_Image_Demangle_Dim( F, I, D ) \
110 if( dynamic_cast< itk::ImageBase< D >* >( I ) != NULL ) \
111 this->F( dynamic_cast< itk::ImageBase< D >* >( I ) )
113 #define cpPlugins_Image_Demangle_Pixel_Dim( F, I, P, D ) \
114 if( dynamic_cast< itk::Image< P, D >* >( I ) != NULL ) \
115 this->F( dynamic_cast< itk::Image< P, D >* >( I ) )
117 #define cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, P, D ) \
118 if( dynamic_cast< itk::Image< itk::C##Pixel< P >, D >* >( I ) != NULL ) \
119 this->F( dynamic_cast< itk::Image< itk::C##Pixel< P >, D >* >( I ) )
121 #define cpPlugins_Image_Demangle_Pixel_AllInts( F, I, D ) \
122 cpPlugins_Image_Demangle_Pixel_Dim ( F, I, char, D ); \
123 else cpPlugins_Image_Demangle_Pixel_Dim( F, I, short, D ); \
124 else cpPlugins_Image_Demangle_Pixel_Dim( F, I, int, D ); \
125 else cpPlugins_Image_Demangle_Pixel_Dim( F, I, long, D )
127 #define cpPlugins_Image_Demangle_Pixel_AllUInts( F, I, D ) \
128 cpPlugins_Image_Demangle_Pixel_Dim ( F, I, unsigned char, D ); \
129 else cpPlugins_Image_Demangle_Pixel_Dim( F, I, unsigned short, D ); \
130 else cpPlugins_Image_Demangle_Pixel_Dim( F, I, unsigned int, D ); \
131 else cpPlugins_Image_Demangle_Pixel_Dim( F, I, unsigned long, D )
133 #define cpPlugins_Image_Demangle_Pixel_AllFloats( F, I, D ) \
134 cpPlugins_Image_Demangle_Pixel_Dim ( F, I, float, D ); \
135 else cpPlugins_Image_Demangle_Pixel_Dim( F, I, double, D )
137 #define cpPlugins_Image_Demangle_Pixel_AllScalars( F, I, D ) \
138 cpPlugins_Image_Demangle_Pixel_AllInts ( F, I, D ); \
139 else cpPlugins_Image_Demangle_Pixel_AllUInts ( F, I, D ); \
140 else cpPlugins_Image_Demangle_Pixel_AllFloats( F, I, D )
142 #define cpPlugins_Image_Demangle_ColorPixel_AllInts( F, I, C, D ) \
143 cpPlugins_Image_Demangle_ColorPixel_Dim ( F, I, C, char, D ); \
144 else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, short, D ); \
145 else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, int, D ); \
146 else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, long, D )
148 #define cpPlugins_Image_Demangle_ColorPixel_AllUInts( F, I, C, D ) \
149 cpPlugins_Image_Demangle_ColorPixel_Dim ( F, I, C, unsigned char, D ); \
150 else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, unsigned short, D ); \
151 else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, unsigned int, D ); \
152 else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, unsigned long, D )
154 #define cpPlugins_Image_Demangle_ColorPixel_AllFloats( F, I, C, D ) \
155 cpPlugins_Image_Demangle_ColorPixel_Dim ( F, I, C, float, D ); \
156 else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, double, D )
158 #define cpPlugins_Image_Demangle_ColorPixel_AllScalars( F, I, C, D ) \
159 cpPlugins_Image_Demangle_ColorPixel_AllInts ( F, I, C, D ); \
160 else cpPlugins_Image_Demangle_ColorPixel_AllUInts ( F, I, C, D ); \
161 else cpPlugins_Image_Demangle_ColorPixel_AllFloats( F, I, C, D )
163 #endif // __CPPLUGINS__IMAGE__HXX__