1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
6 #ifndef __fpa__Image__PolyLineParametricPathToPolyDataFilter__hxx__
7 #define __fpa__Image__PolyLineParametricPathToPolyDataFilter__hxx__
10 # include <vtkCellArray.h>
11 # include <vtkInformation.h>
12 # include <vtkInformationVector.h>
13 # include <vtkPointData.h>
14 # include <vtkUnsignedIntArray.h>
15 # include <vtkSmartPointer.h>
18 // -------------------------------------------------------------------------
19 template< class _TPolyLineParametricPath >
20 typename fpa::Image::PolyLineParametricPathToPolyDataFilter< _TPolyLineParametricPath >::
21 Self* fpa::Image::PolyLineParametricPathToPolyDataFilter< _TPolyLineParametricPath >::
24 return( new Self( ) );
27 // -------------------------------------------------------------------------
28 template< class _TPolyLineParametricPath >
30 fpa::Image::PolyLineParametricPathToPolyDataFilter< _TPolyLineParametricPath >::
31 TPolyLineParametricPath* fpa::Image::PolyLineParametricPathToPolyDataFilter< _TPolyLineParametricPath >::
34 return( this->m_PolyLineParametricPath );
37 // -------------------------------------------------------------------------
38 template< class _TPolyLineParametricPath >
39 void fpa::Image::PolyLineParametricPathToPolyDataFilter< _TPolyLineParametricPath >::
40 SetInput( const TPolyLineParametricPath* path )
42 if( this->m_PolyLineParametricPath != path )
44 this->m_PolyLineParametricPath = path;
52 // -------------------------------------------------------------------------
53 template< class _TPolyLineParametricPath >
54 fpa::Image::PolyLineParametricPathToPolyDataFilter< _TPolyLineParametricPath >::
55 PolyLineParametricPathToPolyDataFilter( )
57 : vtkPolyDataAlgorithm( ),
58 m_PolyLineParametricPath( NULL )
62 this->SetNumberOfInputPorts( 0 );
66 // -------------------------------------------------------------------------
67 template< class _TPolyLineParametricPath >
68 fpa::Image::PolyLineParametricPathToPolyDataFilter< _TPolyLineParametricPath >::
69 ~PolyLineParametricPathToPolyDataFilter( )
74 // -------------------------------------------------------------------------
75 template< class _TPolyLineParametricPath >
76 int fpa::Image::PolyLineParametricPathToPolyDataFilter< _TPolyLineParametricPath >::
78 vtkInformation* information,
79 vtkInformationVector** input,
80 vtkInformationVector* output
83 static const unsigned int dim = TPolyLineParametricPath::PathDimension;
84 if( this->m_PolyLineParametricPath == NULL )
88 vtkInformation* info = output->GetInformationObject( 0 );
89 vtkPolyData* out = vtkPolyData::SafeDownCast(
90 info->Get( vtkDataObject::DATA_OBJECT( ) )
94 out->SetPoints( vtkSmartPointer< vtkPoints >::New( ) );
95 out->SetVerts( vtkSmartPointer< vtkCellArray >::New( ) );
96 out->SetLines( vtkSmartPointer< vtkCellArray >::New( ) );
97 out->SetPolys( vtkSmartPointer< vtkCellArray >::New( ) );
98 out->SetStrips( vtkSmartPointer< vtkCellArray >::New( ) );
99 vtkSmartPointer< vtkUnsignedIntArray > darray =
100 vtkSmartPointer< vtkUnsignedIntArray >::New( );
101 darray->SetNumberOfComponents( 1 );
102 out->GetPointData( )->SetScalars( darray );
103 vtkPoints* points = out->GetPoints( );
104 vtkCellArray* lines = out->GetLines( );
107 const TPolyLineParametricPath* path = this->GetInput( );
108 for( unsigned long i = 0; i < path->GetSize( ); ++i )
110 auto pnt = path->GetPoint( i );
112 points->InsertNextPoint( pnt[ 0 ], 0, 0 );
114 points->InsertNextPoint( pnt[ 0 ], pnt[ 1 ], 0 );
116 points->InsertNextPoint( pnt[ 0 ], pnt[ 1 ], pnt[ 2 ] );
117 darray->InsertNextTuple1( double( i ) );
120 lines->InsertNextCell( 2 );
121 lines->InsertCellPoint( points->GetNumberOfPoints( ) - 2 );
122 lines->InsertCellPoint( points->GetNumberOfPoints( ) - 1 );
130 // -------------------------------------------------------------------------
131 template< class _TPolyLineParametricPath >
132 int fpa::Image::PolyLineParametricPathToPolyDataFilter< _TPolyLineParametricPath >::
134 vtkInformation* information,
135 vtkInformationVector** input,
136 vtkInformationVector* output
143 #endif // __fpa__Image__PolyLineParametricPathToPolyDataFilterFilter__hxx__