simplify font cache run building api, since it is now cahced

This commit is contained in:
Ryan Fleury
2025-04-25 09:46:58 -07:00
parent 7dc920c14f
commit 0ed951e537
5 changed files with 31 additions and 36 deletions
+2 -2
View File
@@ -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);
}
+5 -5
View File
@@ -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);
+1 -1
View File
@@ -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);
+21 -26
View File
@@ -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")
{
+2 -2
View File
@@ -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;