]> Creatis software - cpPlugins.git/blob - lib/cpExtensions/Visualization/MPRObjects.cxx
...
[cpPlugins.git] / lib / cpExtensions / Visualization / MPRObjects.cxx
1 #include <cpExtensions/Visualization/MPRObjects.h>
2
3 // -------------------------------------------------------------------------
4 cpExtensions::Visualization::MPRObjects*
5 cpExtensions::Visualization::MPRObjects::
6 New( )
7 {
8   return( new Self( ) );
9 }
10
11 // -------------------------------------------------------------------------
12 void cpExtensions::Visualization::MPRObjects::
13 SetRenderWindows(
14   vtkRenderWindow* wx, vtkRenderWindow* wy,
15   vtkRenderWindow* wz, vtkRenderWindow* w3D
16   )
17 {
18   this->m_Windows[ 0 ] = wx;
19   this->m_Windows[ 1 ] = wy;
20   this->m_Windows[ 2 ] = wz;
21   this->m_Windows[ 3 ] = w3D;
22
23   // Prepare renderers
24   for( int i = 0; i < 4; ++i )
25   {
26     if( this->m_Windows[ i ] == NULL )
27     {
28       this->m_Renderers[ i ] = NULL;
29       continue;
30
31     } // fi
32
33     // Renderers
34     this->m_Renderers[ i ] = vtkSmartPointer< vtkRenderer >::New( );
35     this->m_Renderers[ i ]->SetBackground( 0.1, 0.3, 0.8 );
36     this->m_Windows[ i ]->AddRenderer( this->m_Renderers[ i ] );
37
38     // Image styles (just for 2D windows)
39     if( i < 3 )
40     {
41       this->m_Styles[ i ] = vtkSmartPointer< TStyle >::New( );
42       this->m_Styles[ i ]->Configure(
43         this->m_MPRActors->GetSliceActors( i ), this->m_MPRActors
44         );
45
46       this->m_Styles[ i ]->
47         SetInteractor( this->m_Windows[ i ]->GetInteractor( ), i );
48       this->m_Styles[ i ]->SetModeToNavigation( );
49
50     } // fi
51
52   } // rof
53   if( this->m_Windows[ 3 ] != NULL )
54     this->m_Renderers[ 3 ]->SetBackground( 0.2, 0.2, 0.2 );
55
56   for( int i = 0; i < 3; ++i )
57   {
58     for( int j = 0; j < 3; ++j )
59     {
60       if(
61         this->m_Windows[ i ] != NULL &&
62         this->m_Windows[ j ] != NULL &&
63         i != j
64         )
65         this->m_Styles[ i ]->
66           AssociateInteractor( this->m_Windows[ j ]->GetInteractor( ) );
67
68     } // rof
69     if( this->m_Windows[ 3 ] != NULL )
70       this->m_Styles[ i ]->
71         AssociateInteractor( this->m_Windows[ 3 ]->GetInteractor( ) );
72
73   } // rof
74 }
75
76 // -------------------------------------------------------------------------
77 void cpExtensions::Visualization::MPRObjects::
78 SetImage( vtkImageData* image )
79 {
80   this->m_MPRActors->SetInputData( image );
81   this->m_MPRActors->PushDataInto(
82     this->m_Renderers[ 0 ],
83     this->m_Renderers[ 1 ],
84     this->m_Renderers[ 2 ],
85     this->m_Renderers[ 3 ]
86     );
87
88   // Correct cameras positions
89   /* TODO
90      vtkCamera* zCam = this->m_Renderers[ 2 ]->GetActiveCamera( );
91      zCam->SetViewUp( 0, -1, 0 );
92      zCam->SetPosition( 0, 0, -1 );
93      zCam->SetFocalPoint( 0, 0, 0 );
94   */
95
96   // First rendering
97   this->ResetCameras( );
98   this->RenderAll( );
99 }
100
101 // -------------------------------------------------------------------------
102 void cpExtensions::Visualization::MPRObjects::
103 ResetCamera( const int& id )
104 {
105   if( id < 4 )
106     if( this->m_Windows[ id ] != NULL )
107       this->m_Renderers[ id ]->ResetCamera( );
108 }
109
110 // -------------------------------------------------------------------------
111 void cpExtensions::Visualization::MPRObjects::
112 ResetCameras( )
113 {
114   for( int i = 0; i < 4; ++i )
115     if( this->m_Windows[ i ] != NULL )
116       this->m_Renderers[ i ]->ResetCamera( );
117 }
118
119 // -------------------------------------------------------------------------
120 void cpExtensions::Visualization::MPRObjects::
121 Render( const int& id )
122 {
123   if( id < 4 )
124     if( this->m_Windows[ id ] != NULL )
125       this->m_Windows[ id ]->Render( );
126 }
127
128 // -------------------------------------------------------------------------
129 void cpExtensions::Visualization::MPRObjects::
130 RenderAll( )
131 {
132   for( int i = 0; i < 4; ++i )
133     if( this->m_Windows[ i ] != NULL )
134       this->m_Windows[ i ]->Render( );
135 }
136
137 // -------------------------------------------------------------------------
138 vtkRenderer* cpExtensions::Visualization::MPRObjects::
139 GetXRenderer( )
140 {
141   return( this->m_Renderers[ 0 ] );
142 }
143
144 // -------------------------------------------------------------------------
145 vtkRenderer* cpExtensions::Visualization::MPRObjects::
146 GetYRenderer( )
147 {
148   return( this->m_Renderers[ 1 ] );
149 }
150
151 // -------------------------------------------------------------------------
152 vtkRenderer* cpExtensions::Visualization::MPRObjects::
153 GetZRenderer( )
154 {
155   return( this->m_Renderers[ 2 ] );
156 }
157
158 // -------------------------------------------------------------------------
159 vtkRenderer* cpExtensions::Visualization::MPRObjects::
160 Get3DRenderer( )
161 {
162   return( this->m_Renderers[ 3 ] );
163 }
164
165 // -------------------------------------------------------------------------
166 const vtkRenderer* cpExtensions::Visualization::MPRObjects::
167 GetXRenderer( ) const
168 {
169   return( this->m_Renderers[ 0 ] );
170 }
171
172 // -------------------------------------------------------------------------
173 const vtkRenderer* cpExtensions::Visualization::MPRObjects::
174 GetYRenderer( ) const
175 {
176   return( this->m_Renderers[ 1 ] );
177 }
178
179 // -------------------------------------------------------------------------
180 const vtkRenderer* cpExtensions::Visualization::MPRObjects::
181 GetZRenderer( ) const
182 {
183   return( this->m_Renderers[ 2 ] );
184 }
185
186 // -------------------------------------------------------------------------
187 const vtkRenderer* cpExtensions::Visualization::MPRObjects::
188 Get3DRenderer( ) const
189 {
190   return( this->m_Renderers[ 3 ] );
191 }
192
193 // -------------------------------------------------------------------------
194 cpExtensions::Visualization::MPRObjects::
195 MPRObjects( )
196   : vtkObject( )
197 {
198   // Prepare actors
199   this->m_MPRActors = vtkSmartPointer< TMPRActors >::New( );
200 }
201
202 // -------------------------------------------------------------------------
203 cpExtensions::Visualization::MPRObjects::
204 ~MPRObjects( )
205 {
206 }
207
208 // eof - $RCSfile$