#include #include #include #include #include #include #include // ------------------------------------------------------------------------- cpExtensions::Visualization::LUTImageActor:: Self* cpExtensions::Visualization::LUTImageActor:: New( ) { return( new Self( ) ); } // ------------------------------------------------------------------------- unsigned int cpExtensions::Visualization::LUTImageActor:: GetNumberOfImages( ) const { return( this->m_Images.size( ) ); } // ------------------------------------------------------------------------- vtkImageData* cpExtensions::Visualization::LUTImageActor:: GetImage( unsigned int id ) { if( id < this->m_Images.size( ) ) return( this->m_Images[ id ] ); else return( NULL ); } // ------------------------------------------------------------------------- const vtkImageData* cpExtensions::Visualization::LUTImageActor:: GetImage( unsigned int id ) const { if( id < this->m_Images.size( ) ) return( this->m_Images[ id ] ); else return( NULL ); } // ------------------------------------------------------------------------- unsigned int cpExtensions::Visualization::LUTImageActor:: GetImageId( vtkImageData* image ) const { unsigned int i = 0; bool f = false; while( i < this->m_Images.size( ) && !f ) { if( this->m_Images[ i ].GetPointer( ) == image ) f = true; else i++; } // elihw return( i ); } // ------------------------------------------------------------------------- void cpExtensions::Visualization::LUTImageActor:: GetLUTColor( unsigned int id, double& r, double& g, double& b, double& a ) const { double rgba[ 4 ]; this->m_LUT->GetTableValue( id, rgba ); r = rgba[ 0 ]; g = rgba[ 1 ]; b = rgba[ 2 ]; a = rgba[ 3 ]; } // ------------------------------------------------------------------------- void cpExtensions::Visualization::LUTImageActor:: GetLUTColor( vtkImageData* image, double& r, double& g, double& b, double& a ) const { this->GetLUTColor( this->GetImageId( image ), r, g, b, a ); } // ------------------------------------------------------------------------- void cpExtensions::Visualization::LUTImageActor:: SetLUTColor( unsigned int id, double r, double g, double b, double a ) { if( id >= ( unsigned int )( this->m_LUT->GetNumberOfTableValues( ) ) ) this->m_LUT->SetNumberOfTableValues( id + 1 ); this->m_LUT->SetTableValue( id, r, g, b, a ); this->m_LUT->Modified( ); } // ------------------------------------------------------------------------- void cpExtensions::Visualization::LUTImageActor:: SetLUTColor( vtkImageData* image, double r, double g, double b, double a ) { this->SetLUTColor( this->GetImageId( image ), r, g, b, a ); } // TODO: !!!!! #include // ------------------------------------------------------------------------- unsigned int cpExtensions::Visualization::LUTImageActor:: AddImage( vtkImageData* image, double r, double g, double b, double a ) { static vtkSmartPointer< vtkImageCast > cast; cast = vtkSmartPointer< vtkImageCast >::New( ); if( image != NULL ) { cast->SetOutputScalarTypeToUnsignedChar( ); cast->SetInputData( image ); cast->Update( ); this->m_Images.push_back( image ); this->SetLUTColor( this->m_Images.size( ), r, g, b, a ); this->m_Blender->AddInputData( cast->GetOutput( ) ); this->m_Blender->Update( ); if( this->m_Images.size( ) == 1 ) { this->m_ImageMap-> SetInputConnection( this->m_Blender->GetOutputPort( ) ); this->m_Mapper-> SetInputConnection( this->m_ImageMap->GetOutputPort( ) ); } // fi this->Modified( ); this->GetProperty( )->SetInterpolationTypeToNearest( ); } // fi return( this->m_Images.size( ) ); } // ------------------------------------------------------------------------- cpExtensions::Visualization::LUTImageActor:: LUTImageActor( ) : Superclass( ) { this->m_LUT = vtkSmartPointer< vtkLookupTable >::New( ); this->m_LUT->SetNumberOfTableValues( 1 ); this->m_LUT->SetNanColor( 0, 0, 0, 0 ); this->m_LUT->SetTableValue( 0, 0, 0, 0, 0 ); this->m_Blender = vtkSmartPointer< _TImageBlender >::New( ); this->m_ImageMap = vtkSmartPointer< vtkImageMapToColors >::New( ); this->m_ImageMap->SetLookupTable( this->m_LUT ); } // ------------------------------------------------------------------------- cpExtensions::Visualization::LUTImageActor:: ~LUTImageActor( ) { } // eof - $RCSfile$