]> Creatis software - cpPlugins.git/blob - lib/cpExtensions/Visualization/BaseInteractorStyle.h
849e386d44ea062176f48ed53dda334112657728
[cpPlugins.git] / lib / cpExtensions / Visualization / BaseInteractorStyle.h
1 #ifndef __CPEXTENSIONS__VISUALIZATION__BASEINTERACTORSTYLE__H__
2 #define __CPEXTENSIONS__VISUALIZATION__BASEINTERACTORSTYLE__H__
3
4 #include <cpExtensions/cpExtensions_Export.h>
5
6 #include <vtkInteractorStyle.h>
7
8 namespace cpExtensions
9 {
10   namespace Visualization
11   {
12     /**
13      */
14     class cpExtensions_EXPORT BaseInteractorStyle
15       : public vtkInteractorStyle
16     {
17     public:
18       typedef BaseInteractorStyle Self;
19       vtkTypeMacro( BaseInteractorStyle, vtkInteractorStyle );
20
21       enum ButtonID
22       {
23         ButtonID_None   = 0x00,
24         ButtonID_Left   = 0x01,
25         ButtonID_Middle = 0x02,
26         ButtonID_Right  = 0x03
27       };
28
29     public:
30       static Self* New( );
31
32       void DelegateTDxEvent( unsigned long event, void* calldata );
33
34       // Possible mouse motion events
35       virtual void OnMouseMove( ) { }
36       virtual void OnMouseWheelForward( ) { }
37       virtual void OnMouseWheelBackward( ) { }
38
39       // Possible mouse click-related events
40       virtual void OnLeftButtonDown( ) { }
41       virtual void OnLeftButtonUp( ) { }
42       virtual void OnLeftClick( ) { }
43       virtual void OnLeftDoubleClick( ) { }
44       virtual void OnMiddleButtonDown( ) { }
45       virtual void OnMiddleButtonUp( ) { }
46       virtual void OnMiddleClick( ) { }
47       virtual void OnMiddleDoubleClick( ) { }
48       virtual void OnRightButtonDown( ) { }
49       virtual void OnRightButtonUp( ) { }
50       virtual void OnRightClick( ) { }
51       virtual void OnRightDoubleClick( ) { }
52
53       // Keyboard-related events
54       virtual void OnChar( ) { }
55       virtual void OnKeyDown( ) { }
56       virtual void OnKeyUp( ) { }
57       virtual void OnKeyPress( ) { }
58       virtual void OnKeyRelease( ) { }
59
60       // Other events
61       virtual void OnExpose( ) { }
62       virtual void OnConfigure( ) { }
63       virtual void OnEnter( ) { }
64       virtual void OnLeave( ) { }
65
66       // Unused methods
67       inline void StartState( int newstate ) { }
68       inline void StopState( ) { }
69       inline void StartAnimate( ) { }
70       inline void StopAnimate( ) { }
71       inline void StartRotate( ) { }
72       inline void EndRotate( ) { }
73       inline void StartZoom( ) { }
74       inline void EndZoom( ) { }
75       inline void StartPan( ) { }
76       inline void EndPan( ) { }
77       inline void StartSpin( ) { }
78       inline void EndSpin( ) { }
79       inline void StartDolly( ) { }
80       inline void EndDolly( ) { }
81       inline void StartUniformScale( ) { }
82       inline void EndUniformScale( ) { }
83       inline void StartTimer( ) { }
84       inline void EndTimer( ) { }
85       inline void StartTwoPointer( ) { }
86       inline void EndTwoPointer( ) { }
87       inline void OnTimer( ) { }
88
89     protected:
90       BaseInteractorStyle( );
91       virtual ~BaseInteractorStyle( );
92
93       static void _ProcessEvents(
94         vtkObject* object,
95         unsigned long event,
96         void* clientdata,
97         void* calldata
98         );
99
100     private:
101       // Purposely not implemented
102       BaseInteractorStyle( const Self& );
103       Self& operator=( const Self& );
104
105     protected:
106       ButtonID LastButton;
107       long LastButtonUp;
108       long LastButtonHeld;
109       long LastButtonDown;
110     };
111
112   } // ecapseman
113
114 } // ecapseman
115
116 #endif // __CPEXTENSIONS__VISUALIZATION__BASEINTERACTORSTYLE__H__
117
118 // eof - $RCSfile$