imgui_utils: improve precise outline drawing

This commit is contained in:
Hyper 2024-12-09 18:45:22 +00:00
parent f5c6582065
commit 3c6e348499
2 changed files with 6 additions and 4 deletions

View file

@ -141,14 +141,14 @@ static void DrawHeaderContainer(const char* text)
SetTextSkew((min.y + max.y) / 2.0f, Scale(3.0f));
// TODO: Apply bevel.
DrawTextWithOutline<int>
DrawTextWithOutline<float>
(
g_fntNewRodinUB,
fontSize,
{ /* X */ min.x + textMarginX, /* Y */ CENTRE_TEXT_VERT(min, max, textSize) - Scale(5) },
IM_COL32(255, 255, 255, 255 * alpha),
text,
3,
1.65f,
IM_COL32(0, 0, 0, 255 * alpha)
);

View file

@ -188,10 +188,12 @@ static void DrawTextWithOutline(const ImFont* font, float fontSize, const ImVec2
if constexpr (std::is_same_v<float, T> || std::is_same_v<double, T>)
{
auto step = outlineSize / 2.0f;
// TODO: This is still very inefficient!
for (float i = -outlineSize; i <= outlineSize; i += 0.5f)
for (float i = -outlineSize; i <= outlineSize; i += step)
{
for (float j = -outlineSize; j <= outlineSize; j += 0.5f)
for (float j = -outlineSize; j <= outlineSize; j += step)
{
if (i == 0.0f && j == 0.0f)
continue;