]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Filters/MarksWithCollisionsInterface.h
18e13636493617d8929416f304ce374bb6616816
[FrontAlgorithms.git] / lib / fpa / Filters / MarksWithCollisionsInterface.h
1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
5 #ifndef __fpa__Filters__MarksWithCollisionsInterface__h__
6 #define __fpa__Filters__MarksWithCollisionsInterface__h__
7
8 #include <utility>
9 #include <vector>
10 #include <fpa/Filters/MarksInterface.h>
11
12 namespace fpa
13 {
14   namespace Filters
15   {
16     /**
17      */
18     template< class _TTraits >
19     class MarksWithCollisionsInterface
20       : public fpa::Filters::MarksInterface< _TTraits >
21     {
22     public:
23       typedef MarksWithCollisionsInterface Self;
24       typedef fpa::Filters::MarksInterface< _TTraits > Superclass;
25       typedef _TTraits TTraits;
26       fpaInternalTraitsMacro( typename, TTraits );
27
28       // Minigraph to represent collisions
29       typedef std::pair< TVertex, bool >    TCollision;
30       typedef std::vector< TCollision >     TCollisionsRow;
31       typedef std::vector< TCollisionsRow > TCollisions;
32
33     public:
34       MarksWithCollisionsInterface( itk::ProcessObject* f );
35       virtual ~MarksWithCollisionsInterface( );
36
37       bool StopAtOneFront( ) const;
38       void StopAtOneFrontOn( );
39       void StopAtOneFrontOff( );
40       void SetStopAtOneFront( bool v );
41
42     protected:
43       virtual void _InitCollisions( unsigned long nSeeds ) override;
44       virtual bool _Collisions( const TVertex& a, const TVertex& b ) override;
45
46     protected:
47       bool         m_StopAtOneFront;
48       TCollisions  m_Collisions;
49       unsigned int m_NumberOfFronts;
50       unsigned int m_NumberOfSeeds;
51     };
52
53   } // ecapseman
54
55 } // ecapseman
56
57 #ifndef ITK_MANUAL_INSTANTIATION
58 #  include <fpa/Filters/MarksWithCollisionsInterface.hxx>
59 #endif // ITK_MANUAL_INSTANTIATION
60
61 #endif // __fpa__Filters__MarksWithCollisionsInterface__h__
62 // eof - $RCSfile$