#ifndef unigi_header_structs #define unigi_header_structs #include "types.h" // * EVENTS struct unigi_type_event_none { uint8_t none; }; typedef struct unigi_type_event_none unigi_type_event_none; static const unigi_type_event_enum unigi_enum_event_none = 0; struct unigi_type_event_unknown { uint8_t none; }; typedef struct unigi_type_event_unknown unigi_type_event_unknown; static const unigi_type_event_enum unigi_enum_event_unknown = 1; static const unigi_type_event_enum unigi_enum_event_window_quit = 2; struct unigi_type_event_window_quit { uint8_t none; }; typedef struct unigi_type_event_window_quit unigi_type_event_window_quit; static const unigi_type_event_enum unigi_enum_event_window_focus = 4; struct unigi_type_event_window_focus { uint8_t focused; }; typedef struct unigi_type_event_window_focus unigi_type_event_window_focus; static const unigi_type_event_enum unigi_enum_event_window_activate = 5; struct unigi_type_event_window_activate { uint8_t active; }; typedef struct unigi_type_event_window_activate unigi_type_event_window_activate; // Keyboard static const unigi_type_event_enum unigi_enum_event_input_keyboard = 6; struct unigi_type_event_input_keyboard { unigi_type_input_device device; unigi_type_input_keyboard_button button; unigi_type_input_button_state down; }; typedef struct unigi_type_event_input_keyboard unigi_type_event_input_keyboard; // Mouse static const unigi_type_event_enum unigi_enum_event_input_mouse_button = 7; struct unigi_type_event_input_mouse_button { unigi_type_input_device device; unigi_type_input_mouse_button button; unigi_type_input_button_state down; }; typedef struct unigi_type_event_input_mouse_button unigi_type_event_input_mouse_button; static const unigi_type_event_enum unigi_enum_event_input_mouse_move = 8; struct unigi_type_event_input_mouse_move { unigi_type_input_device device; unigi_type_input_mouse_coord_relative rel_x; unigi_type_input_mouse_coord_relative rel_y; unigi_type_input_mouse_coord_absolute abs_x; unigi_type_input_mouse_coord_absolute abs_y; }; typedef struct unigi_type_event_input_mouse_move unigi_type_event_input_mouse_move; static const unigi_type_event_enum unigi_enum_event_input_mouse_scroll = 9; struct unigi_type_event_input_mouse_scroll { unigi_type_input_device device; unigi_type_input_mouse_coord_scroll scroll_x; unigi_type_input_mouse_coord_scroll scroll_y; }; typedef struct unigi_type_event_input_mouse_scroll unigi_type_event_input_mouse_scroll; // Joypad static const unigi_type_event_enum unigi_enum_event_input_joypad_button = 10; struct unigi_type_event_input_joypad_button { unigi_type_input_device device; unigi_type_input_mouse_button button; unigi_type_input_button_state down; }; typedef struct unigi_type_event_input_joypad_button unigi_type_event_input_joypad_button; static const unigi_type_event_enum unigi_enum_event_input_joypad_analog = 11; struct unigi_type_event_input_joypad_analog { unigi_type_input_device device; unigi_type_input_joypad_button axis; unigi_type_input_joypad_analog x; unigi_type_input_joypad_analog y; }; typedef struct unigi_type_event_input_joypad_analog unigi_type_event_input_joypad_analog; // * GRAPHICS struct unigi_type_resolution { unigi_type_resolution_2d_coord width; unigi_type_resolution_2d_coord height; unigi_type_resolution_depth depth; }; typedef struct unigi_type_resolution unigi_type_resolution; struct unigi_type_resolution_range { unigi_type_resolution_2d_coord width_min; unigi_type_resolution_2d_coord height_min; unigi_type_resolution_2d_coord width_max; unigi_type_resolution_2d_coord height_max; unigi_type_resolution_depth depth_min; unigi_type_resolution_depth depth_max; }; typedef struct unigi_type_resolution_range unigi_type_resolution_range; union unigi_type_event_union { unigi_type_event_none none; unigi_type_event_unknown unknown; unigi_type_event_window_quit window_quit; unigi_type_event_window_activate window_activate; unigi_type_event_window_focus window_focus; unigi_type_event_input_keyboard input_keyboard; unigi_type_event_input_mouse_button input_mouse_button; unigi_type_event_input_mouse_move input_mouse_move; unigi_type_event_input_mouse_scroll input_mouse_scroll; unigi_type_event_input_joypad_button input_joypad_button; unigi_type_event_input_joypad_analog input_joypad_analog; }; typedef union unigi_type_event_union unigi_type_event_union; struct unigi_type_event { unigi_type_event_enum type; unigi_type_event_union data; }; typedef struct unigi_type_event unigi_type_event; #endif