X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FInterface%2FDataObject.cxx;h=09df979f3b0da19aceae48562c54c305a3ce435d;hb=a3f2018cdd92e865082fed86673f10207c21ec51;hp=9c15346370e3d4b970f3672208fa802d5133c7e5;hpb=cf8ebcdb1e31f332e74569b2be5dfb5f5100df07;p=cpPlugins.git diff --git a/lib/cpPlugins/Interface/DataObject.cxx b/lib/cpPlugins/Interface/DataObject.cxx index 9c15346..09df979 100644 --- a/lib/cpPlugins/Interface/DataObject.cxx +++ b/lib/cpPlugins/Interface/DataObject.cxx @@ -1,52 +1,80 @@ #include +#include +#include // ------------------------------------------------------------------------- -cpPlugins::Interface::DataObject:: -DataObject( ) - : Superclass( ), - m_Source( NULL ) +cpPlugins::Interface::Object* cpPlugins::Interface::DataObject:: +GetSource( ) { + return( this->m_Source ); } // ------------------------------------------------------------------------- -cpPlugins::Interface::DataObject:: -~DataObject( ) +const cpPlugins::Interface::Object* cpPlugins::Interface::DataObject:: +GetSource( ) const { + return( this->m_Source ); } // ------------------------------------------------------------------------- -std::string cpPlugins::Interface::DataObject:: -GetClassName( ) const +void cpPlugins::Interface::DataObject:: +SetSource( cpPlugins::Interface::Object* src ) { - return( "cpPlugins::Interface::DataObject" ); -} + if( this->m_Source.GetPointer( ) != src ) + { + this->m_Source = src; + this->Modified( ); -// ------------------------------------------------------------------------- -itk::DataObject* cpPlugins::Interface::DataObject:: -GetDataObject( ) const -{ - return( this->m_DataObject ); + } // fi } // ------------------------------------------------------------------------- void cpPlugins::Interface::DataObject:: -SetDataObject( itk::DataObject* src ) +DisconnectPipeline( ) { - this->m_DataObject = src; + if( this->m_ITKObject.IsNotNull( ) ) + { + // Disconnect input pipelines + this->m_ITKObject->DisconnectPipeline( ); + vtkImageData* vtk_image = + dynamic_cast< vtkImageData* >( this->m_VTKObject.GetPointer( ) ); + vtkPolyData* vtk_pd = + dynamic_cast< vtkPolyData* >( this->m_VTKObject.GetPointer( ) ); + if( vtk_image != NULL ) + { + vtkSmartPointer< vtkImageData > d = + vtkSmartPointer< vtkImageData >::New( ); + d->ShallowCopy( vtk_image ); + this->m_VTKObject = d; + } + else if( vtk_pd != NULL ) + { + vtkSmartPointer< vtkPolyData > d = + vtkSmartPointer< vtkPolyData >::New( ); + d->ShallowCopy( vtk_pd ); + this->m_VTKObject = d; + + } // fi + + } // fi + + // Unbind source + this->m_Source = NULL; } // ------------------------------------------------------------------------- -cpPlugins::Interface::ProcessObject* cpPlugins::Interface::DataObject:: -GetSource( ) const +cpPlugins::Interface::DataObject:: +DataObject( ) + : Superclass( ) { - return( this->m_Source ); + this->m_ClassName = "cpPlugins::Interface::DataObject"; + this->m_ClassCategory = "BasicObject"; } // ------------------------------------------------------------------------- -void cpPlugins::Interface::DataObject:: -SetSource( cpPlugins::Interface::ProcessObject* src ) +cpPlugins::Interface::DataObject:: +~DataObject( ) { - this->m_Source = src; } // eof - $RCSfile$