#ifndef __CPPLUGINS__INTERFACE__IMAGE__HXX__ #define __CPPLUGINS__INTERFACE__IMAGE__HXX__ #include #include #include #include #include #include #include #include #include #include #include // ------------------------------------------------------------------------- template< unsigned int D > void cpPlugins::Interface::Image:: _ITK_2_VTK_0( itk::LightObject* o ) { if( dynamic_cast< itk::ImageBase< D >* >( o ) != NULL ) { this->_ITK_2_VTK_1< char, D >( o ); this->_ITK_2_VTK_1< short, D >( o ); this->_ITK_2_VTK_1< int, D >( o ); this->_ITK_2_VTK_1< long, D >( o ); this->_ITK_2_VTK_1< unsigned char, D >( o ); this->_ITK_2_VTK_1< unsigned short, D >( o ); this->_ITK_2_VTK_1< unsigned int, D >( o ); this->_ITK_2_VTK_1< unsigned long, D >( o ); this->_ITK_2_VTK_1< float, D >( o ); this->_ITK_2_VTK_1< double, D >( o ); this->_ITK_2_VTK_1< itk::RGBPixel< char >, D >( o ); this->_ITK_2_VTK_1< itk::RGBPixel< short >, D >( o ); this->_ITK_2_VTK_1< itk::RGBPixel< int >, D >( o ); this->_ITK_2_VTK_1< itk::RGBPixel< long >, D >( o ); this->_ITK_2_VTK_1< itk::RGBPixel< unsigned char >, D >( o ); this->_ITK_2_VTK_1< itk::RGBPixel< unsigned short >, D >( o ); this->_ITK_2_VTK_1< itk::RGBPixel< unsigned int >, D >( o ); this->_ITK_2_VTK_1< itk::RGBPixel< unsigned long >, D >( o ); this->_ITK_2_VTK_1< itk::RGBPixel< float >, D >( o ); this->_ITK_2_VTK_1< itk::RGBPixel< double >, D >( o ); this->_ITK_2_VTK_1< itk::RGBAPixel< char >, D >( o ); this->_ITK_2_VTK_1< itk::RGBAPixel< short >, D >( o ); this->_ITK_2_VTK_1< itk::RGBAPixel< int >, D >( o ); this->_ITK_2_VTK_1< itk::RGBAPixel< long >, D >( o ); this->_ITK_2_VTK_1< itk::RGBAPixel< unsigned char >, D >( o ); this->_ITK_2_VTK_1< itk::RGBAPixel< unsigned short >, D >( o ); this->_ITK_2_VTK_1< itk::RGBAPixel< unsigned int >, D >( o ); this->_ITK_2_VTK_1< itk::RGBAPixel< unsigned long >, D >( o ); this->_ITK_2_VTK_1< itk::RGBAPixel< float >, D >( o ); this->_ITK_2_VTK_1< itk::RGBAPixel< double >, D >( o ); this->_ITK_2_VTK_1< itk::DiffusionTensor3D< float >, D >( o ); this->_ITK_2_VTK_1< itk::DiffusionTensor3D< double >, D >( o ); this->_ITK_2_VTK_1< itk::Vector< float, D >, D >( o ); this->_ITK_2_VTK_1< itk::Vector< double, D >, D >( o ); this->_ITK_2_VTK_1< itk::CovariantVector< float, D >, D >( o ); this->_ITK_2_VTK_1< itk::CovariantVector< double, D >, D >( o ); this->_ITK_2_VTK_1< itk::Point< float, D >, D >( o ); this->_ITK_2_VTK_1< itk::Point< double, D >, D >( o ); this->_ITK_2_VTK_1< itk::SymmetricSecondRankTensor< float, D >, D >( o ); this->_ITK_2_VTK_1< itk::SymmetricSecondRankTensor< double, D >, D >( o ); } else { this->m_VTKObject = NULL; this->m_ITKvVTK = NULL; this->Modified( ); } // fi } // ------------------------------------------------------------------------- template< class P, unsigned int D > void cpPlugins::Interface::Image:: _ITK_2_VTK_1( itk::LightObject* o ) { if( dynamic_cast< itk::Image< P, D >* >( o ) == NULL ) { this->m_VTKObject = NULL; this->m_ITKvVTK = NULL; this->Modified( ); } else this->_ITK_2_VTK_2< itk::Image< P, D > >( o ); } // ------------------------------------------------------------------------- template< class I > void cpPlugins::Interface::Image:: _ITK_2_VTK_2( itk::LightObject* o ) { typedef itk::ImageToVTKImageFilter< I > _I2V; I* image = dynamic_cast< I* >( o ); if( image != NULL ) { _I2V* f = dynamic_cast< _I2V* >( this->m_ITKvVTK.GetPointer( ) ); if( f == NULL ) { typename _I2V::Pointer nf = _I2V::New( ); this->m_ITKvVTK = nf; f = nf.GetPointer( ); } // fi f->SetInput( image ); f->Update( ); // Keep object track this->m_ITKObject = o; this->m_VTKObject = f->GetOutput( ); } else { this->m_VTKObject = NULL; this->m_ITKvVTK = NULL; } // fi this->Modified( ); } #ifndef cpPlugins_Interface_EXPORTS // ========================================================================= // ========== Declare import itk::Image types ========== // ========================================================================= // ------------------------------------------------------------------------- #define cpPlugins_ITKImage_Import( T, D ) \ cpPlugins_TEMPLATE_IMPORT( \ 2(class cpPlugins_Interface_EXPORT itk::Image< T, D >) \ ) // ------------------------------------------------------------------------- #define cpPlugins_ITKArrayImage_Import( A, T, DA, DI ) \ cpPlugins_TEMPLATE_IMPORT( \ 3(class cpPlugins_Interface_EXPORT itk::Image< A< T, DA >, DI >) \ ) // ------------------------------------------------------------------------- #define cpPlugins_ITKImage_AllDims_Import( T ) \ cpPlugins_ITKImage_Import( T, 2 ); \ cpPlugins_ITKImage_Import( T, 3 ); \ cpPlugins_ITKImage_Import( T, 4 ) // ------------------------------------------------------------------------- #define cpPlugins_ITKArrayImage_AllDims_Import( A, T ) \ cpPlugins_ITKArrayImage_Import( A, T, 2, 2 ); \ cpPlugins_ITKArrayImage_Import( A, T, 3, 3 ); \ cpPlugins_ITKArrayImage_Import( A, T, 4, 4 ) // ------------------------------------------------------------------------- #define cpPlugins_VTKImage_Import( T, D ) \ cpPlugins_TEMPLATE_IMPORT( \ 2( \ class cpPlugins_Interface_EXPORT \ itk::ImageToVTKImageFilter< itk::Image< T, D > > \ ) \ ) // ------------------------------------------------------------------------- #define cpPlugins_VTKArrayImage_Import( A, T, DA, DI ) \ cpPlugins_TEMPLATE_IMPORT( \ 3(class \ cpPlugins_Interface_EXPORT \ itk::ImageToVTKImageFilter< itk::Image< A< T, DA >, DI > >) \ ) // ------------------------------------------------------------------------- #define cpPlugins_VTKImage_AllDims_Import( T ) \ cpPlugins_VTKImage_Import( T, 2 ); \ cpPlugins_VTKImage_Import( T, 3 ) // ------------------------------------------------------------------------- #define cpPlugins_VTKArrayImage_AllDims_Import( A, T ) \ cpPlugins_VTKArrayImage_Import( A, T, 2, 2 ); \ cpPlugins_VTKArrayImage_Import( A, T, 3, 3 ) // ------------------------------------------------------------------------- #define cpPlugins_Image_Import( T, D ) \ cpPlugins_ITKImage_Import( T, D ); \ cpPlugins_VTKImage_Import( T, D ) \ // ------------------------------------------------------------------------- #define cpPlugins_Image_AllDims_Import( T ) \ cpPlugins_ITKImage_AllDims_Import( T ); \ cpPlugins_VTKImage_AllDims_Import( T ) \ // ------------------------------------------------------------------------- #define cpPlugins_ArrayImage_AllDims_Import( A, T ) \ cpPlugins_ITKArrayImage_AllDims_Import( A, T ); \ cpPlugins_VTKArrayImage_AllDims_Import( A, T ) \ // ------------------------------------------------------------------------- // ITK-VTK base clases // ------------------------------------------------------------------------- cpPlugins_Image_AllDims_Import( char ); cpPlugins_Image_AllDims_Import( short ); cpPlugins_Image_AllDims_Import( int ); cpPlugins_Image_AllDims_Import( long ); cpPlugins_Image_AllDims_Import( unsigned char ); cpPlugins_Image_AllDims_Import( unsigned short ); cpPlugins_Image_AllDims_Import( unsigned int ); cpPlugins_Image_AllDims_Import( unsigned long ); cpPlugins_Image_AllDims_Import( float ); cpPlugins_Image_AllDims_Import( double ); cpPlugins_Image_AllDims_Import( itk::RGBPixel< char > ); cpPlugins_Image_AllDims_Import( itk::RGBPixel< short > ); cpPlugins_Image_AllDims_Import( itk::RGBPixel< int > ); cpPlugins_Image_AllDims_Import( itk::RGBPixel< long > ); cpPlugins_Image_AllDims_Import( itk::RGBPixel< unsigned char > ); cpPlugins_Image_AllDims_Import( itk::RGBPixel< unsigned short > ); cpPlugins_Image_AllDims_Import( itk::RGBPixel< unsigned int > ); cpPlugins_Image_AllDims_Import( itk::RGBPixel< unsigned long > ); cpPlugins_Image_AllDims_Import( itk::RGBPixel< float > ); cpPlugins_Image_AllDims_Import( itk::RGBPixel< double > ); cpPlugins_Image_AllDims_Import( itk::RGBAPixel< char > ); cpPlugins_Image_AllDims_Import( itk::RGBAPixel< short > ); cpPlugins_Image_AllDims_Import( itk::RGBAPixel< int > ); cpPlugins_Image_AllDims_Import( itk::RGBAPixel< long > ); cpPlugins_Image_AllDims_Import( itk::RGBAPixel< unsigned char > ); cpPlugins_Image_AllDims_Import( itk::RGBAPixel< unsigned short > ); cpPlugins_Image_AllDims_Import( itk::RGBAPixel< unsigned int > ); cpPlugins_Image_AllDims_Import( itk::RGBAPixel< unsigned long > ); cpPlugins_Image_AllDims_Import( itk::RGBAPixel< float > ); cpPlugins_Image_AllDims_Import( itk::RGBAPixel< double > ); cpPlugins_Image_AllDims_Import( itk::DiffusionTensor3D< float > ); cpPlugins_Image_AllDims_Import( itk::DiffusionTensor3D< double > ); cpPlugins_ArrayImage_AllDims_Import( itk::Vector, float ); cpPlugins_ArrayImage_AllDims_Import( itk::Vector, double ); cpPlugins_ArrayImage_AllDims_Import( itk::CovariantVector, float ); cpPlugins_ArrayImage_AllDims_Import( itk::CovariantVector, double ); cpPlugins_ArrayImage_AllDims_Import( itk::Point, float ); cpPlugins_ArrayImage_AllDims_Import( itk::Point, double ); cpPlugins_ArrayImage_AllDims_Import( itk::SymmetricSecondRankTensor, float ); cpPlugins_ArrayImage_AllDims_Import( itk::SymmetricSecondRankTensor, double ); // ------------------------------------------------------------------------- // ITK-only base clases // ------------------------------------------------------------------------- cpPlugins_ITKImage_AllDims_Import( std::complex< float > ); cpPlugins_ITKImage_AllDims_Import( std::complex< double > ); cpPlugins_ITKImage_Import( itk::Offset< 2 >, 2 ); cpPlugins_ITKImage_Import( itk::Offset< 3 >, 3 ); cpPlugins_ITKImage_Import( itk::Offset< 4 >, 4 ); // ========================================================================= // ========== Declare import itk::VectorImage types ========== // ========================================================================= // ------------------------------------------------------------------------- #define cpPlugins_VectorImage_Import( T, D ) \ cpPlugins_TEMPLATE_IMPORT( \ 2(class cpPlugins_Interface_EXPORT itk::VectorImage< T, D >) \ ) // ------------------------------------------------------------------------- #define cpPlugins_ArrayVectorImage_Import( A, T, DA, DI ) \ cpPlugins_TEMPLATE_IMPORT( \ 3(class \ cpPlugins_Interface_EXPORT \ itk::VectorImage< A< T, DA >, DI >) \ ) // ------------------------------------------------------------------------- #define cpPlugins_VectorImage_AllDims_Import( T ) \ cpPlugins_VectorImage_Import( T, 2 ); \ cpPlugins_VectorImage_Import( T, 3 ); \ cpPlugins_VectorImage_Import( T, 4 ) // ------------------------------------------------------------------------- #define cpPlugins_ArrayVectorImage_AllDims_Import( A, T ) \ cpPlugins_ArrayVectorImage_Import( A, T, 2, 2 ); \ cpPlugins_ArrayVectorImage_Import( A, T, 3, 3 ); \ cpPlugins_ArrayVectorImage_Import( A, T, 4, 4 ) // ------------------------------------------------------------------------- // ITK-VTK base clases // ------------------------------------------------------------------------- cpPlugins_VectorImage_AllDims_Import( char ); cpPlugins_VectorImage_AllDims_Import( short ); cpPlugins_VectorImage_AllDims_Import( int ); cpPlugins_VectorImage_AllDims_Import( long ); cpPlugins_VectorImage_AllDims_Import( unsigned char ); cpPlugins_VectorImage_AllDims_Import( unsigned short ); cpPlugins_VectorImage_AllDims_Import( unsigned int ); cpPlugins_VectorImage_AllDims_Import( unsigned long ); cpPlugins_VectorImage_AllDims_Import( float ); cpPlugins_VectorImage_AllDims_Import( double ); cpPlugins_VectorImage_AllDims_Import( std::complex< float > ); cpPlugins_VectorImage_AllDims_Import( std::complex< double > ); cpPlugins_VectorImage_Import( itk::Offset< 2 >, 2 ); cpPlugins_VectorImage_Import( itk::Offset< 3 >, 3 ); cpPlugins_VectorImage_Import( itk::Offset< 4 >, 4 ); cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< char > ); cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< short > ); cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< int > ); cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< long > ); cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< unsigned char > ); cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< unsigned short > ); cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< unsigned int > ); cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< unsigned long > ); cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< float > ); cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< double > ); cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< char > ); cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< short > ); cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< int > ); cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< long > ); cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< unsigned char > ); cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< unsigned short > ); cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< unsigned int > ); cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< unsigned long > ); cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< float > ); cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< double > ); cpPlugins_VectorImage_AllDims_Import( itk::DiffusionTensor3D< float > ); cpPlugins_VectorImage_AllDims_Import( itk::DiffusionTensor3D< double > ); cpPlugins_ArrayVectorImage_AllDims_Import( itk::Vector, float ); cpPlugins_ArrayVectorImage_AllDims_Import( itk::Vector, double ); cpPlugins_ArrayVectorImage_AllDims_Import( itk::CovariantVector, float ); cpPlugins_ArrayVectorImage_AllDims_Import( itk::CovariantVector, double ); cpPlugins_ArrayVectorImage_AllDims_Import( itk::Point, float ); cpPlugins_ArrayVectorImage_AllDims_Import( itk::Point, double ); cpPlugins_ArrayVectorImage_AllDims_Import( itk::SymmetricSecondRankTensor, float ); cpPlugins_ArrayVectorImage_AllDims_Import( itk::SymmetricSecondRankTensor, double ); #endif // cpPlugins_Interface_EXPORTS #endif // __CPPLUGINS__INTERFACE__IMAGE__HXX__ // eof - $RCSfile$