Klamp't  0.9.0
NavigationGUI.h
1 #ifndef INTERFACE_NAVIGATION_GUI_H
2 #define INTERFACE_NAVIGATION_GUI_H
3 
4 #include "GenericGUI.h"
5 #include <KrisLibrary/math3d/geometry3d.h>
6 #include <KrisLibrary/camera/viewport.h>
7 #include <KrisLibrary/Timer.h>
8 
9 namespace Klampt {
10 
16 {
17  public:
19  virtual ~MouseDragBackend() {}
20  virtual bool OnMouseClick(int button,int state,int mx,int my);
21  virtual bool OnMouseMove(int mx,int my);
22  virtual bool OnKeyDown(const string& key);
23  virtual bool OnKeyUp(const string& key);
24 
25  virtual void BeginDrag(int x,int y,int button,int modifiers) {}
26  virtual void DoDrag(int dx,int dy,int button,int modifiers);
27  virtual void EndDrag(int x,int y,int button,int modifiers) {}
29  virtual void DoFreeDrag(int dx,int dy,int button) {}
31  virtual void DoCtrlDrag(int dx,int dy,int button) {}
33  virtual void DoAltDrag(int dx,int dy,int button) {}
35  virtual void DoShiftDrag(int dx,int dy,int button) {}
37  virtual void DoPassiveMouseMove(int x,int y) {}
38 
39  int oldmousex,oldmousey;
40  int clickButton, clickModifiers;
41 };
42 
52 {
53  public:
54  typedef MouseDragBackend BaseT;
55 
57  virtual ~GLNavigationBackend() {}
58  //overrideable
59  virtual void SetWorldLights() {}
60  virtual void RenderWorld() {}
61  virtual void RenderScreen() {}
62 
63  virtual void Start();
64  virtual bool OnIdle();
65  virtual bool OnGLRender();
66  virtual bool OnGLViewport(int x,int y,int w,int h);
67  virtual bool OnMouseWheel(int dwheel);
68  virtual bool OnCommand(const string& cmd,const string& args);
69 
70  virtual void BeginDrag(int x,int y,int button,int modifiers);
71  virtual void DoFreeDrag(int dx,int dy,int button);
72  virtual void DoCtrlDrag(int dx,int dy,int button);
73  virtual void DoAltDrag(int dx,int dy,int button);
74  virtual void DoShiftDrag(int dx,int dy,int button);
75 
76  void DragPan(int dx,int dy);
77  void DragRotate(int dx,int dy);
78  void DragZoom(int dx,int dy);
79  void DragTruck(int dx,int dy);
80 
81  void Set2DMode(bool mode=true);
82  void DisplayCameraTarget();
83  void CenterCameraOn(const Math3D::AABB3D& bbox);
84  void ClickRay(int x,int y,Math3D::Vector3& src,Math3D::Vector3& dir) const;
85 
86  void WriteDisplaySettings(std::ostream& out) const;
87  void ReadDisplaySettings(std::istream& in);
88 
89  Camera::Viewport viewport;
90  Camera::CameraController_Orbit camera;
91  bool stereo_mode;
92  float stereo_offset;
93  Timer timer;
94  int show_view_target; float t_hide_view_target;
95  float frames_per_second; bool show_frames_per_second;
96  int frames_rendered;
97  bool mode_2d;
98 };
99 
100 } //namespace Klampt
101 
102 #endif //INTERFACE_NAVIGATION_GUI_H
virtual void Start()
Default implementation of following do nothing.
Definition: GenericGUI.h:92
A backend that processes mouse motion calls into dragging callbacks. Makes it a bit easier to determi...
Definition: NavigationGUI.h:15
virtual void DoCtrlDrag(int dx, int dy, int button)
Overload this for control-dragging.
Definition: NavigationGUI.h:31
virtual void DoAltDrag(int dx, int dy, int button)
Overload this for alt-dragging.
Definition: NavigationGUI.h:33
virtual void DoPassiveMouseMove(int x, int y)
Overload this to handle plain, non-dragging mouse motion events.
Definition: NavigationGUI.h:37
virtual void DoShiftDrag(int dx, int dy, int button)
Overload this for shift-dragging.
Definition: NavigationGUI.h:35
Definition: GenericGUI.h:86
virtual void DoFreeDrag(int dx, int dy, int button)
Overload this for regular (non-modified) dragging.
Definition: NavigationGUI.h:29
A backend that manages a camera and performs OpenGL scene management.
Definition: NavigationGUI.h:51
Definition: ContactDistance.h:6