]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Base/RegionGrowWithMultipleCriteria.hxx
Some more debug... almost there
[FrontAlgorithms.git] / lib / fpa / Base / RegionGrowWithMultipleCriteria.hxx
1 #ifndef __FPA__BASE__REGIONGROWWITHMULTIPLECRITERIA__HXX__
2 #define __FPA__BASE__REGIONGROWWITHMULTIPLECRITERIA__HXX__
3
4 // -------------------------------------------------------------------------
5 template< class V, class R, class VV, class VC, class B >
6 unsigned int fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >::
7 GetNumberOfMembershipFunctions( ) const
8 {
9   return( this->m_Functions.size( ) );
10 }
11
12 // -------------------------------------------------------------------------
13 template< class V, class R, class VV, class VC, class B >
14 void fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >::
15 ClearMembershipFunctions( )
16 {
17   this->m_Functions.clear( );
18   this->Modified( );
19 }
20
21 // -------------------------------------------------------------------------
22 template< class V, class R, class VV, class VC, class B >
23 void fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >::
24 AddMembershipFunction( TMembershipFunction* function )
25 {
26   this->m_Functions.push_back( function );
27   this->Modified( );
28 }
29
30 // -------------------------------------------------------------------------
31 template< class V, class R, class VV, class VC, class B >
32 fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >::
33 RegionGrowWithMultipleCriteria( )
34   : Superclass( )
35 {
36 }
37
38 // -------------------------------------------------------------------------
39 template< class V, class R, class VV, class VC, class B >
40 fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >::
41 ~RegionGrowWithMultipleCriteria( )
42 {
43 }
44
45 // -------------------------------------------------------------------------
46 template< class V, class R, class VV, class VC, class B >
47 void fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >::
48 _BeforeLoop( )
49 {
50   this->Superclass::_BeforeLoop( );
51   this->m_ActualFunction = this->m_Functions.begin( );
52 }
53
54 // -------------------------------------------------------------------------
55 template< class V, class R, class VV, class VC, class B >
56 typename fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >::
57 _TNode fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >::
58 _QueuePop( )
59 {
60   _TNode node = this->Superclass::_QueuePop( );
61   if( this->_IsQueueEmpty( ) )
62   {
63     // Replace queue
64     this->m_Queue = this->m_AuxiliaryQueue;
65
66     // Move to next function
67     this->m_ActualFunction++;
68
69   } // fi
70   return( node );
71 }
72
73 // -------------------------------------------------------------------------
74 template< class V, class R, class VV, class VC, class B >
75 bool fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >::
76 _CheckMembership( const _TNode& n ) const
77 {
78   if( this->m_ActualFunction != this->m_Functions.end( ) )
79   {
80     bool ret = ( *( this->m_ActualFunction ) )->Evaluate( n.Vertex );
81     if( !ret )
82       this->m_AuxiliaryQueue.push( n );
83     return( ret );
84   }
85   else
86     return( false );
87 }
88
89 #endif // __FPA__BASE__REGIONGROWWITHMULTIPLECRITERIA__HXX__
90
91 // eof - $RCSfile$