X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2Ffpa%2FBase%2FMinimumSpanningTree.h;h=03940f140a18300af6866b9b9b1ffbb519600f48;hb=2b43395480bf95d0b399ded56aa272768bbc074a;hp=ec744e69a10229753e96a55ab27d8114b81ad769;hpb=db33ebb226fd58f493b7db245fc8b807f895ee6e;p=FrontAlgorithms.git diff --git a/lib/fpa/Base/MinimumSpanningTree.h b/lib/fpa/Base/MinimumSpanningTree.h index ec744e6..03940f1 100644 --- a/lib/fpa/Base/MinimumSpanningTree.h +++ b/lib/fpa/Base/MinimumSpanningTree.h @@ -1,8 +1,10 @@ -#ifndef __FPA__BASE__MINIMUMSPANNINGTREE__H__ -#define __FPA__BASE__MINIMUMSPANNINGTREE__H__ +#ifndef __fpa__Base__MinimumSpanningTree__h__ +#define __fpa__Base__MinimumSpanningTree__h__ +#include #include -#include +#include +#include namespace fpa { @@ -10,60 +12,69 @@ namespace fpa { /** */ - template< class V, class C, class B > + template< class _TVertex, class _TPath, class _TSuperclass > class MinimumSpanningTree - : public B + : public _TSuperclass { public: typedef MinimumSpanningTree Self; - typedef B Superclass; + typedef _TSuperclass Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; - typedef V TVertex; - typedef C TCollisions; + typedef _TVertex TVertex; + typedef _TPath TPath; + typedef std::pair< _TVertex, bool > TCollision; + typedef std::vector< TCollision > TCollisionsRow; + typedef std::vector< TCollisionsRow > TCollisions; protected: typedef std::vector< unsigned long > _TRow; typedef std::vector< _TRow > _TMatrix; public: - itkTypeMacro( MinimumSpanningTree, B ); - - itkGetConstMacro( Collisions, TCollisions ); + itkTypeMacro( MinimumSpanningTree, _TSuperclass ); public: + const TCollisions& GetCollisions( ) const; void SetCollisions( const TCollisions& collisions ); + void ClearSeeds( ); + void AddSeed( const _TVertex& seed ); + + virtual _TVertex GetParent( const _TVertex& v ) const = 0; + virtual void SetParent( const _TVertex& v, const _TVertex& p ) = 0; + virtual void GetPath( - std::vector< V >& path, const V& a, const V& b + typename _TPath::Pointer& path, const _TVertex& a + ) const; + virtual void GetPath( + typename _TPath::Pointer& path, const _TVertex& a, const _TVertex& b ) const; protected: MinimumSpanningTree( ); virtual ~MinimumSpanningTree( ); - virtual void _Path( std::vector< V >& path, const V& a ) const; - virtual long _FrontId( const V& v ) const = 0; - virtual V _Parent( const V& v ) const = 0; - private: - // Purposely not implemented + // Purposely not defined MinimumSpanningTree( const Self& other ); Self& operator=( const Self& other ); protected: TCollisions m_Collisions; _TMatrix m_FrontPaths; - static const unsigned long INF_VALUE; + std::vector< _TVertex > m_Seeds; }; } // ecapseman } // ecapseman -#include +#ifndef ITK_MANUAL_INSTANTIATION +# include +#endif // ITK_MANUAL_INSTANTIATION -#endif // __FPA__BASE__MINIMUMSPANNINGTREE__H__ +#endif // __fpa__Base__MinimumSpanningTree__h__ // eof - $RCSfile$