X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FPipeline%2FProcessObject.cxx;fp=lib%2FcpPlugins%2FPipeline%2FProcessObject.cxx;h=0000000000000000000000000000000000000000;hb=2e142df11d6f312a2a2b5097b8da73571ed523e8;hp=bb0bbed018e22dad22930a6a2a04e74044bfdef9;hpb=61b3659afe961ed248f30e26f9ca8f28fcfafddc;p=cpPlugins.git diff --git a/lib/cpPlugins/Pipeline/ProcessObject.cxx b/lib/cpPlugins/Pipeline/ProcessObject.cxx deleted file mode 100644 index bb0bbed..0000000 --- a/lib/cpPlugins/Pipeline/ProcessObject.cxx +++ /dev/null @@ -1,377 +0,0 @@ -#include -#include -#include -#include -#include - -#ifdef cpPlugins_QT4 -# include -#endif // cpPlugins_QT4 - -// ------------------------------------------------------------------------- -void cpPlugins::Pipeline::ProcessObject:: -PrintExecutionOn( ) -{ - this->SetPrintExecution( true ); -} - -// ------------------------------------------------------------------------- -void cpPlugins::Pipeline::ProcessObject:: -PrintExecutionOff( ) -{ - this->SetPrintExecution( false ); -} - -// ------------------------------------------------------------------------- -bool cpPlugins::Pipeline::ProcessObject:: -GetPrintExecution( ) const -{ - return( this->m_PrintExecution ); -} - -// ------------------------------------------------------------------------- -void cpPlugins::Pipeline::ProcessObject:: -SetPrintExecution( bool v ) -{ - this->m_PrintExecution = v; -} - -// ------------------------------------------------------------------------- -void cpPlugins::Pipeline::ProcessObject:: -SetPrintExecutionStream( std::ofstream* s ) -{ - this->m_PrintExecutionStream = s; -} - -// ------------------------------------------------------------------------- -cpPlugins::Pipeline::Parameters* -cpPlugins::Pipeline::ProcessObject:: -GetParameters( ) -{ - return( &( this->m_Parameters ) ); -} - -// ------------------------------------------------------------------------- -const cpPlugins::Pipeline::Parameters* -cpPlugins::Pipeline::ProcessObject:: -GetParameters( ) const -{ - return( &( this->m_Parameters ) ); -} - -// ------------------------------------------------------------------------- -void cpPlugins::Pipeline::ProcessObject:: -SetITK( itk::LightObject* o ) -{ - // Polymorphism: do nothing -> this is a filter!!! -} - -// ------------------------------------------------------------------------- -void cpPlugins::Pipeline::ProcessObject:: -SetVTK( vtkObjectBase* o ) -{ - // Polymorphism: do nothing -> this is a filter!!! -} - -// ------------------------------------------------------------------------- -std::set< std::string > cpPlugins::Pipeline::ProcessObject:: -GetInputsNames( ) const -{ - std::set< std::string > names; - for( auto i = this->m_Inputs.begin( ); i != this->m_Inputs.end( ); ++i ) - names.insert( i->first ); - return( names ); -} - -// ------------------------------------------------------------------------- -std::set< std::string > cpPlugins::Pipeline::ProcessObject:: -GetOutputsNames( ) const -{ - std::set< std::string > names; - for( auto i = this->m_Outputs.begin( ); i != this->m_Outputs.end( ); ++i ) - names.insert( i->first ); - return( names ); -} - -// ------------------------------------------------------------------------- -bool cpPlugins::Pipeline::ProcessObject:: -HasInput( const std::string& n ) const -{ - auto i = this->m_Inputs.find( n ); - return( i != this->m_Inputs.end( ) ); -} - -// ------------------------------------------------------------------------- -bool cpPlugins::Pipeline::ProcessObject:: -HasOutput( const std::string& n ) const -{ - auto i = this->m_Outputs.find( n ); - return( i != this->m_Outputs.end( ) ); -} - -// ------------------------------------------------------------------------- -unsigned int cpPlugins::Pipeline::ProcessObject:: -GetNumberOfInputs( ) const -{ - return( this->m_Inputs.size( ) ); -} - -// ------------------------------------------------------------------------- -unsigned int cpPlugins::Pipeline::ProcessObject:: -GetNumberOfOutputs( ) const -{ - return( this->m_Outputs.size( ) ); -} - -// ------------------------------------------------------------------------- -unsigned int cpPlugins::Pipeline::ProcessObject:: -GetInputSize( const std::string& n ) const -{ - auto it = this->m_Inputs.find( n ); - if( it != this->m_Inputs.end( ) ) - return( it->second->Size( ) ); - else - return( 0 ); -} - -// ------------------------------------------------------------------------- -bool cpPlugins::Pipeline::ProcessObject:: -IsInputMultiple( const std::string& n ) const -{ - auto i = this->m_Inputs.find( n ); - if( i != this->m_Inputs.end( ) ) - return( dynamic_cast< MultipleInputsPort* >( i->second ) != NULL ); - else - return( false ); -} - -// ------------------------------------------------------------------------- -void cpPlugins::Pipeline::ProcessObject:: -AddInput( const std::string& n, cpPlugins::Pipeline::DataObject* o ) -{ - auto it = this->m_Inputs.find( n ); - if( it != this->m_Inputs.end( ) ) - it->second->Add( o ); -} - -// ------------------------------------------------------------------------- -void cpPlugins::Pipeline::ProcessObject:: -SetInput( const std::string& n, cpPlugins::Pipeline::DataObject* o ) -{ - this->AddInput( n, o ); -} - -// ------------------------------------------------------------------------- -void cpPlugins::Pipeline::ProcessObject:: -DisconnectInput( const std::string& n, unsigned int id ) -{ - auto inIt = this->m_Inputs.find( n ); - if( inIt != this->m_Inputs.end( ) ) - { - auto multi = dynamic_cast< MultipleInputsPort* >( inIt->second ); - auto single = dynamic_cast< InputPort* >( inIt->second ); - if( multi != NULL ) - multi->Delete( id ); - else if( single != NULL ) - single->Add( NULL ); - - } // fi -} - -// ------------------------------------------------------------------------- -void cpPlugins::Pipeline::ProcessObject:: -DisconnectInputs( ) -{ - for( auto i = this->m_Inputs.begin( ); i != this->m_Inputs.end( ); ++i ) - i->second->Clear( ); - this->Modified( ); -} - -// ------------------------------------------------------------------------- -void cpPlugins::Pipeline::ProcessObject:: -DisconnectOutputs( ) -{ - for( auto i = this->m_Outputs.begin( ); i != this->m_Outputs.end( ); ++i ) - if( i->second->IsValid( ) ) - i->second->Get( )->DisconnectFromPipeline( ); - this->Modified( ); -} - -// ------------------------------------------------------------------------- -void cpPlugins::Pipeline::ProcessObject:: -Disconnect( ) -{ - this->DisconnectInputs( ); - this->DisconnectOutputs( ); -} - -// ------------------------------------------------------------------------- -void cpPlugins::Pipeline::ProcessObject:: -Modified( ) const -{ - this->Superclass::Modified( ); - - cpPlugins::Pipeline::Events::Modified evt; - evt.Time = this->m_LastExecutionTime; - evt.Span = this->m_LastExecutionSpan; - this->InvokeEvent( evt ); -} - -// ------------------------------------------------------------------------- -void cpPlugins::Pipeline::ProcessObject:: -Update( ) -{ - // Force upstream updates - bool update = ( this->m_LastExecutionTime < this->GetMTime( ) ); - try - { - for( auto input : this->m_Inputs ) - { - for( unsigned int i = 0; i < input.second->Size( ); ++i ) - { - auto obj = input.second->Get( i ); - if( obj != NULL ) - { - auto src = obj->GetSource( ); - if( src != NULL ) - { - src->Update( ); - update |= ( this->m_LastExecutionTime < src->GetMTime( ) ); - - } // fi - } - else - { - if( input.second->IsRequired( ) ) - this->_Error( - std::string( "Required input \"" ) + input.first + - std::string( "\" in filter \"" ) + - this->m_Name + - std::string( "\" is not valid." ) - ); - - } // fi - - } // rof - - } // rof - } - catch( std::exception& err ) - { - this->_Error( err.what( ) ); - - } // yrt - - if( update || this->m_ExplicitExecution ) - { - // Show a message, if needed... - if( this->m_PrintExecution && this->m_PrintExecutionStream != NULL ) - { - *( this->m_PrintExecutionStream ) - << "cpPlugins: Updating \"" - << this->GetName( ) << " (" - << this->GetClassCategory( ) << ":" << this->GetClassName( ) - << ")\"... "; - this->m_PrintExecutionStream->flush( ); - - } // fi - - // Execute filter's algorithm and keep information about time - try - { - auto t_start = cpPlugins_CHRONO; - this->_GenerateData( ); - auto t_end = cpPlugins_CHRONO; - this->Modified( ); - this->m_LastExecutionSpan = long( t_end - t_start ); - this->m_LastExecutionTime = this->GetMTime( ); - - // End the message, if needed... - if( this->m_PrintExecution && this->m_PrintExecutionStream != NULL ) - { - *( this->m_PrintExecutionStream ) - << "done in " - << double( this->m_LastExecutionSpan ) / double( 1000 ) - << " s." << std::endl; - - } // fi - } - catch( std::exception& err ) - { - this->_Error( err.what( ) ); - - } // yrt - - } // fi -} - -// ------------------------------------------------------------------------- -QDialog* cpPlugins::Pipeline::ProcessObject:: -CreateQDialog( ) -{ -#ifdef cpPlugins_QT4 - cpPlugins::QT::ParametersDialog* dlg = NULL; - if( QApplication::instance( ) != NULL ) - { - dlg = new cpPlugins::QT::ParametersDialog( ); - dlg->setProcessObject( this ); - - } // fi - return( dlg ); -#else // cpPlugins_QT4 - return( NULL ); -#endif // cpPlugins_QT4 -} - -// ------------------------------------------------------------------------- -void cpPlugins::Pipeline::ProcessObject:: -AddInteractor( vtkRenderWindowInteractor* i ) -{ -} - -// ------------------------------------------------------------------------- -bool cpPlugins::Pipeline::ProcessObject:: -IsInteractive( ) -{ - return( false ); -} - -// ------------------------------------------------------------------------- -cpPlugins::Pipeline::ProcessObject:: -ProcessObject( ) - : Superclass( ), - m_Name( "" ), - m_PluginName( "" ), - m_ExplicitExecution( false ), - m_LastExecutionTime( 0 ), - m_LastExecutionSpan( -1 ), - m_PrintExecution( false ), - m_PrintExecutionStream( &( std::cout ) ) -{ - this->m_Parameters.SetProcessObject( this ); -} - -// ------------------------------------------------------------------------- -cpPlugins::Pipeline::ProcessObject:: -~ProcessObject( ) -{ - for( auto i = this->m_Inputs.begin( ); i != this->m_Inputs.end( ); ++i ) - delete i->second; - for( auto o = this->m_Outputs.begin( ); o != this->m_Outputs.end( ); ++o ) - delete o->second; - - this->m_Inputs.clear( ); - this->m_Outputs.clear( ); -} - -// ------------------------------------------------------------------------- -void cpPlugins::Pipeline::ProcessObject:: -_Error( const std::string& error ) -{ - if( error != "" ) - itkExceptionMacro( - "Error: \"" << this->m_Name << "\": " << error - ); -} - -// eof - $RCSfile$