diff --git a/src/ConsoleBuffer/Buffer.cs b/src/ConsoleBuffer/Buffer.cs
index 67629a3..3830362 100644
--- a/src/ConsoleBuffer/Buffer.cs
+++ b/src/ConsoleBuffer/Buffer.cs
@@ -241,6 +241,9 @@ private void HandleControlSequence(Commands.ControlSequence cmd)
case Commands.SetCursorPosition scp:
this.HandleSetCursorPosition(scp);
break;
+ case Commands.SetGraphicsRendition sgr:
+ this.HandleSGR(sgr);
+ break;
case Commands.SetMode sm:
this.HandleSetMode(sm);
break;
@@ -354,6 +357,11 @@ private void HandleSetCursorPosition(Commands.SetCursorPosition scp)
}
}
+ private void HandleSGR(Commands.SetGraphicsRendition sgr)
+ {
+
+ }
+
private void HandleSetMode(Commands.SetMode sm)
{
switch (sm.Setting)
diff --git a/src/ConsoleBuffer/Character.cs b/src/ConsoleBuffer/Character.cs
index 883ed0e..5e64d99 100644
--- a/src/ConsoleBuffer/Character.cs
+++ b/src/ConsoleBuffer/Character.cs
@@ -1,5 +1,7 @@
namespace ConsoleBuffer
{
+ using System;
+
// XXX: Gonna end up with a lot of these and they're really freakin' big.
// could consider a morphable type with different sizes to avoid the (currently) 12 bytes-per-character issue.
// on a 'normal' 80x25 terminal the current buffer alone is just >23kB. A 160 character wide buffer with a 32k
@@ -7,15 +9,151 @@ namespace ConsoleBuffer
// the future.
public struct Character
{
+ [Flags]
+ public enum Options : byte
+ {
+ None = 0x00,
+ // we have 3 color bits which combine to represent the 8 "basic" colors of classic terminals
+ ColorBits = 0x07, // (0x01, 0x02, 0x04)
+ Black = 0x00,
+ Red = 0x01,
+ Green = 0x02,
+ Yellow = 0x03,
+ Blue = 0x04,
+ Magenta = 0x05,
+ Cyan = 0x06,
+ White = 0x07,
+
+ // we use 3 additional bits (currently) for flags
+ FlagBits = 0x38, // (0x08, 0x10, 0x20)
+ Bright = 0x08,
+ Underline = 0x10,
+ Inverse = 0x20,
+ Extended = 0x18,
+ // 0x28 free
+ // 0x38 free
+
+ // 0x40, 0x80 free bits
+ }
+
public struct ColorInfo
{
public byte R;
public byte G;
public byte B;
+ public Options Options;
+
+ public bool Bright
+ {
+ get
+ {
+ return ((byte)this.Options & (byte)Options.Bright) == (byte)Options.Bright;
+ }
+ set
+ {
+ if (value)
+ {
+ this.Options = (Options)((byte)this.Options | (byte)Options.Bright);
+ }
+ else
+ {
+ this.Options = (Options)((byte)this.Options & ~(byte)Options.Bright);
+ }
+ }
+ }
+
+ ///
+ /// Whether the underline bit is set. Should not apply to background colors.
+ ///
+ public bool Underline
+ {
+ get
+ {
+ return ((byte)this.Options & (byte)Options.Underline) == (byte)Options.Underline;
+ }
+ set
+ {
+ if (value)
+ {
+ this.Options = (Options)((byte)this.Options | (byte)Options.Underline);
+ }
+ else
+ {
+ this.Options = (Options)((byte)this.Options & ~(byte)Options.Underline);
+ }
+ }
+ }
+
+ ///
+ /// Whether the 'inverse' bit is set. Should not apply to background colors.
+ ///
+ public bool Inverse
+ {
+ get
+ {
+ return ((byte)this.Options & (byte)Options.Inverse) == (byte)Options.Inverse;
+ }
+ set
+ {
+ if (value)
+ {
+ this.Options = (Options)((byte)this.Options | (byte)Options.Inverse);
+ }
+ else
+ {
+ this.Options = (Options)((byte)this.Options & ~(byte)Options.Inverse);
+ }
+ }
+ }
+
+ ///
+ /// Whether extended (RGB) color values should be applied for this cell.
+ ///
+ public bool Extended
+ {
+ get
+ {
+ return ((byte)this.Options & (byte)Options.Extended) == (byte)Options.Extended;
+ }
+ set
+ {
+ if (value)
+ {
+ this.Options = (Options)((byte)this.Options | (byte)Options.Extended);
+ }
+ else
+ {
+ this.Options = (Options)((byte)this.Options & ~(byte)Options.Extended);
+ }
+ }
+ }
+
+ ///
+ /// Classic color value.
+ ///
+ public Options BasicColor
+ {
+ get
+ {
+ return (Options)((byte)this.Options & (byte)Options.ColorBits);
+ }
+ set
+ {
+ var colorValue = (byte)value & (byte)Options.ColorBits;
+ var colorlessOptions = (byte)this.Options & ~(byte)Options.ColorBits;
+ this.Options = (Options)(colorlessOptions & colorValue);
+ }
+ }
+
+ ///
+ /// True if there is any classic color value set.
+ ///
+ public bool HasBasicColor => ((byte)this.Options & (byte)Options.ColorBits) != 0;
}
public ColorInfo Foreground { get; set; }
public ColorInfo Background { get; set; }
- public int Glyph { get; set; } // XXX: a single int isn't quite sufficient to represent emoji with ZWJ. fix later.
+
+ public int Glyph { get; set; } // XXX: a single int isn't sufficient to represent emoji with ZWJ. fix later.
}
}
diff --git a/src/ConsoleBuffer/Commands/ControlSequence.cs b/src/ConsoleBuffer/Commands/ControlSequence.cs
index ba36f18..fcb7630 100644
--- a/src/ConsoleBuffer/Commands/ControlSequence.cs
+++ b/src/ConsoleBuffer/Commands/ControlSequence.cs
@@ -28,6 +28,8 @@ public static Base Create(char command, string bufferData)
return new EraseIn(bufferData, EraseIn.EraseType.Display);
case 'K':
return new EraseIn(bufferData, EraseIn.EraseType.Line);
+ case 'm':
+ return new SetGraphicsRendition(bufferData);
case 'X':
return new EraseCharacter(bufferData);
}
diff --git a/src/ConsoleBuffer/Commands/SetGraphicsRendition.cs b/src/ConsoleBuffer/Commands/SetGraphicsRendition.cs
new file mode 100644
index 0000000..0e1c8bb
--- /dev/null
+++ b/src/ConsoleBuffer/Commands/SetGraphicsRendition.cs
@@ -0,0 +1,29 @@
+namespace ConsoleBuffer.Commands
+{
+ public sealed class SetGraphicsRendition : ControlSequence
+ {
+ public enum FlagValue
+ {
+ Set,
+ Unset,
+ None,
+ }
+
+ public bool HaveForeground { get; private set; }
+ public Character.ColorInfo ForegroundColor { get; private set; }
+
+ public bool HaveBackground { get; private set; }
+ public Character.ColorInfo BackgroundColor { get; private set; }
+
+ public FlagValue Bold { get; private set; }
+ public FlagValue Underline { get; private set; }
+ public FlagValue Inverse { get; private set; }
+
+ public SetGraphicsRendition(string bufferData) : base(bufferData)
+ {
+ this.Bold = FlagValue.None;
+ this.Underline = FlagValue.None;
+ this.Inverse = FlagValue.None;
+ }
+ }
+}
diff --git a/src/ConsoleBuffer/ConsoleBuffer.csproj b/src/ConsoleBuffer/ConsoleBuffer.csproj
index 17d3b29..9965fc5 100644
--- a/src/ConsoleBuffer/ConsoleBuffer.csproj
+++ b/src/ConsoleBuffer/ConsoleBuffer.csproj
@@ -2,4 +2,9 @@
netstandard2.0
+
+
+ Never
+
+
\ No newline at end of file
diff --git a/src/ConsoleBuffer/ConsoleWrapper.cs b/src/ConsoleBuffer/ConsoleWrapper.cs
index 0442e1d..e9aa8ce 100644
--- a/src/ConsoleBuffer/ConsoleWrapper.cs
+++ b/src/ConsoleBuffer/ConsoleWrapper.cs
@@ -65,7 +65,7 @@ public ConsoleWrapper(string command)
this.InitializeStartupInfo();
this.StartProcess();
- Task.Run(() => this.ReadConsoleTask());
+ Task.Factory.StartNew(() => this.ReadConsoleTask(), TaskCreationOptions.LongRunning);
this.writeStream = new FileStream(this.writeHandle, FileAccess.Write);
}
@@ -159,7 +159,7 @@ private void StartProcess()
this.Running = true;
this.OnPropertyChanged(nameof(this.Running));
- Task.Run(() =>
+ Task.Factory.StartNew(() =>
{
var ret = NativeMethods.WaitForSingleObject(this.processInfo.hProcess, uint.MaxValue);
if (ret != 0)
@@ -176,11 +176,7 @@ private void StartProcess()
this.ProcessExitCode = exitCode;
this.Running = false;
this.OnPropertyChanged(nameof(this.Running));
-
- // XXX: long-term I think we should have the presentation layer do this but let's dump it here for now
- var msg = Encoding.UTF8.GetBytes($"\r\n[process terminated with code {exitCode}.]");
- this.Buffer.Append(msg, msg.Length);
- });
+ }, TaskCreationOptions.LongRunning);
}
private void ReadConsoleTask()
diff --git a/src/ConsoleBuffer/XtermPalette.cs b/src/ConsoleBuffer/XtermPalette.cs
new file mode 100644
index 0000000..8a6d259
--- /dev/null
+++ b/src/ConsoleBuffer/XtermPalette.cs
@@ -0,0 +1,310 @@
+namespace ConsoleBuffer
+{
+ using System;
+ using System.Collections.Generic;
+
+ ///
+ /// Represents the xterm palette for 256 color rendering.
+ ///
+ public sealed class XtermPalette
+ {
+ private struct XtermColor
+ {
+ public int Id;
+ public byte R;
+ public byte G;
+ public byte B;
+ public string Name;
+ }
+
+ private readonly XtermColor[] DefaultPalette = new[]
+ {
+ new XtermColor { Id = 0, R = 0x00, G = 0x00, B = 0x00, Name = "Black" },
+ new XtermColor { Id = 1, R = 0x80, G = 0x00, B = 0x00, Name = "Maroon" },
+ new XtermColor { Id = 2, R = 0x00, G = 0x80, B = 0x00, Name = "Green" },
+ new XtermColor { Id = 3, R = 0x80, G = 0x80, B = 0x00, Name = "Olive" },
+ new XtermColor { Id = 4, R = 0x00, G = 0x00, B = 0x80, Name = "Navy" },
+ new XtermColor { Id = 5, R = 0x80, G = 0x00, B = 0x80, Name = "Purple" },
+ new XtermColor { Id = 6, R = 0x00, G = 0x80, B = 0x80, Name = "Teal" },
+ new XtermColor { Id = 7, R = 0xc0, G = 0xc0, B = 0xc0, Name = "Silver" },
+ new XtermColor { Id = 8, R = 0x80, G = 0x80, B = 0x80, Name = "Grey" },
+ new XtermColor { Id = 9, R = 0xff, G = 0x00, B = 0x00, Name = "Red" },
+ new XtermColor { Id = 10, R = 0x00, G = 0xff, B = 0x00, Name = "Lime" },
+ new XtermColor { Id = 11, R = 0xff, G = 0xff, B = 0x00, Name = "Yellow" },
+ new XtermColor { Id = 12, R = 0x00, G = 0x00, B = 0xff, Name = "Blue" },
+ new XtermColor { Id = 13, R = 0xff, G = 0x00, B = 0xff, Name = "Fuchsia" },
+ new XtermColor { Id = 14, R = 0x00, G = 0xff, B = 0xff, Name = "Aqua" },
+ new XtermColor { Id = 15, R = 0xff, G = 0xff, B = 0xff, Name = "White" },
+ new XtermColor { Id = 16, R = 0x00, G = 0x00, B = 0x00, Name = "Grey0" },
+ new XtermColor { Id = 17, R = 0x00, G = 0x00, B = 0x5f, Name = "NavyBlue" },
+ new XtermColor { Id = 18, R = 0x00, G = 0x00, B = 0x87, Name = "DarkBlue" },
+ new XtermColor { Id = 19, R = 0x00, G = 0x00, B = 0xaf, Name = "Blue3" },
+ new XtermColor { Id = 20, R = 0x00, G = 0x00, B = 0xd7, Name = "Blue3" },
+ new XtermColor { Id = 21, R = 0x00, G = 0x00, B = 0xff, Name = "Blue1" },
+ new XtermColor { Id = 22, R = 0x00, G = 0x5f, B = 0x00, Name = "DarkGreen" },
+ new XtermColor { Id = 23, R = 0x00, G = 0x5f, B = 0x5f, Name = "DeepSkyBlue4" },
+ new XtermColor { Id = 24, R = 0x00, G = 0x5f, B = 0x87, Name = "DeepSkyBlue4" },
+ new XtermColor { Id = 25, R = 0x00, G = 0x5f, B = 0xaf, Name = "DeepSkyBlue4" },
+ new XtermColor { Id = 26, R = 0x00, G = 0x5f, B = 0xd7, Name = "DodgerBlue3" },
+ new XtermColor { Id = 27, R = 0x00, G = 0x5f, B = 0xff, Name = "DodgerBlue2" },
+ new XtermColor { Id = 28, R = 0x00, G = 0x87, B = 0x00, Name = "Green4" },
+ new XtermColor { Id = 29, R = 0x00, G = 0x87, B = 0x5f, Name = "SpringGreen4" },
+ new XtermColor { Id = 30, R = 0x00, G = 0x87, B = 0x87, Name = "Turquoise4" },
+ new XtermColor { Id = 31, R = 0x00, G = 0x87, B = 0xaf, Name = "DeepSkyBlue3" },
+ new XtermColor { Id = 32, R = 0x00, G = 0x87, B = 0xd7, Name = "DeepSkyBlue3" },
+ new XtermColor { Id = 33, R = 0x00, G = 0x87, B = 0xff, Name = "DodgerBlue1" },
+ new XtermColor { Id = 34, R = 0x00, G = 0xaf, B = 0x00, Name = "Green3" },
+ new XtermColor { Id = 35, R = 0x00, G = 0xaf, B = 0x5f, Name = "SpringGreen3" },
+ new XtermColor { Id = 36, R = 0x00, G = 0xaf, B = 0x87, Name = "DarkCyan" },
+ new XtermColor { Id = 37, R = 0x00, G = 0xaf, B = 0xaf, Name = "LightSeaGreen" },
+ new XtermColor { Id = 38, R = 0x00, G = 0xaf, B = 0xd7, Name = "DeepSkyBlue2" },
+ new XtermColor { Id = 39, R = 0x00, G = 0xaf, B = 0xff, Name = "DeepSkyBlue1" },
+ new XtermColor { Id = 40, R = 0x00, G = 0xd7, B = 0x00, Name = "Green3" },
+ new XtermColor { Id = 41, R = 0x00, G = 0xd7, B = 0x5f, Name = "SpringGreen3" },
+ new XtermColor { Id = 42, R = 0x00, G = 0xd7, B = 0x87, Name = "SpringGreen2" },
+ new XtermColor { Id = 43, R = 0x00, G = 0xd7, B = 0xaf, Name = "Cyan3" },
+ new XtermColor { Id = 44, R = 0x00, G = 0xd7, B = 0xd7, Name = "DarkTurquoise" },
+ new XtermColor { Id = 45, R = 0x00, G = 0xd7, B = 0xff, Name = "Turquoise2" },
+ new XtermColor { Id = 46, R = 0x00, G = 0xff, B = 0x00, Name = "Green1" },
+ new XtermColor { Id = 47, R = 0x00, G = 0xff, B = 0x5f, Name = "SpringGreen2" },
+ new XtermColor { Id = 48, R = 0x00, G = 0xff, B = 0x87, Name = "SpringGreen1" },
+ new XtermColor { Id = 49, R = 0x00, G = 0xff, B = 0xaf, Name = "MediumSpringGreen" },
+ new XtermColor { Id = 50, R = 0x00, G = 0xff, B = 0xd7, Name = "Cyan2" },
+ new XtermColor { Id = 51, R = 0x00, G = 0xff, B = 0xff, Name = "Cyan1" },
+ new XtermColor { Id = 52, R = 0x5f, G = 0x00, B = 0x00, Name = "DarkRed" },
+ new XtermColor { Id = 53, R = 0x5f, G = 0x00, B = 0x5f, Name = "DeepPink4" },
+ new XtermColor { Id = 54, R = 0x5f, G = 0x00, B = 0x87, Name = "Purple4" },
+ new XtermColor { Id = 55, R = 0x5f, G = 0x00, B = 0xaf, Name = "Purple4" },
+ new XtermColor { Id = 56, R = 0x5f, G = 0x00, B = 0xd7, Name = "Purple3" },
+ new XtermColor { Id = 57, R = 0x5f, G = 0x00, B = 0xff, Name = "BlueViolet" },
+ new XtermColor { Id = 58, R = 0x5f, G = 0x5f, B = 0x00, Name = "Orange4" },
+ new XtermColor { Id = 59, R = 0x5f, G = 0x5f, B = 0x5f, Name = "Grey37" },
+ new XtermColor { Id = 60, R = 0x5f, G = 0x5f, B = 0x87, Name = "MediumPurple4" },
+ new XtermColor { Id = 61, R = 0x5f, G = 0x5f, B = 0xaf, Name = "SlateBlue3" },
+ new XtermColor { Id = 62, R = 0x5f, G = 0x5f, B = 0xd7, Name = "SlateBlue3" },
+ new XtermColor { Id = 63, R = 0x5f, G = 0x5f, B = 0xff, Name = "RoyalBlue1" },
+ new XtermColor { Id = 64, R = 0x5f, G = 0x87, B = 0x00, Name = "Chartreuse4" },
+ new XtermColor { Id = 65, R = 0x5f, G = 0x87, B = 0x5f, Name = "DarkSeaGreen4" },
+ new XtermColor { Id = 66, R = 0x5f, G = 0x87, B = 0x87, Name = "PaleTurquoise4" },
+ new XtermColor { Id = 67, R = 0x5f, G = 0x87, B = 0xaf, Name = "SteelBlue" },
+ new XtermColor { Id = 68, R = 0x5f, G = 0x87, B = 0xd7, Name = "SteelBlue3" },
+ new XtermColor { Id = 69, R = 0x5f, G = 0x87, B = 0xff, Name = "CornflowerBlue" },
+ new XtermColor { Id = 70, R = 0x5f, G = 0xaf, B = 0x00, Name = "Chartreuse3" },
+ new XtermColor { Id = 71, R = 0x5f, G = 0xaf, B = 0x5f, Name = "DarkSeaGreen4" },
+ new XtermColor { Id = 72, R = 0x5f, G = 0xaf, B = 0x87, Name = "CadetBlue" },
+ new XtermColor { Id = 73, R = 0x5f, G = 0xaf, B = 0xaf, Name = "CadetBlue" },
+ new XtermColor { Id = 74, R = 0x5f, G = 0xaf, B = 0xd7, Name = "SkyBlue3" },
+ new XtermColor { Id = 75, R = 0x5f, G = 0xaf, B = 0xff, Name = "SteelBlue1" },
+ new XtermColor { Id = 76, R = 0x5f, G = 0xd7, B = 0x00, Name = "Chartreuse3" },
+ new XtermColor { Id = 77, R = 0x5f, G = 0xd7, B = 0x5f, Name = "PaleGreen3" },
+ new XtermColor { Id = 78, R = 0x5f, G = 0xd7, B = 0x87, Name = "SeaGreen3" },
+ new XtermColor { Id = 79, R = 0x5f, G = 0xd7, B = 0xaf, Name = "Aquamarine3" },
+ new XtermColor { Id = 80, R = 0x5f, G = 0xd7, B = 0xd7, Name = "MediumTurquoise" },
+ new XtermColor { Id = 81, R = 0x5f, G = 0xd7, B = 0xff, Name = "SteelBlue1" },
+ new XtermColor { Id = 82, R = 0x5f, G = 0xff, B = 0x00, Name = "Chartreuse2" },
+ new XtermColor { Id = 83, R = 0x5f, G = 0xff, B = 0x5f, Name = "SeaGreen2" },
+ new XtermColor { Id = 84, R = 0x5f, G = 0xff, B = 0x87, Name = "SeaGreen1" },
+ new XtermColor { Id = 85, R = 0x5f, G = 0xff, B = 0xaf, Name = "SeaGreen1" },
+ new XtermColor { Id = 86, R = 0x5f, G = 0xff, B = 0xd7, Name = "Aquamarine1" },
+ new XtermColor { Id = 87, R = 0x5f, G = 0xff, B = 0xff, Name = "DarkSlateGray2" },
+ new XtermColor { Id = 88, R = 0x87, G = 0x00, B = 0x00, Name = "DarkRed" },
+ new XtermColor { Id = 89, R = 0x87, G = 0x00, B = 0x5f, Name = "DeepPink4" },
+ new XtermColor { Id = 90, R = 0x87, G = 0x00, B = 0x87, Name = "DarkMagenta" },
+ new XtermColor { Id = 91, R = 0x87, G = 0x00, B = 0xaf, Name = "DarkMagenta" },
+ new XtermColor { Id = 92, R = 0x87, G = 0x00, B = 0xd7, Name = "DarkViolet" },
+ new XtermColor { Id = 93, R = 0x87, G = 0x00, B = 0xff, Name = "Purple" },
+ new XtermColor { Id = 94, R = 0x87, G = 0x5f, B = 0x00, Name = "Orange4" },
+ new XtermColor { Id = 95, R = 0x87, G = 0x5f, B = 0x5f, Name = "LightPink4" },
+ new XtermColor { Id = 96, R = 0x87, G = 0x5f, B = 0x87, Name = "Plum4" },
+ new XtermColor { Id = 97, R = 0x87, G = 0x5f, B = 0xaf, Name = "MediumPurple3" },
+ new XtermColor { Id = 98, R = 0x87, G = 0x5f, B = 0xd7, Name = "MediumPurple3" },
+ new XtermColor { Id = 99, R = 0x87, G = 0x5f, B = 0xff, Name = "SlateBlue1" },
+ new XtermColor { Id = 100, R = 0x87, G = 0x87, B = 0x00, Name = "Yellow4" },
+ new XtermColor { Id = 101, R = 0x87, G = 0x87, B = 0x5f, Name = "Wheat4" },
+ new XtermColor { Id = 102, R = 0x87, G = 0x87, B = 0x87, Name = "Grey53" },
+ new XtermColor { Id = 103, R = 0x87, G = 0x87, B = 0xaf, Name = "LightSlateGrey" },
+ new XtermColor { Id = 104, R = 0x87, G = 0x87, B = 0xd7, Name = "MediumPurple" },
+ new XtermColor { Id = 105, R = 0x87, G = 0x87, B = 0xff, Name = "LightSlateBlue" },
+ new XtermColor { Id = 106, R = 0x87, G = 0xaf, B = 0x00, Name = "Yellow4" },
+ new XtermColor { Id = 107, R = 0x87, G = 0xaf, B = 0x5f, Name = "DarkOliveGreen3" },
+ new XtermColor { Id = 108, R = 0x87, G = 0xaf, B = 0x87, Name = "DarkSeaGreen" },
+ new XtermColor { Id = 109, R = 0x87, G = 0xaf, B = 0xaf, Name = "LightSkyBlue3" },
+ new XtermColor { Id = 110, R = 0x87, G = 0xaf, B = 0xd7, Name = "LightSkyBlue3" },
+ new XtermColor { Id = 111, R = 0x87, G = 0xaf, B = 0xff, Name = "SkyBlue2" },
+ new XtermColor { Id = 112, R = 0x87, G = 0xd7, B = 0x00, Name = "Chartreuse2" },
+ new XtermColor { Id = 113, R = 0x87, G = 0xd7, B = 0x5f, Name = "DarkOliveGreen3" },
+ new XtermColor { Id = 114, R = 0x87, G = 0xd7, B = 0x87, Name = "PaleGreen3" },
+ new XtermColor { Id = 115, R = 0x87, G = 0xd7, B = 0xaf, Name = "DarkSeaGreen3" },
+ new XtermColor { Id = 116, R = 0x87, G = 0xd7, B = 0xd7, Name = "DarkSlateGray3" },
+ new XtermColor { Id = 117, R = 0x87, G = 0xd7, B = 0xff, Name = "SkyBlue1" },
+ new XtermColor { Id = 118, R = 0x87, G = 0xff, B = 0x00, Name = "Chartreuse1" },
+ new XtermColor { Id = 119, R = 0x87, G = 0xff, B = 0x5f, Name = "LightGreen" },
+ new XtermColor { Id = 120, R = 0x87, G = 0xff, B = 0x87, Name = "LightGreen" },
+ new XtermColor { Id = 121, R = 0x87, G = 0xff, B = 0xaf, Name = "PaleGreen1" },
+ new XtermColor { Id = 122, R = 0x87, G = 0xff, B = 0xd7, Name = "Aquamarine1" },
+ new XtermColor { Id = 123, R = 0x87, G = 0xff, B = 0xff, Name = "DarkSlateGray1" },
+ new XtermColor { Id = 124, R = 0xaf, G = 0x00, B = 0x00, Name = "Red3" },
+ new XtermColor { Id = 125, R = 0xaf, G = 0x00, B = 0x5f, Name = "DeepPink4" },
+ new XtermColor { Id = 126, R = 0xaf, G = 0x00, B = 0x87, Name = "MediumVioletRed" },
+ new XtermColor { Id = 127, R = 0xaf, G = 0x00, B = 0xaf, Name = "Magenta3" },
+ new XtermColor { Id = 128, R = 0xaf, G = 0x00, B = 0xd7, Name = "DarkViolet" },
+ new XtermColor { Id = 129, R = 0xaf, G = 0x00, B = 0xff, Name = "Purple" },
+ new XtermColor { Id = 130, R = 0xaf, G = 0x5f, B = 0x00, Name = "DarkOrange3" },
+ new XtermColor { Id = 131, R = 0xaf, G = 0x5f, B = 0x5f, Name = "IndianRed" },
+ new XtermColor { Id = 132, R = 0xaf, G = 0x5f, B = 0x87, Name = "HotPink3" },
+ new XtermColor { Id = 133, R = 0xaf, G = 0x5f, B = 0xaf, Name = "MediumOrchid3" },
+ new XtermColor { Id = 134, R = 0xaf, G = 0x5f, B = 0xd7, Name = "MediumOrchid" },
+ new XtermColor { Id = 135, R = 0xaf, G = 0x5f, B = 0xff, Name = "MediumPurple2" },
+ new XtermColor { Id = 136, R = 0xaf, G = 0x87, B = 0x00, Name = "DarkGoldenrod" },
+ new XtermColor { Id = 137, R = 0xaf, G = 0x87, B = 0x5f, Name = "LightSalmon3" },
+ new XtermColor { Id = 138, R = 0xaf, G = 0x87, B = 0x87, Name = "RosyBrown" },
+ new XtermColor { Id = 139, R = 0xaf, G = 0x87, B = 0xaf, Name = "Grey63" },
+ new XtermColor { Id = 140, R = 0xaf, G = 0x87, B = 0xd7, Name = "MediumPurple2" },
+ new XtermColor { Id = 141, R = 0xaf, G = 0x87, B = 0xff, Name = "MediumPurple1" },
+ new XtermColor { Id = 142, R = 0xaf, G = 0xaf, B = 0x00, Name = "Gold3" },
+ new XtermColor { Id = 143, R = 0xaf, G = 0xaf, B = 0x5f, Name = "DarkKhaki" },
+ new XtermColor { Id = 144, R = 0xaf, G = 0xaf, B = 0x87, Name = "NavajoWhite3" },
+ new XtermColor { Id = 145, R = 0xaf, G = 0xaf, B = 0xaf, Name = "Grey69" },
+ new XtermColor { Id = 146, R = 0xaf, G = 0xaf, B = 0xd7, Name = "LightSteelBlue3" },
+ new XtermColor { Id = 147, R = 0xaf, G = 0xaf, B = 0xff, Name = "LightSteelBlue" },
+ new XtermColor { Id = 148, R = 0xaf, G = 0xd7, B = 0x00, Name = "Yellow3" },
+ new XtermColor { Id = 149, R = 0xaf, G = 0xd7, B = 0x5f, Name = "DarkOliveGreen3" },
+ new XtermColor { Id = 150, R = 0xaf, G = 0xd7, B = 0x87, Name = "DarkSeaGreen3" },
+ new XtermColor { Id = 151, R = 0xaf, G = 0xd7, B = 0xaf, Name = "DarkSeaGreen2" },
+ new XtermColor { Id = 152, R = 0xaf, G = 0xd7, B = 0xd7, Name = "LightCyan3" },
+ new XtermColor { Id = 153, R = 0xaf, G = 0xd7, B = 0xff, Name = "LightSkyBlue1" },
+ new XtermColor { Id = 154, R = 0xaf, G = 0xff, B = 0x00, Name = "GreenYellow" },
+ new XtermColor { Id = 155, R = 0xaf, G = 0xff, B = 0x5f, Name = "DarkOliveGreen2" },
+ new XtermColor { Id = 156, R = 0xaf, G = 0xff, B = 0x87, Name = "PaleGreen1" },
+ new XtermColor { Id = 157, R = 0xaf, G = 0xff, B = 0xaf, Name = "DarkSeaGreen2" },
+ new XtermColor { Id = 158, R = 0xaf, G = 0xff, B = 0xd7, Name = "DarkSeaGreen1" },
+ new XtermColor { Id = 159, R = 0xaf, G = 0xff, B = 0xff, Name = "PaleTurquoise1" },
+ new XtermColor { Id = 160, R = 0xd7, G = 0x00, B = 0x00, Name = "Red3" },
+ new XtermColor { Id = 161, R = 0xd7, G = 0x00, B = 0x5f, Name = "DeepPink3" },
+ new XtermColor { Id = 162, R = 0xd7, G = 0x00, B = 0x87, Name = "DeepPink3" },
+ new XtermColor { Id = 163, R = 0xd7, G = 0x00, B = 0xaf, Name = "Magenta3" },
+ new XtermColor { Id = 164, R = 0xd7, G = 0x00, B = 0xd7, Name = "Magenta3" },
+ new XtermColor { Id = 165, R = 0xd7, G = 0x00, B = 0xff, Name = "Magenta2" },
+ new XtermColor { Id = 166, R = 0xd7, G = 0x5f, B = 0x00, Name = "DarkOrange3" },
+ new XtermColor { Id = 167, R = 0xd7, G = 0x5f, B = 0x5f, Name = "IndianRed" },
+ new XtermColor { Id = 168, R = 0xd7, G = 0x5f, B = 0x87, Name = "HotPink3" },
+ new XtermColor { Id = 169, R = 0xd7, G = 0x5f, B = 0xaf, Name = "HotPink2" },
+ new XtermColor { Id = 170, R = 0xd7, G = 0x5f, B = 0xd7, Name = "Orchid" },
+ new XtermColor { Id = 171, R = 0xd7, G = 0x5f, B = 0xff, Name = "MediumOrchid1" },
+ new XtermColor { Id = 172, R = 0xd7, G = 0x87, B = 0x00, Name = "Orange3" },
+ new XtermColor { Id = 173, R = 0xd7, G = 0x87, B = 0x5f, Name = "LightSalmon3" },
+ new XtermColor { Id = 174, R = 0xd7, G = 0x87, B = 0x87, Name = "LightPink3" },
+ new XtermColor { Id = 175, R = 0xd7, G = 0x87, B = 0xaf, Name = "Pink3" },
+ new XtermColor { Id = 176, R = 0xd7, G = 0x87, B = 0xd7, Name = "Plum3" },
+ new XtermColor { Id = 177, R = 0xd7, G = 0x87, B = 0xff, Name = "Violet" },
+ new XtermColor { Id = 178, R = 0xd7, G = 0xaf, B = 0x00, Name = "Gold3" },
+ new XtermColor { Id = 179, R = 0xd7, G = 0xaf, B = 0x5f, Name = "LightGoldenrod3" },
+ new XtermColor { Id = 180, R = 0xd7, G = 0xaf, B = 0x87, Name = "Tan" },
+ new XtermColor { Id = 181, R = 0xd7, G = 0xaf, B = 0xaf, Name = "MistyRose3" },
+ new XtermColor { Id = 182, R = 0xd7, G = 0xaf, B = 0xd7, Name = "Thistle3" },
+ new XtermColor { Id = 183, R = 0xd7, G = 0xaf, B = 0xff, Name = "Plum2" },
+ new XtermColor { Id = 184, R = 0xd7, G = 0xd7, B = 0x00, Name = "Yellow3" },
+ new XtermColor { Id = 185, R = 0xd7, G = 0xd7, B = 0x5f, Name = "Khaki3" },
+ new XtermColor { Id = 186, R = 0xd7, G = 0xd7, B = 0x87, Name = "LightGoldenrod2" },
+ new XtermColor { Id = 187, R = 0xd7, G = 0xd7, B = 0xaf, Name = "LightYellow3" },
+ new XtermColor { Id = 188, R = 0xd7, G = 0xd7, B = 0xd7, Name = "Grey84" },
+ new XtermColor { Id = 189, R = 0xd7, G = 0xd7, B = 0xff, Name = "LightSteelBlue1" },
+ new XtermColor { Id = 190, R = 0xd7, G = 0xff, B = 0x00, Name = "Yellow2" },
+ new XtermColor { Id = 191, R = 0xd7, G = 0xff, B = 0x5f, Name = "DarkOliveGreen1" },
+ new XtermColor { Id = 192, R = 0xd7, G = 0xff, B = 0x87, Name = "DarkOliveGreen1" },
+ new XtermColor { Id = 193, R = 0xd7, G = 0xff, B = 0xaf, Name = "DarkSeaGreen1" },
+ new XtermColor { Id = 194, R = 0xd7, G = 0xff, B = 0xd7, Name = "Honeydew2" },
+ new XtermColor { Id = 195, R = 0xd7, G = 0xff, B = 0xff, Name = "LightCyan1" },
+ new XtermColor { Id = 196, R = 0xff, G = 0x00, B = 0x00, Name = "Red1" },
+ new XtermColor { Id = 197, R = 0xff, G = 0x00, B = 0x5f, Name = "DeepPink2" },
+ new XtermColor { Id = 198, R = 0xff, G = 0x00, B = 0x87, Name = "DeepPink1" },
+ new XtermColor { Id = 199, R = 0xff, G = 0x00, B = 0xaf, Name = "DeepPink1" },
+ new XtermColor { Id = 200, R = 0xff, G = 0x00, B = 0xd7, Name = "Magenta2" },
+ new XtermColor { Id = 201, R = 0xff, G = 0x00, B = 0xff, Name = "Magenta1" },
+ new XtermColor { Id = 202, R = 0xff, G = 0x5f, B = 0x00, Name = "OrangeRed1" },
+ new XtermColor { Id = 203, R = 0xff, G = 0x5f, B = 0x5f, Name = "IndianRed1" },
+ new XtermColor { Id = 204, R = 0xff, G = 0x5f, B = 0x87, Name = "IndianRed1" },
+ new XtermColor { Id = 205, R = 0xff, G = 0x5f, B = 0xaf, Name = "HotPink" },
+ new XtermColor { Id = 206, R = 0xff, G = 0x5f, B = 0xd7, Name = "HotPink" },
+ new XtermColor { Id = 207, R = 0xff, G = 0x5f, B = 0xff, Name = "MediumOrchid1" },
+ new XtermColor { Id = 208, R = 0xff, G = 0x87, B = 0x00, Name = "DarkOrange" },
+ new XtermColor { Id = 209, R = 0xff, G = 0x87, B = 0x5f, Name = "Salmon1" },
+ new XtermColor { Id = 210, R = 0xff, G = 0x87, B = 0x87, Name = "LightCoral" },
+ new XtermColor { Id = 211, R = 0xff, G = 0x87, B = 0xaf, Name = "PaleVioletRed1" },
+ new XtermColor { Id = 212, R = 0xff, G = 0x87, B = 0xd7, Name = "Orchid2" },
+ new XtermColor { Id = 213, R = 0xff, G = 0x87, B = 0xff, Name = "Orchid1" },
+ new XtermColor { Id = 214, R = 0xff, G = 0xaf, B = 0x00, Name = "Orange1" },
+ new XtermColor { Id = 215, R = 0xff, G = 0xaf, B = 0x5f, Name = "SandyBrown" },
+ new XtermColor { Id = 216, R = 0xff, G = 0xaf, B = 0x87, Name = "LightSalmon1" },
+ new XtermColor { Id = 217, R = 0xff, G = 0xaf, B = 0xaf, Name = "LightPink1" },
+ new XtermColor { Id = 218, R = 0xff, G = 0xaf, B = 0xd7, Name = "Pink1" },
+ new XtermColor { Id = 219, R = 0xff, G = 0xaf, B = 0xff, Name = "Plum1" },
+ new XtermColor { Id = 220, R = 0xff, G = 0xd7, B = 0x00, Name = "Gold1" },
+ new XtermColor { Id = 221, R = 0xff, G = 0xd7, B = 0x5f, Name = "LightGoldenrod2" },
+ new XtermColor { Id = 222, R = 0xff, G = 0xd7, B = 0x87, Name = "LightGoldenrod2" },
+ new XtermColor { Id = 223, R = 0xff, G = 0xd7, B = 0xaf, Name = "NavajoWhite1" },
+ new XtermColor { Id = 224, R = 0xff, G = 0xd7, B = 0xd7, Name = "MistyRose1" },
+ new XtermColor { Id = 225, R = 0xff, G = 0xd7, B = 0xff, Name = "Thistle1" },
+ new XtermColor { Id = 226, R = 0xff, G = 0xff, B = 0x00, Name = "Yellow1" },
+ new XtermColor { Id = 227, R = 0xff, G = 0xff, B = 0x5f, Name = "LightGoldenrod1" },
+ new XtermColor { Id = 228, R = 0xff, G = 0xff, B = 0x87, Name = "Khaki1" },
+ new XtermColor { Id = 229, R = 0xff, G = 0xff, B = 0xaf, Name = "Wheat1" },
+ new XtermColor { Id = 230, R = 0xff, G = 0xff, B = 0xd7, Name = "Cornsilk1" },
+ new XtermColor { Id = 231, R = 0xff, G = 0xff, B = 0xff, Name = "Grey100" },
+ new XtermColor { Id = 232, R = 0x08, G = 0x08, B = 0x08, Name = "Grey3" },
+ new XtermColor { Id = 233, R = 0x12, G = 0x12, B = 0x12, Name = "Grey7" },
+ new XtermColor { Id = 234, R = 0x1c, G = 0x1c, B = 0x1c, Name = "Grey11" },
+ new XtermColor { Id = 235, R = 0x26, G = 0x26, B = 0x26, Name = "Grey15" },
+ new XtermColor { Id = 236, R = 0x30, G = 0x30, B = 0x30, Name = "Grey19" },
+ new XtermColor { Id = 237, R = 0x3a, G = 0x3a, B = 0x3a, Name = "Grey23" },
+ new XtermColor { Id = 238, R = 0x44, G = 0x44, B = 0x44, Name = "Grey27" },
+ new XtermColor { Id = 239, R = 0x4e, G = 0x4e, B = 0x4e, Name = "Grey30" },
+ new XtermColor { Id = 240, R = 0x58, G = 0x58, B = 0x58, Name = "Grey35" },
+ new XtermColor { Id = 241, R = 0x62, G = 0x62, B = 0x62, Name = "Grey39" },
+ new XtermColor { Id = 242, R = 0x6c, G = 0x6c, B = 0x6c, Name = "Grey42" },
+ new XtermColor { Id = 243, R = 0x76, G = 0x76, B = 0x76, Name = "Grey46" },
+ new XtermColor { Id = 244, R = 0x80, G = 0x80, B = 0x80, Name = "Grey50" },
+ new XtermColor { Id = 245, R = 0x8a, G = 0x8a, B = 0x8a, Name = "Grey54" },
+ new XtermColor { Id = 246, R = 0x94, G = 0x94, B = 0x94, Name = "Grey58" },
+ new XtermColor { Id = 247, R = 0x9e, G = 0x9e, B = 0x9e, Name = "Grey62" },
+ new XtermColor { Id = 248, R = 0xa8, G = 0xa8, B = 0xa8, Name = "Grey66" },
+ new XtermColor { Id = 249, R = 0xb2, G = 0xb2, B = 0xb2, Name = "Grey70" },
+ new XtermColor { Id = 250, R = 0xbc, G = 0xbc, B = 0xbc, Name = "Grey74" },
+ new XtermColor { Id = 251, R = 0xc6, G = 0xc6, B = 0xc6, Name = "Grey78" },
+ new XtermColor { Id = 252, R = 0xd0, G = 0xd0, B = 0xd0, Name = "Grey82" },
+ new XtermColor { Id = 253, R = 0xda, G = 0xda, B = 0xda, Name = "Grey85" },
+ new XtermColor { Id = 254, R = 0xe4, G = 0xe4, B = 0xe4, Name = "Grey89" },
+ new XtermColor { Id = 255, R = 0xee, G = 0xee, B = 0xee, Name = "Grey93" },
+ };
+
+ private readonly Dictionary colorNames = new Dictionary(StringComparer.OrdinalIgnoreCase);
+ private readonly Character.ColorInfo[] colorPalette;
+
+ public Character.ColorInfo this[int id]
+ {
+ get
+ {
+ return this.colorPalette[id];
+ }
+ }
+
+ public Character.ColorInfo this[string name]
+ {
+ get
+ {
+ return this.colorPalette[this.colorNames[name]];
+ }
+ }
+
+ public XtermPalette()
+ {
+ this.colorPalette = new Character.ColorInfo[this.DefaultPalette.Length];
+ foreach (var c in this.DefaultPalette)
+ {
+ var colorInfo = new Character.ColorInfo { R = c.R, G = c.G, B = c.B, Options = Character.Options.None };
+ this.colorPalette[c.Id] = colorInfo;
+ this.colorNames[c.Name] = c.Id;
+ }
+ }
+ }
+}
diff --git a/src/ConsoleBuffer/xterm-colors.json b/src/ConsoleBuffer/xterm-colors.json
new file mode 100644
index 0000000..4c64d99
--- /dev/null
+++ b/src/ConsoleBuffer/xterm-colors.json
@@ -0,0 +1,3842 @@
+[
+ {
+ "colorId": 0,
+ "hexString": "#000000",
+ "rgb": {
+ "r": 0,
+ "g": 0,
+ "b": 0
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 0
+ },
+ "name": "Black"
+ },
+ {
+ "colorId": 1,
+ "hexString": "#800000",
+ "rgb": {
+ "r": 128,
+ "g": 0,
+ "b": 0
+ },
+ "hsl": {
+ "h": 0,
+ "s": 100,
+ "l": 25
+ },
+ "name": "Maroon"
+ },
+ {
+ "colorId": 2,
+ "hexString": "#008000",
+ "rgb": {
+ "r": 0,
+ "g": 128,
+ "b": 0
+ },
+ "hsl": {
+ "h": 120,
+ "s": 100,
+ "l": 25
+ },
+ "name": "Green"
+ },
+ {
+ "colorId": 3,
+ "hexString": "#808000",
+ "rgb": {
+ "r": 128,
+ "g": 128,
+ "b": 0
+ },
+ "hsl": {
+ "h": 60,
+ "s": 100,
+ "l": 25
+ },
+ "name": "Olive"
+ },
+ {
+ "colorId": 4,
+ "hexString": "#000080",
+ "rgb": {
+ "r": 0,
+ "g": 0,
+ "b": 128
+ },
+ "hsl": {
+ "h": 240,
+ "s": 100,
+ "l": 25
+ },
+ "name": "Navy"
+ },
+ {
+ "colorId": 5,
+ "hexString": "#800080",
+ "rgb": {
+ "r": 128,
+ "g": 0,
+ "b": 128
+ },
+ "hsl": {
+ "h": 300,
+ "s": 100,
+ "l": 25
+ },
+ "name": "Purple"
+ },
+ {
+ "colorId": 6,
+ "hexString": "#008080",
+ "rgb": {
+ "r": 0,
+ "g": 128,
+ "b": 128
+ },
+ "hsl": {
+ "h": 180,
+ "s": 100,
+ "l": 25
+ },
+ "name": "Teal"
+ },
+ {
+ "colorId": 7,
+ "hexString": "#c0c0c0",
+ "rgb": {
+ "r": 192,
+ "g": 192,
+ "b": 192
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 75
+ },
+ "name": "Silver"
+ },
+ {
+ "colorId": 8,
+ "hexString": "#808080",
+ "rgb": {
+ "r": 128,
+ "g": 128,
+ "b": 128
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 50
+ },
+ "name": "Grey"
+ },
+ {
+ "colorId": 9,
+ "hexString": "#ff0000",
+ "rgb": {
+ "r": 255,
+ "g": 0,
+ "b": 0
+ },
+ "hsl": {
+ "h": 0,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Red"
+ },
+ {
+ "colorId": 10,
+ "hexString": "#00ff00",
+ "rgb": {
+ "r": 0,
+ "g": 255,
+ "b": 0
+ },
+ "hsl": {
+ "h": 120,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Lime"
+ },
+ {
+ "colorId": 11,
+ "hexString": "#ffff00",
+ "rgb": {
+ "r": 255,
+ "g": 255,
+ "b": 0
+ },
+ "hsl": {
+ "h": 60,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Yellow"
+ },
+ {
+ "colorId": 12,
+ "hexString": "#0000ff",
+ "rgb": {
+ "r": 0,
+ "g": 0,
+ "b": 255
+ },
+ "hsl": {
+ "h": 240,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Blue"
+ },
+ {
+ "colorId": 13,
+ "hexString": "#ff00ff",
+ "rgb": {
+ "r": 255,
+ "g": 0,
+ "b": 255
+ },
+ "hsl": {
+ "h": 300,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Fuchsia"
+ },
+ {
+ "colorId": 14,
+ "hexString": "#00ffff",
+ "rgb": {
+ "r": 0,
+ "g": 255,
+ "b": 255
+ },
+ "hsl": {
+ "h": 180,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Aqua"
+ },
+ {
+ "colorId": 15,
+ "hexString": "#ffffff",
+ "rgb": {
+ "r": 255,
+ "g": 255,
+ "b": 255
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 100
+ },
+ "name": "White"
+ },
+ {
+ "colorId": 16,
+ "hexString": "#000000",
+ "rgb": {
+ "r": 0,
+ "g": 0,
+ "b": 0
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 0
+ },
+ "name": "Grey0"
+ },
+ {
+ "colorId": 17,
+ "hexString": "#00005f",
+ "rgb": {
+ "r": 0,
+ "g": 0,
+ "b": 95
+ },
+ "hsl": {
+ "h": 240,
+ "s": 100,
+ "l": 18
+ },
+ "name": "NavyBlue"
+ },
+ {
+ "colorId": 18,
+ "hexString": "#000087",
+ "rgb": {
+ "r": 0,
+ "g": 0,
+ "b": 135
+ },
+ "hsl": {
+ "h": 240,
+ "s": 100,
+ "l": 26
+ },
+ "name": "DarkBlue"
+ },
+ {
+ "colorId": 19,
+ "hexString": "#0000af",
+ "rgb": {
+ "r": 0,
+ "g": 0,
+ "b": 175
+ },
+ "hsl": {
+ "h": 240,
+ "s": 100,
+ "l": 34
+ },
+ "name": "Blue3"
+ },
+ {
+ "colorId": 20,
+ "hexString": "#0000d7",
+ "rgb": {
+ "r": 0,
+ "g": 0,
+ "b": 215
+ },
+ "hsl": {
+ "h": 240,
+ "s": 100,
+ "l": 42
+ },
+ "name": "Blue3"
+ },
+ {
+ "colorId": 21,
+ "hexString": "#0000ff",
+ "rgb": {
+ "r": 0,
+ "g": 0,
+ "b": 255
+ },
+ "hsl": {
+ "h": 240,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Blue1"
+ },
+ {
+ "colorId": 22,
+ "hexString": "#005f00",
+ "rgb": {
+ "r": 0,
+ "g": 95,
+ "b": 0
+ },
+ "hsl": {
+ "h": 120,
+ "s": 100,
+ "l": 18
+ },
+ "name": "DarkGreen"
+ },
+ {
+ "colorId": 23,
+ "hexString": "#005f5f",
+ "rgb": {
+ "r": 0,
+ "g": 95,
+ "b": 95
+ },
+ "hsl": {
+ "h": 180,
+ "s": 100,
+ "l": 18
+ },
+ "name": "DeepSkyBlue4"
+ },
+ {
+ "colorId": 24,
+ "hexString": "#005f87",
+ "rgb": {
+ "r": 0,
+ "g": 95,
+ "b": 135
+ },
+ "hsl": {
+ "h": 197.777777777778,
+ "s": 100,
+ "l": 26
+ },
+ "name": "DeepSkyBlue4"
+ },
+ {
+ "colorId": 25,
+ "hexString": "#005faf",
+ "rgb": {
+ "r": 0,
+ "g": 95,
+ "b": 175
+ },
+ "hsl": {
+ "h": 207.428571428571,
+ "s": 100,
+ "l": 34
+ },
+ "name": "DeepSkyBlue4"
+ },
+ {
+ "colorId": 26,
+ "hexString": "#005fd7",
+ "rgb": {
+ "r": 0,
+ "g": 95,
+ "b": 215
+ },
+ "hsl": {
+ "h": 213.488372093023,
+ "s": 100,
+ "l": 42
+ },
+ "name": "DodgerBlue3"
+ },
+ {
+ "colorId": 27,
+ "hexString": "#005fff",
+ "rgb": {
+ "r": 0,
+ "g": 95,
+ "b": 255
+ },
+ "hsl": {
+ "h": 217.647058823529,
+ "s": 100,
+ "l": 50
+ },
+ "name": "DodgerBlue2"
+ },
+ {
+ "colorId": 28,
+ "hexString": "#008700",
+ "rgb": {
+ "r": 0,
+ "g": 135,
+ "b": 0
+ },
+ "hsl": {
+ "h": 120,
+ "s": 100,
+ "l": 26
+ },
+ "name": "Green4"
+ },
+ {
+ "colorId": 29,
+ "hexString": "#00875f",
+ "rgb": {
+ "r": 0,
+ "g": 135,
+ "b": 95
+ },
+ "hsl": {
+ "h": 162.222222222222,
+ "s": 100,
+ "l": 26
+ },
+ "name": "SpringGreen4"
+ },
+ {
+ "colorId": 30,
+ "hexString": "#008787",
+ "rgb": {
+ "r": 0,
+ "g": 135,
+ "b": 135
+ },
+ "hsl": {
+ "h": 180,
+ "s": 100,
+ "l": 26
+ },
+ "name": "Turquoise4"
+ },
+ {
+ "colorId": 31,
+ "hexString": "#0087af",
+ "rgb": {
+ "r": 0,
+ "g": 135,
+ "b": 175
+ },
+ "hsl": {
+ "h": 193.714285714286,
+ "s": 100,
+ "l": 34
+ },
+ "name": "DeepSkyBlue3"
+ },
+ {
+ "colorId": 32,
+ "hexString": "#0087d7",
+ "rgb": {
+ "r": 0,
+ "g": 135,
+ "b": 215
+ },
+ "hsl": {
+ "h": 202.325581395349,
+ "s": 100,
+ "l": 42
+ },
+ "name": "DeepSkyBlue3"
+ },
+ {
+ "colorId": 33,
+ "hexString": "#0087ff",
+ "rgb": {
+ "r": 0,
+ "g": 135,
+ "b": 255
+ },
+ "hsl": {
+ "h": 208.235294117647,
+ "s": 100,
+ "l": 50
+ },
+ "name": "DodgerBlue1"
+ },
+ {
+ "colorId": 34,
+ "hexString": "#00af00",
+ "rgb": {
+ "r": 0,
+ "g": 175,
+ "b": 0
+ },
+ "hsl": {
+ "h": 120,
+ "s": 100,
+ "l": 34
+ },
+ "name": "Green3"
+ },
+ {
+ "colorId": 35,
+ "hexString": "#00af5f",
+ "rgb": {
+ "r": 0,
+ "g": 175,
+ "b": 95
+ },
+ "hsl": {
+ "h": 152.571428571429,
+ "s": 100,
+ "l": 34
+ },
+ "name": "SpringGreen3"
+ },
+ {
+ "colorId": 36,
+ "hexString": "#00af87",
+ "rgb": {
+ "r": 0,
+ "g": 175,
+ "b": 135
+ },
+ "hsl": {
+ "h": 166.285714285714,
+ "s": 100,
+ "l": 34
+ },
+ "name": "DarkCyan"
+ },
+ {
+ "colorId": 37,
+ "hexString": "#00afaf",
+ "rgb": {
+ "r": 0,
+ "g": 175,
+ "b": 175
+ },
+ "hsl": {
+ "h": 180,
+ "s": 100,
+ "l": 34
+ },
+ "name": "LightSeaGreen"
+ },
+ {
+ "colorId": 38,
+ "hexString": "#00afd7",
+ "rgb": {
+ "r": 0,
+ "g": 175,
+ "b": 215
+ },
+ "hsl": {
+ "h": 191.162790697674,
+ "s": 100,
+ "l": 42
+ },
+ "name": "DeepSkyBlue2"
+ },
+ {
+ "colorId": 39,
+ "hexString": "#00afff",
+ "rgb": {
+ "r": 0,
+ "g": 175,
+ "b": 255
+ },
+ "hsl": {
+ "h": 198.823529411765,
+ "s": 100,
+ "l": 50
+ },
+ "name": "DeepSkyBlue1"
+ },
+ {
+ "colorId": 40,
+ "hexString": "#00d700",
+ "rgb": {
+ "r": 0,
+ "g": 215,
+ "b": 0
+ },
+ "hsl": {
+ "h": 120,
+ "s": 100,
+ "l": 42
+ },
+ "name": "Green3"
+ },
+ {
+ "colorId": 41,
+ "hexString": "#00d75f",
+ "rgb": {
+ "r": 0,
+ "g": 215,
+ "b": 95
+ },
+ "hsl": {
+ "h": 146.511627906977,
+ "s": 100,
+ "l": 42
+ },
+ "name": "SpringGreen3"
+ },
+ {
+ "colorId": 42,
+ "hexString": "#00d787",
+ "rgb": {
+ "r": 0,
+ "g": 215,
+ "b": 135
+ },
+ "hsl": {
+ "h": 157.674418604651,
+ "s": 100,
+ "l": 42
+ },
+ "name": "SpringGreen2"
+ },
+ {
+ "colorId": 43,
+ "hexString": "#00d7af",
+ "rgb": {
+ "r": 0,
+ "g": 215,
+ "b": 175
+ },
+ "hsl": {
+ "h": 168.837209302326,
+ "s": 100,
+ "l": 42
+ },
+ "name": "Cyan3"
+ },
+ {
+ "colorId": 44,
+ "hexString": "#00d7d7",
+ "rgb": {
+ "r": 0,
+ "g": 215,
+ "b": 215
+ },
+ "hsl": {
+ "h": 180,
+ "s": 100,
+ "l": 42
+ },
+ "name": "DarkTurquoise"
+ },
+ {
+ "colorId": 45,
+ "hexString": "#00d7ff",
+ "rgb": {
+ "r": 0,
+ "g": 215,
+ "b": 255
+ },
+ "hsl": {
+ "h": 189.411764705882,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Turquoise2"
+ },
+ {
+ "colorId": 46,
+ "hexString": "#00ff00",
+ "rgb": {
+ "r": 0,
+ "g": 255,
+ "b": 0
+ },
+ "hsl": {
+ "h": 120,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Green1"
+ },
+ {
+ "colorId": 47,
+ "hexString": "#00ff5f",
+ "rgb": {
+ "r": 0,
+ "g": 255,
+ "b": 95
+ },
+ "hsl": {
+ "h": 142.352941176471,
+ "s": 100,
+ "l": 50
+ },
+ "name": "SpringGreen2"
+ },
+ {
+ "colorId": 48,
+ "hexString": "#00ff87",
+ "rgb": {
+ "r": 0,
+ "g": 255,
+ "b": 135
+ },
+ "hsl": {
+ "h": 151.764705882353,
+ "s": 100,
+ "l": 50
+ },
+ "name": "SpringGreen1"
+ },
+ {
+ "colorId": 49,
+ "hexString": "#00ffaf",
+ "rgb": {
+ "r": 0,
+ "g": 255,
+ "b": 175
+ },
+ "hsl": {
+ "h": 161.176470588235,
+ "s": 100,
+ "l": 50
+ },
+ "name": "MediumSpringGreen"
+ },
+ {
+ "colorId": 50,
+ "hexString": "#00ffd7",
+ "rgb": {
+ "r": 0,
+ "g": 255,
+ "b": 215
+ },
+ "hsl": {
+ "h": 170.588235294118,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Cyan2"
+ },
+ {
+ "colorId": 51,
+ "hexString": "#00ffff",
+ "rgb": {
+ "r": 0,
+ "g": 255,
+ "b": 255
+ },
+ "hsl": {
+ "h": 180,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Cyan1"
+ },
+ {
+ "colorId": 52,
+ "hexString": "#5f0000",
+ "rgb": {
+ "r": 95,
+ "g": 0,
+ "b": 0
+ },
+ "hsl": {
+ "h": 0,
+ "s": 100,
+ "l": 18
+ },
+ "name": "DarkRed"
+ },
+ {
+ "colorId": 53,
+ "hexString": "#5f005f",
+ "rgb": {
+ "r": 95,
+ "g": 0,
+ "b": 95
+ },
+ "hsl": {
+ "h": 300,
+ "s": 100,
+ "l": 18
+ },
+ "name": "DeepPink4"
+ },
+ {
+ "colorId": 54,
+ "hexString": "#5f0087",
+ "rgb": {
+ "r": 95,
+ "g": 0,
+ "b": 135
+ },
+ "hsl": {
+ "h": 282.222222222222,
+ "s": 100,
+ "l": 26
+ },
+ "name": "Purple4"
+ },
+ {
+ "colorId": 55,
+ "hexString": "#5f00af",
+ "rgb": {
+ "r": 95,
+ "g": 0,
+ "b": 175
+ },
+ "hsl": {
+ "h": 272.571428571429,
+ "s": 100,
+ "l": 34
+ },
+ "name": "Purple4"
+ },
+ {
+ "colorId": 56,
+ "hexString": "#5f00d7",
+ "rgb": {
+ "r": 95,
+ "g": 0,
+ "b": 215
+ },
+ "hsl": {
+ "h": 266.511627906977,
+ "s": 100,
+ "l": 42
+ },
+ "name": "Purple3"
+ },
+ {
+ "colorId": 57,
+ "hexString": "#5f00ff",
+ "rgb": {
+ "r": 95,
+ "g": 0,
+ "b": 255
+ },
+ "hsl": {
+ "h": 262.352941176471,
+ "s": 100,
+ "l": 50
+ },
+ "name": "BlueViolet"
+ },
+ {
+ "colorId": 58,
+ "hexString": "#5f5f00",
+ "rgb": {
+ "r": 95,
+ "g": 95,
+ "b": 0
+ },
+ "hsl": {
+ "h": 60,
+ "s": 100,
+ "l": 18
+ },
+ "name": "Orange4"
+ },
+ {
+ "colorId": 59,
+ "hexString": "#5f5f5f",
+ "rgb": {
+ "r": 95,
+ "g": 95,
+ "b": 95
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 37
+ },
+ "name": "Grey37"
+ },
+ {
+ "colorId": 60,
+ "hexString": "#5f5f87",
+ "rgb": {
+ "r": 95,
+ "g": 95,
+ "b": 135
+ },
+ "hsl": {
+ "h": 240,
+ "s": 17,
+ "l": 45
+ },
+ "name": "MediumPurple4"
+ },
+ {
+ "colorId": 61,
+ "hexString": "#5f5faf",
+ "rgb": {
+ "r": 95,
+ "g": 95,
+ "b": 175
+ },
+ "hsl": {
+ "h": 240,
+ "s": 33,
+ "l": 52
+ },
+ "name": "SlateBlue3"
+ },
+ {
+ "colorId": 62,
+ "hexString": "#5f5fd7",
+ "rgb": {
+ "r": 95,
+ "g": 95,
+ "b": 215
+ },
+ "hsl": {
+ "h": 240,
+ "s": 60,
+ "l": 60
+ },
+ "name": "SlateBlue3"
+ },
+ {
+ "colorId": 63,
+ "hexString": "#5f5fff",
+ "rgb": {
+ "r": 95,
+ "g": 95,
+ "b": 255
+ },
+ "hsl": {
+ "h": 240,
+ "s": 100,
+ "l": 68
+ },
+ "name": "RoyalBlue1"
+ },
+ {
+ "colorId": 64,
+ "hexString": "#5f8700",
+ "rgb": {
+ "r": 95,
+ "g": 135,
+ "b": 0
+ },
+ "hsl": {
+ "h": 77.7777777777778,
+ "s": 100,
+ "l": 26
+ },
+ "name": "Chartreuse4"
+ },
+ {
+ "colorId": 65,
+ "hexString": "#5f875f",
+ "rgb": {
+ "r": 95,
+ "g": 135,
+ "b": 95
+ },
+ "hsl": {
+ "h": 120,
+ "s": 17,
+ "l": 45
+ },
+ "name": "DarkSeaGreen4"
+ },
+ {
+ "colorId": 66,
+ "hexString": "#5f8787",
+ "rgb": {
+ "r": 95,
+ "g": 135,
+ "b": 135
+ },
+ "hsl": {
+ "h": 180,
+ "s": 17,
+ "l": 45
+ },
+ "name": "PaleTurquoise4"
+ },
+ {
+ "colorId": 67,
+ "hexString": "#5f87af",
+ "rgb": {
+ "r": 95,
+ "g": 135,
+ "b": 175
+ },
+ "hsl": {
+ "h": 210,
+ "s": 33,
+ "l": 52
+ },
+ "name": "SteelBlue"
+ },
+ {
+ "colorId": 68,
+ "hexString": "#5f87d7",
+ "rgb": {
+ "r": 95,
+ "g": 135,
+ "b": 215
+ },
+ "hsl": {
+ "h": 220,
+ "s": 60,
+ "l": 60
+ },
+ "name": "SteelBlue3"
+ },
+ {
+ "colorId": 69,
+ "hexString": "#5f87ff",
+ "rgb": {
+ "r": 95,
+ "g": 135,
+ "b": 255
+ },
+ "hsl": {
+ "h": 225,
+ "s": 100,
+ "l": 68
+ },
+ "name": "CornflowerBlue"
+ },
+ {
+ "colorId": 70,
+ "hexString": "#5faf00",
+ "rgb": {
+ "r": 95,
+ "g": 175,
+ "b": 0
+ },
+ "hsl": {
+ "h": 87.4285714285714,
+ "s": 100,
+ "l": 34
+ },
+ "name": "Chartreuse3"
+ },
+ {
+ "colorId": 71,
+ "hexString": "#5faf5f",
+ "rgb": {
+ "r": 95,
+ "g": 175,
+ "b": 95
+ },
+ "hsl": {
+ "h": 120,
+ "s": 33,
+ "l": 52
+ },
+ "name": "DarkSeaGreen4"
+ },
+ {
+ "colorId": 72,
+ "hexString": "#5faf87",
+ "rgb": {
+ "r": 95,
+ "g": 175,
+ "b": 135
+ },
+ "hsl": {
+ "h": 150,
+ "s": 33,
+ "l": 52
+ },
+ "name": "CadetBlue"
+ },
+ {
+ "colorId": 73,
+ "hexString": "#5fafaf",
+ "rgb": {
+ "r": 95,
+ "g": 175,
+ "b": 175
+ },
+ "hsl": {
+ "h": 180,
+ "s": 33,
+ "l": 52
+ },
+ "name": "CadetBlue"
+ },
+ {
+ "colorId": 74,
+ "hexString": "#5fafd7",
+ "rgb": {
+ "r": 95,
+ "g": 175,
+ "b": 215
+ },
+ "hsl": {
+ "h": 200,
+ "s": 60,
+ "l": 60
+ },
+ "name": "SkyBlue3"
+ },
+ {
+ "colorId": 75,
+ "hexString": "#5fafff",
+ "rgb": {
+ "r": 95,
+ "g": 175,
+ "b": 255
+ },
+ "hsl": {
+ "h": 210,
+ "s": 100,
+ "l": 68
+ },
+ "name": "SteelBlue1"
+ },
+ {
+ "colorId": 76,
+ "hexString": "#5fd700",
+ "rgb": {
+ "r": 95,
+ "g": 215,
+ "b": 0
+ },
+ "hsl": {
+ "h": 93.4883720930233,
+ "s": 100,
+ "l": 42
+ },
+ "name": "Chartreuse3"
+ },
+ {
+ "colorId": 77,
+ "hexString": "#5fd75f",
+ "rgb": {
+ "r": 95,
+ "g": 215,
+ "b": 95
+ },
+ "hsl": {
+ "h": 120,
+ "s": 60,
+ "l": 60
+ },
+ "name": "PaleGreen3"
+ },
+ {
+ "colorId": 78,
+ "hexString": "#5fd787",
+ "rgb": {
+ "r": 95,
+ "g": 215,
+ "b": 135
+ },
+ "hsl": {
+ "h": 140,
+ "s": 60,
+ "l": 60
+ },
+ "name": "SeaGreen3"
+ },
+ {
+ "colorId": 79,
+ "hexString": "#5fd7af",
+ "rgb": {
+ "r": 95,
+ "g": 215,
+ "b": 175
+ },
+ "hsl": {
+ "h": 160,
+ "s": 60,
+ "l": 60
+ },
+ "name": "Aquamarine3"
+ },
+ {
+ "colorId": 80,
+ "hexString": "#5fd7d7",
+ "rgb": {
+ "r": 95,
+ "g": 215,
+ "b": 215
+ },
+ "hsl": {
+ "h": 180,
+ "s": 60,
+ "l": 60
+ },
+ "name": "MediumTurquoise"
+ },
+ {
+ "colorId": 81,
+ "hexString": "#5fd7ff",
+ "rgb": {
+ "r": 95,
+ "g": 215,
+ "b": 255
+ },
+ "hsl": {
+ "h": 195,
+ "s": 100,
+ "l": 68
+ },
+ "name": "SteelBlue1"
+ },
+ {
+ "colorId": 82,
+ "hexString": "#5fff00",
+ "rgb": {
+ "r": 95,
+ "g": 255,
+ "b": 0
+ },
+ "hsl": {
+ "h": 97.6470588235294,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Chartreuse2"
+ },
+ {
+ "colorId": 83,
+ "hexString": "#5fff5f",
+ "rgb": {
+ "r": 95,
+ "g": 255,
+ "b": 95
+ },
+ "hsl": {
+ "h": 120,
+ "s": 100,
+ "l": 68
+ },
+ "name": "SeaGreen2"
+ },
+ {
+ "colorId": 84,
+ "hexString": "#5fff87",
+ "rgb": {
+ "r": 95,
+ "g": 255,
+ "b": 135
+ },
+ "hsl": {
+ "h": 135,
+ "s": 100,
+ "l": 68
+ },
+ "name": "SeaGreen1"
+ },
+ {
+ "colorId": 85,
+ "hexString": "#5fffaf",
+ "rgb": {
+ "r": 95,
+ "g": 255,
+ "b": 175
+ },
+ "hsl": {
+ "h": 150,
+ "s": 100,
+ "l": 68
+ },
+ "name": "SeaGreen1"
+ },
+ {
+ "colorId": 86,
+ "hexString": "#5fffd7",
+ "rgb": {
+ "r": 95,
+ "g": 255,
+ "b": 215
+ },
+ "hsl": {
+ "h": 165,
+ "s": 100,
+ "l": 68
+ },
+ "name": "Aquamarine1"
+ },
+ {
+ "colorId": 87,
+ "hexString": "#5fffff",
+ "rgb": {
+ "r": 95,
+ "g": 255,
+ "b": 255
+ },
+ "hsl": {
+ "h": 180,
+ "s": 100,
+ "l": 68
+ },
+ "name": "DarkSlateGray2"
+ },
+ {
+ "colorId": 88,
+ "hexString": "#870000",
+ "rgb": {
+ "r": 135,
+ "g": 0,
+ "b": 0
+ },
+ "hsl": {
+ "h": 0,
+ "s": 100,
+ "l": 26
+ },
+ "name": "DarkRed"
+ },
+ {
+ "colorId": 89,
+ "hexString": "#87005f",
+ "rgb": {
+ "r": 135,
+ "g": 0,
+ "b": 95
+ },
+ "hsl": {
+ "h": 317.777777777778,
+ "s": 100,
+ "l": 26
+ },
+ "name": "DeepPink4"
+ },
+ {
+ "colorId": 90,
+ "hexString": "#870087",
+ "rgb": {
+ "r": 135,
+ "g": 0,
+ "b": 135
+ },
+ "hsl": {
+ "h": 300,
+ "s": 100,
+ "l": 26
+ },
+ "name": "DarkMagenta"
+ },
+ {
+ "colorId": 91,
+ "hexString": "#8700af",
+ "rgb": {
+ "r": 135,
+ "g": 0,
+ "b": 175
+ },
+ "hsl": {
+ "h": 286.285714285714,
+ "s": 100,
+ "l": 34
+ },
+ "name": "DarkMagenta"
+ },
+ {
+ "colorId": 92,
+ "hexString": "#8700d7",
+ "rgb": {
+ "r": 135,
+ "g": 0,
+ "b": 215
+ },
+ "hsl": {
+ "h": 277.674418604651,
+ "s": 100,
+ "l": 42
+ },
+ "name": "DarkViolet"
+ },
+ {
+ "colorId": 93,
+ "hexString": "#8700ff",
+ "rgb": {
+ "r": 135,
+ "g": 0,
+ "b": 255
+ },
+ "hsl": {
+ "h": 271.764705882353,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Purple"
+ },
+ {
+ "colorId": 94,
+ "hexString": "#875f00",
+ "rgb": {
+ "r": 135,
+ "g": 95,
+ "b": 0
+ },
+ "hsl": {
+ "h": 42.2222222222222,
+ "s": 100,
+ "l": 26
+ },
+ "name": "Orange4"
+ },
+ {
+ "colorId": 95,
+ "hexString": "#875f5f",
+ "rgb": {
+ "r": 135,
+ "g": 95,
+ "b": 95
+ },
+ "hsl": {
+ "h": 0,
+ "s": 17,
+ "l": 45
+ },
+ "name": "LightPink4"
+ },
+ {
+ "colorId": 96,
+ "hexString": "#875f87",
+ "rgb": {
+ "r": 135,
+ "g": 95,
+ "b": 135
+ },
+ "hsl": {
+ "h": 300,
+ "s": 17,
+ "l": 45
+ },
+ "name": "Plum4"
+ },
+ {
+ "colorId": 97,
+ "hexString": "#875faf",
+ "rgb": {
+ "r": 135,
+ "g": 95,
+ "b": 175
+ },
+ "hsl": {
+ "h": 270,
+ "s": 33,
+ "l": 52
+ },
+ "name": "MediumPurple3"
+ },
+ {
+ "colorId": 98,
+ "hexString": "#875fd7",
+ "rgb": {
+ "r": 135,
+ "g": 95,
+ "b": 215
+ },
+ "hsl": {
+ "h": 260,
+ "s": 60,
+ "l": 60
+ },
+ "name": "MediumPurple3"
+ },
+ {
+ "colorId": 99,
+ "hexString": "#875fff",
+ "rgb": {
+ "r": 135,
+ "g": 95,
+ "b": 255
+ },
+ "hsl": {
+ "h": 255,
+ "s": 100,
+ "l": 68
+ },
+ "name": "SlateBlue1"
+ },
+ {
+ "colorId": 100,
+ "hexString": "#878700",
+ "rgb": {
+ "r": 135,
+ "g": 135,
+ "b": 0
+ },
+ "hsl": {
+ "h": 60,
+ "s": 100,
+ "l": 26
+ },
+ "name": "Yellow4"
+ },
+ {
+ "colorId": 101,
+ "hexString": "#87875f",
+ "rgb": {
+ "r": 135,
+ "g": 135,
+ "b": 95
+ },
+ "hsl": {
+ "h": 60,
+ "s": 17,
+ "l": 45
+ },
+ "name": "Wheat4"
+ },
+ {
+ "colorId": 102,
+ "hexString": "#878787",
+ "rgb": {
+ "r": 135,
+ "g": 135,
+ "b": 135
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 52
+ },
+ "name": "Grey53"
+ },
+ {
+ "colorId": 103,
+ "hexString": "#8787af",
+ "rgb": {
+ "r": 135,
+ "g": 135,
+ "b": 175
+ },
+ "hsl": {
+ "h": 240,
+ "s": 20,
+ "l": 60
+ },
+ "name": "LightSlateGrey"
+ },
+ {
+ "colorId": 104,
+ "hexString": "#8787d7",
+ "rgb": {
+ "r": 135,
+ "g": 135,
+ "b": 215
+ },
+ "hsl": {
+ "h": 240,
+ "s": 50,
+ "l": 68
+ },
+ "name": "MediumPurple"
+ },
+ {
+ "colorId": 105,
+ "hexString": "#8787ff",
+ "rgb": {
+ "r": 135,
+ "g": 135,
+ "b": 255
+ },
+ "hsl": {
+ "h": 240,
+ "s": 100,
+ "l": 76
+ },
+ "name": "LightSlateBlue"
+ },
+ {
+ "colorId": 106,
+ "hexString": "#87af00",
+ "rgb": {
+ "r": 135,
+ "g": 175,
+ "b": 0
+ },
+ "hsl": {
+ "h": 73.7142857142857,
+ "s": 100,
+ "l": 34
+ },
+ "name": "Yellow4"
+ },
+ {
+ "colorId": 107,
+ "hexString": "#87af5f",
+ "rgb": {
+ "r": 135,
+ "g": 175,
+ "b": 95
+ },
+ "hsl": {
+ "h": 90,
+ "s": 33,
+ "l": 52
+ },
+ "name": "DarkOliveGreen3"
+ },
+ {
+ "colorId": 108,
+ "hexString": "#87af87",
+ "rgb": {
+ "r": 135,
+ "g": 175,
+ "b": 135
+ },
+ "hsl": {
+ "h": 120,
+ "s": 20,
+ "l": 60
+ },
+ "name": "DarkSeaGreen"
+ },
+ {
+ "colorId": 109,
+ "hexString": "#87afaf",
+ "rgb": {
+ "r": 135,
+ "g": 175,
+ "b": 175
+ },
+ "hsl": {
+ "h": 180,
+ "s": 20,
+ "l": 60
+ },
+ "name": "LightSkyBlue3"
+ },
+ {
+ "colorId": 110,
+ "hexString": "#87afd7",
+ "rgb": {
+ "r": 135,
+ "g": 175,
+ "b": 215
+ },
+ "hsl": {
+ "h": 210,
+ "s": 50,
+ "l": 68
+ },
+ "name": "LightSkyBlue3"
+ },
+ {
+ "colorId": 111,
+ "hexString": "#87afff",
+ "rgb": {
+ "r": 135,
+ "g": 175,
+ "b": 255
+ },
+ "hsl": {
+ "h": 220,
+ "s": 100,
+ "l": 76
+ },
+ "name": "SkyBlue2"
+ },
+ {
+ "colorId": 112,
+ "hexString": "#87d700",
+ "rgb": {
+ "r": 135,
+ "g": 215,
+ "b": 0
+ },
+ "hsl": {
+ "h": 82.3255813953488,
+ "s": 100,
+ "l": 42
+ },
+ "name": "Chartreuse2"
+ },
+ {
+ "colorId": 113,
+ "hexString": "#87d75f",
+ "rgb": {
+ "r": 135,
+ "g": 215,
+ "b": 95
+ },
+ "hsl": {
+ "h": 100,
+ "s": 60,
+ "l": 60
+ },
+ "name": "DarkOliveGreen3"
+ },
+ {
+ "colorId": 114,
+ "hexString": "#87d787",
+ "rgb": {
+ "r": 135,
+ "g": 215,
+ "b": 135
+ },
+ "hsl": {
+ "h": 120,
+ "s": 50,
+ "l": 68
+ },
+ "name": "PaleGreen3"
+ },
+ {
+ "colorId": 115,
+ "hexString": "#87d7af",
+ "rgb": {
+ "r": 135,
+ "g": 215,
+ "b": 175
+ },
+ "hsl": {
+ "h": 150,
+ "s": 50,
+ "l": 68
+ },
+ "name": "DarkSeaGreen3"
+ },
+ {
+ "colorId": 116,
+ "hexString": "#87d7d7",
+ "rgb": {
+ "r": 135,
+ "g": 215,
+ "b": 215
+ },
+ "hsl": {
+ "h": 180,
+ "s": 50,
+ "l": 68
+ },
+ "name": "DarkSlateGray3"
+ },
+ {
+ "colorId": 117,
+ "hexString": "#87d7ff",
+ "rgb": {
+ "r": 135,
+ "g": 215,
+ "b": 255
+ },
+ "hsl": {
+ "h": 200,
+ "s": 100,
+ "l": 76
+ },
+ "name": "SkyBlue1"
+ },
+ {
+ "colorId": 118,
+ "hexString": "#87ff00",
+ "rgb": {
+ "r": 135,
+ "g": 255,
+ "b": 0
+ },
+ "hsl": {
+ "h": 88.2352941176471,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Chartreuse1"
+ },
+ {
+ "colorId": 119,
+ "hexString": "#87ff5f",
+ "rgb": {
+ "r": 135,
+ "g": 255,
+ "b": 95
+ },
+ "hsl": {
+ "h": 105,
+ "s": 100,
+ "l": 68
+ },
+ "name": "LightGreen"
+ },
+ {
+ "colorId": 120,
+ "hexString": "#87ff87",
+ "rgb": {
+ "r": 135,
+ "g": 255,
+ "b": 135
+ },
+ "hsl": {
+ "h": 120,
+ "s": 100,
+ "l": 76
+ },
+ "name": "LightGreen"
+ },
+ {
+ "colorId": 121,
+ "hexString": "#87ffaf",
+ "rgb": {
+ "r": 135,
+ "g": 255,
+ "b": 175
+ },
+ "hsl": {
+ "h": 140,
+ "s": 100,
+ "l": 76
+ },
+ "name": "PaleGreen1"
+ },
+ {
+ "colorId": 122,
+ "hexString": "#87ffd7",
+ "rgb": {
+ "r": 135,
+ "g": 255,
+ "b": 215
+ },
+ "hsl": {
+ "h": 160,
+ "s": 100,
+ "l": 76
+ },
+ "name": "Aquamarine1"
+ },
+ {
+ "colorId": 123,
+ "hexString": "#87ffff",
+ "rgb": {
+ "r": 135,
+ "g": 255,
+ "b": 255
+ },
+ "hsl": {
+ "h": 180,
+ "s": 100,
+ "l": 76
+ },
+ "name": "DarkSlateGray1"
+ },
+ {
+ "colorId": 124,
+ "hexString": "#af0000",
+ "rgb": {
+ "r": 175,
+ "g": 0,
+ "b": 0
+ },
+ "hsl": {
+ "h": 0,
+ "s": 100,
+ "l": 34
+ },
+ "name": "Red3"
+ },
+ {
+ "colorId": 125,
+ "hexString": "#af005f",
+ "rgb": {
+ "r": 175,
+ "g": 0,
+ "b": 95
+ },
+ "hsl": {
+ "h": 327.428571428571,
+ "s": 100,
+ "l": 34
+ },
+ "name": "DeepPink4"
+ },
+ {
+ "colorId": 126,
+ "hexString": "#af0087",
+ "rgb": {
+ "r": 175,
+ "g": 0,
+ "b": 135
+ },
+ "hsl": {
+ "h": 313.714285714286,
+ "s": 100,
+ "l": 34
+ },
+ "name": "MediumVioletRed"
+ },
+ {
+ "colorId": 127,
+ "hexString": "#af00af",
+ "rgb": {
+ "r": 175,
+ "g": 0,
+ "b": 175
+ },
+ "hsl": {
+ "h": 300,
+ "s": 100,
+ "l": 34
+ },
+ "name": "Magenta3"
+ },
+ {
+ "colorId": 128,
+ "hexString": "#af00d7",
+ "rgb": {
+ "r": 175,
+ "g": 0,
+ "b": 215
+ },
+ "hsl": {
+ "h": 288.837209302326,
+ "s": 100,
+ "l": 42
+ },
+ "name": "DarkViolet"
+ },
+ {
+ "colorId": 129,
+ "hexString": "#af00ff",
+ "rgb": {
+ "r": 175,
+ "g": 0,
+ "b": 255
+ },
+ "hsl": {
+ "h": 281.176470588235,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Purple"
+ },
+ {
+ "colorId": 130,
+ "hexString": "#af5f00",
+ "rgb": {
+ "r": 175,
+ "g": 95,
+ "b": 0
+ },
+ "hsl": {
+ "h": 32.5714285714286,
+ "s": 100,
+ "l": 34
+ },
+ "name": "DarkOrange3"
+ },
+ {
+ "colorId": 131,
+ "hexString": "#af5f5f",
+ "rgb": {
+ "r": 175,
+ "g": 95,
+ "b": 95
+ },
+ "hsl": {
+ "h": 0,
+ "s": 33,
+ "l": 52
+ },
+ "name": "IndianRed"
+ },
+ {
+ "colorId": 132,
+ "hexString": "#af5f87",
+ "rgb": {
+ "r": 175,
+ "g": 95,
+ "b": 135
+ },
+ "hsl": {
+ "h": 330,
+ "s": 33,
+ "l": 52
+ },
+ "name": "HotPink3"
+ },
+ {
+ "colorId": 133,
+ "hexString": "#af5faf",
+ "rgb": {
+ "r": 175,
+ "g": 95,
+ "b": 175
+ },
+ "hsl": {
+ "h": 300,
+ "s": 33,
+ "l": 52
+ },
+ "name": "MediumOrchid3"
+ },
+ {
+ "colorId": 134,
+ "hexString": "#af5fd7",
+ "rgb": {
+ "r": 175,
+ "g": 95,
+ "b": 215
+ },
+ "hsl": {
+ "h": 280,
+ "s": 60,
+ "l": 60
+ },
+ "name": "MediumOrchid"
+ },
+ {
+ "colorId": 135,
+ "hexString": "#af5fff",
+ "rgb": {
+ "r": 175,
+ "g": 95,
+ "b": 255
+ },
+ "hsl": {
+ "h": 270,
+ "s": 100,
+ "l": 68
+ },
+ "name": "MediumPurple2"
+ },
+ {
+ "colorId": 136,
+ "hexString": "#af8700",
+ "rgb": {
+ "r": 175,
+ "g": 135,
+ "b": 0
+ },
+ "hsl": {
+ "h": 46.2857142857143,
+ "s": 100,
+ "l": 34
+ },
+ "name": "DarkGoldenrod"
+ },
+ {
+ "colorId": 137,
+ "hexString": "#af875f",
+ "rgb": {
+ "r": 175,
+ "g": 135,
+ "b": 95
+ },
+ "hsl": {
+ "h": 30,
+ "s": 33,
+ "l": 52
+ },
+ "name": "LightSalmon3"
+ },
+ {
+ "colorId": 138,
+ "hexString": "#af8787",
+ "rgb": {
+ "r": 175,
+ "g": 135,
+ "b": 135
+ },
+ "hsl": {
+ "h": 0,
+ "s": 20,
+ "l": 60
+ },
+ "name": "RosyBrown"
+ },
+ {
+ "colorId": 139,
+ "hexString": "#af87af",
+ "rgb": {
+ "r": 175,
+ "g": 135,
+ "b": 175
+ },
+ "hsl": {
+ "h": 300,
+ "s": 20,
+ "l": 60
+ },
+ "name": "Grey63"
+ },
+ {
+ "colorId": 140,
+ "hexString": "#af87d7",
+ "rgb": {
+ "r": 175,
+ "g": 135,
+ "b": 215
+ },
+ "hsl": {
+ "h": 270,
+ "s": 50,
+ "l": 68
+ },
+ "name": "MediumPurple2"
+ },
+ {
+ "colorId": 141,
+ "hexString": "#af87ff",
+ "rgb": {
+ "r": 175,
+ "g": 135,
+ "b": 255
+ },
+ "hsl": {
+ "h": 260,
+ "s": 100,
+ "l": 76
+ },
+ "name": "MediumPurple1"
+ },
+ {
+ "colorId": 142,
+ "hexString": "#afaf00",
+ "rgb": {
+ "r": 175,
+ "g": 175,
+ "b": 0
+ },
+ "hsl": {
+ "h": 60,
+ "s": 100,
+ "l": 34
+ },
+ "name": "Gold3"
+ },
+ {
+ "colorId": 143,
+ "hexString": "#afaf5f",
+ "rgb": {
+ "r": 175,
+ "g": 175,
+ "b": 95
+ },
+ "hsl": {
+ "h": 60,
+ "s": 33,
+ "l": 52
+ },
+ "name": "DarkKhaki"
+ },
+ {
+ "colorId": 144,
+ "hexString": "#afaf87",
+ "rgb": {
+ "r": 175,
+ "g": 175,
+ "b": 135
+ },
+ "hsl": {
+ "h": 60,
+ "s": 20,
+ "l": 60
+ },
+ "name": "NavajoWhite3"
+ },
+ {
+ "colorId": 145,
+ "hexString": "#afafaf",
+ "rgb": {
+ "r": 175,
+ "g": 175,
+ "b": 175
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 68
+ },
+ "name": "Grey69"
+ },
+ {
+ "colorId": 146,
+ "hexString": "#afafd7",
+ "rgb": {
+ "r": 175,
+ "g": 175,
+ "b": 215
+ },
+ "hsl": {
+ "h": 240,
+ "s": 33,
+ "l": 76
+ },
+ "name": "LightSteelBlue3"
+ },
+ {
+ "colorId": 147,
+ "hexString": "#afafff",
+ "rgb": {
+ "r": 175,
+ "g": 175,
+ "b": 255
+ },
+ "hsl": {
+ "h": 240,
+ "s": 100,
+ "l": 84
+ },
+ "name": "LightSteelBlue"
+ },
+ {
+ "colorId": 148,
+ "hexString": "#afd700",
+ "rgb": {
+ "r": 175,
+ "g": 215,
+ "b": 0
+ },
+ "hsl": {
+ "h": 71.1627906976744,
+ "s": 100,
+ "l": 42
+ },
+ "name": "Yellow3"
+ },
+ {
+ "colorId": 149,
+ "hexString": "#afd75f",
+ "rgb": {
+ "r": 175,
+ "g": 215,
+ "b": 95
+ },
+ "hsl": {
+ "h": 80,
+ "s": 60,
+ "l": 60
+ },
+ "name": "DarkOliveGreen3"
+ },
+ {
+ "colorId": 150,
+ "hexString": "#afd787",
+ "rgb": {
+ "r": 175,
+ "g": 215,
+ "b": 135
+ },
+ "hsl": {
+ "h": 90,
+ "s": 50,
+ "l": 68
+ },
+ "name": "DarkSeaGreen3"
+ },
+ {
+ "colorId": 151,
+ "hexString": "#afd7af",
+ "rgb": {
+ "r": 175,
+ "g": 215,
+ "b": 175
+ },
+ "hsl": {
+ "h": 120,
+ "s": 33,
+ "l": 76
+ },
+ "name": "DarkSeaGreen2"
+ },
+ {
+ "colorId": 152,
+ "hexString": "#afd7d7",
+ "rgb": {
+ "r": 175,
+ "g": 215,
+ "b": 215
+ },
+ "hsl": {
+ "h": 180,
+ "s": 33,
+ "l": 76
+ },
+ "name": "LightCyan3"
+ },
+ {
+ "colorId": 153,
+ "hexString": "#afd7ff",
+ "rgb": {
+ "r": 175,
+ "g": 215,
+ "b": 255
+ },
+ "hsl": {
+ "h": 210,
+ "s": 100,
+ "l": 84
+ },
+ "name": "LightSkyBlue1"
+ },
+ {
+ "colorId": 154,
+ "hexString": "#afff00",
+ "rgb": {
+ "r": 175,
+ "g": 255,
+ "b": 0
+ },
+ "hsl": {
+ "h": 78.8235294117647,
+ "s": 100,
+ "l": 50
+ },
+ "name": "GreenYellow"
+ },
+ {
+ "colorId": 155,
+ "hexString": "#afff5f",
+ "rgb": {
+ "r": 175,
+ "g": 255,
+ "b": 95
+ },
+ "hsl": {
+ "h": 90,
+ "s": 100,
+ "l": 68
+ },
+ "name": "DarkOliveGreen2"
+ },
+ {
+ "colorId": 156,
+ "hexString": "#afff87",
+ "rgb": {
+ "r": 175,
+ "g": 255,
+ "b": 135
+ },
+ "hsl": {
+ "h": 100,
+ "s": 100,
+ "l": 76
+ },
+ "name": "PaleGreen1"
+ },
+ {
+ "colorId": 157,
+ "hexString": "#afffaf",
+ "rgb": {
+ "r": 175,
+ "g": 255,
+ "b": 175
+ },
+ "hsl": {
+ "h": 120,
+ "s": 100,
+ "l": 84
+ },
+ "name": "DarkSeaGreen2"
+ },
+ {
+ "colorId": 158,
+ "hexString": "#afffd7",
+ "rgb": {
+ "r": 175,
+ "g": 255,
+ "b": 215
+ },
+ "hsl": {
+ "h": 150,
+ "s": 100,
+ "l": 84
+ },
+ "name": "DarkSeaGreen1"
+ },
+ {
+ "colorId": 159,
+ "hexString": "#afffff",
+ "rgb": {
+ "r": 175,
+ "g": 255,
+ "b": 255
+ },
+ "hsl": {
+ "h": 180,
+ "s": 100,
+ "l": 84
+ },
+ "name": "PaleTurquoise1"
+ },
+ {
+ "colorId": 160,
+ "hexString": "#d70000",
+ "rgb": {
+ "r": 215,
+ "g": 0,
+ "b": 0
+ },
+ "hsl": {
+ "h": 0,
+ "s": 100,
+ "l": 42
+ },
+ "name": "Red3"
+ },
+ {
+ "colorId": 161,
+ "hexString": "#d7005f",
+ "rgb": {
+ "r": 215,
+ "g": 0,
+ "b": 95
+ },
+ "hsl": {
+ "h": 333.488372093023,
+ "s": 100,
+ "l": 42
+ },
+ "name": "DeepPink3"
+ },
+ {
+ "colorId": 162,
+ "hexString": "#d70087",
+ "rgb": {
+ "r": 215,
+ "g": 0,
+ "b": 135
+ },
+ "hsl": {
+ "h": 322.325581395349,
+ "s": 100,
+ "l": 42
+ },
+ "name": "DeepPink3"
+ },
+ {
+ "colorId": 163,
+ "hexString": "#d700af",
+ "rgb": {
+ "r": 215,
+ "g": 0,
+ "b": 175
+ },
+ "hsl": {
+ "h": 311.162790697674,
+ "s": 100,
+ "l": 42
+ },
+ "name": "Magenta3"
+ },
+ {
+ "colorId": 164,
+ "hexString": "#d700d7",
+ "rgb": {
+ "r": 215,
+ "g": 0,
+ "b": 215
+ },
+ "hsl": {
+ "h": 300,
+ "s": 100,
+ "l": 42
+ },
+ "name": "Magenta3"
+ },
+ {
+ "colorId": 165,
+ "hexString": "#d700ff",
+ "rgb": {
+ "r": 215,
+ "g": 0,
+ "b": 255
+ },
+ "hsl": {
+ "h": 290.588235294118,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Magenta2"
+ },
+ {
+ "colorId": 166,
+ "hexString": "#d75f00",
+ "rgb": {
+ "r": 215,
+ "g": 95,
+ "b": 0
+ },
+ "hsl": {
+ "h": 26.5116279069767,
+ "s": 100,
+ "l": 42
+ },
+ "name": "DarkOrange3"
+ },
+ {
+ "colorId": 167,
+ "hexString": "#d75f5f",
+ "rgb": {
+ "r": 215,
+ "g": 95,
+ "b": 95
+ },
+ "hsl": {
+ "h": 0,
+ "s": 60,
+ "l": 60
+ },
+ "name": "IndianRed"
+ },
+ {
+ "colorId": 168,
+ "hexString": "#d75f87",
+ "rgb": {
+ "r": 215,
+ "g": 95,
+ "b": 135
+ },
+ "hsl": {
+ "h": 340,
+ "s": 60,
+ "l": 60
+ },
+ "name": "HotPink3"
+ },
+ {
+ "colorId": 169,
+ "hexString": "#d75faf",
+ "rgb": {
+ "r": 215,
+ "g": 95,
+ "b": 175
+ },
+ "hsl": {
+ "h": 320,
+ "s": 60,
+ "l": 60
+ },
+ "name": "HotPink2"
+ },
+ {
+ "colorId": 170,
+ "hexString": "#d75fd7",
+ "rgb": {
+ "r": 215,
+ "g": 95,
+ "b": 215
+ },
+ "hsl": {
+ "h": 300,
+ "s": 60,
+ "l": 60
+ },
+ "name": "Orchid"
+ },
+ {
+ "colorId": 171,
+ "hexString": "#d75fff",
+ "rgb": {
+ "r": 215,
+ "g": 95,
+ "b": 255
+ },
+ "hsl": {
+ "h": 285,
+ "s": 100,
+ "l": 68
+ },
+ "name": "MediumOrchid1"
+ },
+ {
+ "colorId": 172,
+ "hexString": "#d78700",
+ "rgb": {
+ "r": 215,
+ "g": 135,
+ "b": 0
+ },
+ "hsl": {
+ "h": 37.6744186046512,
+ "s": 100,
+ "l": 42
+ },
+ "name": "Orange3"
+ },
+ {
+ "colorId": 173,
+ "hexString": "#d7875f",
+ "rgb": {
+ "r": 215,
+ "g": 135,
+ "b": 95
+ },
+ "hsl": {
+ "h": 20,
+ "s": 60,
+ "l": 60
+ },
+ "name": "LightSalmon3"
+ },
+ {
+ "colorId": 174,
+ "hexString": "#d78787",
+ "rgb": {
+ "r": 215,
+ "g": 135,
+ "b": 135
+ },
+ "hsl": {
+ "h": 0,
+ "s": 50,
+ "l": 68
+ },
+ "name": "LightPink3"
+ },
+ {
+ "colorId": 175,
+ "hexString": "#d787af",
+ "rgb": {
+ "r": 215,
+ "g": 135,
+ "b": 175
+ },
+ "hsl": {
+ "h": 330,
+ "s": 50,
+ "l": 68
+ },
+ "name": "Pink3"
+ },
+ {
+ "colorId": 176,
+ "hexString": "#d787d7",
+ "rgb": {
+ "r": 215,
+ "g": 135,
+ "b": 215
+ },
+ "hsl": {
+ "h": 300,
+ "s": 50,
+ "l": 68
+ },
+ "name": "Plum3"
+ },
+ {
+ "colorId": 177,
+ "hexString": "#d787ff",
+ "rgb": {
+ "r": 215,
+ "g": 135,
+ "b": 255
+ },
+ "hsl": {
+ "h": 280,
+ "s": 100,
+ "l": 76
+ },
+ "name": "Violet"
+ },
+ {
+ "colorId": 178,
+ "hexString": "#d7af00",
+ "rgb": {
+ "r": 215,
+ "g": 175,
+ "b": 0
+ },
+ "hsl": {
+ "h": 48.8372093023256,
+ "s": 100,
+ "l": 42
+ },
+ "name": "Gold3"
+ },
+ {
+ "colorId": 179,
+ "hexString": "#d7af5f",
+ "rgb": {
+ "r": 215,
+ "g": 175,
+ "b": 95
+ },
+ "hsl": {
+ "h": 40,
+ "s": 60,
+ "l": 60
+ },
+ "name": "LightGoldenrod3"
+ },
+ {
+ "colorId": 180,
+ "hexString": "#d7af87",
+ "rgb": {
+ "r": 215,
+ "g": 175,
+ "b": 135
+ },
+ "hsl": {
+ "h": 30,
+ "s": 50,
+ "l": 68
+ },
+ "name": "Tan"
+ },
+ {
+ "colorId": 181,
+ "hexString": "#d7afaf",
+ "rgb": {
+ "r": 215,
+ "g": 175,
+ "b": 175
+ },
+ "hsl": {
+ "h": 0,
+ "s": 33,
+ "l": 76
+ },
+ "name": "MistyRose3"
+ },
+ {
+ "colorId": 182,
+ "hexString": "#d7afd7",
+ "rgb": {
+ "r": 215,
+ "g": 175,
+ "b": 215
+ },
+ "hsl": {
+ "h": 300,
+ "s": 33,
+ "l": 76
+ },
+ "name": "Thistle3"
+ },
+ {
+ "colorId": 183,
+ "hexString": "#d7afff",
+ "rgb": {
+ "r": 215,
+ "g": 175,
+ "b": 255
+ },
+ "hsl": {
+ "h": 270,
+ "s": 100,
+ "l": 84
+ },
+ "name": "Plum2"
+ },
+ {
+ "colorId": 184,
+ "hexString": "#d7d700",
+ "rgb": {
+ "r": 215,
+ "g": 215,
+ "b": 0
+ },
+ "hsl": {
+ "h": 60,
+ "s": 100,
+ "l": 42
+ },
+ "name": "Yellow3"
+ },
+ {
+ "colorId": 185,
+ "hexString": "#d7d75f",
+ "rgb": {
+ "r": 215,
+ "g": 215,
+ "b": 95
+ },
+ "hsl": {
+ "h": 60,
+ "s": 60,
+ "l": 60
+ },
+ "name": "Khaki3"
+ },
+ {
+ "colorId": 186,
+ "hexString": "#d7d787",
+ "rgb": {
+ "r": 215,
+ "g": 215,
+ "b": 135
+ },
+ "hsl": {
+ "h": 60,
+ "s": 50,
+ "l": 68
+ },
+ "name": "LightGoldenrod2"
+ },
+ {
+ "colorId": 187,
+ "hexString": "#d7d7af",
+ "rgb": {
+ "r": 215,
+ "g": 215,
+ "b": 175
+ },
+ "hsl": {
+ "h": 60,
+ "s": 33,
+ "l": 76
+ },
+ "name": "LightYellow3"
+ },
+ {
+ "colorId": 188,
+ "hexString": "#d7d7d7",
+ "rgb": {
+ "r": 215,
+ "g": 215,
+ "b": 215
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 84
+ },
+ "name": "Grey84"
+ },
+ {
+ "colorId": 189,
+ "hexString": "#d7d7ff",
+ "rgb": {
+ "r": 215,
+ "g": 215,
+ "b": 255
+ },
+ "hsl": {
+ "h": 240,
+ "s": 100,
+ "l": 92
+ },
+ "name": "LightSteelBlue1"
+ },
+ {
+ "colorId": 190,
+ "hexString": "#d7ff00",
+ "rgb": {
+ "r": 215,
+ "g": 255,
+ "b": 0
+ },
+ "hsl": {
+ "h": 69.4117647058823,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Yellow2"
+ },
+ {
+ "colorId": 191,
+ "hexString": "#d7ff5f",
+ "rgb": {
+ "r": 215,
+ "g": 255,
+ "b": 95
+ },
+ "hsl": {
+ "h": 75,
+ "s": 100,
+ "l": 68
+ },
+ "name": "DarkOliveGreen1"
+ },
+ {
+ "colorId": 192,
+ "hexString": "#d7ff87",
+ "rgb": {
+ "r": 215,
+ "g": 255,
+ "b": 135
+ },
+ "hsl": {
+ "h": 80,
+ "s": 100,
+ "l": 76
+ },
+ "name": "DarkOliveGreen1"
+ },
+ {
+ "colorId": 193,
+ "hexString": "#d7ffaf",
+ "rgb": {
+ "r": 215,
+ "g": 255,
+ "b": 175
+ },
+ "hsl": {
+ "h": 90,
+ "s": 100,
+ "l": 84
+ },
+ "name": "DarkSeaGreen1"
+ },
+ {
+ "colorId": 194,
+ "hexString": "#d7ffd7",
+ "rgb": {
+ "r": 215,
+ "g": 255,
+ "b": 215
+ },
+ "hsl": {
+ "h": 120,
+ "s": 100,
+ "l": 92
+ },
+ "name": "Honeydew2"
+ },
+ {
+ "colorId": 195,
+ "hexString": "#d7ffff",
+ "rgb": {
+ "r": 215,
+ "g": 255,
+ "b": 255
+ },
+ "hsl": {
+ "h": 180,
+ "s": 100,
+ "l": 92
+ },
+ "name": "LightCyan1"
+ },
+ {
+ "colorId": 196,
+ "hexString": "#ff0000",
+ "rgb": {
+ "r": 255,
+ "g": 0,
+ "b": 0
+ },
+ "hsl": {
+ "h": 0,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Red1"
+ },
+ {
+ "colorId": 197,
+ "hexString": "#ff005f",
+ "rgb": {
+ "r": 255,
+ "g": 0,
+ "b": 95
+ },
+ "hsl": {
+ "h": 337.647058823529,
+ "s": 100,
+ "l": 50
+ },
+ "name": "DeepPink2"
+ },
+ {
+ "colorId": 198,
+ "hexString": "#ff0087",
+ "rgb": {
+ "r": 255,
+ "g": 0,
+ "b": 135
+ },
+ "hsl": {
+ "h": 328.235294117647,
+ "s": 100,
+ "l": 50
+ },
+ "name": "DeepPink1"
+ },
+ {
+ "colorId": 199,
+ "hexString": "#ff00af",
+ "rgb": {
+ "r": 255,
+ "g": 0,
+ "b": 175
+ },
+ "hsl": {
+ "h": 318.823529411765,
+ "s": 100,
+ "l": 50
+ },
+ "name": "DeepPink1"
+ },
+ {
+ "colorId": 200,
+ "hexString": "#ff00d7",
+ "rgb": {
+ "r": 255,
+ "g": 0,
+ "b": 215
+ },
+ "hsl": {
+ "h": 309.411764705882,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Magenta2"
+ },
+ {
+ "colorId": 201,
+ "hexString": "#ff00ff",
+ "rgb": {
+ "r": 255,
+ "g": 0,
+ "b": 255
+ },
+ "hsl": {
+ "h": 300,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Magenta1"
+ },
+ {
+ "colorId": 202,
+ "hexString": "#ff5f00",
+ "rgb": {
+ "r": 255,
+ "g": 95,
+ "b": 0
+ },
+ "hsl": {
+ "h": 22.3529411764706,
+ "s": 100,
+ "l": 50
+ },
+ "name": "OrangeRed1"
+ },
+ {
+ "colorId": 203,
+ "hexString": "#ff5f5f",
+ "rgb": {
+ "r": 255,
+ "g": 95,
+ "b": 95
+ },
+ "hsl": {
+ "h": 0,
+ "s": 100,
+ "l": 68
+ },
+ "name": "IndianRed1"
+ },
+ {
+ "colorId": 204,
+ "hexString": "#ff5f87",
+ "rgb": {
+ "r": 255,
+ "g": 95,
+ "b": 135
+ },
+ "hsl": {
+ "h": 345,
+ "s": 100,
+ "l": 68
+ },
+ "name": "IndianRed1"
+ },
+ {
+ "colorId": 205,
+ "hexString": "#ff5faf",
+ "rgb": {
+ "r": 255,
+ "g": 95,
+ "b": 175
+ },
+ "hsl": {
+ "h": 330,
+ "s": 100,
+ "l": 68
+ },
+ "name": "HotPink"
+ },
+ {
+ "colorId": 206,
+ "hexString": "#ff5fd7",
+ "rgb": {
+ "r": 255,
+ "g": 95,
+ "b": 215
+ },
+ "hsl": {
+ "h": 315,
+ "s": 100,
+ "l": 68
+ },
+ "name": "HotPink"
+ },
+ {
+ "colorId": 207,
+ "hexString": "#ff5fff",
+ "rgb": {
+ "r": 255,
+ "g": 95,
+ "b": 255
+ },
+ "hsl": {
+ "h": 300,
+ "s": 100,
+ "l": 68
+ },
+ "name": "MediumOrchid1"
+ },
+ {
+ "colorId": 208,
+ "hexString": "#ff8700",
+ "rgb": {
+ "r": 255,
+ "g": 135,
+ "b": 0
+ },
+ "hsl": {
+ "h": 31.7647058823529,
+ "s": 100,
+ "l": 50
+ },
+ "name": "DarkOrange"
+ },
+ {
+ "colorId": 209,
+ "hexString": "#ff875f",
+ "rgb": {
+ "r": 255,
+ "g": 135,
+ "b": 95
+ },
+ "hsl": {
+ "h": 15,
+ "s": 100,
+ "l": 68
+ },
+ "name": "Salmon1"
+ },
+ {
+ "colorId": 210,
+ "hexString": "#ff8787",
+ "rgb": {
+ "r": 255,
+ "g": 135,
+ "b": 135
+ },
+ "hsl": {
+ "h": 0,
+ "s": 100,
+ "l": 76
+ },
+ "name": "LightCoral"
+ },
+ {
+ "colorId": 211,
+ "hexString": "#ff87af",
+ "rgb": {
+ "r": 255,
+ "g": 135,
+ "b": 175
+ },
+ "hsl": {
+ "h": 340,
+ "s": 100,
+ "l": 76
+ },
+ "name": "PaleVioletRed1"
+ },
+ {
+ "colorId": 212,
+ "hexString": "#ff87d7",
+ "rgb": {
+ "r": 255,
+ "g": 135,
+ "b": 215
+ },
+ "hsl": {
+ "h": 320,
+ "s": 100,
+ "l": 76
+ },
+ "name": "Orchid2"
+ },
+ {
+ "colorId": 213,
+ "hexString": "#ff87ff",
+ "rgb": {
+ "r": 255,
+ "g": 135,
+ "b": 255
+ },
+ "hsl": {
+ "h": 300,
+ "s": 100,
+ "l": 76
+ },
+ "name": "Orchid1"
+ },
+ {
+ "colorId": 214,
+ "hexString": "#ffaf00",
+ "rgb": {
+ "r": 255,
+ "g": 175,
+ "b": 0
+ },
+ "hsl": {
+ "h": 41.1764705882353,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Orange1"
+ },
+ {
+ "colorId": 215,
+ "hexString": "#ffaf5f",
+ "rgb": {
+ "r": 255,
+ "g": 175,
+ "b": 95
+ },
+ "hsl": {
+ "h": 30,
+ "s": 100,
+ "l": 68
+ },
+ "name": "SandyBrown"
+ },
+ {
+ "colorId": 216,
+ "hexString": "#ffaf87",
+ "rgb": {
+ "r": 255,
+ "g": 175,
+ "b": 135
+ },
+ "hsl": {
+ "h": 20,
+ "s": 100,
+ "l": 76
+ },
+ "name": "LightSalmon1"
+ },
+ {
+ "colorId": 217,
+ "hexString": "#ffafaf",
+ "rgb": {
+ "r": 255,
+ "g": 175,
+ "b": 175
+ },
+ "hsl": {
+ "h": 0,
+ "s": 100,
+ "l": 84
+ },
+ "name": "LightPink1"
+ },
+ {
+ "colorId": 218,
+ "hexString": "#ffafd7",
+ "rgb": {
+ "r": 255,
+ "g": 175,
+ "b": 215
+ },
+ "hsl": {
+ "h": 330,
+ "s": 100,
+ "l": 84
+ },
+ "name": "Pink1"
+ },
+ {
+ "colorId": 219,
+ "hexString": "#ffafff",
+ "rgb": {
+ "r": 255,
+ "g": 175,
+ "b": 255
+ },
+ "hsl": {
+ "h": 300,
+ "s": 100,
+ "l": 84
+ },
+ "name": "Plum1"
+ },
+ {
+ "colorId": 220,
+ "hexString": "#ffd700",
+ "rgb": {
+ "r": 255,
+ "g": 215,
+ "b": 0
+ },
+ "hsl": {
+ "h": 50.5882352941176,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Gold1"
+ },
+ {
+ "colorId": 221,
+ "hexString": "#ffd75f",
+ "rgb": {
+ "r": 255,
+ "g": 215,
+ "b": 95
+ },
+ "hsl": {
+ "h": 45,
+ "s": 100,
+ "l": 68
+ },
+ "name": "LightGoldenrod2"
+ },
+ {
+ "colorId": 222,
+ "hexString": "#ffd787",
+ "rgb": {
+ "r": 255,
+ "g": 215,
+ "b": 135
+ },
+ "hsl": {
+ "h": 40,
+ "s": 100,
+ "l": 76
+ },
+ "name": "LightGoldenrod2"
+ },
+ {
+ "colorId": 223,
+ "hexString": "#ffd7af",
+ "rgb": {
+ "r": 255,
+ "g": 215,
+ "b": 175
+ },
+ "hsl": {
+ "h": 30,
+ "s": 100,
+ "l": 84
+ },
+ "name": "NavajoWhite1"
+ },
+ {
+ "colorId": 224,
+ "hexString": "#ffd7d7",
+ "rgb": {
+ "r": 255,
+ "g": 215,
+ "b": 215
+ },
+ "hsl": {
+ "h": 0,
+ "s": 100,
+ "l": 92
+ },
+ "name": "MistyRose1"
+ },
+ {
+ "colorId": 225,
+ "hexString": "#ffd7ff",
+ "rgb": {
+ "r": 255,
+ "g": 215,
+ "b": 255
+ },
+ "hsl": {
+ "h": 300,
+ "s": 100,
+ "l": 92
+ },
+ "name": "Thistle1"
+ },
+ {
+ "colorId": 226,
+ "hexString": "#ffff00",
+ "rgb": {
+ "r": 255,
+ "g": 255,
+ "b": 0
+ },
+ "hsl": {
+ "h": 60,
+ "s": 100,
+ "l": 50
+ },
+ "name": "Yellow1"
+ },
+ {
+ "colorId": 227,
+ "hexString": "#ffff5f",
+ "rgb": {
+ "r": 255,
+ "g": 255,
+ "b": 95
+ },
+ "hsl": {
+ "h": 60,
+ "s": 100,
+ "l": 68
+ },
+ "name": "LightGoldenrod1"
+ },
+ {
+ "colorId": 228,
+ "hexString": "#ffff87",
+ "rgb": {
+ "r": 255,
+ "g": 255,
+ "b": 135
+ },
+ "hsl": {
+ "h": 60,
+ "s": 100,
+ "l": 76
+ },
+ "name": "Khaki1"
+ },
+ {
+ "colorId": 229,
+ "hexString": "#ffffaf",
+ "rgb": {
+ "r": 255,
+ "g": 255,
+ "b": 175
+ },
+ "hsl": {
+ "h": 60,
+ "s": 100,
+ "l": 84
+ },
+ "name": "Wheat1"
+ },
+ {
+ "colorId": 230,
+ "hexString": "#ffffd7",
+ "rgb": {
+ "r": 255,
+ "g": 255,
+ "b": 215
+ },
+ "hsl": {
+ "h": 60,
+ "s": 100,
+ "l": 92
+ },
+ "name": "Cornsilk1"
+ },
+ {
+ "colorId": 231,
+ "hexString": "#ffffff",
+ "rgb": {
+ "r": 255,
+ "g": 255,
+ "b": 255
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 100
+ },
+ "name": "Grey100"
+ },
+ {
+ "colorId": 232,
+ "hexString": "#080808",
+ "rgb": {
+ "r": 8,
+ "g": 8,
+ "b": 8
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 3
+ },
+ "name": "Grey3"
+ },
+ {
+ "colorId": 233,
+ "hexString": "#121212",
+ "rgb": {
+ "r": 18,
+ "g": 18,
+ "b": 18
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 7
+ },
+ "name": "Grey7"
+ },
+ {
+ "colorId": 234,
+ "hexString": "#1c1c1c",
+ "rgb": {
+ "r": 28,
+ "g": 28,
+ "b": 28
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 10
+ },
+ "name": "Grey11"
+ },
+ {
+ "colorId": 235,
+ "hexString": "#262626",
+ "rgb": {
+ "r": 38,
+ "g": 38,
+ "b": 38
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 14
+ },
+ "name": "Grey15"
+ },
+ {
+ "colorId": 236,
+ "hexString": "#303030",
+ "rgb": {
+ "r": 48,
+ "g": 48,
+ "b": 48
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 18
+ },
+ "name": "Grey19"
+ },
+ {
+ "colorId": 237,
+ "hexString": "#3a3a3a",
+ "rgb": {
+ "r": 58,
+ "g": 58,
+ "b": 58
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 22
+ },
+ "name": "Grey23"
+ },
+ {
+ "colorId": 238,
+ "hexString": "#444444",
+ "rgb": {
+ "r": 68,
+ "g": 68,
+ "b": 68
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 26
+ },
+ "name": "Grey27"
+ },
+ {
+ "colorId": 239,
+ "hexString": "#4e4e4e",
+ "rgb": {
+ "r": 78,
+ "g": 78,
+ "b": 78
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 30
+ },
+ "name": "Grey30"
+ },
+ {
+ "colorId": 240,
+ "hexString": "#585858",
+ "rgb": {
+ "r": 88,
+ "g": 88,
+ "b": 88
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 34
+ },
+ "name": "Grey35"
+ },
+ {
+ "colorId": 241,
+ "hexString": "#626262",
+ "rgb": {
+ "r": 98,
+ "g": 98,
+ "b": 98
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 37
+ },
+ "name": "Grey39"
+ },
+ {
+ "colorId": 242,
+ "hexString": "#6c6c6c",
+ "rgb": {
+ "r": 108,
+ "g": 108,
+ "b": 108
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 40
+ },
+ "name": "Grey42"
+ },
+ {
+ "colorId": 243,
+ "hexString": "#767676",
+ "rgb": {
+ "r": 118,
+ "g": 118,
+ "b": 118
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 46
+ },
+ "name": "Grey46"
+ },
+ {
+ "colorId": 244,
+ "hexString": "#808080",
+ "rgb": {
+ "r": 128,
+ "g": 128,
+ "b": 128
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 50
+ },
+ "name": "Grey50"
+ },
+ {
+ "colorId": 245,
+ "hexString": "#8a8a8a",
+ "rgb": {
+ "r": 138,
+ "g": 138,
+ "b": 138
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 54
+ },
+ "name": "Grey54"
+ },
+ {
+ "colorId": 246,
+ "hexString": "#949494",
+ "rgb": {
+ "r": 148,
+ "g": 148,
+ "b": 148
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 58
+ },
+ "name": "Grey58"
+ },
+ {
+ "colorId": 247,
+ "hexString": "#9e9e9e",
+ "rgb": {
+ "r": 158,
+ "g": 158,
+ "b": 158
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 61
+ },
+ "name": "Grey62"
+ },
+ {
+ "colorId": 248,
+ "hexString": "#a8a8a8",
+ "rgb": {
+ "r": 168,
+ "g": 168,
+ "b": 168
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 65
+ },
+ "name": "Grey66"
+ },
+ {
+ "colorId": 249,
+ "hexString": "#b2b2b2",
+ "rgb": {
+ "r": 178,
+ "g": 178,
+ "b": 178
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 69
+ },
+ "name": "Grey70"
+ },
+ {
+ "colorId": 250,
+ "hexString": "#bcbcbc",
+ "rgb": {
+ "r": 188,
+ "g": 188,
+ "b": 188
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 73
+ },
+ "name": "Grey74"
+ },
+ {
+ "colorId": 251,
+ "hexString": "#c6c6c6",
+ "rgb": {
+ "r": 198,
+ "g": 198,
+ "b": 198
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 77
+ },
+ "name": "Grey78"
+ },
+ {
+ "colorId": 252,
+ "hexString": "#d0d0d0",
+ "rgb": {
+ "r": 208,
+ "g": 208,
+ "b": 208
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 81
+ },
+ "name": "Grey82"
+ },
+ {
+ "colorId": 253,
+ "hexString": "#dadada",
+ "rgb": {
+ "r": 218,
+ "g": 218,
+ "b": 218
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 85
+ },
+ "name": "Grey85"
+ },
+ {
+ "colorId": 254,
+ "hexString": "#e4e4e4",
+ "rgb": {
+ "r": 228,
+ "g": 228,
+ "b": 228
+ },
+ "hsl": {
+ "h": 0,
+ "s": 0,
+ "l": 89
+ },
+ "name": "Grey89"
+ },
+ {
+ "colorId": 255,
+ "hexString": "#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/src/ConsoleBuffer/xterm-colors.ps1 b/src/ConsoleBuffer/xterm-colors.ps1
new file mode 100644
index 0000000..b3ea1f7
--- /dev/null
+++ b/src/ConsoleBuffer/xterm-colors.ps1
@@ -0,0 +1,11 @@
+$colorsFile = join-path $PSScriptRoot "xterm-colors.json"
+$colorData = get-content $colorsFIle | convertfrom-json
+foreach ($c in $colorData)
+{
+ $id = $c.colorId
+ $r = $c.rgb.r.ToString("x2")
+ $g = $c.rgb.g.ToString("x2")
+ $b = $c.rgb.b.ToString("x2")
+ $name = $c.name
+ write-host "new XtermColor { Id = ${id}, R = 0x$r, G = 0x$g, B = 0x$b, Name = `"${name}`" },"
+}
\ No newline at end of file
diff --git a/src/condo/MainWindow.xaml.cs b/src/condo/MainWindow.xaml.cs
index 389b2b4..a870382 100644
--- a/src/condo/MainWindow.xaml.cs
+++ b/src/condo/MainWindow.xaml.cs
@@ -53,6 +53,9 @@ private void OnLoaded(object sender, RoutedEventArgs e)
{
if (args.PropertyName == "Running" && this.console != null && this.console.Running == false)
{
+ var msg = System.Text.Encoding.UTF8.GetBytes($"\r\n[process terminated with code {this.console.ProcessExitCode}, press to exit.]");
+ this.screen.Buffer.Append(msg, msg.Length);
+
this.KeyDown += (keySender, keyArgs) =>
{
if (keyArgs.Key == System.Windows.Input.Key.Enter)
diff --git a/src/condo/Screen.cs b/src/condo/Screen.cs
index f308c4e..77e8d02 100644
--- a/src/condo/Screen.cs
+++ b/src/condo/Screen.cs
@@ -16,7 +16,7 @@ public sealed class Screen : FrameworkElement, IRenderTarget, IScrollInfo
private ConsoleBuffer.Buffer buffer;
public ConsoleBuffer.Buffer Buffer
{
- private get { return this.buffer; }
+ get { return this.buffer; }
set
{
if (this.buffer != null)
diff --git a/test/ConsoleBufferTests/SequenceParserTests.cs b/test/ConsoleBufferTests/SequenceParserTests.cs
index 0938b4c..150fcd1 100644
--- a/test/ConsoleBufferTests/SequenceParserTests.cs
+++ b/test/ConsoleBufferTests/SequenceParserTests.cs
@@ -176,6 +176,23 @@ public void SetCursorPosition(string data, int expectedX, int expectedY)
Assert.AreEqual(expectedY, cmd.PosY);
}
+ [TestMethod]
+ [DataRow("0")]
+ [DataRow("")]
+ public void SGRReset(string data)
+ {
+ var parser = this.EnsureCommandParses($"\x1b[{data}m");
+ var cmd = parser.Command as ConsoleBuffer.Commands.SetGraphicsRendition;
+ Assert.IsNotNull(cmd);
+ Assert.IsFalse(cmd.HaveForeground);
+ Assert.AreEqual(new Character.ColorInfo(), cmd.ForegroundColor);
+ Assert.IsFalse(cmd.HaveBackground);
+ Assert.AreEqual(new Character.ColorInfo(), cmd.BackgroundColor);
+ Assert.AreEqual(ConsoleBuffer.Commands.SetGraphicsRendition.FlagValue.None, cmd.Bold);
+ Assert.AreEqual(ConsoleBuffer.Commands.SetGraphicsRendition.FlagValue.None, cmd.Underline);
+ Assert.AreEqual(ConsoleBuffer.Commands.SetGraphicsRendition.FlagValue.None, cmd.Inverse);
+ }
+
private SequenceParser EnsureCommandParses(string command)
{
var parser = new SequenceParser();
diff --git a/test/ConsoleBufferTests/XtermPaletteTests.cs b/test/ConsoleBufferTests/XtermPaletteTests.cs
new file mode 100644
index 0000000..b4a0e05
--- /dev/null
+++ b/test/ConsoleBufferTests/XtermPaletteTests.cs
@@ -0,0 +1,35 @@
+namespace ConsoleBufferTests
+{
+ using System;
+ using ConsoleBuffer;
+ using Microsoft.VisualStudio.TestTools.UnitTesting;
+
+ [TestClass]
+ public class XtermPaletteTests
+ {
+ [TestMethod]
+ public void Expect256Colors()
+ {
+ var palette = new XtermPalette();
+ for (var i = 0; i < 256; ++i)
+ {
+ Assert.IsInstanceOfType(palette[i], typeof(Character.ColorInfo));
+ }
+ Assert.ThrowsException(() => palette[256]);
+ }
+
+ [TestMethod]
+ [DataRow("black", 0, 0, 0)]
+ [DataRow("WHITE", 0xff, 0xff, 0xff)]
+ [DataRow("oraNGE4", 0x87, 0x5f, 0x00)]
+ [DataRow("Purple3", 0x5f, 0x00, 0xd7)]
+ public void LookupColorByName(string name, int rValue, int gValue, int bValue)
+ {
+ var palette = new XtermPalette();
+ var colorInfo = palette[name];
+ Assert.AreEqual(rValue, colorInfo.R);
+ Assert.AreEqual(gValue, colorInfo.G);
+ Assert.AreEqual(bValue, colorInfo.B);
+ }
+ }
+}