improvements in text layout, focus visualization, smooth text rasterization for icons; checkpoint in ui visuals pass

This commit is contained in:
Ryan Fleury
2024-06-22 15:58:40 -07:00
parent 5f23820f9d
commit 6ac870dac0
11 changed files with 179 additions and 99 deletions
+1 -1
View File
@@ -31,7 +31,7 @@ ui_divider(UI_Size size)
internal UI_Signal
ui_label(String8 string)
{
UI_Box *box = ui_build_box_from_string(UI_BoxFlag_DrawText, str8_lit(""));
UI_Box *box = ui_build_box_from_string(UI_BoxFlag_DrawText, str8_zero());
ui_box_equip_display_string(box, string);
UI_Signal interact = ui_signal_from_box(box);
return interact;
+6 -5
View File
@@ -1870,6 +1870,7 @@ ui_begin_ctx_menu(UI_Key key)
ui_state->ctx_menu_root->flags |= UI_BoxFlag_RoundChildrenByParent;
ui_state->ctx_menu_root->flags |= UI_BoxFlag_DrawBackgroundBlur;
ui_state->ctx_menu_root->flags |= UI_BoxFlag_DrawBackground;
ui_state->ctx_menu_root->flags |= UI_BoxFlag_DisableFocusOverlay;
ui_state->ctx_menu_root->flags |= UI_BoxFlag_DrawBorder;
ui_state->ctx_menu_root->flags |= UI_BoxFlag_Clip;
ui_state->ctx_menu_root->flags |= UI_BoxFlag_Clickable;
@@ -2376,7 +2377,7 @@ ui_box_text_position(UI_Box *box)
F_Tag font = box->font;
F32 font_size = box->font_size;
F_Metrics font_metrics = f_metrics_from_tag_size(font, font_size);
result.y = ceil_f32((box->rect.p0.y + box->rect.p1.y)/2.f + (font_metrics.capital_height/2) - font_metrics.line_gap/2);
result.y = floor_f32((box->rect.p0.y + box->rect.p1.y)/2.f + (font_metrics.capital_height/2) - font_metrics.line_gap/2);
switch(box->text_align)
{
default:
@@ -2386,14 +2387,14 @@ ui_box_text_position(UI_Box *box)
}break;
case UI_TextAlign_Center:
{
Vec2F32 advance = box->display_string_runs.dim;
result.x = floor_f32((box->rect.p0.x + box->rect.p1.x)/2 - advance.x/2 - 1.f);
Vec2F32 text_dim = box->display_string_runs.dim;
result.x = round_f32((box->rect.p0.x + box->rect.p1.x)/2 - text_dim.x/2) - 1.f;
result.x = ClampBot(result.x, box->rect.x0);
}break;
case UI_TextAlign_Right:
{
Vec2F32 advance = box->display_string_runs.dim;
result.x = (box->rect.p1.x) - 1.f - advance.x;
Vec2F32 text_dim = box->display_string_runs.dim;
result.x = round_f32((box->rect.p1.x) - text_dim.x);
result.x = ClampBot(result.x, box->rect.x0);
}break;
}
+11 -10
View File
@@ -323,21 +323,22 @@ typedef U64 UI_BoxFlags;
# define UI_BoxFlag_AnimatePosY (UI_BoxFlags)(1ull<<44)
# define UI_BoxFlag_DisableTextTrunc (UI_BoxFlags)(1ull<<45)
# define UI_BoxFlag_DisableIDString (UI_BoxFlags)(1ull<<46)
# define UI_BoxFlag_DisableFocusViz (UI_BoxFlags)(1ull<<47)
# define UI_BoxFlag_RequireFocusBackground (UI_BoxFlags)(1ull<<48)
# define UI_BoxFlag_DisableFocusBorder (UI_BoxFlags)(1ull<<47)
# define UI_BoxFlag_DisableFocusOverlay (UI_BoxFlags)(1ull<<48)
# define UI_BoxFlag_HasDisplayString (UI_BoxFlags)(1ull<<49)
# define UI_BoxFlag_HasFuzzyMatchRanges (UI_BoxFlags)(1ull<<50)
# define UI_BoxFlag_RoundChildrenByParent (UI_BoxFlags)(1ull<<51)
//- rjf: bundles
# define UI_BoxFlag_Clickable (UI_BoxFlag_MouseClickable|UI_BoxFlag_KeyboardClickable)
# define UI_BoxFlag_DefaultFocusNav (UI_BoxFlag_DefaultFocusNavX|UI_BoxFlag_DefaultFocusNavY|UI_BoxFlag_DefaultFocusEdit)
# define UI_BoxFlag_Floating (UI_BoxFlag_FloatingX|UI_BoxFlag_FloatingY)
# define UI_BoxFlag_FixedSize (UI_BoxFlag_FixedWidth|UI_BoxFlag_FixedHeight)
# define UI_BoxFlag_AllowOverflow (UI_BoxFlag_AllowOverflowX|UI_BoxFlag_AllowOverflowY)
# define UI_BoxFlag_AnimatePos (UI_BoxFlag_AnimatePosX|UI_BoxFlag_AnimatePosY)
# define UI_BoxFlag_ViewScroll (UI_BoxFlag_ViewScrollX|UI_BoxFlag_ViewScrollY)
# define UI_BoxFlag_ViewClamp (UI_BoxFlag_ViewClampX|UI_BoxFlag_ViewClampY)
# define UI_BoxFlag_Clickable (UI_BoxFlag_MouseClickable|UI_BoxFlag_KeyboardClickable)
# define UI_BoxFlag_DefaultFocusNav (UI_BoxFlag_DefaultFocusNavX|UI_BoxFlag_DefaultFocusNavY|UI_BoxFlag_DefaultFocusEdit)
# define UI_BoxFlag_Floating (UI_BoxFlag_FloatingX|UI_BoxFlag_FloatingY)
# define UI_BoxFlag_FixedSize (UI_BoxFlag_FixedWidth|UI_BoxFlag_FixedHeight)
# define UI_BoxFlag_AllowOverflow (UI_BoxFlag_AllowOverflowX|UI_BoxFlag_AllowOverflowY)
# define UI_BoxFlag_AnimatePos (UI_BoxFlag_AnimatePosX|UI_BoxFlag_AnimatePosY)
# define UI_BoxFlag_ViewScroll (UI_BoxFlag_ViewScrollX|UI_BoxFlag_ViewScrollY)
# define UI_BoxFlag_ViewClamp (UI_BoxFlag_ViewClampX|UI_BoxFlag_ViewClampY)
# define UI_BoxFlag_DisableFocusEffects (UI_BoxFlag_DisableFocusBorder|UI_BoxFlag_DisableFocusOverlay)
//}
typedef struct UI_Box UI_Box;