]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Interface/DataObject.cxx
XML IO added. Workspace singleton added to simplify pipeline definition and execution.
[cpPlugins.git] / lib / cpPlugins / Interface / DataObject.cxx
index 0b64bec5d93f5d4f757cb8ec5f0ce9a87321371c..c937e4d32d868d8359018e8183136168f7ea4283 100644 (file)
@@ -1,40 +1,82 @@
 #include <cpPlugins/Interface/DataObject.h>
 
+#include <cpPlugins/Interface/ProcessObject.h>
+#include <itkDataObject.h>
+#include <vtkImageData.h>
+#include <vtkPolyData.h>
+
 // -------------------------------------------------------------------------
-cpPlugins::Interface::DataObject::
-DataObject( )
-  : Superclass( ),
-    m_Source( NULL )
+cpPlugins::Interface::ProcessObject* cpPlugins::Interface::DataObject::
+GetSource( )
 {
+  return( this->m_Source );
 }
 
 // -------------------------------------------------------------------------
-cpPlugins::Interface::DataObject::
-~DataObject( )
+const cpPlugins::Interface::ProcessObject* cpPlugins::Interface::DataObject::
+GetSource( ) const
 {
+  return( this->m_Source );
 }
 
 // -------------------------------------------------------------------------
-std::string cpPlugins::Interface::DataObject::
-GetClassName( ) const
+void cpPlugins::Interface::DataObject::
+SetSource( cpPlugins::Interface::ProcessObject* src )
 {
-  return( "cpPlugins::Interface::DataObject" );
+  if( this->m_Source != src )
+  {
+    this->m_Source = src;
+    this->Modified( );
+
+  } // fi
 }
 
 // -------------------------------------------------------------------------
-cpPlugins::Interface::ProcessObject* cpPlugins::Interface::DataObject::
-GetSource( ProcessObject* src ) const
+void cpPlugins::Interface::DataObject::
+DisconnectPipeline( )
 {
-  return( this->m_Source );
+  // Disconnect input pipelines (ITK)
+  itk::DataObject* itk_obj = this->GetITK< itk::DataObject >( );
+  if( itk_obj != NULL )
+    itk_obj->DisconnectPipeline( );
+
+  // Disconnect input pipelines (VTK)
+  vtkImageData* vtk_image = this->GetVTK< vtkImageData >( );
+  vtkPolyData* vtk_pd = this->GetVTK< vtkPolyData >( );
+  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
+  this->m_Source = NULL;
 }
 
 // -------------------------------------------------------------------------
-void cpPlugins::Interface::DataObject::
-SetSource( cpPlugins::Interface::ProcessObject* src )
+cpPlugins::Interface::DataObject::
+DataObject( )
+  : Superclass( ),
+    m_ITKObject( NULL ),
+    m_VTKObject( NULL ),
+    m_Source( NULL )
 {
-  this->m_Source = src;
 }
 
-#endif // __CPPLUGINS__INTERFACE__DATAOBJECT__H__
+// -------------------------------------------------------------------------
+cpPlugins::Interface::DataObject::
+~DataObject( )
+{
+}
 
 // eof - $RCSfile$