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;
80 typedef std::queue< _TNode > _TQueue;
83 itkTypeMacro( RegionGrow, Algorithm );
87 virtual ~RegionGrow( );
89 virtual bool _UpdateResult ( _TNode& n );
90 virtual void _InitializeQueue ( );
91 virtual bool _IsQueueEmpty ( ) const;
92 virtual void _QueuePush ( const _TNode& n );
93 virtual _TNode _QueuePop ( );
94 virtual void _QueueClear ( );
95 virtual bool _UpdateNeigh ( _TNode& nn, const _TNode& n );
97 virtual bool _CheckMembership( const _TNode& n ) const = 0;
100 RegionGrow( const Self& ); // Not impl.
101 void operator=( const Self& ); // Not impl.
111 #include <fpa/Base/RegionGrow.hxx>
113 #endif // __FPA__BASE__REGIONGROW__H__