1 #ifndef __fpa__Base__RegionGrow__h__
2 #define __fpa__Base__RegionGrow__h__
5 #include <fpa/Base/QueueAlgorithm.h>
6 #include <fpa/Base/Functors/RegionGrow/Base.h>
14 template< class _TSuperclass >
16 : public fpa::Base::QueueAlgorithm< _TSuperclass >
19 typedef RegionGrow Self;
20 typedef fpa::Base::QueueAlgorithm< _TSuperclass > Superclass;
21 typedef itk::SmartPointer< Self > Pointer;
22 typedef itk::SmartPointer< const Self > ConstPointer;
24 typedef typename Superclass::TOutput TOutput;
25 typedef typename Superclass::TVertex TVertex;
26 typedef fpa::Base::Functors::RegionGrow::Base< TVertex, TOutput > TGrowFunction;
29 typedef typename Superclass::_TQueueNode _TQueueNode;
32 itkTypeMacro( RegionGrow, Algorithm );
35 TGrowFunction* GetGrowFunction( );
36 const TGrowFunction* GetGrowFunction( ) const;
37 TOutput GetInsideValue( ) const;
38 TOutput GetOutsideValue( ) const;
40 void SetGrowFunction( TGrowFunction* f );
41 void SetInsideValue( const TOutput& v );
42 void SetOutsideValue( const TOutput& v );
46 virtual ~RegionGrow( );
48 virtual bool _UpdateValue(
49 _TQueueNode& v, const _TQueueNode& p
51 virtual TOutput _GetInputValue( const _TQueueNode& v, const _TQueueNode& p ) override
53 TOutput res = this->m_InitResult;
54 if( this->m_GrowFunction.IsNotNull( ) )
55 res = this->m_GrowFunction->Evaluate( v.Vertex, p.Vertex );
61 // Purposely not defined
62 RegionGrow( const Self& other );
63 Self& operator=( const Self& other );
66 typename TGrowFunction::Pointer m_GrowFunction;
73 #ifndef ITK_MANUAL_INSTANTIATION
74 # include <fpa/Base/RegionGrow.hxx>
75 #endif // ITK_MANUAL_INSTANTIATION
77 #endif // __fpa__Base__RegionGrow__h__