| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374 |
- #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_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)(wchar_t *, 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(wchar_t *);
- 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_lock();
- void iron_internal_mouse_unlock(void);
- 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
|