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 ActivateInteractors( )
76 for( int i = 0; i < 3; ++i )
78 // Check prerrequisites
79 if( this->m_Windows[ i ] == NULL || this->m_Renderers[ i ] == NULL )
81 this->m_Styles[ i ] = NULL;
86 ImageSliceActors* actors = this->m_MPRActors->GetSliceActors( i );
89 this->m_Styles[ i ] = NULL;
94 this->m_Styles[ i ] = vtkSmartPointer< TStyle >::New( );
95 this->m_Styles[ i ]->Configure( actors, this->m_MPRActors );
97 SetInteractor( this->m_Windows[ i ]->GetInteractor( ), i );
98 this->m_Styles[ i ]->SetModeToNavigation( );
102 // Synch 2D and 3D renderers
103 for( int i = 0; i < 3; ++i )
105 for( int j = 0; j < 3; ++j )
108 this->m_Windows[ i ] != NULL &&
109 this->m_Windows[ j ] != NULL &&
112 this->m_Styles[ i ]->
113 AssociateInteractor( this->m_Windows[ j ]->GetInteractor( ) );
116 if( this->m_Windows[ 3 ] != NULL )
117 this->m_Styles[ i ]->
118 AssociateInteractor( this->m_Windows[ 3 ]->GetInteractor( ) );
122 // Finish interactor linking
123 this->m_MPRActors->LinkInteractors( );
126 this->ResetCameras( );
130 // -------------------------------------------------------------------------
131 void cpExtensions::Visualization::MPRObjects::
132 ResetCamera( const int& id )
135 if( this->m_Windows[ id ] != NULL )
136 this->m_Renderers[ id ]->ResetCamera( );
139 // -------------------------------------------------------------------------
140 void cpExtensions::Visualization::MPRObjects::
143 for( int i = 0; i < 4; ++i )
144 if( this->m_Windows[ i ] != NULL )
145 this->m_Renderers[ i ]->ResetCamera( );
148 // -------------------------------------------------------------------------
149 void cpExtensions::Visualization::MPRObjects::
150 Render( const int& id )
153 if( this->m_Windows[ id ] != NULL )
154 this->m_Windows[ id ]->Render( );
157 // -------------------------------------------------------------------------
158 void cpExtensions::Visualization::MPRObjects::
161 for( int i = 0; i < 4; ++i )
162 if( this->m_Windows[ i ] != NULL )
163 this->m_Windows[ i ]->Render( );
166 // -------------------------------------------------------------------------
167 vtkRenderer* cpExtensions::Visualization::MPRObjects::
170 return( this->m_Renderers[ 0 ] );
173 // -------------------------------------------------------------------------
174 vtkRenderer* cpExtensions::Visualization::MPRObjects::
177 return( this->m_Renderers[ 1 ] );
180 // -------------------------------------------------------------------------
181 vtkRenderer* cpExtensions::Visualization::MPRObjects::
184 return( this->m_Renderers[ 2 ] );
187 // -------------------------------------------------------------------------
188 vtkRenderer* cpExtensions::Visualization::MPRObjects::
191 return( this->m_Renderers[ 3 ] );
194 // -------------------------------------------------------------------------
195 const vtkRenderer* cpExtensions::Visualization::MPRObjects::
196 GetXRenderer( ) const
198 return( this->m_Renderers[ 0 ] );
201 // -------------------------------------------------------------------------
202 const vtkRenderer* cpExtensions::Visualization::MPRObjects::
203 GetYRenderer( ) const
205 return( this->m_Renderers[ 1 ] );
208 // -------------------------------------------------------------------------
209 const vtkRenderer* cpExtensions::Visualization::MPRObjects::
210 GetZRenderer( ) const
212 return( this->m_Renderers[ 2 ] );
215 // -------------------------------------------------------------------------
216 const vtkRenderer* cpExtensions::Visualization::MPRObjects::
217 Get3DRenderer( ) const
219 return( this->m_Renderers[ 3 ] );
222 // -------------------------------------------------------------------------
223 cpExtensions::Visualization::MPRObjects::
228 this->m_MPRActors = vtkSmartPointer< TMPRActors >::New( );
231 // -------------------------------------------------------------------------
232 cpExtensions::Visualization::MPRObjects::