1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
6 #ifndef __fpa__Base__SeedsInterface__h__
7 #define __fpa__Base__SeedsInterface__h__
9 #include <fpa/Config.h>
10 #include <itkConceptChecking.h>
11 #include <itkProcessObject.h>
25 template< class _TTraits >
29 typedef SeedsInterface Self;
30 typedef _TTraits TTraits;
31 fpa_Base_TraitTypes( typename TTraits );
34 typedef _TVertex TVertex;
35 typedef _TPoint TPoint;
36 typedef _TInputValue TInputValue;
37 typedef _TOutputValue TOutputValue;
38 typedef _TFrontId TFrontId;
39 typedef _TCompare TCompare;
40 typedef SeedsInterface Self;
51 FrontId( TFrontId( 0 ) )
54 typedef std::vector< TSeed > TSeeds;
62 // Hack to hide the fact that seed values need to be initialized
63 mutable TOutputValue Value;
67 bool operator()( const TNode& a, const TNode& b ) const
70 return( cmp( a.Vertex, b.Vertex ) );
73 typedef std::set< TNode, TNodeCompare > TNodes;
79 ( itk::Concept::IsUnsignedInteger< _TFrontId > )
84 const TSeeds& GetSeeds( ) const;
86 virtual void AddSeed( const TVertex& seed );
87 virtual void AddSeed( const TPoint& seed );
88 virtual void ClearSeeds( );
91 SeedsInterface( itk::ProcessObject* filter );
92 virtual ~SeedsInterface( );
94 virtual TNodes _UnifySeeds( ) = 0;
95 virtual void _PrepareSeeds( TNodes& nodes ) = 0;
99 itk::ProcessObject* m_Filter;
106 #ifndef ITK_MANUAL_INSTANTIATION
107 # include <fpa/Base/SeedsInterface.hxx>
108 #endif // ITK_MANUAL_INSTANTIATION
110 #endif // __fpa__Base__SeedsInterface__h__