#ifndef __fpa__Image__Algorithm__h__ #define __fpa__Image__Algorithm__h__ #include #include #include #include namespace fpa { namespace Image { /** */ template< class _TInputImage, class _TOutputImage > class Algorithm : public fpa::Base::Algorithm< itk::ImageToImageFilter< _TInputImage, _TOutputImage >, typename _TInputImage::IndexType, typename _TOutputImage::PixelType > { public: typedef itk::ImageToImageFilter< _TInputImage, _TOutputImage > TFilter; typedef typename _TInputImage::IndexType TVertex; typedef typename _TOutputImage::PixelType TOutput; typedef Algorithm Self; typedef fpa::Base::Algorithm< TFilter, TVertex, TOutput > Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; typedef typename Superclass::TFrontId TFrontId; typedef typename Superclass::TNeighborhood TNeighborhood; typedef fpa::Image::Functors::Base< itk::ImageBase< _TInputImage::ImageDimension >, itk::FunctionBase< TVertex, TNeighborhood > > TNeighborhoodFunction; protected: typedef typename Superclass::_TQueueNode _TQueueNode; public: itkTypeMacro( fpa::Image::Algorithm, fpa::Base::Algorithm ); protected: Algorithm( ); virtual ~Algorithm( ); virtual void _BeforeGenerateData( ) override; virtual void _InitMarks( ) override; virtual void _InitResults( const TOutput& init_value ) override; virtual bool _IsMarked( const TVertex& v ) const override; virtual void _Mark( const _TQueueNode& n ) override; virtual TFrontId _GetMark( const TVertex& v ) const override; virtual void _UpdateResult( const _TQueueNode& n ) override; private: // Purposely not defined Algorithm( const Self& other ); Self& operator=( const Self& other ); protected: unsigned int m_MarksIdx; }; } // ecapseman } // ecapseman #ifndef ITK_MANUAL_INSTANTIATION # include #endif // ITK_MANUAL_INSTANTIATION #endif // __fpa__Image__Algorithm__h__ // eof - $RCSfile$