diff --git a/HellionChat/Util/ColourUtil.cs b/HellionChat/Util/ColourUtil.cs index 5ece96b..66c0c61 100755 --- a/HellionChat/Util/ColourUtil.cs +++ b/HellionChat/Util/ColourUtil.cs @@ -102,6 +102,26 @@ internal static class ColourUtil return (abgr & 0x00FFFFFFu) | ((uint)newAlpha << 24); } + // Mixes an ABGR colour's RGB channels toward white (0xFF) by factor t in + // [0, 1]; the alpha byte is left untouched. A1 hover-sheen accent-tint: + // a low factor nudges the sweep toward the element's accent hue without + // going fully saturated (effect level stays "subtle"). RGB-only on + // purpose -- DrawHoverSheen owns the alpha falloff. + internal static uint LerpTowardWhite(uint abgr, float t) + { + t = Math.Clamp(t, 0f, 1f); + var a = (byte)((abgr >> 24) & 0xFFu); + var b = (byte)((abgr >> 16) & 0xFFu); + var g = (byte)((abgr >> 8) & 0xFFu); + var r = (byte)(abgr & 0xFFu); + + var nr = (byte)Math.Round(r + (0xFF - r) * t); + var ng = (byte)Math.Round(g + (0xFF - g) * t); + var nb = (byte)Math.Round(b + (0xFF - b) * t); + + return ((uint)a << 24) | ((uint)nb << 16) | ((uint)ng << 8) | nr; + } + public static uint HexToRgba(string hex) { ArgumentNullException.ThrowIfNull(hex);