]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Base/SeedsInterface.h
...
[FrontAlgorithms.git] / lib / fpa / Base / SeedsInterface.h
1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
5
6 #ifndef __fpa__Base__SeedsInterface__h__
7 #define __fpa__Base__SeedsInterface__h__
8
9 #include <fpa/Config.h>
10 #include <itkConceptChecking.h>
11 #include <itkProcessObject.h>
12
13 namespace fpa
14 {
15   namespace Base
16   {
17     /**
18      */
19     template< class _TTraits >
20     class SeedsInterface
21     {
22     public:
23       typedef SeedsInterface Self;
24       typedef _TTraits       TTraits;
25       fpa_Base_TraitTypes( typename TTraits );
26
27     private:
28       itkConceptMacro(
29         Check_TFrontId,
30         ( itk::Concept::IsUnsignedInteger< TFrontId > )
31         );
32
33     public:
34       TSeeds& GetSeeds( );
35       const TSeeds& GetSeeds( ) const;
36
37       virtual void AddSeed( const TVertex& seed );
38       virtual void AddSeed( const TPoint& seed );
39       virtual void ClearSeeds( );
40
41     protected:
42       SeedsInterface( itk::ProcessObject* filter );
43       virtual ~SeedsInterface( );
44
45       virtual TNodes _UnifySeeds( ) = 0;
46       virtual void _PrepareSeeds( TNodes& nodes ) = 0;
47
48     protected:
49       TSeeds m_Seeds;
50       itk::ProcessObject* m_Filter;
51     };
52
53   } // ecapseman
54
55 } // ecapseman
56
57 #ifndef ITK_MANUAL_INSTANTIATION
58 #  include <fpa/Base/SeedsInterface.hxx>
59 #endif // ITK_MANUAL_INSTANTIATION
60
61 #endif // __fpa__Base__SeedsInterface__h__
62
63 // eof - $RCSfile$