]> git.mxchange.org Git - flightgear.git/blob - src/Main/fg_os.hxx
Merge branch 'next' of D:\Git_New\flightgear into next
[flightgear.git] / src / Main / fg_os.hxx
1 #ifndef _FG_OS_HXX
2 #define _FG_OS_HXX
3
4 #ifdef HAVE_CONFIG_H
5 #  include <config.h>
6 #endif
7
8 #include <string>
9 #include <vector>
10
11 #include <osg/ref_ptr>
12 #include <osg/Camera>
13 #include <osg/GraphicsContext>
14
15
16 enum { MOUSE_BUTTON_LEFT,
17        MOUSE_BUTTON_MIDDLE,
18        MOUSE_BUTTON_RIGHT };
19
20 enum { MOUSE_BUTTON_DOWN,
21        MOUSE_BUTTON_UP };
22
23 enum { MOUSE_CURSOR_NONE,
24        MOUSE_CURSOR_POINTER,
25        MOUSE_CURSOR_WAIT,
26        MOUSE_CURSOR_CROSSHAIR,
27        MOUSE_CURSOR_LEFTRIGHT,
28        MOUSE_CURSOR_TOPSIDE,
29        MOUSE_CURSOR_BOTTOMSIDE,
30        MOUSE_CURSOR_LEFTSIDE,
31        MOUSE_CURSOR_RIGHTSIDE,
32        MOUSE_CURSOR_TOPLEFT,
33        MOUSE_CURSOR_TOPRIGHT,
34        MOUSE_CURSOR_BOTTOMLEFT,
35        MOUSE_CURSOR_BOTTOMRIGHT,
36 };
37
38 enum { KEYMOD_NONE     = 0,
39        KEYMOD_RELEASED = 1, // Not a mod key, indicates "up" action
40        KEYMOD_SHIFT    = 2,
41        KEYMOD_CTRL     = 4,
42        KEYMOD_ALT      = 8,
43        KEYMOD_META     = 16,
44        KEYMOD_SUPER    = 32,
45        KEYMOD_HYPER    = 64,
46        KEYMOD_MAX      = 128 };
47
48 // A note on key codes: none are defined here.  FlightGear has no
49 // hard-coded interpretations of codes other than modifier keys, so we
50 // can get away with that.  The only firm requirement is that the
51 // codes passed to the fgKeyHandler function be correctly interpreted
52 // by the PUI library.  Users who need to hard-code key codes
53 // (probably not a good idea in any case) can use the pu.hxx header
54 // for definitions.
55
56 //
57 // OS integration functions
58 //
59
60 void fgOSInit(int* argc, char** argv);
61 void fgOSOpenWindow(bool stencil);
62 void fgOSFullScreen();
63 int fgOSMainLoop();
64 void fgOSExit(int code);
65
66 void fgSetMouseCursor(int cursor);
67 int  fgGetMouseCursor();
68 void fgWarpMouse(int x, int y);
69
70 int  fgGetKeyModifiers();
71
72 //
73 // Callbacks and registration API
74 //
75
76 namespace osg { class Camera; class GraphicsContext; }
77 namespace osgGA { class GUIEventAdapter; }
78
79 typedef void (*fgIdleHandler)();
80 typedef void (*fgDrawHandler)();
81 typedef void (*fgWindowResizeHandler)(int w, int h);
82
83 typedef void (*fgKeyHandler)(int key, int keymod, int mousex, int mousey);
84 typedef void (*fgMouseClickHandler)(int button, int updown, int x, int y, bool mainWindow, const osgGA::GUIEventAdapter*);
85 typedef void (*fgMouseMotionHandler)(int x, int y);
86
87 void fgRegisterIdleHandler(fgIdleHandler func);
88 void fgRegisterDrawHandler(fgDrawHandler func);
89 void fgRegisterWindowResizeHandler(fgWindowResizeHandler func);
90
91 void fgRegisterKeyHandler(fgKeyHandler func);
92 void fgRegisterMouseClickHandler(fgMouseClickHandler func);
93 void fgRegisterMouseMotionHandler(fgMouseMotionHandler func);
94 #endif // _FG_OS_HXX