#ifndef __FPA__BASE__EXTRACTBRANCHESFROMMINIMUMSPANNINGTREE__H__ #define __FPA__BASE__EXTRACTBRANCHESFROMMINIMUMSPANNINGTREE__H__ #include #include #include namespace fpa { namespace Base { /** */ template< class T > class ExtractBranchesFromMinimumSpanningTree : public itk::ProcessObject { public: typedef ExtractBranchesFromMinimumSpanningTree Self; typedef itk::ProcessObject Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; typedef T TMinimumSpanningTree; typedef typename T::TVertex TVertex; typedef typename T::TVertexCompare TVertexCompare; typedef fpa::Base::MatrixValuesContainer< TVertex, bool, TVertexCompare > TBranches; typedef std::set< TVertex, TVertexCompare > TEndPoints; public: itkNewMacro( Self ); itkTypeMacro( ExtractBranchesFromMinimumSpanningTree, itk::ProcessObject ); public: const T* GetInput( ) const; void SetInput( const T* tree ); TBranches* GetOutput( ); void ClearEndPoints( ); void AddEndPoint( const TVertex& v ); bool HasEndPoint( const TVertex& v ) const; unsigned long GetNumberOfEndPoints( ) const; protected: ExtractBranchesFromMinimumSpanningTree( ); virtual ~ExtractBranchesFromMinimumSpanningTree( ); virtual void GenerateData( ); private: // Purposely not implemented ExtractBranchesFromMinimumSpanningTree( const Self& other ); Self& operator=( const Self& other ); protected: TEndPoints m_EndPoints; }; } // ecapseman } // ecapseman #include #endif // __FPA__BASE__EXTRACTBRANCHESFROMMINIMUMSPANNINGTREE__H__ // eof - $RCSfile$