string16 improvements

This commit is contained in:
Krzosa Karol
2025-04-04 08:25:47 +02:00
parent f6d5a1cf81
commit f3aa52ba3d
34 changed files with 637 additions and 699 deletions

View File

@@ -43,13 +43,13 @@ fn s8_t ui_tprint_loc(ui_code_loc_t loc) {
fn s8_t ui_get_display_string(s8_t string) {
s8_t result = string;
s8_seek(result, s8_lit("##"), s8_seek_none, &result.len);
s8_seek(result, s8("##"), s8_seek_none, &result.len);
return result;
}
fn s8_t ui_get_hash_string(s8_t string) {
i64 len = 0;
if (s8_seek(string, s8_lit("##"), s8_seek_none, &len)) {
if (s8_seek(string, s8("##"), s8_seek_none, &len)) {
string = s8_skip(string, len + 2);
}
return string;
@@ -435,14 +435,14 @@ fn void ui_text_input_draw(ui_box_t *box) {
rn_draw_rect(co.rect, co.background_color);
ui_text_input_t *ti = box->text_input;
s8_t string = s8(ti->str, ti->len);
s8_t string = s8_make(ti->str, ti->len);
v2f32_t pos = ui_aligned_text_pos(box->string_pos_offset, box->text_align, co.rect, string, rn_measure_string(rn->main_font, string));
rn_draw_string(rn->main_font, pos, co.text_color, string);
ti->caret = ui_caret_clamp(ti->caret, 0, (i32)ti->len);
{
s8_t string_min = s8(ti->str, ti->caret.range.min);
s8_t string_max = s8(ti->str, ti->caret.range.max);
s8_t string_min = s8_make(ti->str, ti->caret.range.min);
s8_t string_max = s8_make(ti->str, ti->caret.range.max);
v2f32_t size_min = rn_measure_string(rn->main_font, string_min);
v2f32_t size_max = rn_measure_string(rn->main_font, string_max);
@@ -507,19 +507,19 @@ fn_test void ui_test_text_replace(void) {
char buff[4] = {0};
ti.str = buff;
ti.cap = lengthof(buff);
ui_text_replace(&ti, r1i32(0,0), s8_lit("astfpo"));
assert(s8_are_equal(ti.string, s8_lit("astf")));
ui_text_replace(&ti, r1i32(0,0), s8("astfpo"));
assert(s8_are_equal(ti.string, s8("astf")));
ui_text_replace(&ti, r1i32(0,4), s8_lit("qwer"));
assert(s8_are_equal(ti.string, s8_lit("qwer")));
ui_text_replace(&ti, r1i32(0,4), s8("qwer"));
assert(s8_are_equal(ti.string, s8("qwer")));
ui_text_replace(&ti, r1i32(1,2), s8_lit("a"));
assert(s8_are_equal(ti.string, s8_lit("qaer")));
ui_text_replace(&ti, r1i32(1,2), s8("a"));
assert(s8_are_equal(ti.string, s8("qaer")));
}
#define ui_text_input(...) ui__text_input(UILOC, __VA_ARGS__)
fn ui_signal_t ui__text_input(ui_code_loc_t loc, ui_text_input_t *ti, b32 sim_even_if_no_focus) {
ui_box_t *box = ui_box(.loc = loc, .string = s8_lit("text_input"), .flags = { .draw_border = true, .draw_rect = true, .draw_text = true, .keyboard_nav = true });
ui_box_t *box = ui_box(.loc = loc, .string = s8("text_input"), .flags = { .draw_border = true, .draw_rect = true, .draw_text = true, .keyboard_nav = true });
box->text_input = ti;
box->custom_draw = ui_text_input_draw;
@@ -542,13 +542,13 @@ fn ui_signal_t ui__text_input(ui_code_loc_t loc, ui_text_input_t *ti, b32 sim_ev
signal.text_changed = true;
if (ev->ctrl) {
if (sel_size) {
ui_text_replace(ti, ti->caret.range, s8_lit(""));
ui_text_replace(ti, ti->caret.range, s8(""));
} else {
ui_text_replace(ti, r1i32(0, ti->caret.range.max), s8_lit(""));
ui_text_replace(ti, r1i32(0, ti->caret.range.max), s8(""));
}
} else {
if (sel_size) {
ui_text_replace(ti, ti->caret.range, s8_lit(""));
ui_text_replace(ti, ti->caret.range, s8(""));
} else {
ui_text_replace(ti, r1i32(ti->caret.e[0] - 1, ti->caret.e[0]), s8_null);
ti->caret = ui_carets(ti->caret.range.min - 1);
@@ -557,7 +557,7 @@ fn ui_signal_t ui__text_input(ui_code_loc_t loc, ui_text_input_t *ti, b32 sim_ev
} else if (ev->key == app_key_delete) {
signal.text_changed = true;
if (sel_size) {
ui_text_replace(ti, ti->caret.range, s8_lit(""));
ui_text_replace(ti, ti->caret.range, s8(""));
} else {
ui_text_replace(ti, r1i32(ti->caret.e[0], ti->caret.e[0] + 1), s8_null);
}
@@ -579,7 +579,7 @@ fn ui_signal_t ui__text_input(ui_code_loc_t loc, ui_text_input_t *ti, b32 sim_ev
signal.text_commit = true;
}
}
v2f32_t size = rn_measure_string(rn->main_font, s8_lit("_"));
v2f32_t size = rn_measure_string(rn->main_font, s8("_"));
v2f32_t pos = v2f32_sub(ev->mouse_pos, box->final_rect.min);
i32 p = (i32)f32_round(pos.x / size.x);
if (ev->kind == app_event_kind_mouse_down && ev->mouse_button == app_mouse_button_left) {
@@ -1262,9 +1262,9 @@ fn void ui_demo_everything_lister(void) {
}
s8_t cmds[] = {
s8_lit("show data tab"),
s8_lit("show log tab"),
s8_lit("show menus tab"),
s8("show data tab"),
s8("show log tab"),
s8("show menus tab"),
};
if (lister_open) {
@@ -1292,7 +1292,7 @@ fn void ui_demo_everything_lister(void) {
if (lister_just_opened) text_input.len = 0;
ma_temp_t scratch = ma_begin_scratch();
s8_t needle = s8(text_input.str, text_input.len);
s8_t needle = s8_make(text_input.str, text_input.len);
fuzzy_pair_t *pairs = fuzzy_rate_array(scratch.arena, needle, cmds, lengthof(cmds));
b32 set_focus = lister_just_opened || ti_sig.text_changed;
@@ -1370,7 +1370,7 @@ fn void ui_demo_update(app_frame_t *frame, mt_tweak_t *tweak_table, i32 tweak_co
ui_top_rectp()[0] = r2f32_shrinks(ui_top_rect(), ui_em(1));
for (i32 i = 0; i < tweak_count; i += 1) {
mt_tweak_t *tweak = tweak_table + i;
if (s8_starts_with(tweak->name, s8_lit("_"), false)) {
if (s8_starts_with(tweak->name, s8("_"), false)) {
continue;
}