]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Interface/DataObject.cxx
Major refactoring: API-HCI bug corrected.
[cpPlugins.git] / lib / cpPlugins / Interface / DataObject.cxx
index 21b5f1d416d4dbfe0046e11b5799c333ead3f54d..73ff662f9c423c0891e26a965dc034120d18b57c 100644 (file)
@@ -1,31 +1,33 @@
 #include <cpPlugins/Interface/DataObject.h>
+#include <vtkImageData.h>
+#include <vtkPolyData.h>
 
 // -------------------------------------------------------------------------
-std::string cpPlugins::Interface::DataObject::
-GetClassName( ) const
+itk::DataObject* cpPlugins::Interface::DataObject::
+GetITKDataObject( )
 {
-  return( "cpPlugins::Interface::DataObject" );
+  return( this->m_ITKObject.GetPointer( ) );
 }
 
 // -------------------------------------------------------------------------
-std::string cpPlugins::Interface::DataObject::
-GetClassType( ) const
+const itk::DataObject* cpPlugins::Interface::DataObject::
+GetITKDataObject( ) const
 {
-  return( "DataObject" );
+  return( this->m_ITKObject.GetPointer( ) );
 }
 
 // -------------------------------------------------------------------------
-itk::DataObject* cpPlugins::Interface::DataObject::
-GetRealDataObject( ) const
+vtkDataObject* cpPlugins::Interface::DataObject::
+GetVTKDataObject( )
 {
-  return( this->m_RealDataObject );
+  return( this->m_VTKObject.GetPointer( ) );
 }
 
 // -------------------------------------------------------------------------
-void cpPlugins::Interface::DataObject::
-SetRealDataObject( itk::DataObject* dobj )
+const vtkDataObject* cpPlugins::Interface::DataObject::
+GetVTKDataObject( ) const
 {
-  this->m_RealDataObject = dobj;
+  return( this->m_VTKObject.GetPointer( ) );
 }
 
 // -------------------------------------------------------------------------
@@ -46,16 +48,43 @@ GetSource( ) const
 void cpPlugins::Interface::DataObject::
 SetSource( cpPlugins::Interface::Object* src )
 {
-  this->m_Source = src;
+  if( this->m_Source.GetPointer( ) != src )
+  {
+    this->m_Source = src;
+    this->Modified( );
+
+  } // fi
 }
 
 // -------------------------------------------------------------------------
 void cpPlugins::Interface::DataObject::
 DisconnectPipeline( )
 {
-  if( this->m_RealDataObject.IsNotNull( ) )
+  if( this->m_ITKObject.IsNotNull( ) )
   {
-    this->m_RealDataObject->DisconnectPipeline( );
+    // 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
+
+    // Unbind source
     if( this->m_Source.IsNotNull( ) )
       this->m_Source->Delete( );
     this->Register( );
@@ -68,6 +97,8 @@ cpPlugins::Interface::DataObject::
 DataObject( )
   : Superclass( )
 {
+  this->m_ClassName = "cpPlugins::Interface::DataObject";
+  this->m_ClassCategory = "BasicObject";
 }
 
 // -------------------------------------------------------------------------