| File: ColorTable.cs | Web Access |
| Project: src\src\SingleProject\Resizetizer\src\Resizetizer.csproj (Microsoft.Maui.Resizetizer) |
// Based on: https://github.com/dotnet/runtime/blob/776dd1d3318760bf2328f66a544ed377d78b2099/src/libraries/Common/src/System/Drawing/ColorTable.cs #nullable enable using System; using System.Collections.Generic; using System.Reflection; using SkiaSharp; namespace Microsoft.Maui.Resizetizer { static class ColorTable { static readonly Lazy<Dictionary<string, SKColor>> ColorConstants = new Lazy<Dictionary<string, SKColor>>(GetColors); static Dictionary<string, SKColor> GetColors() { var colors = new Dictionary<string, SKColor>(StringComparer.OrdinalIgnoreCase); // add from SKColors fields FillWithProperties(colors, typeof(SKColors)); // add "grey" (with an "e") overloads colors.Add("DarkGrey", colors["DarkGray"]); colors.Add("DarkSlateGrey", colors["DarkSlateGray"]); colors.Add("DimGrey", colors["DimGray"]); colors.Add("Grey", colors["Gray"]); colors.Add("LightGrey", colors["LightGray"]); colors.Add("LightSlateGrey", colors["LightSlateGray"]); colors.Add("SlateGrey", colors["SlateGray"]); return colors; } static void FillWithProperties(Dictionary<string, SKColor> dictionary, Type typeWithColors) { foreach (FieldInfo field in typeWithColors.GetFields(BindingFlags.Public | BindingFlags.Static)) { if (field.FieldType == typeof(SKColor)) dictionary[field.Name] = (SKColor)field.GetValue(null)!; } } static Dictionary<string, SKColor> Colors => ColorConstants.Value; public static bool TryGetNamedColor(string name, out SKColor result) => Colors.TryGetValue(name, out result); public static bool IsKnownNamedColor(string name) => Colors.TryGetValue(name, out _); } }