1 #ifndef __FPA__BASE__REGIONGROW__H__
2 #define __FPA__BASE__REGIONGROW__H__
6 #include <fpa/Base/Algorithm.h>
14 template< class V, class R, class VV, class VC >
15 class RegionGrowTraits
20 typedef VV TVertexValue;
21 typedef VC TVertexCmp;
24 typedef long TFrontId;
31 TNode( const TVertex& v, const TFrontId& f )
36 TNode( const TVertex& v, const TResult& r, const TFrontId& f )
51 typedef std::vector< TNode > TNodes;
55 * Region grow is a front propagation with no costs.
57 template< class V, class R, class VV, class VC, class B >
59 : public Algorithm< RegionGrowTraits< V, R, VV, VC >, B >
64 typedef VV TVertexValue;
65 typedef B TBaseFilter;
67 /// Standard class typdedefs
68 typedef RegionGrowTraits< V, R, VV, VC > TTraits;
69 typedef RegionGrow Self;
70 typedef Algorithm< TTraits, B > Superclass;
71 typedef itk::SmartPointer< Self > Pointer;
72 typedef itk::SmartPointer< const Self > ConstPointer;
74 typedef typename TTraits::TCost TCost;
77 typedef typename TTraits::TFrontId _TFrontId;
78 typedef typename TTraits::TNode _TNode;
79 typedef typename TTraits::TNodes _TNodes;
82 typedef std::queue< _TNode > _TQueue;
85 itkTypeMacro( RegionGrow, Base );
89 virtual ~RegionGrow( );
91 virtual bool _UpdateResult ( _TNode& n );
92 virtual void _InitializeQueue ( );
93 virtual bool _IsQueueEmpty ( ) const;
94 virtual void _QueuePush ( const _TNode& n );
95 virtual _TNode _QueuePop ( );
96 virtual void _QueueClear ( );
97 virtual bool _UpdateNeigh ( _TNode& nn, const _TNode& n );
99 virtual bool _CheckMembership( const _TNode& n ) const = 0;
102 RegionGrow( const Self& ); // Not impl.
103 void operator=( const Self& ); // Not impl.
113 #include <fpa/Base/RegionGrow.hxx>
115 #endif // __FPA__BASE__REGIONGROW__H__