+++ /dev/null
-// =========================================================================
-// @author Leonardo Florez Valencia
-// @email florez-l@javeriana.edu.co
-// =========================================================================
-
-#ifndef __fpa__Base__SeedsInterface__h__
-#define __fpa__Base__SeedsInterface__h__
-
-#include <functional>
-#include <set>
-#include <vector>
-
-#include <itkConceptChecking.h>
-#include <itkProcessObject.h>
-
-namespace fpa
-{
- namespace Base
- {
- /**
- */
- template< class _TVertex, class _TPoint, class _TInputValue, class _TOutputValue, class _TFrontId, class _TCompare = std::greater< _TVertex > >
- class SeedsInterface
- {
- public:
- itkConceptMacro(
- Check_TFrontId,
- ( itk::Concept::IsUnsignedInteger< _TFrontId > )
- );
-
- public:
- typedef _TVertex TVertex;
- typedef _TPoint TPoint;
- typedef _TInputValue TInputValue;
- typedef _TOutputValue TOutputValue;
- typedef _TFrontId TFrontId;
- typedef _TCompare TCompare;
- typedef SeedsInterface Self;
-
- struct TSeed
- {
- TVertex Vertex;
- TPoint Point;
- bool IsPoint;
- bool IsUnified;
- TFrontId FrontId;
- TSeed( )
- : IsUnified( false ),
- FrontId( TFrontId( 0 ) )
- { }
- };
- typedef std::vector< TSeed > TSeeds;
-
- struct TNode
- {
- TVertex Vertex;
- TVertex Parent;
- TFrontId FrontId;
-
- // Hack to hide the fact that seed values need to be initialized
- mutable TOutputValue Value;
- };
- struct TNodeCompare
- {
- bool operator()( const TNode& a, const TNode& b ) const
- {
- TCompare cmp;
- return( cmp( a.Vertex, b.Vertex ) );
- }
- };
- typedef std::set< TNode, TNodeCompare > TNodes;
-
- public:
- TSeeds& GetSeeds( );
- const TSeeds& GetSeeds( ) const;
-
- virtual void AddSeed( const TVertex& seed );
- virtual void AddSeed( const TPoint& seed );
- virtual void ClearSeeds( );
-
- protected:
- SeedsInterface( itk::ProcessObject* filter );
- virtual ~SeedsInterface( );
-
- virtual TNodes _UnifySeeds( ) = 0;
- virtual void _PrepareSeeds( TNodes& nodes ) = 0;
-
- protected:
- TSeeds m_Seeds;
- itk::ProcessObject* m_Filter;
- };
-
- } // ecapseman
-
-} // ecapseman
-
-#ifndef ITK_MANUAL_INSTANTIATION
-# include <fpa/Base/SeedsInterface.hxx>
-#endif // ITK_MANUAL_INSTANTIATION
-
-#endif // __fpa__Base__SeedsInterface__h__
-
-// eof - $RCSfile$