X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FInterface%2FProcessObject.hxx;h=10b4dbe99fcc7a66fb02a42d978523e57b3e5c61;hb=f654620df52b811be7bd263a1775c93d29c69a65;hp=6dcbb7de08ddfe6f7024b859096032ebe449e7bb;hpb=7c7bc497af96e7b5845be9a2fc277036ec752be9;p=cpPlugins.git diff --git a/lib/cpPlugins/Interface/ProcessObject.hxx b/lib/cpPlugins/Interface/ProcessObject.hxx index 6dcbb7d..10b4dbe 100644 --- a/lib/cpPlugins/Interface/ProcessObject.hxx +++ b/lib/cpPlugins/Interface/ProcessObject.hxx @@ -1,15 +1,127 @@ #ifndef __CPPLUGINS__INTERFACE__PROCESSOBJECT__HXX__ #define __CPPLUGINS__INTERFACE__PROCESSOBJECT__HXX__ +// ------------------------------------------------------------------------- +template< class T > +T* cpPlugins::Interface::ProcessObject:: +GetITK( ) +{ + return( dynamic_cast< T* >( this->m_ITKObject.GetPointer( ) ) ); +} + +// ------------------------------------------------------------------------- +template< class T > +const T* cpPlugins::Interface::ProcessObject:: +GetITK( ) const +{ + return( dynamic_cast< const T* >( this->m_ITKObject.GetPointer( ) ) ); +} + +// ------------------------------------------------------------------------- +template< class T > +T* cpPlugins::Interface::ProcessObject:: +GetVTK( ) +{ + return( dynamic_cast< T* >( this->m_VTKObject.GetPointer( ) ) ); +} + +// ------------------------------------------------------------------------- +template< class T > +const T* cpPlugins::Interface::ProcessObject:: +GetVTK( ) const +{ + return( dynamic_cast< const T* >( this->m_VTKObject.GetPointer( ) ) ); +} + +// ------------------------------------------------------------------------- +template< class T > +T* cpPlugins::Interface::ProcessObject:: +GetInput( const std::string& id ) +{ + _TDataContainer::iterator i = this->m_Inputs.find( id ); + if( i != this->m_Inputs.end( ) ) + return( dynamic_cast< T* >( i->second.GetPointer( ) ) ); + else + return( NULL ); +} + +// ------------------------------------------------------------------------- +template< class T > +const T* cpPlugins::Interface::ProcessObject:: +GetInput( const std::string& id ) const +{ + _TDataContainer::const_iterator i = this->m_Inputs.find( id ); + if( i != this->m_Inputs.end( ) ) + return( dynamic_cast< const T* >( i->second.GetPointer( ) ) ); + else + return( NULL ); +} + +// ------------------------------------------------------------------------- +template< class T > +T* cpPlugins::Interface::ProcessObject:: +GetOutput( const std::string& id ) +{ + _TDataContainer::iterator i = this->m_Outputs.find( id ); + if( i != this->m_Outputs.end( ) ) + return( dynamic_cast< T* >( i->second.GetPointer( ) ) ); + else + return( NULL ); +} + +// ------------------------------------------------------------------------- +template< class T > +const T* cpPlugins::Interface::ProcessObject:: +GetOutput( const std::string& id ) const +{ + _TDataContainer::const_iterator i = this->m_Outputs.find( id ); + if( i != this->m_Outputs.end( ) ) + return( dynamic_cast< const T* >( i->second.GetPointer( ) ) ); + else + return( NULL ); +} + +// ------------------------------------------------------------------------- +template< class F > +F* cpPlugins::Interface::ProcessObject:: +_CreateITK( ) +{ + F* filter = dynamic_cast< F* >( this->m_ITKObject.GetPointer( ) ); + if( filter == NULL ) + { + typename F::Pointer ptr = F::New( ); + this->m_ITKObject = ptr; + filter = ptr.GetPointer( ); + this->m_VTKObject = NULL; + + } // fi + return( filter ); +} + +// ------------------------------------------------------------------------- +template< class F > +F* cpPlugins::Interface::ProcessObject:: +_CreateVTK( ) +{ + F* filter = dynamic_cast< F* >( this->m_VTKObject.GetPointer( ) ); + if( filter == NULL ) + { + filter = F::New( ); + this->m_VTKObject = filter; + this->m_ITKObject = NULL; + + } // fi + return( filter ); +} + // ------------------------------------------------------------------------- template< class O > void cpPlugins::Interface::ProcessObject:: -_MakeOutput( unsigned int idx ) +_MakeOutput( const std::string& id ) { - if( idx >= this->m_Outputs.size( ) ) - return; - this->m_Outputs[ idx ] = O::New( ); - this->m_Outputs[ idx ]->SetSource( this ); + this->m_Outputs[ id ] = O::New( ); + this->m_Outputs[ id ]->SetSource( this ); + this->Modified( ); } #endif // __CPPLUGINS__INTERFACE__PROCESSOBJECT__HXX__