]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Base/IncrementalRegionGrow.hxx
...
[FrontAlgorithms.git] / lib / fpa / Base / IncrementalRegionGrow.hxx
1 #ifndef __FPA__BASE__INCREMENTALREGIONGROW__HXX__
2 #define __FPA__BASE__INCREMENTALREGIONGROW__HXX__
3
4 // -------------------------------------------------------------------------
5 template< class V, class R, class VV, class VC, class B >
6 typename fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >::
7 TGrowingFunction* fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >::
8 GetGrowingFunction( unsigned int i )
9 {
10   if( i < this->m_Functions.size( ) )
11     return( this->m_Functions[ i ] );
12   else
13     return( NULL );
14 }
15
16 // -------------------------------------------------------------------------
17 template< class V, class R, class VV, class VC, class B >
18 const typename fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >::
19 TGrowingFunction* fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >::
20 GetGrowingFunction( unsigned int i ) const
21 {
22   if( i < this->m_Functions.size( ) )
23     return( this->m_Functions[ i ] );
24   else
25     return( NULL );
26 }
27
28 // -------------------------------------------------------------------------
29 template< class V, class R, class VV, class VC, class B >
30 unsigned long fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >::
31 GetGrowingFunctionVolume( unsigned int i ) const
32 {
33   if( i < this->m_Volumes.size( ) )
34     return( this->m_Volumes[ i ] );
35   else
36     return( NULL );
37 }
38
39 // -------------------------------------------------------------------------
40 template< class V, class R, class VV, class VC, class B >
41 unsigned int fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >::
42 GetNumberOfGrowingFunctions( ) const
43 {
44   return( this->m_Functions.size( ) );
45 }
46
47 // -------------------------------------------------------------------------
48 template< class V, class R, class VV, class VC, class B >
49 void fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >::
50 ClearGrowingFunctions( )
51 {
52   this->m_Functions.clear( );
53   this->m_Volumes.clear( );
54   this->Modified( );
55 }
56
57 // -------------------------------------------------------------------------
58 template< class V, class R, class VV, class VC, class B >
59 unsigned int fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >::
60 AddGrowingFunction( TGrowingFunction* function )
61 {
62   this->m_Functions.push_back( function );
63   this->m_Volumes.push_back( 0 );
64   this->Modified( );
65 }
66
67 // -------------------------------------------------------------------------
68 template< class V, class R, class VV, class VC, class B >
69 fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >::
70 IncrementalRegionGrow( )
71   : Superclass( )
72 {
73 }
74
75 // -------------------------------------------------------------------------
76 template< class V, class R, class VV, class VC, class B >
77 fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >::
78 ~IncrementalRegionGrow( )
79 {
80 }
81
82 // -------------------------------------------------------------------------
83 template< class V, class R, class VV, class VC, class B >
84 void fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >::
85 _BeforeGenerateData( )
86 {
87   this->Superclass::_BeforeGenerateData( );
88   this->m_ActualFunction = 0;
89 }
90
91 // -------------------------------------------------------------------------
92 template< class V, class R, class VV, class VC, class B >
93 void fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >::
94 _AfterLoop( )
95 {
96   /* TODO
97   this->Superclass::_AfterLoop( );
98
99   // Replace queue
100   this->_QueueClear( );
101   while( !( this->m_AuxiliaryQueue.empty( ) ) )
102   {
103     // Get node
104     _TNode node = this->m_AuxiliaryQueue.front( );
105     this->m_AuxiliaryQueue.pop( );
106     this->_QueuePush( node );
107
108     // Unmark it
109     typename _TMarks::iterator mIt = this->m_Marks.find( node.Vertex );
110     if( mIt != this->m_Marks.end( ) )
111       this->m_Marks.erase( mIt );
112
113   } // elihw
114
115   // Move to next function
116   this->m_ActualFunction++;
117   */
118 }
119
120 // -------------------------------------------------------------------------
121 template< class V, class R, class VV, class VC, class B >
122 void fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >::
123 _Loop( )
124 {
125   while( this->m_ActualFunction < this->m_Functions.size( ) )
126     this->Superclass::_Loop( );
127 }
128
129 // -------------------------------------------------------------------------
130 template< class V, class R, class VV, class VC, class B >
131 bool fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >::
132 _CheckMembership( const TVertex& v ) const
133 {
134   /* TODO
135
136   if( this->m_ActualFunction < this->m_Functions.size( ) )
137   {
138     bool ret =
139       this->m_Functions[ this->m_ActualFunction ]->Evaluate( v );
140     if( !ret )
141       this->m_AuxiliaryQueue.push( n );
142     else
143       this->m_Volumes[ this->m_ActualFunction ]++;
144     return( ret );
145   }
146   else
147     return( false );
148 */
149   return( false );
150 }
151
152 #endif // __FPA__BASE__INCREMENTALREGIONGROW__HXX__
153
154 // eof - $RCSfile$