summaryrefslogtreecommitdiff
path: root/src/ui/tui.h
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2024-12-28 09:35:59 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2024-12-28 09:35:59 +0330
commit5a94037a19cee399d951b0e54937cffa82edecc2 (patch)
tree39b2a9aa3002a28d30f9b98d8b1ca5123b88b87f /src/ui/tui.h
parentd7802371b56734446a16962363322282ba772257 (diff)
fixed crashing on resizingHEADmaster
Diffstat (limited to 'src/ui/tui.h')
-rw-r--r--src/ui/tui.h40
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,