95 lines
2.2 KiB
C
95 lines
2.2 KiB
C
#ifndef OS_GFX_H
|
|
#define OS_GFX_H
|
|
|
|
typedef U32 OS_Window_Flags;
|
|
|
|
typedef struct OS_InitGfxReceipt OS_InitGfxReceipt;
|
|
struct OS_InitGfxReceipt
|
|
{
|
|
U64 u64[1];
|
|
};
|
|
|
|
#include "os_gfx_meta.h"
|
|
|
|
////////////////////////////////
|
|
//~ Cursor Types
|
|
|
|
typedef enum OS_Cursor
|
|
{
|
|
OS_Cursor_Pointer,
|
|
OS_Cursor_IBar,
|
|
OS_Cursor_LeftRight,
|
|
OS_Cursor_UpDown,
|
|
OS_Cursor_DownRight,
|
|
OS_Cursor_UpRight,
|
|
OS_Cursor_UpDownLeftRight,
|
|
OS_Cursor_HandPoint,
|
|
OS_Cursor_Disabled,
|
|
OS_Cursor_COUNT,
|
|
}
|
|
OS_Cursor;
|
|
|
|
////////////////////////////////
|
|
//~ Events
|
|
typedef enum OS_EventKind
|
|
{
|
|
OS_EventKind_Null,
|
|
OS_EventKind_Press,
|
|
OS_EventKind_Release,
|
|
OS_EventKind_MouseMove,
|
|
OS_EventKind_Text,
|
|
OS_EventKind_Scroll,
|
|
OS_EventKind_WindowLoseFocus,
|
|
OS_EventKind_WindowClose,
|
|
OS_EventKind_FileDrop,
|
|
OS_EventKind_Wakeup,
|
|
OS_EventKind_COUNT
|
|
}
|
|
OS_EventKind;
|
|
|
|
|
|
typedef struct OS_Event OS_Event;
|
|
struct OS_Event
|
|
{
|
|
OS_Event *next;
|
|
OS_Event *prev;
|
|
OS_Handle window;
|
|
OS_EventKind kind;
|
|
//OS_Modifiers modifiers;
|
|
OS_Key key;
|
|
U32 character;
|
|
Vec2_F32 position;
|
|
Vec2_F32 scroll;
|
|
String8 path;
|
|
};
|
|
|
|
typedef struct OS_EventList OS_EventList;
|
|
struct OS_EventList
|
|
{
|
|
OS_Event *first;
|
|
OS_Event *last;
|
|
U64 count;
|
|
};
|
|
|
|
////////////////////////////////
|
|
//~ Event Helpers
|
|
root_function U64 OS_character_from_key(OS_Key key);
|
|
root_function String8 OS_string_from_event(Arena *arena, OS_Event *event);
|
|
root_function B32 OS_key_press(OS_EventList *events, OS_Handle window, OS_Key key);
|
|
root_function B32 OS_key_release(OS_EventList *events, OS_Handle window);
|
|
root_function B32 OS_text_codepoint(OS_EventList *events, OS_Handle window, U32 codepoint);
|
|
root_function Vec2_F32 OS_mouse_from_window(OS_Handle handle);
|
|
|
|
////////////////////////////////
|
|
//~ @os_per_backend Init and windowing
|
|
root_function OS_InitGfxReceipt OS_gfx_init(OS_InitReceipt os_init_receipt);
|
|
root_function OS_Handle OS_window_open(OS_Window_Flags flags, Vec2_S64 size, String8 title);
|
|
root_function Rng2_F32 OS_client_rect_from_window(OS_Handle window_handle);
|
|
|
|
////////////////////////////////
|
|
//~ @os_per_backend Events
|
|
root_function OS_EventList OS_get_events(Arena *arena);
|
|
root_function void OS_consume_event(OS_EventList *events, OS_Event *event);
|
|
|
|
#endif /* OS_GFX_H */
|