11 #include <osg/ref_ptr>
13 #include <osg/GraphicsContext>
16 enum { MOUSE_BUTTON_LEFT,
20 enum { MOUSE_BUTTON_DOWN,
23 enum { MOUSE_CURSOR_NONE,
26 MOUSE_CURSOR_CROSSHAIR,
27 MOUSE_CURSOR_LEFTRIGHT };
29 enum { KEYMOD_NONE = 0,
30 KEYMOD_RELEASED = 1, // Not a mod key, indicates "up" action
39 // A note on key codes: none are defined here. FlightGear has no
40 // hard-coded interpretations of codes other than modifier keys, so we
41 // can get away with that. The only firm requirement is that the
42 // codes passed to the fgKeyHandler function be correctly interpreted
43 // by the PUI library. Users who need to hard-code key codes
44 // (probably not a good idea in any case) can use the pu.hxx header
48 // OS integration functions
51 void fgOSInit(int* argc, char** argv);
52 void fgOSOpenWindow(bool stencil);
53 void fgOSFullScreen();
55 void fgOSExit(int code);
57 void fgSetMouseCursor(int cursor);
58 int fgGetMouseCursor();
59 void fgWarpMouse(int x, int y);
61 int fgGetKeyModifiers();
63 void fgRequestRedraw();
66 // Callbacks and registration API
69 namespace osg { class Camera; class GraphicsContext; }
70 namespace osgGA { class GUIEventAdapter; }
72 typedef void (*fgIdleHandler)();
73 typedef void (*fgDrawHandler)();
74 typedef void (*fgWindowResizeHandler)(int w, int h);
76 typedef void (*fgKeyHandler)(int key, int keymod, int mousex, int mousey);
77 typedef void (*fgMouseClickHandler)(int button, int updown, int x, int y, bool mainWindow, const osgGA::GUIEventAdapter*);
78 typedef void (*fgMouseMotionHandler)(int x, int y);
80 void fgRegisterIdleHandler(fgIdleHandler func);
81 void fgRegisterDrawHandler(fgDrawHandler func);
82 void fgRegisterWindowResizeHandler(fgWindowResizeHandler func);
84 void fgRegisterKeyHandler(fgKeyHandler func);
85 void fgRegisterMouseClickHandler(fgMouseClickHandler func);
86 void fgRegisterMouseMotionHandler(fgMouseMotionHandler func);