X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2Ffpa%2FBase%2FRegionGrow.h;h=5cd36de8a2c202cea2e69ff418920fde0e2c27e2;hb=86a6d5df2aa1aa5292a5fa851d98bfc13939bdf3;hp=615059f471bdfdee457d43787b89b22c8eb743a7;hpb=56b8bb48cc05a297a3faa264f8f2a88de21ef203;p=FrontAlgorithms.git diff --git a/lib/fpa/Base/RegionGrow.h b/lib/fpa/Base/RegionGrow.h index 615059f..5cd36de 100644 --- a/lib/fpa/Base/RegionGrow.h +++ b/lib/fpa/Base/RegionGrow.h @@ -1,9 +1,9 @@ -#ifndef __FPA__BASE__REGIONGROW__H__ -#define __FPA__BASE__REGIONGROW__H__ +#ifndef __fpa__Base__RegionGrow__h__ +#define __fpa__Base__RegionGrow__h__ -#include -#include -#include +#include +#include +#include namespace fpa { @@ -21,55 +21,48 @@ namespace fpa typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; - // Template arguments - typedef typename Superclass::TVertex TVertex; - typedef typename Superclass::TScalar TScalar; - typedef typename Superclass::TFilter TFilter; - typedef typename Superclass::TVertexCompare TVertexCompare; - typedef typename Superclass::TFrontId TFrontId; - typedef typename Superclass::TCollision TCollision; - typedef typename Superclass::TCollisionsRow TCollisionsRow; - typedef typename Superclass::TCollisions TCollisions; - typedef typename Superclass::TNodeLabel TNodeLabel; - typedef typename Superclass::TNode TNode; - typedef typename Superclass::TNodes TNodes; - typedef typename Superclass::TVertices TVertices; - - typedef itk::FunctionBase< TVertex, bool > TRegionGrowFunction; + typedef typename Superclass::TOutput TOutput; + typedef typename Superclass::TVertex TVertex; + + typedef fpa::Base::RegionGrowFunctionBase< TVertex > TGrowFunction; + + protected: + typedef typename Superclass::_TQueueNode _TQueueNode; + typedef std::queue< _TQueueNode > _TQueue; public: itkTypeMacro( RegionGrow, Algorithm ); - itkGetObjectMacro( RegionGrowFunction, TRegionGrowFunction ); - itkGetConstMacro( InsideValue, TScalar ); - itkGetConstMacro( OutsideValue, TScalar ); + itkGetObjectMacro( GrowFunction, TGrowFunction ); + itkGetConstMacro( InsideValue, TOutput ); + itkGetConstMacro( OutsideValue, TOutput ); - itkSetObjectMacro( RegionGrowFunction, TRegionGrowFunction ); - itkSetMacro( InsideValue, TScalar ); - itkSetMacro( OutsideValue, TScalar ); + itkSetObjectMacro( GrowFunction, TGrowFunction ); + itkSetMacro( InsideValue, TOutput ); + itkSetMacro( OutsideValue, TOutput ); protected: - // Methods to extend itk-based architecture RegionGrow( ); virtual ~RegionGrow( ); - // Front propagation methods to be overloaded - virtual bool _Result( TNode& node, const TNode& parent ) fpa_OVERRIDE; - virtual void _QueueClear( ) fpa_OVERRIDE; - virtual void _QueuePush( const TNode& node ) fpa_OVERRIDE; - virtual TNode _QueuePop( ) fpa_OVERRIDE; - virtual bool _IsQueueEmpty( ) const fpa_OVERRIDE; + virtual bool _UpdateValue( + _TQueueNode& v, const _TQueueNode& p + ) fpa_OVERRIDE; + virtual unsigned long _QueueSize( ) const fpa_OVERRIDE; + virtual void _QueueClear( ) fpa_OVERRIDE; + virtual void _QueuePush( const _TQueueNode& node ) fpa_OVERRIDE; + virtual _TQueueNode _QueuePop( ) fpa_OVERRIDE; private: - // Purposely not implemented + // Purposely not defined RegionGrow( const Self& other ); Self& operator=( const Self& other ); protected: - std::deque< TNode > m_Queue; - typename TRegionGrowFunction::Pointer m_RegionGrowFunction; - TScalar m_InsideValue; - TScalar m_OutsideValue; + TOutput m_InsideValue; + TOutput m_OutsideValue; + _TQueue m_Queue; + typename TGrowFunction::Pointer m_GrowFunction; }; } // ecapseman @@ -78,8 +71,8 @@ namespace fpa #ifndef ITK_MANUAL_INSTANTIATION # include -#endif +#endif // ITK_MANUAL_INSTANTIATION -#endif // __FPA__BASE__REGIONGROW__H__ +#endif // __fpa__Base__RegionGrow__h__ // eof - $RCSfile$