diff options
Diffstat (limited to 'src/ui/tui.h')
-rw-r--r-- | src/ui/tui.h | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/src/ui/tui.h b/src/ui/tui.h index 731ec76..83451c8 100644 --- a/src/ui/tui.h +++ b/src/ui/tui.h @@ -46,15 +46,16 @@ typedef struct INPUT_ACTION { uint y; } INPUT_ACTION; -typedef void (*ON_TEXT_INPUT)(char c); -typedef void (*ON_CLICK_CALLBACK)(MOUSE_ACTION mouse_action); -typedef void (*ON_INPUT_CALLBACK)(INPUT_ACTION input_action); -typedef void (*ON_RAW_INPUT_CALLBACK)(INPUT_ACTION input_action, - void *metadata); +typedef void (*ON_TEXT_INPUT)(char c, void *data); +typedef void (*ON_CLICK_CALLBACK)(MOUSE_ACTION mouse_action, void *data); +typedef void (*ON_INPUT_CALLBACK)(INPUT_ACTION input_action, void *data); +typedef void (*ON_RAW_INPUT_CALLBACK)(INPUT_ACTION input_action, void *metadata, + void *data); typedef struct ON_ACTION_CALLBACK { ON_RAW_INPUT_CALLBACK on_raw_input_callback; void *metadata; + void *data; } ON_ACTION_CALLBACK; #ifndef __cplusplus @@ -110,6 +111,7 @@ typedef struct TEXT_METADATA { typedef struct BUTTON_METADATA { WIDGET *child; ON_CLICK_CALLBACK callback; + void *data; } BUTTON_METADATA; typedef struct COLUMN_METADATA { @@ -142,24 +144,26 @@ typedef struct TEXT_INPUT_METADATA { COLOR color; TEXT_STYLE style; ON_TEXT_INPUT on_text_input; + void *data; } TEXT_INPUT_METADATA; -typedef WIDGET *(*WIDGET_BUILDER)(TUI *tui); +typedef WIDGET *(*WIDGET_BUILDER)(TUI *restrict tui); extern TUI *tui_init(); extern void tui_delete(TUI *restrict tui); -extern void tui_refresh(TUI *tui); +extern void tui_refresh(TUI *restrict tui); -extern int tui_get_width(TUI *tui); -extern int tui_get_height(TUI *tui); +extern uint16_t tui_get_width(TUI *restrict tui); +extern uint16_t tui_get_height(TUI *restrict tui); -extern void tui_get_cursor_pos(TUI *tui, int *x, int *y); +extern void tui_get_cursor_pos(TUI *restrict tui, int *x, int *y); extern int tui_move_to(int x, int y); extern int tui_clear_screen(); -extern void tui_start_app(TUI *tui, WIDGET_BUILDER widget_builder, int fps); -extern void _tui_draw_widget_to_cells(TUI *tui, const WIDGET *widget, +extern void tui_start_app(TUI *restrict tui, WIDGET_BUILDER widget_builder, + int fps); +extern void _tui_draw_widget_to_cells(TUI *restrict tui, const WIDGET *widget, int width_begin, int width_end, int height_begin, int height_end, int *child_width, int *child_height); @@ -176,7 +180,8 @@ extern bool tui_widget_eqauls(const WIDGET *restrict left, extern bool tui_widget_array_eqauls(const WIDGET_ARRAY *restrict left, const WIDGET_ARRAY *restrict right); -extern void tui_main_loop(TUI *tui, WIDGET_BUILDER widget_builder, int fps); +extern void tui_main_loop(TUI *restrict tui, WIDGET_BUILDER widget_builder, + int fps); extern WIDGET *tui_new_widget(WIDGET_TYPE type, void *metadata); extern void tui_delete_widget(WIDGET *restrict widget); @@ -188,9 +193,10 @@ extern TEXT_METADATA *_tui_make_text_metadata(char *restrict text, COLOR color, extern void _tui_delete_text(WIDGET *restrict text); extern WIDGET *tui_make_button(WIDGET *restrict child, - ON_CLICK_CALLBACK callback); + ON_CLICK_CALLBACK callback, void *data); extern BUTTON_METADATA *_tui_make_button_metadata(WIDGET *restrict child, - ON_CLICK_CALLBACK callback); + ON_CLICK_CALLBACK callback, + void *data); extern void _tui_delete_button(WIDGET *restrict button); extern WIDGET *tui_make_column(WIDGET_ARRAY *restrict children); @@ -214,10 +220,10 @@ extern void _tui_delete_center(WIDGET *restrict center); extern WIDGET *tui_make_text_input(char *restrict text, COLOR color, TEXT_STYLE style, - ON_TEXT_INPUT on_text_input); + ON_TEXT_INPUT on_text_input, void *data); extern TEXT_INPUT_METADATA *_tui_make_text_input_metadata( char *restrict text, COLOR color, TEXT_STYLE style, - ON_TEXT_INPUT on_text_input); + ON_TEXT_INPUT on_text_input, void *data); extern void _tui_delete_input_text(WIDGET *restrict text_input); extern WIDGET *tui_make_padding(WIDGET *restrict child, int padding_top, |