375 lines
13 KiB
C
375 lines
13 KiB
C
#pragma once
|
|
|
|
#include <iron_global.h>
|
|
#include <stdbool.h>
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
#include <stdarg.h>
|
|
|
|
void iron_log(const char *format, ...);
|
|
void iron_error(const char *format, ...);
|
|
|
|
typedef struct iron_display_mode {
|
|
int x;
|
|
int y;
|
|
int width;
|
|
int height;
|
|
int pixels_per_inch;
|
|
int frequency;
|
|
int bits_per_pixel;
|
|
} iron_display_mode_t;
|
|
|
|
void iron_display_init(void);
|
|
int iron_primary_display(void);
|
|
int iron_count_displays(void);
|
|
iron_display_mode_t iron_display_current_mode(int display_index);
|
|
|
|
typedef enum {
|
|
IRON_CURSOR_ARROW,
|
|
IRON_CURSOR_HAND,
|
|
IRON_CURSOR_IBEAM,
|
|
IRON_CURSOR_SIZEWE,
|
|
IRON_CURSOR_SIZENS
|
|
} iron_cursor_t;
|
|
|
|
typedef enum {
|
|
IRON_WINDOW_MODE_WINDOW,
|
|
IRON_WINDOW_MODE_FULLSCREEN
|
|
} iron_window_mode_t;
|
|
|
|
#define IRON_WINDOW_FEATURE_RESIZEABLE 1
|
|
#define IRON_WINDOW_FEATURE_MINIMIZABLE 2
|
|
#define IRON_WINDOW_FEATURE_MAXIMIZABLE 4
|
|
#define IRON_WINDOW_FEATURE_BORDERLESS 8
|
|
#define IRON_WINDOW_FEATURE_ON_TOP 16
|
|
|
|
typedef struct iron_window_options {
|
|
const char *title;
|
|
int x;
|
|
int y;
|
|
int width;
|
|
int height;
|
|
int features;
|
|
iron_window_mode_t mode;
|
|
int frequency;
|
|
bool vsync;
|
|
int display_index;
|
|
bool visible;
|
|
int color_bits;
|
|
int depth_bits;
|
|
} iron_window_options_t;
|
|
|
|
void iron_window_create(iron_window_options_t *win);
|
|
void iron_window_destroy();
|
|
void iron_window_resize(int width, int height);
|
|
void iron_window_move(int x, int y);
|
|
void iron_window_change_mode(iron_window_mode_t mode);
|
|
int iron_window_x();
|
|
int iron_window_y();
|
|
int iron_window_width();
|
|
int iron_window_height();
|
|
int iron_window_display();
|
|
iron_window_mode_t iron_window_get_mode();
|
|
void iron_window_show();
|
|
void iron_window_hide();
|
|
void iron_window_set_title(const char *title);
|
|
void iron_window_set_resize_callback(void (*callback)(int x, int y, void *data), void *data);
|
|
void iron_window_set_close_callback(bool (*callback)(void *data), void *data);
|
|
void iron_internal_call_resize_callback(int width, int height);
|
|
bool iron_internal_call_close_callback();
|
|
|
|
void iron_init(iron_window_options_t *win);
|
|
const char *iron_application_name(void);
|
|
void iron_set_app_name(const char *name);
|
|
void iron_load_url(const char *url);
|
|
const char *iron_system_id(void);
|
|
const char *iron_language(void);
|
|
|
|
double iron_frequency(void);
|
|
uint64_t iron_timestamp(void);
|
|
int iron_hardware_threads(void);
|
|
double iron_time(void);
|
|
void iron_start(void);
|
|
void iron_stop(void);
|
|
void iron_set_keep_screen_on(bool on);
|
|
void iron_exec_async(const char *path, char *argv[]);
|
|
extern volatile int iron_exec_async_done;
|
|
|
|
void iron_copy_to_clipboard(const char *text);
|
|
void iron_set_update_callback(void (*callback)(void *), void *data);
|
|
void iron_set_foreground_callback(void (*callback)(void *), void *data);
|
|
void iron_set_resume_callback(void (*callback)(void *), void *data);
|
|
void iron_set_pause_callback(void (*callback)(void *), void *data);
|
|
void iron_set_background_callback(void (*callback)(void *), void *data);
|
|
void iron_set_shutdown_callback(void (*callback)(void *), void *data);
|
|
void iron_set_drop_files_callback(void (*callback)(char *, void *), void *data);
|
|
void iron_set_cut_callback(char *(*callback)(void *), void *data);
|
|
void iron_set_copy_callback(char *(*callback)(void *), void *data);
|
|
void iron_set_paste_callback(void (*callback)(char *, void *), void *data);
|
|
|
|
bool iron_internal_frame(void);
|
|
const char *iron_internal_save_path(void);
|
|
bool iron_internal_handle_messages(void);
|
|
void iron_internal_shutdown(void);
|
|
void iron_internal_update_callback(void);
|
|
void iron_internal_foreground_callback(void);
|
|
void iron_internal_resume_callback(void);
|
|
void iron_internal_pause_callback(void);
|
|
void iron_internal_background_callback(void);
|
|
void iron_internal_shutdown_callback(void);
|
|
void iron_internal_drop_files_callback(char *);
|
|
char *iron_internal_cut_callback(void);
|
|
char *iron_internal_copy_callback(void);
|
|
void iron_internal_paste_callback(char *);
|
|
|
|
#define IRON_KEY_UNKNOWN 0
|
|
#define IRON_KEY_BACK 1 // Android
|
|
#define IRON_KEY_CANCEL 3
|
|
#define IRON_KEY_HELP 6
|
|
#define IRON_KEY_BACKSPACE 8
|
|
#define IRON_KEY_TAB 9
|
|
#define IRON_KEY_CLEAR 12
|
|
#define IRON_KEY_RETURN 13
|
|
#define IRON_KEY_SHIFT 16
|
|
#define IRON_KEY_CONTROL 17
|
|
#define IRON_KEY_ALT 18
|
|
#define IRON_KEY_PAUSE 19
|
|
#define IRON_KEY_CAPS_LOCK 20
|
|
#define IRON_KEY_KANA 21
|
|
#define IRON_KEY_HANGUL 21
|
|
#define IRON_KEY_EISU 22
|
|
#define IRON_KEY_JUNJA 23
|
|
#define IRON_KEY_FINAL 24
|
|
#define IRON_KEY_HANJA 25
|
|
#define IRON_KEY_KANJI 25
|
|
#define IRON_KEY_ESCAPE 27
|
|
#define IRON_KEY_CONVERT 28
|
|
#define IRON_KEY_NON_CONVERT 29
|
|
#define IRON_KEY_ACCEPT 30
|
|
#define IRON_KEY_MODE_CHANGE 31
|
|
#define IRON_KEY_SPACE 32
|
|
#define IRON_KEY_PAGE_UP 33
|
|
#define IRON_KEY_PAGE_DOWN 34
|
|
#define IRON_KEY_END 35
|
|
#define IRON_KEY_HOME 36
|
|
#define IRON_KEY_LEFT 37
|
|
#define IRON_KEY_UP 38
|
|
#define IRON_KEY_RIGHT 39
|
|
#define IRON_KEY_DOWN 40
|
|
#define IRON_KEY_SELECT 41
|
|
#define IRON_KEY_PRINT 42
|
|
#define IRON_KEY_EXECUTE 43
|
|
#define IRON_KEY_PRINT_SCREEN 44
|
|
#define IRON_KEY_INSERT 45
|
|
#define IRON_KEY_DELETE 46
|
|
#define IRON_KEY_0 48
|
|
#define IRON_KEY_1 49
|
|
#define IRON_KEY_2 50
|
|
#define IRON_KEY_3 51
|
|
#define IRON_KEY_4 52
|
|
#define IRON_KEY_5 53
|
|
#define IRON_KEY_6 54
|
|
#define IRON_KEY_7 55
|
|
#define IRON_KEY_8 56
|
|
#define IRON_KEY_9 57
|
|
#define IRON_KEY_COLON 58
|
|
#define IRON_KEY_SEMICOLON 59
|
|
#define IRON_KEY_LESS_THAN 60
|
|
#define IRON_KEY_EQUALS 61
|
|
#define IRON_KEY_GREATER_THAN 62
|
|
#define IRON_KEY_QUESTIONMARK 63
|
|
#define IRON_KEY_AT 64
|
|
#define IRON_KEY_A 65
|
|
#define IRON_KEY_B 66
|
|
#define IRON_KEY_C 67
|
|
#define IRON_KEY_D 68
|
|
#define IRON_KEY_E 69
|
|
#define IRON_KEY_F 70
|
|
#define IRON_KEY_G 71
|
|
#define IRON_KEY_H 72
|
|
#define IRON_KEY_I 73
|
|
#define IRON_KEY_J 74
|
|
#define IRON_KEY_K 75
|
|
#define IRON_KEY_L 76
|
|
#define IRON_KEY_M 77
|
|
#define IRON_KEY_N 78
|
|
#define IRON_KEY_O 79
|
|
#define IRON_KEY_P 80
|
|
#define IRON_KEY_Q 81
|
|
#define IRON_KEY_R 82
|
|
#define IRON_KEY_S 83
|
|
#define IRON_KEY_T 84
|
|
#define IRON_KEY_U 85
|
|
#define IRON_KEY_V 86
|
|
#define IRON_KEY_W 87
|
|
#define IRON_KEY_X 88
|
|
#define IRON_KEY_Y 89
|
|
#define IRON_KEY_Z 90
|
|
#define IRON_KEY_WIN 91
|
|
#define IRON_KEY_CONTEXT_MENU 93
|
|
#define IRON_KEY_SLEEP 95
|
|
#define IRON_KEY_NUMPAD_0 96
|
|
#define IRON_KEY_NUMPAD_1 97
|
|
#define IRON_KEY_NUMPAD_2 98
|
|
#define IRON_KEY_NUMPAD_3 99
|
|
#define IRON_KEY_NUMPAD_4 100
|
|
#define IRON_KEY_NUMPAD_5 101
|
|
#define IRON_KEY_NUMPAD_6 102
|
|
#define IRON_KEY_NUMPAD_7 103
|
|
#define IRON_KEY_NUMPAD_8 104
|
|
#define IRON_KEY_NUMPAD_9 105
|
|
#define IRON_KEY_MULTIPLY 106
|
|
#define IRON_KEY_ADD 107
|
|
#define IRON_KEY_SEPARATOR 108
|
|
#define IRON_KEY_SUBTRACT 109
|
|
#define IRON_KEY_DECIMAL 110
|
|
#define IRON_KEY_DIVIDE 111
|
|
#define IRON_KEY_F1 112
|
|
#define IRON_KEY_F2 113
|
|
#define IRON_KEY_F3 114
|
|
#define IRON_KEY_F4 115
|
|
#define IRON_KEY_F5 116
|
|
#define IRON_KEY_F6 117
|
|
#define IRON_KEY_F7 118
|
|
#define IRON_KEY_F8 119
|
|
#define IRON_KEY_F9 120
|
|
#define IRON_KEY_F10 121
|
|
#define IRON_KEY_F11 122
|
|
#define IRON_KEY_F12 123
|
|
#define IRON_KEY_F13 124
|
|
#define IRON_KEY_F14 125
|
|
#define IRON_KEY_F15 126
|
|
#define IRON_KEY_F16 127
|
|
#define IRON_KEY_F17 128
|
|
#define IRON_KEY_F18 129
|
|
#define IRON_KEY_F19 130
|
|
#define IRON_KEY_F20 131
|
|
#define IRON_KEY_F21 132
|
|
#define IRON_KEY_F22 133
|
|
#define IRON_KEY_F23 134
|
|
#define IRON_KEY_F24 135
|
|
#define IRON_KEY_NUM_LOCK 144
|
|
#define IRON_KEY_SCROLL_LOCK 145
|
|
#define IRON_KEY_WIN_OEM_FJ_JISHO 146
|
|
#define IRON_KEY_WIN_OEM_FJ_MASSHOU 147
|
|
#define IRON_KEY_WIN_OEM_FJ_TOUROKU 148
|
|
#define IRON_KEY_WIN_OEM_FJ_LOYA 149
|
|
#define IRON_KEY_WIN_OEM_FJ_ROYA 150
|
|
#define IRON_KEY_CIRCUMFLEX 160
|
|
#define IRON_KEY_EXCLAMATION 161
|
|
#define IRON_KEY_DOUBLE_QUOTE 162
|
|
#define IRON_KEY_HASH 163
|
|
#define IRON_KEY_DOLLAR 164
|
|
#define IRON_KEY_PERCENT 165
|
|
#define IRON_KEY_AMPERSAND 166
|
|
#define IRON_KEY_UNDERSCORE 167
|
|
#define IRON_KEY_OPEN_PAREN 168
|
|
#define IRON_KEY_CLOSE_PAREN 169
|
|
#define IRON_KEY_ASTERISK 170
|
|
#define IRON_KEY_PLUS 171
|
|
#define IRON_KEY_PIPE 172
|
|
#define IRON_KEY_HYPHEN_MINUS 173
|
|
#define IRON_KEY_OPEN_CURLY_BRACKET 174
|
|
#define IRON_KEY_CLOSE_CURLY_BRACKET 175
|
|
#define IRON_KEY_TILDE 176
|
|
#define IRON_KEY_VOLUME_MUTE 181
|
|
#define IRON_KEY_VOLUME_DOWN 182
|
|
#define IRON_KEY_VOLUME_UP 183
|
|
#define IRON_KEY_COMMA 188
|
|
#define IRON_KEY_PERIOD 190
|
|
#define IRON_KEY_SLASH 191
|
|
#define IRON_KEY_BACK_QUOTE 192
|
|
#define IRON_KEY_OPEN_BRACKET 219
|
|
#define IRON_KEY_BACK_SLASH 220
|
|
#define IRON_KEY_CLOSE_BRACKET 221
|
|
#define IRON_KEY_QUOTE 222
|
|
#define IRON_KEY_META 224
|
|
#define IRON_KEY_ALT_GR 225
|
|
#define IRON_KEY_WIN_ICO_HELP 227
|
|
#define IRON_KEY_WIN_ICO_00 228
|
|
#define IRON_KEY_WIN_ICO_CLEAR 230
|
|
#define IRON_KEY_WIN_OEM_RESET 233
|
|
#define IRON_KEY_WIN_OEM_JUMP 234
|
|
#define IRON_KEY_WIN_OEM_PA1 235
|
|
#define IRON_KEY_WIN_OEM_PA2 236
|
|
#define IRON_KEY_WIN_OEM_PA3 237
|
|
#define IRON_KEY_WIN_OEM_WSCTRL 238
|
|
#define IRON_KEY_WIN_OEM_CUSEL 239
|
|
#define IRON_KEY_WIN_OEM_ATTN 240
|
|
#define IRON_KEY_WIN_OEM_FINISH 241
|
|
#define IRON_KEY_WIN_OEM_COPY 242
|
|
#define IRON_KEY_WIN_OEM_AUTO 243
|
|
#define IRON_KEY_WIN_OEM_ENLW 244
|
|
#define IRON_KEY_WIN_OEM_BACK_TAB 245
|
|
#define IRON_KEY_ATTN 246
|
|
#define IRON_KEY_CRSEL 247
|
|
#define IRON_KEY_EXSEL 248
|
|
#define IRON_KEY_EREOF 249
|
|
#define IRON_KEY_PLAY 250
|
|
#define IRON_KEY_ZOOM 251
|
|
#define IRON_KEY_PA1 253
|
|
#define IRON_KEY_WIN_OEM_CLEAR 254
|
|
|
|
void iron_keyboard_show(void);
|
|
void iron_keyboard_hide(void);
|
|
bool iron_keyboard_active(void);
|
|
void iron_keyboard_set_key_down_callback(void (*value)(int /*key_code*/, void * /*data*/), void *data);
|
|
void iron_keyboard_set_key_up_callback(void (*value)(int /*key_code*/, void * /*data*/), void *data);
|
|
void iron_keyboard_set_key_press_callback(void (*value)(unsigned /*character*/, void * /*data*/), void *data);
|
|
void iron_internal_keyboard_trigger_key_down(int key_code);
|
|
void iron_internal_keyboard_trigger_key_up(int key_code);
|
|
void iron_internal_keyboard_trigger_key_press(unsigned character);
|
|
void iron_mouse_set_press_callback(void (*value)(int /*button*/, int /*x*/, int /*y*/, void * /*data*/), void *data);
|
|
void iron_mouse_set_release_callback(void (*value)(int /*button*/, int /*x*/, int /*y*/, void * /*data*/), void *data);
|
|
void iron_mouse_set_move_callback(void (*value)(int /*x*/, int /*y*/, int /*movement_x*/, int /*movement_y*/, void * /*data*/), void *data);
|
|
void iron_mouse_set_scroll_callback(void (*value)(int /*delta*/, void * /*data*/), void *data);
|
|
bool iron_mouse_can_lock(void);
|
|
bool iron_mouse_is_locked(void);
|
|
void iron_mouse_lock();
|
|
void iron_mouse_unlock(void);
|
|
void iron_mouse_set_cursor(iron_cursor_t cursor);
|
|
void iron_mouse_show(void);
|
|
void iron_mouse_hide(void);
|
|
void iron_mouse_set_position(int x, int y);
|
|
void iron_mouse_get_position(int *x, int *y);
|
|
void iron_internal_mouse_trigger_press(int button, int x, int y);
|
|
void iron_internal_mouse_trigger_release(int button, int x, int y);
|
|
void iron_internal_mouse_trigger_move(int x, int y);
|
|
void iron_internal_mouse_trigger_scroll(int delta);
|
|
void iron_internal_mouse_window_activated();
|
|
void iron_internal_mouse_window_deactivated();
|
|
void iron_pen_set_press_callback(void (*value)(int /*x*/, int /*y*/, float /*pressure*/));
|
|
void iron_pen_set_move_callback(void (*value)(int /*x*/, int /*y*/, float /*pressure*/));
|
|
void iron_pen_set_release_callback(void (*value)(int /*x*/, int /*y*/, float /*pressure*/));
|
|
void iron_eraser_set_press_callback(void (*value)(int /*x*/, int /*y*/, float /*pressure*/));
|
|
void iron_eraser_set_move_callback(void (*value)(int /*x*/, int /*y*/, float /*pressure*/));
|
|
void iron_eraser_set_release_callback(void (*value)(int /*x*/, int /*y*/, float /*pressure*/));
|
|
void iron_internal_pen_trigger_move(int x, int y, float pressure);
|
|
void iron_internal_pen_trigger_press(int x, int y, float pressure);
|
|
void iron_internal_pen_trigger_release(int x, int y, float pressure);
|
|
void iron_internal_eraser_trigger_move(int x, int y, float pressure);
|
|
void iron_internal_eraser_trigger_press(int x, int y, float pressure);
|
|
void iron_internal_eraser_trigger_release(int x, int y, float pressure);
|
|
void iron_surface_set_touch_start_callback(void (*value)(int /*index*/, int /*x*/, int /*y*/));
|
|
void iron_surface_set_move_callback(void (*value)(int /*index*/, int /*x*/, int /*y*/));
|
|
void iron_surface_set_touch_end_callback(void (*value)(int /*index*/, int /*x*/, int /*y*/));
|
|
void iron_internal_surface_trigger_touch_start(int index, int x, int y);
|
|
void iron_internal_surface_trigger_move(int index, int x, int y);
|
|
void iron_internal_surface_trigger_touch_end(int index, int x, int y);
|
|
|
|
#ifdef WITH_GAMEPAD
|
|
#define IRON_GAMEPAD_MAX_COUNT 8
|
|
void iron_gamepad_set_connect_callback(void (*value)(int /*gamepad*/, void * /*userdata*/), void *userdata);
|
|
void iron_gamepad_set_disconnect_callback(void (*value)(int /*gamepad*/, void * /*userdata*/), void *userdata);
|
|
void iron_gamepad_set_axis_callback(void (*value)(int /*gamepad*/, int /*axis*/, float /*value*/, void * /*userdata*/), void *userdata);
|
|
void iron_gamepad_set_button_callback(void (*value)(int /*gamepad*/, int /*button*/, float /*value*/, void * /*userdata*/), void *userdata);
|
|
const char *iron_gamepad_vendor(int gamepad);
|
|
const char *iron_gamepad_product_name(int gamepad);
|
|
bool iron_gamepad_connected(int gamepad);
|
|
void iron_gamepad_rumble(int gamepad, float left, float right);
|
|
void iron_internal_gamepad_trigger_connect(int gamepad);
|
|
void iron_internal_gamepad_trigger_disconnect(int gamepad);
|
|
void iron_internal_gamepad_trigger_axis(int gamepad, int axis, float value);
|
|
void iron_internal_gamepad_trigger_button(int gamepad, int button, float value);
|
|
#endif
|