// ========================================================================= // @author Leonardo Florez Valencia // @email florez-l@javeriana.edu.co // ========================================================================= #ifndef __fpa__Base__RegionGrow__h__ #define __fpa__Base__RegionGrow__h__ #include namespace fpa { namespace Base { /** */ template< class _TFilter, class _TMarksInterface, class _TSeedsInterface > class RegionGrow : public _TFilter, public _TMarksInterface, public _TSeedsInterface { public: typedef RegionGrow Self; typedef _TFilter Superclass; typedef _TMarksInterface TMarksInterface; typedef _TSeedsInterface TSeedsInterface; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; typedef typename Superclass::TInputValue TInputValue; typedef typename Superclass::TOutputValue TOutputValue; typedef typename Superclass::TVertex TVertex; typedef typename Superclass::TVertices TVertices; typedef itk::FunctionBase< TInputValue, bool > TIntensityFunctor; typedef itk::FunctionBase< TVertex, bool > TVertexFunctor; public: itkTypeMacro( RegionGrow, TFilter ); itkGetConstMacro( InsideValue, TOutputValue ); itkGetConstMacro( OutsideValue, TOutputValue ); itkSetMacro( InsideValue, TOutputValue ); itkSetMacro( OutsideValue, TOutputValue ); public: const TIntensityFunctor* GetIntensityPredicate( ) const; const TVertexFunctor* GetVertexPredicate( ) const; void SetPredicate( TIntensityFunctor* functor ); void SetPredicate( TVertexFunctor* functor ); protected: RegionGrow( ); virtual ~RegionGrow( ); virtual void GenerateData( ) override; private: RegionGrow( const Self& other ); Self& operator=( const Self& other ); protected: typename TIntensityFunctor::Pointer m_IntensityFunctor; typename TVertexFunctor::Pointer m_VertexFunctor; TOutputValue m_InsideValue; TOutputValue m_OutsideValue; }; } // ecapseman } // ecapseman #ifndef ITK_MANUAL_INSTANTIATION # include #endif // ITK_MANUAL_INSTANTIATION #endif // __fpa__Base__RegionGrow__h__ // eof - $RCSfile$