diff --git a/eng/.gitignore b/eng/.gitignore new file mode 100644 index 0000000..a2cb0c7 --- /dev/null +++ b/eng/.gitignore @@ -0,0 +1,2 @@ +Generated +Temp \ No newline at end of file diff --git a/eng/Generate-Colors.ps1 b/eng/Generate-Colors.ps1 new file mode 100644 index 0000000..9836e76 --- /dev/null +++ b/eng/Generate-Colors.ps1 @@ -0,0 +1,24 @@ +########################################################## +# Script that generates known colors and lookup tables. +########################################################## + +$Output = Join-Path $PSScriptRoot "Temp" +$Source = Join-Path $PSScriptRoot "/../src/Spectre.Console" + +if(!(Test-Path $Output -PathType Container)) { + New-Item -ItemType Directory -Path $Output | Out-Null +} + +# Generate the files +Push-Location Generator +&dotnet run -- colors "$Output" +if(!$?) { + Pop-Location + Throw "An error occured when generating code." +} +Pop-Location + +# Copy the files to the correct location +Copy-Item (Join-Path "$Output" "Color.Generated.cs") -Destination "$Source/Color.Generated.cs" +Copy-Item (Join-Path "$Output" "ColorPalette.Generated.cs") -Destination "$Source/Internal/Colors/ColorPalette.Generated.cs" +Copy-Item (Join-Path "$Output" "ColorTable.Generated.cs") -Destination "$Source/Internal/Colors/ColorTable.Generated.cs" \ No newline at end of file diff --git a/eng/Generator/Commands/ColorGeneratorCommand.cs b/eng/Generator/Commands/ColorGeneratorCommand.cs new file mode 100644 index 0000000..f465b70 --- /dev/null +++ b/eng/Generator/Commands/ColorGeneratorCommand.cs @@ -0,0 +1,59 @@ +using System; +using System.IO; +using Generator.Models; +using Scriban; +using Spectre.Cli; +using Spectre.IO; + +namespace Generator.Commands +{ + public sealed class ColorGeneratorCommand : Command + { + private readonly IFileSystem _fileSystem; + + public ColorGeneratorCommand() + { + _fileSystem = new FileSystem(); + } + + public override int Execute(CommandContext context, GeneratorCommandSettings settings) + { + var templates = new FilePath[] + { + "Templates/ColorPalette.Generated.template", + "Templates/Color.Generated.template", + "Templates/ColorTable.Generated.template" + }; + + // Read the color model. + var model = Color.Parse(File.ReadAllText("Data/colors.json")); + + var output = new DirectoryPath(settings.Output); + if (!_fileSystem.Directory.Exists(settings.Output)) + { + _fileSystem.Directory.Create(settings.Output); + } + + foreach (var templatePath in templates) + { + // Parse the Scriban template. + var template = Template.Parse(File.ReadAllText(templatePath.FullPath)); + + // Render the template with the model. + var result = template.Render(new { Colors = model }); + + // Write output to file + var file = output.CombineWithFilePath(templatePath.GetFilename().ChangeExtension(".cs")); + File.WriteAllText(file.FullPath, result); + } + + return 0; + } + } + + public sealed class GeneratorCommandSettings : CommandSettings + { + [CommandArgument(0, "")] + public string Output { get; set; } + } +} diff --git a/eng/Generator/Data/colors.json b/eng/Generator/Data/colors.json new file mode 100644 index 0000000..e2877a4 --- /dev/null +++ b/eng/Generator/Data/colors.json @@ -0,0 +1,3842 @@ +[ + { + "number": 0, + "hex": "#000000", + "rgb": { + "r": 0, + "g": 0, + "b": 0 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 0 + }, + "name": "Black" + }, + { + "number": 1, + "hex": "#800000", + "rgb": { + "r": 128, + "g": 0, + "b": 0 + }, + "hsl": { + "h": 0, + "s": 100, + "l": 25 + }, + "name": "Maroon" + }, + { + "number": 2, + "hex": "#008000", + "rgb": { + "r": 0, + "g": 128, + "b": 0 + }, + "hsl": { + "h": 120, + "s": 100, + "l": 25 + }, + "name": "Green" + }, + { + "number": 3, + "hex": "#808000", + "rgb": { + "r": 128, + "g": 128, + "b": 0 + }, + "hsl": { + "h": 60, + "s": 100, + "l": 25 + }, + "name": "Olive" + }, + { + "number": 4, + "hex": "#000080", + "rgb": { + "r": 0, + "g": 0, + "b": 128 + }, + "hsl": { + "h": 240, + "s": 100, + "l": 25 + }, + "name": "Navy" + }, + { + "number": 5, + "hex": "#800080", + "rgb": { + "r": 128, + "g": 0, + "b": 128 + }, + "hsl": { + "h": 300, + "s": 100, + "l": 25 + }, + "name": "Purple" + }, + { + "number": 6, + "hex": "#008080", + "rgb": { + "r": 0, + "g": 128, + "b": 128 + }, + "hsl": { + "h": 180, + "s": 100, + "l": 25 + }, + "name": "Teal" + }, + { + "number": 7, + "hex": "#c0c0c0", + "rgb": { + "r": 192, + "g": 192, + "b": 192 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 75 + }, + "name": "Silver" + }, + { + "number": 8, + "hex": "#808080", + "rgb": { + "r": 128, + "g": 128, + "b": 128 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 50 + }, + "name": "Grey" + }, + { + "number": 9, + "hex": "#ff0000", + "rgb": { + "r": 255, + "g": 0, + "b": 0 + }, + "hsl": { + "h": 0, + "s": 100, + "l": 50 + }, + "name": "Red" + }, + { + "number": 10, + "hex": "#00ff00", + "rgb": { + "r": 0, + "g": 255, + "b": 0 + }, + "hsl": { + "h": 120, + "s": 100, + "l": 50 + }, + "name": "Lime" + }, + { + "number": 11, + "hex": "#ffff00", + "rgb": { + "r": 255, + "g": 255, + "b": 0 + }, + "hsl": { + "h": 60, + "s": 100, + "l": 50 + }, + "name": "Yellow" + }, + { + "number": 12, + "hex": "#0000ff", + "rgb": { + "r": 0, + "g": 0, + "b": 255 + }, + "hsl": { + "h": 240, + "s": 100, + "l": 50 + }, + "name": "Blue" + }, + { + "number": 13, + "hex": "#ff00ff", + "rgb": { + "r": 255, + "g": 0, + "b": 255 + }, + "hsl": { + "h": 300, + "s": 100, + "l": 50 + }, + "name": "Fuchsia" + }, + { + "number": 14, + "hex": "#00ffff", + "rgb": { + "r": 0, + "g": 255, + "b": 255 + }, + "hsl": { + "h": 180, + "s": 100, + "l": 50 + }, + "name": "Aqua" + }, + { + "number": 15, + "hex": "#ffffff", + "rgb": { + "r": 255, + "g": 255, + "b": 255 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 100 + }, + "name": "White" + }, + { + "number": 16, + "hex": "#000000", + "rgb": { + "r": 0, + "g": 0, + "b": 0 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 0 + }, + "name": "Grey0" + }, + { + "number": 17, + "hex": "#00005f", + "rgb": { + "r": 0, + "g": 0, + "b": 95 + }, + "hsl": { + "h": 240, + "s": 100, + "l": 18 + }, + "name": "NavyBlue" + }, + { + "number": 18, + "hex": "#000087", + "rgb": { + "r": 0, + "g": 0, + "b": 135 + }, + "hsl": { + "h": 240, + "s": 100, + "l": 26 + }, + "name": "DarkBlue" + }, + { + "number": 19, + "hex": "#0000af", + "rgb": { + "r": 0, + "g": 0, + "b": 175 + }, + "hsl": { + "h": 240, + "s": 100, + "l": 34 + }, + "name": "Blue3" + }, + { + "number": 20, + "hex": "#0000d7", + "rgb": { + "r": 0, + "g": 0, + "b": 215 + }, + "hsl": { + "h": 240, + "s": 100, + "l": 42 + }, + "name": "Blue3" + }, + { + "number": 21, + "hex": "#0000ff", + "rgb": { + "r": 0, + "g": 0, + "b": 255 + }, + "hsl": { + "h": 240, + "s": 100, + "l": 50 + }, + "name": "Blue1" + }, + { + "number": 22, + "hex": "#005f00", + "rgb": { + "r": 0, + "g": 95, + "b": 0 + }, + "hsl": { + "h": 120, + "s": 100, + "l": 18 + }, + "name": "DarkGreen" + }, + { + "number": 23, + "hex": "#005f5f", + "rgb": { + "r": 0, + "g": 95, + "b": 95 + }, + "hsl": { + "h": 180, + "s": 100, + "l": 18 + }, + "name": "DeepSkyBlue4" + }, + { + "number": 24, + "hex": "#005f87", + "rgb": { + "r": 0, + "g": 95, + "b": 135 + }, + "hsl": { + "h": 197.777777777778, + "s": 100, + "l": 26 + }, + "name": "DeepSkyBlue4" + }, + { + "number": 25, + "hex": "#005faf", + "rgb": { + "r": 0, + "g": 95, + "b": 175 + }, + "hsl": { + "h": 207.428571428571, + "s": 100, + "l": 34 + }, + "name": "DeepSkyBlue4" + }, + { + "number": 26, + "hex": "#005fd7", + "rgb": { + "r": 0, + "g": 95, + "b": 215 + }, + "hsl": { + "h": 213.488372093023, + "s": 100, + "l": 42 + }, + "name": "DodgerBlue3" + }, + { + "number": 27, + "hex": "#005fff", + "rgb": { + "r": 0, + "g": 95, + "b": 255 + }, + "hsl": { + "h": 217.647058823529, + "s": 100, + "l": 50 + }, + "name": "DodgerBlue2" + }, + { + "number": 28, + "hex": "#008700", + "rgb": { + "r": 0, + "g": 135, + "b": 0 + }, + "hsl": { + "h": 120, + "s": 100, + "l": 26 + }, + "name": "Green4" + }, + { + "number": 29, + "hex": "#00875f", + "rgb": { + "r": 0, + "g": 135, + "b": 95 + }, + "hsl": { + "h": 162.222222222222, + "s": 100, + "l": 26 + }, + "name": "SpringGreen4" + }, + { + "number": 30, + "hex": "#008787", + "rgb": { + "r": 0, + "g": 135, + "b": 135 + }, + "hsl": { + "h": 180, + "s": 100, + "l": 26 + }, + "name": "Turquoise4" + }, + { + "number": 31, + "hex": "#0087af", + "rgb": { + "r": 0, + "g": 135, + "b": 175 + }, + "hsl": { + "h": 193.714285714286, + "s": 100, + "l": 34 + }, + "name": "DeepSkyBlue3" + }, + { + "number": 32, + "hex": "#0087d7", + "rgb": { + "r": 0, + "g": 135, + "b": 215 + }, + "hsl": { + "h": 202.325581395349, + "s": 100, + "l": 42 + }, + "name": "DeepSkyBlue3" + }, + { + "number": 33, + "hex": "#0087ff", + "rgb": { + "r": 0, + "g": 135, + "b": 255 + }, + "hsl": { + "h": 208.235294117647, + "s": 100, + "l": 50 + }, + "name": "DodgerBlue1" + }, + { + "number": 34, + "hex": "#00af00", + "rgb": { + "r": 0, + "g": 175, + "b": 0 + }, + "hsl": { + "h": 120, + "s": 100, + "l": 34 + }, + "name": "Green3" + }, + { + "number": 35, + "hex": "#00af5f", + "rgb": { + "r": 0, + "g": 175, + "b": 95 + }, + "hsl": { + "h": 152.571428571429, + "s": 100, + "l": 34 + }, + "name": "SpringGreen3" + }, + { + "number": 36, + "hex": "#00af87", + "rgb": { + "r": 0, + "g": 175, + "b": 135 + }, + "hsl": { + "h": 166.285714285714, + "s": 100, + "l": 34 + }, + "name": "DarkCyan" + }, + { + "number": 37, + "hex": "#00afaf", + "rgb": { + "r": 0, + "g": 175, + "b": 175 + }, + "hsl": { + "h": 180, + "s": 100, + "l": 34 + }, + "name": "LightSeaGreen" + }, + { + "number": 38, + "hex": "#00afd7", + "rgb": { + "r": 0, + "g": 175, + "b": 215 + }, + "hsl": { + "h": 191.162790697674, + "s": 100, + "l": 42 + }, + "name": "DeepSkyBlue2" + }, + { + "number": 39, + "hex": "#00afff", + "rgb": { + "r": 0, + "g": 175, + "b": 255 + }, + "hsl": { + "h": 198.823529411765, + "s": 100, + "l": 50 + }, + "name": "DeepSkyBlue1" + }, + { + "number": 40, + "hex": "#00d700", + "rgb": { + "r": 0, + "g": 215, + "b": 0 + }, + "hsl": { + "h": 120, + "s": 100, + "l": 42 + }, + "name": "Green3" + }, + { + "number": 41, + "hex": "#00d75f", + "rgb": { + "r": 0, + "g": 215, + "b": 95 + }, + "hsl": { + "h": 146.511627906977, + "s": 100, + "l": 42 + }, + "name": "SpringGreen3" + }, + { + "number": 42, + "hex": "#00d787", + "rgb": { + "r": 0, + "g": 215, + "b": 135 + }, + "hsl": { + "h": 157.674418604651, + "s": 100, + "l": 42 + }, + "name": "SpringGreen2" + }, + { + "number": 43, + "hex": "#00d7af", + "rgb": { + "r": 0, + "g": 215, + "b": 175 + }, + "hsl": { + "h": 168.837209302326, + "s": 100, + "l": 42 + }, + "name": "Cyan3" + }, + { + "number": 44, + "hex": "#00d7d7", + "rgb": { + "r": 0, + "g": 215, + "b": 215 + }, + "hsl": { + "h": 180, + "s": 100, + "l": 42 + }, + "name": "DarkTurquoise" + }, + { + "number": 45, + "hex": "#00d7ff", + "rgb": { + "r": 0, + "g": 215, + "b": 255 + }, + "hsl": { + "h": 189.411764705882, + "s": 100, + "l": 50 + }, + "name": "Turquoise2" + }, + { + "number": 46, + "hex": "#00ff00", + "rgb": { + "r": 0, + "g": 255, + "b": 0 + }, + "hsl": { + "h": 120, + "s": 100, + "l": 50 + }, + "name": "Green1" + }, + { + "number": 47, + "hex": "#00ff5f", + "rgb": { + "r": 0, + "g": 255, + "b": 95 + }, + "hsl": { + "h": 142.352941176471, + "s": 100, + "l": 50 + }, + "name": "SpringGreen2" + }, + { + "number": 48, + "hex": "#00ff87", + "rgb": { + "r": 0, + "g": 255, + "b": 135 + }, + "hsl": { + "h": 151.764705882353, + "s": 100, + "l": 50 + }, + "name": "SpringGreen1" + }, + { + "number": 49, + "hex": "#00ffaf", + "rgb": { + "r": 0, + "g": 255, + "b": 175 + }, + "hsl": { + "h": 161.176470588235, + "s": 100, + "l": 50 + }, + "name": "MediumSpringGreen" + }, + { + "number": 50, + "hex": "#00ffd7", + "rgb": { + "r": 0, + "g": 255, + "b": 215 + }, + "hsl": { + "h": 170.588235294118, + "s": 100, + "l": 50 + }, + "name": "Cyan2" + }, + { + "number": 51, + "hex": "#00ffff", + "rgb": { + "r": 0, + "g": 255, + "b": 255 + }, + "hsl": { + "h": 180, + "s": 100, + "l": 50 + }, + "name": "Cyan1" + }, + { + "number": 52, + "hex": "#5f0000", + "rgb": { + "r": 95, + "g": 0, + "b": 0 + }, + "hsl": { + "h": 0, + "s": 100, + "l": 18 + }, + "name": "DarkRed" + }, + { + "number": 53, + "hex": "#5f005f", + "rgb": { + "r": 95, + "g": 0, + "b": 95 + }, + "hsl": { + "h": 300, + "s": 100, + "l": 18 + }, + "name": "DeepPink4" + }, + { + "number": 54, + "hex": "#5f0087", + "rgb": { + "r": 95, + "g": 0, + "b": 135 + }, + "hsl": { + "h": 282.222222222222, + "s": 100, + "l": 26 + }, + "name": "Purple4" + }, + { + "number": 55, + "hex": "#5f00af", + "rgb": { + "r": 95, + "g": 0, + "b": 175 + }, + "hsl": { + "h": 272.571428571429, + "s": 100, + "l": 34 + }, + "name": "Purple4" + }, + { + "number": 56, + "hex": "#5f00d7", + "rgb": { + "r": 95, + "g": 0, + "b": 215 + }, + "hsl": { + "h": 266.511627906977, + "s": 100, + "l": 42 + }, + "name": "Purple3" + }, + { + "number": 57, + "hex": "#5f00ff", + "rgb": { + "r": 95, + "g": 0, + "b": 255 + }, + "hsl": { + "h": 262.352941176471, + "s": 100, + "l": 50 + }, + "name": "BlueViolet" + }, + { + "number": 58, + "hex": "#5f5f00", + "rgb": { + "r": 95, + "g": 95, + "b": 0 + }, + "hsl": { + "h": 60, + "s": 100, + "l": 18 + }, + "name": "Orange4" + }, + { + "number": 59, + "hex": "#5f5f5f", + "rgb": { + "r": 95, + "g": 95, + "b": 95 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 37 + }, + "name": "Grey37" + }, + { + "number": 60, + "hex": "#5f5f87", + "rgb": { + "r": 95, + "g": 95, + "b": 135 + }, + "hsl": { + "h": 240, + "s": 17, + "l": 45 + }, + "name": "MediumPurple4" + }, + { + "number": 61, + "hex": "#5f5faf", + "rgb": { + "r": 95, + "g": 95, + "b": 175 + }, + "hsl": { + "h": 240, + "s": 33, + "l": 52 + }, + "name": "SlateBlue3" + }, + { + "number": 62, + "hex": "#5f5fd7", + "rgb": { + "r": 95, + "g": 95, + "b": 215 + }, + "hsl": { + "h": 240, + "s": 60, + "l": 60 + }, + "name": "SlateBlue3" + }, + { + "number": 63, + "hex": "#5f5fff", + "rgb": { + "r": 95, + "g": 95, + "b": 255 + }, + "hsl": { + "h": 240, + "s": 100, + "l": 68 + }, + "name": "RoyalBlue1" + }, + { + "number": 64, + "hex": "#5f8700", + "rgb": { + "r": 95, + "g": 135, + "b": 0 + }, + "hsl": { + "h": 77.7777777777778, + "s": 100, + "l": 26 + }, + "name": "Chartreuse4" + }, + { + "number": 65, + "hex": "#5f875f", + "rgb": { + "r": 95, + "g": 135, + "b": 95 + }, + "hsl": { + "h": 120, + "s": 17, + "l": 45 + }, + "name": "DarkSeaGreen4" + }, + { + "number": 66, + "hex": "#5f8787", + "rgb": { + "r": 95, + "g": 135, + "b": 135 + }, + "hsl": { + "h": 180, + "s": 17, + "l": 45 + }, + "name": "PaleTurquoise4" + }, + { + "number": 67, + "hex": "#5f87af", + "rgb": { + "r": 95, + "g": 135, + "b": 175 + }, + "hsl": { + "h": 210, + "s": 33, + "l": 52 + }, + "name": "SteelBlue" + }, + { + "number": 68, + "hex": "#5f87d7", + "rgb": { + "r": 95, + "g": 135, + "b": 215 + }, + "hsl": { + "h": 220, + "s": 60, + "l": 60 + }, + "name": "SteelBlue3" + }, + { + "number": 69, + "hex": "#5f87ff", + "rgb": { + "r": 95, + "g": 135, + "b": 255 + }, + "hsl": { + "h": 225, + "s": 100, + "l": 68 + }, + "name": "CornflowerBlue" + }, + { + "number": 70, + "hex": "#5faf00", + "rgb": { + "r": 95, + "g": 175, + "b": 0 + }, + "hsl": { + "h": 87.4285714285714, + "s": 100, + "l": 34 + }, + "name": "Chartreuse3" + }, + { + "number": 71, + "hex": "#5faf5f", + "rgb": { + "r": 95, + "g": 175, + "b": 95 + }, + "hsl": { + "h": 120, + "s": 33, + "l": 52 + }, + "name": "DarkSeaGreen4" + }, + { + "number": 72, + "hex": "#5faf87", + "rgb": { + "r": 95, + "g": 175, + "b": 135 + }, + "hsl": { + "h": 150, + "s": 33, + "l": 52 + }, + "name": "CadetBlue" + }, + { + "number": 73, + "hex": "#5fafaf", + "rgb": { + "r": 95, + "g": 175, + "b": 175 + }, + "hsl": { + "h": 180, + "s": 33, + "l": 52 + }, + "name": "CadetBlue" + }, + { + "number": 74, + "hex": "#5fafd7", + "rgb": { + "r": 95, + "g": 175, + "b": 215 + }, + "hsl": { + "h": 200, + "s": 60, + "l": 60 + }, + "name": "SkyBlue3" + }, + { + "number": 75, + "hex": "#5fafff", + "rgb": { + "r": 95, + "g": 175, + "b": 255 + }, + "hsl": { + "h": 210, + "s": 100, + "l": 68 + }, + "name": "SteelBlue1" + }, + { + "number": 76, + "hex": "#5fd700", + "rgb": { + "r": 95, + "g": 215, + "b": 0 + }, + "hsl": { + "h": 93.4883720930233, + "s": 100, + "l": 42 + }, + "name": "Chartreuse3" + }, + { + "number": 77, + "hex": "#5fd75f", + "rgb": { + "r": 95, + "g": 215, + "b": 95 + }, + "hsl": { + "h": 120, + "s": 60, + "l": 60 + }, + "name": "PaleGreen3" + }, + { + "number": 78, + "hex": "#5fd787", + "rgb": { + "r": 95, + "g": 215, + "b": 135 + }, + "hsl": { + "h": 140, + "s": 60, + "l": 60 + }, + "name": "SeaGreen3" + }, + { + "number": 79, + "hex": "#5fd7af", + "rgb": { + "r": 95, + "g": 215, + "b": 175 + }, + "hsl": { + "h": 160, + "s": 60, + "l": 60 + }, + "name": "Aquamarine3" + }, + { + "number": 80, + "hex": "#5fd7d7", + "rgb": { + "r": 95, + "g": 215, + "b": 215 + }, + "hsl": { + "h": 180, + "s": 60, + "l": 60 + }, + "name": "MediumTurquoise" + }, + { + "number": 81, + "hex": "#5fd7ff", + "rgb": { + "r": 95, + "g": 215, + "b": 255 + }, + "hsl": { + "h": 195, + "s": 100, + "l": 68 + }, + "name": "SteelBlue1" + }, + { + "number": 82, + "hex": "#5fff00", + "rgb": { + "r": 95, + "g": 255, + "b": 0 + }, + "hsl": { + "h": 97.6470588235294, + "s": 100, + "l": 50 + }, + "name": "Chartreuse2" + }, + { + "number": 83, + "hex": "#5fff5f", + "rgb": { + "r": 95, + "g": 255, + "b": 95 + }, + "hsl": { + "h": 120, + "s": 100, + "l": 68 + }, + "name": "SeaGreen2" + }, + { + "number": 84, + "hex": "#5fff87", + "rgb": { + "r": 95, + "g": 255, + "b": 135 + }, + "hsl": { + "h": 135, + "s": 100, + "l": 68 + }, + "name": "SeaGreen1" + }, + { + "number": 85, + "hex": "#5fffaf", + "rgb": { + "r": 95, + "g": 255, + "b": 175 + }, + "hsl": { + "h": 150, + "s": 100, + "l": 68 + }, + "name": "SeaGreen1" + }, + { + "number": 86, + "hex": "#5fffd7", + "rgb": { + "r": 95, + "g": 255, + "b": 215 + }, + "hsl": { + "h": 165, + "s": 100, + "l": 68 + }, + "name": "Aquamarine1" + }, + { + "number": 87, + "hex": "#5fffff", + "rgb": { + "r": 95, + "g": 255, + "b": 255 + }, + "hsl": { + "h": 180, + "s": 100, + "l": 68 + }, + "name": "DarkSlateGray2" + }, + { + "number": 88, + "hex": "#870000", + "rgb": { + "r": 135, + "g": 0, + "b": 0 + }, + "hsl": { + "h": 0, + "s": 100, + "l": 26 + }, + "name": "DarkRed" + }, + { + "number": 89, + "hex": "#87005f", + "rgb": { + "r": 135, + "g": 0, + "b": 95 + }, + "hsl": { + "h": 317.777777777778, + "s": 100, + "l": 26 + }, + "name": "DeepPink4" + }, + { + "number": 90, + "hex": "#870087", + "rgb": { + "r": 135, + "g": 0, + "b": 135 + }, + "hsl": { + "h": 300, + "s": 100, + "l": 26 + }, + "name": "DarkMagenta" + }, + { + "number": 91, + "hex": "#8700af", + "rgb": { + "r": 135, + "g": 0, + "b": 175 + }, + "hsl": { + "h": 286.285714285714, + "s": 100, + "l": 34 + }, + "name": "DarkMagenta" + }, + { + "number": 92, + "hex": "#8700d7", + "rgb": { + "r": 135, + "g": 0, + "b": 215 + }, + "hsl": { + "h": 277.674418604651, + "s": 100, + "l": 42 + }, + "name": "DarkViolet" + }, + { + "number": 93, + "hex": "#8700ff", + "rgb": { + "r": 135, + "g": 0, + "b": 255 + }, + "hsl": { + "h": 271.764705882353, + "s": 100, + "l": 50 + }, + "name": "Purple" + }, + { + "number": 94, + "hex": "#875f00", + "rgb": { + "r": 135, + "g": 95, + "b": 0 + }, + "hsl": { + "h": 42.2222222222222, + "s": 100, + "l": 26 + }, + "name": "Orange4" + }, + { + "number": 95, + "hex": "#875f5f", + "rgb": { + "r": 135, + "g": 95, + "b": 95 + }, + "hsl": { + "h": 0, + "s": 17, + "l": 45 + }, + "name": "LightPink4" + }, + { + "number": 96, + "hex": "#875f87", + "rgb": { + "r": 135, + "g": 95, + "b": 135 + }, + "hsl": { + "h": 300, + "s": 17, + "l": 45 + }, + "name": "Plum4" + }, + { + "number": 97, + "hex": "#875faf", + "rgb": { + "r": 135, + "g": 95, + "b": 175 + }, + "hsl": { + "h": 270, + "s": 33, + "l": 52 + }, + "name": "MediumPurple3" + }, + { + "number": 98, + "hex": "#875fd7", + "rgb": { + "r": 135, + "g": 95, + "b": 215 + }, + "hsl": { + "h": 260, + "s": 60, + "l": 60 + }, + "name": "MediumPurple3" + }, + { + "number": 99, + "hex": "#875fff", + "rgb": { + "r": 135, + "g": 95, + "b": 255 + }, + "hsl": { + "h": 255, + "s": 100, + "l": 68 + }, + "name": "SlateBlue1" + }, + { + "number": 100, + "hex": "#878700", + "rgb": { + "r": 135, + "g": 135, + "b": 0 + }, + "hsl": { + "h": 60, + "s": 100, + "l": 26 + }, + "name": "Yellow4" + }, + { + "number": 101, + "hex": "#87875f", + "rgb": { + "r": 135, + "g": 135, + "b": 95 + }, + "hsl": { + "h": 60, + "s": 17, + "l": 45 + }, + "name": "Wheat4" + }, + { + "number": 102, + "hex": "#878787", + "rgb": { + "r": 135, + "g": 135, + "b": 135 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 52 + }, + "name": "Grey53" + }, + { + "number": 103, + "hex": "#8787af", + "rgb": { + "r": 135, + "g": 135, + "b": 175 + }, + "hsl": { + "h": 240, + "s": 20, + "l": 60 + }, + "name": "LightSlateGrey" + }, + { + "number": 104, + "hex": "#8787d7", + "rgb": { + "r": 135, + "g": 135, + "b": 215 + }, + "hsl": { + "h": 240, + "s": 50, + "l": 68 + }, + "name": "MediumPurple" + }, + { + "number": 105, + "hex": "#8787ff", + "rgb": { + "r": 135, + "g": 135, + "b": 255 + }, + "hsl": { + "h": 240, + "s": 100, + "l": 76 + }, + "name": "LightSlateBlue" + }, + { + "number": 106, + "hex": "#87af00", + "rgb": { + "r": 135, + "g": 175, + "b": 0 + }, + "hsl": { + "h": 73.7142857142857, + "s": 100, + "l": 34 + }, + "name": "Yellow4" + }, + { + "number": 107, + "hex": "#87af5f", + "rgb": { + "r": 135, + "g": 175, + "b": 95 + }, + "hsl": { + "h": 90, + "s": 33, + "l": 52 + }, + "name": "DarkOliveGreen3" + }, + { + "number": 108, + "hex": "#87af87", + "rgb": { + "r": 135, + "g": 175, + "b": 135 + }, + "hsl": { + "h": 120, + "s": 20, + "l": 60 + }, + "name": "DarkSeaGreen" + }, + { + "number": 109, + "hex": "#87afaf", + "rgb": { + "r": 135, + "g": 175, + "b": 175 + }, + "hsl": { + "h": 180, + "s": 20, + "l": 60 + }, + "name": "LightSkyBlue3" + }, + { + "number": 110, + "hex": "#87afd7", + "rgb": { + "r": 135, + "g": 175, + "b": 215 + }, + "hsl": { + "h": 210, + "s": 50, + "l": 68 + }, + "name": "LightSkyBlue3" + }, + { + "number": 111, + "hex": "#87afff", + "rgb": { + "r": 135, + "g": 175, + "b": 255 + }, + "hsl": { + "h": 220, + "s": 100, + "l": 76 + }, + "name": "SkyBlue2" + }, + { + "number": 112, + "hex": "#87d700", + "rgb": { + "r": 135, + "g": 215, + "b": 0 + }, + "hsl": { + "h": 82.3255813953488, + "s": 100, + "l": 42 + }, + "name": "Chartreuse2" + }, + { + "number": 113, + "hex": "#87d75f", + "rgb": { + "r": 135, + "g": 215, + "b": 95 + }, + "hsl": { + "h": 100, + "s": 60, + "l": 60 + }, + "name": "DarkOliveGreen3" + }, + { + "number": 114, + "hex": "#87d787", + "rgb": { + "r": 135, + "g": 215, + "b": 135 + }, + "hsl": { + "h": 120, + "s": 50, + "l": 68 + }, + "name": "PaleGreen3" + }, + { + "number": 115, + "hex": "#87d7af", + "rgb": { + "r": 135, + "g": 215, + "b": 175 + }, + "hsl": { + "h": 150, + "s": 50, + "l": 68 + }, + "name": "DarkSeaGreen3" + }, + { + "number": 116, + "hex": "#87d7d7", + "rgb": { + "r": 135, + "g": 215, + "b": 215 + }, + "hsl": { + "h": 180, + "s": 50, + "l": 68 + }, + "name": "DarkSlateGray3" + }, + { + "number": 117, + "hex": "#87d7ff", + "rgb": { + "r": 135, + "g": 215, + "b": 255 + }, + "hsl": { + "h": 200, + "s": 100, + "l": 76 + }, + "name": "SkyBlue1" + }, + { + "number": 118, + "hex": "#87ff00", + "rgb": { + "r": 135, + "g": 255, + "b": 0 + }, + "hsl": { + "h": 88.2352941176471, + "s": 100, + "l": 50 + }, + "name": "Chartreuse1" + }, + { + "number": 119, + "hex": "#87ff5f", + "rgb": { + "r": 135, + "g": 255, + "b": 95 + }, + "hsl": { + "h": 105, + "s": 100, + "l": 68 + }, + "name": "LightGreen" + }, + { + "number": 120, + "hex": "#87ff87", + "rgb": { + "r": 135, + "g": 255, + "b": 135 + }, + "hsl": { + "h": 120, + "s": 100, + "l": 76 + }, + "name": "LightGreen" + }, + { + "number": 121, + "hex": "#87ffaf", + "rgb": { + "r": 135, + "g": 255, + "b": 175 + }, + "hsl": { + "h": 140, + "s": 100, + "l": 76 + }, + "name": "PaleGreen1" + }, + { + "number": 122, + "hex": "#87ffd7", + "rgb": { + "r": 135, + "g": 255, + "b": 215 + }, + "hsl": { + "h": 160, + "s": 100, + "l": 76 + }, + "name": "Aquamarine1" + }, + { + "number": 123, + "hex": "#87ffff", + "rgb": { + "r": 135, + "g": 255, + "b": 255 + }, + "hsl": { + "h": 180, + "s": 100, + "l": 76 + }, + "name": "DarkSlateGray1" + }, + { + "number": 124, + "hex": "#af0000", + "rgb": { + "r": 175, + "g": 0, + "b": 0 + }, + "hsl": { + "h": 0, + "s": 100, + "l": 34 + }, + "name": "Red3" + }, + { + "number": 125, + "hex": "#af005f", + "rgb": { + "r": 175, + "g": 0, + "b": 95 + }, + "hsl": { + "h": 327.428571428571, + "s": 100, + "l": 34 + }, + "name": "DeepPink4" + }, + { + "number": 126, + "hex": "#af0087", + "rgb": { + "r": 175, + "g": 0, + "b": 135 + }, + "hsl": { + "h": 313.714285714286, + "s": 100, + "l": 34 + }, + "name": "MediumVioletRed" + }, + { + "number": 127, + "hex": "#af00af", + "rgb": { + "r": 175, + "g": 0, + "b": 175 + }, + "hsl": { + "h": 300, + "s": 100, + "l": 34 + }, + "name": "Magenta3" + }, + { + "number": 128, + "hex": "#af00d7", + "rgb": { + "r": 175, + "g": 0, + "b": 215 + }, + "hsl": { + "h": 288.837209302326, + "s": 100, + "l": 42 + }, + "name": "DarkViolet" + }, + { + "number": 129, + "hex": "#af00ff", + "rgb": { + "r": 175, + "g": 0, + "b": 255 + }, + "hsl": { + "h": 281.176470588235, + "s": 100, + "l": 50 + }, + "name": "Purple" + }, + { + "number": 130, + "hex": "#af5f00", + "rgb": { + "r": 175, + "g": 95, + "b": 0 + }, + "hsl": { + "h": 32.5714285714286, + "s": 100, + "l": 34 + }, + "name": "DarkOrange3" + }, + { + "number": 131, + "hex": "#af5f5f", + "rgb": { + "r": 175, + "g": 95, + "b": 95 + }, + "hsl": { + "h": 0, + "s": 33, + "l": 52 + }, + "name": "IndianRed" + }, + { + "number": 132, + "hex": "#af5f87", + "rgb": { + "r": 175, + "g": 95, + "b": 135 + }, + "hsl": { + "h": 330, + "s": 33, + "l": 52 + }, + "name": "HotPink3" + }, + { + "number": 133, + "hex": "#af5faf", + "rgb": { + "r": 175, + "g": 95, + "b": 175 + }, + "hsl": { + "h": 300, + "s": 33, + "l": 52 + }, + "name": "MediumOrchid3" + }, + { + "number": 134, + "hex": "#af5fd7", + "rgb": { + "r": 175, + "g": 95, + "b": 215 + }, + "hsl": { + "h": 280, + "s": 60, + "l": 60 + }, + "name": "MediumOrchid" + }, + { + "number": 135, + "hex": "#af5fff", + "rgb": { + "r": 175, + "g": 95, + "b": 255 + }, + "hsl": { + "h": 270, + "s": 100, + "l": 68 + }, + "name": "MediumPurple2" + }, + { + "number": 136, + "hex": "#af8700", + "rgb": { + "r": 175, + "g": 135, + "b": 0 + }, + "hsl": { + "h": 46.2857142857143, + "s": 100, + "l": 34 + }, + "name": "DarkGoldenrod" + }, + { + "number": 137, + "hex": "#af875f", + "rgb": { + "r": 175, + "g": 135, + "b": 95 + }, + "hsl": { + "h": 30, + "s": 33, + "l": 52 + }, + "name": "LightSalmon3" + }, + { + "number": 138, + "hex": "#af8787", + "rgb": { + "r": 175, + "g": 135, + "b": 135 + }, + "hsl": { + "h": 0, + "s": 20, + "l": 60 + }, + "name": "RosyBrown" + }, + { + "number": 139, + "hex": "#af87af", + "rgb": { + "r": 175, + "g": 135, + "b": 175 + }, + "hsl": { + "h": 300, + "s": 20, + "l": 60 + }, + "name": "Grey63" + }, + { + "number": 140, + "hex": "#af87d7", + "rgb": { + "r": 175, + "g": 135, + "b": 215 + }, + "hsl": { + "h": 270, + "s": 50, + "l": 68 + }, + "name": "MediumPurple2" + }, + { + "number": 141, + "hex": "#af87ff", + "rgb": { + "r": 175, + "g": 135, + "b": 255 + }, + "hsl": { + "h": 260, + "s": 100, + "l": 76 + }, + "name": "MediumPurple1" + }, + { + "number": 142, + "hex": "#afaf00", + "rgb": { + "r": 175, + "g": 175, + "b": 0 + }, + "hsl": { + "h": 60, + "s": 100, + "l": 34 + }, + "name": "Gold3" + }, + { + "number": 143, + "hex": "#afaf5f", + "rgb": { + "r": 175, + "g": 175, + "b": 95 + }, + "hsl": { + "h": 60, + "s": 33, + "l": 52 + }, + "name": "DarkKhaki" + }, + { + "number": 144, + "hex": "#afaf87", + "rgb": { + "r": 175, + "g": 175, + "b": 135 + }, + "hsl": { + "h": 60, + "s": 20, + "l": 60 + }, + "name": "NavajoWhite3" + }, + { + "number": 145, + "hex": "#afafaf", + "rgb": { + "r": 175, + "g": 175, + "b": 175 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 68 + }, + "name": "Grey69" + }, + { + "number": 146, + "hex": "#afafd7", + "rgb": { + "r": 175, + "g": 175, + "b": 215 + }, + "hsl": { + "h": 240, + "s": 33, + "l": 76 + }, + "name": "LightSteelBlue3" + }, + { + "number": 147, + "hex": "#afafff", + "rgb": { + "r": 175, + "g": 175, + "b": 255 + }, + "hsl": { + "h": 240, + "s": 100, + "l": 84 + }, + "name": "LightSteelBlue" + }, + { + "number": 148, + "hex": "#afd700", + "rgb": { + "r": 175, + "g": 215, + "b": 0 + }, + "hsl": { + "h": 71.1627906976744, + "s": 100, + "l": 42 + }, + "name": "Yellow3" + }, + { + "number": 149, + "hex": "#afd75f", + "rgb": { + "r": 175, + "g": 215, + "b": 95 + }, + "hsl": { + "h": 80, + "s": 60, + "l": 60 + }, + "name": "DarkOliveGreen3" + }, + { + "number": 150, + "hex": "#afd787", + "rgb": { + "r": 175, + "g": 215, + "b": 135 + }, + "hsl": { + "h": 90, + "s": 50, + "l": 68 + }, + "name": "DarkSeaGreen3" + }, + { + "number": 151, + "hex": "#afd7af", + "rgb": { + "r": 175, + "g": 215, + "b": 175 + }, + "hsl": { + "h": 120, + "s": 33, + "l": 76 + }, + "name": "DarkSeaGreen2" + }, + { + "number": 152, + "hex": "#afd7d7", + "rgb": { + "r": 175, + "g": 215, + "b": 215 + }, + "hsl": { + "h": 180, + "s": 33, + "l": 76 + }, + "name": "LightCyan3" + }, + { + "number": 153, + "hex": "#afd7ff", + "rgb": { + "r": 175, + "g": 215, + "b": 255 + }, + "hsl": { + "h": 210, + "s": 100, + "l": 84 + }, + "name": "LightSkyBlue1" + }, + { + "number": 154, + "hex": "#afff00", + "rgb": { + "r": 175, + "g": 255, + "b": 0 + }, + "hsl": { + "h": 78.8235294117647, + "s": 100, + "l": 50 + }, + "name": "GreenYellow" + }, + { + "number": 155, + "hex": "#afff5f", + "rgb": { + "r": 175, + "g": 255, + "b": 95 + }, + "hsl": { + "h": 90, + "s": 100, + "l": 68 + }, + "name": "DarkOliveGreen2" + }, + { + "number": 156, + "hex": "#afff87", + "rgb": { + "r": 175, + "g": 255, + "b": 135 + }, + "hsl": { + "h": 100, + "s": 100, + "l": 76 + }, + "name": "PaleGreen1" + }, + { + "number": 157, + "hex": "#afffaf", + "rgb": { + "r": 175, + "g": 255, + "b": 175 + }, + "hsl": { + "h": 120, + "s": 100, + "l": 84 + }, + "name": "DarkSeaGreen2" + }, + { + "number": 158, + "hex": "#afffd7", + "rgb": { + "r": 175, + "g": 255, + "b": 215 + }, + "hsl": { + "h": 150, + "s": 100, + "l": 84 + }, + "name": "DarkSeaGreen1" + }, + { + "number": 159, + "hex": "#afffff", + "rgb": { + "r": 175, + "g": 255, + "b": 255 + }, + "hsl": { + "h": 180, + "s": 100, + "l": 84 + }, + "name": "PaleTurquoise1" + }, + { + "number": 160, + "hex": "#d70000", + "rgb": { + "r": 215, + "g": 0, + "b": 0 + }, + "hsl": { + "h": 0, + "s": 100, + "l": 42 + }, + "name": "Red3" + }, + { + "number": 161, + "hex": "#d7005f", + "rgb": { + "r": 215, + "g": 0, + "b": 95 + }, + "hsl": { + "h": 333.488372093023, + "s": 100, + "l": 42 + }, + "name": "DeepPink3" + }, + { + "number": 162, + "hex": "#d70087", + "rgb": { + "r": 215, + "g": 0, + "b": 135 + }, + "hsl": { + "h": 322.325581395349, + "s": 100, + "l": 42 + }, + "name": "DeepPink3" + }, + { + "number": 163, + "hex": "#d700af", + "rgb": { + "r": 215, + "g": 0, + "b": 175 + }, + "hsl": { + "h": 311.162790697674, + "s": 100, + "l": 42 + }, + "name": "Magenta3" + }, + { + "number": 164, + "hex": "#d700d7", + "rgb": { + "r": 215, + "g": 0, + "b": 215 + }, + "hsl": { + "h": 300, + "s": 100, + "l": 42 + }, + "name": "Magenta3" + }, + { + "number": 165, + "hex": "#d700ff", + "rgb": { + "r": 215, + "g": 0, + "b": 255 + }, + "hsl": { + "h": 290.588235294118, + "s": 100, + "l": 50 + }, + "name": "Magenta2" + }, + { + "number": 166, + "hex": "#d75f00", + "rgb": { + "r": 215, + "g": 95, + "b": 0 + }, + "hsl": { + "h": 26.5116279069767, + "s": 100, + "l": 42 + }, + "name": "DarkOrange3" + }, + { + "number": 167, + "hex": "#d75f5f", + "rgb": { + "r": 215, + "g": 95, + "b": 95 + }, + "hsl": { + "h": 0, + "s": 60, + "l": 60 + }, + "name": "IndianRed" + }, + { + "number": 168, + "hex": "#d75f87", + "rgb": { + "r": 215, + "g": 95, + "b": 135 + }, + "hsl": { + "h": 340, + "s": 60, + "l": 60 + }, + "name": "HotPink3" + }, + { + "number": 169, + "hex": "#d75faf", + "rgb": { + "r": 215, + "g": 95, + "b": 175 + }, + "hsl": { + "h": 320, + "s": 60, + "l": 60 + }, + "name": "HotPink2" + }, + { + "number": 170, + "hex": "#d75fd7", + "rgb": { + "r": 215, + "g": 95, + "b": 215 + }, + "hsl": { + "h": 300, + "s": 60, + "l": 60 + }, + "name": "Orchid" + }, + { + "number": 171, + "hex": "#d75fff", + "rgb": { + "r": 215, + "g": 95, + "b": 255 + }, + "hsl": { + "h": 285, + "s": 100, + "l": 68 + }, + "name": "MediumOrchid1" + }, + { + "number": 172, + "hex": "#d78700", + "rgb": { + "r": 215, + "g": 135, + "b": 0 + }, + "hsl": { + "h": 37.6744186046512, + "s": 100, + "l": 42 + }, + "name": "Orange3" + }, + { + "number": 173, + "hex": "#d7875f", + "rgb": { + "r": 215, + "g": 135, + "b": 95 + }, + "hsl": { + "h": 20, + "s": 60, + "l": 60 + }, + "name": "LightSalmon3" + }, + { + "number": 174, + "hex": "#d78787", + "rgb": { + "r": 215, + "g": 135, + "b": 135 + }, + "hsl": { + "h": 0, + "s": 50, + "l": 68 + }, + "name": "LightPink3" + }, + { + "number": 175, + "hex": "#d787af", + "rgb": { + "r": 215, + "g": 135, + "b": 175 + }, + "hsl": { + "h": 330, + "s": 50, + "l": 68 + }, + "name": "Pink3" + }, + { + "number": 176, + "hex": "#d787d7", + "rgb": { + "r": 215, + "g": 135, + "b": 215 + }, + "hsl": { + "h": 300, + "s": 50, + "l": 68 + }, + "name": "Plum3" + }, + { + "number": 177, + "hex": "#d787ff", + "rgb": { + "r": 215, + "g": 135, + "b": 255 + }, + "hsl": { + "h": 280, + "s": 100, + "l": 76 + }, + "name": "Violet" + }, + { + "number": 178, + "hex": "#d7af00", + "rgb": { + "r": 215, + "g": 175, + "b": 0 + }, + "hsl": { + "h": 48.8372093023256, + "s": 100, + "l": 42 + }, + "name": "Gold3" + }, + { + "number": 179, + "hex": "#d7af5f", + "rgb": { + "r": 215, + "g": 175, + "b": 95 + }, + "hsl": { + "h": 40, + "s": 60, + "l": 60 + }, + "name": "LightGoldenrod3" + }, + { + "number": 180, + "hex": "#d7af87", + "rgb": { + "r": 215, + "g": 175, + "b": 135 + }, + "hsl": { + "h": 30, + "s": 50, + "l": 68 + }, + "name": "Tan" + }, + { + "number": 181, + "hex": "#d7afaf", + "rgb": { + "r": 215, + "g": 175, + "b": 175 + }, + "hsl": { + "h": 0, + "s": 33, + "l": 76 + }, + "name": "MistyRose3" + }, + { + "number": 182, + "hex": "#d7afd7", + "rgb": { + "r": 215, + "g": 175, + "b": 215 + }, + "hsl": { + "h": 300, + "s": 33, + "l": 76 + }, + "name": "Thistle3" + }, + { + "number": 183, + "hex": "#d7afff", + "rgb": { + "r": 215, + "g": 175, + "b": 255 + }, + "hsl": { + "h": 270, + "s": 100, + "l": 84 + }, + "name": "Plum2" + }, + { + "number": 184, + "hex": "#d7d700", + "rgb": { + "r": 215, + "g": 215, + "b": 0 + }, + "hsl": { + "h": 60, + "s": 100, + "l": 42 + }, + "name": "Yellow3" + }, + { + "number": 185, + "hex": "#d7d75f", + "rgb": { + "r": 215, + "g": 215, + "b": 95 + }, + "hsl": { + "h": 60, + "s": 60, + "l": 60 + }, + "name": "Khaki3" + }, + { + "number": 186, + "hex": "#d7d787", + "rgb": { + "r": 215, + "g": 215, + "b": 135 + }, + "hsl": { + "h": 60, + "s": 50, + "l": 68 + }, + "name": "LightGoldenrod2" + }, + { + "number": 187, + "hex": "#d7d7af", + "rgb": { + "r": 215, + "g": 215, + "b": 175 + }, + "hsl": { + "h": 60, + "s": 33, + "l": 76 + }, + "name": "LightYellow3" + }, + { + "number": 188, + "hex": "#d7d7d7", + "rgb": { + "r": 215, + "g": 215, + "b": 215 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 84 + }, + "name": "Grey84" + }, + { + "number": 189, + "hex": "#d7d7ff", + "rgb": { + "r": 215, + "g": 215, + "b": 255 + }, + "hsl": { + "h": 240, + "s": 100, + "l": 92 + }, + "name": "LightSteelBlue1" + }, + { + "number": 190, + "hex": "#d7ff00", + "rgb": { + "r": 215, + "g": 255, + "b": 0 + }, + "hsl": { + "h": 69.4117647058823, + "s": 100, + "l": 50 + }, + "name": "Yellow2" + }, + { + "number": 191, + "hex": "#d7ff5f", + "rgb": { + "r": 215, + "g": 255, + "b": 95 + }, + "hsl": { + "h": 75, + "s": 100, + "l": 68 + }, + "name": "DarkOliveGreen1" + }, + { + "number": 192, + "hex": "#d7ff87", + "rgb": { + "r": 215, + "g": 255, + "b": 135 + }, + "hsl": { + "h": 80, + "s": 100, + "l": 76 + }, + "name": "DarkOliveGreen1" + }, + { + "number": 193, + "hex": "#d7ffaf", + "rgb": { + "r": 215, + "g": 255, + "b": 175 + }, + "hsl": { + "h": 90, + "s": 100, + "l": 84 + }, + "name": "DarkSeaGreen1" + }, + { + "number": 194, + "hex": "#d7ffd7", + "rgb": { + "r": 215, + "g": 255, + "b": 215 + }, + "hsl": { + "h": 120, + "s": 100, + "l": 92 + }, + "name": "Honeydew2" + }, + { + "number": 195, + "hex": "#d7ffff", + "rgb": { + "r": 215, + "g": 255, + "b": 255 + }, + "hsl": { + "h": 180, + "s": 100, + "l": 92 + }, + "name": "LightCyan1" + }, + { + "number": 196, + "hex": "#ff0000", + "rgb": { + "r": 255, + "g": 0, + "b": 0 + }, + "hsl": { + "h": 0, + "s": 100, + "l": 50 + }, + "name": "Red1" + }, + { + "number": 197, + "hex": "#ff005f", + "rgb": { + "r": 255, + "g": 0, + "b": 95 + }, + "hsl": { + "h": 337.647058823529, + "s": 100, + "l": 50 + }, + "name": "DeepPink2" + }, + { + "number": 198, + "hex": "#ff0087", + "rgb": { + "r": 255, + "g": 0, + "b": 135 + }, + "hsl": { + "h": 328.235294117647, + "s": 100, + "l": 50 + }, + "name": "DeepPink1" + }, + { + "number": 199, + "hex": "#ff00af", + "rgb": { + "r": 255, + "g": 0, + "b": 175 + }, + "hsl": { + "h": 318.823529411765, + "s": 100, + "l": 50 + }, + "name": "DeepPink1" + }, + { + "number": 200, + "hex": "#ff00d7", + "rgb": { + "r": 255, + "g": 0, + "b": 215 + }, + "hsl": { + "h": 309.411764705882, + "s": 100, + "l": 50 + }, + "name": "Magenta2" + }, + { + "number": 201, + "hex": "#ff00ff", + "rgb": { + "r": 255, + "g": 0, + "b": 255 + }, + "hsl": { + "h": 300, + "s": 100, + "l": 50 + }, + "name": "Magenta1" + }, + { + "number": 202, + "hex": "#ff5f00", + "rgb": { + "r": 255, + "g": 95, + "b": 0 + }, + "hsl": { + "h": 22.3529411764706, + "s": 100, + "l": 50 + }, + "name": "OrangeRed1" + }, + { + "number": 203, + "hex": "#ff5f5f", + "rgb": { + "r": 255, + "g": 95, + "b": 95 + }, + "hsl": { + "h": 0, + "s": 100, + "l": 68 + }, + "name": "IndianRed1" + }, + { + "number": 204, + "hex": "#ff5f87", + "rgb": { + "r": 255, + "g": 95, + "b": 135 + }, + "hsl": { + "h": 345, + "s": 100, + "l": 68 + }, + "name": "IndianRed1" + }, + { + "number": 205, + "hex": "#ff5faf", + "rgb": { + "r": 255, + "g": 95, + "b": 175 + }, + "hsl": { + "h": 330, + "s": 100, + "l": 68 + }, + "name": "HotPink" + }, + { + "number": 206, + "hex": "#ff5fd7", + "rgb": { + "r": 255, + "g": 95, + "b": 215 + }, + "hsl": { + "h": 315, + "s": 100, + "l": 68 + }, + "name": "HotPink" + }, + { + "number": 207, + "hex": "#ff5fff", + "rgb": { + "r": 255, + "g": 95, + "b": 255 + }, + "hsl": { + "h": 300, + "s": 100, + "l": 68 + }, + "name": "MediumOrchid1" + }, + { + "number": 208, + "hex": "#ff8700", + "rgb": { + "r": 255, + "g": 135, + "b": 0 + }, + "hsl": { + "h": 31.7647058823529, + "s": 100, + "l": 50 + }, + "name": "DarkOrange" + }, + { + "number": 209, + "hex": "#ff875f", + "rgb": { + "r": 255, + "g": 135, + "b": 95 + }, + "hsl": { + "h": 15, + "s": 100, + "l": 68 + }, + "name": "Salmon1" + }, + { + "number": 210, + "hex": "#ff8787", + "rgb": { + "r": 255, + "g": 135, + "b": 135 + }, + "hsl": { + "h": 0, + "s": 100, + "l": 76 + }, + "name": "LightCoral" + }, + { + "number": 211, + "hex": "#ff87af", + "rgb": { + "r": 255, + "g": 135, + "b": 175 + }, + "hsl": { + "h": 340, + "s": 100, + "l": 76 + }, + "name": "PaleVioletRed1" + }, + { + "number": 212, + "hex": "#ff87d7", + "rgb": { + "r": 255, + "g": 135, + "b": 215 + }, + "hsl": { + "h": 320, + "s": 100, + "l": 76 + }, + "name": "Orchid2" + }, + { + "number": 213, + "hex": "#ff87ff", + "rgb": { + "r": 255, + "g": 135, + "b": 255 + }, + "hsl": { + "h": 300, + "s": 100, + "l": 76 + }, + "name": "Orchid1" + }, + { + "number": 214, + "hex": "#ffaf00", + "rgb": { + "r": 255, + "g": 175, + "b": 0 + }, + "hsl": { + "h": 41.1764705882353, + "s": 100, + "l": 50 + }, + "name": "Orange1" + }, + { + "number": 215, + "hex": "#ffaf5f", + "rgb": { + "r": 255, + "g": 175, + "b": 95 + }, + "hsl": { + "h": 30, + "s": 100, + "l": 68 + }, + "name": "SandyBrown" + }, + { + "number": 216, + "hex": "#ffaf87", + "rgb": { + "r": 255, + "g": 175, + "b": 135 + }, + "hsl": { + "h": 20, + "s": 100, + "l": 76 + }, + "name": "LightSalmon1" + }, + { + "number": 217, + "hex": "#ffafaf", + "rgb": { + "r": 255, + "g": 175, + "b": 175 + }, + "hsl": { + "h": 0, + "s": 100, + "l": 84 + }, + "name": "LightPink1" + }, + { + "number": 218, + "hex": "#ffafd7", + "rgb": { + "r": 255, + "g": 175, + "b": 215 + }, + "hsl": { + "h": 330, + "s": 100, + "l": 84 + }, + "name": "Pink1" + }, + { + "number": 219, + "hex": "#ffafff", + "rgb": { + "r": 255, + "g": 175, + "b": 255 + }, + "hsl": { + "h": 300, + "s": 100, + "l": 84 + }, + "name": "Plum1" + }, + { + "number": 220, + "hex": "#ffd700", + "rgb": { + "r": 255, + "g": 215, + "b": 0 + }, + "hsl": { + "h": 50.5882352941176, + "s": 100, + "l": 50 + }, + "name": "Gold1" + }, + { + "number": 221, + "hex": "#ffd75f", + "rgb": { + "r": 255, + "g": 215, + "b": 95 + }, + "hsl": { + "h": 45, + "s": 100, + "l": 68 + }, + "name": "LightGoldenrod2" + }, + { + "number": 222, + "hex": "#ffd787", + "rgb": { + "r": 255, + "g": 215, + "b": 135 + }, + "hsl": { + "h": 40, + "s": 100, + "l": 76 + }, + "name": "LightGoldenrod2" + }, + { + "number": 223, + "hex": "#ffd7af", + "rgb": { + "r": 255, + "g": 215, + "b": 175 + }, + "hsl": { + "h": 30, + "s": 100, + "l": 84 + }, + "name": "NavajoWhite1" + }, + { + "number": 224, + "hex": "#ffd7d7", + "rgb": { + "r": 255, + "g": 215, + "b": 215 + }, + "hsl": { + "h": 0, + "s": 100, + "l": 92 + }, + "name": "MistyRose1" + }, + { + "number": 225, + "hex": "#ffd7ff", + "rgb": { + "r": 255, + "g": 215, + "b": 255 + }, + "hsl": { + "h": 300, + "s": 100, + "l": 92 + }, + "name": "Thistle1" + }, + { + "number": 226, + "hex": "#ffff00", + "rgb": { + "r": 255, + "g": 255, + "b": 0 + }, + "hsl": { + "h": 60, + "s": 100, + "l": 50 + }, + "name": "Yellow1" + }, + { + "number": 227, + "hex": "#ffff5f", + "rgb": { + "r": 255, + "g": 255, + "b": 95 + }, + "hsl": { + "h": 60, + "s": 100, + "l": 68 + }, + "name": "LightGoldenrod1" + }, + { + "number": 228, + "hex": "#ffff87", + "rgb": { + "r": 255, + "g": 255, + "b": 135 + }, + "hsl": { + "h": 60, + "s": 100, + "l": 76 + }, + "name": "Khaki1" + }, + { + "number": 229, + "hex": "#ffffaf", + "rgb": { + "r": 255, + "g": 255, + "b": 175 + }, + "hsl": { + "h": 60, + "s": 100, + "l": 84 + }, + "name": "Wheat1" + }, + { + "number": 230, + "hex": "#ffffd7", + "rgb": { + "r": 255, + "g": 255, + "b": 215 + }, + "hsl": { + "h": 60, + "s": 100, + "l": 92 + }, + "name": "Cornsilk1" + }, + { + "number": 231, + "hex": "#ffffff", + "rgb": { + "r": 255, + "g": 255, + "b": 255 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 100 + }, + "name": "Grey100" + }, + { + "number": 232, + "hex": "#080808", + "rgb": { + "r": 8, + "g": 8, + "b": 8 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 3 + }, + "name": "Grey3" + }, + { + "number": 233, + "hex": "#121212", + "rgb": { + "r": 18, + "g": 18, + "b": 18 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 7 + }, + "name": "Grey7" + }, + { + "number": 234, + "hex": "#1c1c1c", + "rgb": { + "r": 28, + "g": 28, + "b": 28 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 10 + }, + "name": "Grey11" + }, + { + "number": 235, + "hex": "#262626", + "rgb": { + "r": 38, + "g": 38, + "b": 38 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 14 + }, + "name": "Grey15" + }, + { + "number": 236, + "hex": "#303030", + "rgb": { + "r": 48, + "g": 48, + "b": 48 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 18 + }, + "name": "Grey19" + }, + { + "number": 237, + "hex": "#3a3a3a", + "rgb": { + "r": 58, + "g": 58, + "b": 58 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 22 + }, + "name": "Grey23" + }, + { + "number": 238, + "hex": "#444444", + "rgb": { + "r": 68, + "g": 68, + "b": 68 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 26 + }, + "name": "Grey27" + }, + { + "number": 239, + "hex": "#4e4e4e", + "rgb": { + "r": 78, + "g": 78, + "b": 78 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 30 + }, + "name": "Grey30" + }, + { + "number": 240, + "hex": "#585858", + "rgb": { + "r": 88, + "g": 88, + "b": 88 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 34 + }, + "name": "Grey35" + }, + { + "number": 241, + "hex": "#626262", + "rgb": { + "r": 98, + "g": 98, + "b": 98 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 37 + }, + "name": "Grey39" + }, + { + "number": 242, + "hex": "#6c6c6c", + "rgb": { + "r": 108, + "g": 108, + "b": 108 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 40 + }, + "name": "Grey42" + }, + { + "number": 243, + "hex": "#767676", + "rgb": { + "r": 118, + "g": 118, + "b": 118 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 46 + }, + "name": "Grey46" + }, + { + "number": 244, + "hex": "#808080", + "rgb": { + "r": 128, + "g": 128, + "b": 128 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 50 + }, + "name": "Grey50" + }, + { + "number": 245, + "hex": "#8a8a8a", + "rgb": { + "r": 138, + "g": 138, + "b": 138 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 54 + }, + "name": "Grey54" + }, + { + "number": 246, + "hex": "#949494", + "rgb": { + "r": 148, + "g": 148, + "b": 148 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 58 + }, + "name": "Grey58" + }, + { + "number": 247, + "hex": "#9e9e9e", + "rgb": { + "r": 158, + "g": 158, + "b": 158 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 61 + }, + "name": "Grey62" + }, + { + "number": 248, + "hex": "#a8a8a8", + "rgb": { + "r": 168, + "g": 168, + "b": 168 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 65 + }, + "name": "Grey66" + }, + { + "number": 249, + "hex": "#b2b2b2", + "rgb": { + "r": 178, + "g": 178, + "b": 178 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 69 + }, + "name": "Grey70" + }, + { + "number": 250, + "hex": "#bcbcbc", + "rgb": { + "r": 188, + "g": 188, + "b": 188 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 73 + }, + "name": "Grey74" + }, + { + "number": 251, + "hex": "#c6c6c6", + "rgb": { + "r": 198, + "g": 198, + "b": 198 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 77 + }, + "name": "Grey78" + }, + { + "number": 252, + "hex": "#d0d0d0", + "rgb": { + "r": 208, + "g": 208, + "b": 208 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 81 + }, + "name": "Grey82" + }, + { + "number": 253, + "hex": "#dadada", + "rgb": { + "r": 218, + "g": 218, + "b": 218 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 85 + }, + "name": "Grey85" + }, + { + "number": 254, + "hex": "#e4e4e4", + "rgb": { + "r": 228, + "g": 228, + "b": 228 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 89 + }, + "name": "Grey89" + }, + { + "number": 255, + "hex": "#eeeeee", + "rgb": { + "r": 238, + "g": 238, + "b": 238 + }, + "hsl": { + "h": 0, + "s": 0, + "l": 93 + }, + "name": "Grey93" + } +] \ No newline at end of file diff --git a/eng/Generator/Generator.csproj b/eng/Generator/Generator.csproj new file mode 100644 index 0000000..0691da3 --- /dev/null +++ b/eng/Generator/Generator.csproj @@ -0,0 +1,36 @@ + + + + Exe + netcoreapp3.1 + + + + + + + + + + + Always + + + Always + + + Always + + + Always + + + + + + + + + + + diff --git a/eng/Generator/Generator.sln b/eng/Generator/Generator.sln new file mode 100644 index 0000000..c75ce74 --- /dev/null +++ b/eng/Generator/Generator.sln @@ -0,0 +1,37 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30320.27 +MinimumVisualStudioVersion = 15.0.26124.0 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Generator", "Generator.csproj", "{5668D267-53E3-4B99-97AE-59AA597D22ED}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5668D267-53E3-4B99-97AE-59AA597D22ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5668D267-53E3-4B99-97AE-59AA597D22ED}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5668D267-53E3-4B99-97AE-59AA597D22ED}.Debug|x64.ActiveCfg = Debug|Any CPU + {5668D267-53E3-4B99-97AE-59AA597D22ED}.Debug|x64.Build.0 = Debug|Any CPU + {5668D267-53E3-4B99-97AE-59AA597D22ED}.Debug|x86.ActiveCfg = Debug|Any CPU + {5668D267-53E3-4B99-97AE-59AA597D22ED}.Debug|x86.Build.0 = Debug|Any CPU + {5668D267-53E3-4B99-97AE-59AA597D22ED}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5668D267-53E3-4B99-97AE-59AA597D22ED}.Release|Any CPU.Build.0 = Release|Any CPU + {5668D267-53E3-4B99-97AE-59AA597D22ED}.Release|x64.ActiveCfg = Release|Any CPU + {5668D267-53E3-4B99-97AE-59AA597D22ED}.Release|x64.Build.0 = Release|Any CPU + {5668D267-53E3-4B99-97AE-59AA597D22ED}.Release|x86.ActiveCfg = Release|Any CPU + {5668D267-53E3-4B99-97AE-59AA597D22ED}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {5F37FDE3-D591-4D43-8DDE-2ED6BAB0A7B4} + EndGlobalSection +EndGlobal diff --git a/eng/Generator/Models/Color.cs b/eng/Generator/Models/Color.cs new file mode 100644 index 0000000..9c5261c --- /dev/null +++ b/eng/Generator/Models/Color.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Newtonsoft.Json; + +namespace Generator.Models +{ + public sealed class Color + { + public int Number { get; set; } + public string Hex { get; set; } + public string Name { get; set; } + public Rgb Rgb { get; set; } + + public int R => Rgb.R; + public int G => Rgb.G; + public int B => Rgb.B; + + public static IEnumerable Parse(string json) + { + var source = JsonConvert.DeserializeObject>(json); + + var check = new Dictionary(StringComparer.OrdinalIgnoreCase); + foreach (var color in source.OrderBy(c => c.Number)) + { + if (!check.ContainsKey(color.Name)) + { + check.Add(color.Name, color); + } + else + { + var newName = (string)null; + for (int i = 1; i < 100; i++) + { + if (!check.ContainsKey($"{color.Name}_{i}")) + { + newName = $"{color.Name}_{i}"; + break; + } + } + + if (newName == null) + { + throw new InvalidOperationException("Impossible!"); + } + + check.Add(newName, color); + color.Name = newName; + } + } + + return source; + } + } + + public sealed class Rgb + { + public int R { get; set; } + public int G { get; set; } + public int B { get; set; } + } +} diff --git a/eng/Generator/Models/ColorModel.cs b/eng/Generator/Models/ColorModel.cs new file mode 100644 index 0000000..736d4c0 --- /dev/null +++ b/eng/Generator/Models/ColorModel.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; + +namespace Generator.Models +{ + public sealed class ColorModel + { + public List Colors { get; set; } + + public ColorModel(IEnumerable colors) + { + Colors = new List(colors); + } + } +} diff --git a/eng/Generator/Models/Palette.cs b/eng/Generator/Models/Palette.cs new file mode 100644 index 0000000..1bdf19c --- /dev/null +++ b/eng/Generator/Models/Palette.cs @@ -0,0 +1,6 @@ +namespace Generator.Models +{ + public sealed class Palette + { + } +} diff --git a/eng/Generator/Program.cs b/eng/Generator/Program.cs new file mode 100644 index 0000000..30fa3f4 --- /dev/null +++ b/eng/Generator/Program.cs @@ -0,0 +1,19 @@ +using Generator.Commands; +using Spectre.Cli; + +namespace Generator +{ + public static class Program + { + public static int Main(string[] args) + { + var app = new CommandApp(); + app.Configure(config => + { + config.AddCommand("colors"); + }); + + return app.Run(args); + } + } +} diff --git a/eng/Generator/Templates/Color.Generated.template b/eng/Generator/Templates/Color.Generated.template new file mode 100644 index 0000000..ccf33e4 --- /dev/null +++ b/eng/Generator/Templates/Color.Generated.template @@ -0,0 +1,36 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Generated {{ date.now | date.to_string `%Y-%m-%d %k:%M` }} +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System.Diagnostics.CodeAnalysis; + +namespace Spectre.Console +{ + /// + /// Represents a color. + /// + public partial struct Color + { + internal Color(byte number, byte red, byte green, byte blue, bool isDefault = false) + : this(red, green, blue) + { + Number = number; + IsDefault = isDefault; + } + {{~ for color in colors }} + /// + /// Gets the color "{{ color.name }}" (RGB {{ color.r }},{{ color.g }},{{ color.b }}). + /// + {{- if string.contains color.name "_" }} + [SuppressMessage("Naming", "CA1707:Identifiers should not contain underscores")] + {{- end}} + public static Color {{ color.name }} { get; } = new Color({{ color.number }}, {{ color.r }}, {{ color.g }}, {{ color.b }}); + {{~ end ~}} + } +} \ No newline at end of file diff --git a/eng/Generator/Templates/ColorPalette.Generated.template b/eng/Generator/Templates/ColorPalette.Generated.template new file mode 100644 index 0000000..01f9422 --- /dev/null +++ b/eng/Generator/Templates/ColorPalette.Generated.template @@ -0,0 +1,47 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Generated {{ date.now | date.to_string `%Y-%m-%d %k:%M` }} +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System.Collections.Generic; + +namespace Spectre.Console.Internal +{ + internal static partial class ColorPalette + { + private static List GenerateLegacyPalette() + { + return new List + { + {{~ for number in 0..7 ~}} + Color.{{ colors[number].name }}, + {{~ end ~}} + }; + } + + private static List GenerateStandardPalette(IReadOnlyList legacy) + { + return new List(legacy) + { + {{~ for number in 8..15 ~}} + Color.{{ colors[number].name }}, + {{~ end ~}} + }; + } + + private static List GenerateEightBitPalette(IReadOnlyList standard) + { + return new List(standard) + { + {{~ for number in 16..255 ~}} + Color.{{ colors[number].name }}, + {{~ end ~}} + }; + } + } +} diff --git a/eng/Generator/Templates/ColorTable.Generated.template b/eng/Generator/Templates/ColorTable.Generated.template new file mode 100644 index 0000000..09f19c5 --- /dev/null +++ b/eng/Generator/Templates/ColorTable.Generated.template @@ -0,0 +1,28 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Generated {{ date.now | date.to_string `%Y-%m-%d %k:%M` }} +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Collections.Generic; + +namespace Spectre.Console.Internal +{ + internal static partial class ColorTable + { + private static Dictionary GenerateTable() + { + return new Dictionary(StringComparer.OrdinalIgnoreCase) + { + {{~ for color in colors ~}} + { "{{ string.downcase color.name }}", {{ color.number }} }, + {{~ end ~}} + }; + } + } +} diff --git a/src/Spectre.Console/Color.Known.cs b/src/Spectre.Console/Color.Generated.cs similarity index 99% rename from src/Spectre.Console/Color.Known.cs rename to src/Spectre.Console/Color.Generated.cs index 73be13f..1c3618b 100644 --- a/src/Spectre.Console/Color.Known.cs +++ b/src/Spectre.Console/Color.Generated.cs @@ -1,3 +1,13 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Generated 2020-08-03 15:17 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + using System.Diagnostics.CodeAnalysis; namespace Spectre.Console @@ -1348,4 +1358,4 @@ namespace Spectre.Console /// public static Color Grey93 { get; } = new Color(255, 238, 238, 238); } -} +} \ No newline at end of file diff --git a/src/Spectre.Console/Internal/Colors/ColorPalette.Generated.cs b/src/Spectre.Console/Internal/Colors/ColorPalette.Generated.cs new file mode 100644 index 0000000..0f4fc9e --- /dev/null +++ b/src/Spectre.Console/Internal/Colors/ColorPalette.Generated.cs @@ -0,0 +1,294 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Generated 2020-08-03 15:17 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System.Collections.Generic; + +namespace Spectre.Console.Internal +{ + internal static partial class ColorPalette + { + private static List GenerateLegacyPalette() + { + return new List + { + Color.Black, + Color.Maroon, + Color.Green, + Color.Olive, + Color.Navy, + Color.Purple, + Color.Teal, + Color.Silver, + }; + } + + private static List GenerateStandardPalette(IReadOnlyList legacy) + { + return new List(legacy) + { + Color.Grey, + Color.Red, + Color.Lime, + Color.Yellow, + Color.Blue, + Color.Fuchsia, + Color.Aqua, + Color.White, + }; + } + + private static List GenerateEightBitPalette(IReadOnlyList standard) + { + return new List(standard) + { + Color.Grey0, + Color.NavyBlue, + Color.DarkBlue, + Color.Blue3, + Color.Blue3_1, + Color.Blue1, + Color.DarkGreen, + Color.DeepSkyBlue4, + Color.DeepSkyBlue4_1, + Color.DeepSkyBlue4_2, + Color.DodgerBlue3, + Color.DodgerBlue2, + Color.Green4, + Color.SpringGreen4, + Color.Turquoise4, + Color.DeepSkyBlue3, + Color.DeepSkyBlue3_1, + Color.DodgerBlue1, + Color.Green3, + Color.SpringGreen3, + Color.DarkCyan, + Color.LightSeaGreen, + Color.DeepSkyBlue2, + Color.DeepSkyBlue1, + Color.Green3_1, + Color.SpringGreen3_1, + Color.SpringGreen2, + Color.Cyan3, + Color.DarkTurquoise, + Color.Turquoise2, + Color.Green1, + Color.SpringGreen2_1, + Color.SpringGreen1, + Color.MediumSpringGreen, + Color.Cyan2, + Color.Cyan1, + Color.DarkRed, + Color.DeepPink4, + Color.Purple4, + Color.Purple4_1, + Color.Purple3, + Color.BlueViolet, + Color.Orange4, + Color.Grey37, + Color.MediumPurple4, + Color.SlateBlue3, + Color.SlateBlue3_1, + Color.RoyalBlue1, + Color.Chartreuse4, + Color.DarkSeaGreen4, + Color.PaleTurquoise4, + Color.SteelBlue, + Color.SteelBlue3, + Color.CornflowerBlue, + Color.Chartreuse3, + Color.DarkSeaGreen4_1, + Color.CadetBlue, + Color.CadetBlue_1, + Color.SkyBlue3, + Color.SteelBlue1, + Color.Chartreuse3_1, + Color.PaleGreen3, + Color.SeaGreen3, + Color.Aquamarine3, + Color.MediumTurquoise, + Color.SteelBlue1_1, + Color.Chartreuse2, + Color.SeaGreen2, + Color.SeaGreen1, + Color.SeaGreen1_1, + Color.Aquamarine1, + Color.DarkSlateGray2, + Color.DarkRed_1, + Color.DeepPink4_1, + Color.DarkMagenta, + Color.DarkMagenta_1, + Color.DarkViolet, + Color.Purple_1, + Color.Orange4_1, + Color.LightPink4, + Color.Plum4, + Color.MediumPurple3, + Color.MediumPurple3_1, + Color.SlateBlue1, + Color.Yellow4, + Color.Wheat4, + Color.Grey53, + Color.LightSlateGrey, + Color.MediumPurple, + Color.LightSlateBlue, + Color.Yellow4_1, + Color.DarkOliveGreen3, + Color.DarkSeaGreen, + Color.LightSkyBlue3, + Color.LightSkyBlue3_1, + Color.SkyBlue2, + Color.Chartreuse2_1, + Color.DarkOliveGreen3_1, + Color.PaleGreen3_1, + Color.DarkSeaGreen3, + Color.DarkSlateGray3, + Color.SkyBlue1, + Color.Chartreuse1, + Color.LightGreen, + Color.LightGreen_1, + Color.PaleGreen1, + Color.Aquamarine1_1, + Color.DarkSlateGray1, + Color.Red3, + Color.DeepPink4_2, + Color.MediumVioletRed, + Color.Magenta3, + Color.DarkViolet_1, + Color.Purple_2, + Color.DarkOrange3, + Color.IndianRed, + Color.HotPink3, + Color.MediumOrchid3, + Color.MediumOrchid, + Color.MediumPurple2, + Color.DarkGoldenrod, + Color.LightSalmon3, + Color.RosyBrown, + Color.Grey63, + Color.MediumPurple2_1, + Color.MediumPurple1, + Color.Gold3, + Color.DarkKhaki, + Color.NavajoWhite3, + Color.Grey69, + Color.LightSteelBlue3, + Color.LightSteelBlue, + Color.Yellow3, + Color.DarkOliveGreen3_2, + Color.DarkSeaGreen3_1, + Color.DarkSeaGreen2, + Color.LightCyan3, + Color.LightSkyBlue1, + Color.GreenYellow, + Color.DarkOliveGreen2, + Color.PaleGreen1_1, + Color.DarkSeaGreen2_1, + Color.DarkSeaGreen1, + Color.PaleTurquoise1, + Color.Red3_1, + Color.DeepPink3, + Color.DeepPink3_1, + Color.Magenta3_1, + Color.Magenta3_2, + Color.Magenta2, + Color.DarkOrange3_1, + Color.IndianRed_1, + Color.HotPink3_1, + Color.HotPink2, + Color.Orchid, + Color.MediumOrchid1, + Color.Orange3, + Color.LightSalmon3_1, + Color.LightPink3, + Color.Pink3, + Color.Plum3, + Color.Violet, + Color.Gold3_1, + Color.LightGoldenrod3, + Color.Tan, + Color.MistyRose3, + Color.Thistle3, + Color.Plum2, + Color.Yellow3_1, + Color.Khaki3, + Color.LightGoldenrod2, + Color.LightYellow3, + Color.Grey84, + Color.LightSteelBlue1, + Color.Yellow2, + Color.DarkOliveGreen1, + Color.DarkOliveGreen1_1, + Color.DarkSeaGreen1_1, + Color.Honeydew2, + Color.LightCyan1, + Color.Red1, + Color.DeepPink2, + Color.DeepPink1, + Color.DeepPink1_1, + Color.Magenta2_1, + Color.Magenta1, + Color.OrangeRed1, + Color.IndianRed1, + Color.IndianRed1_1, + Color.HotPink, + Color.HotPink_1, + Color.MediumOrchid1_1, + Color.DarkOrange, + Color.Salmon1, + Color.LightCoral, + Color.PaleVioletRed1, + Color.Orchid2, + Color.Orchid1, + Color.Orange1, + Color.SandyBrown, + Color.LightSalmon1, + Color.LightPink1, + Color.Pink1, + Color.Plum1, + Color.Gold1, + Color.LightGoldenrod2_1, + Color.LightGoldenrod2_2, + Color.NavajoWhite1, + Color.MistyRose1, + Color.Thistle1, + Color.Yellow1, + Color.LightGoldenrod1, + Color.Khaki1, + Color.Wheat1, + Color.Cornsilk1, + Color.Grey100, + Color.Grey3, + Color.Grey7, + Color.Grey11, + Color.Grey15, + Color.Grey19, + Color.Grey23, + Color.Grey27, + Color.Grey30, + Color.Grey35, + Color.Grey39, + Color.Grey42, + Color.Grey46, + Color.Grey50, + Color.Grey54, + Color.Grey58, + Color.Grey62, + Color.Grey66, + Color.Grey70, + Color.Grey74, + Color.Grey78, + Color.Grey82, + Color.Grey85, + Color.Grey89, + Color.Grey93, + }; + } + } +} diff --git a/src/Spectre.Console/Internal/Colors/ColorPalette.cs b/src/Spectre.Console/Internal/Colors/ColorPalette.cs index 69d7081..b115df0 100644 --- a/src/Spectre.Console/Internal/Colors/ColorPalette.cs +++ b/src/Spectre.Console/Internal/Colors/ColorPalette.cs @@ -4,7 +4,7 @@ using System.Linq; namespace Spectre.Console.Internal { - internal static class ColorPalette + internal static partial class ColorPalette { public static IReadOnlyList Legacy { get; } public static IReadOnlyList Standard { get; } @@ -12,81 +12,9 @@ namespace Spectre.Console.Internal static ColorPalette() { - Legacy = new List - { - Color.Black, Color.Maroon, Color.Green, Color.Olive, - Color.Navy, Color.Purple, Color.Teal, Color.Silver, - }; - - Standard = new List(Legacy) - { - Color.Grey, Color.Red, Color.Lime, Color.Yellow, - Color.Blue, Color.Fuchsia, Color.Aqua, Color.White, - }; - - EightBit = new List(Standard) - { - Color.Grey0, Color.NavyBlue, Color.DarkBlue, Color.Blue3, - Color.Blue3_1, Color.Blue1, Color.DarkGreen, Color.DeepSkyBlue4, - Color.DeepSkyBlue4_1, Color.DeepSkyBlue4_2, Color.DodgerBlue3, Color.DodgerBlue2, - Color.Green4, Color.SpringGreen4, Color.Turquoise4, Color.DeepSkyBlue3, - Color.DeepSkyBlue3_1, Color.DodgerBlue1, Color.Green3, Color.SpringGreen3, - Color.DarkCyan, Color.LightSeaGreen, Color.DeepSkyBlue2, Color.DeepSkyBlue1, - Color.Green3_1, Color.SpringGreen3_1, Color.SpringGreen2, Color.Cyan3, - Color.DarkTurquoise, Color.Turquoise2, Color.Green1, Color.SpringGreen2_1, - Color.SpringGreen1, Color.MediumSpringGreen, Color.Cyan2, Color.Cyan1, - Color.DarkRed, Color.DeepPink4, Color.Purple4, Color.Purple4_1, - Color.Purple3, Color.BlueViolet, Color.Orange4, Color.Grey37, - Color.MediumPurple4, Color.SlateBlue3, Color.SlateBlue3_1, Color.RoyalBlue1, - Color.Chartreuse4, Color.DarkSeaGreen4, Color.PaleTurquoise4, Color.SteelBlue, - Color.SteelBlue3, Color.CornflowerBlue, Color.Chartreuse3, Color.DarkSeaGreen4_1, - Color.CadetBlue, Color.CadetBlue_1, Color.SkyBlue3, Color.SteelBlue1, - Color.Chartreuse3_1, Color.PaleGreen3, Color.SeaGreen3, Color.Aquamarine3, - Color.MediumTurquoise, Color.SteelBlue1_1, Color.Chartreuse2, Color.SeaGreen2, - Color.SeaGreen1, Color.SeaGreen1_1, Color.Aquamarine1, Color.DarkSlateGray2, - Color.DarkRed_1, Color.DeepPink4_1, Color.DarkMagenta, Color.DarkMagenta_1, - Color.DarkViolet, Color.Purple_1, Color.Orange4_1, Color.LightPink4, - Color.Plum4, Color.MediumPurple3, Color.MediumPurple3_1, Color.SlateBlue1, - Color.Yellow4, Color.Wheat4, Color.Grey53, Color.LightSlateGrey, - Color.MediumPurple, Color.LightSlateBlue, Color.Yellow4_1, Color.DarkOliveGreen3, - Color.DarkSeaGreen, Color.LightSkyBlue3, Color.LightSkyBlue3_1, Color.SkyBlue2, - Color.Chartreuse2_1, Color.DarkOliveGreen3_1, Color.PaleGreen3_1, Color.DarkSeaGreen3, - Color.DarkSlateGray3, Color.SkyBlue1, Color.Chartreuse1, Color.LightGreen, - Color.LightGreen_1, Color.PaleGreen1, Color.Aquamarine1_1, Color.DarkSlateGray1, - Color.Red3, Color.DeepPink4_2, Color.MediumVioletRed, Color.Magenta3, - Color.DarkViolet_1, Color.Purple_2, Color.DarkOrange3, Color.IndianRed, - Color.HotPink3, Color.MediumOrchid3, Color.MediumOrchid, Color.MediumPurple2, - Color.DarkGoldenrod, Color.LightSalmon3, Color.RosyBrown, Color.Grey63, - Color.MediumPurple2_1, Color.MediumPurple1, Color.Gold3, Color.DarkKhaki, - Color.NavajoWhite3, Color.Grey69, Color.LightSteelBlue3, Color.LightSteelBlue, - Color.Yellow3, Color.DarkOliveGreen3_2, Color.DarkSeaGreen3_1, Color.DarkSeaGreen2, - Color.LightCyan3, Color.LightSkyBlue1, Color.GreenYellow, Color.DarkOliveGreen2, - Color.PaleGreen1_1, Color.DarkSeaGreen2_1, Color.DarkSeaGreen1, Color.PaleTurquoise1, - Color.Red3_1, Color.DeepPink3, Color.DeepPink3_1, Color.Magenta3_1, - Color.Magenta3_2, Color.Magenta2, Color.DarkOrange3_1, Color.IndianRed_1, - Color.HotPink3_1, Color.HotPink2, Color.Orchid, Color.MediumOrchid1, - Color.Orange3, Color.LightSalmon3_1, Color.LightPink3, Color.Pink3, - Color.Plum3, Color.Violet, Color.Gold3_1, Color.LightGoldenrod3, - Color.Tan, Color.MistyRose3, Color.Thistle3, Color.Plum2, - Color.Yellow3_1, Color.Khaki3, Color.LightGoldenrod2, Color.LightYellow3, - Color.Grey84, Color.LightSteelBlue1, Color.Yellow2, Color.DarkOliveGreen1, - Color.DarkOliveGreen1_1, Color.DarkSeaGreen1_1, Color.Honeydew2, Color.LightCyan1, - Color.Red1, Color.DeepPink2, Color.DeepPink1, Color.DeepPink1_1, - Color.Magenta2_1, Color.Magenta1, Color.OrangeRed1, Color.IndianRed1, - Color.IndianRed1_1, Color.HotPink, Color.HotPink_1, Color.MediumOrchid1_1, - Color.DarkOrange, Color.Salmon1, Color.LightCoral, Color.PaleVioletRed1, - Color.Orchid2, Color.Orchid1, Color.Orange1, Color.SandyBrown, - Color.LightSalmon1, Color.LightPink1, Color.Pink1, Color.Plum1, - Color.Gold1, Color.LightGoldenrod2_1, Color.LightGoldenrod2_2, Color.NavajoWhite1, - Color.MistyRose1, Color.Thistle1, Color.Yellow1, Color.LightGoldenrod1, - Color.Khaki1, Color.Wheat1, Color.Cornsilk1, Color.Grey100, - Color.Grey3, Color.Grey7, Color.Grey11, Color.Grey15, - Color.Grey19, Color.Grey23, Color.Grey27, Color.Grey30, - Color.Grey35, Color.Grey39, Color.Grey42, Color.Grey46, - Color.Grey50, Color.Grey54, Color.Grey58, Color.Grey62, - Color.Grey66, Color.Grey70, Color.Grey74, Color.Grey78, - Color.Grey82, Color.Grey85, Color.Grey89, Color.Grey93, - }; + Legacy = GenerateLegacyPalette(); + Standard = GenerateStandardPalette(Legacy); + EightBit = GenerateEightBitPalette(Standard); } internal static Color ExactOrClosest(ColorSystem system, Color color) diff --git a/src/Spectre.Console/Internal/Colors/ColorTable.Generated.cs b/src/Spectre.Console/Internal/Colors/ColorTable.Generated.cs new file mode 100644 index 0000000..7741f13 --- /dev/null +++ b/src/Spectre.Console/Internal/Colors/ColorTable.Generated.cs @@ -0,0 +1,281 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Generated 2020-08-03 15:17 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Collections.Generic; + +namespace Spectre.Console.Internal +{ + internal static partial class ColorTable + { + private static Dictionary GenerateTable() + { + return new Dictionary(StringComparer.OrdinalIgnoreCase) + { + { "black", 0 }, + { "maroon", 1 }, + { "green", 2 }, + { "olive", 3 }, + { "navy", 4 }, + { "purple", 5 }, + { "teal", 6 }, + { "silver", 7 }, + { "grey", 8 }, + { "red", 9 }, + { "lime", 10 }, + { "yellow", 11 }, + { "blue", 12 }, + { "fuchsia", 13 }, + { "aqua", 14 }, + { "white", 15 }, + { "grey0", 16 }, + { "navyblue", 17 }, + { "darkblue", 18 }, + { "blue3", 19 }, + { "blue3_1", 20 }, + { "blue1", 21 }, + { "darkgreen", 22 }, + { "deepskyblue4", 23 }, + { "deepskyblue4_1", 24 }, + { "deepskyblue4_2", 25 }, + { "dodgerblue3", 26 }, + { "dodgerblue2", 27 }, + { "green4", 28 }, + { "springgreen4", 29 }, + { "turquoise4", 30 }, + { "deepskyblue3", 31 }, + { "deepskyblue3_1", 32 }, + { "dodgerblue1", 33 }, + { "green3", 34 }, + { "springgreen3", 35 }, + { "darkcyan", 36 }, + { "lightseagreen", 37 }, + { "deepskyblue2", 38 }, + { "deepskyblue1", 39 }, + { "green3_1", 40 }, + { "springgreen3_1", 41 }, + { "springgreen2", 42 }, + { "cyan3", 43 }, + { "darkturquoise", 44 }, + { "turquoise2", 45 }, + { "green1", 46 }, + { "springgreen2_1", 47 }, + { "springgreen1", 48 }, + { "mediumspringgreen", 49 }, + { "cyan2", 50 }, + { "cyan1", 51 }, + { "darkred", 52 }, + { "deeppink4", 53 }, + { "purple4", 54 }, + { "purple4_1", 55 }, + { "purple3", 56 }, + { "blueviolet", 57 }, + { "orange4", 58 }, + { "grey37", 59 }, + { "mediumpurple4", 60 }, + { "slateblue3", 61 }, + { "slateblue3_1", 62 }, + { "royalblue1", 63 }, + { "chartreuse4", 64 }, + { "darkseagreen4", 65 }, + { "paleturquoise4", 66 }, + { "steelblue", 67 }, + { "steelblue3", 68 }, + { "cornflowerblue", 69 }, + { "chartreuse3", 70 }, + { "darkseagreen4_1", 71 }, + { "cadetblue", 72 }, + { "cadetblue_1", 73 }, + { "skyblue3", 74 }, + { "steelblue1", 75 }, + { "chartreuse3_1", 76 }, + { "palegreen3", 77 }, + { "seagreen3", 78 }, + { "aquamarine3", 79 }, + { "mediumturquoise", 80 }, + { "steelblue1_1", 81 }, + { "chartreuse2", 82 }, + { "seagreen2", 83 }, + { "seagreen1", 84 }, + { "seagreen1_1", 85 }, + { "aquamarine1", 86 }, + { "darkslategray2", 87 }, + { "darkred_1", 88 }, + { "deeppink4_1", 89 }, + { "darkmagenta", 90 }, + { "darkmagenta_1", 91 }, + { "darkviolet", 92 }, + { "purple_1", 93 }, + { "orange4_1", 94 }, + { "lightpink4", 95 }, + { "plum4", 96 }, + { "mediumpurple3", 97 }, + { "mediumpurple3_1", 98 }, + { "slateblue1", 99 }, + { "yellow4", 100 }, + { "wheat4", 101 }, + { "grey53", 102 }, + { "lightslategrey", 103 }, + { "mediumpurple", 104 }, + { "lightslateblue", 105 }, + { "yellow4_1", 106 }, + { "darkolivegreen3", 107 }, + { "darkseagreen", 108 }, + { "lightskyblue3", 109 }, + { "lightskyblue3_1", 110 }, + { "skyblue2", 111 }, + { "chartreuse2_1", 112 }, + { "darkolivegreen3_1", 113 }, + { "palegreen3_1", 114 }, + { "darkseagreen3", 115 }, + { "darkslategray3", 116 }, + { "skyblue1", 117 }, + { "chartreuse1", 118 }, + { "lightgreen", 119 }, + { "lightgreen_1", 120 }, + { "palegreen1", 121 }, + { "aquamarine1_1", 122 }, + { "darkslategray1", 123 }, + { "red3", 124 }, + { "deeppink4_2", 125 }, + { "mediumvioletred", 126 }, + { "magenta3", 127 }, + { "darkviolet_1", 128 }, + { "purple_2", 129 }, + { "darkorange3", 130 }, + { "indianred", 131 }, + { "hotpink3", 132 }, + { "mediumorchid3", 133 }, + { "mediumorchid", 134 }, + { "mediumpurple2", 135 }, + { "darkgoldenrod", 136 }, + { "lightsalmon3", 137 }, + { "rosybrown", 138 }, + { "grey63", 139 }, + { "mediumpurple2_1", 140 }, + { "mediumpurple1", 141 }, + { "gold3", 142 }, + { "darkkhaki", 143 }, + { "navajowhite3", 144 }, + { "grey69", 145 }, + { "lightsteelblue3", 146 }, + { "lightsteelblue", 147 }, + { "yellow3", 148 }, + { "darkolivegreen3_2", 149 }, + { "darkseagreen3_1", 150 }, + { "darkseagreen2", 151 }, + { "lightcyan3", 152 }, + { "lightskyblue1", 153 }, + { "greenyellow", 154 }, + { "darkolivegreen2", 155 }, + { "palegreen1_1", 156 }, + { "darkseagreen2_1", 157 }, + { "darkseagreen1", 158 }, + { "paleturquoise1", 159 }, + { "red3_1", 160 }, + { "deeppink3", 161 }, + { "deeppink3_1", 162 }, + { "magenta3_1", 163 }, + { "magenta3_2", 164 }, + { "magenta2", 165 }, + { "darkorange3_1", 166 }, + { "indianred_1", 167 }, + { "hotpink3_1", 168 }, + { "hotpink2", 169 }, + { "orchid", 170 }, + { "mediumorchid1", 171 }, + { "orange3", 172 }, + { "lightsalmon3_1", 173 }, + { "lightpink3", 174 }, + { "pink3", 175 }, + { "plum3", 176 }, + { "violet", 177 }, + { "gold3_1", 178 }, + { "lightgoldenrod3", 179 }, + { "tan", 180 }, + { "mistyrose3", 181 }, + { "thistle3", 182 }, + { "plum2", 183 }, + { "yellow3_1", 184 }, + { "khaki3", 185 }, + { "lightgoldenrod2", 186 }, + { "lightyellow3", 187 }, + { "grey84", 188 }, + { "lightsteelblue1", 189 }, + { "yellow2", 190 }, + { "darkolivegreen1", 191 }, + { "darkolivegreen1_1", 192 }, + { "darkseagreen1_1", 193 }, + { "honeydew2", 194 }, + { "lightcyan1", 195 }, + { "red1", 196 }, + { "deeppink2", 197 }, + { "deeppink1", 198 }, + { "deeppink1_1", 199 }, + { "magenta2_1", 200 }, + { "magenta1", 201 }, + { "orangered1", 202 }, + { "indianred1", 203 }, + { "indianred1_1", 204 }, + { "hotpink", 205 }, + { "hotpink_1", 206 }, + { "mediumorchid1_1", 207 }, + { "darkorange", 208 }, + { "salmon1", 209 }, + { "lightcoral", 210 }, + { "palevioletred1", 211 }, + { "orchid2", 212 }, + { "orchid1", 213 }, + { "orange1", 214 }, + { "sandybrown", 215 }, + { "lightsalmon1", 216 }, + { "lightpink1", 217 }, + { "pink1", 218 }, + { "plum1", 219 }, + { "gold1", 220 }, + { "lightgoldenrod2_1", 221 }, + { "lightgoldenrod2_2", 222 }, + { "navajowhite1", 223 }, + { "mistyrose1", 224 }, + { "thistle1", 225 }, + { "yellow1", 226 }, + { "lightgoldenrod1", 227 }, + { "khaki1", 228 }, + { "wheat1", 229 }, + { "cornsilk1", 230 }, + { "grey100", 231 }, + { "grey3", 232 }, + { "grey7", 233 }, + { "grey11", 234 }, + { "grey15", 235 }, + { "grey19", 236 }, + { "grey23", 237 }, + { "grey27", 238 }, + { "grey30", 239 }, + { "grey35", 240 }, + { "grey39", 241 }, + { "grey42", 242 }, + { "grey46", 243 }, + { "grey50", 244 }, + { "grey54", 245 }, + { "grey58", 246 }, + { "grey62", 247 }, + { "grey66", 248 }, + { "grey70", 249 }, + { "grey74", 250 }, + { "grey78", 251 }, + { "grey82", 252 }, + { "grey85", 253 }, + { "grey89", 254 }, + { "grey93", 255 }, + }; + } + } +} diff --git a/src/Spectre.Console/Internal/Colors/ColorTable.cs b/src/Spectre.Console/Internal/Colors/ColorTable.cs index 12736a3..58c6190 100644 --- a/src/Spectre.Console/Internal/Colors/ColorTable.cs +++ b/src/Spectre.Console/Internal/Colors/ColorTable.cs @@ -4,7 +4,7 @@ using System.Diagnostics.CodeAnalysis; namespace Spectre.Console.Internal { - internal static class ColorTable + internal static partial class ColorTable { private static readonly Dictionary _nameLookup; private static readonly Dictionary _numberLookup; @@ -12,73 +12,7 @@ namespace Spectre.Console.Internal [SuppressMessage("Performance", "CA1810:Initialize reference type static fields inline")] static ColorTable() { - _numberLookup = new Dictionary(StringComparer.OrdinalIgnoreCase) - { - { "black", 0 }, { "maroon", 1 }, { "green", 2 }, { "olive", 3 }, { "navy", 4 }, - { "purple", 5 }, { "teal", 6 }, { "silver", 7 }, { "grey", 8 }, - { "red", 9 }, { "lime", 10 }, { "yellow", 11 }, { "blue", 12 }, - { "fuchsia", 13 }, { "aqua", 14 }, { "white", 15 }, { "grey0", 16 }, - { "navyblue", 17 }, { "darkblue", 18 }, { "blue3", 19 }, { "blue3_1", 20 }, - { "blue1", 21 }, { "darkgreen", 22 }, { "deepskyblue4", 23 }, { "deepskyblue4_1", 24 }, - { "deepskyblue4_2", 25 }, { "dodgerblue3", 26 }, { "dodgerblue2", 27 }, { "green4", 28 }, - { "springgreen4", 29 }, { "turquoise4", 30 }, { "deepskyblue3", 31 }, { "deepskyblue3_1", 32 }, - { "dodgerblue1", 33 }, { "green3", 34 }, { "springgreen3", 35 }, { "darkcyan", 36 }, - { "lightseagreen", 37 }, { "deepskyblue2", 38 }, { "deepskyblue1", 39 }, { "green3_1", 40 }, - { "springgreen3_1", 41 }, { "springgreen2", 42 }, { "cyan3", 43 }, { "darkturquoise", 44 }, - { "turquoise2", 45 }, { "green1", 46 }, { "springgreen2_1", 47 }, { "springgreen1", 48 }, - { "mediumspringgreen", 49 }, { "cyan2", 50 }, { "cyan1", 51 }, { "darkred", 52 }, - { "deeppink4", 53 }, { "purple4", 54 }, { "purple4_1", 55 }, { "purple3", 56 }, - { "blueviolet", 57 }, { "orange4", 58 }, { "grey37", 59 }, { "mediumpurple4", 60 }, - { "slateblue3", 61 }, { "slateblue3_1", 62 }, { "royalblue1", 63 }, { "chartreuse4", 64 }, - { "darkseagreen4", 65 }, { "paleturquoise4", 66 }, { "steelblue", 67 }, { "steelblue3", 68 }, - { "cornflowerblue", 69 }, { "chartreuse3", 70 }, { "darkseagreen4_1", 71 }, { "cadetblue", 72 }, - { "cadetblue_1", 73 }, { "skyblue3", 74 }, { "steelblue1", 75 }, { "chartreuse3_1", 76 }, - { "palegreen3", 77 }, { "seagreen3", 78 }, { "aquamarine3", 79 }, { "mediumturquoise", 80 }, - { "steelblue1_1", 81 }, { "chartreuse2", 82 }, { "seagreen2", 83 }, { "seagreen1", 84 }, - { "seagreen1_1", 85 }, { "aquamarine1", 86 }, { "darkslategray2", 87 }, { "darkred_1", 88 }, - { "deeppink4_1", 89 }, { "darkmagenta", 90 }, { "darkmagenta_1", 91 }, { "darkviolet", 92 }, - { "purple_1", 93 }, { "orange4_1", 94 }, { "lightpink4", 95 }, { "plum4", 96 }, - { "mediumpurple3", 97 }, { "mediumpurple3_1", 98 }, { "slateblue1", 99 }, { "yellow4", 100 }, - { "wheat4", 101 }, { "grey53", 102 }, { "lightslategrey", 103 }, { "mediumpurple", 104 }, - { "lightslateblue", 105 }, { "yellow4_1", 106 }, { "darkolivegreen3", 107 }, { "darkseagreen", 108 }, - { "lightskyblue3", 109 }, { "lightskyblue3_1", 110 }, { "skyblue2", 111 }, { "chartreuse2_1", 112 }, - { "darkolivegreen3_1", 113 }, { "palegreen3_1", 114 }, { "darkseagreen3", 115 }, { "darkslategray3", 116 }, - { "skyblue1", 117 }, { "chartreuse1", 118 }, { "lightgreen", 119 }, { "lightgreen_1", 120 }, - { "palegreen1", 121 }, { "aquamarine1_1", 122 }, { "darkslategray1", 123 }, { "red3", 124 }, - { "deeppink4_2", 125 }, { "mediumvioletred", 126 }, { "magenta3", 127 }, { "darkviolet_1", 128 }, - { "purple_2", 129 }, { "darkorange3", 130 }, { "indianred", 131 }, { "hotpink3", 132 }, - { "mediumorchid3", 133 }, { "mediumorchid", 134 }, { "mediumpurple2", 135 }, { "darkgoldenrod", 136 }, - { "lightsalmon3", 137 }, { "rosybrown", 138 }, { "grey63", 139 }, { "mediumpurple2_1", 140 }, - { "mediumpurple1", 141 }, { "gold3", 142 }, { "darkkhaki", 143 }, { "navajowhite3", 144 }, - { "grey69", 145 }, { "lightsteelblue3", 146 }, { "lightsteelblue", 147 }, { "yellow3", 148 }, - { "darkolivegreen3_2", 149 }, { "darkseagreen3_1", 150 }, { "darkseagreen2", 151 }, { "lightcyan3", 152 }, - { "lightskyblue1", 153 }, { "greenyellow", 154 }, { "darkolivegreen2", 155 }, { "palegreen1_1", 156 }, - { "darkseagreen2_1", 157 }, { "darkseagreen1", 158 }, { "paleturquoise1", 159 }, { "red3_1", 160 }, - { "deeppink3", 161 }, { "deeppink3_1", 162 }, { "magenta3_1", 163 }, { "magenta3_2", 164 }, - { "magenta2", 165 }, { "darkorange3_1", 166 }, { "indianred_1", 167 }, { "hotpink3_1", 168 }, - { "hotpink2", 169 }, { "orchid", 170 }, { "mediumorchid1", 171 }, { "orange3", 172 }, - { "lightsalmon3_1", 173 }, { "lightpink3", 174 }, { "pink3", 175 }, { "plum3", 176 }, - { "violet", 177 }, { "gold3_1", 178 }, { "lightgoldenrod3", 179 }, { "tan", 180 }, - { "mistyrose3", 181 }, { "thistle3", 182 }, { "plum2", 183 }, { "yellow3_1", 184 }, - { "khaki3", 185 }, { "lightgoldenrod2", 186 }, { "lightyellow3", 187 }, { "grey84", 188 }, - { "lightsteelblue1", 189 }, { "yellow2", 190 }, { "darkolivegreen1", 191 }, { "darkolivegreen1_1", 192 }, - { "darkseagreen1_1", 193 }, { "honeydew2", 194 }, { "lightcyan1", 195 }, { "red1", 196 }, - { "deeppink2", 197 }, { "deeppink1", 198 }, { "deeppink1_1", 199 }, { "magenta2_1", 200 }, - { "magenta1", 201 }, { "orangered1", 202 }, { "indianred1", 203 }, { "indianred1_1", 204 }, - { "hotpink", 205 }, { "hotpink_1", 206 }, { "mediumorchid1_1", 207 }, { "darkorange", 208 }, - { "salmon1", 209 }, { "lightcoral", 210 }, { "palevioletred1", 211 }, { "orchid2", 212 }, - { "orchid1", 213 }, { "orange1", 214 }, { "sandybrown", 215 }, { "lightsalmon1", 216 }, - { "lightpink1", 217 }, { "pink1", 218 }, { "plum1", 219 }, { "gold1", 220 }, - { "lightgoldenrod2_1", 221 }, { "lightgoldenrod2_2", 222 }, { "navajowhite1", 223 }, { "mistyrose1", 224 }, - { "thistle1", 225 }, { "yellow1", 226 }, { "lightgoldenrod1", 227 }, { "khaki1", 228 }, - { "wheat1", 229 }, { "cornsilk1", 230 }, { "grey100", 231 }, { "grey3", 232 }, - { "grey7", 233 }, { "grey11", 234 }, { "grey15", 235 }, { "grey19", 236 }, - { "grey23", 237 }, { "grey27", 238 }, { "grey30", 239 }, { "grey35", 240 }, - { "grey39", 241 }, { "grey42", 242 }, { "grey46", 243 }, { "grey50", 244 }, - { "grey54", 245 }, { "grey58", 246 }, { "grey62", 247 }, { "grey66", 248 }, - { "grey70", 249 }, { "grey74", 250 }, { "grey78", 251 }, { "grey82", 252 }, - }; - + _numberLookup = GenerateTable(); _nameLookup = new Dictionary(); foreach (var pair in _numberLookup) { diff --git a/src/Spectre.Console/Spectre.Console.csproj b/src/Spectre.Console/Spectre.Console.csproj index f2c2f1b..c8555fb 100644 --- a/src/Spectre.Console/Spectre.Console.csproj +++ b/src/Spectre.Console/Spectre.Console.csproj @@ -9,6 +9,9 @@ + + **/ColorPalette.cs + Color.cs @@ -18,6 +21,7 @@ ConsoleExtensions.cs +