]> Creatis software - cpPlugins.git/blob - lib/cpPlugins/DataObject.cxx
Windows compilation is broken.
[cpPlugins.git] / lib / cpPlugins / DataObject.cxx
1 #include <cpPlugins/DataObject.h>
2
3 #include <cpPlugins/ProcessObject.h>
4 #include <cpPlugins/DataObjectVisualizationQtDialog.h>
5 #include <itkDataObject.h>
6 #include <vtkImageData.h>
7 #include <vtkPolyData.h>
8 #include <vtkRenderWindow.h>
9
10 // -------------------------------------------------------------------------
11 cpPlugins::ProcessObject* cpPlugins::DataObject::
12 GetSource( )
13 {
14   return( this->m_Source );
15 }
16
17 // -------------------------------------------------------------------------
18 const cpPlugins::ProcessObject* cpPlugins::DataObject::
19 GetSource( ) const
20 {
21   return( this->m_Source );
22 }
23
24 // -------------------------------------------------------------------------
25 void cpPlugins::DataObject::
26 SetSource( cpPlugins::ProcessObject* src )
27 {
28   if( this->m_Source != src )
29   {
30     this->m_Source = src;
31     this->Modified( );
32
33   } // fi
34 }
35
36 // -------------------------------------------------------------------------
37 void cpPlugins::DataObject::
38 DisconnectFromPipeline( )
39 {
40   // Disconnect input pipelines (ITK)
41   itk::DataObject* itk_obj = this->GetITK< itk::DataObject >( );
42   if( itk_obj != NULL )
43     itk_obj->DisconnectPipeline( );
44
45   // Disconnect input pipelines (VTK)
46   vtkImageData* vtk_image = this->GetVTK< vtkImageData >( );
47   vtkPolyData* vtk_pd = this->GetVTK< vtkPolyData >( );
48   if( vtk_image != NULL )
49   {
50     vtkSmartPointer< vtkImageData > d =
51       vtkSmartPointer< vtkImageData >::New( );
52     d->ShallowCopy( vtk_image );
53     this->m_VTKObject = d;
54   }
55   else if( vtk_pd != NULL )
56   {
57     vtkSmartPointer< vtkPolyData > d =
58       vtkSmartPointer< vtkPolyData >::New( );
59     d->ShallowCopy( vtk_pd );
60     this->m_VTKObject = d;
61
62   } // fi
63
64   // Unbind source
65   this->m_Source = NULL;
66   this->Modified( );
67 }
68
69 // -------------------------------------------------------------------------
70 cpPlugins::DataObjectVisualizationQtDialog* cpPlugins::DataObject::
71 CreateQtDialog( )
72 {
73 #ifdef cpPlugins_QT4
74   DataObjectVisualizationQtDialog* dlg = NULL;
75   if( QApplication::instance( ) != NULL )
76   {
77     dlg = new DataObjectVisualizationQtDialog( );
78     dlg->setDataObject( this );
79
80   } // fi
81   return( dlg );
82 #else // cpPlugins_QT4  
83   return( NULL );
84 #endif // cpPlugins_QT4
85 }
86
87 // -------------------------------------------------------------------------
88 void cpPlugins::DataObject::
89 AddVTKActor( vtkProp* actor, vtkRenderer* renderer )
90 {
91   if( actor != NULL && renderer != NULL )
92   {
93     TDataView v;
94     v.Actor = actor;
95     v.Renderer = renderer;
96     this->m_Actors.insert( v );
97     this->Modified( );
98
99   } // fi
100 }
101
102 // -------------------------------------------------------------------------
103 void cpPlugins::DataObject::
104 ClearVTKActors( )
105 {
106   this->m_Actors.clear( );
107   this->Modified( );
108 }
109
110 // -------------------------------------------------------------------------
111 void cpPlugins::DataObject::
112 RenderVTKActors( )
113 {
114   for( auto i = this->m_Actors.begin( ); i != this->m_Actors.end( ); ++i )
115     i->Renderer->GetRenderWindow( )->Render( );
116 }
117
118 // -------------------------------------------------------------------------
119 cpPlugins::DataObject::TDataViews::
120 iterator cpPlugins::DataObject::
121 BeginVTKActors( )
122 {
123   return( this->m_Actors.begin( ) );
124 }
125
126 // -------------------------------------------------------------------------
127 cpPlugins::DataObject::TDataViews::
128 iterator cpPlugins::DataObject::
129 EndVTKActors( )
130 {
131   return( this->m_Actors.end( ) );
132 }
133
134 // -------------------------------------------------------------------------
135 cpPlugins::DataObject::TDataViews::
136 const_iterator cpPlugins::DataObject::
137 BeginVTKActors( ) const
138 {
139   return( this->m_Actors.begin( ) );
140 }
141
142 // -------------------------------------------------------------------------
143 cpPlugins::DataObject::TDataViews::
144 const_iterator cpPlugins::DataObject::
145 EndVTKActors( ) const
146 {
147   return( this->m_Actors.end( ) );
148 }
149
150 // -------------------------------------------------------------------------
151 cpPlugins::DataObject::
152 DataObject( )
153   : Superclass( ),
154     m_Source( NULL )
155 {
156 }
157
158 // -------------------------------------------------------------------------
159 cpPlugins::DataObject::
160 ~DataObject( )
161 {
162 }
163
164 // eof - $RCSfile$