Files
HellionChat/HellionChat/Ui/HellionStyleHelpers.cs
T
JonKazama-Hellion 28ea2fa553 refactor(theme): extract ChildBgAlpha threshold logic to testable helper (F1.2)
HellionStyle.PushGlobal had two lines that resolved the child-bg alpha
based on window opacity. Moves the 0.999f threshold and the alpha-mask
into HellionStyleHelpers.ResolveChildBgAlpha so the logic is reachable
from the build suite without touching the ImGui surface.
2026-05-12 18:19:15 +02:00

18 lines
828 B
C#

namespace HellionChat.Ui;
internal static class HellionStyleHelpers
{
// Child surfaces are drawn over WindowBg, so at partial window opacity
// the theme's own ChildBg alpha would double-multiply and read too solid.
// Above ~full opacity we preserve the theme alpha; below it we wipe to 0
// so WindowBg alone carries the coverage. The 0.999f threshold is a
// float-imprecision guard around the user-facing 100% slider value.
// TEST-MIRROR: ../../Hellion Build test/_Helpers/HellionStyleHelpersTests.cs
public static uint ResolveChildBgAlpha(uint themeChildBgRgba, float windowOpacity)
{
var alphaPreserved = windowOpacity >= 0.999f;
var childBgAlpha = alphaPreserved ? (themeChildBgRgba & 0xFFu) : 0u;
return (themeChildBgRgba & 0xFFFFFF00u) | childBgAlpha;
}
}