mirror of
https://github.com/odin-lang/Odin.git
synced 2026-06-14 14:23:43 +00:00
424 lines
9.9 KiB
Odin
424 lines
9.9 KiB
Odin
package glfw
|
|
|
|
/* Config */
|
|
GLFW_SHARED :: #config(GLFW_SHARED, false)
|
|
|
|
/*** Constants ***/
|
|
/* Versions */
|
|
VERSION_MAJOR :: 3
|
|
VERSION_MINOR :: 4
|
|
VERSION_REVISION :: 0
|
|
|
|
/* 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
|
|
CURSOR_UNAVAILABLE :: 0x0001000B
|
|
FEATURE_UNAVAILABLE :: 0x0001000C
|
|
FEATURE_UNIMPLEMENTED :: 0x0001000D
|
|
PLATFORM_UNAVAILABLE :: 0x0001000E
|
|
|
|
/* 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
|
|
MOUSE_PASSTHROUGH :: 0x0002000D
|
|
POSITION_X :: 0x0002000E
|
|
POSITION_Y :: 0x0002000F
|
|
|
|
/* 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
|
|
CONTEXT_DEBUG :: 0x00022007
|
|
OPENGL_DEBUG_CONTEXT :: CONTEXT_DEBUG // Backwards compatibility
|
|
OPENGL_PROFILE :: 0x00022008
|
|
CONTEXT_RELEASE_BEHAVIOR :: 0x00022009
|
|
CONTEXT_NO_ERROR :: 0x0002200A
|
|
CONTEXT_CREATION_API :: 0x0002200B
|
|
SCALE_TO_MONITOR :: 0x0002200C
|
|
SCALE_FRAMEBUFFER :: 0x0002200D
|
|
|
|
/* Cross platform attributes */
|
|
COCOA_RETINA_FRAMEBUFFER :: 0x00023001
|
|
COCOA_FRAME_NAME :: 0x00023002
|
|
COCOA_GRAPHICS_SWITCHING :: 0x00023003
|
|
X11_CLASS_NAME :: 0x00024001
|
|
X11_INSTANCE_NAME :: 0x00024002
|
|
WIN32_KEYBOARD_MENU :: 0x00025001
|
|
WIN32_SHOWDEFAULT :: 0x00025002
|
|
WAYLAND_APP_ID :: 0x00026001
|
|
|
|
/* 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
|
|
CURSOR_CAPTURED :: 0x00034004
|
|
|
|
/* Mouse motion */
|
|
RAW_MOUSE_MOTION :: 0x00033005
|
|
|
|
/* 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
|
|
|
|
ANGLE_PLATFORM_TYPE_NONE :: 0x00037001
|
|
ANGLE_PLATFORM_TYPE_OPENGL :: 0x00037002
|
|
ANGLE_PLATFORM_TYPE_OPENGLES :: 0x00037003
|
|
ANGLE_PLATFORM_TYPE_D3D9 :: 0x00037004
|
|
ANGLE_PLATFORM_TYPE_D3D11 :: 0x00037005
|
|
ANGLE_PLATFORM_TYPE_VULKAN :: 0x00037007
|
|
ANGLE_PLATFORM_TYPE_METAL :: 0x00037008
|
|
|
|
WAYLAND_PREFER_LIBDECOR :: 0x00038001
|
|
WAYLAND_DISABLE_LIBDECOR :: 0x00038002
|
|
|
|
ANY_POSITION :: 0x80000000
|
|
|
|
/* Types of cursors */
|
|
ARROW_CURSOR :: 0x00036001
|
|
IBEAM_CURSOR :: 0x00036002
|
|
CROSSHAIR_CURSOR :: 0x00036003
|
|
POINTING_HAND_CURSOR :: 0x00036004
|
|
RESIZE_EW_CURSOR :: 0x00036005
|
|
RESIZE_NS_CURSOR :: 0x00036006
|
|
RESIZE_NWSE_CURSOR :: 0x00036007
|
|
RESIZE_NESW_CURSOR :: 0x00036008
|
|
RESIZE_ALL_CURSOR :: 0x00036009
|
|
NOT_ALLOWED_CURSOR :: 0x0003600A
|
|
|
|
/* Backwards compatibility cursors. */
|
|
HRESIZE_CURSOR :: RESIZE_EW_CURSOR
|
|
VRESIZE_CURSOR :: RESIZE_NS_CURSOR
|
|
HAND_CURSOR :: POINTING_HAND_CURSOR
|
|
|
|
/* Joystick? */
|
|
CONNECTED :: 0x00040001
|
|
DISCONNECTED :: 0x00040002
|
|
|
|
JOYSTICK_HAT_BUTTONS :: 0x00050001
|
|
ANGLE_PLATFORM_TYPE :: 0x00050002
|
|
PLATFORM :: 0x00050003
|
|
|
|
/* Platform specific init hints. */
|
|
COCOA_CHDIR_RESOURCES :: 0x00051001
|
|
COCOA_MENUBAR :: 0x00051002
|
|
X11_XCB_VULKAN_SURFACE :: 0x00052001
|
|
WAYLAND_LIBDECOR :: 0x00053001
|
|
|
|
ANY_PLATFORM :: 0x00060000
|
|
PLATFORM_WIN32 :: 0x00060001
|
|
PLATFORM_COCOA :: 0x00060002
|
|
PLATFORM_WAYLAND :: 0x00060003
|
|
PLATFORM_X11 :: 0x00060004
|
|
PLATFORM_NULL :: 0x00060005
|
|
|
|
/* */
|
|
DONT_CARE :: -1
|