#ifndef APP_H_
#define APP_H_
+#include "texture.h"
+#include "scene.h"
+#include "exhibit.h"
+
extern long time_msec;
extern int win_width, win_height;
extern float win_aspect;
extern bool opt_gear_wireframe;
+extern bool fb_srgb;
+
+extern TextureSet texman;
+extern SceneSet sceneman;
+
+extern unsigned int sdr_ltmap, sdr_ltmap_notex;
+
+extern ExSelection exsel_active; // active (info/interact) exhibit
+extern ExSelection exsel_grab_left, exsel_grab_right; // grabbed on each hand
+extern ExSelection exsel_hover; // hover
+
+extern int fpexcept_enabled; // int so that C modules may fwd-delcare and use it
enum {
MOD_SHIFT = 1,
MOD_CTRL = 4
};
+/* special keys */
+enum {
+ KEY_DEL = 127,
+ KEY_LEFT,
+ KEY_RIGHT,
+ KEY_UP,
+ KEY_DOWN,
+ KEY_PGUP,
+ KEY_PGDOWN,
+ KEY_HOME,
+ KEY_END,
+ KEY_F1,
+ KEY_F2,
+ KEY_F3,
+ KEY_F4,
+ KEY_F5,
+ KEY_F6,
+ KEY_F7,
+ KEY_F8,
+ KEY_F9,
+ KEY_F10,
+ KEY_F11,
+ KEY_F12
+};
+
+/* XXX make sure these match with SDL_GameControllerButton */
+enum {
+ GPAD_A,
+ GPAD_B,
+ GPAD_X,
+ GPAD_Y,
+ GPAD_BACK,
+ GPAD_GUIDE,
+ GPAD_START,
+ GPAD_LSTICK,
+ GPAD_RSTICK,
+ GPAD_L,
+ GPAD_R,
+ GPAD_UP,
+ GPAD_DOWN,
+ GPAD_LEFT,
+ GPAD_RIGHT,
+};
+
bool app_init(int argc, char **argv);
void app_cleanup();
void app_mouse_button(int bn, bool pressed, int x, int y);
void app_mouse_motion(int x, int y);
void app_mouse_delta(int dx, int dy);
+void app_mouse_wheel(int dir);
+
+void app_gamepad_axis(int axis, float val);
+void app_gamepad_button(int bn, bool pressed);
// the following functions are implemented by the backend (main.cc)
void app_quit();