#ifndef __cpPlugins__DataObjects__Image__hxx__ #define __cpPlugins__DataObjects__Image__hxx__ #include #include #include #include #include #include // ------------------------------------------------------------------------- template< unsigned int _VDim > void cpPlugins::DataObjects::Image:: _ITK_2_VTK_0( itk::ImageBase< _VDim >* image ) { cpPlugins_Demangle_ImageIntegers( image, _ITK_2_VTK_1, _VDim ); else cpPlugins_Demangle_ImageReals( image, _ITK_2_VTK_1, _VDim ); else cpPlugins_Demangle_ImageColors( image, _ITK_2_VTK_1, _VDim ); else cpPlugins_Demangle_ImageFixedArrays( image, _ITK_2_VTK_1, _VDim ); else cpPlugins_Demangle_ImageCovariantVectors( image, _ITK_2_VTK_1, _VDim ); else cpPlugins_Demangle_ImagePoints( image, _ITK_2_VTK_1, _VDim ); else cpPlugins_Demangle_ImageVectors( image, _ITK_2_VTK_1, _VDim ); else cpPlugins_Demangle_ImageSymmetricSecondRankTensors( image, _ITK_2_VTK_1, _VDim ); else { this->m_VTK = NULL; this->m_ITKvVTK = NULL; } // fi } // ------------------------------------------------------------------------- template< class _TImage > void cpPlugins::DataObjects::Image:: _ITK_2_VTK_1( _TImage* image ) { typedef itk::ImageToVTKImageFilter< _TImage > _TFilter; _TFilter* f = dynamic_cast< _TFilter* >( this->m_ITKvVTK.GetPointer( ) ); if( f == NULL ) { typename _TFilter::Pointer nf = _TFilter::New( ); this->m_ITKvVTK = nf; f = nf.GetPointer( ); } // fi f->SetInput( image ); f->Update( ); // Keep object track this->m_ITK = image; this->m_VTK = f->GetOutput( ); } // ------------------------------------------------------------------------- template< class _TPixel > void cpPlugins::DataObjects::Image:: _VTK_2_ITK_0( vtkImageData* image ) { if( image->GetDataDimension( ) == 2 ) this->_VTK_2_ITK_1< _TPixel, 2 >( image ); else if( image->GetDataDimension( ) == 3 ) this->_VTK_2_ITK_1< _TPixel, 3 >( image ); else { this->m_ITK = NULL; this->m_ITKvVTK = NULL; } // fi } // ------------------------------------------------------------------------- template< class _TPixel, unsigned int _VDim > void cpPlugins::DataObjects::Image:: _VTK_2_ITK_1( vtkImageData* image ) { typedef itk::Image< _TPixel, _VDim > _TImage; typedef itk::VTKImageToImageFilter< _TImage > _TFilter; _TFilter* f = dynamic_cast< _TFilter* >( this->m_ITKvVTK.GetPointer( ) ); std::cout << typeid( _TImage ).name( ) << std::endl; if( f == NULL ) { typename _TFilter::Pointer nf = _TFilter::New( ); this->m_ITKvVTK = nf; f = nf.GetPointer( ); } // fi f->SetInput( image ); f->Update( ); // Keep object track this->m_VTK = image; this->m_ITK = f->GetOutput( ); } #endif // __cpPlugins__DataObjects__Image__hxx__ // eof - $RCSfile$