Events
Application events.
Types
oc_event_type
typedef enum oc_event_type
{
OC_EVENT_NONE = 0,
OC_EVENT_KEYBOARD_MODS = 1,
OC_EVENT_KEYBOARD_KEY = 2,
OC_EVENT_KEYBOARD_CHAR = 3,
OC_EVENT_MOUSE_BUTTON = 4,
OC_EVENT_MOUSE_MOVE = 5,
OC_EVENT_MOUSE_WHEEL = 6,
OC_EVENT_MOUSE_ENTER = 7,
OC_EVENT_MOUSE_LEAVE = 8,
OC_EVENT_CLIPBOARD_PASTE = 9,
OC_EVENT_WINDOW_RESIZE = 10,
OC_EVENT_WINDOW_MOVE = 11,
OC_EVENT_WINDOW_FOCUS = 12,
OC_EVENT_WINDOW_UNFOCUS = 13,
OC_EVENT_WINDOW_HIDE = 14,
OC_EVENT_WINDOW_SHOW = 15,
OC_EVENT_WINDOW_CLOSE = 16,
OC_EVENT_PATHDROP = 17,
OC_EVENT_FRAME = 18,
OC_EVENT_QUIT = 19
} oc_event_type;
This enum defines the type events that can be sent to the application by the runtime. This determines which member of the oc_event union field is active.
Enum Constants
OC_EVENT_NONENo event. That could be used simply to wake up the application.OC_EVENT_KEYBOARD_MODSA modifier key event. This event is sent when a key such as Alt, Control, Command or Shift are pressed, released, or repeated. Thekeyfield contains the event's details.OC_EVENT_KEYBOARD_KEYA key event. This event is sent when a normal key is pressed, released, or repeated. Thekeyfield contains the event's details.OC_EVENT_KEYBOARD_CHARA character input event. This event is sent when an input character is produced by the keyboard. Thecharacterfield contains the event's details.OC_EVENT_MOUSE_BUTTONA mouse button event. This is event sent when one of the mouse buttons is pressed, released, or clicked. Thekeyfield contains the event's details.OC_EVENT_MOUSE_MOVEA mouse move event. This is event sent when the mouse is moved. Themousefield contains the event's details.OC_EVENT_MOUSE_WHEELA mouse wheel event. This is event sent when the mouse wheel is moved (or when a trackpad is scrolled). Themousefield contains the event's details.OC_EVENT_MOUSE_ENTERA mouse enter event. This event is sent when the mouse enters the application's window. Themousefield contains the event's details.OC_EVENT_MOUSE_LEAVEA mouse leave event. This event is sent when the mouse leaves the application's window.OC_EVENT_CLIPBOARD_PASTEA clipboard paste event. This event is sent when the user uses the paste shortcut while the application window has focus.OC_EVENT_WINDOW_RESIZEA resize event. This event is sent when the application's window is resized. Themovefield contains the event's details.OC_EVENT_WINDOW_MOVEA move event. This event is sent when the window is moved. Themovefield contains the event's details.OC_EVENT_WINDOW_FOCUSA focus event. This event is sent when the application gains focus.OC_EVENT_WINDOW_UNFOCUSAn unfocus event. This event is sent when the application looses focus.OC_EVENT_WINDOW_HIDEA hide event. This event is sent when the application's window is hidden or minimized.OC_EVENT_WINDOW_SHOWA show event. This event is sent when the application's window is shown or de-minimized.OC_EVENT_WINDOW_CLOSEA close event. This event is sent when the window is about to be closed.OC_EVENT_PATHDROPA path drop event. This event is sent when the user drops files onto the application's window. Thepathsfield contains the event's details.OC_EVENT_FRAMEA frame event. This event is sent when the application should render a frame.OC_EVENT_QUITA quit event. This event is sent when the application has been requested to quit.
oc_key_action
typedef enum oc_key_action
{
OC_KEY_NO_ACTION = 0,
OC_KEY_PRESS = 1,
OC_KEY_RELEASE = 2,
OC_KEY_REPEAT = 3
} oc_key_action;
This enum describes the actions that can happen to a key.
Enum Constants
OC_KEY_NO_ACTIONNo action happened on that key.OC_KEY_PRESSThe key was pressed.OC_KEY_RELEASEThe key was released.OC_KEY_REPEATThe key was maintained pressed at least for the system's key repeat period.
oc_scan_code
typedef enum oc_scan_code
{
OC_SCANCODE_UNKNOWN = 0,
OC_SCANCODE_SPACE = 32,
OC_SCANCODE_APOSTROPHE = 39,
OC_SCANCODE_COMMA = 44,
OC_SCANCODE_MINUS = 45,
OC_SCANCODE_PERIOD = 46,
OC_SCANCODE_SLASH = 47,
OC_SCANCODE_0 = 48,
OC_SCANCODE_1 = 49,
OC_SCANCODE_2 = 50,
OC_SCANCODE_3 = 51,
OC_SCANCODE_4 = 52,
OC_SCANCODE_5 = 53,
OC_SCANCODE_6 = 54,
OC_SCANCODE_7 = 55,
OC_SCANCODE_8 = 56,
OC_SCANCODE_9 = 57,
OC_SCANCODE_SEMICOLON = 59,
OC_SCANCODE_EQUAL = 61,
OC_SCANCODE_LEFT_BRACKET = 91,
OC_SCANCODE_BACKSLASH = 92,
OC_SCANCODE_RIGHT_BRACKET = 93,
OC_SCANCODE_GRAVE_ACCENT = 96,
OC_SCANCODE_A = 97,
OC_SCANCODE_B = 98,
OC_SCANCODE_C = 99,
OC_SCANCODE_D = 100,
OC_SCANCODE_E = 101,
OC_SCANCODE_F = 102,
OC_SCANCODE_G = 103,
OC_SCANCODE_H = 104,
OC_SCANCODE_I = 105,
OC_SCANCODE_J = 106,
OC_SCANCODE_K = 107,
OC_SCANCODE_L = 108,
OC_SCANCODE_M = 109,
OC_SCANCODE_N = 110,
OC_SCANCODE_O = 111,
OC_SCANCODE_P = 112,
OC_SCANCODE_Q = 113,
OC_SCANCODE_R = 114,
OC_SCANCODE_S = 115,
OC_SCANCODE_T = 116,
OC_SCANCODE_U = 117,
OC_SCANCODE_V = 118,
OC_SCANCODE_W = 119,
OC_SCANCODE_X = 120,
OC_SCANCODE_Y = 121,
OC_SCANCODE_Z = 122,
OC_SCANCODE_WORLD_1 = 161,
OC_SCANCODE_WORLD_2 = 162,
OC_SCANCODE_ESCAPE = 256,
OC_SCANCODE_ENTER = 257,
OC_SCANCODE_TAB = 258,
OC_SCANCODE_BACKSPACE = 259,
OC_SCANCODE_INSERT = 260,
OC_SCANCODE_DELETE = 261,
OC_SCANCODE_RIGHT = 262,
OC_SCANCODE_LEFT = 263,
OC_SCANCODE_DOWN = 264,
OC_SCANCODE_UP = 265,
OC_SCANCODE_PAGE_UP = 266,
OC_SCANCODE_PAGE_DOWN = 267,
OC_SCANCODE_HOME = 268,
OC_SCANCODE_END = 269,
OC_SCANCODE_CAPS_LOCK = 280,
OC_SCANCODE_SCROLL_LOCK = 281,
OC_SCANCODE_NUM_LOCK = 282,
OC_SCANCODE_PRINT_SCREEN = 283,
OC_SCANCODE_PAUSE = 284,
OC_SCANCODE_F1 = 290,
OC_SCANCODE_F2 = 291,
OC_SCANCODE_F3 = 292,
OC_SCANCODE_F4 = 293,
OC_SCANCODE_F5 = 294,
OC_SCANCODE_F6 = 295,
OC_SCANCODE_F7 = 296,
OC_SCANCODE_F8 = 297,
OC_SCANCODE_F9 = 298,
OC_SCANCODE_F10 = 299,
OC_SCANCODE_F11 = 300,
OC_SCANCODE_F12 = 301,
OC_SCANCODE_F13 = 302,
OC_SCANCODE_F14 = 303,
OC_SCANCODE_F15 = 304,
OC_SCANCODE_F16 = 305,
OC_SCANCODE_F17 = 306,
OC_SCANCODE_F18 = 307,
OC_SCANCODE_F19 = 308,
OC_SCANCODE_F20 = 309,
OC_SCANCODE_F21 = 310,
OC_SCANCODE_F22 = 311,
OC_SCANCODE_F23 = 312,
OC_SCANCODE_F24 = 313,
OC_SCANCODE_F25 = 314,
OC_SCANCODE_KP_0 = 320,
OC_SCANCODE_KP_1 = 321,
OC_SCANCODE_KP_2 = 322,
OC_SCANCODE_KP_3 = 323,
OC_SCANCODE_KP_4 = 324,
OC_SCANCODE_KP_5 = 325,
OC_SCANCODE_KP_6 = 326,
OC_SCANCODE_KP_7 = 327,
OC_SCANCODE_KP_8 = 328,
OC_SCANCODE_KP_9 = 329,
OC_SCANCODE_KP_DECIMAL = 330,
OC_SCANCODE_KP_DIVIDE = 331,
OC_SCANCODE_KP_MULTIPLY = 332,
OC_SCANCODE_KP_SUBTRACT = 333,
OC_SCANCODE_KP_ADD = 334,
OC_SCANCODE_KP_ENTER = 335,
OC_SCANCODE_KP_EQUAL = 336,
OC_SCANCODE_LEFT_SHIFT = 340,
OC_SCANCODE_LEFT_CONTROL = 341,
OC_SCANCODE_LEFT_ALT = 342,
OC_SCANCODE_LEFT_SUPER = 343,
OC_SCANCODE_RIGHT_SHIFT = 344,
OC_SCANCODE_RIGHT_CONTROL = 345,
OC_SCANCODE_RIGHT_ALT = 346,
OC_SCANCODE_RIGHT_SUPER = 347,
OC_SCANCODE_MENU = 348,
OC_SCANCODE_COUNT = 349
} oc_scan_code;
A code representing a key's physical location. This is independent of the system's keyboard layout.
Enum Constants
OC_SCANCODE_UNKNOWNOC_SCANCODE_SPACEOC_SCANCODE_APOSTROPHEOC_SCANCODE_COMMAOC_SCANCODE_MINUSOC_SCANCODE_PERIODOC_SCANCODE_SLASHOC_SCANCODE_0OC_SCANCODE_1OC_SCANCODE_2OC_SCANCODE_3OC_SCANCODE_4OC_SCANCODE_5OC_SCANCODE_6OC_SCANCODE_7OC_SCANCODE_8OC_SCANCODE_9OC_SCANCODE_SEMICOLONOC_SCANCODE_EQUALOC_SCANCODE_LEFT_BRACKETOC_SCANCODE_BACKSLASHOC_SCANCODE_RIGHT_BRACKETOC_SCANCODE_GRAVE_ACCENTOC_SCANCODE_AOC_SCANCODE_BOC_SCANCODE_COC_SCANCODE_DOC_SCANCODE_EOC_SCANCODE_FOC_SCANCODE_GOC_SCANCODE_HOC_SCANCODE_IOC_SCANCODE_JOC_SCANCODE_KOC_SCANCODE_LOC_SCANCODE_MOC_SCANCODE_NOC_SCANCODE_OOC_SCANCODE_POC_SCANCODE_QOC_SCANCODE_ROC_SCANCODE_SOC_SCANCODE_TOC_SCANCODE_UOC_SCANCODE_VOC_SCANCODE_WOC_SCANCODE_XOC_SCANCODE_YOC_SCANCODE_ZOC_SCANCODE_WORLD_1OC_SCANCODE_WORLD_2OC_SCANCODE_ESCAPEOC_SCANCODE_ENTEROC_SCANCODE_TABOC_SCANCODE_BACKSPACEOC_SCANCODE_INSERTOC_SCANCODE_DELETEOC_SCANCODE_RIGHTOC_SCANCODE_LEFTOC_SCANCODE_DOWNOC_SCANCODE_UPOC_SCANCODE_PAGE_UPOC_SCANCODE_PAGE_DOWNOC_SCANCODE_HOMEOC_SCANCODE_ENDOC_SCANCODE_CAPS_LOCKOC_SCANCODE_SCROLL_LOCKOC_SCANCODE_NUM_LOCKOC_SCANCODE_PRINT_SCREENOC_SCANCODE_PAUSEOC_SCANCODE_F1OC_SCANCODE_F2OC_SCANCODE_F3OC_SCANCODE_F4OC_SCANCODE_F5OC_SCANCODE_F6OC_SCANCODE_F7OC_SCANCODE_F8OC_SCANCODE_F9OC_SCANCODE_F10OC_SCANCODE_F11OC_SCANCODE_F12OC_SCANCODE_F13OC_SCANCODE_F14OC_SCANCODE_F15OC_SCANCODE_F16OC_SCANCODE_F17OC_SCANCODE_F18OC_SCANCODE_F19OC_SCANCODE_F20OC_SCANCODE_F21OC_SCANCODE_F22OC_SCANCODE_F23OC_SCANCODE_F24OC_SCANCODE_F25OC_SCANCODE_KP_0OC_SCANCODE_KP_1OC_SCANCODE_KP_2OC_SCANCODE_KP_3OC_SCANCODE_KP_4OC_SCANCODE_KP_5OC_SCANCODE_KP_6OC_SCANCODE_KP_7OC_SCANCODE_KP_8OC_SCANCODE_KP_9OC_SCANCODE_KP_DECIMALOC_SCANCODE_KP_DIVIDEOC_SCANCODE_KP_MULTIPLYOC_SCANCODE_KP_SUBTRACTOC_SCANCODE_KP_ADDOC_SCANCODE_KP_ENTEROC_SCANCODE_KP_EQUALOC_SCANCODE_LEFT_SHIFTOC_SCANCODE_LEFT_CONTROLOC_SCANCODE_LEFT_ALTOC_SCANCODE_LEFT_SUPEROC_SCANCODE_RIGHT_SHIFTOC_SCANCODE_RIGHT_CONTROLOC_SCANCODE_RIGHT_ALTOC_SCANCODE_RIGHT_SUPEROC_SCANCODE_MENUOC_SCANCODE_COUNT
oc_key_code
typedef enum oc_key_code
{
OC_KEY_UNKNOWN = 0,
OC_KEY_SPACE = 32,
OC_KEY_APOSTROPHE = 39,
OC_KEY_COMMA = 44,
OC_KEY_MINUS = 45,
OC_KEY_PERIOD = 46,
OC_KEY_SLASH = 47,
OC_KEY_0 = 48,
OC_KEY_1 = 49,
OC_KEY_2 = 50,
OC_KEY_3 = 51,
OC_KEY_4 = 52,
OC_KEY_5 = 53,
OC_KEY_6 = 54,
OC_KEY_7 = 55,
OC_KEY_8 = 56,
OC_KEY_9 = 57,
OC_KEY_SEMICOLON = 59,
OC_KEY_EQUAL = 61,
OC_KEY_LEFT_BRACKET = 91,
OC_KEY_BACKSLASH = 92,
OC_KEY_RIGHT_BRACKET = 93,
OC_KEY_GRAVE_ACCENT = 96,
OC_KEY_A = 97,
OC_KEY_B = 98,
OC_KEY_C = 99,
OC_KEY_D = 100,
OC_KEY_E = 101,
OC_KEY_F = 102,
OC_KEY_G = 103,
OC_KEY_H = 104,
OC_KEY_I = 105,
OC_KEY_J = 106,
OC_KEY_K = 107,
OC_KEY_L = 108,
OC_KEY_M = 109,
OC_KEY_N = 110,
OC_KEY_O = 111,
OC_KEY_P = 112,
OC_KEY_Q = 113,
OC_KEY_R = 114,
OC_KEY_S = 115,
OC_KEY_T = 116,
OC_KEY_U = 117,
OC_KEY_V = 118,
OC_KEY_W = 119,
OC_KEY_X = 120,
OC_KEY_Y = 121,
OC_KEY_Z = 122,
OC_KEY_WORLD_1 = 161,
OC_KEY_WORLD_2 = 162,
OC_KEY_ESCAPE = 256,
OC_KEY_ENTER = 257,
OC_KEY_TAB = 258,
OC_KEY_BACKSPACE = 259,
OC_KEY_INSERT = 260,
OC_KEY_DELETE = 261,
OC_KEY_RIGHT = 262,
OC_KEY_LEFT = 263,
OC_KEY_DOWN = 264,
OC_KEY_UP = 265,
OC_KEY_PAGE_UP = 266,
OC_KEY_PAGE_DOWN = 267,
OC_KEY_HOME = 268,
OC_KEY_END = 269,
OC_KEY_CAPS_LOCK = 280,
OC_KEY_SCROLL_LOCK = 281,
OC_KEY_NUM_LOCK = 282,
OC_KEY_PRINT_SCREEN = 283,
OC_KEY_PAUSE = 284,
OC_KEY_F1 = 290,
OC_KEY_F2 = 291,
OC_KEY_F3 = 292,
OC_KEY_F4 = 293,
OC_KEY_F5 = 294,
OC_KEY_F6 = 295,
OC_KEY_F7 = 296,
OC_KEY_F8 = 297,
OC_KEY_F9 = 298,
OC_KEY_F10 = 299,
OC_KEY_F11 = 300,
OC_KEY_F12 = 301,
OC_KEY_F13 = 302,
OC_KEY_F14 = 303,
OC_KEY_F15 = 304,
OC_KEY_F16 = 305,
OC_KEY_F17 = 306,
OC_KEY_F18 = 307,
OC_KEY_F19 = 308,
OC_KEY_F20 = 309,
OC_KEY_F21 = 310,
OC_KEY_F22 = 311,
OC_KEY_F23 = 312,
OC_KEY_F24 = 313,
OC_KEY_F25 = 314,
OC_KEY_KP_0 = 320,
OC_KEY_KP_1 = 321,
OC_KEY_KP_2 = 322,
OC_KEY_KP_3 = 323,
OC_KEY_KP_4 = 324,
OC_KEY_KP_5 = 325,
OC_KEY_KP_6 = 326,
OC_KEY_KP_7 = 327,
OC_KEY_KP_8 = 328,
OC_KEY_KP_9 = 329,
OC_KEY_KP_DECIMAL = 330,
OC_KEY_KP_DIVIDE = 331,
OC_KEY_KP_MULTIPLY = 332,
OC_KEY_KP_SUBTRACT = 333,
OC_KEY_KP_ADD = 334,
OC_KEY_KP_ENTER = 335,
OC_KEY_KP_EQUAL = 336,
OC_KEY_LEFT_SHIFT = 340,
OC_KEY_LEFT_CONTROL = 341,
OC_KEY_LEFT_ALT = 342,
OC_KEY_LEFT_SUPER = 343,
OC_KEY_RIGHT_SHIFT = 344,
OC_KEY_RIGHT_CONTROL = 345,
OC_KEY_RIGHT_ALT = 346,
OC_KEY_RIGHT_SUPER = 347,
OC_KEY_MENU = 348,
OC_KEY_COUNT = 349
} oc_key_code;
A code identifying a key. The physical location of the key corresponding to a given key code depends on the system's keyboard layout.
Enum Constants
OC_KEY_UNKNOWNOC_KEY_SPACEOC_KEY_APOSTROPHEOC_KEY_COMMAOC_KEY_MINUSOC_KEY_PERIODOC_KEY_SLASHOC_KEY_0OC_KEY_1OC_KEY_2OC_KEY_3OC_KEY_4OC_KEY_5OC_KEY_6OC_KEY_7OC_KEY_8OC_KEY_9OC_KEY_SEMICOLONOC_KEY_EQUALOC_KEY_LEFT_BRACKETOC_KEY_BACKSLASHOC_KEY_RIGHT_BRACKETOC_KEY_GRAVE_ACCENTOC_KEY_AOC_KEY_BOC_KEY_COC_KEY_DOC_KEY_EOC_KEY_FOC_KEY_GOC_KEY_HOC_KEY_IOC_KEY_JOC_KEY_KOC_KEY_LOC_KEY_MOC_KEY_NOC_KEY_OOC_KEY_POC_KEY_QOC_KEY_ROC_KEY_SOC_KEY_TOC_KEY_UOC_KEY_VOC_KEY_WOC_KEY_XOC_KEY_YOC_KEY_ZOC_KEY_WORLD_1OC_KEY_WORLD_2OC_KEY_ESCAPEOC_KEY_ENTEROC_KEY_TABOC_KEY_BACKSPACEOC_KEY_INSERTOC_KEY_DELETEOC_KEY_RIGHTOC_KEY_LEFTOC_KEY_DOWNOC_KEY_UPOC_KEY_PAGE_UPOC_KEY_PAGE_DOWNOC_KEY_HOMEOC_KEY_ENDOC_KEY_CAPS_LOCKOC_KEY_SCROLL_LOCKOC_KEY_NUM_LOCKOC_KEY_PRINT_SCREENOC_KEY_PAUSEOC_KEY_F1OC_KEY_F2OC_KEY_F3OC_KEY_F4OC_KEY_F5OC_KEY_F6OC_KEY_F7OC_KEY_F8OC_KEY_F9OC_KEY_F10OC_KEY_F11OC_KEY_F12OC_KEY_F13OC_KEY_F14OC_KEY_F15OC_KEY_F16OC_KEY_F17OC_KEY_F18OC_KEY_F19OC_KEY_F20OC_KEY_F21OC_KEY_F22OC_KEY_F23OC_KEY_F24OC_KEY_F25OC_KEY_KP_0OC_KEY_KP_1OC_KEY_KP_2OC_KEY_KP_3OC_KEY_KP_4OC_KEY_KP_5OC_KEY_KP_6OC_KEY_KP_7OC_KEY_KP_8OC_KEY_KP_9OC_KEY_KP_DECIMALOC_KEY_KP_DIVIDEOC_KEY_KP_MULTIPLYOC_KEY_KP_SUBTRACTOC_KEY_KP_ADDOC_KEY_KP_ENTEROC_KEY_KP_EQUALOC_KEY_LEFT_SHIFTOC_KEY_LEFT_CONTROLOC_KEY_LEFT_ALTOC_KEY_LEFT_SUPEROC_KEY_RIGHT_SHIFTOC_KEY_RIGHT_CONTROLOC_KEY_RIGHT_ALTOC_KEY_RIGHT_SUPEROC_KEY_MENUOC_KEY_COUNT
oc_keymod_flags
typedef enum oc_keymod_flags
{
OC_KEYMOD_NONE = 0,
OC_KEYMOD_ALT = 1,
OC_KEYMOD_SHIFT = 2,
OC_KEYMOD_CTRL = 4,
OC_KEYMOD_CMD = 8,
OC_KEYMOD_MAIN_MODIFIER = 16
} oc_keymod_flags;
Enum Constants
OC_KEYMOD_NONEOC_KEYMOD_ALTOC_KEYMOD_SHIFTOC_KEYMOD_CTRLOC_KEYMOD_CMDOC_KEYMOD_MAIN_MODIFIER
oc_mouse_button
typedef enum oc_mouse_button
{
OC_MOUSE_LEFT = 0,
OC_MOUSE_RIGHT = 1,
OC_MOUSE_MIDDLE = 2,
OC_MOUSE_EXT1 = 3,
OC_MOUSE_EXT2 = 4,
OC_MOUSE_BUTTON_COUNT = 5
} oc_mouse_button;
A code identifying a mouse button.
Enum Constants
OC_MOUSE_LEFTOC_MOUSE_RIGHTOC_MOUSE_MIDDLEOC_MOUSE_EXT1OC_MOUSE_EXT2OC_MOUSE_BUTTON_COUNT
oc_key_event
typedef struct oc_key_event
{
oc_key_action action;
oc_scan_code scanCode;
oc_key_code keyCode;
oc_mouse_button button;
oc_keymod_flags mods;
u8 clickCount;
} oc_key_event;
A structure describing a key event or a mouse button event.
Fields
actionThe action that was done on the key.scanCodeThe scan code of the key. Only valid for key events.keyCodeThe key code of the key. Only valid for key events.buttonThe button of the mouse. Only valid for mouse button events.modsModifier flags indicating which modifier keys where pressed at the time of the event.clickCountThe number of clicks that where detected for the button. Only valid for mouse button events.
oc_char_event
typedef struct oc_char_event
{
oc_utf32 codepoint;
char sequence[8];
u8 seqLen;
} oc_char_event;
A structure describing a character input event.
Fields
codepointThe unicode codepoint of the character.sequenceThe utf8 sequence of the character.seqLenThe utf8 sequence length.
oc_mouse_event
typedef struct oc_mouse_event
{
f32 x;
f32 y;
f32 deltaX;
f32 deltaY;
oc_keymod_flags mods;
} oc_mouse_event;
A structure describing a mouse move or a mouse wheel event. Mouse coordinates have their origin at the top-left corner of the window, with the y axis going down.
Fields
xThe x coordinate of the mouse.yThe y coordinate of the mouse.deltaXThe delta from the last x coordinate of the mouse, or the scroll value along the x coordinate.deltaYThe delta from the last y coordinate of the mouse, or the scoll value along the y coordinate.modsModifier flags indicating which modifier keys where pressed at the time of the event.
oc_move_event
typedef struct oc_move_event
{
oc_rect frame;
oc_rect content;
} oc_move_event;
A structure describing a window move or resize event.
Fields
frameThe position and dimension of the frame rectangle, i.e. including the window title bar and border.contentThe position and dimension of the content rectangle, relative to the frame rectangle.
oc_event
typedef struct oc_event
{
oc_window window;
oc_event_type type;
union
{
oc_key_event key;
oc_char_event character;
oc_mouse_event mouse;
oc_move_event move;
oc_str8_list paths;
};
} oc_event;
A structure describing an event sent to the application.
Fields
windowThe window in which this event happened.typeThe type of the event. This determines which member of the event union is active.
oc_file_dialog_kind
typedef enum oc_file_dialog_kind
{
OC_FILE_DIALOG_SAVE = 0,
OC_FILE_DIALOG_OPEN = 1
} oc_file_dialog_kind;
This enum describes the kinds of possible file dialogs.
Enum Constants
OC_FILE_DIALOG_SAVEThe file dialog is a save dialog.OC_FILE_DIALOG_OPENThe file dialog is an open dialog.
oc_file_dialog_flags
typedef u32 oc_file_dialog_flags;
A type for flags describing various file dialog options.
_oc_file_dialog_flags
typedef enum _oc_file_dialog_flags
{
OC_FILE_DIALOG_FILES = 1,
OC_FILE_DIALOG_DIRECTORIES = 2,
OC_FILE_DIALOG_MULTIPLE = 4,
OC_FILE_DIALOG_CREATE_DIRECTORIES = 8
} _oc_file_dialog_flags;
File dialog flags.
Enum Constants
OC_FILE_DIALOG_FILESThis dialog allows selecting files.OC_FILE_DIALOG_DIRECTORIESThis dialog allows selecting directories.OC_FILE_DIALOG_MULTIPLEThis dialog allows selecting multiple items.OC_FILE_DIALOG_CREATE_DIRECTORIESThis dialog allows creating directories.
oc_file_dialog_desc
typedef struct oc_file_dialog_desc
{
oc_file_dialog_kind kind;
oc_file_dialog_flags flags;
oc_str8 title;
oc_str8 okLabel;
oc_file startAt;
oc_str8 startPath;
oc_str8_list filters;
} oc_file_dialog_desc;
A structure describing a file dialog.
Fields
kindThe kind of file dialog, seeoc_file_dialog_kind.flagsA combination of file dialog flags used to enable file dialog options.titleThe title of the dialog, displayed in the dialog title bar.okLabelOptional. The label of the OK button, e.g. "Save" or "Open".startAtOptional. A file handle to the root directory for the dialog. If set to zero, the root directory is the application's default data directory.startPathOptional. The path of the starting directory of the dialog, relative to its root directory. If set to nil, the dialog starts at its root directory.filtersA list of file extensions used to restrict which files can be selected in this dialog. An empty list allows all files to be selected. Extensions should be provided without a leading dot.
oc_file_dialog_button
typedef enum oc_file_dialog_button
{
OC_FILE_DIALOG_CANCEL = 0,
OC_FILE_DIALOG_OK = 1
} oc_file_dialog_button;
An enum identifying the button clicked by the user when a file dialog returns.
Enum Constants
OC_FILE_DIALOG_CANCELThe user clicked the "Cancel" button, or closed the dialog box.OC_FILE_DIALOG_OKThe user clicked the "OK" button.
oc_file_dialog_result
typedef struct oc_file_dialog_result
{
oc_file_dialog_button button;
oc_str8 path;
oc_str8_list selection;
} oc_file_dialog_result;
A structure describing the result of a file dialog.
Fields
buttonThe button clicked by the user.pathThe path that was selected when the user clicked the OK button. If the dialog box had theOC_FILE_DIALOG_MULTIPLEflag set, this is the first file of the list of selected paths.selectionIf the dialog box had theOC_FILE_DIALOG_MULTIPLEflag set and the user clicked the OK button, this list contains the selected paths.
oc_window
typedef struct oc_window
{
u64 h;
} oc_window;
An opaque handle identifying a window.
Fields
hOpaque window handle.
Functions
oc_window_set_title
void oc_window_set_title(oc_str8 title);
Set the title of the application's window.
Parameters
titleThe title to display in the title bar of the application.
oc_window_set_size
void oc_window_set_size(oc_vec2 size);
Set the size of the application's window.
Parameters
sizeThe new size of the application's window.
oc_request_quit
void oc_request_quit();
Request the system to quit the application.
oc_scancode_to_keycode
oc_key_code oc_scancode_to_keycode(oc_scan_code scanCode);
Convert a scancode to a keycode, according to current keyboard layout.
Parameters
scanCodeThe scan code to convert.
Return
The converted key code.