X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2Ffpa%2FBase%2FAlgorithm.h;h=8750c5f7fb2360e2ac3afc44df84ec01d6414bb0;hb=ed2108383e59a45c6fa2e9259a27256a93d8aa6a;hp=29026288e4b6a6db486ae7ade2761637de9560b9;hpb=60785c9e18cab1a338f1ce54551e97a5ddfabac1;p=FrontAlgorithms.git diff --git a/lib/fpa/Base/Algorithm.h b/lib/fpa/Base/Algorithm.h index 2902628..8750c5f 100644 --- a/lib/fpa/Base/Algorithm.h +++ b/lib/fpa/Base/Algorithm.h @@ -6,12 +6,12 @@ #ifndef __fpa__Base__Algorithm__h__ #define __fpa__Base__Algorithm__h__ +#include + #include #include -/* TODO - #include - #include -*/ +#include + namespace fpa { namespace Base @@ -32,26 +32,75 @@ namespace fpa typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; - typedef typename _TMarksInterface::TOutputValue TOutputValue; + typedef typename _TSeedsInterface::TInputValue TInputValue; + typedef typename _TSeedsInterface::TOutputValue TOutputValue; typedef typename _TSeedsInterface::TNode TNode; + typedef typename _TSeedsInterface::TNodes TNodes; typedef typename _TSeedsInterface::TSeeds TSeeds; + typedef typename _TSeedsInterface::TVertex TVertex; + + typedef std::vector< TVertex > TNeighborhood; + + /** + */ + class TEvent + : public itk::EventObject + { + public: + typedef TEvent Self; + typedef itk::EventObject Superclass; - typedef std::vector< TNode > TNeighborhood; + public: + TEvent( ); + TEvent( const TVertex& v, unsigned long fid, bool intoq ); + virtual ~TEvent( ); + virtual const char* GetEventName( ) const override; + virtual bool CheckEvent( const itk::EventObject* e ) const override; + virtual itk::EventObject* MakeObject( ) const override; + + private: + // Purposely not implemented. + Self& operator=( const Self& other ); + + public: + TVertex Vertex; + unsigned long FrontId; + bool IntoQueue; + }; public: itkTypeMacro( fpa::Base::Algorithm, _TFilter ); - + + itkBooleanMacro( VisualDebug ); + itkGetConstMacro( InitValue, TOutputValue ); + itkGetConstMacro( VisualDebug, bool ); + itkSetMacro( InitValue, TOutputValue ); + itkSetMacro( VisualDebug, bool ); + + public: + virtual void InvokeEvent( const itk::EventObject& e ); + virtual void InvokeEvent( const itk::EventObject& e ) const; protected: Algorithm( ); virtual ~Algorithm( ); virtual void GenerateData( ) override; + virtual void _BeforeGenerateData( ); + virtual void _AfterGenerateData( ); + + virtual void _QueueInit( ); virtual void _ConfigureOutput( const TOutputValue& v ) = 0; - virtual void _QueueInit( ) = 0; + virtual TNeighborhood _GetNeighbors( const TVertex& v ) const = 0; + virtual TInputValue _GetInputValue( const TVertex& v ) const = 0; + virtual TOutputValue _GetOutputValue( const TVertex& v ) const = 0; + + virtual TOutputValue _ComputeOutputValue( const TNode& n ) = 0; + virtual void _UpdateOutputValue( const TNode& n ) = 0; + virtual void _QueueClear( ) = 0; virtual void _QueuePush( const TNode& node ) = 0; virtual unsigned long _QueueSize( ) const = 0; virtual TNode _QueuePop( ) = 0; @@ -62,6 +111,7 @@ namespace fpa Self& operator=( const Self& other ); protected: + bool m_VisualDebug; TOutputValue m_InitValue; };