From c242cbc05416ec498970c29a1e61d4983ad10ae6 Mon Sep 17 00:00:00 2001 From: Fierelier Date: Tue, 10 Sep 2024 22:38:34 +0200 Subject: [PATCH] Move unigi.headers to unigi, also separate headers for SWIG --- src/main.h | 23 ++++++++ src/main.i | 13 +++++ src/structs.h | 126 ++++++++++++++++++++++++++++++++++++++++++++ src/types.h | 27 ++++++++++ test/graphics.c | 2 +- test/graphics.ext.c | 2 +- 6 files changed, 191 insertions(+), 2 deletions(-) create mode 100644 src/main.h create mode 100644 src/main.i create mode 100644 src/structs.h create mode 100644 src/types.h diff --git a/src/main.h b/src/main.h new file mode 100644 index 0000000..6e1b81d --- /dev/null +++ b/src/main.h @@ -0,0 +1,23 @@ +#ifndef unigi_header_main +#define unigi_header_main +#include "types.h" +#include "structs.h" + +// MAIN +unigi_type_error unigi_init(); + +// GRAPHICS +unigi_type_error unigi_graphics_init(); +unigi_type_resolution_range * unigi_resolutions; +static inline void unigi_graphics_draw(unigi_type_resolution_1d_coord index, unigi_type_color color); +static inline void unigi_graphics_blit(unigi_type_resolution_1d_coord index, unigi_type_color * pixels, unigi_type_resolution_1d_coord length); +static inline void unigi_graphics_flush(); + +unigi_type_error unigi_window_create(unigi_type_resolution resolution, char * title); +unigi_type_time_span unigi_time_get(); + +// TIME +#define unigi_time_clocks_per_s 1000000 +void unigi_time_sleep(unigi_type_time_span ms); +void unigi_event_get(unigi_type_event * event); +#endif diff --git a/src/main.i b/src/main.i new file mode 100644 index 0000000..cac7e7b --- /dev/null +++ b/src/main.i @@ -0,0 +1,13 @@ +%module unigi +%{ +#include +#include "types.h" +#include "structs.h" +#include "main.h" +%} +%include +%include +%rename("%(strip:[unigi_])s") ""; +%include "types.h" +%include "structs.h" +%include "main.h" diff --git a/src/structs.h b/src/structs.h new file mode 100644 index 0000000..dbd5223 --- /dev/null +++ b/src/structs.h @@ -0,0 +1,126 @@ +#ifndef unigi_header_structs +#define unigi_header_structs +// * EVENTS +struct unigi_type_event_none { + uint8_t none; +}; +typedef struct unigi_type_event_none unigi_type_event_none; +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; +const unigi_type_event_enum unigi_enum_event_unknown = 1; + +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; + +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; + +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 +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 +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; + +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; + +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 +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; + +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 diff --git a/src/types.h b/src/types.h new file mode 100644 index 0000000..07d0ec8 --- /dev/null +++ b/src/types.h @@ -0,0 +1,27 @@ +#ifndef unigi_header_types +#define unigi_header_types +#include +// Events +typedef uint8_t unigi_type_error; +typedef uint8_t unigi_type_event_enum; + +// Graphics +typedef uint16_t unigi_type_resolution_2d_coord; +typedef uint32_t unigi_type_resolution_1d_coord; +typedef uint8_t unigi_type_resolution_depth; +typedef uint16_t unigi_type_color; + +// Input +typedef uint8_t unigi_type_input_device; +typedef uint8_t unigi_type_input_button_state; +typedef uint8_t unigi_type_input_keyboard_button; +typedef uint8_t unigi_type_input_mouse_button; +typedef int32_t unigi_type_input_mouse_coord_relative; +typedef uint16_t unigi_type_input_mouse_coord_absolute; +typedef uint8_t unigi_type_input_mouse_coord_scroll; +typedef uint8_t unigi_type_input_joypad_button; +typedef int16_t unigi_type_input_joypad_analog; + +// Time +typedef uint32_t unigi_type_time_span; +#endif diff --git a/test/graphics.c b/test/graphics.c index 563eeff..9bb43d8 100644 --- a/test/graphics.c +++ b/test/graphics.c @@ -1,4 +1,4 @@ -#include "../../unigi.headers/src/main.h" +#include "../src/main.h" #include "../../unigi.platform.sdl1/src/main.c" uint32_t seed = 1337; diff --git a/test/graphics.ext.c b/test/graphics.ext.c index 93f84f8..617adea 100644 --- a/test/graphics.ext.c +++ b/test/graphics.ext.c @@ -1,4 +1,4 @@ -#include "../../unigi.headers/src/main.h" +#include "../src/main.h" #include "../../unigi.platform.sdl1/src/main.c" #include "../../unigi.ext/src/main.c"