+++ /dev/null
-#include <cpInstances/DataObjects/Image.h>
-
-#include <itkImageToVTKImageFilter.h>
-#include <itkVTKImageToImageFilter.h>
-#include <vtkImageData.h>
-#include <itkDiffusionTensor3D.h>
-#include <itkRGBPixel.h>
-#include <itkRGBAPixel.h>
-
-// -------------------------------------------------------------------------
-void cpInstances::DataObjects::Image::
-SetITK( itk::LightObject* o )
-{
- this->Superclass::SetITK( o );
- this->m_VTK = NULL;
- this->m_ITKvVTK = NULL;
- this->Modified( );
-}
-
-// -------------------------------------------------------------------------
-void cpInstances::DataObjects::Image::
-SetVTK( vtkObjectBase* o )
-{
- this->Superclass::SetVTK( o );
- this->m_ITK = NULL;
- this->m_ITKvVTK = NULL;
- this->Modified( );
-
- /* TODO
- vtkImageData* img = dynamic_cast< vtkImageData* >( o );
- this->Superclass::SetVTK( img );
- if( img == NULL )
- {
- this->m_ITK = NULL;
- this->m_ITKvVTK = NULL;
- this->Modified( );
- return;
-
- } // fi
-
- bool success = false;
- auto stype = img->GetScalarType( );
- #ifdef cpPlugins_CONFIG_INTEGER_TYPES_char
- if( stype == VTK_CHAR ) success = this->_VTK_2_ITK_0< char >( img );
- if( stype == VTK_UNSIGNED_CHAR ) success = this->_VTK_2_ITK_0< unsigned char >( img );
- #endif // cpPlugins_CONFIG_INTEGER_TYPES_char
- #ifdef cpPlugins_CONFIG_INTEGER_TYPES_short
- if( stype == VTK_CHAR ) success = this->_VTK_2_ITK_0< short >( img );
- if( stype == VTK_UNSIGNED_CHAR ) success = this->_VTK_2_ITK_0< unsigned short >( img );
- #endif // cpPlugins_CONFIG_INTEGER_TYPES_short
- #ifdef cpPlugins_CONFIG_INTEGER_TYPES_int
- if( stype == VTK_CHAR ) success = this->_VTK_2_ITK_0< int >( img );
- if( stype == VTK_UNSIGNED_CHAR ) success = this->_VTK_2_ITK_0< unsigned int >( img );
- #endif // cpPlugins_CONFIG_INTEGER_TYPES_int
- #ifdef cpPlugins_CONFIG_INTEGER_TYPES_long
- if( stype == VTK_CHAR ) success = this->_VTK_2_ITK_0< long >( img );
- if( stype == VTK_UNSIGNED_CHAR ) success = this->_VTK_2_ITK_0< unsigned long >( img );
- #endif // cpPlugins_CONFIG_INTEGER_TYPES_long
- #ifdef cpPlugins_CONFIG_REAL_TYPES_float
- if( stype == VTK_CHAR ) success = this->_VTK_2_ITK_0< float >( img );
- #endif // cpPlugins_CONFIG_REAL_TYPES_float
- #ifdef cpPlugins_CONFIG_REAL_TYPES_double
- if( stype == VTK_CHAR ) success = this->_VTK_2_ITK_0< double >( img );
- #endif // cpPlugins_CONFIG_REAL_TYPES_double
- */
- /* TODO
- #define cpPlugins_CONFIG_COLOR_PIXELS_RGBPixel
- #define cpPlugins_CONFIG_COLOR_PIXELS_RGBAPixel
- #define cpPlugins_CONFIG_VECTORS_CovariantVector
- #define cpPlugins_CONFIG_VECTORS_Point
- #define cpPlugins_CONFIG_VECTORS_SymmetricSecondRankTensor
- #define cpPlugins_CONFIG_VECTORS_Vector
- #define cpPlugins_CONFIG_DIFFUSIONTENSORS_DiffusionTensor3D
- #define cpPlugins_CONFIG_MATRICES_Matrix
- */
- /* TODO
- if( !success )
- {
- this->m_ITK = NULL;
- this->m_ITKvVTK = NULL;
-
- } // fi
- this->Modified( );
- */
-}
-
-// -------------------------------------------------------------------------
-cpInstances::DataObjects::Image::
-Image( )
- : Superclass( )
-{
-}
-
-// -------------------------------------------------------------------------
-cpInstances::DataObjects::Image::
-~Image( )
-{
-}
-
-// -------------------------------------------------------------------------
-void cpInstances::DataObjects::Image::
-_UpdateITK( ) const
-{
- // TODO: std::cout << "Create ITK representation." << std::endl;
-}
-
-// -------------------------------------------------------------------------
-void cpInstances::DataObjects::Image::
-_UpdateVTK( ) const
-{
- auto i = const_cast< itk::LightObject* >( this->m_ITK.GetPointer( ) );
- auto v = const_cast< vtkObjectBase* >( this->m_VTK.GetPointer( ) );
- if( i != NULL && v == NULL )
- {
- cpPlugins_Demangle_Image_VisualDims_1( i, _ITK_2_VTK_0 )
- cpPlugins_Demangle_Image_DiffTensors3D_1( i, _ITK_2_VTK_1 );
-
- } // fi
-}
-
-// -------------------------------------------------------------------------
-template< class _TImage >
-void cpInstances::DataObjects::Image::
-_ITK_2_VTK_0( _TImage* image ) const
-{
- static const unsigned int d = _TImage::ImageDimension;
- cpPlugins_Demangle_Image_ScalarPixels_1( image, _ITK_2_VTK_1, d )
- cpPlugins_Demangle_Image_ColorPixels_1( image, _ITK_2_VTK_1, d )
- cpPlugins_Demangle_Image_VectorPixels_1( image, _ITK_2_VTK_1, d );
-}
-
-// -------------------------------------------------------------------------
-template< class _TImage >
-void cpInstances::DataObjects::Image::
-_ITK_2_VTK_1( _TImage* image ) const
-{
- typedef itk::ImageToVTKImageFilter< _TImage > _TFilter;
-
- Self* self = const_cast< Self* >( this );
- _TFilter* f = dynamic_cast< _TFilter* >( self->m_ITKvVTK.GetPointer( ) );
- if( f == NULL )
- {
- typename _TFilter::Pointer nf = _TFilter::New( );
- self->m_ITKvVTK = nf;
- f = nf.GetPointer( );
-
- } // fi
- f->SetInput( image );
- f->Update( );
-
- // Keep object track
- self->m_ITK = image;
- self->m_VTK = f->GetOutput( );
-}
-
-// -------------------------------------------------------------------------
-template< class _TPixel >
-bool cpInstances::DataObjects::Image::
-_VTK_2_ITK_0( vtkImageData* image )
-{
- bool success = false;
- unsigned int dim = image->GetDataDimension( );
-#ifdef cpPlugins_CONFIG_VISUAL_DIMENSIONS_2
- if( dim == 2 ) success = this->_VTK_2_ITK_1< _TPixel, 2 >( image );
-#endif // cpPlugins_CONFIG_VISUAL_DIMENSIONS_2
-#ifdef cpPlugins_CONFIG_VISUAL_DIMENSIONS_3
- if( dim == 3 ) success = this->_VTK_2_ITK_1< _TPixel, 3 >( image );
-#endif // cpPlugins_CONFIG_VISUAL_DIMENSIONS_2
- return( success );
-}
-
-// -------------------------------------------------------------------------
-template< class _TPixel, unsigned int _VDim >
-bool cpInstances::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( ) );
- 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( );
- return( true );
-}
-
-// eof - $RCSfile$