Move unigi.headers to unigi, also separate headers for SWIG

This commit is contained in:
Fierelier 2024-09-10 22:38:34 +02:00
parent 34aa7f0a1c
commit c242cbc054
6 changed files with 191 additions and 2 deletions

23
src/main.h Normal file
View File

@ -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

13
src/main.i Normal file
View File

@ -0,0 +1,13 @@
%module unigi
%{
#include <stdint.h>
#include "types.h"
#include "structs.h"
#include "main.h"
%}
%include <typemaps.i>
%include <stdint.i>
%rename("%(strip:[unigi_])s") "";
%include "types.h"
%include "structs.h"
%include "main.h"

126
src/structs.h Normal file
View File

@ -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

27
src/types.h Normal file
View File

@ -0,0 +1,27 @@
#ifndef unigi_header_types
#define unigi_header_types
#include <stdint.h>
// 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

View File

@ -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;

View File

@ -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"