]> Creatis software - cpPlugins.git/blob - lib/cpExtensions/Visualization/MPRObjects.cxx
Merge ssh://git.creatis.insa-lyon.fr/cpPlugins
[cpPlugins.git] / lib / cpExtensions / Visualization / MPRObjects.cxx
1 #include <cpExtensions/Visualization/MPRObjects.h>
2
3 #include <cmath>
4 #include <vtkImageData.h>
5 #include <vtkLookupTable.h>
6
7 // -------------------------------------------------------------------------
8 cpExtensions::Visualization::MPRObjects*
9 cpExtensions::Visualization::MPRObjects::
10 New( )
11 {
12   return( new Self( ) );
13 }
14
15 // -------------------------------------------------------------------------
16 void cpExtensions::Visualization::MPRObjects::
17 SetRenderWindows(
18   vtkRenderWindow* wx, vtkRenderWindow* wy,
19   vtkRenderWindow* wz, vtkRenderWindow* w3D
20   )
21 {
22   this->m_Windows[ 0 ] = wx;
23   this->m_Windows[ 1 ] = wy;
24   this->m_Windows[ 2 ] = wz;
25   this->m_Windows[ 3 ] = w3D;
26
27   // Prepare 2D renderers
28   for( int i = 0; i < 4; ++i )
29   {
30     if( this->m_Windows[ i ] == NULL )
31     {
32       this->m_Renderers[ i ] = NULL;
33       continue;
34
35     } // fi
36
37     // Create renderer, if render window exists
38     this->m_Renderers[ i ] = vtkSmartPointer< vtkRenderer >::New( );
39     this->m_Renderers[ i ]->SetBackground( 0.1, 0.3, 0.8 );
40     this->m_Windows[ i ]->AddRenderer( this->m_Renderers[ i ] );
41
42   } // rof
43
44   // Create 3D renderer
45   if( this->m_Windows[ 3 ] != NULL )
46     this->m_Renderers[ 3 ]->SetBackground( 0.2, 0.2, 0.2 );
47 }
48
49 // -------------------------------------------------------------------------
50 void cpExtensions::Visualization::MPRObjects::
51 AddImage( vtkImageData* image )
52 {
53   this->m_MPRActors->AddInputData( image );
54   this->m_MPRActors->PushActorsInto(
55     this->m_Windows[ 0 ],
56     this->m_Windows[ 1 ],
57     this->m_Windows[ 2 ],
58     this->m_Windows[ 3 ]
59     );
60
61   // First rendering
62   if( this->m_MPRActors->GetNumberOfImages( ) == 1 )
63   {
64     this->m_MPRActors->ResetSlices( );
65     this->ResetCameras( );
66
67   } // fi
68   this->RenderAll( 1e-3 );
69 }
70
71 // -------------------------------------------------------------------------
72 unsigned int cpExtensions::Visualization::MPRObjects::
73 GetNumberOfImages( ) const
74 {
75   return( this->m_MPRActors->GetNumberOfImages( ) );
76 }
77
78 // -------------------------------------------------------------------------
79 void cpExtensions::Visualization::MPRObjects::
80 ClearAll( )
81 {
82   this->m_MPRActors->PopActorsFrom(
83     this->m_Windows[ 0 ],
84     this->m_Windows[ 1 ],
85     this->m_Windows[ 2 ],
86     this->m_Windows[ 3 ]
87     );
88   this->ResetCameras( );
89   this->RenderAll( 1e-3 );
90 }
91
92 // -------------------------------------------------------------------------
93 void cpExtensions::Visualization::MPRObjects::
94 ResetCamera( const int& id )
95 {
96   if( id < 4 )
97     if( this->m_Windows[ id ] != NULL )
98       this->m_Renderers[ id ]->ResetCamera( );
99 }
100
101 // -------------------------------------------------------------------------
102 void cpExtensions::Visualization::MPRObjects::
103 ResetCameras( )
104 {
105   for( int i = 0; i < 4; ++i )
106     if( this->m_Windows[ i ] != NULL )
107       this->m_Renderers[ i ]->ResetCamera( );
108 }
109
110 // -------------------------------------------------------------------------
111 void cpExtensions::Visualization::MPRObjects::
112 Render( const int& id, const double& t )
113 {
114   if( id < 4 )
115   {
116     if( this->m_Windows[ id ] != NULL )
117     {
118       if( this->m_Renderers[ id ] != NULL )
119         this->m_Renderers[ id ]->SetAllocatedRenderTime( t );
120       this->m_Windows[ id ]->Render( );
121       
122     } // fi
123
124   } // fi
125 }
126
127 // -------------------------------------------------------------------------
128 void cpExtensions::Visualization::MPRObjects::
129 RenderAll( const double& t )
130 {
131   for( int i = 0; i < 4; ++i )
132   {
133     if( this->m_Windows[ i ] != NULL )
134     {
135       if( this->m_Renderers[ i ] != NULL )
136         this->m_Renderers[ i ]->SetAllocatedRenderTime( t );
137       this->m_Windows[ i ]->Render( );
138
139     } // fi
140
141   } // rof
142 }
143
144 // -------------------------------------------------------------------------
145 vtkRenderer* cpExtensions::Visualization::MPRObjects::
146 GetXRenderer( )
147 {
148   return( this->m_Renderers[ 0 ] );
149 }
150
151 // -------------------------------------------------------------------------
152 vtkRenderer* cpExtensions::Visualization::MPRObjects::
153 GetYRenderer( )
154 {
155   return( this->m_Renderers[ 1 ] );
156 }
157
158 // -------------------------------------------------------------------------
159 vtkRenderer* cpExtensions::Visualization::MPRObjects::
160 GetZRenderer( )
161 {
162   return( this->m_Renderers[ 2 ] );
163 }
164
165 // -------------------------------------------------------------------------
166 vtkRenderer* cpExtensions::Visualization::MPRObjects::
167 Get3DRenderer( )
168 {
169   return( this->m_Renderers[ 3 ] );
170 }
171
172 // -------------------------------------------------------------------------
173 const vtkRenderer* cpExtensions::Visualization::MPRObjects::
174 GetXRenderer( ) const
175 {
176   return( this->m_Renderers[ 0 ] );
177 }
178
179 // -------------------------------------------------------------------------
180 const vtkRenderer* cpExtensions::Visualization::MPRObjects::
181 GetYRenderer( ) const
182 {
183   return( this->m_Renderers[ 1 ] );
184 }
185
186 // -------------------------------------------------------------------------
187 const vtkRenderer* cpExtensions::Visualization::MPRObjects::
188 GetZRenderer( ) const
189 {
190   return( this->m_Renderers[ 2 ] );
191 }
192
193 // -------------------------------------------------------------------------
194 const vtkRenderer* cpExtensions::Visualization::MPRObjects::
195 Get3DRenderer( ) const
196 {
197   return( this->m_Renderers[ 3 ] );
198 }
199
200 // -------------------------------------------------------------------------
201 cpExtensions::Visualization::
202 MPRActors* cpExtensions::Visualization::MPRObjects::
203 GetMPRActors( )
204 {
205   return( this->m_MPRActors );
206 }
207
208 // -------------------------------------------------------------------------
209 const cpExtensions::Visualization::
210 MPRActors* cpExtensions::Visualization::MPRObjects::
211 GetMPRActors( ) const
212 {
213   return( this->m_MPRActors );
214 }
215
216 // -------------------------------------------------------------------------
217 double cpExtensions::Visualization::MPRObjects::
218 GetWindow( ) const
219 {
220   return( this->m_MPRActors->GetWindow( ) );
221 }
222
223 // -------------------------------------------------------------------------
224 double cpExtensions::Visualization::MPRObjects::
225 GetLevel( ) const
226 {
227   return( this->m_MPRActors->GetLevel( ) );
228 }
229
230 // -------------------------------------------------------------------------
231 cpExtensions::Visualization::MPRObjects::
232 MPRObjects( )
233   : vtkObject( )
234 {
235   // Prepare actors
236   this->m_MPRActors = vtkSmartPointer< MPRActors >::New( );
237 }
238
239 // -------------------------------------------------------------------------
240 cpExtensions::Visualization::MPRObjects::
241 ~MPRObjects( )
242 {
243 }
244
245 // eof - $RCSfile$