#include #include #include #include #include // ------------------------------------------------------------------------- template< class _TPolyLine > typename cpExtensions::Visualization::PolyLineParametricPathToPolyData< _TPolyLine >:: Self* cpExtensions::Visualization::PolyLineParametricPathToPolyData< _TPolyLine >:: New( ) { return( new Self( ) ); } // ------------------------------------------------------------------------- template< class _TPolyLine > const typename cpExtensions::Visualization::PolyLineParametricPathToPolyData< _TPolyLine >:: TPolyLine* cpExtensions::Visualization::PolyLineParametricPathToPolyData< _TPolyLine >:: GetInput( ) const { return( this->m_PolyLine ); } // ------------------------------------------------------------------------- template< class _TPolyLine > void cpExtensions::Visualization::PolyLineParametricPathToPolyData< _TPolyLine >:: SetInput( const TPolyLine* pl ) { if( this->m_PolyLine != pl ) { this->m_PolyLine = pl; this->Modified( ); } // fi } // ------------------------------------------------------------------------- template< class _TPolyLine > cpExtensions::Visualization::PolyLineParametricPathToPolyData< _TPolyLine >:: PolyLineParametricPathToPolyData( ) : vtkPolyDataAlgorithm( ), m_PolyLine( NULL ) { this->SetNumberOfInputPorts( 0 ); } // ------------------------------------------------------------------------- template< class _TPolyLine > cpExtensions::Visualization::PolyLineParametricPathToPolyData< _TPolyLine >:: ~PolyLineParametricPathToPolyData( ) { } // ------------------------------------------------------------------------- template< class _TPolyLine > int cpExtensions::Visualization::PolyLineParametricPathToPolyData< _TPolyLine >:: RequestData( vtkInformation* information, vtkInformationVector** input, vtkInformationVector* output ) { static const unsigned int dim = _TPolyLine::PathDimension; if( this->m_PolyLine == 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_PolyLine->GetSize( ); ++i ) { typename _TPolyLine::TPoint pnt = this->m_PolyLine->GetPoint( i ); if( dim == 1 ) points->InsertNextPoint( pnt[ 0 ], 0, 0 ); else if( dim == 2 ) points->InsertNextPoint( pnt[ 0 ], pnt[ 1 ], 0 ); else 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 _TPolyLine > int cpExtensions::Visualization::PolyLineParametricPathToPolyData< _TPolyLine >:: RequestInformation( vtkInformation* information, vtkInformationVector** input, vtkInformationVector* output ) { return( 1 ); } // ------------------------------------------------------------------------- #include template class cpExtensions::Visualization::PolyLineParametricPathToPolyData< cpExtensions::DataStructures::PolyLineParametricPath< 1 > >; template class cpExtensions::Visualization::PolyLineParametricPathToPolyData< cpExtensions::DataStructures::PolyLineParametricPath< 2 > >; template class cpExtensions::Visualization::PolyLineParametricPathToPolyData< cpExtensions::DataStructures::PolyLineParametricPath< 3 > >; template class cpExtensions::Visualization::PolyLineParametricPathToPolyData< cpExtensions::DataStructures::PolyLineParametricPath< 4 > >; // eof - $RCSfile$