diff --git a/Directory.Build.targets b/Directory.Build.targets index 68f37fa..c76dfd3 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -87,7 +87,7 @@ - + diff --git a/ImGuiStyler/Color.cs b/ImGuiStyler/Color.cs index 34693b3..115fe9a 100644 --- a/ImGuiStyler/Color.cs +++ b/ImGuiStyler/Color.cs @@ -240,6 +240,13 @@ public static ImColor MultiplySaturation(this ImColor color, float amount) return FromHSLA(hsla); } + public static ImColor OffsetHue(this ImColor color, float amount) + { + var hsla = color.ToHSLA(); + hsla.X = (1f + (hsla.X + amount)) % 1f; + return FromHSLA(hsla); + } + public static ImColor LightenBy(this ImColor color, float amount) { var hsla = color.ToHSLA(); diff --git a/ImGuiStyler/Theme.cs b/ImGuiStyler/Theme.cs index 2d7145f..b16d766 100644 --- a/ImGuiStyler/Theme.cs +++ b/ImGuiStyler/Theme.cs @@ -8,6 +8,11 @@ public static class Theme { private static float NormalLuminanceMult { get; set; } = 0.4f; private static float NormalSaturationMult { get; set; } = 0.5f; + private static float AccentLuminanceMult { get; set; } = 0.7f; + private static float AccentSaturationMult { get; set; } = 0.8f; + private static float AccentHoveredLuminanceMult { get; set; } = 1.0f; + private static float AccentHoveredSaturationMult { get; set; } = 0.9f; + private static float AccentHueOffset { get; set; } = 0.5f; private static float HeaderLuminanceMult { get; set; } = 0.5f; private static float HeaderSaturationMult { get; set; } = 0.6f; private static float ActiveLuminanceMult { get; set; } = .6f; @@ -22,6 +27,8 @@ public static class Theme public static ImColor GetStateColor(ImColor baseColor, bool enabled) => enabled ? baseColor : baseColor.MultiplySaturation(DisabledSaturationMult); public static ImColor GetNormalColor(ImColor stateColor) => stateColor.MultiplyLuminance(NormalLuminanceMult).MultiplySaturation(NormalSaturationMult); + public static ImColor GetAccentColor(ImColor stateColor) => stateColor.MultiplyLuminance(AccentLuminanceMult).MultiplySaturation(AccentSaturationMult).OffsetHue(AccentHueOffset).WithAlpha(1); + public static ImColor GetAccentHoveredColor(ImColor stateColor) => stateColor.MultiplyLuminance(AccentHoveredLuminanceMult).MultiplySaturation(AccentHoveredSaturationMult).OffsetHue(AccentHueOffset).WithAlpha(1); public static ImColor GetHeaderColor(ImColor stateColor) => stateColor.MultiplyLuminance(HeaderLuminanceMult).MultiplySaturation(HeaderSaturationMult); public static ImColor GetActiveColor(ImColor stateColor) => stateColor.MultiplyLuminance(ActiveLuminanceMult).MultiplySaturation(ActiveSaturationMult); public static ImColor GetHoveredColor(ImColor stateColor) => stateColor.MultiplyLuminance(HoverLuminanceMult).MultiplySaturation(HoverSaturationMult); @@ -62,6 +69,8 @@ public static class Palette public static void Apply(ImColor baseColor) { var normalColor = GetNormalColor(baseColor); + var accentColor = GetAccentColor(baseColor); + var accentHoveredColor = GetAccentHoveredColor(baseColor); var headerColor = GetHeaderColor(baseColor); var hoveredColor = GetHoveredColor(baseColor); var activeColor = GetActiveColor(baseColor); @@ -101,10 +110,10 @@ public static void Apply(ImColor baseColor) colors[(int)ImGuiCol.ResizeGrip] = normalColor.Value; colors[(int)ImGuiCol.ResizeGripActive] = activeColor.Value; colors[(int)ImGuiCol.ResizeGripHovered] = hoveredColor.Value; - colors[(int)ImGuiCol.PlotLines] = normalColor.Value; - colors[(int)ImGuiCol.PlotLinesHovered] = hoveredColor.Value; - colors[(int)ImGuiCol.PlotHistogram] = normalColor.Value; - colors[(int)ImGuiCol.PlotHistogramHovered] = hoveredColor.Value; + colors[(int)ImGuiCol.PlotLines] = accentColor.Value; + colors[(int)ImGuiCol.PlotLinesHovered] = accentHoveredColor.Value; + colors[(int)ImGuiCol.PlotHistogram] = accentColor.Value; + colors[(int)ImGuiCol.PlotHistogramHovered] = accentHoveredColor.Value; colors[(int)ImGuiCol.ScrollbarGrab] = normalColor.WithSaturation(0).Value; colors[(int)ImGuiCol.ScrollbarGrabActive] = activeColor.WithSaturation(0).Value; colors[(int)ImGuiCol.ScrollbarGrabHovered] = hoveredColor.WithSaturation(0).Value; @@ -119,6 +128,8 @@ public ScopedThemeColor(ImColor baseColor, bool enabled) { var stateColor = GetStateColor(baseColor, enabled); var normalColor = GetNormalColor(stateColor); + var accentColor = GetAccentColor(baseColor); + var accentHoveredColor = GetAccentHoveredColor(baseColor); var headerColor = GetHeaderColor(stateColor); var hoveredColor = GetHoveredColor(stateColor); var activeColor = GetActiveColor(stateColor); @@ -158,10 +169,10 @@ public ScopedThemeColor(ImColor baseColor, bool enabled) PushStyleAndCount(ImGuiCol.ResizeGrip, normalColor, ref numStyles); PushStyleAndCount(ImGuiCol.ResizeGripActive, activeColor, ref numStyles); PushStyleAndCount(ImGuiCol.ResizeGripHovered, hoveredColor, ref numStyles); - PushStyleAndCount(ImGuiCol.PlotLines, normalColor, ref numStyles); - PushStyleAndCount(ImGuiCol.PlotLinesHovered, hoveredColor, ref numStyles); - PushStyleAndCount(ImGuiCol.PlotHistogram, normalColor, ref numStyles); - PushStyleAndCount(ImGuiCol.PlotHistogramHovered, hoveredColor, ref numStyles); + PushStyleAndCount(ImGuiCol.PlotLines, accentColor, ref numStyles); + PushStyleAndCount(ImGuiCol.PlotLinesHovered, accentHoveredColor, ref numStyles); + PushStyleAndCount(ImGuiCol.PlotHistogram, accentColor, ref numStyles); + PushStyleAndCount(ImGuiCol.PlotHistogramHovered, accentHoveredColor, ref numStyles); PushStyleAndCount(ImGuiCol.ScrollbarGrab, normalColor, ref numStyles); PushStyleAndCount(ImGuiCol.ScrollbarGrabActive, activeColor, ref numStyles); PushStyleAndCount(ImGuiCol.ScrollbarGrabHovered, hoveredColor, ref numStyles); diff --git a/ImGuiStylerDemo/ImGuiStylerDemo.cs b/ImGuiStylerDemo/ImGuiStylerDemo.cs index b95c3d3..1d97be0 100644 --- a/ImGuiStylerDemo/ImGuiStylerDemo.cs +++ b/ImGuiStylerDemo/ImGuiStylerDemo.cs @@ -28,6 +28,7 @@ private void OnTick(float dt) ImGui.InputText("InputText", ref valueString, 128); float valueFloat = 0.0f; ImGui.SliderFloat("SliderFloat", ref valueFloat, 0.0f, 1.0f); + ImGui.ProgressBar(0.95f, new(300, 0)); ImGui.Text("Text"); ImGui.TextColored(new System.Numerics.Vector4(1.0f, 0.0f, 0.0f, 1.0f), "TextColored"); ImGui.TextDisabled("TextDisabled"); diff --git a/ImGuiStylerDemo/ImGuiStylerDemo.csproj b/ImGuiStylerDemo/ImGuiStylerDemo.csproj index 4a109ba..62c06ea 100644 --- a/ImGuiStylerDemo/ImGuiStylerDemo.csproj +++ b/ImGuiStylerDemo/ImGuiStylerDemo.csproj @@ -4,7 +4,7 @@ - + diff --git a/VERSION b/VERSION index 16a8712..3dedb75 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.0-alpha.6 +1.0.0-alpha.8