#ifndef __FPA__VTK__IMAGE__PATHTOPOLYDATAFILTER__H__ #define __FPA__VTK__IMAGE__PATHTOPOLYDATAFILTER__H__ #include #include namespace fpa { namespace VTK { namespace Image { /** */ template< class _TMinimumSpanningTree > class PathToPolyDataFilter : public vtkPolyDataAlgorithm { public: typedef PathToPolyDataFilter Self; typedef _TMinimumSpanningTree TMinimumSpanningTree; typedef typename TMinimumSpanningTree::TVertex TVertex; typedef itk::ImageBase< TVertex::Dimension > TImage; public: vtkTypeMacro( PathToPolyDataFilter, vtkPolyDataAlgorithm ); vtkGetMacro( Seed0, TVertex ); vtkGetMacro( Seed1, TVertex ); vtkSetMacro( Seed0, TVertex ); vtkSetMacro( Seed1, TVertex ); public: static Self* New( ); const TMinimumSpanningTree* GetMinimumSpanningTree( ) const; const TImage* GetImage( ) const; void SetMinimumSpanningTree( const TMinimumSpanningTree* mst ); void SetImage( const TImage* image ); protected: PathToPolyDataFilter( ); virtual ~PathToPolyDataFilter( ); int RequestData( vtkInformation* information, vtkInformationVector** input, vtkInformationVector* output ); int RequestInformation( vtkInformation* information, vtkInformationVector** input, vtkInformationVector* output ); virtual void _PrepareOutput( vtkPolyData* out ); private: // Purposely not implemented PathToPolyDataFilter( const Self& ); void operator=( const Self& ); protected: const TMinimumSpanningTree* m_MST; const TImage* m_Image; TVertex Seed0; TVertex Seed1; }; } // ecapseman } // ecapseman } // ecapseman #ifndef ITK_MANUAL_INSTANTIATION # include #endif // ITK_MANUAL_INSTANTIATION #endif // __FPA__VTK__IMAGE__PATHTOPOLYDATAFILTER__H__ // eof - $RCSfile$