From 29379bdd36b8683e9e8cd596104b95c6511ffa37 Mon Sep 17 00:00:00 2001 From: Matt Edmondson Date: Tue, 30 Jun 2026 16:04:13 +1000 Subject: [PATCH 1/5] feat(color)!: migrate ThemeProvider core to ktsu.Semantics.Color --- Directory.Packages.props | 1 + ThemeProvider/AccessibilityLevel.cs | 18 -- ThemeProvider/ColorMath.cs | 197 ------------------ ThemeProvider/ColorRange.cs | 20 +- ThemeProvider/ISemanticTheme.cs | 5 +- ThemeProvider/OklabColor.cs | 78 ------- ThemeProvider/PerceptualColor.cs | 70 ------- ThemeProvider/RgbColor.cs | 81 ------- ThemeProvider/SRgbColor.cs | 81 ------- ThemeProvider/SemanticColorMapper.cs | 186 ++++++++--------- ThemeProvider/ThemeProvider.csproj | 1 + ThemeProvider/Themes/Catppuccin/Frappe.cs | 53 ++--- ThemeProvider/Themes/Catppuccin/Latte.cs | 53 ++--- ThemeProvider/Themes/Catppuccin/Macchiato.cs | 53 ++--- ThemeProvider/Themes/Catppuccin/Mocha.cs | 53 ++--- ThemeProvider/Themes/Dracula/Dracula.cs | 29 +-- .../Themes/Everforest/EverforestDark.cs | 49 ++--- .../Themes/Everforest/EverforestDarkHard.cs | 49 ++--- .../Themes/Everforest/EverforestDarkSoft.cs | 49 ++--- .../Themes/Everforest/EverforestLight.cs | 49 ++--- .../Themes/Everforest/EverforestLightHard.cs | 49 ++--- .../Themes/Everforest/EverforestLightSoft.cs | 49 ++--- ThemeProvider/Themes/Gruvbox/GruvboxDark.cs | 49 ++--- .../Themes/Gruvbox/GruvboxDarkHard.cs | 49 ++--- .../Themes/Gruvbox/GruvboxDarkSoft.cs | 49 ++--- ThemeProvider/Themes/Gruvbox/GruvboxLight.cs | 49 ++--- .../Themes/Gruvbox/GruvboxLightHard.cs | 49 ++--- .../Themes/Gruvbox/GruvboxLightSoft.cs | 49 ++--- .../Themes/Kanagawa/KanagawaDragon.cs | 49 ++--- .../Themes/Kanagawa/KanagawaLotus.cs | 49 ++--- ThemeProvider/Themes/Kanagawa/KanagawaWave.cs | 49 ++--- ThemeProvider/Themes/Monokai/Monokai.cs | 29 +-- ThemeProvider/Themes/Nightfly/Nightfly.cs | 41 ++-- ThemeProvider/Themes/Nightfox/Carbonfox.cs | 47 +++-- ThemeProvider/Themes/Nightfox/Dawnfox.cs | 47 +++-- ThemeProvider/Themes/Nightfox/Dayfox.cs | 47 +++-- ThemeProvider/Themes/Nightfox/Duskfox.cs | 47 +++-- ThemeProvider/Themes/Nightfox/Nightfox.cs | 47 +++-- ThemeProvider/Themes/Nightfox/Nordfox.cs | 47 +++-- ThemeProvider/Themes/Nightfox/Terafox.cs | 47 +++-- ThemeProvider/Themes/Nord/Nord.cs | 37 ++-- ThemeProvider/Themes/OneDark/OneDark.cs | 39 ++-- .../Themes/PaperColor/PaperColorDark.cs | 45 ++-- .../Themes/PaperColor/PaperColorLight.cs | 45 ++-- ThemeProvider/Themes/TokyoNight/TokyoNight.cs | 61 +++--- .../Themes/TokyoNight/TokyoNightDay.cs | 45 ++-- .../Themes/TokyoNight/TokyoNightStorm.cs | 45 ++-- ThemeProvider/Themes/VSCode/VSCodeDark.cs | 39 ++-- ThemeProvider/Themes/VSCode/VSCodeLight.cs | 39 ++-- 49 files changed, 1012 insertions(+), 1496 deletions(-) delete mode 100644 ThemeProvider/AccessibilityLevel.cs delete mode 100644 ThemeProvider/ColorMath.cs delete mode 100644 ThemeProvider/OklabColor.cs delete mode 100644 ThemeProvider/PerceptualColor.cs delete mode 100644 ThemeProvider/RgbColor.cs delete mode 100644 ThemeProvider/SRgbColor.cs diff --git a/Directory.Packages.props b/Directory.Packages.props index 4ced69f..14a560b 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -3,6 +3,7 @@ true + diff --git a/ThemeProvider/AccessibilityLevel.cs b/ThemeProvider/AccessibilityLevel.cs deleted file mode 100644 index b59664e..0000000 --- a/ThemeProvider/AccessibilityLevel.cs +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) ktsu.dev -// All rights reserved. -// Licensed under the MIT license. - -namespace ktsu.ThemeProvider; - -/// -/// Represents accessibility compliance levels according to WCAG standards. -/// -public enum AccessibilityLevel -{ - /// Does not meet minimum accessibility standards - Fail, - /// Meets WCAG AA standards (minimum compliance) - AA, - /// Meets WCAG AAA standards (enhanced compliance) - AAA -} diff --git a/ThemeProvider/ColorMath.cs b/ThemeProvider/ColorMath.cs deleted file mode 100644 index c765bb4..0000000 --- a/ThemeProvider/ColorMath.cs +++ /dev/null @@ -1,197 +0,0 @@ -// Copyright (c) ktsu.dev -// All rights reserved. -// Licensed under the MIT license. - -namespace ktsu.ThemeProvider; - -/// -/// Provides color space conversion utilities and color mathematics operations. -/// -public static class ColorMath -{ - /// - /// Converts linear RGB to Oklab color space. - /// Based on Björn Ottosson's Oklab specification (2020). - /// - public static OklabColor RgbToOklab(RgbColor rgb) - { - // Convert to LMS space using the specified matrix - float l = (0.4122214708f * rgb.R) + (0.5363325363f * rgb.G) + (0.0514459929f * rgb.B); - float m = (0.2119034982f * rgb.R) + (0.6806995451f * rgb.G) + (0.1073969566f * rgb.B); - float s = (0.0883024619f * rgb.R) + (0.2817188376f * rgb.G) + (0.6299787005f * rgb.B); - - // Apply cube root - float l_ = (float)(Math.Sign(l) * Math.Pow(Math.Abs(l), 1f / 3f)); - float m_ = (float)(Math.Sign(m) * Math.Pow(Math.Abs(m), 1f / 3f)); - float s_ = (float)(Math.Sign(s) * Math.Pow(Math.Abs(s), 1f / 3f)); - - // Convert to Lab - return new OklabColor( - (0.2104542553f * l_) + (0.7936177850f * m_) - (0.0040720468f * s_), - (1.9779984951f * l_) - (2.4285922050f * m_) + (0.4505937099f * s_), - (0.0259040371f * l_) + (0.7827717662f * m_) - (0.8086757660f * s_) - ); - } - - /// - /// Converts Oklab to linear RGB color space. - /// - public static RgbColor OklabToRgb(OklabColor oklab) - { - // Convert to LMS' - float l_ = oklab.L + (0.3963377774f * oklab.A) + (0.2158037573f * oklab.B); - float m_ = oklab.L - (0.1055613458f * oklab.A) - (0.0638541728f * oklab.B); - float s_ = oklab.L - (0.0894841775f * oklab.A) - (1.2914855480f * oklab.B); - - // Apply cube - float l = l_ * l_ * l_; - float m = m_ * m_ * m_; - float s = s_ * s_ * s_; - - // Convert to RGB - return new RgbColor( - (+4.0767416621f * l) - (3.3077115913f * m) + (0.2309699292f * s), - (-1.2684380046f * l) + (2.6097574011f * m) - (0.3413193965f * s), - (-0.0041960863f * l) - (0.7034186147f * m) + (1.7076147010f * s) - ); - } - - /// - /// Calculates the relative luminance of a color according to WCAG standards. - /// Used for contrast ratio calculations. - /// - public static float GetRelativeLuminance(RgbColor rgb) => - // Input RGB values are already linear, no gamma correction needed - (0.2126f * rgb.R) + (0.7152f * rgb.G) + (0.0722f * rgb.B); - - /// - /// Calculates the WCAG contrast ratio between two colors. - /// Returns a value from 1:1 (no contrast) to 21:1 (maximum contrast). - /// - public static float GetContrastRatio(RgbColor color1, RgbColor color2) - { - float lum1 = GetRelativeLuminance(color1); - float lum2 = GetRelativeLuminance(color2); - - float lighter = Math.Max(lum1, lum2); - float darker = Math.Min(lum1, lum2); - - return (lighter + 0.05f) / (darker + 0.05f); - } - - /// - /// Checks if a color combination meets WCAG accessibility standards. - /// - public static AccessibilityLevel GetAccessibilityLevel(RgbColor foreground, RgbColor background, bool isLargeText = false) - { - float contrast = GetContrastRatio(foreground, background); - - float aaThreshold = isLargeText ? 3.0f : 4.5f; - float aaaThreshold = isLargeText ? 4.5f : 7.0f; - - if (contrast >= aaaThreshold) - { - return AccessibilityLevel.AAA; - } - - if (contrast >= aaThreshold) - { - return AccessibilityLevel.AA; - } - - return AccessibilityLevel.Fail; - } - - /// - /// Adjusts a color's lightness to meet minimum contrast requirements while preserving hue and chroma as much as possible. - /// - public static RgbColor AdjustForAccessibility(RgbColor foreground, RgbColor background, AccessibilityLevel targetLevel, bool isLargeText = false) - { - float requiredContrast = targetLevel switch - { - AccessibilityLevel.AAA => isLargeText ? 4.5f : 7.0f, - AccessibilityLevel.AA => isLargeText ? 3.0f : 4.5f, - _ => 1.0f - }; - - OklabColor oklabFg = RgbToOklab(foreground); - float backgroundLum = GetRelativeLuminance(background); - - // Binary search for the right lightness adjustment - float minL = 0f, maxL = 1f; - const int maxIterations = 20; - - for (int i = 0; i < maxIterations; i++) - { - OklabColor adjusted = new((minL + maxL) / 2f, oklabFg.A, oklabFg.B); - RgbColor adjustedRgb = OklabToRgb(adjusted); - - // Clamp to valid RGB range - adjustedRgb = new RgbColor( - Math.Max(0f, Math.Min(adjustedRgb.R, 1f)), - Math.Max(0f, Math.Min(adjustedRgb.G, 1f)), - Math.Max(0f, Math.Min(adjustedRgb.B, 1f)) - ); - - float contrast = GetContrastRatio(adjustedRgb, background); - - if (Math.Abs(contrast - requiredContrast) < 0.1f) - { - return adjustedRgb; - } - - if (contrast < requiredContrast) - { - float adjustedLum = GetRelativeLuminance(adjustedRgb); - if (adjustedLum > backgroundLum) - { - minL = adjusted.L; - } - else - { - maxL = adjusted.L; - } - } - else - { - float adjustedLum = GetRelativeLuminance(adjustedRgb); - if (adjustedLum > backgroundLum) - { - maxL = adjusted.L; - } - else - { - minL = adjusted.L; - } - } - } - - // Fallback: return the original color if adjustment fails - return foreground; - } - - /// - /// Creates a perceptually uniform gradient between two colors in Oklab space. - /// - public static RgbColor[] CreateGradient(RgbColor from, RgbColor to, int steps) - { - if (steps < 2) - { - throw new ArgumentException("Gradient must have at least 2 steps", nameof(steps)); - } - - OklabColor fromOklab = RgbToOklab(from); - OklabColor toOklab = RgbToOklab(to); - - RgbColor[] gradient = new RgbColor[steps]; - - for (int i = 0; i < steps; i++) - { - float t = i / (float)(steps - 1); - OklabColor interpolated = OklabColor.Lerp(fromOklab, toOklab, t); - gradient[i] = OklabToRgb(interpolated); - } - - return gradient; - } -} diff --git a/ThemeProvider/ColorRange.cs b/ThemeProvider/ColorRange.cs index 086713a..53e44ab 100644 --- a/ThemeProvider/ColorRange.cs +++ b/ThemeProvider/ColorRange.cs @@ -4,23 +4,25 @@ namespace ktsu.ThemeProvider; +using ktsu.Semantics.Color; + /// /// Represents a range of colors defined by start and end points in perceptual color space. /// Used for interpolating colors between two extremes. /// /// The starting color of the range /// The ending color of the range -public readonly record struct ColorRange(PerceptualColor Start, PerceptualColor End) +public readonly record struct ColorRange(Color Start, Color End) { /// /// Gets the perceptual distance between the start and end colors. /// - public float Distance => Start.SemanticDistanceTo(End); + public double Distance => Start.DistanceTo(End); /// /// Indicates whether this range represents a single color (start equals end). /// - public bool IsSingleColor => Distance < float.Epsilon; + public bool IsSingleColor => Distance < double.Epsilon; /// /// Creates a color range from two colors, automatically ordering them @@ -30,14 +32,18 @@ public readonly record struct ColorRange(PerceptualColor Start, PerceptualColor /// Second color /// Whether this is for a dark theme /// A color range with appropriate start and end points - public static ColorRange FromColors(PerceptualColor color1, PerceptualColor color2, bool isDarkTheme) + public static ColorRange FromColors(Color color1, Color color2, bool isDarkTheme) { + // Precompute lightness values + double l1 = color1.ToOklab().L; + double l2 = color2.ToOklab().L; + // For dark themes: low priority (start) should be darker, high priority (end) should be lighter // For light themes: low priority (start) should be lighter, high priority (end) should be darker if (isDarkTheme) { // Dark theme: darker to lighter (lower lightness to higher lightness) - if (color1.Lightness <= color2.Lightness) + if (l1 <= l2) { return new ColorRange(color1, color2); } @@ -49,7 +55,7 @@ public static ColorRange FromColors(PerceptualColor color1, PerceptualColor colo else { // Light theme: lighter to darker (higher lightness to lower lightness) - if (color1.Lightness >= color2.Lightness) + if (l1 >= l2) { return new ColorRange(color1, color2); } @@ -67,6 +73,6 @@ public static ColorRange FromColors(PerceptualColor color1, PerceptualColor colo /// First color /// Second color /// A color range with appropriate start and end points - public static ColorRange FromColors(PerceptualColor color1, PerceptualColor color2) => + public static ColorRange FromColors(Color color1, Color color2) => FromColors(color1, color2, isDarkTheme: true); } diff --git a/ThemeProvider/ISemanticTheme.cs b/ThemeProvider/ISemanticTheme.cs index 6a22a31..6f526d3 100644 --- a/ThemeProvider/ISemanticTheme.cs +++ b/ThemeProvider/ISemanticTheme.cs @@ -6,6 +6,7 @@ namespace ktsu.ThemeProvider; using System.Collections.Generic; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Defines the contract for a semantic theme, which maps semantic meanings to perceptual color collections. @@ -13,10 +14,10 @@ namespace ktsu.ThemeProvider; public interface ISemanticTheme { /// - /// Gets the mapping of to collections of . + /// Gets the mapping of to collections of . /// This enables semantic color assignment for UI elements based on their intended meaning. /// - public Dictionary> SemanticMapping { get; } + public Dictionary> SemanticMapping { get; } /// /// Gets a value indicating whether this is a dark theme. diff --git a/ThemeProvider/OklabColor.cs b/ThemeProvider/OklabColor.cs deleted file mode 100644 index cbe5478..0000000 --- a/ThemeProvider/OklabColor.cs +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright (c) ktsu.dev -// All rights reserved. -// Licensed under the MIT license. - -namespace ktsu.ThemeProvider; -#pragma warning disable IDE0090 - -using System.Numerics; - -/// -/// Represents a color in the Oklab perceptual color space designed for image processing -/// and color manipulation with better uniformity than CIELAB. -/// -public readonly record struct OklabColor(float L, float A, float B) -{ - /// - /// Creates an Oklab color from individual components. - /// - /// Perceived lightness (0-1, typically) - /// Green-red axis (negative = green, positive = red/magenta) - /// Blue-yellow axis (negative = blue, positive = yellow) - public OklabColor(double l, double a, double b) : this((float)l, (float)a, (float)b) { } - - /// - /// Converts this Oklab color to a 3D vector for mathematical operations. - /// - public Vector3 ToVector3() => new(L, A, B); - - /// - /// Calculates the perceptual distance between two colors in Oklab space. - /// This gives a good approximation of how different two colors appear to human vision. - /// - public float DistanceTo(OklabColor other) - { - float dl = L - other.L; - float da = A - other.A; - float db = B - other.B; - return (float)Math.Sqrt((dl * dl) + (da * da) + (db * db)); - } - - /// - /// Linearly interpolates between two colors in Oklab space. - /// This produces more perceptually uniform gradients than RGB interpolation. - /// - public static OklabColor Lerp(OklabColor from, OklabColor to, float t) - { - float invT = 1.0f - t; - return new OklabColor( - (from.L * invT) + (to.L * t), - (from.A * invT) + (to.A * t), - (from.B * invT) + (to.B * t) - ); - } - - /// - /// Converts this Oklab color to polar coordinates (LCh - Lightness, Chroma, Hue). - /// - public (float L, float C, float H) ToPolar() - { - float c = (float)Math.Sqrt((A * A) + (B * B)); - float h = (float)(Math.Atan2(B, A) * 180f / Math.PI); - if (h < 0) - { - h += 360f; - } - - return (L, c, h); - } - - /// - /// Creates an Oklab color from polar coordinates (LCh). - /// - public static OklabColor FromPolar(float l, float c, float h) - { - float hRad = (float)(h * Math.PI / 180f); - return new OklabColor(l, c * Math.Cos(hRad), c * Math.Sin(hRad)); - } -} diff --git a/ThemeProvider/PerceptualColor.cs b/ThemeProvider/PerceptualColor.cs deleted file mode 100644 index 66277b6..0000000 --- a/ThemeProvider/PerceptualColor.cs +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (c) ktsu.dev -// All rights reserved. -// Licensed under the MIT license. - -namespace ktsu.ThemeProvider; - -using System.Numerics; - -/// -/// Represents the perceptual properties of a color. -/// This enables color space operations for semantic color mapping. -/// -public readonly record struct PerceptualColor //TODO: rename to PerceptualColor -{ - /// The color in Oklab perceptual space - public OklabColor OklabValue { get; init; } - - /// The RGB representation of the color - public RgbColor RgbValue { get; init; } - - /// - /// Gets the hue component of the color in Oklab polar coordinates (LCh). - /// - public float Hue { get; init; } - - /// - /// Gets the chroma (colorfulness) component of the color in Oklab polar coordinates (LCh). - /// - public float Chroma { get; init; } - - /// - /// Gets the lightness component of the color in Oklab space. - /// - public float Lightness { get; init; } - - /// - /// Initializes a new instance of the struct with default values. - /// - public PerceptualColor(RgbColor rgb) - { - OklabColor oklab = ColorMath.RgbToOklab(rgb); - OklabValue = oklab; - RgbValue = rgb; - Hue = oklab.ToPolar().H; - Chroma = oklab.ToPolar().C; - Lightness = oklab.L; - } - - /// - /// Creates color properties from an RGB color. - /// - public static PerceptualColor FromRgb(RgbColor rgb) => new(rgb); - - /// - /// Creates color properties from an RGB color. - /// - public static PerceptualColor FromRgb(string hex) => FromRgb(RgbColor.FromHex(hex)); - - /// - /// Converts the perceptual properties to a vector for color space operations. - /// - public Vector3 ToPerceptualVector() => OklabValue.ToVector3(); - - /// - /// Calculates perceptual distance to another color in Oklab space. - /// - public float SemanticDistanceTo(PerceptualColor other) => - // Perceptual distance - OklabValue.DistanceTo(other.OklabValue); -} diff --git a/ThemeProvider/RgbColor.cs b/ThemeProvider/RgbColor.cs deleted file mode 100644 index 5e1a5ce..0000000 --- a/ThemeProvider/RgbColor.cs +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright (c) ktsu.dev -// All rights reserved. -// Licensed under the MIT license. - -namespace ktsu.ThemeProvider; - -/// -/// Represents an RGB color with floating-point precision. -/// -public readonly record struct RgbColor(float R, float G, float B) -{ - /// - /// Creates an RGB color from 8-bit values (0-255). - /// - public static RgbColor FromBytes(byte r, byte g, byte b) => - new(r / 255f, g / 255f, b / 255f); - - /// - /// Creates an RGB color from a hex string (e.g., "#FF0000" or "FF0000"). - /// - public static RgbColor FromHex(string hex) - { - Ensure.NotNull(hex); - -#if NET5_0_OR_GREATER || NETSTANDARD2_1 - if (hex.StartsWith('#')) -#else - if (hex.StartsWith("#")) -#endif - { - hex = hex[1..]; - } - - if (hex.Length != 6) - { - throw new ArgumentException("Invalid hex color format", nameof(hex)); - } - - return FromBytes( - Convert.ToByte(hex[0..2], 16), - Convert.ToByte(hex[2..4], 16), - Convert.ToByte(hex[4..6], 16) - ); - } - - /// - /// Converts this RGB color to a hex string. - /// - public string ToHex() - { - byte r = (byte)Math.Round(R * 255); - byte g = (byte)Math.Round(G * 255); - byte b = (byte)Math.Round(B * 255); - return $"#{r:X2}{g:X2}{b:X2}"; - } - - /// - /// Converts this RGB color to 8-bit values. - /// - public (byte R, byte G, byte B) ToBytes() => - ((byte)Math.Round(R * 255), (byte)Math.Round(G * 255), (byte)Math.Round(B * 255)); - - /// - /// Converts this linear RGB color to sRGB gamma-corrected values. - /// - public SRgbColor ToSRgb() - { - return new SRgbColor( - LinearToSRgb(R), - LinearToSRgb(G), - LinearToSRgb(B) - ); - } - - private static float LinearToSRgb(float linear) - { - return (float)(linear <= 0.0031308f - ? 12.92f * linear - : (1.055f * Math.Pow(linear, 1f / 2.4f)) - 0.055f); - } -} diff --git a/ThemeProvider/SRgbColor.cs b/ThemeProvider/SRgbColor.cs deleted file mode 100644 index df0c5df..0000000 --- a/ThemeProvider/SRgbColor.cs +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright (c) ktsu.dev -// All rights reserved. -// Licensed under the MIT license. - -namespace ktsu.ThemeProvider; - -/// -/// Represents an RGB color with floating-point precision. -/// -public readonly record struct SRgbColor(float R, float G, float B) -{ - /// - /// Creates an sRGB color from 8-bit values (0-255). - /// - public static SRgbColor FromBytes(byte r, byte g, byte b) => - new(r / 255f, g / 255f, b / 255f); - - /// - /// Creates an sRGB color from a hex string (e.g., "#FF0000" or "FF0000"). - /// - public static SRgbColor FromHex(string hex) - { - Ensure.NotNull(hex); - -#if NET5_0_OR_GREATER || NETSTANDARD2_1 - if (hex.StartsWith('#')) -#else - if (hex.StartsWith("#")) -#endif - { - hex = hex[1..]; - } - - if (hex.Length != 6) - { - throw new ArgumentException("Invalid hex color format", nameof(hex)); - } - - return FromBytes( - Convert.ToByte(hex[0..2], 16), - Convert.ToByte(hex[2..4], 16), - Convert.ToByte(hex[4..6], 16) - ); - } - - /// - /// Converts this sRGB color to a hex string. - /// - public string ToHex() - { - byte r = (byte)Math.Round(R * 255); - byte g = (byte)Math.Round(G * 255); - byte b = (byte)Math.Round(B * 255); - return $"#{r:X2}{g:X2}{b:X2}"; - } - - /// - /// Converts this sRGB color to 8-bit values. - /// - public (byte R, byte G, byte B) ToBytes() => - ((byte)Math.Round(R * 255), (byte)Math.Round(G * 255), (byte)Math.Round(B * 255)); - - /// - /// Converts this sRGB gamma-corrected color to linear RGB values. - /// - public RgbColor ToLinear() - { - return new RgbColor( - SRgbToLinear(R), - SRgbToLinear(G), - SRgbToLinear(B) - ); - } - - private static float SRgbToLinear(float sRgb) - { - return (float)(sRgb <= 0.04045f - ? sRgb / 12.92f - : Math.Pow((sRgb + 0.055f) / 1.055f, 2.4f)); - } -} diff --git a/ThemeProvider/SemanticColorMapper.cs b/ThemeProvider/SemanticColorMapper.cs index 4472ff8..c4daeb1 100644 --- a/ThemeProvider/SemanticColorMapper.cs +++ b/ThemeProvider/SemanticColorMapper.cs @@ -7,6 +7,7 @@ namespace ktsu.ThemeProvider; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; +using ktsu.Semantics.Color; /// /// Maps semantic color requests to actual colors using a global lightness-based priority system. @@ -22,7 +23,7 @@ public sealed class SemanticColorMapper /// The collection of semantic color requests to map /// The semantic theme providing available colors for each meaning /// A dictionary mapping each request to its assigned color, including all priority levels for the requested semantic meanings - public static IReadOnlyDictionary MapColors( + public static IReadOnlyDictionary MapColors( IEnumerable requests, ISemanticTheme theme) { @@ -32,11 +33,11 @@ public static IReadOnlyDictionary MapColo List requestsList = [.. requests]; if (requestsList.Count == 0) { - return new Dictionary(); + return new Dictionary(); } // Calculate the global lightness range for use by all semantics - (float globalMinLightness, float globalMaxLightness) = CalculateGlobalLightnessRange(theme); + (double globalMinLightness, double globalMaxLightness) = CalculateGlobalLightnessRange(theme); // Always use ALL possible priority levels for consistent mapping #if NET5_0_OR_GREATER @@ -46,7 +47,7 @@ public static IReadOnlyDictionary MapColo #endif List priorityLevels = [.. allPriorities.OrderBy(p => p)]; - Dictionary result = []; + Dictionary result = []; // Get all unique semantic meanings from the requests HashSet requestedMeanings = [.. requestsList.Select(r => r.Meaning)]; @@ -55,7 +56,7 @@ public static IReadOnlyDictionary MapColo foreach (SemanticMeaning meaning in requestedMeanings) { // Get available colors for this semantic meaning - if (!theme.SemanticMapping.TryGetValue(meaning, out Collection? availableColors) || + if (!theme.SemanticMapping.TryGetValue(meaning, out Collection? availableColors) || availableColors.Count == 0) { continue; // Skip if no colors available for this meaning @@ -67,11 +68,11 @@ public static IReadOnlyDictionary MapColo SemanticColorRequest fullRequest = new(meaning, priority); // Calculate target lightness based on whether this is neutral or non-neutral - float targetLightness = CalculateTargetLightnessForSemantic( + double targetLightness = CalculateTargetLightnessForSemantic( priority, meaning, globalMinLightness, globalMaxLightness, theme.IsDarkTheme); // Generate the color using interpolation/extrapolation - PerceptualColor color = InterpolateToTargetLightness(availableColors, targetLightness); + Color color = InterpolateToTargetLightness(availableColors, targetLightness); result[fullRequest] = color; } @@ -86,7 +87,7 @@ public static IReadOnlyDictionary MapColo /// /// The semantic theme to generate the complete palette from /// A dictionary mapping every possible semantic color request to its assigned color - public static IReadOnlyDictionary MakeCompletePalette(ISemanticTheme theme) + public static IReadOnlyDictionary MakeCompletePalette(ISemanticTheme theme) { Ensure.NotNull(theme); @@ -95,7 +96,7 @@ public static IReadOnlyDictionary MakeCom if (availableMeanings.Count == 0) { - return new Dictionary(); + return new Dictionary(); } // Get all possible priorities @@ -124,32 +125,32 @@ public static IReadOnlyDictionary MakeCom /// Calculates the lightness range across all available semantics in the theme. /// This range will be used as the basis for all semantic color mappings. /// - private static (float min, float max) CalculateGlobalLightnessRange(ISemanticTheme theme) + private static (double min, double max) CalculateGlobalLightnessRange(ISemanticTheme theme) { - float globalMin = float.MaxValue; - float globalMax = float.MinValue; + double globalMin = double.MaxValue; + double globalMax = double.MinValue; - foreach (KeyValuePair> kvp in theme.SemanticMapping) + foreach (KeyValuePair> kvp in theme.SemanticMapping) { - Collection colors = kvp.Value; + Collection colors = kvp.Value; for (int i = 0; i < colors.Count; i++) { - PerceptualColor color = colors[i]; - if (color.Lightness < globalMin) + double l = colors[i].ToOklab().L; + if (l < globalMin) { - globalMin = color.Lightness; + globalMin = l; } - if (color.Lightness > globalMax) + if (l > globalMax) { - globalMax = color.Lightness; + globalMax = l; } } } // Ensure we have a valid range - if (globalMin == float.MaxValue || globalMax == float.MinValue) + if (globalMin == double.MaxValue || globalMax == double.MinValue) { - return (0.0f, 1.0f); // Fallback range + return (0.0, 1.0); // Fallback range } return (globalMin, globalMax); @@ -159,11 +160,11 @@ private static (float min, float max) CalculateGlobalLightnessRange(ISemanticThe /// Calculates the target lightness for a specific semantic meaning and priority. /// Neutral semantics use the full global range, while non-neutral semantics use 50-90% of it. /// - private static float CalculateTargetLightnessForSemantic( + private static double CalculateTargetLightnessForSemantic( Priority priority, SemanticMeaning meaning, - float globalMinLightness, - float globalMaxLightness, + double globalMinLightness, + double globalMaxLightness, bool isDarkTheme) { // Get all priorities and find the position of the current priority @@ -176,15 +177,15 @@ private static float CalculateTargetLightnessForSemantic( if (allPriorities.Length == 1) { - float globalCenter = (globalMinLightness + globalMaxLightness) / 2.0f; + double globalCenter = (globalMinLightness + globalMaxLightness) / 2.0; return meaning == SemanticMeaning.Neutral ? globalCenter : globalCenter; } // Calculate position in range (0.0 to 1.0) - float position = priorityIndex / (float)(allPriorities.Length - 1); + double position = priorityIndex / (double)(allPriorities.Length - 1); // Determine the lightness range to use - float minLightness, maxLightness; + double minLightness, maxLightness; if (meaning == SemanticMeaning.Neutral) { // Neutral uses the full global range @@ -194,18 +195,18 @@ private static float CalculateTargetLightnessForSemantic( else { // Non-neutral uses 50-90% of the global range - float globalRange = globalMaxLightness - globalMinLightness; - float rangeStart = globalMinLightness + (globalRange * 0.5f); // 50% - float rangeEnd = globalMinLightness + (globalRange * 0.9f); // 90% + double globalRange = globalMaxLightness - globalMinLightness; + double rangeStart = globalMinLightness + (globalRange * 0.5); // 50% + double rangeEnd = globalMinLightness + (globalRange * 0.9); // 90% minLightness = rangeStart; maxLightness = rangeEnd; } - float lightnessRange = maxLightness - minLightness; + double lightnessRange = maxLightness - minLightness; // Calculate target lightness based on theme type - float targetLightness; + double targetLightness; if (isDarkTheme) { // In dark themes, higher priority (later in enum) gets higher lightness (more visible) @@ -217,16 +218,16 @@ private static float CalculateTargetLightnessForSemantic( targetLightness = maxLightness - (position * lightnessRange); } - return Math.Max(0.0f, Math.Min(targetLightness, 1.0f)); + return Math.Max(0.0, Math.Min(targetLightness, 1.0)); } /// /// Creates a color with the target lightness by interpolating or extrapolating from available colors. /// Preserves hue and chroma characteristics while achieving the exact lightness needed for priority hierarchy. /// - private static PerceptualColor InterpolateToTargetLightness( - Collection availableColors, - float targetLightness) + private static Color InterpolateToTargetLightness( + Collection availableColors, + double targetLightness) { if (availableColors.Count == 0) { @@ -240,88 +241,89 @@ private static PerceptualColor InterpolateToTargetLightness( } // Multiple colors - find the best interpolation or extrapolation - List colorsList = [.. availableColors.OrderBy(c => c.Lightness)]; + // Precompute lightness values to avoid repeated ToOklab() calls in OrderBy + List<(Color color, double l)> colorsWithL = [.. availableColors.Select(c => (color: c, l: c.ToOklab().L)).OrderBy(t => t.l)]; - float minLightness = colorsList[0].Lightness; - float maxLightness = colorsList[^1].Lightness; + double minLightness = colorsWithL[0].l; + double maxLightness = colorsWithL[^1].l; // If target is within the range, interpolate between the closest colors if (targetLightness >= minLightness && targetLightness <= maxLightness) { - return InterpolateBetweenColors(colorsList, targetLightness); + return InterpolateBetweenColors(colorsWithL, targetLightness); } // If target is outside the range, extrapolate from the closest end if (targetLightness < minLightness) { // Extrapolate from the darkest color - return ExtrapolateColorToLightness(colorsList[0], targetLightness); + return ExtrapolateColorToLightness(colorsWithL[0].color, targetLightness); } else { // Extrapolate from the lightest color - return ExtrapolateColorToLightness(colorsList[^1], targetLightness); + return ExtrapolateColorToLightness(colorsWithL[^1].color, targetLightness); } } /// /// Extrapolates a single color to a target lightness while preserving its hue and chroma. /// - private static PerceptualColor ExtrapolateColorToLightness(PerceptualColor baseColor, float targetLightness) + private static Color ExtrapolateColorToLightness(Color baseColor, double targetLightness) { // Work in Oklab space for perceptually uniform lightness adjustment - OklabColor baseOklab = baseColor.OklabValue; + Oklab baseOklab = baseColor.ToOklab(); // Start with the target lightness and original chroma - OklabColor targetOklab = new( - L: Math.Max(0.0f, Math.Min(targetLightness, 1.0f)), + Oklab targetOklab = new( + L: Math.Max(0.0, Math.Min(targetLightness, 1.0)), A: baseOklab.A, B: baseOklab.B ); - // Convert to RGB to check if it's in gamut - RgbColor targetRgb = ColorMath.OklabToRgb(targetOklab); + // Convert to Color to check if it's in gamut + Color targetColor = Color.FromOklab(targetOklab); // Check if RGB values are within valid range - bool inGamut = targetRgb.R >= 0f && targetRgb.R <= 1f && - targetRgb.G >= 0f && targetRgb.G <= 1f && - targetRgb.B >= 0f && targetRgb.B <= 1f; + bool inGamut = targetColor.R >= 0.0 && targetColor.R <= 1.0 && + targetColor.G >= 0.0 && targetColor.G <= 1.0 && + targetColor.B >= 0.0 && targetColor.B <= 1.0; if (inGamut) { // Color is in gamut, use it directly - return new PerceptualColor(targetRgb); + return targetColor; } // Color is out of gamut, we need to find the best in-gamut color // by reducing chroma while maintaining the target lightness - float originalChroma = (float)Math.Sqrt((baseOklab.A * baseOklab.A) + (baseOklab.B * baseOklab.B)); - float hue = (float)Math.Atan2(baseOklab.B, baseOklab.A); + double originalChroma = Math.Sqrt((baseOklab.A * baseOklab.A) + (baseOklab.B * baseOklab.B)); + double hue = Math.Atan2(baseOklab.B, baseOklab.A); // Binary search for the maximum chroma that keeps us in gamut - float minChroma = 0f; - float maxChroma = originalChroma; - const float tolerance = 0.001f; + double minChroma = 0.0; + double maxChroma = originalChroma; + const double tolerance = 0.001; const int maxIterations = 20; - OklabColor bestOklab = targetOklab; + Oklab bestOklab = targetOklab; for (int i = 0; i < maxIterations && (maxChroma - minChroma) > tolerance; i++) { - float testChroma = (minChroma + maxChroma) / 2f; + double testChroma = (minChroma + maxChroma) / 2.0; // Create color with reduced chroma - OklabColor testOklab = new( + Oklab testOklab = new( L: targetLightness, - A: testChroma * (float)Math.Cos(hue), - B: testChroma * (float)Math.Sin(hue) + A: testChroma * Math.Cos(hue), + B: testChroma * Math.Sin(hue) ); - RgbColor testRgb = ColorMath.OklabToRgb(testOklab); + Color testColor = Color.FromOklab(testOklab); - bool testInGamut = testRgb.R >= 0f && testRgb.R <= 1f && - testRgb.G >= 0f && testRgb.G <= 1f && - testRgb.B >= 0f && testRgb.B <= 1f; + bool testInGamut = testColor.R >= 0.0 && testColor.R <= 1.0 && + testColor.G >= 0.0 && testColor.G <= 1.0 && + testColor.B >= 0.0 && testColor.B <= 1.0; if (testInGamut) { @@ -336,59 +338,51 @@ private static PerceptualColor ExtrapolateColorToLightness(PerceptualColor baseC } } - // Convert the best in-gamut color to RGB - RgbColor bestRgb = ColorMath.OklabToRgb(bestOklab); + // Convert the best in-gamut color to the final Color + Color bestColor = Color.FromOklab(bestOklab); // Final safety clamp (should not be needed if binary search worked correctly) - bestRgb = new RgbColor( - Math.Max(0f, Math.Min(bestRgb.R, 1f)), - Math.Max(0f, Math.Min(bestRgb.G, 1f)), - Math.Max(0f, Math.Min(bestRgb.B, 1f)) + return Color.FromLinear( + Math.Max(0.0, Math.Min(bestColor.R, 1.0)), + Math.Max(0.0, Math.Min(bestColor.G, 1.0)), + Math.Max(0.0, Math.Min(bestColor.B, 1.0)), + bestColor.A ); - - return new PerceptualColor(bestRgb); } /// /// Interpolates between colors in a sorted list to achieve a target lightness. /// - private static PerceptualColor InterpolateBetweenColors(List sortedColors, float targetLightness) + private static Color InterpolateBetweenColors(List<(Color color, double l)> sortedColors, double targetLightness) { // Find the two colors that bracket the target lightness - PerceptualColor lowerColor = sortedColors[0]; - PerceptualColor upperColor = sortedColors[^1]; + (Color color, double l) lower = sortedColors[0]; + (Color color, double l) upper = sortedColors[^1]; for (int i = 0; i < sortedColors.Count - 1; i++) { - if (targetLightness >= sortedColors[i].Lightness && targetLightness <= sortedColors[i + 1].Lightness) + if (targetLightness >= sortedColors[i].l && targetLightness <= sortedColors[i + 1].l) { - lowerColor = sortedColors[i]; - upperColor = sortedColors[i + 1]; + lower = sortedColors[i]; + upper = sortedColors[i + 1]; break; } } // Calculate interpolation factor - float lightnessRange = upperColor.Lightness - lowerColor.Lightness; - float t = lightnessRange == 0 ? 0.5f : (targetLightness - lowerColor.Lightness) / lightnessRange; - t = Math.Max(0f, Math.Min(t, 1f)); + double lightnessRange = upper.l - lower.l; + double t = lightnessRange == 0 ? 0.5 : (targetLightness - lower.l) / lightnessRange; + t = Math.Max(0.0, Math.Min(t, 1.0)); // Interpolate in Oklab space - OklabColor interpolatedOklab = OklabColor.Lerp( - lowerColor.OklabValue, - upperColor.OklabValue, - t); - - // Convert back to RGB - RgbColor interpolatedRgb = ColorMath.OklabToRgb(interpolatedOklab); + Color interpolated = lower.color.MixOklab(upper.color, t); // Clamp RGB values to valid range - interpolatedRgb = new RgbColor( - Math.Max(0f, Math.Min(interpolatedRgb.R, 1f)), - Math.Max(0f, Math.Min(interpolatedRgb.G, 1f)), - Math.Max(0f, Math.Min(interpolatedRgb.B, 1f)) + return Color.FromLinear( + Math.Max(0.0, Math.Min(interpolated.R, 1.0)), + Math.Max(0.0, Math.Min(interpolated.G, 1.0)), + Math.Max(0.0, Math.Min(interpolated.B, 1.0)), + interpolated.A ); - - return new PerceptualColor(interpolatedRgb); } } diff --git a/ThemeProvider/ThemeProvider.csproj b/ThemeProvider/ThemeProvider.csproj index 2867743..0199d07 100644 --- a/ThemeProvider/ThemeProvider.csproj +++ b/ThemeProvider/ThemeProvider.csproj @@ -3,6 +3,7 @@ + diff --git a/ThemeProvider/Themes/Catppuccin/Frappe.cs b/ThemeProvider/Themes/Catppuccin/Frappe.cs index a273213..182ceb3 100644 --- a/ThemeProvider/Themes/Catppuccin/Frappe.cs +++ b/ThemeProvider/Themes/Catppuccin/Frappe.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Catppuccin; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the official Catppuccin Frappe color palette with exact hex values and properties. @@ -13,38 +14,38 @@ namespace ktsu.ThemeProvider.Themes.Catppuccin; public class Frappe : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member - public static readonly PerceptualColor Base = PerceptualColor.FromRgb("#303446"); - public static readonly PerceptualColor Mantle = PerceptualColor.FromRgb("#292c3c"); - public static readonly PerceptualColor Crust = PerceptualColor.FromRgb("#232634"); - public static readonly PerceptualColor Surface0 = PerceptualColor.FromRgb("#414559"); - public static readonly PerceptualColor Surface1 = PerceptualColor.FromRgb("#51576d"); - public static readonly PerceptualColor Surface2 = PerceptualColor.FromRgb("#626880"); - public static readonly PerceptualColor Overlay0 = PerceptualColor.FromRgb("#737994"); - public static readonly PerceptualColor Overlay1 = PerceptualColor.FromRgb("#838ba7"); - public static readonly PerceptualColor Overlay2 = PerceptualColor.FromRgb("#949cbb"); - public static readonly PerceptualColor Text = PerceptualColor.FromRgb("#c6d0f5"); - public static readonly PerceptualColor Subtext1 = PerceptualColor.FromRgb("#b5bfe2"); - public static readonly PerceptualColor Subtext0 = PerceptualColor.FromRgb("#a5adce"); - public static readonly PerceptualColor Lavender = PerceptualColor.FromRgb("#babbf1"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#8caaee"); - public static readonly PerceptualColor Sapphire = PerceptualColor.FromRgb("#85c1dc"); - public static readonly PerceptualColor Sky = PerceptualColor.FromRgb("#99d1db"); - public static readonly PerceptualColor Teal = PerceptualColor.FromRgb("#81c8be"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#a6d189"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#e5c890"); - public static readonly PerceptualColor Peach = PerceptualColor.FromRgb("#ef9f76"); - public static readonly PerceptualColor Maroon = PerceptualColor.FromRgb("#ea999c"); - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#e78284"); - public static readonly PerceptualColor Mauve = PerceptualColor.FromRgb("#ca9ee6"); - public static readonly PerceptualColor Pink = PerceptualColor.FromRgb("#f4b8e4"); + public static readonly Color Base = Color.FromHex("#303446"); + public static readonly Color Mantle = Color.FromHex("#292c3c"); + public static readonly Color Crust = Color.FromHex("#232634"); + public static readonly Color Surface0 = Color.FromHex("#414559"); + public static readonly Color Surface1 = Color.FromHex("#51576d"); + public static readonly Color Surface2 = Color.FromHex("#626880"); + public static readonly Color Overlay0 = Color.FromHex("#737994"); + public static readonly Color Overlay1 = Color.FromHex("#838ba7"); + public static readonly Color Overlay2 = Color.FromHex("#949cbb"); + public static readonly Color Text = Color.FromHex("#c6d0f5"); + public static readonly Color Subtext1 = Color.FromHex("#b5bfe2"); + public static readonly Color Subtext0 = Color.FromHex("#a5adce"); + public static readonly Color Lavender = Color.FromHex("#babbf1"); + public static readonly Color Blue = Color.FromHex("#8caaee"); + public static readonly Color Sapphire = Color.FromHex("#85c1dc"); + public static readonly Color Sky = Color.FromHex("#99d1db"); + public static readonly Color Teal = Color.FromHex("#81c8be"); + public static readonly Color Green = Color.FromHex("#a6d189"); + public static readonly Color Yellow = Color.FromHex("#e5c890"); + public static readonly Color Peach = Color.FromHex("#ef9f76"); + public static readonly Color Maroon = Color.FromHex("#ea999c"); + public static readonly Color Red = Color.FromHex("#e78284"); + public static readonly Color Mauve = Color.FromHex("#ca9ee6"); + public static readonly Color Pink = Color.FromHex("#f4b8e4"); - public static Collection Neutrals => + public static Collection Neutrals => [ Text, Crust, ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Blue], diff --git a/ThemeProvider/Themes/Catppuccin/Latte.cs b/ThemeProvider/Themes/Catppuccin/Latte.cs index 7f697e8..9629fb9 100644 --- a/ThemeProvider/Themes/Catppuccin/Latte.cs +++ b/ThemeProvider/Themes/Catppuccin/Latte.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Catppuccin; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the official Catppuccin Latte color palette with exact hex values and properties. @@ -13,38 +14,38 @@ namespace ktsu.ThemeProvider.Themes.Catppuccin; public class Latte : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member - public static readonly PerceptualColor Base = PerceptualColor.FromRgb("#eff1f5"); - public static readonly PerceptualColor Mantle = PerceptualColor.FromRgb("#e6e9ef"); - public static readonly PerceptualColor Crust = PerceptualColor.FromRgb("#dce0e8"); - public static readonly PerceptualColor Surface0 = PerceptualColor.FromRgb("#ccd0da"); - public static readonly PerceptualColor Surface1 = PerceptualColor.FromRgb("#bcc0cc"); - public static readonly PerceptualColor Surface2 = PerceptualColor.FromRgb("#acb0be"); - public static readonly PerceptualColor Overlay0 = PerceptualColor.FromRgb("#9ca0b0"); - public static readonly PerceptualColor Overlay1 = PerceptualColor.FromRgb("#8c8fa1"); - public static readonly PerceptualColor Overlay2 = PerceptualColor.FromRgb("#7c7f93"); - public static readonly PerceptualColor Text = PerceptualColor.FromRgb("#4c4f69"); - public static readonly PerceptualColor Subtext1 = PerceptualColor.FromRgb("#5c5f77"); - public static readonly PerceptualColor Subtext0 = PerceptualColor.FromRgb("#6c6f85"); - public static readonly PerceptualColor Lavender = PerceptualColor.FromRgb("#7287fd"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#1e66f5"); - public static readonly PerceptualColor Sapphire = PerceptualColor.FromRgb("#209fb5"); - public static readonly PerceptualColor Sky = PerceptualColor.FromRgb("#04a5e5"); - public static readonly PerceptualColor Teal = PerceptualColor.FromRgb("#179299"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#40a02b"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#df8e1d"); - public static readonly PerceptualColor Peach = PerceptualColor.FromRgb("#fe640b"); - public static readonly PerceptualColor Maroon = PerceptualColor.FromRgb("#e64553"); - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#d20f39"); - public static readonly PerceptualColor Mauve = PerceptualColor.FromRgb("#8839ef"); - public static readonly PerceptualColor Pink = PerceptualColor.FromRgb("#ea76cb"); + public static readonly Color Base = Color.FromHex("#eff1f5"); + public static readonly Color Mantle = Color.FromHex("#e6e9ef"); + public static readonly Color Crust = Color.FromHex("#dce0e8"); + public static readonly Color Surface0 = Color.FromHex("#ccd0da"); + public static readonly Color Surface1 = Color.FromHex("#bcc0cc"); + public static readonly Color Surface2 = Color.FromHex("#acb0be"); + public static readonly Color Overlay0 = Color.FromHex("#9ca0b0"); + public static readonly Color Overlay1 = Color.FromHex("#8c8fa1"); + public static readonly Color Overlay2 = Color.FromHex("#7c7f93"); + public static readonly Color Text = Color.FromHex("#4c4f69"); + public static readonly Color Subtext1 = Color.FromHex("#5c5f77"); + public static readonly Color Subtext0 = Color.FromHex("#6c6f85"); + public static readonly Color Lavender = Color.FromHex("#7287fd"); + public static readonly Color Blue = Color.FromHex("#1e66f5"); + public static readonly Color Sapphire = Color.FromHex("#209fb5"); + public static readonly Color Sky = Color.FromHex("#04a5e5"); + public static readonly Color Teal = Color.FromHex("#179299"); + public static readonly Color Green = Color.FromHex("#40a02b"); + public static readonly Color Yellow = Color.FromHex("#df8e1d"); + public static readonly Color Peach = Color.FromHex("#fe640b"); + public static readonly Color Maroon = Color.FromHex("#e64553"); + public static readonly Color Red = Color.FromHex("#d20f39"); + public static readonly Color Mauve = Color.FromHex("#8839ef"); + public static readonly Color Pink = Color.FromHex("#ea76cb"); - public static Collection Neutrals => + public static Collection Neutrals => [ Text, Crust, ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Blue], diff --git a/ThemeProvider/Themes/Catppuccin/Macchiato.cs b/ThemeProvider/Themes/Catppuccin/Macchiato.cs index 86dc9c2..8057d3e 100644 --- a/ThemeProvider/Themes/Catppuccin/Macchiato.cs +++ b/ThemeProvider/Themes/Catppuccin/Macchiato.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Catppuccin; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the official Catppuccin Macchiato color palette with exact hex values and properties. @@ -13,38 +14,38 @@ namespace ktsu.ThemeProvider.Themes.Catppuccin; public class Macchiato : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member - public static readonly PerceptualColor Base = PerceptualColor.FromRgb("#24273a"); - public static readonly PerceptualColor Mantle = PerceptualColor.FromRgb("#1e2030"); - public static readonly PerceptualColor Crust = PerceptualColor.FromRgb("#181926"); - public static readonly PerceptualColor Surface0 = PerceptualColor.FromRgb("#363a4f"); - public static readonly PerceptualColor Surface1 = PerceptualColor.FromRgb("#494d64"); - public static readonly PerceptualColor Surface2 = PerceptualColor.FromRgb("#5b6078"); - public static readonly PerceptualColor Overlay0 = PerceptualColor.FromRgb("#6e738d"); - public static readonly PerceptualColor Overlay1 = PerceptualColor.FromRgb("#8087a2"); - public static readonly PerceptualColor Overlay2 = PerceptualColor.FromRgb("#939ab7"); - public static readonly PerceptualColor Text = PerceptualColor.FromRgb("#cad3f5"); - public static readonly PerceptualColor Subtext1 = PerceptualColor.FromRgb("#b8c0e0"); - public static readonly PerceptualColor Subtext0 = PerceptualColor.FromRgb("#a5adcb"); - public static readonly PerceptualColor Lavender = PerceptualColor.FromRgb("#b7bdf8"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#8aadf4"); - public static readonly PerceptualColor Sapphire = PerceptualColor.FromRgb("#7dc4e4"); - public static readonly PerceptualColor Sky = PerceptualColor.FromRgb("#91d7e3"); - public static readonly PerceptualColor Teal = PerceptualColor.FromRgb("#8bd5ca"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#a6da95"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#eed49f"); - public static readonly PerceptualColor Peach = PerceptualColor.FromRgb("#f5a97f"); - public static readonly PerceptualColor Maroon = PerceptualColor.FromRgb("#ee99a0"); - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#ed8796"); - public static readonly PerceptualColor Mauve = PerceptualColor.FromRgb("#c6a0f6"); - public static readonly PerceptualColor Pink = PerceptualColor.FromRgb("#f5bde6"); + public static readonly Color Base = Color.FromHex("#24273a"); + public static readonly Color Mantle = Color.FromHex("#1e2030"); + public static readonly Color Crust = Color.FromHex("#181926"); + public static readonly Color Surface0 = Color.FromHex("#363a4f"); + public static readonly Color Surface1 = Color.FromHex("#494d64"); + public static readonly Color Surface2 = Color.FromHex("#5b6078"); + public static readonly Color Overlay0 = Color.FromHex("#6e738d"); + public static readonly Color Overlay1 = Color.FromHex("#8087a2"); + public static readonly Color Overlay2 = Color.FromHex("#939ab7"); + public static readonly Color Text = Color.FromHex("#cad3f5"); + public static readonly Color Subtext1 = Color.FromHex("#b8c0e0"); + public static readonly Color Subtext0 = Color.FromHex("#a5adcb"); + public static readonly Color Lavender = Color.FromHex("#b7bdf8"); + public static readonly Color Blue = Color.FromHex("#8aadf4"); + public static readonly Color Sapphire = Color.FromHex("#7dc4e4"); + public static readonly Color Sky = Color.FromHex("#91d7e3"); + public static readonly Color Teal = Color.FromHex("#8bd5ca"); + public static readonly Color Green = Color.FromHex("#a6da95"); + public static readonly Color Yellow = Color.FromHex("#eed49f"); + public static readonly Color Peach = Color.FromHex("#f5a97f"); + public static readonly Color Maroon = Color.FromHex("#ee99a0"); + public static readonly Color Red = Color.FromHex("#ed8796"); + public static readonly Color Mauve = Color.FromHex("#c6a0f6"); + public static readonly Color Pink = Color.FromHex("#f5bde6"); - public static Collection Neutrals => + public static Collection Neutrals => [ Text, Crust, ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Blue], diff --git a/ThemeProvider/Themes/Catppuccin/Mocha.cs b/ThemeProvider/Themes/Catppuccin/Mocha.cs index dcb814e..d9cf2eb 100644 --- a/ThemeProvider/Themes/Catppuccin/Mocha.cs +++ b/ThemeProvider/Themes/Catppuccin/Mocha.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Catppuccin; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the official Catppuccin Mocha color palette with exact hex values and properties. @@ -13,38 +14,38 @@ namespace ktsu.ThemeProvider.Themes.Catppuccin; public class Mocha : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member - public static readonly PerceptualColor Base = PerceptualColor.FromRgb("#1e1e2e"); - public static readonly PerceptualColor Mantle = PerceptualColor.FromRgb("#181825"); - public static readonly PerceptualColor Crust = PerceptualColor.FromRgb("#11111b"); - public static readonly PerceptualColor Surface0 = PerceptualColor.FromRgb("#313244"); - public static readonly PerceptualColor Surface1 = PerceptualColor.FromRgb("#45475a"); - public static readonly PerceptualColor Surface2 = PerceptualColor.FromRgb("#585b70"); - public static readonly PerceptualColor Overlay0 = PerceptualColor.FromRgb("#6c7086"); - public static readonly PerceptualColor Overlay1 = PerceptualColor.FromRgb("#7f849c"); - public static readonly PerceptualColor Overlay2 = PerceptualColor.FromRgb("#9399b2"); - public static readonly PerceptualColor Text = PerceptualColor.FromRgb("#cdd6f4"); - public static readonly PerceptualColor Subtext1 = PerceptualColor.FromRgb("#bac2de"); - public static readonly PerceptualColor Subtext0 = PerceptualColor.FromRgb("#a6adc8"); - public static readonly PerceptualColor Lavender = PerceptualColor.FromRgb("#b4befe"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#89b4fa"); - public static readonly PerceptualColor Sapphire = PerceptualColor.FromRgb("#74c7ec"); - public static readonly PerceptualColor Sky = PerceptualColor.FromRgb("#89dceb"); - public static readonly PerceptualColor Teal = PerceptualColor.FromRgb("#94e2d5"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#a6e3a1"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#f9e2af"); - public static readonly PerceptualColor Peach = PerceptualColor.FromRgb("#fab387"); - public static readonly PerceptualColor Maroon = PerceptualColor.FromRgb("#eba0ac"); - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#f38ba8"); - public static readonly PerceptualColor Mauve = PerceptualColor.FromRgb("#cba6f7"); - public static readonly PerceptualColor Pink = PerceptualColor.FromRgb("#f5c2e7"); + public static readonly Color Base = Color.FromHex("#1e1e2e"); + public static readonly Color Mantle = Color.FromHex("#181825"); + public static readonly Color Crust = Color.FromHex("#11111b"); + public static readonly Color Surface0 = Color.FromHex("#313244"); + public static readonly Color Surface1 = Color.FromHex("#45475a"); + public static readonly Color Surface2 = Color.FromHex("#585b70"); + public static readonly Color Overlay0 = Color.FromHex("#6c7086"); + public static readonly Color Overlay1 = Color.FromHex("#7f849c"); + public static readonly Color Overlay2 = Color.FromHex("#9399b2"); + public static readonly Color Text = Color.FromHex("#cdd6f4"); + public static readonly Color Subtext1 = Color.FromHex("#bac2de"); + public static readonly Color Subtext0 = Color.FromHex("#a6adc8"); + public static readonly Color Lavender = Color.FromHex("#b4befe"); + public static readonly Color Blue = Color.FromHex("#89b4fa"); + public static readonly Color Sapphire = Color.FromHex("#74c7ec"); + public static readonly Color Sky = Color.FromHex("#89dceb"); + public static readonly Color Teal = Color.FromHex("#94e2d5"); + public static readonly Color Green = Color.FromHex("#a6e3a1"); + public static readonly Color Yellow = Color.FromHex("#f9e2af"); + public static readonly Color Peach = Color.FromHex("#fab387"); + public static readonly Color Maroon = Color.FromHex("#eba0ac"); + public static readonly Color Red = Color.FromHex("#f38ba8"); + public static readonly Color Mauve = Color.FromHex("#cba6f7"); + public static readonly Color Pink = Color.FromHex("#f5c2e7"); - public static Collection Neutrals => + public static Collection Neutrals => [ Text, Crust, ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Blue], diff --git a/ThemeProvider/Themes/Dracula/Dracula.cs b/ThemeProvider/Themes/Dracula/Dracula.cs index 43e0bcc..3f2f52b 100644 --- a/ThemeProvider/Themes/Dracula/Dracula.cs +++ b/ThemeProvider/Themes/Dracula/Dracula.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Dracula; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the official Dracula color palette with exact hex values. @@ -13,26 +14,26 @@ namespace ktsu.ThemeProvider.Themes.Dracula; public class Dracula : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#282a36"); - public static readonly PerceptualColor CurrentLine = PerceptualColor.FromRgb("#44475a"); - public static readonly PerceptualColor Selection = PerceptualColor.FromRgb("#44475a"); - public static readonly PerceptualColor Foreground = PerceptualColor.FromRgb("#f8f8f2"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#6272a4"); - public static readonly PerceptualColor Cyan = PerceptualColor.FromRgb("#8be9fd"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#50fa7b"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#ffb86c"); - public static readonly PerceptualColor Pink = PerceptualColor.FromRgb("#ff79c6"); - public static readonly PerceptualColor Purple = PerceptualColor.FromRgb("#bd93f9"); - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#ff5555"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#f1fa8c"); + public static readonly Color Background = Color.FromHex("#282a36"); + public static readonly Color CurrentLine = Color.FromHex("#44475a"); + public static readonly Color Selection = Color.FromHex("#44475a"); + public static readonly Color Foreground = Color.FromHex("#f8f8f2"); + public static readonly Color Comment = Color.FromHex("#6272a4"); + public static readonly Color Cyan = Color.FromHex("#8be9fd"); + public static readonly Color Green = Color.FromHex("#50fa7b"); + public static readonly Color Orange = Color.FromHex("#ffb86c"); + public static readonly Color Pink = Color.FromHex("#ff79c6"); + public static readonly Color Purple = Color.FromHex("#bd93f9"); + public static readonly Color Red = Color.FromHex("#ff5555"); + public static readonly Color Yellow = Color.FromHex("#f1fa8c"); - public static Collection Neutrals => + public static Collection Neutrals => [ Foreground, // Lightest Background, // Darkest ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Purple], diff --git a/ThemeProvider/Themes/Everforest/EverforestDark.cs b/ThemeProvider/Themes/Everforest/EverforestDark.cs index 97e6675..40522f7 100644 --- a/ThemeProvider/Themes/Everforest/EverforestDark.cs +++ b/ThemeProvider/Themes/Everforest/EverforestDark.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Everforest; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Everforest Dark color palette with official hex values. @@ -13,36 +14,36 @@ namespace ktsu.ThemeProvider.Themes.Everforest; public class EverforestDark : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#2d353b"); - public static readonly PerceptualColor BgDim = PerceptualColor.FromRgb("#232a2e"); - public static readonly PerceptualColor Bg0 = PerceptualColor.FromRgb("#2d353b"); - public static readonly PerceptualColor Bg1 = PerceptualColor.FromRgb("#343f44"); - public static readonly PerceptualColor Bg2 = PerceptualColor.FromRgb("#3d484d"); - public static readonly PerceptualColor Bg3 = PerceptualColor.FromRgb("#475258"); - public static readonly PerceptualColor Bg4 = PerceptualColor.FromRgb("#4f585e"); - public static readonly PerceptualColor Bg5 = PerceptualColor.FromRgb("#56635f"); - public static readonly PerceptualColor Grey0 = PerceptualColor.FromRgb("#7a8478"); - public static readonly PerceptualColor Grey1 = PerceptualColor.FromRgb("#859289"); - public static readonly PerceptualColor Grey2 = PerceptualColor.FromRgb("#9da9a0"); - public static readonly PerceptualColor Fg = PerceptualColor.FromRgb("#d3c6aa"); - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#e67e80"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#e69875"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#dbbc7f"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#a7c080"); - public static readonly PerceptualColor Aqua = PerceptualColor.FromRgb("#83c092"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#7fbbb3"); - public static readonly PerceptualColor Purple = PerceptualColor.FromRgb("#d699b6"); - public static readonly PerceptualColor StatuslineA = PerceptualColor.FromRgb("#a7c080"); - public static readonly PerceptualColor StatuslineB = PerceptualColor.FromRgb("#d3c6aa"); - public static readonly PerceptualColor StatuslineC = PerceptualColor.FromRgb("#2d353b"); + public static readonly Color Background = Color.FromHex("#2d353b"); + public static readonly Color BgDim = Color.FromHex("#232a2e"); + public static readonly Color Bg0 = Color.FromHex("#2d353b"); + public static readonly Color Bg1 = Color.FromHex("#343f44"); + public static readonly Color Bg2 = Color.FromHex("#3d484d"); + public static readonly Color Bg3 = Color.FromHex("#475258"); + public static readonly Color Bg4 = Color.FromHex("#4f585e"); + public static readonly Color Bg5 = Color.FromHex("#56635f"); + public static readonly Color Grey0 = Color.FromHex("#7a8478"); + public static readonly Color Grey1 = Color.FromHex("#859289"); + public static readonly Color Grey2 = Color.FromHex("#9da9a0"); + public static readonly Color Fg = Color.FromHex("#d3c6aa"); + public static readonly Color Red = Color.FromHex("#e67e80"); + public static readonly Color Orange = Color.FromHex("#e69875"); + public static readonly Color Yellow = Color.FromHex("#dbbc7f"); + public static readonly Color Green = Color.FromHex("#a7c080"); + public static readonly Color Aqua = Color.FromHex("#83c092"); + public static readonly Color Blue = Color.FromHex("#7fbbb3"); + public static readonly Color Purple = Color.FromHex("#d699b6"); + public static readonly Color StatuslineA = Color.FromHex("#a7c080"); + public static readonly Color StatuslineB = Color.FromHex("#d3c6aa"); + public static readonly Color StatuslineC = Color.FromHex("#2d353b"); - public static Collection Neutrals => + public static Collection Neutrals => [ Fg, // Lightest BgDim, // Darkest ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Green], diff --git a/ThemeProvider/Themes/Everforest/EverforestDarkHard.cs b/ThemeProvider/Themes/Everforest/EverforestDarkHard.cs index 7990eff..13e48f0 100644 --- a/ThemeProvider/Themes/Everforest/EverforestDarkHard.cs +++ b/ThemeProvider/Themes/Everforest/EverforestDarkHard.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Everforest; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Everforest Dark Hard color palette with official hex values. @@ -14,36 +15,36 @@ namespace ktsu.ThemeProvider.Themes.Everforest; public class EverforestDarkHard : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#272e33"); - public static readonly PerceptualColor BgDim = PerceptualColor.FromRgb("#1e2326"); - public static readonly PerceptualColor Bg0 = PerceptualColor.FromRgb("#272e33"); - public static readonly PerceptualColor Bg1 = PerceptualColor.FromRgb("#2e383c"); - public static readonly PerceptualColor Bg2 = PerceptualColor.FromRgb("#374145"); - public static readonly PerceptualColor Bg3 = PerceptualColor.FromRgb("#414b50"); - public static readonly PerceptualColor Bg4 = PerceptualColor.FromRgb("#495156"); - public static readonly PerceptualColor Bg5 = PerceptualColor.FromRgb("#4f5b58"); - public static readonly PerceptualColor Grey0 = PerceptualColor.FromRgb("#7a8478"); - public static readonly PerceptualColor Grey1 = PerceptualColor.FromRgb("#859289"); - public static readonly PerceptualColor Grey2 = PerceptualColor.FromRgb("#9da9a0"); - public static readonly PerceptualColor Fg = PerceptualColor.FromRgb("#d3c6aa"); - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#e67e80"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#e69875"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#dbbc7f"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#a7c080"); - public static readonly PerceptualColor Aqua = PerceptualColor.FromRgb("#83c092"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#7fbbb3"); - public static readonly PerceptualColor Purple = PerceptualColor.FromRgb("#d699b6"); - public static readonly PerceptualColor StatuslineA = PerceptualColor.FromRgb("#a7c080"); - public static readonly PerceptualColor StatuslineB = PerceptualColor.FromRgb("#d3c6aa"); - public static readonly PerceptualColor StatuslineC = PerceptualColor.FromRgb("#272e33"); + public static readonly Color Background = Color.FromHex("#272e33"); + public static readonly Color BgDim = Color.FromHex("#1e2326"); + public static readonly Color Bg0 = Color.FromHex("#272e33"); + public static readonly Color Bg1 = Color.FromHex("#2e383c"); + public static readonly Color Bg2 = Color.FromHex("#374145"); + public static readonly Color Bg3 = Color.FromHex("#414b50"); + public static readonly Color Bg4 = Color.FromHex("#495156"); + public static readonly Color Bg5 = Color.FromHex("#4f5b58"); + public static readonly Color Grey0 = Color.FromHex("#7a8478"); + public static readonly Color Grey1 = Color.FromHex("#859289"); + public static readonly Color Grey2 = Color.FromHex("#9da9a0"); + public static readonly Color Fg = Color.FromHex("#d3c6aa"); + public static readonly Color Red = Color.FromHex("#e67e80"); + public static readonly Color Orange = Color.FromHex("#e69875"); + public static readonly Color Yellow = Color.FromHex("#dbbc7f"); + public static readonly Color Green = Color.FromHex("#a7c080"); + public static readonly Color Aqua = Color.FromHex("#83c092"); + public static readonly Color Blue = Color.FromHex("#7fbbb3"); + public static readonly Color Purple = Color.FromHex("#d699b6"); + public static readonly Color StatuslineA = Color.FromHex("#a7c080"); + public static readonly Color StatuslineB = Color.FromHex("#d3c6aa"); + public static readonly Color StatuslineC = Color.FromHex("#272e33"); - public static Collection Neutrals => + public static Collection Neutrals => [ Fg, // Lightest BgDim, // Darkest ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Green], diff --git a/ThemeProvider/Themes/Everforest/EverforestDarkSoft.cs b/ThemeProvider/Themes/Everforest/EverforestDarkSoft.cs index 030bb76..04a6aed 100644 --- a/ThemeProvider/Themes/Everforest/EverforestDarkSoft.cs +++ b/ThemeProvider/Themes/Everforest/EverforestDarkSoft.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Everforest; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Everforest Dark Soft color palette with official hex values. @@ -14,36 +15,36 @@ namespace ktsu.ThemeProvider.Themes.Everforest; public class EverforestDarkSoft : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#333c43"); - public static readonly PerceptualColor BgDim = PerceptualColor.FromRgb("#293136"); - public static readonly PerceptualColor Bg0 = PerceptualColor.FromRgb("#333c43"); - public static readonly PerceptualColor Bg1 = PerceptualColor.FromRgb("#3a464c"); - public static readonly PerceptualColor Bg2 = PerceptualColor.FromRgb("#434f55"); - public static readonly PerceptualColor Bg3 = PerceptualColor.FromRgb("#4d5a60"); - public static readonly PerceptualColor Bg4 = PerceptualColor.FromRgb("#555f66"); - public static readonly PerceptualColor Bg5 = PerceptualColor.FromRgb("#5d6b66"); - public static readonly PerceptualColor Grey0 = PerceptualColor.FromRgb("#7a8478"); - public static readonly PerceptualColor Grey1 = PerceptualColor.FromRgb("#859289"); - public static readonly PerceptualColor Grey2 = PerceptualColor.FromRgb("#9da9a0"); - public static readonly PerceptualColor Fg = PerceptualColor.FromRgb("#d3c6aa"); - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#e67e80"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#e69875"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#dbbc7f"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#a7c080"); - public static readonly PerceptualColor Aqua = PerceptualColor.FromRgb("#83c092"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#7fbbb3"); - public static readonly PerceptualColor Purple = PerceptualColor.FromRgb("#d699b6"); - public static readonly PerceptualColor StatuslineA = PerceptualColor.FromRgb("#a7c080"); - public static readonly PerceptualColor StatuslineB = PerceptualColor.FromRgb("#d3c6aa"); - public static readonly PerceptualColor StatuslineC = PerceptualColor.FromRgb("#333c43"); + public static readonly Color Background = Color.FromHex("#333c43"); + public static readonly Color BgDim = Color.FromHex("#293136"); + public static readonly Color Bg0 = Color.FromHex("#333c43"); + public static readonly Color Bg1 = Color.FromHex("#3a464c"); + public static readonly Color Bg2 = Color.FromHex("#434f55"); + public static readonly Color Bg3 = Color.FromHex("#4d5a60"); + public static readonly Color Bg4 = Color.FromHex("#555f66"); + public static readonly Color Bg5 = Color.FromHex("#5d6b66"); + public static readonly Color Grey0 = Color.FromHex("#7a8478"); + public static readonly Color Grey1 = Color.FromHex("#859289"); + public static readonly Color Grey2 = Color.FromHex("#9da9a0"); + public static readonly Color Fg = Color.FromHex("#d3c6aa"); + public static readonly Color Red = Color.FromHex("#e67e80"); + public static readonly Color Orange = Color.FromHex("#e69875"); + public static readonly Color Yellow = Color.FromHex("#dbbc7f"); + public static readonly Color Green = Color.FromHex("#a7c080"); + public static readonly Color Aqua = Color.FromHex("#83c092"); + public static readonly Color Blue = Color.FromHex("#7fbbb3"); + public static readonly Color Purple = Color.FromHex("#d699b6"); + public static readonly Color StatuslineA = Color.FromHex("#a7c080"); + public static readonly Color StatuslineB = Color.FromHex("#d3c6aa"); + public static readonly Color StatuslineC = Color.FromHex("#333c43"); - public static Collection Neutrals => + public static Collection Neutrals => [ Fg, // Lightest BgDim, // Darkest ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Green], diff --git a/ThemeProvider/Themes/Everforest/EverforestLight.cs b/ThemeProvider/Themes/Everforest/EverforestLight.cs index a5307a5..994f1fa 100644 --- a/ThemeProvider/Themes/Everforest/EverforestLight.cs +++ b/ThemeProvider/Themes/Everforest/EverforestLight.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Everforest; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Everforest Light color palette with official hex values. @@ -13,36 +14,36 @@ namespace ktsu.ThemeProvider.Themes.Everforest; public class EverforestLight : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#fdf6e3"); - public static readonly PerceptualColor BgDim = PerceptualColor.FromRgb("#f3efda"); - public static readonly PerceptualColor Bg0 = PerceptualColor.FromRgb("#fdf6e3"); - public static readonly PerceptualColor Bg1 = PerceptualColor.FromRgb("#f4f0d9"); - public static readonly PerceptualColor Bg2 = PerceptualColor.FromRgb("#efebd4"); - public static readonly PerceptualColor Bg3 = PerceptualColor.FromRgb("#e6e2cc"); - public static readonly PerceptualColor Bg4 = PerceptualColor.FromRgb("#e0dcc7"); - public static readonly PerceptualColor Bg5 = PerceptualColor.FromRgb("#ddd8c0"); - public static readonly PerceptualColor Grey0 = PerceptualColor.FromRgb("#a6b0a0"); - public static readonly PerceptualColor Grey1 = PerceptualColor.FromRgb("#939f91"); - public static readonly PerceptualColor Grey2 = PerceptualColor.FromRgb("#829181"); - public static readonly PerceptualColor Fg = PerceptualColor.FromRgb("#5c6a72"); - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#f85552"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#f57d26"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#dfa000"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#8da101"); - public static readonly PerceptualColor Aqua = PerceptualColor.FromRgb("#35a77c"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#3a94c5"); - public static readonly PerceptualColor Purple = PerceptualColor.FromRgb("#df69ba"); - public static readonly PerceptualColor StatuslineA = PerceptualColor.FromRgb("#8da101"); - public static readonly PerceptualColor StatuslineB = PerceptualColor.FromRgb("#5c6a72"); - public static readonly PerceptualColor StatuslineC = PerceptualColor.FromRgb("#fdf6e3"); + public static readonly Color Background = Color.FromHex("#fdf6e3"); + public static readonly Color BgDim = Color.FromHex("#f3efda"); + public static readonly Color Bg0 = Color.FromHex("#fdf6e3"); + public static readonly Color Bg1 = Color.FromHex("#f4f0d9"); + public static readonly Color Bg2 = Color.FromHex("#efebd4"); + public static readonly Color Bg3 = Color.FromHex("#e6e2cc"); + public static readonly Color Bg4 = Color.FromHex("#e0dcc7"); + public static readonly Color Bg5 = Color.FromHex("#ddd8c0"); + public static readonly Color Grey0 = Color.FromHex("#a6b0a0"); + public static readonly Color Grey1 = Color.FromHex("#939f91"); + public static readonly Color Grey2 = Color.FromHex("#829181"); + public static readonly Color Fg = Color.FromHex("#5c6a72"); + public static readonly Color Red = Color.FromHex("#f85552"); + public static readonly Color Orange = Color.FromHex("#f57d26"); + public static readonly Color Yellow = Color.FromHex("#dfa000"); + public static readonly Color Green = Color.FromHex("#8da101"); + public static readonly Color Aqua = Color.FromHex("#35a77c"); + public static readonly Color Blue = Color.FromHex("#3a94c5"); + public static readonly Color Purple = Color.FromHex("#df69ba"); + public static readonly Color StatuslineA = Color.FromHex("#8da101"); + public static readonly Color StatuslineB = Color.FromHex("#5c6a72"); + public static readonly Color StatuslineC = Color.FromHex("#fdf6e3"); - public static Collection Neutrals => + public static Collection Neutrals => [ Fg, // Darkest (for text in light theme) BgDim, // Lightest (for backgrounds in light theme) ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Green], diff --git a/ThemeProvider/Themes/Everforest/EverforestLightHard.cs b/ThemeProvider/Themes/Everforest/EverforestLightHard.cs index f5f2157..dddfcb6 100644 --- a/ThemeProvider/Themes/Everforest/EverforestLightHard.cs +++ b/ThemeProvider/Themes/Everforest/EverforestLightHard.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Everforest; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Everforest Light Hard color palette with official hex values. @@ -14,36 +15,36 @@ namespace ktsu.ThemeProvider.Themes.Everforest; public class EverforestLightHard : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#fffbef"); - public static readonly PerceptualColor BgDim = PerceptualColor.FromRgb("#f8f4e6"); - public static readonly PerceptualColor Bg0 = PerceptualColor.FromRgb("#fffbef"); - public static readonly PerceptualColor Bg1 = PerceptualColor.FromRgb("#f7f4e0"); - public static readonly PerceptualColor Bg2 = PerceptualColor.FromRgb("#f0ecce"); - public static readonly PerceptualColor Bg3 = PerceptualColor.FromRgb("#e9e5c5"); - public static readonly PerceptualColor Bg4 = PerceptualColor.FromRgb("#e1ddbb"); - public static readonly PerceptualColor Bg5 = PerceptualColor.FromRgb("#dad5b1"); - public static readonly PerceptualColor Grey0 = PerceptualColor.FromRgb("#a6b0a0"); - public static readonly PerceptualColor Grey1 = PerceptualColor.FromRgb("#939f91"); - public static readonly PerceptualColor Grey2 = PerceptualColor.FromRgb("#829181"); - public static readonly PerceptualColor Fg = PerceptualColor.FromRgb("#5c6a72"); - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#f85552"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#f57d26"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#dfa000"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#8da101"); - public static readonly PerceptualColor Aqua = PerceptualColor.FromRgb("#35a77c"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#3a94c5"); - public static readonly PerceptualColor Purple = PerceptualColor.FromRgb("#df69ba"); - public static readonly PerceptualColor StatuslineA = PerceptualColor.FromRgb("#8da101"); - public static readonly PerceptualColor StatuslineB = PerceptualColor.FromRgb("#5c6a72"); - public static readonly PerceptualColor StatuslineC = PerceptualColor.FromRgb("#fffbef"); + public static readonly Color Background = Color.FromHex("#fffbef"); + public static readonly Color BgDim = Color.FromHex("#f8f4e6"); + public static readonly Color Bg0 = Color.FromHex("#fffbef"); + public static readonly Color Bg1 = Color.FromHex("#f7f4e0"); + public static readonly Color Bg2 = Color.FromHex("#f0ecce"); + public static readonly Color Bg3 = Color.FromHex("#e9e5c5"); + public static readonly Color Bg4 = Color.FromHex("#e1ddbb"); + public static readonly Color Bg5 = Color.FromHex("#dad5b1"); + public static readonly Color Grey0 = Color.FromHex("#a6b0a0"); + public static readonly Color Grey1 = Color.FromHex("#939f91"); + public static readonly Color Grey2 = Color.FromHex("#829181"); + public static readonly Color Fg = Color.FromHex("#5c6a72"); + public static readonly Color Red = Color.FromHex("#f85552"); + public static readonly Color Orange = Color.FromHex("#f57d26"); + public static readonly Color Yellow = Color.FromHex("#dfa000"); + public static readonly Color Green = Color.FromHex("#8da101"); + public static readonly Color Aqua = Color.FromHex("#35a77c"); + public static readonly Color Blue = Color.FromHex("#3a94c5"); + public static readonly Color Purple = Color.FromHex("#df69ba"); + public static readonly Color StatuslineA = Color.FromHex("#8da101"); + public static readonly Color StatuslineB = Color.FromHex("#5c6a72"); + public static readonly Color StatuslineC = Color.FromHex("#fffbef"); - public static Collection Neutrals => + public static Collection Neutrals => [ Fg, // Darkest (for text in light theme) BgDim, // Lightest (for backgrounds in light theme - high contrast) ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Green], diff --git a/ThemeProvider/Themes/Everforest/EverforestLightSoft.cs b/ThemeProvider/Themes/Everforest/EverforestLightSoft.cs index ab7f109..8d31ad7 100644 --- a/ThemeProvider/Themes/Everforest/EverforestLightSoft.cs +++ b/ThemeProvider/Themes/Everforest/EverforestLightSoft.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Everforest; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Everforest Light Soft color palette with official hex values. @@ -14,36 +15,36 @@ namespace ktsu.ThemeProvider.Themes.Everforest; public class EverforestLightSoft : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#fffae8"); - public static readonly PerceptualColor BgDim = PerceptualColor.FromRgb("#f0f0e2"); - public static readonly PerceptualColor Bg0 = PerceptualColor.FromRgb("#fffae8"); - public static readonly PerceptualColor Bg1 = PerceptualColor.FromRgb("#f5f2dc"); - public static readonly PerceptualColor Bg2 = PerceptualColor.FromRgb("#efead4"); - public static readonly PerceptualColor Bg3 = PerceptualColor.FromRgb("#e8e3ca"); - public static readonly PerceptualColor Bg4 = PerceptualColor.FromRgb("#e2dcc3"); - public static readonly PerceptualColor Bg5 = PerceptualColor.FromRgb("#dcd6bb"); - public static readonly PerceptualColor Grey0 = PerceptualColor.FromRgb("#a6b0a0"); - public static readonly PerceptualColor Grey1 = PerceptualColor.FromRgb("#939f91"); - public static readonly PerceptualColor Grey2 = PerceptualColor.FromRgb("#829181"); - public static readonly PerceptualColor Fg = PerceptualColor.FromRgb("#5c6a72"); - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#f85552"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#f57d26"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#dfa000"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#8da101"); - public static readonly PerceptualColor Aqua = PerceptualColor.FromRgb("#35a77c"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#3a94c5"); - public static readonly PerceptualColor Purple = PerceptualColor.FromRgb("#df69ba"); - public static readonly PerceptualColor StatuslineA = PerceptualColor.FromRgb("#8da101"); - public static readonly PerceptualColor StatuslineB = PerceptualColor.FromRgb("#5c6a72"); - public static readonly PerceptualColor StatuslineC = PerceptualColor.FromRgb("#fffae8"); + public static readonly Color Background = Color.FromHex("#fffae8"); + public static readonly Color BgDim = Color.FromHex("#f0f0e2"); + public static readonly Color Bg0 = Color.FromHex("#fffae8"); + public static readonly Color Bg1 = Color.FromHex("#f5f2dc"); + public static readonly Color Bg2 = Color.FromHex("#efead4"); + public static readonly Color Bg3 = Color.FromHex("#e8e3ca"); + public static readonly Color Bg4 = Color.FromHex("#e2dcc3"); + public static readonly Color Bg5 = Color.FromHex("#dcd6bb"); + public static readonly Color Grey0 = Color.FromHex("#a6b0a0"); + public static readonly Color Grey1 = Color.FromHex("#939f91"); + public static readonly Color Grey2 = Color.FromHex("#829181"); + public static readonly Color Fg = Color.FromHex("#5c6a72"); + public static readonly Color Red = Color.FromHex("#f85552"); + public static readonly Color Orange = Color.FromHex("#f57d26"); + public static readonly Color Yellow = Color.FromHex("#dfa000"); + public static readonly Color Green = Color.FromHex("#8da101"); + public static readonly Color Aqua = Color.FromHex("#35a77c"); + public static readonly Color Blue = Color.FromHex("#3a94c5"); + public static readonly Color Purple = Color.FromHex("#df69ba"); + public static readonly Color StatuslineA = Color.FromHex("#8da101"); + public static readonly Color StatuslineB = Color.FromHex("#5c6a72"); + public static readonly Color StatuslineC = Color.FromHex("#fffae8"); - public static Collection Neutrals => + public static Collection Neutrals => [ Fg, // Darkest (for text in light theme) BgDim, // Lightest (for backgrounds in light theme - reduced contrast) ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Green], diff --git a/ThemeProvider/Themes/Gruvbox/GruvboxDark.cs b/ThemeProvider/Themes/Gruvbox/GruvboxDark.cs index b6d7f46..50028e4 100644 --- a/ThemeProvider/Themes/Gruvbox/GruvboxDark.cs +++ b/ThemeProvider/Themes/Gruvbox/GruvboxDark.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Gruvbox; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Gruvbox Dark color palette with official hex values. @@ -14,42 +15,42 @@ public class GruvboxDark : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Dark colors - public static readonly PerceptualColor DarkHard = PerceptualColor.FromRgb("#1d2021"); - public static readonly PerceptualColor Dark0 = PerceptualColor.FromRgb("#282828"); - public static readonly PerceptualColor Dark0Soft = PerceptualColor.FromRgb("#32302f"); - public static readonly PerceptualColor Dark1 = PerceptualColor.FromRgb("#3c3836"); - public static readonly PerceptualColor Dark2 = PerceptualColor.FromRgb("#504945"); - public static readonly PerceptualColor Dark3 = PerceptualColor.FromRgb("#665c54"); - public static readonly PerceptualColor Dark4 = PerceptualColor.FromRgb("#7c6f64"); + public static readonly Color DarkHard = Color.FromHex("#1d2021"); + public static readonly Color Dark0 = Color.FromHex("#282828"); + public static readonly Color Dark0Soft = Color.FromHex("#32302f"); + public static readonly Color Dark1 = Color.FromHex("#3c3836"); + public static readonly Color Dark2 = Color.FromHex("#504945"); + public static readonly Color Dark3 = Color.FromHex("#665c54"); + public static readonly Color Dark4 = Color.FromHex("#7c6f64"); // Light colors - public static readonly PerceptualColor Light0Hard = PerceptualColor.FromRgb("#f9f5d7"); - public static readonly PerceptualColor Light0 = PerceptualColor.FromRgb("#fbf1c7"); - public static readonly PerceptualColor Light0Soft = PerceptualColor.FromRgb("#f2e5bc"); - public static readonly PerceptualColor Light1 = PerceptualColor.FromRgb("#ebdbb2"); - public static readonly PerceptualColor Light2 = PerceptualColor.FromRgb("#d5c4a1"); - public static readonly PerceptualColor Light3 = PerceptualColor.FromRgb("#bdae93"); - public static readonly PerceptualColor Light4 = PerceptualColor.FromRgb("#a89984"); + public static readonly Color Light0Hard = Color.FromHex("#f9f5d7"); + public static readonly Color Light0 = Color.FromHex("#fbf1c7"); + public static readonly Color Light0Soft = Color.FromHex("#f2e5bc"); + public static readonly Color Light1 = Color.FromHex("#ebdbb2"); + public static readonly Color Light2 = Color.FromHex("#d5c4a1"); + public static readonly Color Light3 = Color.FromHex("#bdae93"); + public static readonly Color Light4 = Color.FromHex("#a89984"); // Bright colors - public static readonly PerceptualColor BrightRed = PerceptualColor.FromRgb("#fb4934"); - public static readonly PerceptualColor BrightGreen = PerceptualColor.FromRgb("#b8bb26"); - public static readonly PerceptualColor BrightYellow = PerceptualColor.FromRgb("#fabd2f"); - public static readonly PerceptualColor BrightBlue = PerceptualColor.FromRgb("#83a598"); - public static readonly PerceptualColor BrightPurple = PerceptualColor.FromRgb("#d3869b"); - public static readonly PerceptualColor BrightAqua = PerceptualColor.FromRgb("#8ec07c"); - public static readonly PerceptualColor BrightOrange = PerceptualColor.FromRgb("#fe8019"); + public static readonly Color BrightRed = Color.FromHex("#fb4934"); + public static readonly Color BrightGreen = Color.FromHex("#b8bb26"); + public static readonly Color BrightYellow = Color.FromHex("#fabd2f"); + public static readonly Color BrightBlue = Color.FromHex("#83a598"); + public static readonly Color BrightPurple = Color.FromHex("#d3869b"); + public static readonly Color BrightAqua = Color.FromHex("#8ec07c"); + public static readonly Color BrightOrange = Color.FromHex("#fe8019"); // Neutral colors - public static readonly PerceptualColor Gray = PerceptualColor.FromRgb("#928374"); + public static readonly Color Gray = Color.FromHex("#928374"); - public static Collection Neutrals => + public static Collection Neutrals => [ Light1, // Lightest DarkHard, // Darkest ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [BrightOrange], diff --git a/ThemeProvider/Themes/Gruvbox/GruvboxDarkHard.cs b/ThemeProvider/Themes/Gruvbox/GruvboxDarkHard.cs index 1c3277b..ac4b9b4 100644 --- a/ThemeProvider/Themes/Gruvbox/GruvboxDarkHard.cs +++ b/ThemeProvider/Themes/Gruvbox/GruvboxDarkHard.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Gruvbox; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Gruvbox Dark Hard color palette with official hex values. @@ -15,42 +16,42 @@ public class GruvboxDarkHard : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Dark colors - using hard backgrounds for higher contrast - public static readonly PerceptualColor DarkHard = PerceptualColor.FromRgb("#1d2021"); - public static readonly PerceptualColor Dark0 = PerceptualColor.FromRgb("#282828"); - public static readonly PerceptualColor Dark0Soft = PerceptualColor.FromRgb("#32302f"); - public static readonly PerceptualColor Dark1 = PerceptualColor.FromRgb("#3c3836"); - public static readonly PerceptualColor Dark2 = PerceptualColor.FromRgb("#504945"); - public static readonly PerceptualColor Dark3 = PerceptualColor.FromRgb("#665c54"); - public static readonly PerceptualColor Dark4 = PerceptualColor.FromRgb("#7c6f64"); + public static readonly Color DarkHard = Color.FromHex("#1d2021"); + public static readonly Color Dark0 = Color.FromHex("#282828"); + public static readonly Color Dark0Soft = Color.FromHex("#32302f"); + public static readonly Color Dark1 = Color.FromHex("#3c3836"); + public static readonly Color Dark2 = Color.FromHex("#504945"); + public static readonly Color Dark3 = Color.FromHex("#665c54"); + public static readonly Color Dark4 = Color.FromHex("#7c6f64"); // Light colors - public static readonly PerceptualColor Light0Hard = PerceptualColor.FromRgb("#f9f5d7"); - public static readonly PerceptualColor Light0 = PerceptualColor.FromRgb("#fbf1c7"); - public static readonly PerceptualColor Light0Soft = PerceptualColor.FromRgb("#f2e5bc"); - public static readonly PerceptualColor Light1 = PerceptualColor.FromRgb("#ebdbb2"); - public static readonly PerceptualColor Light2 = PerceptualColor.FromRgb("#d5c4a1"); - public static readonly PerceptualColor Light3 = PerceptualColor.FromRgb("#bdae93"); - public static readonly PerceptualColor Light4 = PerceptualColor.FromRgb("#a89984"); + public static readonly Color Light0Hard = Color.FromHex("#f9f5d7"); + public static readonly Color Light0 = Color.FromHex("#fbf1c7"); + public static readonly Color Light0Soft = Color.FromHex("#f2e5bc"); + public static readonly Color Light1 = Color.FromHex("#ebdbb2"); + public static readonly Color Light2 = Color.FromHex("#d5c4a1"); + public static readonly Color Light3 = Color.FromHex("#bdae93"); + public static readonly Color Light4 = Color.FromHex("#a89984"); // Bright colors - public static readonly PerceptualColor BrightRed = PerceptualColor.FromRgb("#fb4934"); - public static readonly PerceptualColor BrightGreen = PerceptualColor.FromRgb("#b8bb26"); - public static readonly PerceptualColor BrightYellow = PerceptualColor.FromRgb("#fabd2f"); - public static readonly PerceptualColor BrightBlue = PerceptualColor.FromRgb("#83a598"); - public static readonly PerceptualColor BrightPurple = PerceptualColor.FromRgb("#d3869b"); - public static readonly PerceptualColor BrightAqua = PerceptualColor.FromRgb("#8ec07c"); - public static readonly PerceptualColor BrightOrange = PerceptualColor.FromRgb("#fe8019"); + public static readonly Color BrightRed = Color.FromHex("#fb4934"); + public static readonly Color BrightGreen = Color.FromHex("#b8bb26"); + public static readonly Color BrightYellow = Color.FromHex("#fabd2f"); + public static readonly Color BrightBlue = Color.FromHex("#83a598"); + public static readonly Color BrightPurple = Color.FromHex("#d3869b"); + public static readonly Color BrightAqua = Color.FromHex("#8ec07c"); + public static readonly Color BrightOrange = Color.FromHex("#fe8019"); // Neutral colors - public static readonly PerceptualColor Gray = PerceptualColor.FromRgb("#928374"); + public static readonly Color Gray = Color.FromHex("#928374"); - public static Collection Neutrals => + public static Collection Neutrals => [ Light1, // Lightest DarkHard, // Darkest - using hard background for maximum contrast ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [BrightOrange], diff --git a/ThemeProvider/Themes/Gruvbox/GruvboxDarkSoft.cs b/ThemeProvider/Themes/Gruvbox/GruvboxDarkSoft.cs index 8c4e3b6..bf67dff 100644 --- a/ThemeProvider/Themes/Gruvbox/GruvboxDarkSoft.cs +++ b/ThemeProvider/Themes/Gruvbox/GruvboxDarkSoft.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Gruvbox; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Gruvbox Dark Soft color palette with official hex values. @@ -15,42 +16,42 @@ public class GruvboxDarkSoft : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Dark colors - using soft backgrounds for lower contrast - public static readonly PerceptualColor DarkHard = PerceptualColor.FromRgb("#1d2021"); - public static readonly PerceptualColor Dark0 = PerceptualColor.FromRgb("#282828"); - public static readonly PerceptualColor Dark0Soft = PerceptualColor.FromRgb("#32302f"); - public static readonly PerceptualColor Dark1 = PerceptualColor.FromRgb("#3c3836"); - public static readonly PerceptualColor Dark2 = PerceptualColor.FromRgb("#504945"); - public static readonly PerceptualColor Dark3 = PerceptualColor.FromRgb("#665c54"); - public static readonly PerceptualColor Dark4 = PerceptualColor.FromRgb("#7c6f64"); + public static readonly Color DarkHard = Color.FromHex("#1d2021"); + public static readonly Color Dark0 = Color.FromHex("#282828"); + public static readonly Color Dark0Soft = Color.FromHex("#32302f"); + public static readonly Color Dark1 = Color.FromHex("#3c3836"); + public static readonly Color Dark2 = Color.FromHex("#504945"); + public static readonly Color Dark3 = Color.FromHex("#665c54"); + public static readonly Color Dark4 = Color.FromHex("#7c6f64"); // Light colors - public static readonly PerceptualColor Light0Hard = PerceptualColor.FromRgb("#f9f5d7"); - public static readonly PerceptualColor Light0 = PerceptualColor.FromRgb("#fbf1c7"); - public static readonly PerceptualColor Light0Soft = PerceptualColor.FromRgb("#f2e5bc"); - public static readonly PerceptualColor Light1 = PerceptualColor.FromRgb("#ebdbb2"); - public static readonly PerceptualColor Light2 = PerceptualColor.FromRgb("#d5c4a1"); - public static readonly PerceptualColor Light3 = PerceptualColor.FromRgb("#bdae93"); - public static readonly PerceptualColor Light4 = PerceptualColor.FromRgb("#a89984"); + public static readonly Color Light0Hard = Color.FromHex("#f9f5d7"); + public static readonly Color Light0 = Color.FromHex("#fbf1c7"); + public static readonly Color Light0Soft = Color.FromHex("#f2e5bc"); + public static readonly Color Light1 = Color.FromHex("#ebdbb2"); + public static readonly Color Light2 = Color.FromHex("#d5c4a1"); + public static readonly Color Light3 = Color.FromHex("#bdae93"); + public static readonly Color Light4 = Color.FromHex("#a89984"); // Bright colors - public static readonly PerceptualColor BrightRed = PerceptualColor.FromRgb("#fb4934"); - public static readonly PerceptualColor BrightGreen = PerceptualColor.FromRgb("#b8bb26"); - public static readonly PerceptualColor BrightYellow = PerceptualColor.FromRgb("#fabd2f"); - public static readonly PerceptualColor BrightBlue = PerceptualColor.FromRgb("#83a598"); - public static readonly PerceptualColor BrightPurple = PerceptualColor.FromRgb("#d3869b"); - public static readonly PerceptualColor BrightAqua = PerceptualColor.FromRgb("#8ec07c"); - public static readonly PerceptualColor BrightOrange = PerceptualColor.FromRgb("#fe8019"); + public static readonly Color BrightRed = Color.FromHex("#fb4934"); + public static readonly Color BrightGreen = Color.FromHex("#b8bb26"); + public static readonly Color BrightYellow = Color.FromHex("#fabd2f"); + public static readonly Color BrightBlue = Color.FromHex("#83a598"); + public static readonly Color BrightPurple = Color.FromHex("#d3869b"); + public static readonly Color BrightAqua = Color.FromHex("#8ec07c"); + public static readonly Color BrightOrange = Color.FromHex("#fe8019"); // Neutral colors - public static readonly PerceptualColor Gray = PerceptualColor.FromRgb("#928374"); + public static readonly Color Gray = Color.FromHex("#928374"); - public static Collection Neutrals => + public static Collection Neutrals => [ Light1, // Lightest Dark0Soft, // Darkest - using soft background for reduced contrast ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [BrightOrange], diff --git a/ThemeProvider/Themes/Gruvbox/GruvboxLight.cs b/ThemeProvider/Themes/Gruvbox/GruvboxLight.cs index 4a582a9..80f8838 100644 --- a/ThemeProvider/Themes/Gruvbox/GruvboxLight.cs +++ b/ThemeProvider/Themes/Gruvbox/GruvboxLight.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Gruvbox; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Gruvbox Light color palette with official hex values. @@ -14,42 +15,42 @@ public class GruvboxLight : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Light colors (backgrounds in light theme) - public static readonly PerceptualColor LightHard = PerceptualColor.FromRgb("#f9f5d7"); - public static readonly PerceptualColor Light0 = PerceptualColor.FromRgb("#fbf1c7"); - public static readonly PerceptualColor Light0Soft = PerceptualColor.FromRgb("#f2e5bc"); - public static readonly PerceptualColor Light1 = PerceptualColor.FromRgb("#ebdbb2"); - public static readonly PerceptualColor Light2 = PerceptualColor.FromRgb("#d5c4a1"); - public static readonly PerceptualColor Light3 = PerceptualColor.FromRgb("#bdae93"); - public static readonly PerceptualColor Light4 = PerceptualColor.FromRgb("#a89984"); + public static readonly Color LightHard = Color.FromHex("#f9f5d7"); + public static readonly Color Light0 = Color.FromHex("#fbf1c7"); + public static readonly Color Light0Soft = Color.FromHex("#f2e5bc"); + public static readonly Color Light1 = Color.FromHex("#ebdbb2"); + public static readonly Color Light2 = Color.FromHex("#d5c4a1"); + public static readonly Color Light3 = Color.FromHex("#bdae93"); + public static readonly Color Light4 = Color.FromHex("#a89984"); // Dark colors (foregrounds in light theme) - public static readonly PerceptualColor Dark0Hard = PerceptualColor.FromRgb("#1d2021"); - public static readonly PerceptualColor Dark0 = PerceptualColor.FromRgb("#282828"); - public static readonly PerceptualColor Dark0Soft = PerceptualColor.FromRgb("#32302f"); - public static readonly PerceptualColor Dark1 = PerceptualColor.FromRgb("#3c3836"); - public static readonly PerceptualColor Dark2 = PerceptualColor.FromRgb("#504945"); - public static readonly PerceptualColor Dark3 = PerceptualColor.FromRgb("#665c54"); - public static readonly PerceptualColor Dark4 = PerceptualColor.FromRgb("#7c6f64"); + public static readonly Color Dark0Hard = Color.FromHex("#1d2021"); + public static readonly Color Dark0 = Color.FromHex("#282828"); + public static readonly Color Dark0Soft = Color.FromHex("#32302f"); + public static readonly Color Dark1 = Color.FromHex("#3c3836"); + public static readonly Color Dark2 = Color.FromHex("#504945"); + public static readonly Color Dark3 = Color.FromHex("#665c54"); + public static readonly Color Dark4 = Color.FromHex("#7c6f64"); // Faded colors for light theme - public static readonly PerceptualColor FadedRed = PerceptualColor.FromRgb("#cc241d"); - public static readonly PerceptualColor FadedGreen = PerceptualColor.FromRgb("#98971a"); - public static readonly PerceptualColor FadedYellow = PerceptualColor.FromRgb("#d79921"); - public static readonly PerceptualColor FadedBlue = PerceptualColor.FromRgb("#458588"); - public static readonly PerceptualColor FadedPurple = PerceptualColor.FromRgb("#b16286"); - public static readonly PerceptualColor FadedAqua = PerceptualColor.FromRgb("#689d6a"); - public static readonly PerceptualColor FadedOrange = PerceptualColor.FromRgb("#d65d0e"); + public static readonly Color FadedRed = Color.FromHex("#cc241d"); + public static readonly Color FadedGreen = Color.FromHex("#98971a"); + public static readonly Color FadedYellow = Color.FromHex("#d79921"); + public static readonly Color FadedBlue = Color.FromHex("#458588"); + public static readonly Color FadedPurple = Color.FromHex("#b16286"); + public static readonly Color FadedAqua = Color.FromHex("#689d6a"); + public static readonly Color FadedOrange = Color.FromHex("#d65d0e"); // Neutral colors - public static readonly PerceptualColor Gray = PerceptualColor.FromRgb("#928374"); + public static readonly Color Gray = Color.FromHex("#928374"); - public static Collection Neutrals => + public static Collection Neutrals => [ Dark0Hard, // Darkest (for text in light theme) LightHard, // Lightest (for backgrounds in light theme) ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [FadedOrange], diff --git a/ThemeProvider/Themes/Gruvbox/GruvboxLightHard.cs b/ThemeProvider/Themes/Gruvbox/GruvboxLightHard.cs index f8b2f38..7494771 100644 --- a/ThemeProvider/Themes/Gruvbox/GruvboxLightHard.cs +++ b/ThemeProvider/Themes/Gruvbox/GruvboxLightHard.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Gruvbox; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Gruvbox Light Hard color palette with official hex values. @@ -15,42 +16,42 @@ public class GruvboxLightHard : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Light colors (backgrounds in light theme) - using hard for maximum contrast - public static readonly PerceptualColor LightHard = PerceptualColor.FromRgb("#f9f5d7"); - public static readonly PerceptualColor Light0 = PerceptualColor.FromRgb("#fbf1c7"); - public static readonly PerceptualColor Light0Soft = PerceptualColor.FromRgb("#f2e5bc"); - public static readonly PerceptualColor Light1 = PerceptualColor.FromRgb("#ebdbb2"); - public static readonly PerceptualColor Light2 = PerceptualColor.FromRgb("#d5c4a1"); - public static readonly PerceptualColor Light3 = PerceptualColor.FromRgb("#bdae93"); - public static readonly PerceptualColor Light4 = PerceptualColor.FromRgb("#a89984"); + public static readonly Color LightHard = Color.FromHex("#f9f5d7"); + public static readonly Color Light0 = Color.FromHex("#fbf1c7"); + public static readonly Color Light0Soft = Color.FromHex("#f2e5bc"); + public static readonly Color Light1 = Color.FromHex("#ebdbb2"); + public static readonly Color Light2 = Color.FromHex("#d5c4a1"); + public static readonly Color Light3 = Color.FromHex("#bdae93"); + public static readonly Color Light4 = Color.FromHex("#a89984"); // Dark colors (foregrounds in light theme) - public static readonly PerceptualColor Dark0Hard = PerceptualColor.FromRgb("#1d2021"); - public static readonly PerceptualColor Dark0 = PerceptualColor.FromRgb("#282828"); - public static readonly PerceptualColor Dark0Soft = PerceptualColor.FromRgb("#32302f"); - public static readonly PerceptualColor Dark1 = PerceptualColor.FromRgb("#3c3836"); - public static readonly PerceptualColor Dark2 = PerceptualColor.FromRgb("#504945"); - public static readonly PerceptualColor Dark3 = PerceptualColor.FromRgb("#665c54"); - public static readonly PerceptualColor Dark4 = PerceptualColor.FromRgb("#7c6f64"); + public static readonly Color Dark0Hard = Color.FromHex("#1d2021"); + public static readonly Color Dark0 = Color.FromHex("#282828"); + public static readonly Color Dark0Soft = Color.FromHex("#32302f"); + public static readonly Color Dark1 = Color.FromHex("#3c3836"); + public static readonly Color Dark2 = Color.FromHex("#504945"); + public static readonly Color Dark3 = Color.FromHex("#665c54"); + public static readonly Color Dark4 = Color.FromHex("#7c6f64"); // Faded colors for light theme - public static readonly PerceptualColor FadedRed = PerceptualColor.FromRgb("#cc241d"); - public static readonly PerceptualColor FadedGreen = PerceptualColor.FromRgb("#98971a"); - public static readonly PerceptualColor FadedYellow = PerceptualColor.FromRgb("#d79921"); - public static readonly PerceptualColor FadedBlue = PerceptualColor.FromRgb("#458588"); - public static readonly PerceptualColor FadedPurple = PerceptualColor.FromRgb("#b16286"); - public static readonly PerceptualColor FadedAqua = PerceptualColor.FromRgb("#689d6a"); - public static readonly PerceptualColor FadedOrange = PerceptualColor.FromRgb("#d65d0e"); + public static readonly Color FadedRed = Color.FromHex("#cc241d"); + public static readonly Color FadedGreen = Color.FromHex("#98971a"); + public static readonly Color FadedYellow = Color.FromHex("#d79921"); + public static readonly Color FadedBlue = Color.FromHex("#458588"); + public static readonly Color FadedPurple = Color.FromHex("#b16286"); + public static readonly Color FadedAqua = Color.FromHex("#689d6a"); + public static readonly Color FadedOrange = Color.FromHex("#d65d0e"); // Neutral colors - public static readonly PerceptualColor Gray = PerceptualColor.FromRgb("#928374"); + public static readonly Color Gray = Color.FromHex("#928374"); - public static Collection Neutrals => + public static Collection Neutrals => [ Dark0Hard, // Darkest (for text in light theme) LightHard, // Lightest (for backgrounds in light theme - maximum contrast) ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [FadedOrange], diff --git a/ThemeProvider/Themes/Gruvbox/GruvboxLightSoft.cs b/ThemeProvider/Themes/Gruvbox/GruvboxLightSoft.cs index 54afbcd..50087f4 100644 --- a/ThemeProvider/Themes/Gruvbox/GruvboxLightSoft.cs +++ b/ThemeProvider/Themes/Gruvbox/GruvboxLightSoft.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Gruvbox; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Gruvbox Light Soft color palette with official hex values. @@ -15,42 +16,42 @@ public class GruvboxLightSoft : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Light colors (backgrounds in light theme) - using soft for reduced contrast - public static readonly PerceptualColor LightHard = PerceptualColor.FromRgb("#f9f5d7"); - public static readonly PerceptualColor Light0 = PerceptualColor.FromRgb("#fbf1c7"); - public static readonly PerceptualColor Light0Soft = PerceptualColor.FromRgb("#f2e5bc"); - public static readonly PerceptualColor Light1 = PerceptualColor.FromRgb("#ebdbb2"); - public static readonly PerceptualColor Light2 = PerceptualColor.FromRgb("#d5c4a1"); - public static readonly PerceptualColor Light3 = PerceptualColor.FromRgb("#bdae93"); - public static readonly PerceptualColor Light4 = PerceptualColor.FromRgb("#a89984"); + public static readonly Color LightHard = Color.FromHex("#f9f5d7"); + public static readonly Color Light0 = Color.FromHex("#fbf1c7"); + public static readonly Color Light0Soft = Color.FromHex("#f2e5bc"); + public static readonly Color Light1 = Color.FromHex("#ebdbb2"); + public static readonly Color Light2 = Color.FromHex("#d5c4a1"); + public static readonly Color Light3 = Color.FromHex("#bdae93"); + public static readonly Color Light4 = Color.FromHex("#a89984"); // Dark colors (foregrounds in light theme) - public static readonly PerceptualColor Dark0Hard = PerceptualColor.FromRgb("#1d2021"); - public static readonly PerceptualColor Dark0 = PerceptualColor.FromRgb("#282828"); - public static readonly PerceptualColor Dark0Soft = PerceptualColor.FromRgb("#32302f"); - public static readonly PerceptualColor Dark1 = PerceptualColor.FromRgb("#3c3836"); - public static readonly PerceptualColor Dark2 = PerceptualColor.FromRgb("#504945"); - public static readonly PerceptualColor Dark3 = PerceptualColor.FromRgb("#665c54"); - public static readonly PerceptualColor Dark4 = PerceptualColor.FromRgb("#7c6f64"); + public static readonly Color Dark0Hard = Color.FromHex("#1d2021"); + public static readonly Color Dark0 = Color.FromHex("#282828"); + public static readonly Color Dark0Soft = Color.FromHex("#32302f"); + public static readonly Color Dark1 = Color.FromHex("#3c3836"); + public static readonly Color Dark2 = Color.FromHex("#504945"); + public static readonly Color Dark3 = Color.FromHex("#665c54"); + public static readonly Color Dark4 = Color.FromHex("#7c6f64"); // Faded colors for light theme - public static readonly PerceptualColor FadedRed = PerceptualColor.FromRgb("#cc241d"); - public static readonly PerceptualColor FadedGreen = PerceptualColor.FromRgb("#98971a"); - public static readonly PerceptualColor FadedYellow = PerceptualColor.FromRgb("#d79921"); - public static readonly PerceptualColor FadedBlue = PerceptualColor.FromRgb("#458588"); - public static readonly PerceptualColor FadedPurple = PerceptualColor.FromRgb("#b16286"); - public static readonly PerceptualColor FadedAqua = PerceptualColor.FromRgb("#689d6a"); - public static readonly PerceptualColor FadedOrange = PerceptualColor.FromRgb("#d65d0e"); + public static readonly Color FadedRed = Color.FromHex("#cc241d"); + public static readonly Color FadedGreen = Color.FromHex("#98971a"); + public static readonly Color FadedYellow = Color.FromHex("#d79921"); + public static readonly Color FadedBlue = Color.FromHex("#458588"); + public static readonly Color FadedPurple = Color.FromHex("#b16286"); + public static readonly Color FadedAqua = Color.FromHex("#689d6a"); + public static readonly Color FadedOrange = Color.FromHex("#d65d0e"); // Neutral colors - public static readonly PerceptualColor Gray = PerceptualColor.FromRgb("#928374"); + public static readonly Color Gray = Color.FromHex("#928374"); - public static Collection Neutrals => + public static Collection Neutrals => [ Dark0Hard, // Darkest (for text in light theme) Light0Soft, // Lightest (for backgrounds in light theme - reduced contrast) ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [FadedOrange], diff --git a/ThemeProvider/Themes/Kanagawa/KanagawaDragon.cs b/ThemeProvider/Themes/Kanagawa/KanagawaDragon.cs index 5181d7a..2bb8b3d 100644 --- a/ThemeProvider/Themes/Kanagawa/KanagawaDragon.cs +++ b/ThemeProvider/Themes/Kanagawa/KanagawaDragon.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Kanagawa; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Kanagawa Dragon color palette with official hex values. @@ -15,40 +16,40 @@ public class KanagawaDragon : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Dragon-inspired darker backgrounds - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#0d0c0c"); - public static readonly PerceptualColor BgAlt = PerceptualColor.FromRgb("#181616"); - public static readonly PerceptualColor Bg0 = PerceptualColor.FromRgb("#0d0c0c"); - public static readonly PerceptualColor Bg1 = PerceptualColor.FromRgb("#181616"); - public static readonly PerceptualColor Bg2 = PerceptualColor.FromRgb("#201d23"); - public static readonly PerceptualColor Bg3 = PerceptualColor.FromRgb("#282727"); - public static readonly PerceptualColor WaveBlue1 = PerceptualColor.FromRgb("#0a0a0a"); - public static readonly PerceptualColor WaveBlue2 = PerceptualColor.FromRgb("#12120f"); + public static readonly Color Background = Color.FromHex("#0d0c0c"); + public static readonly Color BgAlt = Color.FromHex("#181616"); + public static readonly Color Bg0 = Color.FromHex("#0d0c0c"); + public static readonly Color Bg1 = Color.FromHex("#181616"); + public static readonly Color Bg2 = Color.FromHex("#201d23"); + public static readonly Color Bg3 = Color.FromHex("#282727"); + public static readonly Color WaveBlue1 = Color.FromHex("#0a0a0a"); + public static readonly Color WaveBlue2 = Color.FromHex("#12120f"); // Dragon foreground colors - intense and sharp - public static readonly PerceptualColor Fg0 = PerceptualColor.FromRgb("#c5c9c5"); - public static readonly PerceptualColor Fg1 = PerceptualColor.FromRgb("#b5b4b1"); - public static readonly PerceptualColor Fg2 = PerceptualColor.FromRgb("#9e9b93"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#625e5a"); + public static readonly Color Fg0 = Color.FromHex("#c5c9c5"); + public static readonly Color Fg1 = Color.FromHex("#b5b4b1"); + public static readonly Color Fg2 = Color.FromHex("#9e9b93"); + public static readonly Color Comment = Color.FromHex("#625e5a"); // Intense dragon palette - public static readonly PerceptualColor SakuraPink = PerceptualColor.FromRgb("#c4746e"); - public static readonly PerceptualColor WaveRed = PerceptualColor.FromRgb("#c4746e"); - public static readonly PerceptualColor SummerGreen = PerceptualColor.FromRgb("#8a9a7b"); - public static readonly PerceptualColor AutumnYellow = PerceptualColor.FromRgb("#c4b28a"); - public static readonly PerceptualColor CrystalBlue = PerceptualColor.FromRgb("#8ba4b0"); - public static readonly PerceptualColor SpringBlue = PerceptualColor.FromRgb("#7fb4ca"); - public static readonly PerceptualColor KatanaGray = PerceptualColor.FromRgb("#8a8980"); - public static readonly PerceptualColor IceBlue = PerceptualColor.FromRgb("#9cabca"); - public static readonly PerceptualColor BoatYellow1 = PerceptualColor.FromRgb("#a69764"); - public static readonly PerceptualColor BoatYellow2 = PerceptualColor.FromRgb("#b6927b"); + public static readonly Color SakuraPink = Color.FromHex("#c4746e"); + public static readonly Color WaveRed = Color.FromHex("#c4746e"); + public static readonly Color SummerGreen = Color.FromHex("#8a9a7b"); + public static readonly Color AutumnYellow = Color.FromHex("#c4b28a"); + public static readonly Color CrystalBlue = Color.FromHex("#8ba4b0"); + public static readonly Color SpringBlue = Color.FromHex("#7fb4ca"); + public static readonly Color KatanaGray = Color.FromHex("#8a8980"); + public static readonly Color IceBlue = Color.FromHex("#9cabca"); + public static readonly Color BoatYellow1 = Color.FromHex("#a69764"); + public static readonly Color BoatYellow2 = Color.FromHex("#b6927b"); - public static Collection Neutrals => + public static Collection Neutrals => [ Fg0, // Lightest Background, // Darkest ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [CrystalBlue], diff --git a/ThemeProvider/Themes/Kanagawa/KanagawaLotus.cs b/ThemeProvider/Themes/Kanagawa/KanagawaLotus.cs index 994d52a..6e851bb 100644 --- a/ThemeProvider/Themes/Kanagawa/KanagawaLotus.cs +++ b/ThemeProvider/Themes/Kanagawa/KanagawaLotus.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Kanagawa; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Kanagawa Lotus color palette with official hex values. @@ -15,40 +16,40 @@ public class KanagawaLotus : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Lotus-inspired light backgrounds - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#f2ecbc"); - public static readonly PerceptualColor BgAlt = PerceptualColor.FromRgb("#f7f4dd"); - public static readonly PerceptualColor Bg0 = PerceptualColor.FromRgb("#f2ecbc"); - public static readonly PerceptualColor Bg1 = PerceptualColor.FromRgb("#e7dba0"); - public static readonly PerceptualColor Bg2 = PerceptualColor.FromRgb("#e4d794"); - public static readonly PerceptualColor Bg3 = PerceptualColor.FromRgb("#d8ce9b"); - public static readonly PerceptualColor WaveBlue1 = PerceptualColor.FromRgb("#d7d3c0"); - public static readonly PerceptualColor WaveBlue2 = PerceptualColor.FromRgb("#d5cea3"); + public static readonly Color Background = Color.FromHex("#f2ecbc"); + public static readonly Color BgAlt = Color.FromHex("#f7f4dd"); + public static readonly Color Bg0 = Color.FromHex("#f2ecbc"); + public static readonly Color Bg1 = Color.FromHex("#e7dba0"); + public static readonly Color Bg2 = Color.FromHex("#e4d794"); + public static readonly Color Bg3 = Color.FromHex("#d8ce9b"); + public static readonly Color WaveBlue1 = Color.FromHex("#d7d3c0"); + public static readonly Color WaveBlue2 = Color.FromHex("#d5cea3"); // Lotus foreground colors - soft and natural - public static readonly PerceptualColor Fg0 = PerceptualColor.FromRgb("#545464"); - public static readonly PerceptualColor Fg1 = PerceptualColor.FromRgb("#43436c"); - public static readonly PerceptualColor Fg2 = PerceptualColor.FromRgb("#6f6f9a"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#a6a69c"); + public static readonly Color Fg0 = Color.FromHex("#545464"); + public static readonly Color Fg1 = Color.FromHex("#43436c"); + public static readonly Color Fg2 = Color.FromHex("#6f6f9a"); + public static readonly Color Comment = Color.FromHex("#a6a69c"); // Soft lotus palette - muted and serene - public static readonly PerceptualColor SakuraPink = PerceptualColor.FromRgb("#b35b79"); - public static readonly PerceptualColor WaveRed = PerceptualColor.FromRgb("#cc5d73"); - public static readonly PerceptualColor SummerGreen = PerceptualColor.FromRgb("#6f894e"); - public static readonly PerceptualColor AutumnYellow = PerceptualColor.FromRgb("#77713f"); - public static readonly PerceptualColor CrystalBlue = PerceptualColor.FromRgb("#4d699b"); - public static readonly PerceptualColor SpringBlue = PerceptualColor.FromRgb("#5e857a"); - public static readonly PerceptualColor KatanaGray = PerceptualColor.FromRgb("#8a8a7a"); - public static readonly PerceptualColor IceBlue = PerceptualColor.FromRgb("#7e9fb8"); - public static readonly PerceptualColor BoatYellow1 = PerceptualColor.FromRgb("#836f4a"); - public static readonly PerceptualColor BoatYellow2 = PerceptualColor.FromRgb("#b98f56"); + public static readonly Color SakuraPink = Color.FromHex("#b35b79"); + public static readonly Color WaveRed = Color.FromHex("#cc5d73"); + public static readonly Color SummerGreen = Color.FromHex("#6f894e"); + public static readonly Color AutumnYellow = Color.FromHex("#77713f"); + public static readonly Color CrystalBlue = Color.FromHex("#4d699b"); + public static readonly Color SpringBlue = Color.FromHex("#5e857a"); + public static readonly Color KatanaGray = Color.FromHex("#8a8a7a"); + public static readonly Color IceBlue = Color.FromHex("#7e9fb8"); + public static readonly Color BoatYellow1 = Color.FromHex("#836f4a"); + public static readonly Color BoatYellow2 = Color.FromHex("#b98f56"); - public static Collection Neutrals => + public static Collection Neutrals => [ Fg0, // Darkest (for text in light theme) BgAlt, // Lightest (for backgrounds) ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [CrystalBlue], diff --git a/ThemeProvider/Themes/Kanagawa/KanagawaWave.cs b/ThemeProvider/Themes/Kanagawa/KanagawaWave.cs index 59b0493..5704539 100644 --- a/ThemeProvider/Themes/Kanagawa/KanagawaWave.cs +++ b/ThemeProvider/Themes/Kanagawa/KanagawaWave.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Kanagawa; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Kanagawa Wave color palette with official hex values. @@ -15,40 +16,40 @@ public class KanagawaWave : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Background colors - traditional Japanese palette - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#1f1f28"); - public static readonly PerceptualColor BgAlt = PerceptualColor.FromRgb("#16161d"); - public static readonly PerceptualColor Bg0 = PerceptualColor.FromRgb("#1f1f28"); - public static readonly PerceptualColor Bg1 = PerceptualColor.FromRgb("#2a2a37"); - public static readonly PerceptualColor Bg2 = PerceptualColor.FromRgb("#363646"); - public static readonly PerceptualColor Bg3 = PerceptualColor.FromRgb("#54546d"); - public static readonly PerceptualColor WaveBlue1 = PerceptualColor.FromRgb("#223249"); - public static readonly PerceptualColor WaveBlue2 = PerceptualColor.FromRgb("#2d4f67"); + public static readonly Color Background = Color.FromHex("#1f1f28"); + public static readonly Color BgAlt = Color.FromHex("#16161d"); + public static readonly Color Bg0 = Color.FromHex("#1f1f28"); + public static readonly Color Bg1 = Color.FromHex("#2a2a37"); + public static readonly Color Bg2 = Color.FromHex("#363646"); + public static readonly Color Bg3 = Color.FromHex("#54546d"); + public static readonly Color WaveBlue1 = Color.FromHex("#223249"); + public static readonly Color WaveBlue2 = Color.FromHex("#2d4f67"); // Foreground colors - public static readonly PerceptualColor Fg0 = PerceptualColor.FromRgb("#dcd7ba"); - public static readonly PerceptualColor Fg1 = PerceptualColor.FromRgb("#c8c093"); - public static readonly PerceptualColor Fg2 = PerceptualColor.FromRgb("#9caca8"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#727169"); + public static readonly Color Fg0 = Color.FromHex("#dcd7ba"); + public static readonly Color Fg1 = Color.FromHex("#c8c093"); + public static readonly Color Fg2 = Color.FromHex("#9caca8"); + public static readonly Color Comment = Color.FromHex("#727169"); // Traditional color palette - public static readonly PerceptualColor SakuraPink = PerceptualColor.FromRgb("#d27e99"); - public static readonly PerceptualColor WaveRed = PerceptualColor.FromRgb("#e82424"); - public static readonly PerceptualColor SummerGreen = PerceptualColor.FromRgb("#98bb6c"); - public static readonly PerceptualColor AutumnYellow = PerceptualColor.FromRgb("#e6c384"); - public static readonly PerceptualColor CrystalBlue = PerceptualColor.FromRgb("#7e9cd8"); - public static readonly PerceptualColor SpringBlue = PerceptualColor.FromRgb("#7fb4ca"); - public static readonly PerceptualColor KatanaGray = PerceptualColor.FromRgb("#717c7c"); - public static readonly PerceptualColor IceBlue = PerceptualColor.FromRgb("#a3d4d5"); - public static readonly PerceptualColor BoatYellow1 = PerceptualColor.FromRgb("#938056"); - public static readonly PerceptualColor BoatYellow2 = PerceptualColor.FromRgb("#c0a36e"); + public static readonly Color SakuraPink = Color.FromHex("#d27e99"); + public static readonly Color WaveRed = Color.FromHex("#e82424"); + public static readonly Color SummerGreen = Color.FromHex("#98bb6c"); + public static readonly Color AutumnYellow = Color.FromHex("#e6c384"); + public static readonly Color CrystalBlue = Color.FromHex("#7e9cd8"); + public static readonly Color SpringBlue = Color.FromHex("#7fb4ca"); + public static readonly Color KatanaGray = Color.FromHex("#717c7c"); + public static readonly Color IceBlue = Color.FromHex("#a3d4d5"); + public static readonly Color BoatYellow1 = Color.FromHex("#938056"); + public static readonly Color BoatYellow2 = Color.FromHex("#c0a36e"); - public static Collection Neutrals => + public static Collection Neutrals => [ Fg0, // Lightest BgAlt, // Darkest ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [CrystalBlue], diff --git a/ThemeProvider/Themes/Monokai/Monokai.cs b/ThemeProvider/Themes/Monokai/Monokai.cs index ed5cc5c..e131737 100644 --- a/ThemeProvider/Themes/Monokai/Monokai.cs +++ b/ThemeProvider/Themes/Monokai/Monokai.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Monokai; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the classic Monokai color palette with exact hex values. @@ -13,26 +14,26 @@ namespace ktsu.ThemeProvider.Themes.Monokai; public class Monokai : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#272822"); - public static readonly PerceptualColor CurrentLine = PerceptualColor.FromRgb("#49483e"); - public static readonly PerceptualColor Selection = PerceptualColor.FromRgb("#49483e"); - public static readonly PerceptualColor Foreground = PerceptualColor.FromRgb("#f8f8f2"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#75715e"); - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#f92672"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#fd971f"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#f4bf75"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#a6e22e"); - public static readonly PerceptualColor Aqua = PerceptualColor.FromRgb("#a1efe4"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#66d9ef"); - public static readonly PerceptualColor Purple = PerceptualColor.FromRgb("#ae81ff"); + public static readonly Color Background = Color.FromHex("#272822"); + public static readonly Color CurrentLine = Color.FromHex("#49483e"); + public static readonly Color Selection = Color.FromHex("#49483e"); + public static readonly Color Foreground = Color.FromHex("#f8f8f2"); + public static readonly Color Comment = Color.FromHex("#75715e"); + public static readonly Color Red = Color.FromHex("#f92672"); + public static readonly Color Orange = Color.FromHex("#fd971f"); + public static readonly Color Yellow = Color.FromHex("#f4bf75"); + public static readonly Color Green = Color.FromHex("#a6e22e"); + public static readonly Color Aqua = Color.FromHex("#a1efe4"); + public static readonly Color Blue = Color.FromHex("#66d9ef"); + public static readonly Color Purple = Color.FromHex("#ae81ff"); - public static Collection Neutrals => + public static Collection Neutrals => [ Foreground, // Lightest Background, // Darkest ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Blue], diff --git a/ThemeProvider/Themes/Nightfly/Nightfly.cs b/ThemeProvider/Themes/Nightfly/Nightfly.cs index 15e788d..4197c7d 100644 --- a/ThemeProvider/Themes/Nightfly/Nightfly.cs +++ b/ThemeProvider/Themes/Nightfly/Nightfly.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Nightfly; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Nightfly color palette with official hex values. @@ -13,32 +14,32 @@ namespace ktsu.ThemeProvider.Themes.Nightfly; public class Nightfly : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#011627"); - public static readonly PerceptualColor Selection = PerceptualColor.FromRgb("#1d3b53"); - public static readonly PerceptualColor Foreground = PerceptualColor.FromRgb("#d6deeb"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#637777"); - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#fc514e"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#f78c6c"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#e3d18a"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#addb67"); - public static readonly PerceptualColor Teal = PerceptualColor.FromRgb("#4db5bd"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#82aaff"); - public static readonly PerceptualColor Purple = PerceptualColor.FromRgb("#c792ea"); - public static readonly PerceptualColor Cyan = PerceptualColor.FromRgb("#7fdbca"); - public static readonly PerceptualColor White = PerceptualColor.FromRgb("#ffffff"); - public static readonly PerceptualColor Gray1 = PerceptualColor.FromRgb("#1e2030"); - public static readonly PerceptualColor Gray2 = PerceptualColor.FromRgb("#2c3043"); - public static readonly PerceptualColor Gray3 = PerceptualColor.FromRgb("#506477"); - public static readonly PerceptualColor Gray4 = PerceptualColor.FromRgb("#7e8294"); - public static readonly PerceptualColor Gray5 = PerceptualColor.FromRgb("#a1aab8"); + public static readonly Color Background = Color.FromHex("#011627"); + public static readonly Color Selection = Color.FromHex("#1d3b53"); + public static readonly Color Foreground = Color.FromHex("#d6deeb"); + public static readonly Color Comment = Color.FromHex("#637777"); + public static readonly Color Red = Color.FromHex("#fc514e"); + public static readonly Color Orange = Color.FromHex("#f78c6c"); + public static readonly Color Yellow = Color.FromHex("#e3d18a"); + public static readonly Color Green = Color.FromHex("#addb67"); + public static readonly Color Teal = Color.FromHex("#4db5bd"); + public static readonly Color Blue = Color.FromHex("#82aaff"); + public static readonly Color Purple = Color.FromHex("#c792ea"); + public static readonly Color Cyan = Color.FromHex("#7fdbca"); + public static readonly Color White = Color.FromHex("#ffffff"); + public static readonly Color Gray1 = Color.FromHex("#1e2030"); + public static readonly Color Gray2 = Color.FromHex("#2c3043"); + public static readonly Color Gray3 = Color.FromHex("#506477"); + public static readonly Color Gray4 = Color.FromHex("#7e8294"); + public static readonly Color Gray5 = Color.FromHex("#a1aab8"); - public static Collection Neutrals => + public static Collection Neutrals => [ White, // Lightest Background, // Darkest ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Blue], diff --git a/ThemeProvider/Themes/Nightfox/Carbonfox.cs b/ThemeProvider/Themes/Nightfox/Carbonfox.cs index 7b8eb5c..eb6bbc0 100644 --- a/ThemeProvider/Themes/Nightfox/Carbonfox.cs +++ b/ThemeProvider/Themes/Nightfox/Carbonfox.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Nightfox; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Carbonfox color palette with official hex values. @@ -15,39 +16,39 @@ public class Carbonfox : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Carbon-inspired dark backgrounds - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#161616"); - public static readonly PerceptualColor BgAlt = PerceptualColor.FromRgb("#0c0c0c"); - public static readonly PerceptualColor Bg0 = PerceptualColor.FromRgb("#161616"); - public static readonly PerceptualColor Bg1 = PerceptualColor.FromRgb("#21272a"); - public static readonly PerceptualColor Bg2 = PerceptualColor.FromRgb("#2a3439"); - public static readonly PerceptualColor Bg3 = PerceptualColor.FromRgb("#4b5563"); - public static readonly PerceptualColor Sel0 = PerceptualColor.FromRgb("#2a2a2a"); - public static readonly PerceptualColor Sel1 = PerceptualColor.FromRgb("#3d3d3d"); + public static readonly Color Background = Color.FromHex("#161616"); + public static readonly Color BgAlt = Color.FromHex("#0c0c0c"); + public static readonly Color Bg0 = Color.FromHex("#161616"); + public static readonly Color Bg1 = Color.FromHex("#21272a"); + public static readonly Color Bg2 = Color.FromHex("#2a3439"); + public static readonly Color Bg3 = Color.FromHex("#4b5563"); + public static readonly Color Sel0 = Color.FromHex("#2a2a2a"); + public static readonly Color Sel1 = Color.FromHex("#3d3d3d"); // Industrial foreground colors - public static readonly PerceptualColor Fg0 = PerceptualColor.FromRgb("#f2f4f8"); - public static readonly PerceptualColor Fg1 = PerceptualColor.FromRgb("#b6b8bb"); - public static readonly PerceptualColor Fg2 = PerceptualColor.FromRgb("#8b8d8f"); - public static readonly PerceptualColor Fg3 = PerceptualColor.FromRgb("#6f7d8c"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#6f7d8c"); + public static readonly Color Fg0 = Color.FromHex("#f2f4f8"); + public static readonly Color Fg1 = Color.FromHex("#b6b8bb"); + public static readonly Color Fg2 = Color.FromHex("#8b8d8f"); + public static readonly Color Fg3 = Color.FromHex("#6f7d8c"); + public static readonly Color Comment = Color.FromHex("#6f7d8c"); // Carbon accent colors - minimal and functional - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#ee5396"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#3ddbd9"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#08bdba"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#25be6a"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#78a9ff"); - public static readonly PerceptualColor Cyan = PerceptualColor.FromRgb("#33b1ff"); - public static readonly PerceptualColor Magenta = PerceptualColor.FromRgb("#be95ff"); - public static readonly PerceptualColor Pink = PerceptualColor.FromRgb("#ff7eb6"); + public static readonly Color Red = Color.FromHex("#ee5396"); + public static readonly Color Orange = Color.FromHex("#3ddbd9"); + public static readonly Color Yellow = Color.FromHex("#08bdba"); + public static readonly Color Green = Color.FromHex("#25be6a"); + public static readonly Color Blue = Color.FromHex("#78a9ff"); + public static readonly Color Cyan = Color.FromHex("#33b1ff"); + public static readonly Color Magenta = Color.FromHex("#be95ff"); + public static readonly Color Pink = Color.FromHex("#ff7eb6"); - public static Collection Neutrals => + public static Collection Neutrals => [ Fg0, // Lightest BgAlt, // Darkest ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Blue], diff --git a/ThemeProvider/Themes/Nightfox/Dawnfox.cs b/ThemeProvider/Themes/Nightfox/Dawnfox.cs index 5ab7427..5c65529 100644 --- a/ThemeProvider/Themes/Nightfox/Dawnfox.cs +++ b/ThemeProvider/Themes/Nightfox/Dawnfox.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Nightfox; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Dawnfox color palette with official hex values. @@ -15,39 +16,39 @@ public class Dawnfox : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Dawn-inspired light backgrounds - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#faf4ed"); - public static readonly PerceptualColor BgAlt = PerceptualColor.FromRgb("#f4ede4"); - public static readonly PerceptualColor Bg0 = PerceptualColor.FromRgb("#faf4ed"); - public static readonly PerceptualColor Bg1 = PerceptualColor.FromRgb("#f2e9de"); - public static readonly PerceptualColor Bg2 = PerceptualColor.FromRgb("#eae0d5"); - public static readonly PerceptualColor Bg3 = PerceptualColor.FromRgb("#d7c9bd"); - public static readonly PerceptualColor Sel0 = PerceptualColor.FromRgb("#e9dfdb"); - public static readonly PerceptualColor Sel1 = PerceptualColor.FromRgb("#ddd1c7"); + public static readonly Color Background = Color.FromHex("#faf4ed"); + public static readonly Color BgAlt = Color.FromHex("#f4ede4"); + public static readonly Color Bg0 = Color.FromHex("#faf4ed"); + public static readonly Color Bg1 = Color.FromHex("#f2e9de"); + public static readonly Color Bg2 = Color.FromHex("#eae0d5"); + public static readonly Color Bg3 = Color.FromHex("#d7c9bd"); + public static readonly Color Sel0 = Color.FromHex("#e9dfdb"); + public static readonly Color Sel1 = Color.FromHex("#ddd1c7"); // Morning foreground colors - public static readonly PerceptualColor Fg0 = PerceptualColor.FromRgb("#575279"); - public static readonly PerceptualColor Fg1 = PerceptualColor.FromRgb("#6e6a86"); - public static readonly PerceptualColor Fg2 = PerceptualColor.FromRgb("#797593"); - public static readonly PerceptualColor Fg3 = PerceptualColor.FromRgb("#9893a5"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#a8a5b8"); + public static readonly Color Fg0 = Color.FromHex("#575279"); + public static readonly Color Fg1 = Color.FromHex("#6e6a86"); + public static readonly Color Fg2 = Color.FromHex("#797593"); + public static readonly Color Fg3 = Color.FromHex("#9893a5"); + public static readonly Color Comment = Color.FromHex("#a8a5b8"); // Dawn accent colors - soft pastels - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#b4637a"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#ea9d34"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#d7827e"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#286983"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#56949f"); - public static readonly PerceptualColor Cyan = PerceptualColor.FromRgb("#d7827e"); - public static readonly PerceptualColor Magenta = PerceptualColor.FromRgb("#907aa9"); - public static readonly PerceptualColor Pink = PerceptualColor.FromRgb("#d685af"); + public static readonly Color Red = Color.FromHex("#b4637a"); + public static readonly Color Orange = Color.FromHex("#ea9d34"); + public static readonly Color Yellow = Color.FromHex("#d7827e"); + public static readonly Color Green = Color.FromHex("#286983"); + public static readonly Color Blue = Color.FromHex("#56949f"); + public static readonly Color Cyan = Color.FromHex("#d7827e"); + public static readonly Color Magenta = Color.FromHex("#907aa9"); + public static readonly Color Pink = Color.FromHex("#d685af"); - public static Collection Neutrals => + public static Collection Neutrals => [ Fg0, // Darkest (for text in light theme) BgAlt, // Lightest (for backgrounds) ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Blue], diff --git a/ThemeProvider/Themes/Nightfox/Dayfox.cs b/ThemeProvider/Themes/Nightfox/Dayfox.cs index c31caeb..fc5e6aa 100644 --- a/ThemeProvider/Themes/Nightfox/Dayfox.cs +++ b/ThemeProvider/Themes/Nightfox/Dayfox.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Nightfox; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Dayfox color palette with official hex values. @@ -15,39 +16,39 @@ public class Dayfox : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Light background colors - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#f6f2ee"); - public static readonly PerceptualColor BgAlt = PerceptualColor.FromRgb("#efeae6"); - public static readonly PerceptualColor Bg0 = PerceptualColor.FromRgb("#f6f2ee"); - public static readonly PerceptualColor Bg1 = PerceptualColor.FromRgb("#f0ebe7"); - public static readonly PerceptualColor Bg2 = PerceptualColor.FromRgb("#e9e4e0"); - public static readonly PerceptualColor Bg3 = PerceptualColor.FromRgb("#e1dcd8"); - public static readonly PerceptualColor Sel0 = PerceptualColor.FromRgb("#e7ddd9"); - public static readonly PerceptualColor Sel1 = PerceptualColor.FromRgb("#d6ccc7"); + public static readonly Color Background = Color.FromHex("#f6f2ee"); + public static readonly Color BgAlt = Color.FromHex("#efeae6"); + public static readonly Color Bg0 = Color.FromHex("#f6f2ee"); + public static readonly Color Bg1 = Color.FromHex("#f0ebe7"); + public static readonly Color Bg2 = Color.FromHex("#e9e4e0"); + public static readonly Color Bg3 = Color.FromHex("#e1dcd8"); + public static readonly Color Sel0 = Color.FromHex("#e7ddd9"); + public static readonly Color Sel1 = Color.FromHex("#d6ccc7"); // Dark foreground colors - public static readonly PerceptualColor Fg0 = PerceptualColor.FromRgb("#1d344f"); - public static readonly PerceptualColor Fg1 = PerceptualColor.FromRgb("#24394f"); - public static readonly PerceptualColor Fg2 = PerceptualColor.FromRgb("#3c5d6f"); - public static readonly PerceptualColor Fg3 = PerceptualColor.FromRgb("#6b7d86"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#7d7a68"); + public static readonly Color Fg0 = Color.FromHex("#1d344f"); + public static readonly Color Fg1 = Color.FromHex("#24394f"); + public static readonly Color Fg2 = Color.FromHex("#3c5d6f"); + public static readonly Color Fg3 = Color.FromHex("#6b7d86"); + public static readonly Color Comment = Color.FromHex("#7d7a68"); // Accent colors for light theme - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#a5222f"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#955f20"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#986936"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#396847"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#2848a9"); - public static readonly PerceptualColor Cyan = PerceptualColor.FromRgb("#287980"); - public static readonly PerceptualColor Magenta = PerceptualColor.FromRgb("#7847bd"); - public static readonly PerceptualColor Pink = PerceptualColor.FromRgb("#b9477c"); + public static readonly Color Red = Color.FromHex("#a5222f"); + public static readonly Color Orange = Color.FromHex("#955f20"); + public static readonly Color Yellow = Color.FromHex("#986936"); + public static readonly Color Green = Color.FromHex("#396847"); + public static readonly Color Blue = Color.FromHex("#2848a9"); + public static readonly Color Cyan = Color.FromHex("#287980"); + public static readonly Color Magenta = Color.FromHex("#7847bd"); + public static readonly Color Pink = Color.FromHex("#b9477c"); - public static Collection Neutrals => + public static Collection Neutrals => [ Fg0, // Darkest (for text in light theme) BgAlt, // Lightest (for backgrounds) ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Blue], diff --git a/ThemeProvider/Themes/Nightfox/Duskfox.cs b/ThemeProvider/Themes/Nightfox/Duskfox.cs index 70bb217..367ffbe 100644 --- a/ThemeProvider/Themes/Nightfox/Duskfox.cs +++ b/ThemeProvider/Themes/Nightfox/Duskfox.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Nightfox; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Duskfox color palette with official hex values. @@ -15,39 +16,39 @@ public class Duskfox : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Background colors - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#232136"); - public static readonly PerceptualColor BgAlt = PerceptualColor.FromRgb("#1a1826"); - public static readonly PerceptualColor Bg0 = PerceptualColor.FromRgb("#232136"); - public static readonly PerceptualColor Bg1 = PerceptualColor.FromRgb("#2d2a45"); - public static readonly PerceptualColor Bg2 = PerceptualColor.FromRgb("#373354"); - public static readonly PerceptualColor Bg3 = PerceptualColor.FromRgb("#47407d"); - public static readonly PerceptualColor Sel0 = PerceptualColor.FromRgb("#2a2d3a"); - public static readonly PerceptualColor Sel1 = PerceptualColor.FromRgb("#3c3a52"); + public static readonly Color Background = Color.FromHex("#232136"); + public static readonly Color BgAlt = Color.FromHex("#1a1826"); + public static readonly Color Bg0 = Color.FromHex("#232136"); + public static readonly Color Bg1 = Color.FromHex("#2d2a45"); + public static readonly Color Bg2 = Color.FromHex("#373354"); + public static readonly Color Bg3 = Color.FromHex("#47407d"); + public static readonly Color Sel0 = Color.FromHex("#2a2d3a"); + public static readonly Color Sel1 = Color.FromHex("#3c3a52"); // Foreground colors - public static readonly PerceptualColor Fg0 = PerceptualColor.FromRgb("#e0def4"); - public static readonly PerceptualColor Fg1 = PerceptualColor.FromRgb("#cdcbe0"); - public static readonly PerceptualColor Fg2 = PerceptualColor.FromRgb("#aeafc7"); - public static readonly PerceptualColor Fg3 = PerceptualColor.FromRgb("#6e6a86"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#6e6a86"); + public static readonly Color Fg0 = Color.FromHex("#e0def4"); + public static readonly Color Fg1 = Color.FromHex("#cdcbe0"); + public static readonly Color Fg2 = Color.FromHex("#aeafc7"); + public static readonly Color Fg3 = Color.FromHex("#6e6a86"); + public static readonly Color Comment = Color.FromHex("#6e6a86"); // Muted accent colors - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#eb6f92"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#ea9a97"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#f6c177"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#a3be8c"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#9ccfd8"); - public static readonly PerceptualColor Cyan = PerceptualColor.FromRgb("#9ccfd8"); - public static readonly PerceptualColor Magenta = PerceptualColor.FromRgb("#c4a7e7"); - public static readonly PerceptualColor Pink = PerceptualColor.FromRgb("#f5c2e7"); + public static readonly Color Red = Color.FromHex("#eb6f92"); + public static readonly Color Orange = Color.FromHex("#ea9a97"); + public static readonly Color Yellow = Color.FromHex("#f6c177"); + public static readonly Color Green = Color.FromHex("#a3be8c"); + public static readonly Color Blue = Color.FromHex("#9ccfd8"); + public static readonly Color Cyan = Color.FromHex("#9ccfd8"); + public static readonly Color Magenta = Color.FromHex("#c4a7e7"); + public static readonly Color Pink = Color.FromHex("#f5c2e7"); - public static Collection Neutrals => + public static Collection Neutrals => [ Fg0, // Lightest BgAlt, // Darkest ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Blue], diff --git a/ThemeProvider/Themes/Nightfox/Nightfox.cs b/ThemeProvider/Themes/Nightfox/Nightfox.cs index f8a8f06..2c2fbd3 100644 --- a/ThemeProvider/Themes/Nightfox/Nightfox.cs +++ b/ThemeProvider/Themes/Nightfox/Nightfox.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Nightfox; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Nightfox color palette with official hex values. @@ -15,39 +16,39 @@ public class Nightfox : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Background colors - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#192330"); - public static readonly PerceptualColor BgAlt = PerceptualColor.FromRgb("#131a24"); - public static readonly PerceptualColor Bg0 = PerceptualColor.FromRgb("#192330"); - public static readonly PerceptualColor Bg1 = PerceptualColor.FromRgb("#212e3f"); - public static readonly PerceptualColor Bg2 = PerceptualColor.FromRgb("#29394f"); - public static readonly PerceptualColor Bg3 = PerceptualColor.FromRgb("#39506d"); - public static readonly PerceptualColor Sel0 = PerceptualColor.FromRgb("#2b3b51"); - public static readonly PerceptualColor Sel1 = PerceptualColor.FromRgb("#3c5372"); + public static readonly Color Background = Color.FromHex("#192330"); + public static readonly Color BgAlt = Color.FromHex("#131a24"); + public static readonly Color Bg0 = Color.FromHex("#192330"); + public static readonly Color Bg1 = Color.FromHex("#212e3f"); + public static readonly Color Bg2 = Color.FromHex("#29394f"); + public static readonly Color Bg3 = Color.FromHex("#39506d"); + public static readonly Color Sel0 = Color.FromHex("#2b3b51"); + public static readonly Color Sel1 = Color.FromHex("#3c5372"); // Foreground colors - public static readonly PerceptualColor Fg0 = PerceptualColor.FromRgb("#d6d6d7"); - public static readonly PerceptualColor Fg1 = PerceptualColor.FromRgb("#cdcecf"); - public static readonly PerceptualColor Fg2 = PerceptualColor.FromRgb("#aeafb0"); - public static readonly PerceptualColor Fg3 = PerceptualColor.FromRgb("#71839b"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#738091"); + public static readonly Color Fg0 = Color.FromHex("#d6d6d7"); + public static readonly Color Fg1 = Color.FromHex("#cdcecf"); + public static readonly Color Fg2 = Color.FromHex("#aeafb0"); + public static readonly Color Fg3 = Color.FromHex("#71839b"); + public static readonly Color Comment = Color.FromHex("#738091"); // Accent colors - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#c94f6d"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#f4a261"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#dbc074"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#81b29a"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#719cd6"); - public static readonly PerceptualColor Cyan = PerceptualColor.FromRgb("#63cdcf"); - public static readonly PerceptualColor Magenta = PerceptualColor.FromRgb("#9d79d6"); - public static readonly PerceptualColor Pink = PerceptualColor.FromRgb("#d67ad2"); + public static readonly Color Red = Color.FromHex("#c94f6d"); + public static readonly Color Orange = Color.FromHex("#f4a261"); + public static readonly Color Yellow = Color.FromHex("#dbc074"); + public static readonly Color Green = Color.FromHex("#81b29a"); + public static readonly Color Blue = Color.FromHex("#719cd6"); + public static readonly Color Cyan = Color.FromHex("#63cdcf"); + public static readonly Color Magenta = Color.FromHex("#9d79d6"); + public static readonly Color Pink = Color.FromHex("#d67ad2"); - public static Collection Neutrals => + public static Collection Neutrals => [ Fg1, // Lightest BgAlt, // Darkest ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Blue], diff --git a/ThemeProvider/Themes/Nightfox/Nordfox.cs b/ThemeProvider/Themes/Nightfox/Nordfox.cs index f8e5f43..b12f0c5 100644 --- a/ThemeProvider/Themes/Nightfox/Nordfox.cs +++ b/ThemeProvider/Themes/Nightfox/Nordfox.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Nightfox; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Nordfox color palette with official hex values. @@ -15,39 +16,39 @@ public class Nordfox : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Nord-inspired background colors - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#2e3440"); - public static readonly PerceptualColor BgAlt = PerceptualColor.FromRgb("#232831"); - public static readonly PerceptualColor Bg0 = PerceptualColor.FromRgb("#2e3440"); - public static readonly PerceptualColor Bg1 = PerceptualColor.FromRgb("#3b4252"); - public static readonly PerceptualColor Bg2 = PerceptualColor.FromRgb("#434c5e"); - public static readonly PerceptualColor Bg3 = PerceptualColor.FromRgb("#4c566a"); - public static readonly PerceptualColor Sel0 = PerceptualColor.FromRgb("#3e4a5b"); - public static readonly PerceptualColor Sel1 = PerceptualColor.FromRgb("#4f6074"); + public static readonly Color Background = Color.FromHex("#2e3440"); + public static readonly Color BgAlt = Color.FromHex("#232831"); + public static readonly Color Bg0 = Color.FromHex("#2e3440"); + public static readonly Color Bg1 = Color.FromHex("#3b4252"); + public static readonly Color Bg2 = Color.FromHex("#434c5e"); + public static readonly Color Bg3 = Color.FromHex("#4c566a"); + public static readonly Color Sel0 = Color.FromHex("#3e4a5b"); + public static readonly Color Sel1 = Color.FromHex("#4f6074"); // Nord foreground colors - public static readonly PerceptualColor Fg0 = PerceptualColor.FromRgb("#cdcecf"); - public static readonly PerceptualColor Fg1 = PerceptualColor.FromRgb("#b6b8bb"); - public static readonly PerceptualColor Fg2 = PerceptualColor.FromRgb("#81848a"); - public static readonly PerceptualColor Fg3 = PerceptualColor.FromRgb("#60728a"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#60728a"); + public static readonly Color Fg0 = Color.FromHex("#cdcecf"); + public static readonly Color Fg1 = Color.FromHex("#b6b8bb"); + public static readonly Color Fg2 = Color.FromHex("#81848a"); + public static readonly Color Fg3 = Color.FromHex("#60728a"); + public static readonly Color Comment = Color.FromHex("#60728a"); // Nord accent colors - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#bf616a"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#d08770"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#ebcb8b"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#a3be8c"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#81a1c1"); - public static readonly PerceptualColor Cyan = PerceptualColor.FromRgb("#88c0d0"); - public static readonly PerceptualColor Magenta = PerceptualColor.FromRgb("#b48ead"); - public static readonly PerceptualColor Pink = PerceptualColor.FromRgb("#b48ead"); + public static readonly Color Red = Color.FromHex("#bf616a"); + public static readonly Color Orange = Color.FromHex("#d08770"); + public static readonly Color Yellow = Color.FromHex("#ebcb8b"); + public static readonly Color Green = Color.FromHex("#a3be8c"); + public static readonly Color Blue = Color.FromHex("#81a1c1"); + public static readonly Color Cyan = Color.FromHex("#88c0d0"); + public static readonly Color Magenta = Color.FromHex("#b48ead"); + public static readonly Color Pink = Color.FromHex("#b48ead"); - public static Collection Neutrals => + public static Collection Neutrals => [ Fg0, // Lightest BgAlt, // Darkest ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Blue], diff --git a/ThemeProvider/Themes/Nightfox/Terafox.cs b/ThemeProvider/Themes/Nightfox/Terafox.cs index 091efb4..7b4a7ce 100644 --- a/ThemeProvider/Themes/Nightfox/Terafox.cs +++ b/ThemeProvider/Themes/Nightfox/Terafox.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Nightfox; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Terafox color palette with official hex values. @@ -15,39 +16,39 @@ public class Terafox : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Earth-toned background colors - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#152528"); - public static readonly PerceptualColor BgAlt = PerceptualColor.FromRgb("#0f1c1e"); - public static readonly PerceptualColor Bg0 = PerceptualColor.FromRgb("#152528"); - public static readonly PerceptualColor Bg1 = PerceptualColor.FromRgb("#1d3337"); - public static readonly PerceptualColor Bg2 = PerceptualColor.FromRgb("#254147"); - public static readonly PerceptualColor Bg3 = PerceptualColor.FromRgb("#2f4f56"); - public static readonly PerceptualColor Sel0 = PerceptualColor.FromRgb("#293e40"); - public static readonly PerceptualColor Sel1 = PerceptualColor.FromRgb("#3a5458"); + public static readonly Color Background = Color.FromHex("#152528"); + public static readonly Color BgAlt = Color.FromHex("#0f1c1e"); + public static readonly Color Bg0 = Color.FromHex("#152528"); + public static readonly Color Bg1 = Color.FromHex("#1d3337"); + public static readonly Color Bg2 = Color.FromHex("#254147"); + public static readonly Color Bg3 = Color.FromHex("#2f4f56"); + public static readonly Color Sel0 = Color.FromHex("#293e40"); + public static readonly Color Sel1 = Color.FromHex("#3a5458"); // Natural foreground colors - public static readonly PerceptualColor Fg0 = PerceptualColor.FromRgb("#fbebd3"); - public static readonly PerceptualColor Fg1 = PerceptualColor.FromRgb("#f6e2c7"); - public static readonly PerceptualColor Fg2 = PerceptualColor.FromRgb("#adbcbc"); - public static readonly PerceptualColor Fg3 = PerceptualColor.FromRgb("#7d8c8c"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#868d8d"); + public static readonly Color Fg0 = Color.FromHex("#fbebd3"); + public static readonly Color Fg1 = Color.FromHex("#f6e2c7"); + public static readonly Color Fg2 = Color.FromHex("#adbcbc"); + public static readonly Color Fg3 = Color.FromHex("#7d8c8c"); + public static readonly Color Comment = Color.FromHex("#868d8d"); // Terra accent colors - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#e85c51"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#ffa500"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#fdb292"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#7aa4a1"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#5a93aa"); - public static readonly PerceptualColor Cyan = PerceptualColor.FromRgb("#a1cdd8"); - public static readonly PerceptualColor Magenta = PerceptualColor.FromRgb("#ad5c7c"); - public static readonly PerceptualColor Pink = PerceptualColor.FromRgb("#ff8080"); + public static readonly Color Red = Color.FromHex("#e85c51"); + public static readonly Color Orange = Color.FromHex("#ffa500"); + public static readonly Color Yellow = Color.FromHex("#fdb292"); + public static readonly Color Green = Color.FromHex("#7aa4a1"); + public static readonly Color Blue = Color.FromHex("#5a93aa"); + public static readonly Color Cyan = Color.FromHex("#a1cdd8"); + public static readonly Color Magenta = Color.FromHex("#ad5c7c"); + public static readonly Color Pink = Color.FromHex("#ff8080"); - public static Collection Neutrals => + public static Collection Neutrals => [ Fg0, // Lightest BgAlt, // Darkest ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Green], diff --git a/ThemeProvider/Themes/Nord/Nord.cs b/ThemeProvider/Themes/Nord/Nord.cs index 08db1e1..94cbf7c 100644 --- a/ThemeProvider/Themes/Nord/Nord.cs +++ b/ThemeProvider/Themes/Nord/Nord.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.Nord; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the official Nord color palette with exact hex values and properties. @@ -14,36 +15,36 @@ public class Nord : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Polar Night (Dark colors) - public static readonly PerceptualColor Nord0 = PerceptualColor.FromRgb("#2e3440"); - public static readonly PerceptualColor Nord1 = PerceptualColor.FromRgb("#3b4252"); - public static readonly PerceptualColor Nord2 = PerceptualColor.FromRgb("#434c5e"); - public static readonly PerceptualColor Nord3 = PerceptualColor.FromRgb("#4c566a"); + public static readonly Color Nord0 = Color.FromHex("#2e3440"); + public static readonly Color Nord1 = Color.FromHex("#3b4252"); + public static readonly Color Nord2 = Color.FromHex("#434c5e"); + public static readonly Color Nord3 = Color.FromHex("#4c566a"); // Snow Storm (Light colors) - public static readonly PerceptualColor Nord4 = PerceptualColor.FromRgb("#d8dee9"); - public static readonly PerceptualColor Nord5 = PerceptualColor.FromRgb("#e5e9f0"); - public static readonly PerceptualColor Nord6 = PerceptualColor.FromRgb("#eceff4"); + public static readonly Color Nord4 = Color.FromHex("#d8dee9"); + public static readonly Color Nord5 = Color.FromHex("#e5e9f0"); + public static readonly Color Nord6 = Color.FromHex("#eceff4"); // Frost (Blue colors) - public static readonly PerceptualColor Nord7 = PerceptualColor.FromRgb("#8fbcbb"); - public static readonly PerceptualColor Nord8 = PerceptualColor.FromRgb("#88c0d0"); - public static readonly PerceptualColor Nord9 = PerceptualColor.FromRgb("#81a1c1"); - public static readonly PerceptualColor Nord10 = PerceptualColor.FromRgb("#5e81ac"); + public static readonly Color Nord7 = Color.FromHex("#8fbcbb"); + public static readonly Color Nord8 = Color.FromHex("#88c0d0"); + public static readonly Color Nord9 = Color.FromHex("#81a1c1"); + public static readonly Color Nord10 = Color.FromHex("#5e81ac"); // Aurora (Accent colors) - public static readonly PerceptualColor Nord11 = PerceptualColor.FromRgb("#bf616a"); // Red - public static readonly PerceptualColor Nord12 = PerceptualColor.FromRgb("#d08770"); // Orange - public static readonly PerceptualColor Nord13 = PerceptualColor.FromRgb("#ebcb8b"); // Yellow - public static readonly PerceptualColor Nord14 = PerceptualColor.FromRgb("#a3be8c"); // Green - public static readonly PerceptualColor Nord15 = PerceptualColor.FromRgb("#b48ead"); // Purple + public static readonly Color Nord11 = Color.FromHex("#bf616a"); // Red + public static readonly Color Nord12 = Color.FromHex("#d08770"); // Orange + public static readonly Color Nord13 = Color.FromHex("#ebcb8b"); // Yellow + public static readonly Color Nord14 = Color.FromHex("#a3be8c"); // Green + public static readonly Color Nord15 = Color.FromHex("#b48ead"); // Purple - public static Collection Neutrals => + public static Collection Neutrals => [ Nord6, // Lightest Nord0, // Darkest ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Nord8], // Signature cyan diff --git a/ThemeProvider/Themes/OneDark/OneDark.cs b/ThemeProvider/Themes/OneDark/OneDark.cs index 506af8c..8bda2a8 100644 --- a/ThemeProvider/Themes/OneDark/OneDark.cs +++ b/ThemeProvider/Themes/OneDark/OneDark.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.OneDark; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the One Dark color palette with official hex values. @@ -13,31 +14,31 @@ namespace ktsu.ThemeProvider.Themes.OneDark; public class OneDark : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#282c34"); - public static readonly PerceptualColor CursorLine = PerceptualColor.FromRgb("#2c323c"); - public static readonly PerceptualColor Selection = PerceptualColor.FromRgb("#3e4451"); - public static readonly PerceptualColor Foreground = PerceptualColor.FromRgb("#abb2bf"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#5c6370"); - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#e06c75"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#d19a66"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#e5c07b"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#98c379"); - public static readonly PerceptualColor Cyan = PerceptualColor.FromRgb("#56b6c2"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#61afef"); - public static readonly PerceptualColor Purple = PerceptualColor.FromRgb("#c678dd"); - public static readonly PerceptualColor White = PerceptualColor.FromRgb("#ffffff"); - public static readonly PerceptualColor Black = PerceptualColor.FromRgb("#181a1f"); - public static readonly PerceptualColor VisualGray = PerceptualColor.FromRgb("#3e4451"); - public static readonly PerceptualColor SpecialGray = PerceptualColor.FromRgb("#3b4048"); - public static readonly PerceptualColor VertSplit = PerceptualColor.FromRgb("#181a1f"); + public static readonly Color Background = Color.FromHex("#282c34"); + public static readonly Color CursorLine = Color.FromHex("#2c323c"); + public static readonly Color Selection = Color.FromHex("#3e4451"); + public static readonly Color Foreground = Color.FromHex("#abb2bf"); + public static readonly Color Comment = Color.FromHex("#5c6370"); + public static readonly Color Red = Color.FromHex("#e06c75"); + public static readonly Color Orange = Color.FromHex("#d19a66"); + public static readonly Color Yellow = Color.FromHex("#e5c07b"); + public static readonly Color Green = Color.FromHex("#98c379"); + public static readonly Color Cyan = Color.FromHex("#56b6c2"); + public static readonly Color Blue = Color.FromHex("#61afef"); + public static readonly Color Purple = Color.FromHex("#c678dd"); + public static readonly Color White = Color.FromHex("#ffffff"); + public static readonly Color Black = Color.FromHex("#181a1f"); + public static readonly Color VisualGray = Color.FromHex("#3e4451"); + public static readonly Color SpecialGray = Color.FromHex("#3b4048"); + public static readonly Color VertSplit = Color.FromHex("#181a1f"); - public static Collection Neutrals => + public static Collection Neutrals => [ White, // Lightest Black, // Darkest ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Blue], diff --git a/ThemeProvider/Themes/PaperColor/PaperColorDark.cs b/ThemeProvider/Themes/PaperColor/PaperColorDark.cs index 7bc19d0..55bd20f 100644 --- a/ThemeProvider/Themes/PaperColor/PaperColorDark.cs +++ b/ThemeProvider/Themes/PaperColor/PaperColorDark.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.PaperColor; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the PaperColor Dark color palette with official hex values. @@ -15,38 +16,38 @@ public class PaperColorDark : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Dark background colors - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#1c1c1c"); - public static readonly PerceptualColor BgAlt = PerceptualColor.FromRgb("#262626"); - public static readonly PerceptualColor Bg0 = PerceptualColor.FromRgb("#1c1c1c"); - public static readonly PerceptualColor Bg1 = PerceptualColor.FromRgb("#262626"); - public static readonly PerceptualColor Bg2 = PerceptualColor.FromRgb("#303030"); - public static readonly PerceptualColor Selection = PerceptualColor.FromRgb("#4e4e4e"); - public static readonly PerceptualColor LineNumbers = PerceptualColor.FromRgb("#585858"); + public static readonly Color Background = Color.FromHex("#1c1c1c"); + public static readonly Color BgAlt = Color.FromHex("#262626"); + public static readonly Color Bg0 = Color.FromHex("#1c1c1c"); + public static readonly Color Bg1 = Color.FromHex("#262626"); + public static readonly Color Bg2 = Color.FromHex("#303030"); + public static readonly Color Selection = Color.FromHex("#4e4e4e"); + public static readonly Color LineNumbers = Color.FromHex("#585858"); // Light foreground colors for dark theme - public static readonly PerceptualColor Fg0 = PerceptualColor.FromRgb("#d0d0d0"); - public static readonly PerceptualColor Fg1 = PerceptualColor.FromRgb("#bcbcbc"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#808080"); + public static readonly Color Fg0 = Color.FromHex("#d0d0d0"); + public static readonly Color Fg1 = Color.FromHex("#bcbcbc"); + public static readonly Color Comment = Color.FromHex("#808080"); // Material Design inspired dark colors - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#af005f"); - public static readonly PerceptualColor Pink = PerceptualColor.FromRgb("#d70087"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#ff8700"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#ffaf00"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#5faf00"); - public static readonly PerceptualColor Teal = PerceptualColor.FromRgb("#00afaf"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#0087d7"); - public static readonly PerceptualColor Purple = PerceptualColor.FromRgb("#af87d7"); - public static readonly PerceptualColor Brown = PerceptualColor.FromRgb("#8f8f00"); - public static readonly PerceptualColor Gray = PerceptualColor.FromRgb("#8a8a8a"); + public static readonly Color Red = Color.FromHex("#af005f"); + public static readonly Color Pink = Color.FromHex("#d70087"); + public static readonly Color Orange = Color.FromHex("#ff8700"); + public static readonly Color Yellow = Color.FromHex("#ffaf00"); + public static readonly Color Green = Color.FromHex("#5faf00"); + public static readonly Color Teal = Color.FromHex("#00afaf"); + public static readonly Color Blue = Color.FromHex("#0087d7"); + public static readonly Color Purple = Color.FromHex("#af87d7"); + public static readonly Color Brown = Color.FromHex("#8f8f00"); + public static readonly Color Gray = Color.FromHex("#8a8a8a"); - public static Collection Neutrals => + public static Collection Neutrals => [ Fg0, // Lightest Background, // Darkest ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Blue], diff --git a/ThemeProvider/Themes/PaperColor/PaperColorLight.cs b/ThemeProvider/Themes/PaperColor/PaperColorLight.cs index 749e18e..2c9fd8a 100644 --- a/ThemeProvider/Themes/PaperColor/PaperColorLight.cs +++ b/ThemeProvider/Themes/PaperColor/PaperColorLight.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.PaperColor; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the PaperColor Light color palette with official hex values. @@ -15,38 +16,38 @@ public class PaperColorLight : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Light background colors - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#eeeeee"); - public static readonly PerceptualColor BgAlt = PerceptualColor.FromRgb("#ffffff"); - public static readonly PerceptualColor Bg0 = PerceptualColor.FromRgb("#eeeeee"); - public static readonly PerceptualColor Bg1 = PerceptualColor.FromRgb("#e4e4e4"); - public static readonly PerceptualColor Bg2 = PerceptualColor.FromRgb("#d0d0d0"); - public static readonly PerceptualColor Selection = PerceptualColor.FromRgb("#e4e4e4"); - public static readonly PerceptualColor LineNumbers = PerceptualColor.FromRgb("#878787"); + public static readonly Color Background = Color.FromHex("#eeeeee"); + public static readonly Color BgAlt = Color.FromHex("#ffffff"); + public static readonly Color Bg0 = Color.FromHex("#eeeeee"); + public static readonly Color Bg1 = Color.FromHex("#e4e4e4"); + public static readonly Color Bg2 = Color.FromHex("#d0d0d0"); + public static readonly Color Selection = Color.FromHex("#e4e4e4"); + public static readonly Color LineNumbers = Color.FromHex("#878787"); // Dark foreground colors - public static readonly PerceptualColor Fg0 = PerceptualColor.FromRgb("#444444"); - public static readonly PerceptualColor Fg1 = PerceptualColor.FromRgb("#878787"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#8e908c"); + public static readonly Color Fg0 = Color.FromHex("#444444"); + public static readonly Color Fg1 = Color.FromHex("#878787"); + public static readonly Color Comment = Color.FromHex("#8e908c"); // Material Design inspired colors - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#af0000"); - public static readonly PerceptualColor Pink = PerceptualColor.FromRgb("#d70087"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#d75f00"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#d78700"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#008700"); - public static readonly PerceptualColor Teal = PerceptualColor.FromRgb("#00af87"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#0087af"); - public static readonly PerceptualColor Purple = PerceptualColor.FromRgb("#8700af"); - public static readonly PerceptualColor Brown = PerceptualColor.FromRgb("#5f8700"); - public static readonly PerceptualColor Gray = PerceptualColor.FromRgb("#5f5f5f"); + public static readonly Color Red = Color.FromHex("#af0000"); + public static readonly Color Pink = Color.FromHex("#d70087"); + public static readonly Color Orange = Color.FromHex("#d75f00"); + public static readonly Color Yellow = Color.FromHex("#d78700"); + public static readonly Color Green = Color.FromHex("#008700"); + public static readonly Color Teal = Color.FromHex("#00af87"); + public static readonly Color Blue = Color.FromHex("#0087af"); + public static readonly Color Purple = Color.FromHex("#8700af"); + public static readonly Color Brown = Color.FromHex("#5f8700"); + public static readonly Color Gray = Color.FromHex("#5f5f5f"); - public static Collection Neutrals => + public static Collection Neutrals => [ Fg0, // Darkest (for text in light theme) BgAlt, // Lightest (for backgrounds) ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Blue], diff --git a/ThemeProvider/Themes/TokyoNight/TokyoNight.cs b/ThemeProvider/Themes/TokyoNight/TokyoNight.cs index 348e9e0..9a87630 100644 --- a/ThemeProvider/Themes/TokyoNight/TokyoNight.cs +++ b/ThemeProvider/Themes/TokyoNight/TokyoNight.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.TokyoNight; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Tokyo Night color palette with official hex values. @@ -13,42 +14,42 @@ namespace ktsu.ThemeProvider.Themes.TokyoNight; public class TokyoNight : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#1a1b26"); - public static readonly PerceptualColor BackgroundHighlight = PerceptualColor.FromRgb("#24283b"); - public static readonly PerceptualColor Terminal = PerceptualColor.FromRgb("#1d202f"); - public static readonly PerceptualColor Foreground = PerceptualColor.FromRgb("#c0caf5"); - public static readonly PerceptualColor ForegroundDark = PerceptualColor.FromRgb("#a9b1d6"); - public static readonly PerceptualColor ForegroundGutter = PerceptualColor.FromRgb("#3b4261"); - public static readonly PerceptualColor Dark3 = PerceptualColor.FromRgb("#545c7e"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#565f89"); - public static readonly PerceptualColor Dark5 = PerceptualColor.FromRgb("#737aa2"); - public static readonly PerceptualColor Blue0 = PerceptualColor.FromRgb("#3d59a1"); - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#7aa2f7"); - public static readonly PerceptualColor Cyan = PerceptualColor.FromRgb("#7dcfff"); - public static readonly PerceptualColor Blue1 = PerceptualColor.FromRgb("#2ac3de"); - public static readonly PerceptualColor Blue2 = PerceptualColor.FromRgb("#0db9d7"); - public static readonly PerceptualColor Blue5 = PerceptualColor.FromRgb("#89ddff"); - public static readonly PerceptualColor Blue6 = PerceptualColor.FromRgb("#b4f9f8"); - public static readonly PerceptualColor Blue7 = PerceptualColor.FromRgb("#394b70"); - public static readonly PerceptualColor Magenta = PerceptualColor.FromRgb("#bb9af7"); - public static readonly PerceptualColor Magenta2 = PerceptualColor.FromRgb("#ff007c"); - public static readonly PerceptualColor Purple = PerceptualColor.FromRgb("#9d7cd8"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#ff9e64"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#e0af68"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#9ece6a"); - public static readonly PerceptualColor Green1 = PerceptualColor.FromRgb("#73daca"); - public static readonly PerceptualColor Green2 = PerceptualColor.FromRgb("#41a6b5"); - public static readonly PerceptualColor Teal = PerceptualColor.FromRgb("#1abc9c"); - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#f7768e"); - public static readonly PerceptualColor Red1 = PerceptualColor.FromRgb("#db4b4b"); + public static readonly Color Background = Color.FromHex("#1a1b26"); + public static readonly Color BackgroundHighlight = Color.FromHex("#24283b"); + public static readonly Color Terminal = Color.FromHex("#1d202f"); + public static readonly Color Foreground = Color.FromHex("#c0caf5"); + public static readonly Color ForegroundDark = Color.FromHex("#a9b1d6"); + public static readonly Color ForegroundGutter = Color.FromHex("#3b4261"); + public static readonly Color Dark3 = Color.FromHex("#545c7e"); + public static readonly Color Comment = Color.FromHex("#565f89"); + public static readonly Color Dark5 = Color.FromHex("#737aa2"); + public static readonly Color Blue0 = Color.FromHex("#3d59a1"); + public static readonly Color Blue = Color.FromHex("#7aa2f7"); + public static readonly Color Cyan = Color.FromHex("#7dcfff"); + public static readonly Color Blue1 = Color.FromHex("#2ac3de"); + public static readonly Color Blue2 = Color.FromHex("#0db9d7"); + public static readonly Color Blue5 = Color.FromHex("#89ddff"); + public static readonly Color Blue6 = Color.FromHex("#b4f9f8"); + public static readonly Color Blue7 = Color.FromHex("#394b70"); + public static readonly Color Magenta = Color.FromHex("#bb9af7"); + public static readonly Color Magenta2 = Color.FromHex("#ff007c"); + public static readonly Color Purple = Color.FromHex("#9d7cd8"); + public static readonly Color Orange = Color.FromHex("#ff9e64"); + public static readonly Color Yellow = Color.FromHex("#e0af68"); + public static readonly Color Green = Color.FromHex("#9ece6a"); + public static readonly Color Green1 = Color.FromHex("#73daca"); + public static readonly Color Green2 = Color.FromHex("#41a6b5"); + public static readonly Color Teal = Color.FromHex("#1abc9c"); + public static readonly Color Red = Color.FromHex("#f7768e"); + public static readonly Color Red1 = Color.FromHex("#db4b4b"); - public static Collection Neutrals => + public static Collection Neutrals => [ Foreground, // Lightest Background, // Darkest ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Blue], diff --git a/ThemeProvider/Themes/TokyoNight/TokyoNightDay.cs b/ThemeProvider/Themes/TokyoNight/TokyoNightDay.cs index 20af0c1..42cc2c1 100644 --- a/ThemeProvider/Themes/TokyoNight/TokyoNightDay.cs +++ b/ThemeProvider/Themes/TokyoNight/TokyoNightDay.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.TokyoNight; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Tokyo Night Day color palette with official hex values. @@ -15,38 +16,38 @@ public class TokyoNightDay : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Light background colors - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#e1e2e7"); - public static readonly PerceptualColor BgAlt = PerceptualColor.FromRgb("#e9e9ed"); - public static readonly PerceptualColor Bg0 = PerceptualColor.FromRgb("#e1e2e7"); - public static readonly PerceptualColor Bg1 = PerceptualColor.FromRgb("#e9e9ec"); - public static readonly PerceptualColor Bg2 = PerceptualColor.FromRgb("#c4c8da"); - public static readonly PerceptualColor Sel0 = PerceptualColor.FromRgb("#b7c5d3"); - public static readonly PerceptualColor Sel1 = PerceptualColor.FromRgb("#a8b4c5"); + public static readonly Color Background = Color.FromHex("#e1e2e7"); + public static readonly Color BgAlt = Color.FromHex("#e9e9ed"); + public static readonly Color Bg0 = Color.FromHex("#e1e2e7"); + public static readonly Color Bg1 = Color.FromHex("#e9e9ec"); + public static readonly Color Bg2 = Color.FromHex("#c4c8da"); + public static readonly Color Sel0 = Color.FromHex("#b7c5d3"); + public static readonly Color Sel1 = Color.FromHex("#a8b4c5"); // Dark foreground colors for light theme - public static readonly PerceptualColor Fg0 = PerceptualColor.FromRgb("#3760bf"); - public static readonly PerceptualColor Fg1 = PerceptualColor.FromRgb("#4c505e"); - public static readonly PerceptualColor Fg2 = PerceptualColor.FromRgb("#5a5f6d"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#9699a3"); + public static readonly Color Fg0 = Color.FromHex("#3760bf"); + public static readonly Color Fg1 = Color.FromHex("#4c505e"); + public static readonly Color Fg2 = Color.FromHex("#5a5f6d"); + public static readonly Color Comment = Color.FromHex("#9699a3"); // Tokyo Night Day color palette - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#2e7de9"); - public static readonly PerceptualColor Purple = PerceptualColor.FromRgb("#9854f1"); - public static readonly PerceptualColor Cyan = PerceptualColor.FromRgb("#007197"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#587539"); - public static readonly PerceptualColor Teal = PerceptualColor.FromRgb("#33635c"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#8c6c3e"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#b15c00"); - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#f52a65"); - public static readonly PerceptualColor Magenta = PerceptualColor.FromRgb("#9854f1"); + public static readonly Color Blue = Color.FromHex("#2e7de9"); + public static readonly Color Purple = Color.FromHex("#9854f1"); + public static readonly Color Cyan = Color.FromHex("#007197"); + public static readonly Color Green = Color.FromHex("#587539"); + public static readonly Color Teal = Color.FromHex("#33635c"); + public static readonly Color Yellow = Color.FromHex("#8c6c3e"); + public static readonly Color Orange = Color.FromHex("#b15c00"); + public static readonly Color Red = Color.FromHex("#f52a65"); + public static readonly Color Magenta = Color.FromHex("#9854f1"); - public static Collection Neutrals => + public static Collection Neutrals => [ Fg0, // Darkest (for text in light theme) BgAlt, // Lightest (for backgrounds) ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Blue], diff --git a/ThemeProvider/Themes/TokyoNight/TokyoNightStorm.cs b/ThemeProvider/Themes/TokyoNight/TokyoNightStorm.cs index a913cd2..d1e7645 100644 --- a/ThemeProvider/Themes/TokyoNight/TokyoNightStorm.cs +++ b/ThemeProvider/Themes/TokyoNight/TokyoNightStorm.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.TokyoNight; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the Tokyo Night Storm color palette with official hex values. @@ -15,38 +16,38 @@ public class TokyoNightStorm : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member // Background colors (Storm variant uses #24283b instead of #1a1b26) - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#24283b"); - public static readonly PerceptualColor BgAlt = PerceptualColor.FromRgb("#1f2335"); - public static readonly PerceptualColor Bg0 = PerceptualColor.FromRgb("#24283b"); - public static readonly PerceptualColor Bg1 = PerceptualColor.FromRgb("#2d3348"); - public static readonly PerceptualColor Bg2 = PerceptualColor.FromRgb("#414868"); - public static readonly PerceptualColor Sel0 = PerceptualColor.FromRgb("#2d3f76"); - public static readonly PerceptualColor Sel1 = PerceptualColor.FromRgb("#364a82"); + public static readonly Color Background = Color.FromHex("#24283b"); + public static readonly Color BgAlt = Color.FromHex("#1f2335"); + public static readonly Color Bg0 = Color.FromHex("#24283b"); + public static readonly Color Bg1 = Color.FromHex("#2d3348"); + public static readonly Color Bg2 = Color.FromHex("#414868"); + public static readonly Color Sel0 = Color.FromHex("#2d3f76"); + public static readonly Color Sel1 = Color.FromHex("#364a82"); // Foreground colors - public static readonly PerceptualColor Fg0 = PerceptualColor.FromRgb("#c0caf5"); - public static readonly PerceptualColor Fg1 = PerceptualColor.FromRgb("#a9b1d6"); - public static readonly PerceptualColor Fg2 = PerceptualColor.FromRgb("#9aa5ce"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#565f89"); + public static readonly Color Fg0 = Color.FromHex("#c0caf5"); + public static readonly Color Fg1 = Color.FromHex("#a9b1d6"); + public static readonly Color Fg2 = Color.FromHex("#9aa5ce"); + public static readonly Color Comment = Color.FromHex("#565f89"); // Tokyo Night core colors - public static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#7aa2f7"); - public static readonly PerceptualColor Purple = PerceptualColor.FromRgb("#bb9af7"); - public static readonly PerceptualColor Cyan = PerceptualColor.FromRgb("#7dcfff"); - public static readonly PerceptualColor Green = PerceptualColor.FromRgb("#9ece6a"); - public static readonly PerceptualColor Teal = PerceptualColor.FromRgb("#1abc9c"); - public static readonly PerceptualColor Yellow = PerceptualColor.FromRgb("#e0af68"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#ff9e64"); - public static readonly PerceptualColor Red = PerceptualColor.FromRgb("#f7768e"); - public static readonly PerceptualColor Magenta = PerceptualColor.FromRgb("#bb9af7"); + public static readonly Color Blue = Color.FromHex("#7aa2f7"); + public static readonly Color Purple = Color.FromHex("#bb9af7"); + public static readonly Color Cyan = Color.FromHex("#7dcfff"); + public static readonly Color Green = Color.FromHex("#9ece6a"); + public static readonly Color Teal = Color.FromHex("#1abc9c"); + public static readonly Color Yellow = Color.FromHex("#e0af68"); + public static readonly Color Orange = Color.FromHex("#ff9e64"); + public static readonly Color Red = Color.FromHex("#f7768e"); + public static readonly Color Magenta = Color.FromHex("#bb9af7"); - public static Collection Neutrals => + public static Collection Neutrals => [ Fg0, // Lightest BgAlt, // Darkest ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Blue], diff --git a/ThemeProvider/Themes/VSCode/VSCodeDark.cs b/ThemeProvider/Themes/VSCode/VSCodeDark.cs index a0bbb30..46fbfcf 100644 --- a/ThemeProvider/Themes/VSCode/VSCodeDark.cs +++ b/ThemeProvider/Themes/VSCode/VSCodeDark.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.VSCode; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the VSCode Dark+ color palette with official hex values. @@ -13,31 +14,31 @@ namespace ktsu.ThemeProvider.Themes.VSCode; public class VSCodeDark : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#1e1e1e"); - public static readonly PerceptualColor SidebarBackground = PerceptualColor.FromRgb("#252526"); - public static readonly PerceptualColor Selection = PerceptualColor.FromRgb("#264f78"); - public static readonly PerceptualColor LineHighlight = PerceptualColor.FromRgb("#2a2d2e"); - public static readonly PerceptualColor Foreground = PerceptualColor.FromRgb("#d4d4d4"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#6a9955"); - public static readonly PerceptualColor StringColor = PerceptualColor.FromRgb("#ce9178"); - public static readonly PerceptualColor Number = PerceptualColor.FromRgb("#b5cea8"); - public static readonly PerceptualColor Keyword = PerceptualColor.FromRgb("#569cd6"); - public static readonly PerceptualColor Function = PerceptualColor.FromRgb("#dcdcaa"); - public static readonly PerceptualColor Variable = PerceptualColor.FromRgb("#9cdcfe"); - public static readonly PerceptualColor Type = PerceptualColor.FromRgb("#4ec9b0"); - public static readonly PerceptualColor Error = PerceptualColor.FromRgb("#f44747"); - public static readonly PerceptualColor Warning = PerceptualColor.FromRgb("#ffcc02"); - public static readonly PerceptualColor Info = PerceptualColor.FromRgb("#75beff"); - public static readonly PerceptualColor Purple = PerceptualColor.FromRgb("#c586c0"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#d7ba7d"); + public static readonly Color Background = Color.FromHex("#1e1e1e"); + public static readonly Color SidebarBackground = Color.FromHex("#252526"); + public static readonly Color Selection = Color.FromHex("#264f78"); + public static readonly Color LineHighlight = Color.FromHex("#2a2d2e"); + public static readonly Color Foreground = Color.FromHex("#d4d4d4"); + public static readonly Color Comment = Color.FromHex("#6a9955"); + public static readonly Color StringColor = Color.FromHex("#ce9178"); + public static readonly Color Number = Color.FromHex("#b5cea8"); + public static readonly Color Keyword = Color.FromHex("#569cd6"); + public static readonly Color Function = Color.FromHex("#dcdcaa"); + public static readonly Color Variable = Color.FromHex("#9cdcfe"); + public static readonly Color Type = Color.FromHex("#4ec9b0"); + public static readonly Color Error = Color.FromHex("#f44747"); + public static readonly Color Warning = Color.FromHex("#ffcc02"); + public static readonly Color Info = Color.FromHex("#75beff"); + public static readonly Color Purple = Color.FromHex("#c586c0"); + public static readonly Color Orange = Color.FromHex("#d7ba7d"); - public static Collection Neutrals => + public static Collection Neutrals => [ Foreground, // Lightest Background, // Darkest ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Keyword], diff --git a/ThemeProvider/Themes/VSCode/VSCodeLight.cs b/ThemeProvider/Themes/VSCode/VSCodeLight.cs index 89c19a2..2906c7a 100644 --- a/ThemeProvider/Themes/VSCode/VSCodeLight.cs +++ b/ThemeProvider/Themes/VSCode/VSCodeLight.cs @@ -5,6 +5,7 @@ namespace ktsu.ThemeProvider.Themes.VSCode; using System.Collections.ObjectModel; +using ktsu.Semantics.Color; /// /// Provides the VSCode Light+ color palette with official hex values. @@ -13,31 +14,31 @@ namespace ktsu.ThemeProvider.Themes.VSCode; public class VSCodeLight : ISemanticTheme { #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member - public static readonly PerceptualColor Background = PerceptualColor.FromRgb("#ffffff"); - public static readonly PerceptualColor SidebarBackground = PerceptualColor.FromRgb("#f3f3f3"); - public static readonly PerceptualColor Selection = PerceptualColor.FromRgb("#add6ff"); - public static readonly PerceptualColor LineHighlight = PerceptualColor.FromRgb("#f0f0f0"); - public static readonly PerceptualColor Foreground = PerceptualColor.FromRgb("#000000"); - public static readonly PerceptualColor Comment = PerceptualColor.FromRgb("#008000"); - public static readonly PerceptualColor StringColor = PerceptualColor.FromRgb("#a31515"); - public static readonly PerceptualColor Number = PerceptualColor.FromRgb("#098658"); - public static readonly PerceptualColor Keyword = PerceptualColor.FromRgb("#0000ff"); - public static readonly PerceptualColor Function = PerceptualColor.FromRgb("#795e26"); - public static readonly PerceptualColor Variable = PerceptualColor.FromRgb("#001080"); - public static readonly PerceptualColor Type = PerceptualColor.FromRgb("#267f99"); - public static readonly PerceptualColor Error = PerceptualColor.FromRgb("#cd3131"); - public static readonly PerceptualColor Warning = PerceptualColor.FromRgb("#bf8803"); - public static readonly PerceptualColor Info = PerceptualColor.FromRgb("#316bcd"); - public static readonly PerceptualColor Purple = PerceptualColor.FromRgb("#af00db"); - public static readonly PerceptualColor Orange = PerceptualColor.FromRgb("#e07041"); + public static readonly Color Background = Color.FromHex("#ffffff"); + public static readonly Color SidebarBackground = Color.FromHex("#f3f3f3"); + public static readonly Color Selection = Color.FromHex("#add6ff"); + public static readonly Color LineHighlight = Color.FromHex("#f0f0f0"); + public static readonly Color Foreground = Color.FromHex("#000000"); + public static readonly Color Comment = Color.FromHex("#008000"); + public static readonly Color StringColor = Color.FromHex("#a31515"); + public static readonly Color Number = Color.FromHex("#098658"); + public static readonly Color Keyword = Color.FromHex("#0000ff"); + public static readonly Color Function = Color.FromHex("#795e26"); + public static readonly Color Variable = Color.FromHex("#001080"); + public static readonly Color Type = Color.FromHex("#267f99"); + public static readonly Color Error = Color.FromHex("#cd3131"); + public static readonly Color Warning = Color.FromHex("#bf8803"); + public static readonly Color Info = Color.FromHex("#316bcd"); + public static readonly Color Purple = Color.FromHex("#af00db"); + public static readonly Color Orange = Color.FromHex("#e07041"); - public static Collection Neutrals => + public static Collection Neutrals => [ Foreground, // Darkest (for text in light theme) Background, // Lightest (for backgrounds in light theme) ]; - public Dictionary> SemanticMapping => new() + public Dictionary> SemanticMapping => new() { [SemanticMeaning.Neutral] = Neutrals, [SemanticMeaning.Primary] = [Keyword], From 1dcbce026bda446de86d5704a195eb9bbb8385ce Mon Sep 17 00:00:00 2001 From: Matt Edmondson Date: Tue, 30 Jun 2026 16:17:18 +1000 Subject: [PATCH 2/5] feat(color)!: migrate ThemeProvider.ImGui palette mapper to Color --- ThemeProvider.ImGui/ImGuiPaletteMapper.cs | 8 ++++---- ThemeProvider.ImGui/ThemeProvider.ImGui.csproj | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ThemeProvider.ImGui/ImGuiPaletteMapper.cs b/ThemeProvider.ImGui/ImGuiPaletteMapper.cs index e4ff223..6ebf714 100644 --- a/ThemeProvider.ImGui/ImGuiPaletteMapper.cs +++ b/ThemeProvider.ImGui/ImGuiPaletteMapper.cs @@ -7,6 +7,7 @@ namespace ktsu.ThemeProvider.ImGui; using System.Collections.Generic; using System.Numerics; using Hexa.NET.ImGui; +using ktsu.Semantics.Color; using ktsu.ThemeProvider; /// @@ -28,7 +29,7 @@ public IReadOnlyDictionary MapTheme(ISemanticTheme theme) Ensure.NotNull(theme); // Get the complete palette for the theme (more efficient than individual requests) - IReadOnlyDictionary completePalette = SemanticColorMapper.MakeCompletePalette(theme); + IReadOnlyDictionary completePalette = SemanticColorMapper.MakeCompletePalette(theme); // Define the mapping from ImGui colors to semantic color requests Dictionary colorMapping = new() @@ -105,10 +106,9 @@ public IReadOnlyDictionary MapTheme(ISemanticTheme theme) { ImGuiCol imguiCol = kv.Key; SemanticColorRequest request = kv.Value; - if (completePalette.TryGetValue(request, out PerceptualColor color)) + if (completePalette.TryGetValue(request, out Color color)) { - RgbColor rgb = color.RgbValue; - result[imguiCol] = new Vector4(rgb.R, rgb.G, rgb.B, 1.0f); + result[imguiCol] = color.ToSrgbVector4(); } } diff --git a/ThemeProvider.ImGui/ThemeProvider.ImGui.csproj b/ThemeProvider.ImGui/ThemeProvider.ImGui.csproj index 95047f2..c9d0f20 100644 --- a/ThemeProvider.ImGui/ThemeProvider.ImGui.csproj +++ b/ThemeProvider.ImGui/ThemeProvider.ImGui.csproj @@ -8,8 +8,9 @@ + - + From 69fdecbd58cb74fd6e29f2d6503699ade896c38d Mon Sep 17 00:00:00 2001 From: Matt Edmondson Date: Tue, 30 Jun 2026 16:38:08 +1000 Subject: [PATCH 3/5] feat(color)!: migrate ThemeProviderDemo to Color --- ThemeProviderDemo/Program.cs | 196 ++++++++++----------- ThemeProviderDemo/ThemeProviderDemo.csproj | 1 + 2 files changed, 91 insertions(+), 106 deletions(-) diff --git a/ThemeProviderDemo/Program.cs b/ThemeProviderDemo/Program.cs index 6d150e6..fdc96a0 100644 --- a/ThemeProviderDemo/Program.cs +++ b/ThemeProviderDemo/Program.cs @@ -4,11 +4,12 @@ namespace ktsu.ThemeProviderDemo; -using System.Collections.ObjectModel; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Numerics; using Hexa.NET.ImGui; using ktsu.ImGui.App; +using ktsu.Semantics.Color; using ktsu.ThemeProvider; using ktsu.ThemeProvider.ImGui; using static ktsu.ThemeProvider.ThemeRegistry; @@ -56,10 +57,10 @@ private static void OnStart() // Initialize with theme's primary color SemanticColorRequest primaryRequest = new(SemanticMeaning.Primary, Priority.MediumHigh); - PerceptualColor primaryColor = GetColorFromTheme(primaryRequest); - if (primaryColor != default) + if (GetColorFromTheme(primaryRequest) is { } primaryColor) { - selectedColorVec = new Vector3(primaryColor.RgbValue.R, primaryColor.RgbValue.G, primaryColor.RgbValue.B); + Srgb pcSrgb = primaryColor.ToSrgb(); + selectedColorVec = new Vector3((float)pcSrgb.R, (float)pcSrgb.G, (float)pcSrgb.B); } } @@ -220,7 +221,7 @@ private static void RenderThemeOverview() ImGui.Separator(); // Show complete palette info - IReadOnlyDictionary completePalette = SemanticColorMapper.MakeCompletePalette(theme); + IReadOnlyDictionary completePalette = SemanticColorMapper.MakeCompletePalette(theme); ImGui.TextUnformatted($"Complete Palette: {completePalette.Count} colors generated"); ImGui.TextUnformatted($"Available Semantic Meanings: {theme.SemanticMapping.Count}"); @@ -256,11 +257,11 @@ private static void RenderThemeOverview() ImGui.TableSetColumnIndex(i + 1); Priority priority = sortedPriorities[i]; SemanticColorRequest request = new(meaning, priority); - PerceptualColor color = GetColorFromTheme(request); - if (color != default) + if (GetColorFromTheme(request) is { } color) { - Vector4 colorVec = new(color.RgbValue.R, color.RgbValue.G, color.RgbValue.B, 1.0f); + Srgb colorSrgb = color.ToSrgb(); + Vector4 colorVec = new((float)colorSrgb.R, (float)colorSrgb.G, (float)colorSrgb.B, 1.0f); Vector2 swatchSize = new(90, 30); if (ImGui.ColorButton($"##{meaning}_{priority}", colorVec, ImGuiColorEditFlags.NoTooltip, swatchSize)) @@ -270,7 +271,7 @@ private static void RenderThemeOverview() if (ImGui.IsItemHovered()) { - ImGui.SetTooltip($"{meaning} - {priority}\nLightness: {color.Lightness:F2}\nRGB: {color.RgbValue.R:F3}, {color.RgbValue.G:F3}, {color.RgbValue.B:F3}\nHex: {color.RgbValue.ToHex()}"); + ImGui.SetTooltip($"{meaning} - {priority}\nLightness: {color.ToOklab().L:F2}\nRGB: {colorSrgb.R:F3}, {colorSrgb.G:F3}, {colorSrgb.B:F3}\nHex: {color.ToHex()}"); } } } @@ -308,15 +309,15 @@ private static void RenderSemanticColors() ImGui.TextUnformatted($"Current Request: {currentRequest}"); // Get the color using the semantic color mapper - PerceptualColor mappedColor = GetColorFromTheme(currentRequest); - - if (mappedColor != default) + if (GetColorFromTheme(currentRequest) is { } mappedColor) { // Color preview float previewSize = 150f; ImDrawListPtr drawList = ImGui.GetWindowDrawList(); Vector2 pos = ImGui.GetCursorScreenPos(); - Vector4 rgbColor = ToImVec4(mappedColor.RgbValue); + Srgb mappedSrgb = mappedColor.ToSrgb(); + Oklch mappedOklch = mappedColor.ToOklch(); + Vector4 rgbColor = ToImVec4(mappedColor); drawList.AddRectFilled(pos, new Vector2(pos.X + previewSize, pos.Y + previewSize), ImGui.ColorConvertFloat4ToU32(rgbColor)); drawList.AddRect(pos, new Vector2(pos.X + previewSize, pos.Y + previewSize), @@ -327,11 +328,11 @@ private static void RenderSemanticColors() ImGui.BeginGroup(); ImGui.TextUnformatted("Mapped Color Properties:"); - ImGui.TextUnformatted($"Hex: {mappedColor.RgbValue.ToHex()}"); - ImGui.TextUnformatted($"RGB: ({mappedColor.RgbValue.R:F3}, {mappedColor.RgbValue.G:F3}, {mappedColor.RgbValue.B:F3})"); - ImGui.TextUnformatted($"Lightness: {mappedColor.Lightness:F2}"); - ImGui.TextUnformatted($"Chroma: {mappedColor.Chroma:F2}"); - ImGui.TextUnformatted($"Hue: {mappedColor.Hue:F2}"); + ImGui.TextUnformatted($"Hex: {mappedColor.ToHex()}"); + ImGui.TextUnformatted($"RGB: ({mappedSrgb.R:F3}, {mappedSrgb.G:F3}, {mappedSrgb.B:F3})"); + ImGui.TextUnformatted($"Lightness: {mappedColor.ToOklab().L:F2}"); + ImGui.TextUnformatted($"Chroma: {mappedOklch.C:F2}"); + ImGui.TextUnformatted($"Hue: {mappedOklch.H:F2}"); ImGui.EndGroup(); } @@ -351,15 +352,15 @@ private static void RenderSemanticColors() SemanticMeaning currentMeaning = (SemanticMeaning)selectedSemanticMeaning; // Get original colors available for this semantic - if (theme.SemanticMapping.TryGetValue(currentMeaning, out Collection? availableColors)) + if (theme.SemanticMapping.TryGetValue(currentMeaning, out Collection? availableColors)) { ImGui.TextUnformatted($"Original colors for {currentMeaning}: {availableColors.Count}"); // Show original color lightness values ImGui.Indent(); - foreach (PerceptualColor originalColor in availableColors) + foreach (Color originalColor in availableColors) { - ImGui.TextColored(ToImVec4(originalColor.RgbValue), $"• {originalColor.RgbValue.ToHex()} (L: {originalColor.Lightness:F2})"); + ImGui.TextColored(ToImVec4(originalColor), $"• {originalColor.ToHex()} (L: {originalColor.ToOklab().L:F2})"); } ImGui.Unindent(); @@ -369,7 +370,7 @@ private static void RenderSemanticColors() ImGui.TextUnformatted("Priority → Mapped Lightness (Interpolation/Extrapolation):"); // Get complete mapping for this semantic meaning (more efficient than individual requests) - IReadOnlyDictionary completeMapping = GetCompleteMappingForSemantic(); + IReadOnlyDictionary completeMapping = GetCompleteMappingForSemantic(); if (ImGui.BeginTable("PriorityMappingTable", 5, ImGuiTableFlags.Borders | ImGuiTableFlags.RowBg)) { @@ -383,7 +384,7 @@ private static void RenderSemanticColors() foreach (Priority priority in allPriorities) { SemanticColorRequest request = new(currentMeaning, priority); - if (completeMapping.TryGetValue(request, out PerceptualColor color)) + if (completeMapping.TryGetValue(request, out Color color)) { ImGui.TableNextRow(); @@ -396,7 +397,7 @@ private static void RenderSemanticColors() ImGui.TextUnformatted($"{targetLightness:F2}"); ImGui.TableSetColumnIndex(2); - ImGui.TextUnformatted($"{color.Lightness:F2}"); + ImGui.TextUnformatted($"{color.ToOklab().L:F2}"); ImGui.TableSetColumnIndex(3); // Small color swatch @@ -404,7 +405,7 @@ private static void RenderSemanticColors() Vector2 tablePos = ImGui.GetCursorScreenPos(); float swatchSize = 15f; tableDrawList.AddRectFilled(tablePos, new Vector2(tablePos.X + swatchSize, tablePos.Y + swatchSize), - ImGui.ColorConvertFloat4ToU32(ToImVec4(color.RgbValue))); + ImGui.ColorConvertFloat4ToU32(ToImVec4(color))); ImGui.Dummy(new Vector2(swatchSize, swatchSize)); ImGui.TableSetColumnIndex(4); @@ -423,20 +424,21 @@ private static void RenderSemanticColors() private static float CalculateTargetLightnessForPriority(Priority priority) { // Calculate the global lightness range - float minLightness = float.MaxValue; - float maxLightness = float.MinValue; + double minLightness = double.MaxValue; + double maxLightness = double.MinValue; - foreach (Collection colors in theme.SemanticMapping.Values) + foreach (Collection colors in theme.SemanticMapping.Values) { - foreach (PerceptualColor color in colors) + foreach (Color color in colors) { - if (color.Lightness < minLightness) + double l = color.ToOklab().L; + if (l < minLightness) { - minLightness = color.Lightness; + minLightness = l; } - if (color.Lightness > maxLightness) + if (l > maxLightness) { - maxLightness = color.Lightness; + maxLightness = l; } } } @@ -447,38 +449,38 @@ private static float CalculateTargetLightnessForPriority(Priority priority) if (allPriorities.Length == 1) { - return (minLightness + maxLightness) / 2.0f; + return (float)((minLightness + maxLightness) / 2.0); } - float position = priorityIndex / (float)(allPriorities.Length - 1); - float lightnessRange = maxLightness - minLightness; + double position = priorityIndex / (double)(allPriorities.Length - 1); + double lightnessRange = maxLightness - minLightness; if (theme.IsDarkTheme) { - return minLightness + (position * lightnessRange); + return (float)(minLightness + (position * lightnessRange)); } else { - return maxLightness - (position * lightnessRange); + return (float)(maxLightness - (position * lightnessRange)); } } - private static string DetermineMethod(Collection availableColors, PerceptualColor resultColor) + private static string DetermineMethod(Collection availableColors, Color resultColor) { if (availableColors.Count == 1) { - return availableColors.First().Lightness == resultColor.Lightness ? "Original" : "Extrapolated"; + return availableColors.First().ToOklab().L == resultColor.ToOklab().L ? "Original" : "Extrapolated"; } - List sortedColors = [.. availableColors.OrderBy(c => c.Lightness)]; - float minL = sortedColors.First().Lightness; - float maxL = sortedColors.Last().Lightness; + List sortedColors = [.. availableColors.OrderBy(c => c.ToOklab().L)]; + double minL = sortedColors.First().ToOklab().L; + double maxL = sortedColors.Last().ToOklab().L; - if (resultColor.Lightness < minL - 0.01f || resultColor.Lightness > maxL + 0.01f) + if (resultColor.ToOklab().L < minL - 0.01 || resultColor.ToOklab().L > maxL + 0.01) { return "Extrapolated"; } - else if (availableColors.Any(c => Math.Abs(c.Lightness - resultColor.Lightness) < 0.01f)) + else if (availableColors.Any(c => Math.Abs(c.ToOklab().L - resultColor.ToOklab().L) < 0.01)) { return "Original"; } @@ -564,13 +566,13 @@ private static void RenderAccessibilityDemo() ImGui.Checkbox("Large Text (18pt+ or 14pt+ bold)", ref isLargeText); - // Convert to RgbColor - RgbColor foregroundColor = new(selectedColorVec.X, selectedColorVec.Y, selectedColorVec.Z); - RgbColor backgroundColor = new(backgroundColorVec.X, backgroundColorVec.Y, backgroundColorVec.Z); + // Convert to Color (from sRGB picker values) + Color foregroundColor = Color.FromSrgb(selectedColorVec.X, selectedColorVec.Y, selectedColorVec.Z, 1.0); + Color backgroundColor = Color.FromSrgb(backgroundColorVec.X, backgroundColorVec.Y, backgroundColorVec.Z, 1.0); // Calculate accessibility metrics - float contrastRatio = ColorMath.GetContrastRatio(foregroundColor, backgroundColor); - AccessibilityLevel accessibilityLevel = ColorMath.GetAccessibilityLevel(foregroundColor, backgroundColor, isLargeText); + double contrastRatio = foregroundColor.ContrastRatio(backgroundColor); + AccessibilityLevel accessibilityLevel = foregroundColor.AccessibilityLevelAgainst(backgroundColor, isLargeText); ImGui.Separator(); @@ -627,12 +629,10 @@ private static void RenderUIPreview() } ImGui.SameLine(); - PerceptualColor alternateColor = GetColorFromTheme(new(SemanticMeaning.Alternate, Priority.MediumHigh)); - if (alternateColor != default) + if (GetColorFromTheme(new(SemanticMeaning.Alternate, Priority.MediumHigh)) is { } alternateColor) { - RgbColor buttonTextColor = GetContrastingTextColor(alternateColor.RgbValue); - ImGui.PushStyleColor(ImGuiCol.Button, ToImVec4(alternateColor.RgbValue)); - ImGui.PushStyleColor(ImGuiCol.ButtonHovered, ToImVec4(AdjustBrightness(alternateColor.RgbValue, 1.1f))); + ImGui.PushStyleColor(ImGuiCol.Button, ToImVec4(alternateColor)); + ImGui.PushStyleColor(ImGuiCol.ButtonHovered, ToImVec4(AdjustBrightness(alternateColor, 1.1f))); if (ImGui.Button("Alternate")) { // Action @@ -641,12 +641,10 @@ private static void RenderUIPreview() ImGui.SameLine(); } - PerceptualColor ctaColor = GetColorFromTheme(new(SemanticMeaning.CallToAction, Priority.MediumHigh)); - if (ctaColor != default) + if (GetColorFromTheme(new(SemanticMeaning.CallToAction, Priority.MediumHigh)) is { } ctaColor) { - RgbColor buttonTextColor = GetContrastingTextColor(ctaColor.RgbValue); - ImGui.PushStyleColor(ImGuiCol.Button, ToImVec4(ctaColor.RgbValue)); - ImGui.PushStyleColor(ImGuiCol.ButtonHovered, ToImVec4(AdjustBrightness(ctaColor.RgbValue, 1.1f))); + ImGui.PushStyleColor(ImGuiCol.Button, ToImVec4(ctaColor)); + ImGui.PushStyleColor(ImGuiCol.ButtonHovered, ToImVec4(AdjustBrightness(ctaColor, 1.1f))); if (ImGui.Button("Call-to-Action")) { // Action @@ -655,12 +653,10 @@ private static void RenderUIPreview() ImGui.SameLine(); } - PerceptualColor cautionColor = GetColorFromTheme(new(SemanticMeaning.Caution, Priority.MediumHigh)); - if (cautionColor != default) + if (GetColorFromTheme(new(SemanticMeaning.Caution, Priority.MediumHigh)) is { } cautionColor) { - RgbColor buttonTextColor = GetContrastingTextColor(cautionColor.RgbValue); - ImGui.PushStyleColor(ImGuiCol.Button, ToImVec4(cautionColor.RgbValue)); - ImGui.PushStyleColor(ImGuiCol.ButtonHovered, ToImVec4(AdjustBrightness(cautionColor.RgbValue, 1.1f))); + ImGui.PushStyleColor(ImGuiCol.Button, ToImVec4(cautionColor)); + ImGui.PushStyleColor(ImGuiCol.ButtonHovered, ToImVec4(AdjustBrightness(cautionColor, 1.1f))); if (ImGui.Button("Caution")) { // Action @@ -681,26 +677,23 @@ private static void RenderUIPreview() // Progress bars with semantic colors ImGui.TextUnformatted("Progress Indicators:"); - PerceptualColor successWidget = GetColorFromTheme(new(SemanticMeaning.Success, Priority.High)); - if (successWidget != default) + if (GetColorFromTheme(new(SemanticMeaning.Success, Priority.High)) is { } successWidget) { - ImGui.PushStyleColor(ImGuiCol.PlotHistogram, ToImVec4(successWidget.RgbValue)); + ImGui.PushStyleColor(ImGuiCol.PlotHistogram, ToImVec4(successWidget)); ImGui.ProgressBar(0.7f, new Vector2(0, 0), "70% Complete"); ImGui.PopStyleColor(); } - PerceptualColor warningWidget = GetColorFromTheme(new(SemanticMeaning.Warning, Priority.High)); - if (warningWidget != default) + if (GetColorFromTheme(new(SemanticMeaning.Warning, Priority.High)) is { } warningWidget) { - ImGui.PushStyleColor(ImGuiCol.PlotHistogram, ToImVec4(warningWidget.RgbValue)); + ImGui.PushStyleColor(ImGuiCol.PlotHistogram, ToImVec4(warningWidget)); ImGui.ProgressBar(0.4f, new Vector2(0, 0), "40% Warning"); ImGui.PopStyleColor(); } - PerceptualColor errorWidget = GetColorFromTheme(new(SemanticMeaning.Error, Priority.High)); - if (errorWidget != default) + if (GetColorFromTheme(new(SemanticMeaning.Error, Priority.High)) is { } errorWidget) { - ImGui.PushStyleColor(ImGuiCol.PlotHistogram, ToImVec4(errorWidget.RgbValue)); + ImGui.PushStyleColor(ImGuiCol.PlotHistogram, ToImVec4(errorWidget)); ImGui.ProgressBar(0.2f, new Vector2(0, 0), "20% Critical"); ImGui.PopStyleColor(); } @@ -710,36 +703,32 @@ private static void RenderUIPreview() // Semantic text ImGui.TextUnformatted("Semantic Text:"); - PerceptualColor successText = GetColorFromTheme(new(SemanticMeaning.Success, Priority.VeryHigh)); - if (successText != default) + if (GetColorFromTheme(new(SemanticMeaning.Success, Priority.VeryHigh)) is { } successText) { - ImGui.TextColored(ToImVec4(successText.RgbValue), "Success: Operation completed successfully"); + ImGui.TextColored(ToImVec4(successText), "Success: Operation completed successfully"); } - PerceptualColor warningText = GetColorFromTheme(new(SemanticMeaning.Warning, Priority.VeryHigh)); - if (warningText != default) + if (GetColorFromTheme(new(SemanticMeaning.Warning, Priority.VeryHigh)) is { } warningText) { - ImGui.TextColored(ToImVec4(warningText.RgbValue), "Warning: Please review your input"); + ImGui.TextColored(ToImVec4(warningText), "Warning: Please review your input"); } - PerceptualColor errorText = GetColorFromTheme(new(SemanticMeaning.Error, Priority.VeryHigh)); - if (errorText != default) + if (GetColorFromTheme(new(SemanticMeaning.Error, Priority.VeryHigh)) is { } errorText) { - ImGui.TextColored(ToImVec4(errorText.RgbValue), "Error: Operation failed"); + ImGui.TextColored(ToImVec4(errorText), "Error: Operation failed"); } - PerceptualColor infoText = GetColorFromTheme(new(SemanticMeaning.Information, Priority.VeryHigh)); - if (infoText != default) + if (GetColorFromTheme(new(SemanticMeaning.Information, Priority.VeryHigh)) is { } infoText) { - ImGui.TextColored(ToImVec4(infoText.RgbValue), "Information: Additional details available"); + ImGui.TextColored(ToImVec4(infoText), "Information: Additional details available"); } } // Cache for complete theme palette private static ISemanticTheme? cachedTheme; - private static IReadOnlyDictionary? cachedCompletePalette; + private static IReadOnlyDictionary? cachedCompletePalette; - private static PerceptualColor GetColorFromTheme(SemanticColorRequest request) + private static Color? GetColorFromTheme(SemanticColorRequest request) { // Check if we have cached complete palette for this theme if (cachedTheme != theme || cachedCompletePalette == null) @@ -749,10 +738,10 @@ private static PerceptualColor GetColorFromTheme(SemanticColorRequest request) cachedTheme = theme; } - return cachedCompletePalette.TryGetValue(request, out PerceptualColor color) ? color : default; + return cachedCompletePalette.TryGetValue(request, out Color color) ? color : null; } - private static IReadOnlyDictionary GetCompleteMappingForSemantic() + private static IReadOnlyDictionary GetCompleteMappingForSemantic() { // Check if we have cached complete palette for this theme if (cachedTheme != theme || cachedCompletePalette == null) @@ -765,25 +754,20 @@ private static IReadOnlyDictionary GetCom return cachedCompletePalette; } - private static Vector4 ToImVec4(RgbColor color, float alpha = 1.0f) => new(color.R, color.G, color.B, alpha); - - private static RgbColor AdjustBrightness(RgbColor color, float factor) + private static Vector4 ToImVec4(Color color, float alpha = 1.0f) { - return new RgbColor( - Math.Clamp(color.R * factor, 0f, 1f), - Math.Clamp(color.G * factor, 0f, 1f), - Math.Clamp(color.B * factor, 0f, 1f) - ); + Srgb srgb = color.ToSrgb(); + return new Vector4((float)srgb.R, (float)srgb.G, (float)srgb.B, alpha); } - private static RgbColor GetContrastingTextColor(RgbColor backgroundColor) + private static Color AdjustBrightness(Color color, float factor) { - RgbColor white = new(1f, 1f, 1f); - RgbColor black = new(0f, 0f, 0f); - - float whiteContrast = ColorMath.GetContrastRatio(white, backgroundColor); - float blackContrast = ColorMath.GetContrastRatio(black, backgroundColor); - - return whiteContrast > blackContrast ? white : black; + Srgb srgb = color.ToSrgb(); + return Color.FromSrgb( + Math.Clamp(srgb.R * factor, 0.0, 1.0), + Math.Clamp(srgb.G * factor, 0.0, 1.0), + Math.Clamp(srgb.B * factor, 0.0, 1.0), + color.A + ); } } diff --git a/ThemeProviderDemo/ThemeProviderDemo.csproj b/ThemeProviderDemo/ThemeProviderDemo.csproj index 45124d9..d48bc89 100644 --- a/ThemeProviderDemo/ThemeProviderDemo.csproj +++ b/ThemeProviderDemo/ThemeProviderDemo.csproj @@ -16,6 +16,7 @@ + From 74b07bc546cfcda6ed3b6b5b158890154916415f Mon Sep 17 00:00:00 2001 From: Matt Edmondson Date: Tue, 30 Jun 2026 16:55:21 +1000 Subject: [PATCH 4/5] test(color): add ThemeProvider characterization/invariant tests --- ThemeProvider.Test/AccessibilityTests.cs | 47 ++++++++++ ThemeProvider.Test/ColorRoundTripTests.cs | 96 ++++++++++++++++++++ ThemeProvider.Test/SemanticMapperTests.cs | 96 ++++++++++++++++++++ ThemeProvider.Test/ThemeProvider.Test.csproj | 21 +++++ ThemeProvider.sln | 14 +++ 5 files changed, 274 insertions(+) create mode 100644 ThemeProvider.Test/AccessibilityTests.cs create mode 100644 ThemeProvider.Test/ColorRoundTripTests.cs create mode 100644 ThemeProvider.Test/SemanticMapperTests.cs create mode 100644 ThemeProvider.Test/ThemeProvider.Test.csproj diff --git a/ThemeProvider.Test/AccessibilityTests.cs b/ThemeProvider.Test/AccessibilityTests.cs new file mode 100644 index 0000000..cb98916 --- /dev/null +++ b/ThemeProvider.Test/AccessibilityTests.cs @@ -0,0 +1,47 @@ +// Copyright (c) ktsu.dev +// All rights reserved. +// Licensed under the MIT license. + +namespace ktsu.ThemeProvider.Test; + +using ktsu.Semantics.Color; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +/// +/// Verifies WCAG contrast-ratio computations and the helper. +/// +[TestClass] +public class AccessibilityTests +{ + /// + /// Pure black against pure white must yield a contrast ratio of exactly 21, the WCAG maximum. + /// This pins the formula: (lighter + 0.05) / (darker + 0.05). + /// + [TestMethod] + public void BlackVsWhiteContrastRatio_IsExactly21() + { + Color black = Color.FromHex("#000000"); + Color white = Color.FromHex("#ffffff"); + double ratio = black.ContrastRatio(white); + Assert.AreEqual(21.0, ratio, 1e-6, "Black vs white contrast ratio must be 21"); + } + + /// + /// A near-zero-contrast pair (two very dark Catppuccin Mocha colors) must reach at least + /// WCAG AA (4.5:1) after targets AA. + /// Background is Mocha Base (#1e1e2e); foreground is Mocha Surface0 (#313244). + /// + [TestMethod] + public void LowContrastMochaPair_AdjustedForAA_ReachesAtLeastAA() + { + Color background = Color.FromHex("#1e1e2e"); // Mocha.Base — very dark + Color foreground = Color.FromHex("#313244"); // Mocha.Surface0 — dark, low contrast + + Color adjusted = foreground.AdjustForContrast(background, AccessibilityLevel.AA); + AccessibilityLevel level = adjusted.AccessibilityLevelAgainst(background); + + Assert.IsTrue( + level >= AccessibilityLevel.AA, + $"Expected at least AA after adjustment but got {level}. ContrastRatio={adjusted.ContrastRatio(background):F2}"); + } +} diff --git a/ThemeProvider.Test/ColorRoundTripTests.cs b/ThemeProvider.Test/ColorRoundTripTests.cs new file mode 100644 index 0000000..d8c69e8 --- /dev/null +++ b/ThemeProvider.Test/ColorRoundTripTests.cs @@ -0,0 +1,96 @@ +// Copyright (c) ktsu.dev +// All rights reserved. +// Licensed under the MIT license. + +namespace ktsu.ThemeProvider.Test; + +using System; +using System.Numerics; +using ktsu.Semantics.Color; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +/// +/// Verifies that followed by reproduces +/// the original sRGB byte values within one LSB (1/255). This pins the display-stability guarantee: +/// the gamma fix in ktsu.Semantics.Color leaves base theme colors visually identical. +/// +[TestClass] +public class ColorRoundTripTests +{ + private const float Tolerance = 1f / 255f; + + private static void AssertRoundTrip(string hex) + { + Color color = Color.FromHex(hex); + Vector4 srgb = color.ToSrgbVector4(); + + string h = hex.StartsWith('#') ? hex[1..] : hex; + byte expectedR = Convert.ToByte(h[..2], 16); + byte expectedG = Convert.ToByte(h.Substring(2, 2), 16); + byte expectedB = Convert.ToByte(h.Substring(4, 2), 16); + + Assert.AreEqual(expectedR / 255.0, srgb.X, Tolerance, $"Red channel mismatch for {hex}"); + Assert.AreEqual(expectedG / 255.0, srgb.Y, Tolerance, $"Green channel mismatch for {hex}"); + Assert.AreEqual(expectedB / 255.0, srgb.Z, Tolerance, $"Blue channel mismatch for {hex}"); + } + + [TestMethod] + public void MochaBase_FromHex_SrgbRoundTripWithinOnePart255() + { + AssertRoundTrip("#1e1e2e"); + } + + [TestMethod] + public void MochaText_FromHex_SrgbRoundTripWithinOnePart255() + { + AssertRoundTrip("#cdd6f4"); + } + + [TestMethod] + public void MochaCrust_FromHex_SrgbRoundTripWithinOnePart255() + { + AssertRoundTrip("#11111b"); + } + + [TestMethod] + public void MochaBlue_FromHex_SrgbRoundTripWithinOnePart255() + { + AssertRoundTrip("#89b4fa"); + } + + [TestMethod] + public void GruvboxDark0_FromHex_SrgbRoundTripWithinOnePart255() + { + AssertRoundTrip("#282828"); + } + + [TestMethod] + public void GruvboxLight1_FromHex_SrgbRoundTripWithinOnePart255() + { + AssertRoundTrip("#ebdbb2"); + } + + [TestMethod] + public void GruvboxBrightRed_FromHex_SrgbRoundTripWithinOnePart255() + { + AssertRoundTrip("#fb4934"); + } + + [TestMethod] + public void NordBase_FromHex_SrgbRoundTripWithinOnePart255() + { + AssertRoundTrip("#2e3440"); + } + + [TestMethod] + public void NordSnowStorm6_FromHex_SrgbRoundTripWithinOnePart255() + { + AssertRoundTrip("#eceff4"); + } + + [TestMethod] + public void NordAuroraRed_FromHex_SrgbRoundTripWithinOnePart255() + { + AssertRoundTrip("#bf616a"); + } +} diff --git a/ThemeProvider.Test/SemanticMapperTests.cs b/ThemeProvider.Test/SemanticMapperTests.cs new file mode 100644 index 0000000..9e293d1 --- /dev/null +++ b/ThemeProvider.Test/SemanticMapperTests.cs @@ -0,0 +1,96 @@ +// Copyright (c) ktsu.dev +// All rights reserved. +// Licensed under the MIT license. + +namespace ktsu.ThemeProvider.Test; + +using System; +using System.Collections.Generic; +using ktsu.Semantics.Color; +using ktsu.ThemeProvider; +using ktsu.ThemeProvider.Themes.Catppuccin; +using ktsu.ThemeProvider.Themes.Gruvbox; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +/// +/// Verifies in-gamut and lightness-ordering guarantees for . +/// +[TestClass] +public class SemanticMapperTests +{ + /// + /// Every color produced by the mapper for the Catppuccin Mocha theme must have + /// linear-RGB channels within [0, 1]. + /// + [TestMethod] + public void MochaPalette_AllColorsInGamut() + { + Mocha theme = new(); + IReadOnlyDictionary palette = SemanticColorMapper.MakeCompletePalette(theme); + + foreach (KeyValuePair kvp in palette) + { + Color c = kvp.Value; + string label = kvp.Key.ToString(); + Assert.IsTrue(c.R is >= 0.0 and <= 1.0, $"Red out of gamut ({c.R:F4}) for {label}"); + Assert.IsTrue(c.G is >= 0.0 and <= 1.0, $"Green out of gamut ({c.G:F4}) for {label}"); + Assert.IsTrue(c.B is >= 0.0 and <= 1.0, $"Blue out of gamut ({c.B:F4}) for {label}"); + } + } + + /// + /// Every color produced by the mapper for the Gruvbox Dark theme must have + /// linear-RGB channels within [0, 1]. + /// + [TestMethod] + public void GruvboxDarkPalette_AllColorsInGamut() + { + GruvboxDark theme = new(); + IReadOnlyDictionary palette = SemanticColorMapper.MakeCompletePalette(theme); + + foreach (KeyValuePair kvp in palette) + { + Color c = kvp.Value; + string label = kvp.Key.ToString(); + Assert.IsTrue(c.R is >= 0.0 and <= 1.0, $"Red out of gamut ({c.R:F4}) for {label}"); + Assert.IsTrue(c.G is >= 0.0 and <= 1.0, $"Green out of gamut ({c.G:F4}) for {label}"); + Assert.IsTrue(c.B is >= 0.0 and <= 1.0, $"Blue out of gamut ({c.B:F4}) for {label}"); + } + } + + /// + /// For each semantic meaning in the Catppuccin Mocha dark theme, Oklab lightness must be + /// non-decreasing as Priority rises from VeryLow to VeryHigh. + /// + /// The mapper targets a strictly increasing lightness per priority level; floating-point + /// residuals from Oklab-to-linear round-trips may introduce tiny deviations (~1e-12), + /// so we allow an epsilon of 1e-9 before calling the invariant violated. + /// + /// + [TestMethod] + public void MochaPalette_PriorityLightnessNonDecreasingForDarkTheme() + { + Mocha theme = new(); + IReadOnlyDictionary palette = SemanticColorMapper.MakeCompletePalette(theme); + + // Enum.GetValues returns values in ascending numeric order (VeryLow=0 … VeryHigh=6). + Priority[] priorities = Enum.GetValues(); + + foreach (SemanticMeaning meaning in theme.SemanticMapping.Keys) + { + double previousL = double.MinValue; + foreach (Priority priority in priorities) + { + SemanticColorRequest request = new(meaning, priority); + if (palette.TryGetValue(request, out Color color)) + { + double l = color.ToOklab().L; + Assert.IsTrue( + l >= previousL - 1e-9, + $"Lightness decreased ({previousL:F6} → {l:F6}) for {meaning} at {priority}"); + previousL = l; + } + } + } + } +} diff --git a/ThemeProvider.Test/ThemeProvider.Test.csproj b/ThemeProvider.Test/ThemeProvider.Test.csproj new file mode 100644 index 0000000..883646b --- /dev/null +++ b/ThemeProvider.Test/ThemeProvider.Test.csproj @@ -0,0 +1,21 @@ + + + + + + true + net10.0 + + ktsu.ThemeProvider.Test + ktsu.ThemeProvider.Test + true + true + true + $(NoWarn);MSTEST0032 + + + + + + + diff --git a/ThemeProvider.sln b/ThemeProvider.sln index c26f8db..77cc420 100644 --- a/ThemeProvider.sln +++ b/ThemeProvider.sln @@ -9,6 +9,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ThemeProviderDemo", "ThemeP EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ThemeProvider.ImGui", "ThemeProvider.ImGui\ThemeProvider.ImGui.csproj", "{B7E91ECF-8C33-4F62-B092-EEDD315BC29A}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ThemeProvider.Test", "ThemeProvider.Test\ThemeProvider.Test.csproj", "{202F4B12-82DA-45D3-94CB-75B8C10A0659}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -55,6 +57,18 @@ Global {B7E91ECF-8C33-4F62-B092-EEDD315BC29A}.Release|x64.Build.0 = Release|Any CPU {B7E91ECF-8C33-4F62-B092-EEDD315BC29A}.Release|x86.ActiveCfg = Release|Any CPU {B7E91ECF-8C33-4F62-B092-EEDD315BC29A}.Release|x86.Build.0 = Release|Any CPU + {202F4B12-82DA-45D3-94CB-75B8C10A0659}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {202F4B12-82DA-45D3-94CB-75B8C10A0659}.Debug|Any CPU.Build.0 = Debug|Any CPU + {202F4B12-82DA-45D3-94CB-75B8C10A0659}.Debug|x64.ActiveCfg = Debug|Any CPU + {202F4B12-82DA-45D3-94CB-75B8C10A0659}.Debug|x64.Build.0 = Debug|Any CPU + {202F4B12-82DA-45D3-94CB-75B8C10A0659}.Debug|x86.ActiveCfg = Debug|Any CPU + {202F4B12-82DA-45D3-94CB-75B8C10A0659}.Debug|x86.Build.0 = Debug|Any CPU + {202F4B12-82DA-45D3-94CB-75B8C10A0659}.Release|Any CPU.ActiveCfg = Release|Any CPU + {202F4B12-82DA-45D3-94CB-75B8C10A0659}.Release|Any CPU.Build.0 = Release|Any CPU + {202F4B12-82DA-45D3-94CB-75B8C10A0659}.Release|x64.ActiveCfg = Release|Any CPU + {202F4B12-82DA-45D3-94CB-75B8C10A0659}.Release|x64.Build.0 = Release|Any CPU + {202F4B12-82DA-45D3-94CB-75B8C10A0659}.Release|x86.ActiveCfg = Release|Any CPU + {202F4B12-82DA-45D3-94CB-75B8C10A0659}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE From dff878fc13533397bd3e8dd177dd134be447cba5 Mon Sep 17 00:00:00 2001 From: Matt Edmondson Date: Tue, 30 Jun 2026 19:23:02 +1000 Subject: [PATCH 5/5] [major] feat(color)!: complete ThemeProvider migration to ktsu.Semantics.Color Regenerate ApiCompat suppression baselines for the removed public color types, update README/CLAUDE docs to the Color-based API, and note the gamma-correctness fix. Completes the PerceptualColor -> Color migration. --- CLAUDE.md | 14 +- README.md | 102 +- .../CompatibilitySuppressions.xml | 1034 +++++++++++++++-- ThemeProvider/CompatibilitySuppressions.xml | 1004 ++++++++++++++-- ...themeprovider-semantics-color-migration.md | 114 ++ 5 files changed, 2011 insertions(+), 257 deletions(-) create mode 100644 docs/superpowers/plans/2026-06-29-themeprovider-semantics-color-migration.md diff --git a/CLAUDE.md b/CLAUDE.md index 6e12c9d..3f03421 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -31,23 +31,19 @@ This is a .NET library (`ktsu.ThemeProvider`) providing a semantic color theming - `ThemeProvider/ISemanticTheme.cs` - Core theme interface (SemanticMapping + IsDarkTheme) - `ThemeProvider/SemanticColorMapper.cs` - Maps semantic color requests to actual colors using Oklab color space - `ThemeProvider/ThemeRegistry.cs` - Central registration of all 44 themes with metadata and factory functions -- `ThemeProvider/ColorMath.cs` - Color space conversions (RGB/Oklab), WCAG accessibility, and gradient generation -- `ThemeProvider/PerceptualColor.cs` - Color representation with Oklab perceptual properties -- `ThemeProvider/RgbColor.cs` - Linear RGB color with hex/byte conversions -- `ThemeProvider/SRgbColor.cs` - sRGB gamma-corrected color with linear conversion -- `ThemeProvider/OklabColor.cs` - Oklab perceptual color space with polar (LCh) support +- Color types (`Color`, `Srgb`, `Oklab`/`Oklch`, `AccessibilityLevel`, color-space conversions, WCAG, gradients) come from the **`ktsu.Semantics.Color`** package — there are no in-house color types (they were removed in v2.0) - `ThemeProvider/IPaletteMapper.cs` - Generic interface for framework-specific color mapping - `ThemeProvider/SemanticColorRequest.cs` - Readonly record struct combining SemanticMeaning + Priority - `ThemeProvider/SemanticMeaning.cs` - Enum of semantic color purposes (Neutral, Primary, Error, etc.) - `ThemeProvider/Priority.cs` - Enum of 7 priority levels (VeryLow to VeryHigh) -- `ThemeProvider/ColorRange.cs` - Color range interpolation helper -- `ThemeProvider/AccessibilityLevel.cs` - WCAG accessibility levels (Fail, AA, AAA) +- `ThemeProvider/ColorRange.cs` - Color range interpolation helper (built on `ktsu.Semantics.Color`) - `ThemeProvider/Themes/` - 44 theme implementations organized by family - `ThemeProvider.ImGui/ImGuiPaletteMapper.cs` - Dear ImGui integration mapping ImGuiCol to Vector4 - `ThemeProviderDemo/Program.cs` - Interactive demo application using ktsu.ImGuiApp ### Dependencies +- **ktsu.Semantics.Color** - Color value types and color science (`Color`, Oklab/Oklch/HSL/HSV, WCAG, gradients) - **Polyfill** - Backfill support for newer .NET APIs on older targets - **System.Numerics.Vectors** - Vector types for netstandard2.0 target - **Hexa.NET.ImGui** - Dear ImGui bindings (ThemeProvider.ImGui project) @@ -59,7 +55,7 @@ This is a .NET library (`ktsu.ThemeProvider`) providing a semantic color theming The library uses meaning-based color specifications instead of hardcoded colors: -1. **ISemanticTheme** provides a `Dictionary>` mapping +1. **ISemanticTheme** provides a `Dictionary>` mapping (`Color` from `ktsu.Semantics.Color`) 2. **SemanticColorMapper** maps `SemanticColorRequest` (meaning + priority) to actual colors 3. The mapper calculates a global lightness range across all theme colors, then interpolates/extrapolates in Oklab space to achieve target lightness for each priority level 4. Dark themes: higher priority = higher lightness; Light themes: higher priority = lower lightness @@ -68,7 +64,7 @@ The library uses meaning-based color specifications instead of hardcoded colors: ### Adding New Themes 1. Create a new class in `ThemeProvider/Themes/{Family}/{ThemeName}.cs` -2. Implement `ISemanticTheme` with static `PerceptualColor` fields from hex values using `PerceptualColor.FromRgb("#hex")` +2. Implement `ISemanticTheme` with static `Color` fields from hex values using `Color.FromHex("#hex")` (`Color` from `ktsu.Semantics.Color`) 3. Map semantic meanings to color collections (Neutral typically gets multiple colors; other meanings get single accent colors) 4. Register in `ThemeRegistry.AllThemes` with a `ThemeInfo` record diff --git a/README.md b/README.md index c7cfda8..c50d81e 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ var requests = new[] new SemanticColorRequest(SemanticMeaning.Error, Priority.High), new SemanticColorRequest(SemanticMeaning.Neutral, Priority.VeryLow), }; -IReadOnlyDictionary colors = +IReadOnlyDictionary colors = SemanticColorMapper.MapColors(requests, theme); ``` @@ -106,17 +106,17 @@ IReadOnlyList gruvboxInstances = CreateThemeInstancesInFamily("G ```csharp using ktsu.ThemeProvider; +using ktsu.Semantics.Color; var theme = new Themes.Nord.Nord(); // Generate the complete palette (all meaning + priority combinations) -IReadOnlyDictionary completePalette = +IReadOnlyDictionary completePalette = SemanticColorMapper.MakeCompletePalette(theme); // Access any color from the palette var primaryMedium = completePalette[new SemanticColorRequest(SemanticMeaning.Primary, Priority.Medium)]; -RgbColor rgb = primaryMedium.RgbValue; -string hex = rgb.ToHex(); +string hex = primaryMedium.ToHex(); ``` ### Dear ImGui Integration @@ -145,21 +145,22 @@ foreach ((ImGuiCol colorKey, Vector4 colorValue) in imguiColors) ```csharp using ktsu.ThemeProvider; +using ktsu.Semantics.Color; -var foreground = RgbColor.FromHex("#FFFFFF"); -var background = RgbColor.FromHex("#1E1E2E"); +Color foreground = Color.FromHex("#FFFFFF"); +Color background = Color.FromHex("#1E1E2E"); -// Calculate contrast ratio -float contrastRatio = ColorMath.GetContrastRatio(foreground, background); +// Calculate contrast ratio (1.0 .. 21.0) +double contrastRatio = foreground.ContrastRatio(background); // Check WCAG compliance -AccessibilityLevel level = ColorMath.GetAccessibilityLevel(foreground, background, isLargeText: false); +AccessibilityLevel level = foreground.AccessibilityLevelAgainst(background, largeText: false); // Adjust a color to meet accessibility requirements -RgbColor adjusted = ColorMath.AdjustForAccessibility(foreground, background, AccessibilityLevel.AA); +Color adjusted = foreground.AdjustForContrast(background, AccessibilityLevel.AA); // Create perceptually uniform gradients -RgbColor[] gradient = ColorMath.CreateGradient(foreground, background, steps: 10); +IReadOnlyList gradient = foreground.Gradient(background, steps: 10); ``` ## Advanced Usage @@ -205,19 +206,20 @@ Implement `ISemanticTheme` with colors from your palette: ```csharp using ktsu.ThemeProvider; +using ktsu.Semantics.Color; using System.Collections.ObjectModel; public class MyCustomTheme : ISemanticTheme { - private static readonly PerceptualColor Background = PerceptualColor.FromRgb("#1A1B26"); - private static readonly PerceptualColor Foreground = PerceptualColor.FromRgb("#C0CAF5"); - private static readonly PerceptualColor Blue = PerceptualColor.FromRgb("#7AA2F7"); - private static readonly PerceptualColor Green = PerceptualColor.FromRgb("#9ECE6A"); - private static readonly PerceptualColor Red = PerceptualColor.FromRgb("#F7768E"); + private static readonly Color Background = Color.FromHex("#1A1B26"); + private static readonly Color Foreground = Color.FromHex("#C0CAF5"); + private static readonly Color Blue = Color.FromHex("#7AA2F7"); + private static readonly Color Green = Color.FromHex("#9ECE6A"); + private static readonly Color Red = Color.FromHex("#F7768E"); public bool IsDarkTheme => true; - public Dictionary> SemanticMapping { get; } = new() + public Dictionary> SemanticMapping { get; } = new() { { SemanticMeaning.Neutral, new() { Background, Foreground } }, { SemanticMeaning.Primary, new() { Blue } }, @@ -278,8 +280,8 @@ Static class that maps semantic color requests to actual colors. | Name | Return Type | Description | |------|-------------|-------------| -| `MapColors(requests, theme)` | `IReadOnlyDictionary` | Maps a collection of requests to colors using the theme | -| `MakeCompletePalette(theme)` | `IReadOnlyDictionary` | Generates all possible meaning+priority combinations for a theme | +| `MapColors(requests, theme)` | `IReadOnlyDictionary` | Maps a collection of requests to colors using the theme | +| `MakeCompletePalette(theme)` | `IReadOnlyDictionary` | Generates all possible meaning+priority combinations for a theme | ### `ThemeRegistry` @@ -304,57 +306,25 @@ Static class providing centralized theme discovery and management. | `CreateAllThemeInstances()` | `IReadOnlyList` | Creates instances of all themes | | `CreateThemeInstancesInFamily(family)` | `IReadOnlyList` | Creates instances of themes in a family | -### `ColorMath` +### Color types (`ktsu.Semantics.Color`) -Static class providing color space conversions and accessibility utilities. +Colors are represented by the `Color` type from the [`ktsu.Semantics.Color`](https://www.nuget.org/packages/ktsu.Semantics.Color) package (linear RGB + alpha, gamma-correct). It is the currency type for themes (`ISemanticTheme.SemanticMapping`) and `SemanticColorMapper`. -#### Methods - -| Name | Return Type | Description | -|------|-------------|-------------| -| `RgbToOklab(rgb)` | `OklabColor` | Converts linear RGB to Oklab color space | -| `OklabToRgb(oklab)` | `RgbColor` | Converts Oklab to linear RGB color space | -| `GetRelativeLuminance(rgb)` | `float` | Calculates WCAG relative luminance | -| `GetContrastRatio(color1, color2)` | `float` | Calculates WCAG contrast ratio (1:1 to 21:1) | -| `GetAccessibilityLevel(fg, bg, isLargeText)` | `AccessibilityLevel` | Checks WCAG AA/AAA compliance | -| `AdjustForAccessibility(fg, bg, level, isLargeText)` | `RgbColor` | Adjusts color to meet WCAG requirements | -| `CreateGradient(from, to, steps)` | `RgbColor[]` | Creates a perceptually uniform gradient | - -### `PerceptualColor` +Common members: -Readonly record struct representing a color with perceptual properties in Oklab space. +| Member | Description | +|--------|-------------| +| `Color.FromHex(hex)` | Creates a color from an sRGB hex string (proper sRGB→linear decode) | +| `ToHex()` / `ToBytes()` | Converts back to an sRGB hex string / 8-bit channels | +| `ToSrgbVector4()` | sRGB-encoded `Vector4` for UI frameworks (e.g. ImGui) | +| `ToOklab()` / `ToOklch()` | Perceptual (Oklab / polar LCh) representations | +| `ContrastRatio(other)` | WCAG contrast ratio (1:1 .. 21:1) | +| `AccessibilityLevelAgainst(bg, largeText)` | WCAG AA/AAA compliance (returns `AccessibilityLevel`) | +| `AdjustForContrast(bg, level, largeText)` | Adjusts lightness to meet a WCAG level | +| `DistanceTo(other)` | Perceptual (Oklab) distance | +| `MixOklab(other, t)` / `Gradient(to, steps)` | Perceptual blend / uniform gradient | -#### Properties - -| Name | Type | Description | -|------|------|-------------| -| `OklabValue` | `OklabColor` | The color in Oklab perceptual space | -| `RgbValue` | `RgbColor` | The RGB representation | -| `Hue` | `float` | Hue in Oklab polar coordinates | -| `Chroma` | `float` | Chroma (colorfulness) in Oklab polar coordinates | -| `Lightness` | `float` | Lightness in Oklab space | - -#### Methods - -| Name | Return Type | Description | -|------|-------------|-------------| -| `FromRgb(RgbColor)` | `PerceptualColor` | Creates from an RGB color | -| `FromRgb(string hex)` | `PerceptualColor` | Creates from a hex color string | -| `SemanticDistanceTo(other)` | `float` | Calculates perceptual distance to another color | - -### `RgbColor` - -Readonly record struct representing a linear RGB color with float precision. - -#### Methods - -| Name | Return Type | Description | -|------|-------------|-------------| -| `FromBytes(r, g, b)` | `RgbColor` | Creates from 8-bit values (0-255) | -| `FromHex(hex)` | `RgbColor` | Creates from hex string (e.g., "#FF0000") | -| `ToHex()` | `string` | Converts to hex string | -| `ToBytes()` | `(byte R, byte G, byte B)` | Converts to 8-bit values | -| `ToSRgb()` | `SRgbColor` | Converts to sRGB gamma-corrected values | +> **Migration note (v2.0):** ThemeProvider's in-house `RgbColor`, `SRgbColor`, `OklabColor`, `PerceptualColor`, and `ColorMath` types were removed in favour of `ktsu.Semantics.Color`. This also fixed a long-standing sRGB-as-linear gamma bug — base theme colors render identically, but the semantic mapper's derived colors and accessibility numbers are now computed correctly. ### `IPaletteMapper` diff --git a/ThemeProvider.ImGui/CompatibilitySuppressions.xml b/ThemeProvider.ImGui/CompatibilitySuppressions.xml index c8994bb..1a623ae 100644 --- a/ThemeProvider.ImGui/CompatibilitySuppressions.xml +++ b/ThemeProvider.ImGui/CompatibilitySuppressions.xml @@ -1,12 +1,24 @@  + + CP0001 + T:System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute + lib/net5.0/ktsu.ThemeProvider.ImGui.dll + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + CP0001 T:System.Diagnostics.StackTraceHiddenAttribute lib/net5.0/ktsu.ThemeProvider.ImGui.dll lib/net6.0/ktsu.ThemeProvider.ImGui.dll + + CP0001 + T:System.IO.Compression.ZLibStream + lib/net5.0/ktsu.ThemeProvider.ImGui.dll + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + CP0001 T:System.Reflection.NullabilityInfo @@ -19,6 +31,30 @@ lib/net5.0/ktsu.ThemeProvider.ImGui.dll lib/net6.0/ktsu.ThemeProvider.ImGui.dll + + CP0001 + T:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler + lib/net5.0/ktsu.ThemeProvider.ImGui.dll + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + + + CP0001 + T:System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute + lib/net5.0/ktsu.ThemeProvider.ImGui.dll + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + + + CP0001 + T:System.Runtime.CompilerServices.InterpolatedStringHandlerAttribute + lib/net5.0/ktsu.ThemeProvider.ImGui.dll + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + + + CP0001 + T:System.Runtime.InteropServices.PosixSignal + lib/net5.0/ktsu.ThemeProvider.ImGui.dll + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + CP0001 T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute @@ -127,6 +163,24 @@ lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + CP0001 + T:System.Threading.Tasks.ConfigureAwaitOptions + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0001 + T:System.Buffers.Text.Base64Url + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0001 + T:System.Collections.Generic.IAlternateEqualityComparer`2 + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + CP0001 T:System.Diagnostics.CodeAnalysis.FeatureGuardAttribute @@ -163,6 +217,24 @@ lib/net8.0/ktsu.ThemeProvider.ImGui.dll lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + CP0001 + T:System.Runtime.CompilerServices.CompilerLoweringPreserveAttribute + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0001 + T:System.Buffers.ReadOnlySpanAction`2 + lib/netstandard2.0/ktsu.ThemeProvider.ImGui.dll + lib/netstandard2.1/ktsu.ThemeProvider.ImGui.dll + + + CP0001 + T:System.Buffers.SpanAction`2 + lib/netstandard2.0/ktsu.ThemeProvider.ImGui.dll + lib/netstandard2.1/ktsu.ThemeProvider.ImGui.dll + CP0001 T:System.Collections.Generic.KeyValuePair @@ -229,12 +301,36 @@ lib/netstandard2.0/ktsu.ThemeProvider.ImGui.dll lib/netstandard2.1/ktsu.ThemeProvider.ImGui.dll + + CP0001 + T:System.IO.EnumerationOptions + lib/netstandard2.0/ktsu.ThemeProvider.ImGui.dll + lib/netstandard2.1/ktsu.ThemeProvider.ImGui.dll + + + CP0001 + T:System.IO.MatchCasing + lib/netstandard2.0/ktsu.ThemeProvider.ImGui.dll + lib/netstandard2.1/ktsu.ThemeProvider.ImGui.dll + + + CP0001 + T:System.IO.MatchType + lib/netstandard2.0/ktsu.ThemeProvider.ImGui.dll + lib/netstandard2.1/ktsu.ThemeProvider.ImGui.dll + CP0001 T:System.Range lib/netstandard2.0/ktsu.ThemeProvider.ImGui.dll lib/netstandard2.1/ktsu.ThemeProvider.ImGui.dll + + CP0001 + T:System.Security.Cryptography.CryptographicOperations + lib/netstandard2.0/ktsu.ThemeProvider.ImGui.dll + lib/netstandard2.1/ktsu.ThemeProvider.ImGui.dll + CP0001 T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute @@ -301,6 +397,12 @@ lib/netstandard2.1/ktsu.ThemeProvider.ImGui.dll lib/net5.0/ktsu.ThemeProvider.ImGui.dll + + CP0001 + T:System.Runtime.InteropServices.CollectionsMarshal + lib/netstandard2.1/ktsu.ThemeProvider.ImGui.dll + lib/net5.0/ktsu.ThemeProvider.ImGui.dll + CP0001 T:System.Runtime.InteropServices.SuppressGCTransitionAttribute @@ -343,6 +445,30 @@ lib/net5.0/ktsu.ThemeProvider.ImGui.dll lib/net6.0/ktsu.ThemeProvider.ImGui.dll + + CP0002 + M:System.IO.EnumerationOptions.get_MaxRecursionDepth + lib/net5.0/ktsu.ThemeProvider.ImGui.dll + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.IO.EnumerationOptions.set_MaxRecursionDepth(System.Int32) + lib/net5.0/ktsu.ThemeProvider.ImGui.dll + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Runtime.InteropServices.CollectionsMarshal.GetValueRefOrAddDefault``2(System.Collections.Generic.Dictionary{``0,``1},``0,System.Boolean@) + lib/net5.0/ktsu.ThemeProvider.ImGui.dll + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Runtime.InteropServices.CollectionsMarshal.GetValueRefOrNullRef``2(System.Collections.Generic.Dictionary{``0,``1},``0) + lib/net5.0/ktsu.ThemeProvider.ImGui.dll + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + CP0002 M:System.Runtime.Versioning.UnsupportedOSPlatformAttribute.#ctor(System.String,System.String) @@ -350,254 +476,824 @@ lib/net7.0/ktsu.ThemeProvider.ImGui.dll - CP0002 - M:System.Runtime.Versioning.UnsupportedOSPlatformAttribute.get_Message - lib/net6.0/ktsu.ThemeProvider.ImGui.dll - lib/net7.0/ktsu.ThemeProvider.ImGui.dll + CP0002 + M:System.Runtime.Versioning.UnsupportedOSPlatformAttribute.get_Message + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Runtime.InteropServices.CollectionsMarshal.SetCount``1(System.Collections.Generic.List{``0},System.Int32) + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.IO.Compression.ZLibStream.#ctor(System.IO.Stream,System.IO.Compression.ZLibCompressionOptions,System.Boolean) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Runtime.InteropServices.CollectionsMarshal.GetValueRefOrAddDefault``3(System.Collections.Generic.Dictionary{``0,``1}.AlternateLookup{``2},``2,System.Boolean@) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Runtime.InteropServices.CollectionsMarshal.GetValueRefOrNullRef``3(System.Collections.Generic.Dictionary{``0,``1}.AlternateLookup{``2},``2) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HashData(System.Security.Cryptography.HashAlgorithmName,System.Byte[]) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HashData(System.Security.Cryptography.HashAlgorithmName,System.IO.Stream,System.Span{System.Byte}) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HashData(System.Security.Cryptography.HashAlgorithmName,System.IO.Stream) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HashData(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan{System.Byte},System.Span{System.Byte}) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HashData(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan{System.Byte}) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HashDataAsync(System.Security.Cryptography.HashAlgorithmName,System.IO.Stream,System.Memory{System.Byte},System.Threading.CancellationToken) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HashDataAsync(System.Security.Cryptography.HashAlgorithmName,System.IO.Stream,System.Threading.CancellationToken) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HmacData(System.Security.Cryptography.HashAlgorithmName,System.Byte[],System.Byte[]) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HmacData(System.Security.Cryptography.HashAlgorithmName,System.Byte[],System.IO.Stream) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HmacData(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan{System.Byte},System.IO.Stream,System.Span{System.Byte}) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HmacData(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan{System.Byte},System.IO.Stream) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HmacData(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Span{System.Byte}) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HmacData(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte}) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HmacDataAsync(System.Security.Cryptography.HashAlgorithmName,System.Byte[],System.IO.Stream,System.Threading.CancellationToken) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HmacDataAsync(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlyMemory{System.Byte},System.IO.Stream,System.Memory{System.Byte},System.Threading.CancellationToken) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HmacDataAsync(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlyMemory{System.Byte},System.IO.Stream,System.Threading.CancellationToken) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.TryHashData(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan{System.Byte},System.Span{System.Byte},System.Int32@) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.TryHmacData(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Span{System.Byte},System.Int32@) + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllConstructors + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllEvents + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllFields + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllMethods + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllNestedTypes + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllProperties + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructorsWithInherited + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicEventsWithInherited + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFieldsWithInherited + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethodsWithInherited + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicNestedTypesWithInherited + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicPropertiesWithInherited + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructorsWithInherited + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypesWithInherited + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.get_Message + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.set_Message(System.String) + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.get_ExcludeStatics + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.set_ExcludeStatics(System.Boolean) + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.get_ExcludeStatics + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.set_ExcludeStatics(System.Boolean) + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.Clear + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.get_Text + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0002 + M:System.Runtime.InteropServices.CollectionsMarshal.AsBytes(System.Collections.BitArray) + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0008 + T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0008 + T:System.IO.MatchCasing + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0008 + T:System.IO.MatchType + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0008 + T:System.IO.UnixFileMode + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0008 + T:System.Runtime.InteropServices.PosixSignal + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0008 + T:System.Text.SpanLineEnumerator + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0014 + M:System.Reflection.NullabilityInfo.get_ElementType:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + + + CP0014 + M:System.Reflection.NullabilityInfo.get_GenericTypeArguments:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + + + CP0014 + M:System.Reflection.NullabilityInfo.get_ReadState:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + + + CP0014 + M:System.Reflection.NullabilityInfo.get_Type:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + + + CP0014 + M:System.Reflection.NullabilityInfo.get_WriteState:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + + + CP0014 + M:System.Runtime.Versioning.OSPlatformAttribute.get_PlatformName:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + + + CP0014 + M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.get_UrlFormat:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0014 + M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.set_UrlFormat(System.String):[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + + + CP0014 + M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.get_UrlFormat:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0014 + M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.set_UrlFormat(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0014 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.#ctor(System.Int32,System.Int32,System.IFormatProvider,System.Span{System.Char}):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0014 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted(System.ReadOnlySpan{System.Char},System.Int32,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0014 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted(System.ReadOnlySpan{System.Char}):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0014 + P:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.UrlFormat:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0014 + T:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0014 + T:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0015 + T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute:[T:System.AttributeUsageAttribute] + lib/net5.0/ktsu.ThemeProvider.ImGui.dll + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + + + CP0015 + T:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute:[T:System.AttributeUsageAttribute] + lib/net5.0/ktsu.ThemeProvider.ImGui.dll + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + + + CP0015 + T:System.Runtime.Versioning.SupportedOSPlatformAttribute:[T:System.AttributeUsageAttribute] + lib/net5.0/ktsu.ThemeProvider.ImGui.dll + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + + + CP0015 + T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute:[T:System.AttributeUsageAttribute] + lib/net5.0/ktsu.ThemeProvider.ImGui.dll + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + + + CP0015 + T:System.Diagnostics.CodeAnalysis.ExperimentalAttribute:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Index.Equals(System.Object)$0:[T:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute] + lib/net5.0/ktsu.ThemeProvider.ImGui.dll + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Range.Equals(System.Object)$0:[T:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute] + lib/net5.0/ktsu.ThemeProvider.ImGui.dll + lib/net6.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + F:System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute.CallConvs:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + F:System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute.EntryPoint:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Buffers.ReadOnlySpanAction`2.BeginInvoke(System.ReadOnlySpan{`0},`1,System.AsyncCallback,System.Object)$0:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Buffers.ReadOnlySpanAction`2.BeginInvoke(System.ReadOnlySpan{`0},`1,System.AsyncCallback,System.Object)$1:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Buffers.ReadOnlySpanAction`2.Invoke(System.ReadOnlySpan{`0},`1):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Buffers.ReadOnlySpanAction`2.Invoke(System.ReadOnlySpan{`0},`1)$0:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Buffers.SpanAction`2.BeginInvoke(System.Span{`0},`1,System.AsyncCallback,System.Object)$0:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Buffers.SpanAction`2.BeginInvoke(System.Span{`0},`1,System.AsyncCallback,System.Object)$1:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Buffers.SpanAction`2.Invoke(System.Span{`0},`1):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Buffers.SpanAction`2.Invoke(System.Span{`0},`1)$0:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Collections.Generic.KeyValuePair.Create``2(``0,``1)->System.Collections.Generic.KeyValuePair<TKey, TValue>:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Collections.Generic.KeyValuePair.Create``2(``0,``1):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Collections.Generic.KeyValuePair.Create``2(``0,``1)<0>:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Collections.Generic.KeyValuePair.Create``2(``0,``1)<1>:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.#ctor(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes,System.String,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.#ctor(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes,System.Type):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.#ctor(System.String,System.String,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.#ctor(System.String,System.Type):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.#ctor(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute.#ctor(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.get_Url:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll - CP0008 - T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes + CP0016 + M:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.set_Url(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll - CP0008 - T:System.IO.UnixFileMode + CP0016 + M:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.get_Url:[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll - CP0014 - M:System.Reflection.NullabilityInfo.get_ElementType:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] - lib/net6.0/ktsu.ThemeProvider.ImGui.dll - lib/net7.0/ktsu.ThemeProvider.ImGui.dll + CP0016 + M:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.set_Url(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll - CP0014 - M:System.Reflection.NullabilityInfo.get_GenericTypeArguments:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] - lib/net6.0/ktsu.ThemeProvider.ImGui.dll - lib/net7.0/ktsu.ThemeProvider.ImGui.dll + CP0016 + M:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.#ctor(System.String,System.Object[])$1:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll - CP0014 - M:System.Reflection.NullabilityInfo.get_ReadState:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] - lib/net6.0/ktsu.ThemeProvider.ImGui.dll - lib/net7.0/ktsu.ThemeProvider.ImGui.dll + CP0016 + M:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.get_Arguments->object?[]:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll - CP0014 - M:System.Reflection.NullabilityInfo.get_Type:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] - lib/net6.0/ktsu.ThemeProvider.ImGui.dll - lib/net7.0/ktsu.ThemeProvider.ImGui.dll + CP0016 + M:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.#ctor(System.String,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll - CP0014 - M:System.Reflection.NullabilityInfo.get_WriteState:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] - lib/net6.0/ktsu.ThemeProvider.ImGui.dll - lib/net7.0/ktsu.ThemeProvider.ImGui.dll + CP0016 + M:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.get_Category:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll - CP0014 - M:System.Runtime.Versioning.OSPlatformAttribute.get_PlatformName:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] - lib/net6.0/ktsu.ThemeProvider.ImGui.dll - lib/net7.0/ktsu.ThemeProvider.ImGui.dll + CP0016 + M:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.get_CheckId:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll - CP0014 - M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.get_UrlFormat:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] - lib/net8.0/ktsu.ThemeProvider.ImGui.dll - lib/net9.0/ktsu.ThemeProvider.ImGui.dll + CP0016 + M:System.Index.Equals(System.Object):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll - CP0014 - M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.set_UrlFormat(System.String):[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] - lib/net8.0/ktsu.ThemeProvider.ImGui.dll - lib/net9.0/ktsu.ThemeProvider.ImGui.dll + CP0016 + M:System.Index.ToString:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll - CP0015 - T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute:[T:System.AttributeUsageAttribute] - lib/net5.0/ktsu.ThemeProvider.ImGui.dll - lib/net6.0/ktsu.ThemeProvider.ImGui.dll + CP0016 + M:System.IO.Compression.ZLibStream.BeginRead(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)$3:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll - CP0015 - T:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute:[T:System.AttributeUsageAttribute] - lib/net5.0/ktsu.ThemeProvider.ImGui.dll - lib/net6.0/ktsu.ThemeProvider.ImGui.dll + CP0016 + M:System.IO.Compression.ZLibStream.BeginRead(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)$4:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll - CP0015 - T:System.Runtime.Versioning.SupportedOSPlatformAttribute:[T:System.AttributeUsageAttribute] - lib/net5.0/ktsu.ThemeProvider.ImGui.dll - lib/net6.0/ktsu.ThemeProvider.ImGui.dll + CP0016 + M:System.IO.Compression.ZLibStream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)$3:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll - CP0015 - T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute:[T:System.AttributeUsageAttribute] - lib/net5.0/ktsu.ThemeProvider.ImGui.dll - lib/net6.0/ktsu.ThemeProvider.ImGui.dll + CP0016 + M:System.IO.Compression.ZLibStream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)$4:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Index.Equals(System.Object)$0:[T:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute] - lib/net5.0/ktsu.ThemeProvider.ImGui.dll - lib/net6.0/ktsu.ThemeProvider.ImGui.dll + M:System.IO.Compression.ZLibStream.Read(System.Span{System.Byte}):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Range.Equals(System.Object)$0:[T:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute] - lib/net5.0/ktsu.ThemeProvider.ImGui.dll - lib/net6.0/ktsu.ThemeProvider.ImGui.dll + M:System.IO.Compression.ZLibStream.ReadAsync(System.Memory{System.Byte},System.Threading.CancellationToken):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - F:System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute.CallConvs:[T:System.Runtime.CompilerServices.NullableAttribute] + M:System.IO.Compression.ZLibStream.Write(System.ReadOnlySpan{System.Byte}):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - F:System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute.EntryPoint:[T:System.Runtime.CompilerServices.NullableAttribute] + M:System.IO.Compression.ZLibStream.WriteAsync(System.ReadOnlyMemory{System.Byte},System.Threading.CancellationToken):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Collections.Generic.KeyValuePair.Create``2(``0,``1)->System.Collections.Generic.KeyValuePair<TKey, TValue>:[T:System.Runtime.CompilerServices.NullableAttribute] + M:System.Range.Equals(System.Object):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Collections.Generic.KeyValuePair.Create``2(``0,``1):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Range.ToString:[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Collections.Generic.KeyValuePair.Create``2(``0,``1)<0>:[T:System.Runtime.CompilerServices.NullableAttribute] + M:System.Reflection.NullabilityInfo.get_ElementType:[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Collections.Generic.KeyValuePair.Create``2(``0,``1)<1>:[T:System.Runtime.CompilerServices.NullableAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.#ctor(System.Int32,System.Int32,System.IFormatProvider,System.Span{System.Char}):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.#ctor(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes,System.String,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.#ctor(System.Int32,System.Int32,System.IFormatProvider,System.Span{System.Char})$2:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.#ctor(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes,System.Type):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted(System.ReadOnlySpan{System.Char},System.Int32,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.#ctor(System.String,System.String,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted(System.ReadOnlySpan{System.Char},System.Int32,System.String)$2:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.#ctor(System.String,System.Type):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted(System.ReadOnlySpan{System.Char}):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.#ctor(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted``1(``0,System.Int32,System.String)$0:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.get_Url:[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted``1(``0,System.Int32):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.set_Url(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted``1(``0,System.Int32)<0>:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.get_Url:[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted``1(``0,System.String)$0:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.set_Url(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted``1(``0):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.#ctor(System.String,System.Object[])$1:[T:System.Runtime.CompilerServices.NullableAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted``1(``0)<0>:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.get_Arguments->object?[]:[T:System.Runtime.CompilerServices.NullableAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendLiteral(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.#ctor(System.String,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.ToString:[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.get_Category:[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.ToStringAndClear:[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.get_CheckId:[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.InteropServices.CollectionsMarshal.AsSpan``1(System.Collections.Generic.List{``0})->System.Span<T>:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Index.Equals(System.Object):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.InteropServices.CollectionsMarshal.AsSpan``1(System.Collections.Generic.List{``0}):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Index.ToString:[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.InteropServices.CollectionsMarshal.AsSpan``1(System.Collections.Generic.List{``0})$0:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Range.Equals(System.Object):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.InteropServices.CollectionsMarshal.GetValueRefOrAddDefault``2(System.Collections.Generic.Dictionary{``0,``1},``0,System.Boolean@)->TValue?:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Range.ToString:[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.InteropServices.CollectionsMarshal.GetValueRefOrAddDefault``2(System.Collections.Generic.Dictionary{``0,``1},``0,System.Boolean@)<1>:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll CP0016 - M:System.Reflection.NullabilityInfo.get_ElementType:[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.InteropServices.CollectionsMarshal.GetValueRefOrNullRef``2(System.Collections.Generic.Dictionary{``0,``1},``0)<1>:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll @@ -709,6 +1405,30 @@ lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + CP0016 + T:System.Buffers.ReadOnlySpanAction`2<0>:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + T:System.Buffers.ReadOnlySpanAction`2<1>:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + T:System.Buffers.SpanAction`2<0>:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + T:System.Buffers.SpanAction`2<1>:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + CP0016 T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute:[T:System.Runtime.CompilerServices.NullableAttribute] @@ -769,6 +1489,18 @@ lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + CP0016 + T:System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + T:System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + CP0016 T:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute:[T:System.Runtime.CompilerServices.NullableAttribute] @@ -829,6 +1561,18 @@ lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + CP0016 + T:System.IO.Compression.ZLibStream:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + T:System.IO.Compression.ZLibStream:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + CP0016 T:System.Reflection.NullabilityInfo:[T:System.Runtime.CompilerServices.NullableAttribute] @@ -877,12 +1621,48 @@ lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + CP0016 + T:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + T:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + T:System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + T:System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + CP0016 T:System.Runtime.CompilerServices.RequiredMemberAttribute:[T:System.ComponentModel.EditorBrowsableAttribute] lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + CP0016 + T:System.Runtime.InteropServices.CollectionsMarshal:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + T:System.Runtime.InteropServices.CollectionsMarshal:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.ImGui.dll + lib/net8.0/ktsu.ThemeProvider.ImGui.dll + CP0016 T:System.Runtime.Versioning.ObsoletedOSPlatformAttribute:[T:System.Runtime.CompilerServices.NullableAttribute] @@ -931,4 +1711,82 @@ lib/net7.0/ktsu.ThemeProvider.ImGui.dll lib/net8.0/ktsu.ThemeProvider.ImGui.dll - + + CP0016 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All:[T:System.ComponentModel.EditorBrowsableAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.#ctor(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.get_DiagnosticId:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.#ctor(System.Int32,System.Int32,System.IFormatProvider):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted(System.Object,System.Int32,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted(System.String,System.Int32,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted``1(``0,System.Int32,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted``1(``0,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + P:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.Condition:[T:System.ComponentModel.EditorBrowsableAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + P:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.Condition:[T:System.ObsoleteAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + P:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.DiagnosticId:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + + CP0016 + T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute:[T:System.Runtime.CompilerServices.CompilerLoweringPreserveAttribute] + lib/net9.0/ktsu.ThemeProvider.ImGui.dll + lib/net10.0/ktsu.ThemeProvider.ImGui.dll + + \ No newline at end of file diff --git a/ThemeProvider/CompatibilitySuppressions.xml b/ThemeProvider/CompatibilitySuppressions.xml index 22962c9..661d2eb 100644 --- a/ThemeProvider/CompatibilitySuppressions.xml +++ b/ThemeProvider/CompatibilitySuppressions.xml @@ -1,12 +1,24 @@  + + CP0001 + T:System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute + lib/net5.0/ktsu.ThemeProvider.dll + lib/net6.0/ktsu.ThemeProvider.dll + CP0001 T:System.Diagnostics.StackTraceHiddenAttribute lib/net5.0/ktsu.ThemeProvider.dll lib/net6.0/ktsu.ThemeProvider.dll + + CP0001 + T:System.IO.Compression.ZLibStream + lib/net5.0/ktsu.ThemeProvider.dll + lib/net6.0/ktsu.ThemeProvider.dll + CP0001 T:System.Reflection.NullabilityInfo @@ -19,6 +31,30 @@ lib/net5.0/ktsu.ThemeProvider.dll lib/net6.0/ktsu.ThemeProvider.dll + + CP0001 + T:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler + lib/net5.0/ktsu.ThemeProvider.dll + lib/net6.0/ktsu.ThemeProvider.dll + + + CP0001 + T:System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute + lib/net5.0/ktsu.ThemeProvider.dll + lib/net6.0/ktsu.ThemeProvider.dll + + + CP0001 + T:System.Runtime.CompilerServices.InterpolatedStringHandlerAttribute + lib/net5.0/ktsu.ThemeProvider.dll + lib/net6.0/ktsu.ThemeProvider.dll + + + CP0001 + T:System.Runtime.InteropServices.PosixSignal + lib/net5.0/ktsu.ThemeProvider.dll + lib/net6.0/ktsu.ThemeProvider.dll + CP0001 T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute @@ -127,6 +163,24 @@ lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll + + CP0001 + T:System.Threading.Tasks.ConfigureAwaitOptions + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0001 + T:System.Buffers.Text.Base64Url + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0001 + T:System.Collections.Generic.IAlternateEqualityComparer`2 + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + CP0001 T:System.Diagnostics.CodeAnalysis.FeatureGuardAttribute @@ -163,6 +217,24 @@ lib/net8.0/ktsu.ThemeProvider.dll lib/net9.0/ktsu.ThemeProvider.dll + + CP0001 + T:System.Runtime.CompilerServices.CompilerLoweringPreserveAttribute + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0001 + T:System.Buffers.ReadOnlySpanAction`2 + lib/netstandard2.0/ktsu.ThemeProvider.dll + lib/netstandard2.1/ktsu.ThemeProvider.dll + + + CP0001 + T:System.Buffers.SpanAction`2 + lib/netstandard2.0/ktsu.ThemeProvider.dll + lib/netstandard2.1/ktsu.ThemeProvider.dll + CP0001 T:System.Collections.Generic.KeyValuePair @@ -229,12 +301,36 @@ lib/netstandard2.0/ktsu.ThemeProvider.dll lib/netstandard2.1/ktsu.ThemeProvider.dll + + CP0001 + T:System.IO.EnumerationOptions + lib/netstandard2.0/ktsu.ThemeProvider.dll + lib/netstandard2.1/ktsu.ThemeProvider.dll + + + CP0001 + T:System.IO.MatchCasing + lib/netstandard2.0/ktsu.ThemeProvider.dll + lib/netstandard2.1/ktsu.ThemeProvider.dll + + + CP0001 + T:System.IO.MatchType + lib/netstandard2.0/ktsu.ThemeProvider.dll + lib/netstandard2.1/ktsu.ThemeProvider.dll + CP0001 T:System.Range lib/netstandard2.0/ktsu.ThemeProvider.dll lib/netstandard2.1/ktsu.ThemeProvider.dll + + CP0001 + T:System.Security.Cryptography.CryptographicOperations + lib/netstandard2.0/ktsu.ThemeProvider.dll + lib/netstandard2.1/ktsu.ThemeProvider.dll + CP0001 T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute @@ -301,6 +397,12 @@ lib/netstandard2.1/ktsu.ThemeProvider.dll lib/net5.0/ktsu.ThemeProvider.dll + + CP0001 + T:System.Runtime.InteropServices.CollectionsMarshal + lib/netstandard2.1/ktsu.ThemeProvider.dll + lib/net5.0/ktsu.ThemeProvider.dll + CP0001 T:System.Runtime.InteropServices.SuppressGCTransitionAttribute @@ -343,6 +445,30 @@ lib/net5.0/ktsu.ThemeProvider.dll lib/net6.0/ktsu.ThemeProvider.dll + + CP0002 + M:System.IO.EnumerationOptions.get_MaxRecursionDepth + lib/net5.0/ktsu.ThemeProvider.dll + lib/net6.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.IO.EnumerationOptions.set_MaxRecursionDepth(System.Int32) + lib/net5.0/ktsu.ThemeProvider.dll + lib/net6.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Runtime.InteropServices.CollectionsMarshal.GetValueRefOrAddDefault``2(System.Collections.Generic.Dictionary{``0,``1},``0,System.Boolean@) + lib/net5.0/ktsu.ThemeProvider.dll + lib/net6.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Runtime.InteropServices.CollectionsMarshal.GetValueRefOrNullRef``2(System.Collections.Generic.Dictionary{``0,``1},``0) + lib/net5.0/ktsu.ThemeProvider.dll + lib/net6.0/ktsu.ThemeProvider.dll + CP0002 M:System.Runtime.Versioning.UnsupportedOSPlatformAttribute.#ctor(System.String,System.String) @@ -356,11 +482,275 @@ lib/net7.0/ktsu.ThemeProvider.dll - CP0008 - T:ktsu.ThemeProvider.AccessibilityLevel + CP0002 + M:System.Runtime.InteropServices.CollectionsMarshal.SetCount``1(System.Collections.Generic.List{``0},System.Int32) lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll + + CP0002 + M:System.IO.Compression.ZLibStream.#ctor(System.IO.Stream,System.IO.Compression.ZLibCompressionOptions,System.Boolean) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Runtime.InteropServices.CollectionsMarshal.GetValueRefOrAddDefault``3(System.Collections.Generic.Dictionary{``0,``1}.AlternateLookup{``2},``2,System.Boolean@) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Runtime.InteropServices.CollectionsMarshal.GetValueRefOrNullRef``3(System.Collections.Generic.Dictionary{``0,``1}.AlternateLookup{``2},``2) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HashData(System.Security.Cryptography.HashAlgorithmName,System.Byte[]) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HashData(System.Security.Cryptography.HashAlgorithmName,System.IO.Stream,System.Span{System.Byte}) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HashData(System.Security.Cryptography.HashAlgorithmName,System.IO.Stream) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HashData(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan{System.Byte},System.Span{System.Byte}) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HashData(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan{System.Byte}) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HashDataAsync(System.Security.Cryptography.HashAlgorithmName,System.IO.Stream,System.Memory{System.Byte},System.Threading.CancellationToken) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HashDataAsync(System.Security.Cryptography.HashAlgorithmName,System.IO.Stream,System.Threading.CancellationToken) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HmacData(System.Security.Cryptography.HashAlgorithmName,System.Byte[],System.Byte[]) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HmacData(System.Security.Cryptography.HashAlgorithmName,System.Byte[],System.IO.Stream) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HmacData(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan{System.Byte},System.IO.Stream,System.Span{System.Byte}) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HmacData(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan{System.Byte},System.IO.Stream) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HmacData(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Span{System.Byte}) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HmacData(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte}) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HmacDataAsync(System.Security.Cryptography.HashAlgorithmName,System.Byte[],System.IO.Stream,System.Threading.CancellationToken) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HmacDataAsync(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlyMemory{System.Byte},System.IO.Stream,System.Memory{System.Byte},System.Threading.CancellationToken) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.HmacDataAsync(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlyMemory{System.Byte},System.IO.Stream,System.Threading.CancellationToken) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.TryHashData(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan{System.Byte},System.Span{System.Byte},System.Int32@) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Security.Cryptography.CryptographicOperations.TryHmacData(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Span{System.Byte},System.Int32@) + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllConstructors + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllEvents + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllFields + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllMethods + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllNestedTypes + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllProperties + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructorsWithInherited + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicEventsWithInherited + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFieldsWithInherited + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethodsWithInherited + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicNestedTypesWithInherited + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicPropertiesWithInherited + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructorsWithInherited + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypesWithInherited + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.get_Message + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.set_Message(System.String) + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.get_ExcludeStatics + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.set_ExcludeStatics(System.Boolean) + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.get_ExcludeStatics + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.set_ExcludeStatics(System.Boolean) + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.Clear + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.get_Text + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0002 + M:System.Runtime.InteropServices.CollectionsMarshal.AsBytes(System.Collections.BitArray) + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + CP0008 T:ktsu.ThemeProvider.Priority @@ -379,12 +769,36 @@ lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll + + CP0008 + T:System.IO.MatchCasing + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0008 + T:System.IO.MatchType + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + CP0008 T:System.IO.UnixFileMode lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll + + CP0008 + T:System.Runtime.InteropServices.PosixSignal + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0008 + T:System.Text.SpanLineEnumerator + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + CP0014 M:System.Reflection.NullabilityInfo.get_ElementType:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] @@ -392,326 +806,566 @@ lib/net7.0/ktsu.ThemeProvider.dll - CP0014 - M:System.Reflection.NullabilityInfo.get_GenericTypeArguments:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] - lib/net6.0/ktsu.ThemeProvider.dll - lib/net7.0/ktsu.ThemeProvider.dll + CP0014 + M:System.Reflection.NullabilityInfo.get_GenericTypeArguments:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] + lib/net6.0/ktsu.ThemeProvider.dll + lib/net7.0/ktsu.ThemeProvider.dll + + + CP0014 + M:System.Reflection.NullabilityInfo.get_ReadState:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] + lib/net6.0/ktsu.ThemeProvider.dll + lib/net7.0/ktsu.ThemeProvider.dll + + + CP0014 + M:System.Reflection.NullabilityInfo.get_Type:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] + lib/net6.0/ktsu.ThemeProvider.dll + lib/net7.0/ktsu.ThemeProvider.dll + + + CP0014 + M:System.Reflection.NullabilityInfo.get_WriteState:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] + lib/net6.0/ktsu.ThemeProvider.dll + lib/net7.0/ktsu.ThemeProvider.dll + + + CP0014 + M:System.Runtime.Versioning.OSPlatformAttribute.get_PlatformName:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] + lib/net6.0/ktsu.ThemeProvider.dll + lib/net7.0/ktsu.ThemeProvider.dll + + + CP0014 + M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.get_UrlFormat:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0014 + M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.set_UrlFormat(System.String):[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] + lib/net8.0/ktsu.ThemeProvider.dll + lib/net9.0/ktsu.ThemeProvider.dll + + + CP0014 + M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.get_UrlFormat:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0014 + M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.set_UrlFormat(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0014 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.#ctor(System.Int32,System.Int32,System.IFormatProvider,System.Span{System.Char}):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0014 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted(System.ReadOnlySpan{System.Char},System.Int32,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0014 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted(System.ReadOnlySpan{System.Char}):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0014 + P:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.UrlFormat:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0014 + T:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0014 + T:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0015 + T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute:[T:System.AttributeUsageAttribute] + lib/net5.0/ktsu.ThemeProvider.dll + lib/net6.0/ktsu.ThemeProvider.dll + + + CP0015 + T:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute:[T:System.AttributeUsageAttribute] + lib/net5.0/ktsu.ThemeProvider.dll + lib/net6.0/ktsu.ThemeProvider.dll + + + CP0015 + T:System.Runtime.Versioning.SupportedOSPlatformAttribute:[T:System.AttributeUsageAttribute] + lib/net5.0/ktsu.ThemeProvider.dll + lib/net6.0/ktsu.ThemeProvider.dll + + + CP0015 + T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute:[T:System.AttributeUsageAttribute] + lib/net5.0/ktsu.ThemeProvider.dll + lib/net6.0/ktsu.ThemeProvider.dll + + + CP0015 + T:System.Diagnostics.CodeAnalysis.ExperimentalAttribute:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0016 + M:System.Index.Equals(System.Object)$0:[T:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute] + lib/net5.0/ktsu.ThemeProvider.dll + lib/net6.0/ktsu.ThemeProvider.dll + + + CP0016 + M:System.Range.Equals(System.Object)$0:[T:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute] + lib/net5.0/ktsu.ThemeProvider.dll + lib/net6.0/ktsu.ThemeProvider.dll + + + CP0016 + F:System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute.CallConvs:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + F:System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute.EntryPoint:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + M:ktsu.ThemeProvider.SemanticColorRequest.ToString:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + M:ktsu.ThemeProvider.ThemeRegistry.FindTheme(System.String)->ktsu.ThemeProvider.ThemeRegistry.ThemeInfo?:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + M:ktsu.ThemeProvider.ThemeRegistry.ThemeInfo.#ctor(System.String,System.String,System.String,System.Boolean,System.String,System.Func{ktsu.ThemeProvider.ISemanticTheme})$2:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + M:ktsu.ThemeProvider.ThemeRegistry.ThemeInfo.Deconstruct(System.String@,System.String@,System.String@,System.Boolean@,System.String@,System.Func{ktsu.ThemeProvider.ISemanticTheme}@)$2:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + M:ktsu.ThemeProvider.ThemeRegistry.ThemeInfo.Equals(ktsu.ThemeProvider.ThemeRegistry.ThemeInfo):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + M:ktsu.ThemeProvider.ThemeRegistry.ThemeInfo.Equals(System.Object):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + M:ktsu.ThemeProvider.ThemeRegistry.ThemeInfo.get_Variant:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + M:ktsu.ThemeProvider.ThemeRegistry.ThemeInfo.op_Equality(ktsu.ThemeProvider.ThemeRegistry.ThemeInfo,ktsu.ThemeProvider.ThemeRegistry.ThemeInfo):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + M:ktsu.ThemeProvider.ThemeRegistry.ThemeInfo.op_Inequality(ktsu.ThemeProvider.ThemeRegistry.ThemeInfo,ktsu.ThemeProvider.ThemeRegistry.ThemeInfo):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + M:ktsu.ThemeProvider.ThemeRegistry.ThemeInfo.set_Variant(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + M:System.Buffers.ReadOnlySpanAction`2.BeginInvoke(System.ReadOnlySpan{`0},`1,System.AsyncCallback,System.Object)$0:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + M:System.Buffers.ReadOnlySpanAction`2.BeginInvoke(System.ReadOnlySpan{`0},`1,System.AsyncCallback,System.Object)$1:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + M:System.Buffers.ReadOnlySpanAction`2.Invoke(System.ReadOnlySpan{`0},`1):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + M:System.Buffers.ReadOnlySpanAction`2.Invoke(System.ReadOnlySpan{`0},`1)$0:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + M:System.Buffers.SpanAction`2.BeginInvoke(System.Span{`0},`1,System.AsyncCallback,System.Object)$0:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + M:System.Buffers.SpanAction`2.BeginInvoke(System.Span{`0},`1,System.AsyncCallback,System.Object)$1:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + M:System.Buffers.SpanAction`2.Invoke(System.Span{`0},`1):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll - CP0014 - M:System.Reflection.NullabilityInfo.get_ReadState:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] - lib/net6.0/ktsu.ThemeProvider.dll - lib/net7.0/ktsu.ThemeProvider.dll + CP0016 + M:System.Buffers.SpanAction`2.Invoke(System.Span{`0},`1)$0:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll - CP0014 - M:System.Reflection.NullabilityInfo.get_Type:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] - lib/net6.0/ktsu.ThemeProvider.dll - lib/net7.0/ktsu.ThemeProvider.dll + CP0016 + M:System.Collections.Generic.KeyValuePair.Create``2(``0,``1)->System.Collections.Generic.KeyValuePair<TKey, TValue>:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll - CP0014 - M:System.Reflection.NullabilityInfo.get_WriteState:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] - lib/net6.0/ktsu.ThemeProvider.dll - lib/net7.0/ktsu.ThemeProvider.dll + CP0016 + M:System.Collections.Generic.KeyValuePair.Create``2(``0,``1):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll - CP0014 - M:System.Runtime.Versioning.OSPlatformAttribute.get_PlatformName:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] - lib/net6.0/ktsu.ThemeProvider.dll - lib/net7.0/ktsu.ThemeProvider.dll + CP0016 + M:System.Collections.Generic.KeyValuePair.Create``2(``0,``1)<0>:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll - CP0014 - M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.get_UrlFormat:[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] - lib/net8.0/ktsu.ThemeProvider.dll - lib/net9.0/ktsu.ThemeProvider.dll + CP0016 + M:System.Collections.Generic.KeyValuePair.Create``2(``0,``1)<1>:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll - CP0014 - M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.set_UrlFormat(System.String):[T:System.Runtime.CompilerServices.CompilerGeneratedAttribute] - lib/net8.0/ktsu.ThemeProvider.dll - lib/net9.0/ktsu.ThemeProvider.dll + CP0016 + M:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.#ctor(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes,System.String,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll - CP0015 - T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute:[T:System.AttributeUsageAttribute] - lib/net5.0/ktsu.ThemeProvider.dll - lib/net6.0/ktsu.ThemeProvider.dll + CP0016 + M:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.#ctor(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes,System.Type):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll - CP0015 - T:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute:[T:System.AttributeUsageAttribute] - lib/net5.0/ktsu.ThemeProvider.dll - lib/net6.0/ktsu.ThemeProvider.dll + CP0016 + M:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.#ctor(System.String,System.String,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll - CP0015 - T:System.Runtime.Versioning.SupportedOSPlatformAttribute:[T:System.AttributeUsageAttribute] - lib/net5.0/ktsu.ThemeProvider.dll - lib/net6.0/ktsu.ThemeProvider.dll + CP0016 + M:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.#ctor(System.String,System.Type):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll - CP0015 - T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute:[T:System.AttributeUsageAttribute] - lib/net5.0/ktsu.ThemeProvider.dll - lib/net6.0/ktsu.ThemeProvider.dll + CP0016 + M:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.#ctor(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Index.Equals(System.Object)$0:[T:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute] - lib/net5.0/ktsu.ThemeProvider.dll - lib/net6.0/ktsu.ThemeProvider.dll + M:System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute.#ctor(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Range.Equals(System.Object)$0:[T:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute] - lib/net5.0/ktsu.ThemeProvider.dll - lib/net6.0/ktsu.ThemeProvider.dll + M:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.get_Url:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll CP0016 - F:System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute.CallConvs:[T:System.Runtime.CompilerServices.NullableAttribute] + M:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.set_Url(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - F:System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute.EntryPoint:[T:System.Runtime.CompilerServices.NullableAttribute] + M:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.get_Url:[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:ktsu.ThemeProvider.ColorMath.CreateGradient(ktsu.ThemeProvider.RgbColor,ktsu.ThemeProvider.RgbColor,System.Int32):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.set_Url(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:ktsu.ThemeProvider.PerceptualColor.FromRgb(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.#ctor(System.String,System.Object[])$1:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:ktsu.ThemeProvider.RgbColor.FromHex(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.get_Arguments->object?[]:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:ktsu.ThemeProvider.RgbColor.ToHex:[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.#ctor(System.String,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:ktsu.ThemeProvider.SemanticColorRequest.ToString:[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.get_Category:[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:ktsu.ThemeProvider.SRgbColor.FromHex(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.get_CheckId:[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:ktsu.ThemeProvider.SRgbColor.ToHex:[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Index.Equals(System.Object):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:ktsu.ThemeProvider.ThemeRegistry.FindTheme(System.String)->ktsu.ThemeProvider.ThemeRegistry.ThemeInfo?:[T:System.Runtime.CompilerServices.NullableAttribute] + M:System.Index.ToString:[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:ktsu.ThemeProvider.ThemeRegistry.ThemeInfo.#ctor(System.String,System.String,System.String,System.Boolean,System.String,System.Func{ktsu.ThemeProvider.ISemanticTheme})$2:[T:System.Runtime.CompilerServices.NullableAttribute] + M:System.IO.Compression.ZLibStream.BeginRead(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)$3:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:ktsu.ThemeProvider.ThemeRegistry.ThemeInfo.Deconstruct(System.String@,System.String@,System.String@,System.Boolean@,System.String@,System.Func{ktsu.ThemeProvider.ISemanticTheme}@)$2:[T:System.Runtime.CompilerServices.NullableAttribute] + M:System.IO.Compression.ZLibStream.BeginRead(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)$4:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:ktsu.ThemeProvider.ThemeRegistry.ThemeInfo.Equals(ktsu.ThemeProvider.ThemeRegistry.ThemeInfo):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.IO.Compression.ZLibStream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)$3:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:ktsu.ThemeProvider.ThemeRegistry.ThemeInfo.Equals(System.Object):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.IO.Compression.ZLibStream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)$4:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:ktsu.ThemeProvider.ThemeRegistry.ThemeInfo.get_Variant:[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.IO.Compression.ZLibStream.Read(System.Span{System.Byte}):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:ktsu.ThemeProvider.ThemeRegistry.ThemeInfo.op_Equality(ktsu.ThemeProvider.ThemeRegistry.ThemeInfo,ktsu.ThemeProvider.ThemeRegistry.ThemeInfo):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.IO.Compression.ZLibStream.ReadAsync(System.Memory{System.Byte},System.Threading.CancellationToken):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:ktsu.ThemeProvider.ThemeRegistry.ThemeInfo.op_Inequality(ktsu.ThemeProvider.ThemeRegistry.ThemeInfo,ktsu.ThemeProvider.ThemeRegistry.ThemeInfo):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.IO.Compression.ZLibStream.Write(System.ReadOnlySpan{System.Byte}):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:ktsu.ThemeProvider.ThemeRegistry.ThemeInfo.set_Variant(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.IO.Compression.ZLibStream.WriteAsync(System.ReadOnlyMemory{System.Byte},System.Threading.CancellationToken):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Collections.Generic.KeyValuePair.Create``2(``0,``1)->System.Collections.Generic.KeyValuePair<TKey, TValue>:[T:System.Runtime.CompilerServices.NullableAttribute] + M:System.Range.Equals(System.Object):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Collections.Generic.KeyValuePair.Create``2(``0,``1):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Range.ToString:[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Collections.Generic.KeyValuePair.Create``2(``0,``1)<0>:[T:System.Runtime.CompilerServices.NullableAttribute] + M:System.Reflection.NullabilityInfo.get_ElementType:[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Collections.Generic.KeyValuePair.Create``2(``0,``1)<1>:[T:System.Runtime.CompilerServices.NullableAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.#ctor(System.Int32,System.Int32,System.IFormatProvider,System.Span{System.Char}):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.#ctor(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes,System.String,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.#ctor(System.Int32,System.Int32,System.IFormatProvider,System.Span{System.Char})$2:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.#ctor(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes,System.Type):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted(System.ReadOnlySpan{System.Char},System.Int32,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.#ctor(System.String,System.String,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted(System.ReadOnlySpan{System.Char},System.Int32,System.String)$2:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.#ctor(System.String,System.Type):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted(System.ReadOnlySpan{System.Char}):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.#ctor(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted``1(``0,System.Int32,System.String)$0:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.get_Url:[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted``1(``0,System.Int32):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.set_Url(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted``1(``0,System.Int32)<0>:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.get_Url:[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted``1(``0,System.String)$0:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.set_Url(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted``1(``0):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.#ctor(System.String,System.Object[])$1:[T:System.Runtime.CompilerServices.NullableAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted``1(``0)<0>:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.get_Arguments->object?[]:[T:System.Runtime.CompilerServices.NullableAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendLiteral(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.#ctor(System.String,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.ToString:[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.get_Category:[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.ToStringAndClear:[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.get_CheckId:[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.InteropServices.CollectionsMarshal.AsSpan``1(System.Collections.Generic.List{``0})->System.Span<T>:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Index.Equals(System.Object):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.InteropServices.CollectionsMarshal.AsSpan``1(System.Collections.Generic.List{``0}):[T:System.Runtime.CompilerServices.NullableContextAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Index.ToString:[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.InteropServices.CollectionsMarshal.AsSpan``1(System.Collections.Generic.List{``0})$0:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Range.Equals(System.Object):[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.InteropServices.CollectionsMarshal.GetValueRefOrAddDefault``2(System.Collections.Generic.Dictionary{``0,``1},``0,System.Boolean@)->TValue?:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Range.ToString:[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.InteropServices.CollectionsMarshal.GetValueRefOrAddDefault``2(System.Collections.Generic.Dictionary{``0,``1},``0,System.Boolean@)<1>:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll CP0016 - M:System.Reflection.NullabilityInfo.get_ElementType:[T:System.Runtime.CompilerServices.NullableContextAttribute] + M:System.Runtime.InteropServices.CollectionsMarshal.GetValueRefOrNullRef``2(System.Collections.Generic.Dictionary{``0,``1},``0)<1>:[T:System.Runtime.CompilerServices.NullableAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll @@ -1321,6 +1975,30 @@ lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll + + CP0016 + T:System.Buffers.ReadOnlySpanAction`2<0>:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + T:System.Buffers.ReadOnlySpanAction`2<1>:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + T:System.Buffers.SpanAction`2<0>:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + T:System.Buffers.SpanAction`2<1>:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + CP0016 T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute:[T:System.Runtime.CompilerServices.NullableAttribute] @@ -1381,6 +2059,18 @@ lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll + + CP0016 + T:System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + T:System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + CP0016 T:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute:[T:System.Runtime.CompilerServices.NullableAttribute] @@ -1441,6 +2131,18 @@ lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll + + CP0016 + T:System.IO.Compression.ZLibStream:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + T:System.IO.Compression.ZLibStream:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + CP0016 T:System.Reflection.NullabilityInfo:[T:System.Runtime.CompilerServices.NullableAttribute] @@ -1489,12 +2191,48 @@ lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll + + CP0016 + T:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + T:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + T:System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + T:System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + CP0016 T:System.Runtime.CompilerServices.RequiredMemberAttribute:[T:System.ComponentModel.EditorBrowsableAttribute] lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll + + CP0016 + T:System.Runtime.InteropServices.CollectionsMarshal:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + + + CP0016 + T:System.Runtime.InteropServices.CollectionsMarshal:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net7.0/ktsu.ThemeProvider.dll + lib/net8.0/ktsu.ThemeProvider.dll + CP0016 T:System.Runtime.Versioning.ObsoletedOSPlatformAttribute:[T:System.Runtime.CompilerServices.NullableAttribute] @@ -1543,4 +2281,82 @@ lib/net7.0/ktsu.ThemeProvider.dll lib/net8.0/ktsu.ThemeProvider.dll - + + CP0016 + F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All:[T:System.ComponentModel.EditorBrowsableAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0016 + M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.#ctor(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0016 + M:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.get_DiagnosticId:[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0016 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.#ctor(System.Int32,System.Int32,System.IFormatProvider):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0016 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted(System.Object,System.Int32,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0016 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted(System.String,System.Int32,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0016 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted(System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0016 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted``1(``0,System.Int32,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0016 + M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted``1(``0,System.String):[T:System.Runtime.CompilerServices.NullableContextAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0016 + P:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.Condition:[T:System.ComponentModel.EditorBrowsableAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0016 + P:System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.Condition:[T:System.ObsoleteAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0016 + P:System.Diagnostics.CodeAnalysis.ExperimentalAttribute.DiagnosticId:[T:System.Runtime.CompilerServices.NullableAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + + CP0016 + T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute:[T:System.Runtime.CompilerServices.CompilerLoweringPreserveAttribute] + lib/net9.0/ktsu.ThemeProvider.dll + lib/net10.0/ktsu.ThemeProvider.dll + + \ No newline at end of file diff --git a/docs/superpowers/plans/2026-06-29-themeprovider-semantics-color-migration.md b/docs/superpowers/plans/2026-06-29-themeprovider-semantics-color-migration.md new file mode 100644 index 0000000..0adf60f --- /dev/null +++ b/docs/superpowers/plans/2026-06-29-themeprovider-semantics-color-migration.md @@ -0,0 +1,114 @@ +# ThemeProvider → ktsu.Semantics.Color Migration Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax. + +**Goal:** Replace ThemeProvider's in-house color types (`RgbColor`, `SRgbColor`, `OklabColor`, `PerceptualColor`, `ColorMath`, `AccessibilityLevel`, and the color-science half of `ColorRange`) with the `ktsu.Semantics.Color` NuGet package (2.3.0), fixing the long-standing sRGB-as-linear gamma bug in the process. + +**Architecture:** The public currency type `PerceptualColor` becomes `ktsu.Semantics.Color.Color` (linear RGB + alpha) across `ISemanticTheme`, `SemanticColorMapper`, the ~40 themes, and `ImGuiPaletteMapper` (breaking → major version bump). Theme base colors are parsed with `Color.FromHex` (correct sRGB decode) and emitted to ImGui via `ToSrgbVector4()`, so **base palette colors render identically** (hex→linear→sRGB round-trips) while the semantic mapper's **derived** colors and accessibility numbers become correct. Bespoke business logic (lightness bucketing, in-gamut chroma fitting, dark/light ordering) is re-homed onto `Color`. + +**Tech Stack:** C# / .NET, ktsu.Sdk, multi-target (unchanged — `Semantics.Color` supports netstandard2.0/2.1 + net8–10, so ThemeProvider keeps all its TFMs), Central Package Management, MSTest (new test project), Hexa.NET.ImGui (ImGui package). + +**Source map:** see the migration-surface report (mapping table) captured in the session; key public-API signatures cited inline below. + +## Global Constraints + +- **Gamma rule (the point of this migration):** parse theme hex with `Color.FromHex(...)`; emit to ImGui with `ToSrgbVector4()`. Never `Color.FromLinear(bytes)` and never `ToLinearVector4()` for ImGui output — that would re-introduce the bug. +- File header on every .cs file: `// Copyright (c) ktsu.dev` / `// All rights reserved.` / `// Licensed under the MIT license.` +- Tabs; CRLF; no UTF-8 BOM on .cs files; final newline (.editorconfig). The Write tool emits LF/no-BOM — normalize to CRLF without a BOM after writing; verify first bytes `2f 2f`. +- File-scoped namespaces; usings inside namespace; no `this.`; explicit accessibility; braces everywhere; nullable on; warnings-as-errors. +- Library namespace stays `ktsu.ThemeProvider`. Reference the new package with `using ktsu.Semantics.Color;` — but the type `Color` collides with that namespace segment, so in files under `namespace ktsu.ThemeProvider` use `using ktsu.Semantics.Color;` (no segment clash there) and refer to `Color` directly. (Only test/adapter namespaces that themselves end in a clashing segment need an alias.) +- Breaking change → **major version bump** (commit with `[major]` tag). Regenerate the `CompatibilitySuppressions.xml` ApiCompat baseline. +- `AccessibilityLevel` enum: delete the local one; use `ktsu.Semantics.Color.AccessibilityLevel` (same members Fail/AA/AAA). +- Build a project: `dotnet build .csproj`. Build all: `dotnet build ThemeProvider.sln`. + +## Repo facts + +- Projects in `ThemeProvider.sln`: `ThemeProvider` (lib), `ThemeProvider.ImGui` (lib), `ThemeProviderDemo` (exe). **No test project today.** +- CPM in `Directory.Packages.props`. Current version `1.0.23` (VERSION.md is auto-managed — do NOT hand-edit; the `[major]` commit tag drives the bump). +- `ThemeProvider/CompatibilitySuppressions.xml` has an entry for `ColorMath.CreateGradient(...)` — will be stale after deletion. + +--- + +### Task 1: Migrate the `ThemeProvider` library (coordinated type swap) + +This task is atomic by necessity — deleting `PerceptualColor` and changing `ISemanticTheme` breaks every theme and the mapper at once. The deliverable is a green `dotnet build ThemeProvider/ThemeProvider.csproj`. + +**Files:** +- Modify: `Directory.Packages.props`, `ThemeProvider/ThemeProvider.csproj` +- Delete: `ThemeProvider/RgbColor.cs`, `SRgbColor.cs`, `OklabColor.cs`, `PerceptualColor.cs`, `ColorMath.cs`, `AccessibilityLevel.cs` +- Modify: `ThemeProvider/ISemanticTheme.cs`, `SemanticColorMapper.cs`, `ColorRange.cs`, all `ThemeProvider/Themes/**/*.cs` (~40 files) + +**Steps:** + +- [ ] **Step 1: Add the dependency.** In `Directory.Packages.props` add ``. In `ThemeProvider/ThemeProvider.csproj` add ``. +- [ ] **Step 2: Delete the six in-house type files** listed above. +- [ ] **Step 3: Migrate `ISemanticTheme.cs`** — `Dictionary> SemanticMapping` → `Collection`; add `using ktsu.Semantics.Color;`. +- [ ] **Step 4: Migrate the ~40 theme files** (mechanical, uniform): `using ktsu.Semantics.Color;`; `PerceptualColor` → `Color`; `PerceptualColor.FromRgb("#hex")` → `Color.FromHex("#hex")`. The `SemanticMapping` dictionary literals and `Neutrals` collections are unchanged except the generic arg. +- [ ] **Step 5: Rewrite `SemanticColorMapper.cs` onto `Color`.** Replacements (preserve the algorithm exactly — only swap the color primitives): + - `color.Lightness` → `color.ToOklab().L`. **Perf:** in `CalculateGlobalLightnessRange`, `InterpolateBetweenColors`, and any `OrderBy(c => c.Lightness)`, precompute `(Color color, double l)` pairs once (don't call `ToOklab()` inside `OrderBy`/inner loops). + - `PerceptualColor.SemanticDistanceTo` → `Color.DistanceTo`. + - `ColorMath.OklabToRgb(new OklabColor(targetL, a, b))` → `Color.FromOklab(new Oklab(targetL, a, b))`; hue/chroma via `Color.ToOklch()` (`.H`/`.C`) or `ToOklab()` (`.A`/`.B`). + - The in-gamut **chroma-reduction binary search** in `ExtrapolateColorToLightness` is bespoke — keep it; test gamut by whether `Color.FromOklab(...)`'s `R/G/B` ∈ [0,1] (use `.Clamp()` only for the final emit, not the gamut test). + - `OklabColor.Lerp` → `Color.MixOklab(other, t)`. + - Any `ColorMath.GetContrastRatio/GetRelativeLuminance/GetAccessibilityLevel/AdjustForAccessibility` → `Color.ContrastRatio/RelativeLuminance/AccessibilityLevelAgainst/AdjustForContrast`. + - `MapColors`/`MakeCompletePalette` return `IReadOnlyDictionary`. +- [ ] **Step 6: Rewrite `ColorRange.cs` onto `Color`** — `SemanticDistanceTo` → `DistanceTo`; lightness ordering via the precomputed Oklab L. Keep its ordering business logic. +- [ ] **Step 7: Build.** `dotnet build ThemeProvider/ThemeProvider.csproj` → 0 warnings / 0 errors across all TFMs. +- [ ] **Step 8: Commit** (`feat(color)!: migrate ThemeProvider core to ktsu.Semantics.Color`). + +--- + +### Task 2: Migrate `ThemeProvider.ImGui` + +**Files:** Modify `ThemeProvider.ImGui/ImGuiPaletteMapper.cs`. + +- [ ] **Step 1:** `IReadOnlyDictionary` → `...Color`. The per-color emit `new Vector4(color.RgbValue.R, .G, .B, 1f)` → `color.ToSrgbVector4()` (gamma-correct — this is the consumer-side half of the fix). Add `using ktsu.Semantics.Color;`. +- [ ] **Step 2:** `dotnet build ThemeProvider.ImGui/ThemeProvider.ImGui.csproj` green. +- [ ] **Step 3:** Commit. + +--- + +### Task 3: Migrate `ThemeProviderDemo` + +**Files:** Modify `ThemeProviderDemo/Program.cs`. + +- [ ] **Step 1:** `PerceptualColor` → `Color`; palette dict type updated. Replace the ~10 `if (color != default)` "not found" sentinels — `default(Color)` is `(0,0,0,0)`, a valid-looking color, so the idiom is unsafe. Use `TryGetValue(...)` results / a `Color?` rather than `!= default` (look up via the dictionary's `TryGetValue` and branch on the bool). +- [ ] **Step 2:** `dotnet build ThemeProvider.sln` → whole solution green. +- [ ] **Step 3:** Commit. + +--- + +### Task 4: Add a characterization/invariant test project + +**Files:** Create `ThemeProvider.Test/ThemeProvider.Test.csproj` (MSTest.Sdk + ktsu.Sdk, net10.0), `ThemeProvider.Test/*.cs`; add to `ThemeProvider.sln` via `dotnet sln add`. + +- [ ] **Step 1: Base-color round-trip invariant** — for a representative sample of theme base colors (e.g. Catppuccin Mocha, Gruvbox Dark, Nord, TokyoNight), assert `Color.FromHex(hex).ToSrgbVector4()` channels equal `originalBytes/255` within 1/255 (proves base colors render unchanged — the gamma fix is display-safe). +- [ ] **Step 2: Semantic mapper sanity** — for a couple of themes, `SemanticColorMapper.MakeCompletePalette(theme)` returns colors that are all in gamut (R/G/B ∈ [0,1]) and that requested-priority lightness ordering is monotonic. +- [ ] **Step 3: Accessibility sanity** — a known fg/bg pair yields the expected `AccessibilityLevel`; `AdjustForContrast` reaches the requested level. +- [ ] **Step 4:** `dotnet test ThemeProvider.Test/ThemeProvider.Test.csproj` → all pass. +- [ ] **Step 5:** Commit. + +--- + +### Task 5: ApiCompat baseline, docs, version bump + +**Files:** `ThemeProvider/CompatibilitySuppressions.xml`, `README.md`, `CLAUDE.md`, `DESCRIPTION.md`, `TAGS.md`. + +- [ ] **Step 1:** Regenerate / clear `CompatibilitySuppressions.xml` for the major break (remove the stale `ColorMath.CreateGradient` entry; the major version bump permits the API removals). If the ktsu.Sdk ApiCompat target fails the build, follow its documented baseline-update step. +- [ ] **Step 2:** Update `README.md` (the color examples ~118-162 and the API table ~357), `CLAUDE.md` (lines ~34-37 referencing `ColorMath.cs`/`SRgbColor.cs`), `DESCRIPTION.md`, `TAGS.md` — remove deleted types, point at `ktsu.Semantics.Color`. (Do NOT hand-edit VERSION.md/CHANGELOG.md/LICENSE.md.) +- [ ] **Step 3:** Build the whole solution once more; ensure clean. +- [ ] **Step 4:** Commit with a `[major]` tag in the message (drives the version bump). + +--- + +## Self-Review checklist +- Gamma rule applied everywhere (FromHex in / ToSrgbVector4 out); no `FromLinear(bytes)` or `ToLinearVector4()` on the ImGui path. +- All six in-house color files deleted; no dangling references; `AccessibilityLevel` now from Semantics.Color. +- Public API: `PerceptualColor` gone from every signature (ISemanticTheme, SemanticColorMapper, ImGuiPaletteMapper, theme statics). +- Mapper algorithm unchanged except primitives; hot loops cache Oklab L. +- Demo `!= default` sentinels replaced with TryGetValue/`Color?`. +- Multi-target build clean; ApiCompat baseline updated; docs updated; `[major]` commit. + +## Risks +- **Mapper rewrite (Task 1, Step 5)** is the only judgment-heavy part — the gamut chroma search and lightness bucketing must be preserved verbatim, only the color primitives swapped. Review this diff closely against the original. +- **No pre-existing tests** — Task 4's invariants are the first safety net; they pin the display-stability guarantee and gamut/accessibility sanity, but cannot prove the derived-color shift is "right" (it's the intended correctness change).