]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Base/RegionGrow.hxx
Almost there...
[FrontAlgorithms.git] / lib / fpa / Base / RegionGrow.hxx
1 #ifndef __FPA__BASE__REGIONGROWING__HXX__
2 #define __FPA__BASE__REGIONGROWING__HXX__
3
4 // -------------------------------------------------------------------------
5 template< class V, class C, class R, class VC, class B >
6 fpa::Base::RegionGrow< V, C, R, VC, B >::
7 RegionGrow( )
8   : Superclass( ),
9     m_InsideValue( TResult( 1 ) ),
10     m_OutsideValue( TResult( 0 ) )
11 {
12 }
13
14 // -------------------------------------------------------------------------
15 template< class V, class C, class R, class VC, class B >
16 fpa::Base::RegionGrow< V, C, R, VC, B >::
17 ~RegionGrow( )
18 {
19 }
20
21 // -------------------------------------------------------------------------
22 template< class V, class C, class R, class VC, class B >
23 bool fpa::Base::RegionGrow< V, C, R, VC, B >::
24 _ComputeNeighborResult(
25   TResult& result, const TVertex& neighbor, const TVertex& parent
26   ) const
27 {
28   if( this->_CheckMembership( neighbor ) )
29   {
30     result = this->m_InsideValue;
31     return( true );
32   }
33   else
34   {
35     result = this->m_OutsideValue;
36     return( false );
37
38   } // fi
39 }
40
41 // -------------------------------------------------------------------------
42 template< class V, class C, class R, class VC, class B >
43 bool fpa::Base::RegionGrow< V, C, R, VC, B >::
44 _IsQueueEmpty( ) const
45 {
46   return( this->m_Queue.empty( ) );
47 }
48
49 // -------------------------------------------------------------------------
50 template< class V, class C, class R, class VC, class B >
51 void fpa::Base::RegionGrow< V, C, R, VC, B >::
52 _QueuePush( const TVertex& v, const _TNode& n )
53 {
54   this->m_Queue.push( std::pair< TVertex, _TNode >( v, n ) );
55 }
56
57 // -------------------------------------------------------------------------
58 template< class V, class C, class R, class VC, class B >
59 void fpa::Base::RegionGrow< V, C, R, VC, B >::
60 _QueuePop( TVertex& v, _TNode& n )
61 {
62   v = this->m_Queue.front( ).first;
63   n = this->m_Queue.front( ).second;
64   this->m_Queue.pop( );
65 }
66
67 // -------------------------------------------------------------------------
68 template< class V, class C, class R, class VC, class B >
69 void fpa::Base::RegionGrow< V, C, R, VC, B >::
70 _QueueClear( )
71 {
72   while( this->m_Queue.size( ) > 0 )
73     this->m_Queue.pop( );
74 }
75
76 #endif // __FPA__BASE__REGIONGROWING__HXX__
77
78 // eof - $RCSfile$