#ifndef __fpa__Base__RegionGrow__hxx__ #define __fpa__Base__RegionGrow__hxx__ // ------------------------------------------------------------------------- template< class _TSuperclass > fpa::Base::RegionGrow< _TSuperclass >:: RegionGrow( ) : Superclass( ), m_InsideValue( TOutput( 1 ) ), m_OutsideValue( TOutput( 0 ) ) { this->m_InitResult = TOutput( 0 ); } // ------------------------------------------------------------------------- template< class _TSuperclass > fpa::Base::RegionGrow< _TSuperclass >:: ~RegionGrow( ) { } // ------------------------------------------------------------------------- template< class _TSuperclass > bool fpa::Base::RegionGrow< _TSuperclass >:: _UpdateValue( _TQueueNode& v, const _TQueueNode& p ) { if( this->m_GrowFunction.IsNotNull( ) ) { bool in = this->m_GrowFunction->Evaluate( p.Vertex, v.Vertex ); v.Result = ( in )? this->m_InsideValue: this->m_OutsideValue; return( in ); } else { v.Result = this->m_InitResult; return( false ); } // fi } // ------------------------------------------------------------------------- template< class _TSuperclass > unsigned long fpa::Base::RegionGrow< _TSuperclass >:: _QueueSize( ) const { return( this->m_Queue.size( ) ); } // ------------------------------------------------------------------------- template< class _TSuperclass > void fpa::Base::RegionGrow< _TSuperclass >:: _QueueClear( ) { while( this->m_Queue.size( ) > 0 ) this->m_Queue.pop( ); } // ------------------------------------------------------------------------- template< class _TSuperclass > void fpa::Base::RegionGrow< _TSuperclass >:: _QueuePush( const _TQueueNode& node ) { this->m_Queue.push( node ); } // ------------------------------------------------------------------------- template< class _TSuperclass > typename fpa::Base::RegionGrow< _TSuperclass >:: _TQueueNode fpa::Base::RegionGrow< _TSuperclass >:: _QueuePop( ) { _TQueueNode f = this->m_Queue.front( ); this->m_Queue.pop( ); return( f ); } #endif // __fpa__Base__RegionGrow__hxx__ // eof - $RCSfile$