#ifndef __FPA__BASE__REGIONGROW__HXX__ #define __FPA__BASE__REGIONGROW__HXX__ // ------------------------------------------------------------------------- template< class _TSuperclass > fpa::Base::RegionGrow< _TSuperclass >:: RegionGrow( ) : Superclass( ), m_RegionGrowFunction( NULL ), m_InsideValue( TScalar( 1 ) ), m_OutsideValue( TScalar( 0 ) ) { } // ------------------------------------------------------------------------- template< class _TSuperclass > fpa::Base::RegionGrow< _TSuperclass >:: ~RegionGrow( ) { } // ------------------------------------------------------------------------- template< class _TSuperclass > bool fpa::Base::RegionGrow< _TSuperclass >:: _Result( TNode& node, const TNode& parent ) { if( this->m_RegionGrowFunction.IsNotNull( ) ) { bool res = this->m_RegionGrowFunction->Evaluate( node.Vertex ); node.Result = ( res )? this->m_InsideValue: this->m_OutsideValue; return( res ); } else { node.Result = this->m_OutsideValue; return( false ); } // fi } // ------------------------------------------------------------------------- template< class _TSuperclass > void fpa::Base::RegionGrow< _TSuperclass >:: _QueueClear( ) { this->m_Queue.clear( ); } // ------------------------------------------------------------------------- template< class _TSuperclass > void fpa::Base::RegionGrow< _TSuperclass >:: _QueuePush( const TNode& node ) { this->m_Queue.push_back( node ); } // ------------------------------------------------------------------------- template< class _TSuperclass > typename fpa::Base::RegionGrow< _TSuperclass >:: TNode fpa::Base::RegionGrow< _TSuperclass >:: _QueuePop( ) { TNode n = this->m_Queue.front( ); this->m_Queue.pop_front( ); return( n ); } // ------------------------------------------------------------------------- template< class _TSuperclass > bool fpa::Base::RegionGrow< _TSuperclass >:: _IsQueueEmpty( ) const { return( this->m_Queue.size( ) == 0 ); } #endif // __FPA__BASE__REGIONGROW__HXX__ // eof - $RCSfile$