From 0ed951e5378df9ff67d58f8409122f837f3cf137 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Fri, 25 Apr 2025 09:46:58 -0700 Subject: [PATCH] simplify font cache run building api, since it is now cahced --- src/draw/draw.c | 4 ++-- src/font_cache/font_cache.c | 10 ++++---- src/font_cache/font_cache.h | 2 +- src/raddbg/raddbg_core.c | 47 +++++++++++++++++-------------------- src/raddbg/raddbg_widgets.c | 4 ++-- 5 files changed, 31 insertions(+), 36 deletions(-) diff --git a/src/draw/draw.c b/src/draw/draw.c index 39c12fa4..4dc20b5c 100644 --- a/src/draw/draw.c +++ b/src/draw/draw.c @@ -171,7 +171,7 @@ dr_fruns_from_fstrs(Arena *arena, F32 tab_size_px, DR_FStrList *strs) for(DR_FStrNode *n = strs->first; n != 0; n = n->next) { DR_FRunNode *dst_n = push_array(arena, DR_FRunNode, 1); - dst_n->v.run = fnt_push_run_from_string(arena, n->v.params.font, n->v.params.size, base_align_px, tab_size_px, n->v.params.raster_flags, n->v.string); + dst_n->v.run = fnt_run_from_string(n->v.params.font, n->v.params.size, base_align_px, tab_size_px, n->v.params.raster_flags, n->v.string); dst_n->v.color = n->v.params.color; dst_n->v.underline_thickness = n->v.params.underline_thickness; dst_n->v.strikethrough_thickness = n->v.params.strikethrough_thickness; @@ -712,7 +712,7 @@ internal void dr_text(FNT_Tag font, F32 size, F32 base_align_px, F32 tab_size_px, FNT_RasterFlags flags, Vec2F32 p, Vec4F32 color, String8 string) { Temp scratch = scratch_begin(0, 0); - FNT_Run run = fnt_push_run_from_string(scratch.arena, font, size, base_align_px, tab_size_px, flags, string); + FNT_Run run = fnt_run_from_string(font, size, base_align_px, tab_size_px, flags, string); dr_text_run(p, color, run); scratch_end(scratch); } diff --git a/src/font_cache/font_cache.c b/src/font_cache/font_cache.c index 4070aa3c..9754f352 100644 --- a/src/font_cache/font_cache.c +++ b/src/font_cache/font_cache.c @@ -568,7 +568,7 @@ fnt_hash2style_from_tag_size_flags(FNT_Tag tag, F32 size, FNT_RasterFlags flags) } internal FNT_Run -fnt_push_run_from_string(Arena *arena, FNT_Tag tag, F32 size, F32 base_align_px, F32 tab_size_px, FNT_RasterFlags flags, String8 string) +fnt_run_from_string(FNT_Tag tag, F32 size, F32 base_align_px, F32 tab_size_px, FNT_RasterFlags flags, String8 string) { ProfBeginFunction(); @@ -695,7 +695,7 @@ fnt_push_run_from_string(Arena *arena, FNT_Tag tag, F32 size, F32 base_align_px, if(info == 0) { ProfBegin("no info found -> miss... fill this hash in the cache"); - Temp scratch = scratch_begin(&arena, 1); + Temp scratch = scratch_begin(0, 0); // rjf: grab font handle for this tag if we don't have one already if(font_handle_mapped_on_miss == 0) @@ -902,7 +902,7 @@ fnt_wrapped_string_lines_from_font_size_string_max(Arena *arena, FNT_Tag font, F String8List list = {0}; { Temp scratch = scratch_begin(&arena, 1); - FNT_Run run = fnt_push_run_from_string(scratch.arena, font, size, base_align_px, tab_size_px, 0, string); + FNT_Run run = fnt_run_from_string(font, size, base_align_px, tab_size_px, 0, string); F32 off_px = 0; U64 off_bytes = 0; U64 line_start_off_bytes = 0; @@ -1015,7 +1015,7 @@ fnt_dim_from_tag_size_string(FNT_Tag tag, F32 size, F32 base_align_px, F32 tab_s ProfBeginFunction(); Temp scratch = scratch_begin(0, 0); Vec2F32 result = {0}; - FNT_Run run = fnt_push_run_from_string(scratch.arena, tag, size, base_align_px, tab_size_px, 0, string); + FNT_Run run = fnt_run_from_string(tag, size, base_align_px, tab_size_px, 0, string); result = run.dim; scratch_end(scratch); ProfEnd(); @@ -1052,7 +1052,7 @@ fnt_char_pos_from_tag_size_string_p(FNT_Tag tag, F32 size, F32 base_align_px, F3 F32 best_offset_px = inf32(); U64 offset_bytes = 0; F32 offset_px = 0.f; - FNT_Run run = fnt_push_run_from_string(scratch.arena, tag, size, base_align_px, tab_size_px, 0, string); + FNT_Run run = fnt_run_from_string(tag, size, base_align_px, tab_size_px, 0, string); for(U64 idx = 0; idx <= run.pieces.count; idx += 1) { F32 this_piece_offset_px = abs_f32(offset_px - p); diff --git a/src/font_cache/font_cache.h b/src/font_cache/font_cache.h index d1ac1661..4bc6b0b7 100644 --- a/src/font_cache/font_cache.h +++ b/src/font_cache/font_cache.h @@ -271,7 +271,7 @@ internal FNT_PieceArray fnt_piece_array_copy(Arena *arena, FNT_PieceArray *src); //- rjf: base cache lookups internal FNT_Hash2StyleRasterCacheNode *fnt_hash2style_from_tag_size_flags(FNT_Tag tag, F32 size, FNT_RasterFlags flags); -internal FNT_Run fnt_push_run_from_string(Arena *arena, FNT_Tag tag, F32 size, F32 base_align_px, F32 tab_size_px, FNT_RasterFlags flags, String8 string); +internal FNT_Run fnt_run_from_string(FNT_Tag tag, F32 size, F32 base_align_px, F32 tab_size_px, FNT_RasterFlags flags, String8 string); //- rjf: helpers internal String8List fnt_wrapped_string_lines_from_font_size_string_max(Arena *arena, FNT_Tag font, F32 size, F32 base_align_px, F32 tab_size_px, String8 string, F32 max); diff --git a/src/raddbg/raddbg_core.c b/src/raddbg/raddbg_core.c index dc3c87b6..35718c3f 100644 --- a/src/raddbg/raddbg_core.c +++ b/src/raddbg/raddbg_core.c @@ -5532,36 +5532,31 @@ rd_window_frame(void) Temp scratch = scratch_begin(0, 0); RD_FontSlot slot = english_font_slots[idx]; String8 sample_text = str8_lit("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890~!@#$%^&*()-_+=[{]}\\|;:'\",<.>/?"); - fnt_push_run_from_string(scratch.arena, - rd_font_from_slot(slot), - font_size, - 0, 0, 0, - sample_text); - fnt_push_run_from_string(scratch.arena, - rd_font_from_slot(slot), - font_size, - 0, 0, 0, - sample_text); + fnt_run_from_string(rd_font_from_slot(slot), + font_size, + 0, 0, 0, + sample_text); + fnt_run_from_string(rd_font_from_slot(slot), + font_size, + 0, 0, 0, + sample_text); scratch_end(scratch); } for(RD_IconKind icon_kind = RD_IconKind_Null; icon_kind < RD_IconKind_COUNT; icon_kind = (RD_IconKind)(icon_kind+1)) { Temp scratch = scratch_begin(0, 0); - fnt_push_run_from_string(scratch.arena, - rd_font_from_slot(icon_font_slot), - font_size, - 0, 0, FNT_RasterFlag_Smooth, - rd_icon_kind_text_table[icon_kind]); - fnt_push_run_from_string(scratch.arena, - rd_font_from_slot(icon_font_slot), - font_size, - 0, 0, FNT_RasterFlag_Smooth, - rd_icon_kind_text_table[icon_kind]); - fnt_push_run_from_string(scratch.arena, - rd_font_from_slot(icon_font_slot), - font_size, - 0, 0, FNT_RasterFlag_Smooth, - rd_icon_kind_text_table[icon_kind]); + fnt_run_from_string(rd_font_from_slot(icon_font_slot), + font_size, + 0, 0, FNT_RasterFlag_Smooth, + rd_icon_kind_text_table[icon_kind]); + fnt_run_from_string(rd_font_from_slot(icon_font_slot), + font_size, + 0, 0, FNT_RasterFlag_Smooth, + rd_icon_kind_text_table[icon_kind]); + fnt_run_from_string(rd_font_from_slot(icon_font_slot), + font_size, + 0, 0, FNT_RasterFlag_Smooth, + rd_icon_kind_text_table[icon_kind]); scratch_end(scratch); } } @@ -8947,7 +8942,7 @@ rd_window_frame(void) ellipses_raster_flags = box->display_fstrs.last->v.params.raster_flags; } max_x = (box->rect.x1-text_position.x); - ellipses_run = fnt_push_run_from_string(scratch.arena, ellipses_font, ellipses_size, 0, box->tab_size, ellipses_raster_flags, str8_lit("...")); + ellipses_run = fnt_run_from_string(ellipses_font, ellipses_size, 0, box->tab_size, ellipses_raster_flags, str8_lit("...")); } if(box->flags & UI_BoxFlag_HasFuzzyMatchRanges) UI_TagF("match") { diff --git a/src/raddbg/raddbg_widgets.c b/src/raddbg/raddbg_widgets.c index 46fb322b..fe5eb327 100644 --- a/src/raddbg/raddbg_widgets.c +++ b/src/raddbg/raddbg_widgets.c @@ -1164,7 +1164,7 @@ internal UI_BOX_CUSTOM_DRAW(rd_bp_box_draw_extensions) { Temp scratch = scratch_begin(0, 0); Vec4F32 color = ui_color_from_name(str8_lit("text")); - FNT_Run run = fnt_push_run_from_string(scratch.arena, rd_font_from_slot(RD_FontSlot_Code), box->font_size*0.8f, 0, 0, FNT_RasterFlag_Smooth, str8_lit("if")); + FNT_Run run = fnt_run_from_string(rd_font_from_slot(RD_FontSlot_Code), box->font_size*0.8f, 0, 0, FNT_RasterFlag_Smooth, str8_lit("if")); Vec2F32 p = center_2f32(box->rect); p.x -= run.dim.x*0.5f; p.y += run.descent; @@ -1177,7 +1177,7 @@ internal UI_BOX_CUSTOM_DRAW(rd_bp_box_draw_extensions) { Temp scratch = scratch_begin(0, 0); Vec4F32 color = ui_color_from_name(str8_lit("breakpoint")); - FNT_Run run = fnt_push_run_from_string(scratch.arena, rd_font_from_slot(RD_FontSlot_Icons), box->font_size*0.95f, 0, 0, FNT_RasterFlag_Smooth, str8_lit("x")); + FNT_Run run = fnt_run_from_string(rd_font_from_slot(RD_FontSlot_Icons), box->font_size*0.95f, 0, 0, FNT_RasterFlag_Smooth, str8_lit("x")); Vec2F32 box_dim = dim_2f32(box->rect); Vec2F32 p = center_2f32(box->rect); p.x += box_dim.x*0.1f;