fn_test and ui_text_input work
This commit is contained in:
65
src/ui/ui.h
65
src/ui/ui.h
@@ -42,6 +42,63 @@ typedef enum {
|
||||
} ui_lop_t;
|
||||
|
||||
#include "ui.gen.h"
|
||||
|
||||
typedef struct ui_caret_t ui_caret_t;
|
||||
struct ui_caret_t {
|
||||
union {
|
||||
i32 e[2];
|
||||
struct { r1i32_t range; };
|
||||
};
|
||||
i32 ifront;
|
||||
};
|
||||
|
||||
fn ui_caret_t ui_caret_clamp(ui_caret_t c, i32 min, i32 max) {
|
||||
return (ui_caret_t){CLAMP(c.e[0],min,max), CLAMP(c.e[1],min,max), c.ifront};
|
||||
}
|
||||
fn i32 ui_caret_front(ui_caret_t c) { return c.e[c.ifront]; }
|
||||
fn i32 ui_caret_back(ui_caret_t c) { return c.e[c.ifront ? 0 : 1]; }
|
||||
|
||||
ui_caret_t ui_caret(i32 front, i32 back) {
|
||||
ui_caret_t result = {0};
|
||||
if (front >= back) {
|
||||
result.range.min = back;
|
||||
result.range.max = front;
|
||||
result.ifront = 1;
|
||||
} else {
|
||||
result.range.min = front;
|
||||
result.range.max = back;
|
||||
result.ifront = 0;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
ui_caret_t ui_caret_set_back(ui_caret_t caret, i32 back) {
|
||||
i32 front = ui_caret_front(caret);
|
||||
ui_caret_t result = ui_caret(front, back);
|
||||
return result;
|
||||
}
|
||||
|
||||
ui_caret_t ui_caret_set_front(ui_caret_t caret, i32 front) {
|
||||
i32 back = ui_caret_back(caret);
|
||||
ui_caret_t result = ui_caret(front, back);
|
||||
return result;
|
||||
}
|
||||
|
||||
fn ui_caret_t ui_carets(i32 x) {
|
||||
return ui_caret(x, x);
|
||||
}
|
||||
|
||||
typedef struct ui_text_input_t ui_text_input_t;
|
||||
struct ui_text_input_t {
|
||||
union {
|
||||
struct { char *str; i64 len; };
|
||||
s8_t string;
|
||||
};
|
||||
|
||||
i32 cap;
|
||||
ui_caret_t caret;
|
||||
};
|
||||
|
||||
typedef struct ui_box_t ui_box_t;
|
||||
struct ui_box_t {
|
||||
ui_box_t *next;
|
||||
@@ -74,10 +131,7 @@ struct ui_box_t {
|
||||
r2f32_t final_rect;
|
||||
b32 expanded;
|
||||
|
||||
i32 ti_cursor;
|
||||
char *ti_buffer;
|
||||
i32 ti_buffer_len;
|
||||
i32 ti_buffer_cap;
|
||||
ui_text_input_t text_input;
|
||||
};
|
||||
|
||||
typedef struct ui_signal_t ui_signal_t;
|
||||
@@ -138,4 +192,5 @@ fn void ui_set_rect(ui_box_t *box, r2f32_t rect) { box->rect = box->full_rect =
|
||||
#define ui_box_flags(...) (ui_box_flag_t){__VA_ARGS__}
|
||||
|
||||
fn ui_id_t ui_id(s8_t string);
|
||||
fn ui_id_t ui_idf(char *str, ...);
|
||||
fn ui_id_t ui_idf(char *str, ...);
|
||||
fn v2f32_t ui_aligned_text_pos(ui_text_align_t text_align, r2f32_t rect, s8_t string);
|
||||
Reference in New Issue
Block a user