#include #include #include #include #include // ------------------------------------------------------------------------- template< class _TCurve > typename cpExtensions::Visualization::Simple3DCurveToPolyData< _TCurve >:: Self* cpExtensions::Visualization::Simple3DCurveToPolyData< _TCurve >:: New( ) { return( new Self( ) ); } // ------------------------------------------------------------------------- template< class _TCurve > const typename cpExtensions::Visualization::Simple3DCurveToPolyData< _TCurve >:: TCurve* cpExtensions::Visualization::Simple3DCurveToPolyData< _TCurve >:: GetInput( ) const { return( this->m_Curve ); } // ------------------------------------------------------------------------- template< class _TCurve > void cpExtensions::Visualization::Simple3DCurveToPolyData< _TCurve >:: SetInput( const TCurve* c ) { if( this->m_Curve != c ) { this->m_Curve = c; this->Modified( ); } // fi } // ------------------------------------------------------------------------- template< class _TCurve > cpExtensions::Visualization::Simple3DCurveToPolyData< _TCurve >:: Simple3DCurveToPolyData( ) : vtkPolyDataAlgorithm( ), m_Curve( NULL ) { this->SetNumberOfInputPorts( 0 ); } // ------------------------------------------------------------------------- template< class _TCurve > cpExtensions::Visualization::Simple3DCurveToPolyData< _TCurve >:: ~Simple3DCurveToPolyData( ) { } // ------------------------------------------------------------------------- template< class _TCurve > int cpExtensions::Visualization::Simple3DCurveToPolyData< _TCurve >:: RequestData( vtkInformation* information, vtkInformationVector** input, vtkInformationVector* output ) { if( this->m_Curve == NULL ) return( 0 ); // Get output vtkInformation* info = output->GetInformationObject( 0 ); vtkPolyData* out = vtkPolyData::SafeDownCast( info->Get( vtkDataObject::DATA_OBJECT( ) ) ); // Prepare data out->SetPoints( vtkSmartPointer< vtkPoints >::New( ) ); out->SetVerts( vtkSmartPointer< vtkCellArray >::New( ) ); out->SetLines( vtkSmartPointer< vtkCellArray >::New( ) ); out->SetPolys( vtkSmartPointer< vtkCellArray >::New( ) ); out->SetStrips( vtkSmartPointer< vtkCellArray >::New( ) ); vtkPoints* points = out->GetPoints( ); vtkCellArray* lines = out->GetLines( ); // Get data for( unsigned long i = 0; i < this->m_Curve->GetNumberOfPoints( ); ++i ) { typename _TCurve::TPoint pnt = this->m_Curve->GetPoint( i ); points->InsertNextPoint( pnt[ 0 ], pnt[ 1 ], pnt[ 2 ] ); if( i > 0 ) { lines->InsertNextCell( 2 ); lines->InsertCellPoint( i - 1 ); lines->InsertCellPoint( i ); } // fi } // rof return( 1 ); } // ------------------------------------------------------------------------- template< class _TCurve > int cpExtensions::Visualization::Simple3DCurveToPolyData< _TCurve >:: RequestInformation( vtkInformation* information, vtkInformationVector** input, vtkInformationVector* output ) { return( 1 ); } // ------------------------------------------------------------------------- #include template class cpExtensions::Visualization::Simple3DCurveToPolyData< cpExtensions::DataStructures::Simple3DCurve< float > >; template class cpExtensions::Visualization::Simple3DCurveToPolyData< cpExtensions::DataStructures::Simple3DCurve< double > >; // eof - $RCSfile$