mirror of
https://github.com/Ed94/Odin.git
synced 2026-07-14 07:01:25 -07:00
373 lines
8.6 KiB
Odin
373 lines
8.6 KiB
Odin
package glfw
|
|
|
|
/*** Constants ***/
|
|
/* Versions */
|
|
VERSION_MAJOR :: 3;
|
|
VERSION_MINOR :: 3;
|
|
VERSION_REVISION :: 4;
|
|
|
|
/* Booleans */
|
|
TRUE :: true;
|
|
FALSE :: false;
|
|
|
|
/* Button/Key states */
|
|
RELEASE :: 0;
|
|
PRESS :: 1;
|
|
REPEAT :: 2;
|
|
|
|
/* Joystick hat states. */
|
|
HAT_CENTERED :: 0;
|
|
HAT_UP :: 1;
|
|
HAT_RIGHT :: 2;
|
|
HAT_DOWN :: 4;
|
|
HAT_LEFT :: 8;
|
|
HAT_RIGHT_UP :: (HAT_RIGHT | HAT_UP);
|
|
HAT_RIGHT_DOWN :: (HAT_RIGHT | HAT_DOWN);
|
|
HAT_LEFT_UP :: (HAT_LEFT | HAT_UP);
|
|
HAT_LEFT_DOWN :: (HAT_LEFT | HAT_DOWN);
|
|
|
|
/* The unknown key */
|
|
KEY_UNKNOWN :: -1;
|
|
|
|
/** Printable keys **/
|
|
|
|
/* Named printable keys */
|
|
KEY_SPACE :: 32;
|
|
KEY_APOSTROPHE :: 39; /* ' */
|
|
KEY_COMMA :: 44; /* , */
|
|
KEY_MINUS :: 45; /* - */
|
|
KEY_PERIOD :: 46; /* . */
|
|
KEY_SLASH :: 47; /* / */
|
|
KEY_SEMICOLON :: 59; /* ; */
|
|
KEY_EQUAL :: 61; /* :: */
|
|
KEY_LEFT_BRACKET :: 91; /* [ */
|
|
KEY_BACKSLASH :: 92; /* \ */
|
|
KEY_RIGHT_BRACKET :: 93; /* ] */
|
|
KEY_GRAVE_ACCENT :: 96; /* ` */
|
|
KEY_WORLD_1 :: 161; /* non-US #1 */
|
|
KEY_WORLD_2 :: 162; /* non-US #2 */
|
|
|
|
/* Alphanumeric characters */
|
|
KEY_0 :: 48;
|
|
KEY_1 :: 49;
|
|
KEY_2 :: 50;
|
|
KEY_3 :: 51;
|
|
KEY_4 :: 52;
|
|
KEY_5 :: 53;
|
|
KEY_6 :: 54;
|
|
KEY_7 :: 55;
|
|
KEY_8 :: 56;
|
|
KEY_9 :: 57;
|
|
|
|
KEY_A :: 65;
|
|
KEY_B :: 66;
|
|
KEY_C :: 67;
|
|
KEY_D :: 68;
|
|
KEY_E :: 69;
|
|
KEY_F :: 70;
|
|
KEY_G :: 71;
|
|
KEY_H :: 72;
|
|
KEY_I :: 73;
|
|
KEY_J :: 74;
|
|
KEY_K :: 75;
|
|
KEY_L :: 76;
|
|
KEY_M :: 77;
|
|
KEY_N :: 78;
|
|
KEY_O :: 79;
|
|
KEY_P :: 80;
|
|
KEY_Q :: 81;
|
|
KEY_R :: 82;
|
|
KEY_S :: 83;
|
|
KEY_T :: 84;
|
|
KEY_U :: 85;
|
|
KEY_V :: 86;
|
|
KEY_W :: 87;
|
|
KEY_X :: 88;
|
|
KEY_Y :: 89;
|
|
KEY_Z :: 90;
|
|
|
|
|
|
/** Function keys **/
|
|
|
|
/* Named non-printable keys */
|
|
KEY_ESCAPE :: 256;
|
|
KEY_ENTER :: 257;
|
|
KEY_TAB :: 258;
|
|
KEY_BACKSPACE :: 259;
|
|
KEY_INSERT :: 260;
|
|
KEY_DELETE :: 261;
|
|
KEY_RIGHT :: 262;
|
|
KEY_LEFT :: 263;
|
|
KEY_DOWN :: 264;
|
|
KEY_UP :: 265;
|
|
KEY_PAGE_UP :: 266;
|
|
KEY_PAGE_DOWN :: 267;
|
|
KEY_HOME :: 268;
|
|
KEY_END :: 269;
|
|
KEY_CAPS_LOCK :: 280;
|
|
KEY_SCROLL_LOCK :: 281;
|
|
KEY_NUM_LOCK :: 282;
|
|
KEY_PRINT_SCREEN :: 283;
|
|
KEY_PAUSE :: 284;
|
|
|
|
/* Function keys */
|
|
KEY_F1 :: 290;
|
|
KEY_F2 :: 291;
|
|
KEY_F3 :: 292;
|
|
KEY_F4 :: 293;
|
|
KEY_F5 :: 294;
|
|
KEY_F6 :: 295;
|
|
KEY_F7 :: 296;
|
|
KEY_F8 :: 297;
|
|
KEY_F9 :: 298;
|
|
KEY_F10 :: 299;
|
|
KEY_F11 :: 300;
|
|
KEY_F12 :: 301;
|
|
KEY_F13 :: 302;
|
|
KEY_F14 :: 303;
|
|
KEY_F15 :: 304;
|
|
KEY_F16 :: 305;
|
|
KEY_F17 :: 306;
|
|
KEY_F18 :: 307;
|
|
KEY_F19 :: 308;
|
|
KEY_F20 :: 309;
|
|
KEY_F21 :: 310;
|
|
KEY_F22 :: 311;
|
|
KEY_F23 :: 312;
|
|
KEY_F24 :: 313;
|
|
KEY_F25 :: 314;
|
|
|
|
/* Keypad numbers */
|
|
KEY_KP_0 :: 320;
|
|
KEY_KP_1 :: 321;
|
|
KEY_KP_2 :: 322;
|
|
KEY_KP_3 :: 323;
|
|
KEY_KP_4 :: 324;
|
|
KEY_KP_5 :: 325;
|
|
KEY_KP_6 :: 326;
|
|
KEY_KP_7 :: 327;
|
|
KEY_KP_8 :: 328;
|
|
KEY_KP_9 :: 329;
|
|
|
|
/* Keypad named function keys */
|
|
KEY_KP_DECIMAL :: 330;
|
|
KEY_KP_DIVIDE :: 331;
|
|
KEY_KP_MULTIPLY :: 332;
|
|
KEY_KP_SUBTRACT :: 333;
|
|
KEY_KP_ADD :: 334;
|
|
KEY_KP_ENTER :: 335;
|
|
KEY_KP_EQUAL :: 336;
|
|
|
|
/* Modifier keys */
|
|
KEY_LEFT_SHIFT :: 340;
|
|
KEY_LEFT_CONTROL :: 341;
|
|
KEY_LEFT_ALT :: 342;
|
|
KEY_LEFT_SUPER :: 343;
|
|
KEY_RIGHT_SHIFT :: 344;
|
|
KEY_RIGHT_CONTROL :: 345;
|
|
KEY_RIGHT_ALT :: 346;
|
|
KEY_RIGHT_SUPER :: 347;
|
|
KEY_MENU :: 348;
|
|
|
|
KEY_LAST :: KEY_MENU;
|
|
|
|
/* Bitmask for modifier keys */
|
|
MOD_SHIFT :: 0x0001;
|
|
MOD_CONTROL :: 0x0002;
|
|
MOD_ALT :: 0x0004;
|
|
MOD_SUPER :: 0x0008;
|
|
MOD_CAPS_LOCK :: 0x0010;
|
|
MOD_NUM_LOCK :: 0x0020;
|
|
|
|
/* Mouse buttons */
|
|
MOUSE_BUTTON_1 :: 0;
|
|
MOUSE_BUTTON_2 :: 1;
|
|
MOUSE_BUTTON_3 :: 2;
|
|
MOUSE_BUTTON_4 :: 3;
|
|
MOUSE_BUTTON_5 :: 4;
|
|
MOUSE_BUTTON_6 :: 5;
|
|
MOUSE_BUTTON_7 :: 6;
|
|
MOUSE_BUTTON_8 :: 7;
|
|
|
|
/* Mousebutton aliases */
|
|
MOUSE_BUTTON_LAST :: MOUSE_BUTTON_8;
|
|
MOUSE_BUTTON_LEFT :: MOUSE_BUTTON_1;
|
|
MOUSE_BUTTON_RIGHT :: MOUSE_BUTTON_2;
|
|
MOUSE_BUTTON_MIDDLE :: MOUSE_BUTTON_3;
|
|
|
|
/* Joystick buttons */
|
|
JOYSTICK_1 :: 0;
|
|
JOYSTICK_2 :: 1;
|
|
JOYSTICK_3 :: 2;
|
|
JOYSTICK_4 :: 3;
|
|
JOYSTICK_5 :: 4;
|
|
JOYSTICK_6 :: 5;
|
|
JOYSTICK_7 :: 6;
|
|
JOYSTICK_8 :: 7;
|
|
JOYSTICK_9 :: 8;
|
|
JOYSTICK_10 :: 9;
|
|
JOYSTICK_11 :: 10;
|
|
JOYSTICK_12 :: 11;
|
|
JOYSTICK_13 :: 12;
|
|
JOYSTICK_14 :: 13;
|
|
JOYSTICK_15 :: 14;
|
|
JOYSTICK_16 :: 15;
|
|
|
|
JOYSTICK_LAST :: JOYSTICK_16;
|
|
|
|
/* Gamepad buttons */
|
|
GAMEPAD_BUTTON_A :: 0;
|
|
GAMEPAD_BUTTON_B :: 1;
|
|
GAMEPAD_BUTTON_X :: 2;
|
|
GAMEPAD_BUTTON_Y :: 3;
|
|
GAMEPAD_BUTTON_LEFT_BUMPER :: 4;
|
|
GAMEPAD_BUTTON_RIGHT_BUMPER :: 5;
|
|
GAMEPAD_BUTTON_BACK :: 6;
|
|
GAMEPAD_BUTTON_START :: 7;
|
|
GAMEPAD_BUTTON_GUIDE :: 8;
|
|
GAMEPAD_BUTTON_LEFT_THUMB :: 9;
|
|
GAMEPAD_BUTTON_RIGHT_THUMB :: 10;
|
|
GAMEPAD_BUTTON_DPAD_UP :: 11;
|
|
GAMEPAD_BUTTON_DPAD_RIGHT :: 12;
|
|
GAMEPAD_BUTTON_DPAD_DOWN :: 13;
|
|
GAMEPAD_BUTTON_DPAD_LEFT :: 14;
|
|
GAMEPAD_BUTTON_LAST :: GAMEPAD_BUTTON_DPAD_LEFT;
|
|
|
|
GAMEPAD_BUTTON_CROSS :: GAMEPAD_BUTTON_A;
|
|
GAMEPAD_BUTTON_CIRCLE :: GAMEPAD_BUTTON_B;
|
|
GAMEPAD_BUTTON_SQUARE :: GAMEPAD_BUTTON_X;
|
|
GAMEPAD_BUTTON_TRIANGLE :: GAMEPAD_BUTTON_Y;
|
|
|
|
/* Gamepad axes */
|
|
GAMEPAD_AXIS_LEFT_X :: 0;
|
|
GAMEPAD_AXIS_LEFT_Y :: 1;
|
|
GAMEPAD_AXIS_RIGHT_X :: 2;
|
|
GAMEPAD_AXIS_RIGHT_Y :: 3;
|
|
GAMEPAD_AXIS_LEFT_TRIGGER :: 4;
|
|
GAMEPAD_AXIS_RIGHT_TRIGGER :: 5;
|
|
GAMEPAD_AXIS_LAST :: GAMEPAD_AXIS_RIGHT_TRIGGER;
|
|
|
|
/* Error constants */
|
|
NO_ERROR :: 0x00000000;
|
|
NOT_INITIALIZED :: 0x00010001;
|
|
NO_CURRENT_CONTEXT :: 0x00010002;
|
|
INVALID_ENUM :: 0x00010003;
|
|
INVALID_VALUE :: 0x00010004;
|
|
OUT_OF_MEMORY :: 0x00010005;
|
|
API_UNAVAILABLE :: 0x00010006;
|
|
VERSION_UNAVAILABLE :: 0x00010007;
|
|
PLATFORM_ERROR :: 0x00010008;
|
|
FORMAT_UNAVAILABLE :: 0x00010009;
|
|
NO_WINDOW_CONTEXT :: 0x0001000A;
|
|
|
|
/* Window attributes */
|
|
FOCUSED :: 0x00020001;
|
|
ICONIFIED :: 0x00020002;
|
|
RESIZABLE :: 0x00020003;
|
|
VISIBLE :: 0x00020004;
|
|
DECORATED :: 0x00020005;
|
|
AUTO_ICONIFY :: 0x00020006;
|
|
FLOATING :: 0x00020007;
|
|
MAXIMIZED :: 0x00020008;
|
|
CENTER_CURSOR :: 0x00020009;
|
|
TRANSPARENT_FRAMEBUFFER :: 0x0002000A;
|
|
HOVERED :: 0x0002000B;
|
|
FOCUS_ON_SHOW :: 0x0002000C;
|
|
|
|
/* Pixel window attributes */
|
|
RED_BITS :: 0x00021001;
|
|
GREEN_BITS :: 0x00021002;
|
|
BLUE_BITS :: 0x00021003;
|
|
ALPHA_BITS :: 0x00021004;
|
|
DEPTH_BITS :: 0x00021005;
|
|
STENCIL_BITS :: 0x00021006;
|
|
ACCUM_RED_BITS :: 0x00021007;
|
|
ACCUM_GREEN_BITS :: 0x00021008;
|
|
ACCUM_BLUE_BITS :: 0x00021009;
|
|
ACCUM_ALPHA_BITS :: 0x0002100A;
|
|
AUX_BUFFERS :: 0x0002100B;
|
|
STEREO :: 0x0002100C;
|
|
SAMPLES :: 0x0002100D;
|
|
SRGB_CAPABLE :: 0x0002100E;
|
|
REFRESH_RATE :: 0x0002100F;
|
|
DOUBLEBUFFER :: 0x00021010;
|
|
|
|
/* Context window attributes */
|
|
CLIENT_API :: 0x00022001;
|
|
CONTEXT_VERSION_MAJOR :: 0x00022002;
|
|
CONTEXT_VERSION_MINOR :: 0x00022003;
|
|
CONTEXT_REVISION :: 0x00022004;
|
|
CONTEXT_ROBUSTNESS :: 0x00022005;
|
|
OPENGL_FORWARD_COMPAT :: 0x00022006;
|
|
OPENGL_DEBUG_CONTEXT :: 0x00022007;
|
|
OPENGL_PROFILE :: 0x00022008;
|
|
CONTEXT_RELEASE_BEHAVIOR :: 0x00022009;
|
|
CONTEXT_NO_ERROR :: 0x0002200A;
|
|
CONTEXT_CREATION_API :: 0x0002200B;
|
|
SCALE_TO_MONITOR :: 0x0002200C;
|
|
|
|
/* Cross platform attributes */
|
|
COCOA_RETINA_FRAMEBUFFER :: 0x00023001;
|
|
COCOA_FRAME_NAME :: 0x00023002;
|
|
COCOA_GRAPHICS_SWITCHING :: 0x00023003;
|
|
X11_CLASS_NAME :: 0x00024001;
|
|
X11_INSTANCE_NAME :: 0x00024002;
|
|
|
|
/* APIs */
|
|
NO_API :: 0;
|
|
OPENGL_API :: 0x00030001;
|
|
OPENGL_ES_API :: 0x00030002;
|
|
|
|
/* Robustness? */
|
|
NO_ROBUSTNESS :: 0;
|
|
NO_RESET_NOTIFICATION :: 0x00031001;
|
|
LOSE_CONTEXT_ON_RESET :: 0x00031002;
|
|
|
|
/* OpenGL Profiles */
|
|
OPENGL_ANY_PROFILE :: 0;
|
|
OPENGL_CORE_PROFILE :: 0x00032001;
|
|
OPENGL_COMPAT_PROFILE :: 0x00032002;
|
|
|
|
/* Cursor draw state and whether keys are sticky */
|
|
CURSOR :: 0x00033001;
|
|
STICKY_KEYS :: 0x00033002;
|
|
STICKY_MOUSE_BUTTONS :: 0x00033003;
|
|
LOCK_KEY_MODS :: 0x00033004;
|
|
|
|
/* Cursor draw state */
|
|
CURSOR_NORMAL :: 0x00034001;
|
|
CURSOR_HIDDEN :: 0x00034002;
|
|
CURSOR_DISABLED :: 0x00034003;
|
|
|
|
/* Behavior? */
|
|
ANY_RELEASE_BEHAVIOR :: 0;
|
|
RELEASE_BEHAVIOR_FLUSH :: 0x00035001;
|
|
RELEASE_BEHAVIOR_NONE :: 0x00035002;
|
|
|
|
/* Context API ? */
|
|
NATIVE_CONTEXT_API :: 0x00036001;
|
|
EGL_CONTEXT_API :: 0x00036002;
|
|
OSMESA_CONTEXT_API :: 0x00036003;
|
|
|
|
/* Types of cursors */
|
|
ARROW_CURSOR :: 0x00036001;
|
|
IBEAM_CURSOR :: 0x00036002;
|
|
CROSSHAIR_CURSOR :: 0x00036003;
|
|
HAND_CURSOR :: 0x00036004;
|
|
HRESIZE_CURSOR :: 0x00036005;
|
|
VRESIZE_CURSOR :: 0x00036006;
|
|
RESIZE_NWSE_CURSOR :: 0x00036007;
|
|
RESIZE_NESW_CURSOR :: 0x00036008;
|
|
|
|
/* Joystick? */
|
|
CONNECTED :: 0x00040001;
|
|
DISCONNECTED :: 0x00040002;
|
|
|
|
/* macOS specific init hint. */
|
|
JOYSTICK_HAT_BUTTONS :: 0x00050001;
|
|
COCOA_CHDIR_RESOURCES :: 0x00051001;
|
|
COCOA_MENUBAR :: 0x00051002;
|
|
|
|
/* */
|
|
DONT_CARE :: -1;
|