feed base column & tab width through all font rendering paths; use temporary constants

This commit is contained in:
Ryan Fleury
2024-05-24 15:12:40 -07:00
parent 5074b7f62e
commit d716159faf
9 changed files with 117 additions and 99 deletions
+12 -12
View File
@@ -5746,7 +5746,7 @@ DF_VIEW_UI_FUNCTION_DEF(Code)
F32 code_font_size = df_font_size_from_slot(ws, DF_FontSlot_Code);
F_Metrics code_font_metrics = f_metrics_from_tag_size(code_font, code_font_size);
F32 code_line_height = ceil_f32(f_line_height_from_metrics(&code_font_metrics) * 1.5f);
F32 big_glyph_advance = f_dim_from_tag_size_string(code_font, code_font_size, str8_lit("H")).x;
F32 big_glyph_advance = f_dim_from_tag_size_string(code_font, code_font_size, 0, 0, str8_lit("H")).x;
Vec2F32 panel_box_dim = dim_2f32(rect);
Vec2F32 bottom_bar_dim = {panel_box_dim.x, ui_em(1.8f, 0).value};
F32 scroll_bar_dim = floor_f32(ui_top_font_size()*1.5f);
@@ -6357,7 +6357,7 @@ DF_VIEW_UI_FUNCTION_DEF(Code)
{
tv->center_cursor = 0;
String8 cursor_line = str8_substr(data, text_info.lines_ranges[tv->cursor.line-1]);
F32 cursor_advance = f_dim_from_tag_size_string(code_font, code_font_size, str8_prefix(cursor_line, tv->cursor.column-1)).x;
F32 cursor_advance = f_dim_from_tag_size_string(code_font, code_font_size, UI_TEMP_BASE_COLUMN_TODO, UI_TEMP_TAB_WIDTH, str8_prefix(cursor_line, tv->cursor.column-1)).x;
// rjf: scroll x
{
@@ -6380,7 +6380,7 @@ DF_VIEW_UI_FUNCTION_DEF(Code)
if(snap[Axis2_X])
{
String8 cursor_line = str8_substr(data, text_info.lines_ranges[tv->cursor.line-1]);
S64 cursor_off = (S64)(f_dim_from_tag_size_string(code_font, code_font_size, str8_prefix(cursor_line, tv->cursor.column-1)).x + margin_width_px + line_num_width_px);
S64 cursor_off = (S64)(f_dim_from_tag_size_string(code_font, code_font_size, UI_TEMP_BASE_COLUMN_TODO, UI_TEMP_TAB_WIDTH, str8_prefix(cursor_line, tv->cursor.column-1)).x + margin_width_px + line_num_width_px);
Rng1S64 visible_pixel_range =
{
view->scroll_pos.x.idx,
@@ -6810,7 +6810,7 @@ DF_VIEW_UI_FUNCTION_DEF(Disassembly)
F32 code_font_size = df_font_size_from_slot(ws, DF_FontSlot_Code);
F_Metrics code_font_metrics = f_metrics_from_tag_size(code_font, code_font_size);
F32 code_line_height = ceil_f32(f_line_height_from_metrics(&code_font_metrics) * 1.5f);
F32 big_glyph_advance = f_dim_from_tag_size_string(code_font, code_font_size, str8_lit("H")).x;
F32 big_glyph_advance = f_dim_from_tag_size_string(code_font, code_font_size, 0, 0, str8_lit("H")).x;
Vec2F32 panel_box_dim = dim_2f32(rect);
Vec2F32 bottom_bar_dim = {panel_box_dim.x, ui_top_font_size()*1.8f};
F32 scroll_bar_dim = floor_f32(ui_top_font_size()*1.5f);
@@ -7677,7 +7677,7 @@ DF_VIEW_UI_FUNCTION_DEF(Output)
F32 code_font_size = df_font_size_from_slot(ws, DF_FontSlot_Code);
F_Metrics code_font_metrics = f_metrics_from_tag_size(code_font, code_font_size);
F32 code_line_height = ceil_f32(f_line_height_from_metrics(&code_font_metrics) * 1.5f);
F32 big_glyph_advance = f_dim_from_tag_size_string(code_font, code_font_size, str8_lit("H")).x;
F32 big_glyph_advance = f_dim_from_tag_size_string(code_font, code_font_size, 0, 0, str8_lit("H")).x;
Vec2F32 panel_box_dim = dim_2f32(rect);
Vec2F32 bottom_bar_dim = {panel_box_dim.x, ui_top_font_size()*1.8f};
F32 scroll_bar_dim = floor_f32(ui_top_font_size()*1.5f);
@@ -8050,7 +8050,7 @@ DF_VIEW_UI_FUNCTION_DEF(Output)
{
tv->center_cursor = 0;
String8 cursor_line = txti_string_from_handle_line_num(scratch.arena, txti_handle, tv->cursor.line);
F32 cursor_advance = f_dim_from_tag_size_string(code_font, code_font_size, str8_prefix(cursor_line, tv->cursor.column-1)).x;
F32 cursor_advance = f_dim_from_tag_size_string(code_font, code_font_size, UI_TEMP_BASE_COLUMN_TODO, UI_TEMP_TAB_WIDTH, str8_prefix(cursor_line, tv->cursor.column-1)).x;
// rjf: scroll x
{
@@ -8073,7 +8073,7 @@ DF_VIEW_UI_FUNCTION_DEF(Output)
if(snap[Axis2_X])
{
String8 cursor_line = txti_string_from_handle_line_num(scratch.arena, txti_handle, tv->cursor.line);
S64 cursor_off = (S64)(f_dim_from_tag_size_string(code_font, code_font_size, str8_prefix(cursor_line, tv->cursor.column-1)).x + margin_width_px + line_num_width_px);
S64 cursor_off = (S64)(f_dim_from_tag_size_string(code_font, code_font_size, UI_TEMP_BASE_COLUMN_TODO, UI_TEMP_TAB_WIDTH, str8_prefix(cursor_line, tv->cursor.column-1)).x + margin_width_px + line_num_width_px);
Rng1S64 visible_pixel_range =
{
view->scroll_pos.x.idx,
@@ -8282,7 +8282,7 @@ DF_VIEW_UI_FUNCTION_DEF(Memory)
//
F_Tag font = df_font_from_slot(DF_FontSlot_Code);
F32 font_size = df_font_size_from_slot(ws, DF_FontSlot_Code);
F32 big_glyph_advance = f_dim_from_tag_size_string(font, font_size, str8_lit("H")).x;
F32 big_glyph_advance = f_dim_from_tag_size_string(font, font_size, 0, 0, str8_lit("H")).x;
F32 row_height_px = floor_f32(font_size*2.f);
F32 cell_width_px = floor_f32(font_size*2.f * mv->bytes_per_cell);
F32 scroll_bar_dim = floor_f32(ui_top_font_size()*1.5f);
@@ -8964,9 +8964,9 @@ DF_VIEW_UI_FUNCTION_DEF(Memory)
D_BucketScope(bucket)
{
Vec2F32 text_pos = ui_box_text_position(ascii_box);
d_rect(r2f32p(text_pos.x + f_dim_from_tag_size_string(font, font_size, str8_prefix(ascii_text, selection_in_row.min+0-row_range_bytes.min)).x - font_size/8.f,
d_rect(r2f32p(text_pos.x + f_dim_from_tag_size_string(font, font_size, 0, 0, str8_prefix(ascii_text, selection_in_row.min+0-row_range_bytes.min)).x - font_size/8.f,
ascii_box->rect.y0,
text_pos.x + f_dim_from_tag_size_string(font, font_size, str8_prefix(ascii_text, selection_in_row.max+1-row_range_bytes.min)).x + font_size/4.f,
text_pos.x + f_dim_from_tag_size_string(font, font_size, 0, 0, str8_prefix(ascii_text, selection_in_row.max+1-row_range_bytes.min)).x + font_size/4.f,
ascii_box->rect.y1),
df_rgba_from_theme_color(DF_ThemeColor_TextSelection),
0, 0, 1.f);
@@ -8980,9 +8980,9 @@ DF_VIEW_UI_FUNCTION_DEF(Memory)
{
Vec2F32 text_pos = ui_box_text_position(ascii_box);
Vec4F32 color = df_rgba_from_theme_color(DF_ThemeColor_Highlight0);
d_rect(r2f32p(text_pos.x + f_dim_from_tag_size_string(font, font_size, str8_prefix(ascii_text, mouse_hover_byte_num-1-row_range_bytes.min)).x - font_size/8.f,
d_rect(r2f32p(text_pos.x + f_dim_from_tag_size_string(font, font_size, 0, 0, str8_prefix(ascii_text, mouse_hover_byte_num-1-row_range_bytes.min)).x - font_size/8.f,
ascii_box->rect.y0,
text_pos.x + f_dim_from_tag_size_string(font, font_size, str8_prefix(ascii_text, mouse_hover_byte_num+0-row_range_bytes.min)).x + font_size/4.f,
text_pos.x + f_dim_from_tag_size_string(font, font_size, 0, 0, str8_prefix(ascii_text, mouse_hover_byte_num+0-row_range_bytes.min)).x + font_size/4.f,
ascii_box->rect.y1),
color,
1.f, 3.f, 1.f);