1 #include <cpExtensions/Visualization/MPRObjects.h>
3 // -------------------------------------------------------------------------
4 cpExtensions::Visualization::MPRObjects*
5 cpExtensions::Visualization::MPRObjects::
11 // -------------------------------------------------------------------------
12 void cpExtensions::Visualization::MPRObjects::
14 vtkRenderWindow* wx, vtkRenderWindow* wy,
15 vtkRenderWindow* wz, vtkRenderWindow* w3D
18 this->m_Windows[ 0 ] = wx;
19 this->m_Windows[ 1 ] = wy;
20 this->m_Windows[ 2 ] = wz;
21 this->m_Windows[ 3 ] = w3D;
23 // Prepare 2D renderers
24 for( int i = 0; i < 4; ++i )
26 if( this->m_Windows[ i ] == NULL )
28 this->m_Renderers[ i ] = NULL;
33 // Create renderer, if render window exists
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 ] );
41 if( this->m_Windows[ 3 ] != NULL )
42 this->m_Renderers[ 3 ]->SetBackground( 0.2, 0.2, 0.2 );
45 // -------------------------------------------------------------------------
46 void cpExtensions::Visualization::MPRObjects::
47 SetImage( vtkImageData* image )
49 this->m_MPRActors->AddInputData( image );
50 this->m_MPRActors->PushDataInto(
51 this->m_Renderers[ 0 ],
52 this->m_Renderers[ 1 ],
53 this->m_Renderers[ 2 ],
54 this->m_Renderers[ 3 ]
57 // Correct cameras positions
59 vtkCamera* zCam = this->m_Renderers[ 2 ]->GetActiveCamera( );
60 zCam->SetViewUp( 0, -1, 0 );
61 zCam->SetPosition( 0, 0, -1 );
62 zCam->SetFocalPoint( 0, 0, 0 );
66 this->m_MPRActors->ResetSlices( );
67 this->ResetCameras( );
71 // -------------------------------------------------------------------------
72 void cpExtensions::Visualization::MPRObjects::
73 AddAuxiliaryImage( vtkImageData* image )
75 this->m_MPRActors->AddInputData( image );
77 #error Definir LUT de la nueva imagen
79 this->m_MPRActors->PushDataInto(
80 this->m_Renderers[ 0 ],
81 this->m_Renderers[ 1 ],
82 this->m_Renderers[ 2 ],
83 this->m_Renderers[ 3 ]
90 // -------------------------------------------------------------------------
91 void cpExtensions::Visualization::MPRObjects::
92 ActivateInteractors( )
95 for( int i = 0; i < 3; ++i )
97 // Check prerrequisites
98 if( this->m_Windows[ i ] == NULL || this->m_Renderers[ i ] == NULL )
100 this->m_Styles[ i ] = NULL;
105 ImageSliceActors* actors = this->m_MPRActors->GetSliceActors( i );
108 this->m_Styles[ i ] = NULL;
113 this->m_Styles[ i ] = vtkSmartPointer< TStyle >::New( );
114 this->m_Styles[ i ]->Configure( actors, this->m_MPRActors );
115 this->m_Styles[ i ]->
116 SetInteractor( this->m_Windows[ i ]->GetInteractor( ), i );
117 this->m_Styles[ i ]->SetModeToNavigation( );
121 // Synch 2D and 3D renderers
122 for( int i = 0; i < 3; ++i )
124 for( int j = 0; j < 3; ++j )
127 this->m_Windows[ i ] != NULL &&
128 this->m_Windows[ j ] != NULL &&
131 this->m_Styles[ i ]->
132 AssociateInteractor( this->m_Windows[ j ]->GetInteractor( ) );
135 if( this->m_Windows[ 3 ] != NULL )
136 this->m_Styles[ i ]->
137 AssociateInteractor( this->m_Windows[ 3 ]->GetInteractor( ) );
141 // Finish interactor linking
142 this->m_MPRActors->LinkInteractors( );
145 this->ResetCameras( );
149 // -------------------------------------------------------------------------
150 void cpExtensions::Visualization::MPRObjects::
151 ResetCamera( const int& id )
154 if( this->m_Windows[ id ] != NULL )
155 this->m_Renderers[ id ]->ResetCamera( );
158 // -------------------------------------------------------------------------
159 void cpExtensions::Visualization::MPRObjects::
162 for( int i = 0; i < 4; ++i )
163 if( this->m_Windows[ i ] != NULL )
164 this->m_Renderers[ i ]->ResetCamera( );
167 // -------------------------------------------------------------------------
168 void cpExtensions::Visualization::MPRObjects::
169 Render( const int& id )
172 if( this->m_Windows[ id ] != NULL )
173 this->m_Windows[ id ]->Render( );
176 // -------------------------------------------------------------------------
177 void cpExtensions::Visualization::MPRObjects::
180 for( int i = 0; i < 4; ++i )
181 if( this->m_Windows[ i ] != NULL )
182 this->m_Windows[ i ]->Render( );
185 // -------------------------------------------------------------------------
186 vtkRenderer* cpExtensions::Visualization::MPRObjects::
189 return( this->m_Renderers[ 0 ] );
192 // -------------------------------------------------------------------------
193 vtkRenderer* cpExtensions::Visualization::MPRObjects::
196 return( this->m_Renderers[ 1 ] );
199 // -------------------------------------------------------------------------
200 vtkRenderer* cpExtensions::Visualization::MPRObjects::
203 return( this->m_Renderers[ 2 ] );
206 // -------------------------------------------------------------------------
207 vtkRenderer* cpExtensions::Visualization::MPRObjects::
210 return( this->m_Renderers[ 3 ] );
213 // -------------------------------------------------------------------------
214 const vtkRenderer* cpExtensions::Visualization::MPRObjects::
215 GetXRenderer( ) const
217 return( this->m_Renderers[ 0 ] );
220 // -------------------------------------------------------------------------
221 const vtkRenderer* cpExtensions::Visualization::MPRObjects::
222 GetYRenderer( ) const
224 return( this->m_Renderers[ 1 ] );
227 // -------------------------------------------------------------------------
228 const vtkRenderer* cpExtensions::Visualization::MPRObjects::
229 GetZRenderer( ) const
231 return( this->m_Renderers[ 2 ] );
234 // -------------------------------------------------------------------------
235 const vtkRenderer* cpExtensions::Visualization::MPRObjects::
236 Get3DRenderer( ) const
238 return( this->m_Renderers[ 3 ] );
241 // -------------------------------------------------------------------------
242 cpExtensions::Visualization::MPRObjects::
247 this->m_MPRActors = vtkSmartPointer< TMPRActors >::New( );
250 // -------------------------------------------------------------------------
251 cpExtensions::Visualization::MPRObjects::