1 #include <cpExtensions/Visualization/BaseInteractorStyle.h>
3 #include <vtkCallbackCommand.h>
5 // -------------------------------------------------------------------------
6 const long cpExtensions::Visualization::BaseInteractorStyle::MouseButtonEvent::
7 MAX_DOUBLE_CLICK = 200; // ms
9 // -------------------------------------------------------------------------
10 cpExtensions::Visualization::BaseInteractorStyle::
11 Self* cpExtensions::Visualization::BaseInteractorStyle::
17 // -------------------------------------------------------------------------
18 void cpExtensions::Visualization::BaseInteractorStyle::
19 DelegateTDxEvent( unsigned long event, void* calldata )
22 std::cerr << "No TDx support at this time!" << std::endl;
26 // -------------------------------------------------------------------------
27 cpExtensions::Visualization::BaseInteractorStyle::
28 BaseInteractorStyle( )
31 this->LeftButtonEvent.Reset( );
32 this->MiddleButtonEvent.Reset( );
33 this->RightButtonEvent.Reset( );
34 this->ActiveButton = Self::ButtonID_None;
36 this->EventCallbackCommand->SetCallback( Self::_ProcessEvents );
39 // -------------------------------------------------------------------------
40 cpExtensions::Visualization::BaseInteractorStyle::
41 ~BaseInteractorStyle( )
45 // -------------------------------------------------------------------------
46 void cpExtensions::Visualization::BaseInteractorStyle::
54 // Get active style and interactor
55 Self* s = reinterpret_cast< Self* >( clientdata );
62 case vtkCommand::MouseMoveEvent:
67 case vtkCommand::LeftButtonPressEvent:
69 unsigned char nc = s->LeftButtonEvent.Clicks( );
71 s->OnLeftDoubleClick( );
74 s->ActiveButton = Self::ButtonID_Left;
77 case vtkCommand::LeftButtonReleaseEvent:
79 s->LeftButtonEvent.Release( );
80 s->ActiveButton = Self::ButtonID_None;
83 case vtkCommand::MiddleButtonPressEvent:
85 unsigned char nc = s->MiddleButtonEvent.Clicks( );
87 s->OnMiddleDoubleClick( );
90 s->ActiveButton = Self::ButtonID_Middle;
93 case vtkCommand::MiddleButtonReleaseEvent:
95 s->MiddleButtonEvent.Release( );
96 s->ActiveButton = Self::ButtonID_None;
99 case vtkCommand::RightButtonPressEvent:
101 unsigned char nc = s->RightButtonEvent.Clicks( );
103 s->OnRightDoubleClick( );
106 s->ActiveButton = Self::ButtonID_Right;
109 case vtkCommand::RightButtonReleaseEvent:
111 s->RightButtonEvent.Release( );
112 s->ActiveButton = Self::ButtonID_None;
115 case vtkCommand::MouseWheelForwardEvent:
117 s->OnMouseWheelForward( );
120 case vtkCommand::MouseWheelBackwardEvent:
122 s->OnMouseWheelBackward( );
125 case vtkCommand::KeyPressEvent:
131 case vtkCommand::KeyReleaseEvent:
137 case vtkCommand::CharEvent:
142 case vtkCommand::ExposeEvent:
147 case vtkCommand::ConfigureEvent:
152 case vtkCommand::EnterEvent:
157 case vtkCommand::LeaveEvent:
162 case vtkCommand::TimerEvent:
167 case vtkCommand::DeleteEvent:
169 s->SetInteractor( 0 );
172 case vtkCommand::TDxMotionEvent:
173 case vtkCommand::TDxButtonPressEvent:
174 case vtkCommand::TDxButtonReleaseEvent:
176 s->DelegateTDxEvent( event, calldata );