1 #include <cpPlugins/Extensions/Visualization/ImageInteractorStyle.h>
3 #include <vtkAnnotatedCubeActor.h>
4 #include <vtkAxesActor.h>
6 #include <vtkCommand.h>
7 #include <vtkPropAssembly.h>
8 #include <vtkProperty.h>
9 #include <vtkRendererCollection.h>
10 #include <vtkRenderWindow.h>
11 #include <vtkRenderWindowInteractor.h>
13 #include <cpPlugins/Extensions/Visualization/ImageSliceActors.h>
14 #include <cpPlugins/Extensions/Visualization/MPRActors.h>
16 // -------------------------------------------------------------------------
17 const int cpPlugins::Extensions::Visualization::
18 ImageInteractorStyle::SliceEvent = vtkCommand::UserEvent + 1;
20 // -------------------------------------------------------------------------
21 cpPlugins::Extensions::Visualization::ImageInteractorStyle::
22 Self* cpPlugins::Extensions::Visualization::ImageInteractorStyle::
25 return( new Self( ) );
28 // -------------------------------------------------------------------------
29 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
30 Configure( ImageSliceActors* slice_actors, MPRActors* mpr_actors )
32 this->m_SliceActors = slice_actors;
33 this->m_MPRActors = mpr_actors;
34 this->SetModeToNavigation( );
35 this->PropPicker->AddPickList( slice_actors->GetImageActor( ) );
39 // -------------------------------------------------------------------------
40 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
41 SetModeToNavigation( )
43 this->Mode = Self::NavigationMode;
46 // -------------------------------------------------------------------------
47 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
48 SetModeToDeformation( )
50 this->Mode = Self::DeformationMode;
53 // -------------------------------------------------------------------------
54 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
55 SetInteractor( vtkRenderWindowInteractor* interactor, const int& axis )
57 this->Superclass::SetInteractor( interactor );
58 this->OrientationWidget->SetInteractor( interactor );
59 interactor->SetInteractorStyle( this );
60 if( interactor == NULL )
63 // TODO: interactor->SetPicker( this->PropPicker );
65 // Get camera, avoiding segfaults
67 interactor->GetRenderWindow( )->GetRenderers( )->GetFirstRenderer( );
70 vtkCamera* cam = ren->GetActiveCamera( );
74 // Parallel projections are better when displaying 2D images
75 cam->ParallelProjectionOn( );
76 cam->SetFocalPoint( double( 0 ), double( 0 ), double( 0 ) );
79 cam->SetPosition( double( 1 ), double( 0 ), double( 0 ) );
80 cam->SetViewUp ( double( 0 ), double( 1 ), double( 0 ) );
84 cam->SetPosition( double( 0 ), double( 1 ), double( 0 ) );
85 cam->SetViewUp ( double( 0 ), double( 0 ), double( -1 ) );
87 else // if( axis == 2 )
89 cam->SetPosition( double( 0 ), double( 0 ), double( 1 ) );
90 cam->SetViewUp ( double( 0 ), double( 1 ), double( 0 ) );
95 // Enable 2D orientation widget
96 this->OrientationWidget->SetEnabled( 1 );
97 this->OrientationWidget->InteractiveOff( );
100 // -------------------------------------------------------------------------
101 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
104 std::cout << "moumov" << std::endl;
107 // -------------------------------------------------------------------------
108 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
111 std::cout << "leftdown" << std::endl;
114 // -------------------------------------------------------------------------
115 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
118 std::cout << "leftup" << std::endl;
121 // -------------------------------------------------------------------------
122 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
123 OnMiddleButtonDown( )
125 std::cout << "middown" << std::endl;
128 // -------------------------------------------------------------------------
129 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
132 std::cout << "midup" << std::endl;
135 // -------------------------------------------------------------------------
136 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
139 std::cout << "ridown" << std::endl;
142 // -------------------------------------------------------------------------
143 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
146 std::cout << "riup" << std::endl;
149 // -------------------------------------------------------------------------
150 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
151 OnMouseWheelForward( )
153 std::cout << "whfwd" << std::endl;
156 // -------------------------------------------------------------------------
157 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
158 OnMouseWheelBackward( )
160 std::cout << "whbwd" << std::endl;
163 // -------------------------------------------------------------------------
164 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
167 std::cout << "char" << std::endl;
170 // -------------------------------------------------------------------------
171 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
174 std::cout << "Rotate" << std::endl;
177 // -------------------------------------------------------------------------
178 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
181 std::cout << "pan" << std::endl;
184 // -------------------------------------------------------------------------
185 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
188 std::cout << "spin" << std::endl;
191 // -------------------------------------------------------------------------
192 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
195 std::cout << "Zoom" << std::endl;
198 // -------------------------------------------------------------------------
199 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
202 std::cout << "wl" << std::endl;
205 // -------------------------------------------------------------------------
206 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
209 std::cout << "Pick" << std::endl;
212 // -------------------------------------------------------------------------
213 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
216 std::cout << "Slice" << std::endl;
219 // -------------------------------------------------------------------------
220 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
223 std::cout << "swl" << std::endl;
226 // -------------------------------------------------------------------------
227 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
230 std::cout << "ewl" << std::endl;
233 // -------------------------------------------------------------------------
234 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
237 std::cout << "sp" << std::endl;
240 // -------------------------------------------------------------------------
241 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
244 std::cout << "ep" << std::endl;
247 // -------------------------------------------------------------------------
248 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
251 std::cout << "ss" << std::endl;
254 // -------------------------------------------------------------------------
255 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
258 std::cout << "es" << std::endl;
261 // -------------------------------------------------------------------------
262 cpPlugins::Extensions::Visualization::ImageInteractorStyle::
263 ImageInteractorStyle( )
265 Mode( Self::NavigationMode ),
266 m_SliceActors( NULL ),
270 vtkSmartPointer< vtkAnnotatedCubeActor > cube =
271 vtkSmartPointer< vtkAnnotatedCubeActor >::New( );
272 cube->GetCubeProperty( )->SetColor( 0.9, 0.7, 0.2 );
273 cube->GetTextEdgesProperty( )->SetLineWidth( 1 );
274 cube->GetTextEdgesProperty( )->SetDiffuse( 0 );
275 cube->GetTextEdgesProperty( )->SetAmbient( 1 );
276 cube->GetTextEdgesProperty( )->SetColor( 0.18, 0.28, 0.23 );
277 cube->GetXPlusFaceProperty( )->SetColor( 1, 0, 0 );
278 cube->GetXPlusFaceProperty( )->SetInterpolationToFlat( );
279 cube->GetXMinusFaceProperty( )->SetColor( 1, 0, 0 );
280 cube->GetXMinusFaceProperty( )->SetInterpolationToFlat( );
281 cube->GetYPlusFaceProperty( )->SetColor( 0, 1, 0 );
282 cube->GetYPlusFaceProperty( )->SetInterpolationToFlat( );
283 cube->GetYMinusFaceProperty( )->SetColor( 0, 1, 0 );
284 cube->GetYMinusFaceProperty( )->SetInterpolationToFlat( );
285 cube->GetZPlusFaceProperty( )->SetColor( 0, 0, 1 );
286 cube->GetZPlusFaceProperty( )->SetInterpolationToFlat( );
287 cube->GetZMinusFaceProperty( )->SetColor( 0, 0, 1 );
288 cube->GetZMinusFaceProperty( )->SetInterpolationToFlat( );
290 vtkSmartPointer< vtkAxesActor > axes =
291 vtkSmartPointer< vtkAxesActor >::New( );
292 axes->AxisLabelsOff( );
293 axes->SetShaftTypeToCylinder( );
294 axes->SetTotalLength( 2, 2, 2 );
296 vtkSmartPointer< vtkPropAssembly > actors =
297 vtkSmartPointer< vtkPropAssembly >::New( );
298 actors->AddPart( cube );
299 actors->AddPart( axes );
301 this->OrientationWidget =
302 vtkSmartPointer< vtkOrientationMarkerWidget >::New( );
303 this->OrientationWidget->SetOutlineColor( 0.93, 0.57, 0.13 );
304 this->OrientationWidget->SetOrientationMarker( actors );
305 this->OrientationWidget->SetViewport( 0.0, 0.0, 0.2, 0.2 );
307 this->PropPicker = vtkSmartPointer< vtkPropPicker >::New( );
308 this->PropPicker->PickFromListOn( );
311 // -------------------------------------------------------------------------
312 cpPlugins::Extensions::Visualization::ImageInteractorStyle::
313 ~ImageInteractorStyle( )
315 std::cout << "destructor" << std::endl;
318 // -------------------------------------------------------------------------
319 bool cpPlugins::Extensions::Visualization::ImageInteractorStyle::
320 _PickPosition( double pos[ 3 ] )
322 std::cout << "pickpos" << std::endl;
325 // -------------------------------------------------------------------------
326 void cpPlugins::Extensions::Visualization::ImageInteractorStyle::
329 std::cout << "upcur" << std::endl;