#include #include #include // ------------------------------------------------------------------------- void fpaPlugins::ImageSkeleton:: SetITK( itk::LightObject* o ) { typedef fpa::Base::ImageSkeleton< fpa::Image::MinimumSpanningTree< 2 > > _I2; typedef fpa::Base::ImageSkeleton< fpa::Image::MinimumSpanningTree< 3 > > _I3; bool r = this->_SetITK< _I2 >( o ); if( !r ) r = this->_SetITK< _I3 >( o ); if( !r ) this->Superclass::SetITK( NULL ); } // ------------------------------------------------------------------------- void fpaPlugins::ImageSkeleton:: SetVTK( vtkObjectBase* o ) { // Do nothing: this only has sense in ITK } // ------------------------------------------------------------------------- fpaPlugins::ImageSkeleton:: ImageSkeleton( ) : Superclass( ) { } // ------------------------------------------------------------------------- fpaPlugins::ImageSkeleton:: ~ImageSkeleton( ) { } // ------------------------------------------------------------------------- template< class _TMST > bool fpaPlugins::ImageSkeleton:: _SetITK( itk::LightObject* o ) { typedef fpa::VTK::Image::ImageSkeletonToPolyData< _TMST > _TFilter; _TMST* mst = dynamic_cast< _TMST* >( o ); if( mst != NULL ) { _TFilter* f = dynamic_cast< _TFilter* >( this->m_ITKvVTK.GetPointer( ) ); if( f == NULL ) { vtkSmartPointer< _TFilter > nf = _TFilter::New( ); this->m_ITKvVTK = nf.GetPointer( ); f = nf.GetPointer( ); } // fi f->SetInput( mst ); f->Update( ); // Keep object track this->m_ITKObject = o; this->m_VTKObject = f->GetOutput( ); return( true ); } else { this->Superclass::SetITK( NULL ); this->Superclass::SetVTK( NULL ); return( false ); } // fi } // eof - $RCSfile$