X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2Ffpa%2FBase%2FAlgorithm.hxx;h=5629af77c9436373f3ec5512ea0d6b0f89e0a0f8;hb=eb4acd3dde87a3e33593c3ce87d0d351dec23f69;hp=dbcdc608614faeb297e0a8403cf02c97dc1d015c;hpb=6fcc9fc78c44fa789bf092e2897cb6b391259b42;p=FrontAlgorithms.git diff --git a/lib/fpa/Base/Algorithm.hxx b/lib/fpa/Base/Algorithm.hxx index dbcdc60..5629af7 100644 --- a/lib/fpa/Base/Algorithm.hxx +++ b/lib/fpa/Base/Algorithm.hxx @@ -5,8 +5,8 @@ #include // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -fpa::Base::Algorithm< V, C, R, VC, B >::_TNode:: +template< class V, class C, class R, class S, class VC, class B > +fpa::Base::Algorithm< V, C, R, S, VC, B >::_TNode:: _TNode( ) : Result( TResult( 0 ) ), FrontId( -1 ), @@ -15,51 +15,55 @@ _TNode( ) } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -fpa::Base::Algorithm< V, C, R, VC, B >::_TNode:: +template< class V, class C, class R, class S, class VC, class B > +fpa::Base::Algorithm< V, C, R, S, VC, B >::_TNode:: ~_TNode( ) { } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -typename fpa::Base::Algorithm< V, C, R, VC, B >:: -TMinimumSpanningTree* fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +typename fpa::Base::Algorithm< V, C, R, S, VC, B >:: +TMinimumSpanningTree* fpa::Base::Algorithm< V, C, R, S, VC, B >:: GetMinimumSpanningTree( ) { return( dynamic_cast< TMinimumSpanningTree* >( - this->itk::ProcessObject::GetOutput( 1 ) + this->itk::ProcessObject::GetOutput( + this->m_MinimumSpanningTreeIndex + ) ) ); } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -const typename fpa::Base::Algorithm< V, C, R, VC, B >:: -TMinimumSpanningTree* fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +const typename fpa::Base::Algorithm< V, C, R, S, VC, B >:: +TMinimumSpanningTree* fpa::Base::Algorithm< V, C, R, S, VC, B >:: GetMinimumSpanningTree( ) const { return( dynamic_cast< const TMinimumSpanningTree* >( - this->itk::ProcessObject::GetOutput( 1 ) + this->itk::ProcessObject::GetOutput( + this->m_MinimumSpanningTreeIndex + ) ) ); } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -void fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +void fpa::Base::Algorithm< V, C, R, S, VC, B >:: GraftMinimumSpanningTree( itk::DataObject* obj ) { TMinimumSpanningTree* mst = dynamic_cast< TMinimumSpanningTree* >( obj ); if( mst != NULL ) - this->GraftNthOutput( 1, mst ); + this->GraftNthOutput( this->m_MinimumSpanningTreeIndex, mst ); } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -void fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +void fpa::Base::Algorithm< V, C, R, S, VC, B >:: InvokeEvent( const itk::EventObject& e ) { if( this->m_ThrowEvents ) @@ -67,8 +71,8 @@ InvokeEvent( const itk::EventObject& e ) } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -void fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +void fpa::Base::Algorithm< V, C, R, S, VC, B >:: InvokeEvent( const itk::EventObject& e ) const { if( this->m_ThrowEvents ) @@ -76,8 +80,8 @@ InvokeEvent( const itk::EventObject& e ) const } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -void fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +void fpa::Base::Algorithm< V, C, R, S, VC, B >:: AddSeed( const TVertex& s, const TResult& r ) { _TNode ns; @@ -91,17 +95,17 @@ AddSeed( const TVertex& s, const TResult& r ) } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -const typename fpa::Base::Algorithm< V, C, R, VC, B >:: -TVertex& fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +const typename fpa::Base::Algorithm< V, C, R, S, VC, B >:: +TVertex& fpa::Base::Algorithm< V, C, R, S, VC, B >:: GetSeed( const unsigned int& id ) const { return( this->m_SeedVertices[ id ] ); } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -void fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +void fpa::Base::Algorithm< V, C, R, S, VC, B >:: ClearSeeds( ) { this->m_Seeds.clear( ); @@ -110,16 +114,16 @@ ClearSeeds( ) } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -unsigned long fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +unsigned long fpa::Base::Algorithm< V, C, R, S, VC, B >:: GetNumberOfSeeds( ) const { return( this->m_Seeds.size( ) ); } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +fpa::Base::Algorithm< V, C, R, S, VC, B >:: Algorithm( ) : Superclass( ), m_ThrowEvents( false ), @@ -133,15 +137,15 @@ Algorithm( ) } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +fpa::Base::Algorithm< V, C, R, S, VC, B >:: ~Algorithm( ) { } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -void fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +void fpa::Base::Algorithm< V, C, R, S, VC, B >:: GenerateData( ) { unsigned long N = this->m_Seeds.size( ); @@ -163,8 +167,8 @@ GenerateData( ) } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -void fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +void fpa::Base::Algorithm< V, C, R, S, VC, B >:: _Loop( ) { this->InvokeEvent( TStartLoopEvent( ) ); @@ -236,36 +240,36 @@ _Loop( ) } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -void fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +void fpa::Base::Algorithm< V, C, R, S, VC, B >:: _BeforeGenerateData( ) { } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -void fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +void fpa::Base::Algorithm< V, C, R, S, VC, B >:: _AfterGenerateData( ) { } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -void fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +void fpa::Base::Algorithm< V, C, R, S, VC, B >:: _BeforeLoop( ) { } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -void fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +void fpa::Base::Algorithm< V, C, R, S, VC, B >:: _AfterLoop( ) { } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -bool fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +bool fpa::Base::Algorithm< V, C, R, S, VC, B >:: _UpdateCollisions( const TVertex& a, const TVertex& b ) { bool ret = false; @@ -322,17 +326,17 @@ _UpdateCollisions( const TVertex& a, const TVertex& b ) } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -bool fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +bool fpa::Base::Algorithm< V, C, R, S, VC, B >:: _NeedToStop( ) const { return( false ); } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -typename fpa::Base::Algorithm< V, C, R, VC, B >:: -_TNode& fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +typename fpa::Base::Algorithm< V, C, R, S, VC, B >:: +_TNode& fpa::Base::Algorithm< V, C, R, S, VC, B >:: _Node( const TVertex& v ) { typename _TNodes::iterator vIt = this->m_Marks.find( v ); @@ -351,9 +355,9 @@ _Node( const TVertex& v ) } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -const typename fpa::Base::Algorithm< V, C, R, VC, B >:: -_TNode& fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +const typename fpa::Base::Algorithm< V, C, R, S, VC, B >:: +_TNode& fpa::Base::Algorithm< V, C, R, S, VC, B >:: _Node( const TVertex& v ) const { typename _TNodes::const_iterator vIt = this->m_Marks.find( v ); @@ -361,24 +365,24 @@ _Node( const TVertex& v ) const } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -void fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +void fpa::Base::Algorithm< V, C, R, S, VC, B >:: _InitMarks( ) { this->m_Marks.clear( ); } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -void fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +void fpa::Base::Algorithm< V, C, R, S, VC, B >:: _Mark( const TVertex& v, const _TNode& node ) { this->m_Marks[ v ] = node; } // ------------------------------------------------------------------------- -template< class V, class C, class R, class VC, class B > -void fpa::Base::Algorithm< V, C, R, VC, B >:: +template< class V, class C, class R, class S, class VC, class B > +void fpa::Base::Algorithm< V, C, R, S, VC, B >:: _InitQueue( ) { this->_QueueClear( );