1 #ifndef __FPA__BASE__REGIONGROW__H__
2 #define __FPA__BASE__REGIONGROW__H__
5 #include <itkFunctionBase.h>
6 #include <fpa/Base/Algorithm.h>
14 template< class _TSuperclass >
19 typedef RegionGrow Self;
20 typedef _TSuperclass Superclass;
21 typedef itk::SmartPointer< Self > Pointer;
22 typedef itk::SmartPointer< const Self > ConstPointer;
25 typedef typename Superclass::TVertex TVertex;
26 typedef typename Superclass::TScalar TScalar;
27 typedef typename Superclass::TFilter TFilter;
28 typedef typename Superclass::TVertexCompare TVertexCompare;
29 typedef typename Superclass::TFrontId TFrontId;
30 typedef typename Superclass::TCollision TCollision;
31 typedef typename Superclass::TCollisionsRow TCollisionsRow;
32 typedef typename Superclass::TCollisions TCollisions;
33 typedef typename Superclass::TNodeLabel TNodeLabel;
34 typedef typename Superclass::TNode TNode;
35 typedef typename Superclass::TNodes TNodes;
36 typedef typename Superclass::TVertices TVertices;
38 typedef itk::FunctionBase< TVertex, bool > TRegionGrowFunction;
41 itkTypeMacro( RegionGrow, Algorithm );
43 itkGetObjectMacro( RegionGrowFunction, TRegionGrowFunction );
44 itkGetConstMacro( InsideValue, TScalar );
45 itkGetConstMacro( OutsideValue, TScalar );
47 itkSetObjectMacro( RegionGrowFunction, TRegionGrowFunction );
48 itkSetMacro( InsideValue, TScalar );
49 itkSetMacro( OutsideValue, TScalar );
52 // Methods to extend itk-based architecture
54 virtual ~RegionGrow( );
56 // Front propagation methods to be overloaded
57 virtual bool _Result( TNode& node, const TNode& parent ) fpa_OVERRIDE;
58 virtual void _QueueClear( ) fpa_OVERRIDE;
59 virtual void _QueuePush( const TNode& node ) fpa_OVERRIDE;
60 virtual TNode _QueuePop( ) fpa_OVERRIDE;
61 virtual bool _IsQueueEmpty( ) const fpa_OVERRIDE;
64 // Purposely not implemented
65 RegionGrow( const Self& other );
66 Self& operator=( const Self& other );
69 std::deque< TNode > m_Queue;
70 typename TRegionGrowFunction::Pointer m_RegionGrowFunction;
71 TScalar m_InsideValue;
72 TScalar m_OutsideValue;
79 #ifndef ITK_MANUAL_INSTANTIATION
80 # include <fpa/Base/RegionGrow.hxx>
83 #endif // __FPA__BASE__REGIONGROW__H__