1 #include <cpExtensions/Visualization/Simple3DCurveToPolyData.h>
3 #include <vtkCellArray.h>
4 #include <vtkInformation.h>
5 #include <vtkInformationVector.h>
6 #include <vtkSmartPointer.h>
8 // -------------------------------------------------------------------------
9 template< class _TCurve >
10 typename cpExtensions::Visualization::Simple3DCurveToPolyData< _TCurve >::
11 Self* cpExtensions::Visualization::Simple3DCurveToPolyData< _TCurve >::
14 return( new Self( ) );
17 // -------------------------------------------------------------------------
18 template< class _TCurve >
19 const typename cpExtensions::Visualization::Simple3DCurveToPolyData< _TCurve >::
20 TCurve* cpExtensions::Visualization::Simple3DCurveToPolyData< _TCurve >::
23 return( this->m_Curve );
26 // -------------------------------------------------------------------------
27 template< class _TCurve >
29 cpExtensions::Visualization::Simple3DCurveToPolyData< _TCurve >::
30 SetInput( const TCurve* c )
32 if( this->m_Curve != c )
40 // -------------------------------------------------------------------------
41 template< class _TCurve >
42 cpExtensions::Visualization::Simple3DCurveToPolyData< _TCurve >::
43 Simple3DCurveToPolyData( )
44 : vtkPolyDataAlgorithm( ),
47 this->SetNumberOfInputPorts( 0 );
50 // -------------------------------------------------------------------------
51 template< class _TCurve >
52 cpExtensions::Visualization::Simple3DCurveToPolyData< _TCurve >::
53 ~Simple3DCurveToPolyData( )
57 // -------------------------------------------------------------------------
58 template< class _TCurve >
59 int cpExtensions::Visualization::Simple3DCurveToPolyData< _TCurve >::
61 vtkInformation* information,
62 vtkInformationVector** input,
63 vtkInformationVector* output
66 if( this->m_Curve == NULL )
70 vtkInformation* info = output->GetInformationObject( 0 );
71 vtkPolyData* out = vtkPolyData::SafeDownCast(
72 info->Get( vtkDataObject::DATA_OBJECT( ) )
76 out->SetPoints( vtkSmartPointer< vtkPoints >::New( ) );
77 out->SetVerts( vtkSmartPointer< vtkCellArray >::New( ) );
78 out->SetLines( vtkSmartPointer< vtkCellArray >::New( ) );
79 out->SetPolys( vtkSmartPointer< vtkCellArray >::New( ) );
80 out->SetStrips( vtkSmartPointer< vtkCellArray >::New( ) );
81 vtkPoints* points = out->GetPoints( );
82 vtkCellArray* lines = out->GetLines( );
85 for( unsigned long i = 0; i < this->m_Curve->GetNumberOfPoints( ); ++i )
87 typename _TCurve::TPoint pnt = this->m_Curve->GetPoint( i );
88 points->InsertNextPoint( pnt[ 0 ], pnt[ 1 ], pnt[ 2 ] );
91 lines->InsertNextCell( 2 );
92 lines->InsertCellPoint( i - 1 );
93 lines->InsertCellPoint( i );
101 // -------------------------------------------------------------------------
102 template< class _TCurve >
103 int cpExtensions::Visualization::Simple3DCurveToPolyData< _TCurve >::
105 vtkInformation* information,
106 vtkInformationVector** input,
107 vtkInformationVector* output
113 // -------------------------------------------------------------------------
114 #include <cpExtensions/DataStructures/Simple3DCurve.h>
116 template class cpExtensions::Visualization::Simple3DCurveToPolyData< cpExtensions::DataStructures::Simple3DCurve< float > >;
117 template class cpExtensions::Visualization::Simple3DCurveToPolyData< cpExtensions::DataStructures::Simple3DCurve< double > >;