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__
12 #include <itkConceptChecking.h>
13 #include <itkProcessObject.h>
21 template< class _TVertex, class _TInputValue, class _TOutputValue, class _TFrontId, class _TCompare = std::greater< _TVertex > >
27 ( itk::Concept::IsUnsignedInteger< _TFrontId > )
31 typedef _TVertex TVertex;
32 typedef _TInputValue TInputValue;
33 typedef _TOutputValue TOutputValue;
34 typedef _TFrontId TFrontId;
35 typedef _TCompare TCompare;
36 typedef SeedsInterface Self;
44 // Hack to hide the fact that seed values need to be initialized
45 mutable TOutputValue Value;
49 bool operator()( const TNode& a, const TNode& b ) const
52 return( cmp( a.Vertex, b.Vertex ) );
55 typedef std::set< TNode, TNodeCompare > TSeeds;
58 unsigned int GetNumberOfSeeds( ) const;
59 const TSeeds& GetSeeds( ) const;
60 typename TSeeds::const_iterator BeginSeeds( ) const;
61 typename TSeeds::const_iterator EndSeeds( ) const;
63 virtual void AddSeed( const TVertex& seed );
64 virtual void RemoveSeed( const TVertex& seed );
65 virtual void ClearSeeds( );
68 SeedsInterface( itk::ProcessObject* filter );
69 virtual ~SeedsInterface( );
73 itk::ProcessObject* m_Filter;
80 #ifndef ITK_MANUAL_INSTANTIATION
81 # include <fpa/Base/SeedsInterface.hxx>
82 #endif // ITK_MANUAL_INSTANTIATION
84 #endif // __fpa__Base__SeedsInterface__h__