unmagic-color 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c7be12ac8d10a2afce0fb4b18e79bd8636f7000e154a6cd55254ef0284498ca4
4
- data.tar.gz: 55be4881e50f7adad3adcd12dcb85d03c2a35bea2a26cfe6c1db16a0fe567d68
3
+ metadata.gz: 276b2cc6192a6fea7e69f4893c9989434e8101c3e9c6a88b56996eeeeb910262
4
+ data.tar.gz: cd421ccce7640490b140a74a62640ee9dbbb6060f815d770b14ac12e4b1ff991
5
5
  SHA512:
6
- metadata.gz: 9ffad3c4830a9d79c9603fde9a59fcab9714a5cbc7fa91fa2857b2665cea5f3796b7842f89627c24765d9996fd28a80562f4756f7392764ad620f512e3b4d543
7
- data.tar.gz: dbdfb73585f752f60089658c273b65a69a2189746f8379133db427038af006667589f199e6fd00eeeb6a8dda47142fd5f4aa9c25f1279d1f00864309fbfc0903
6
+ metadata.gz: 2da573372028a3d08793d01bcd9245a24fc88934085b081712934e4606a2d60ff03d8c8f6f94b06abb2fb6817e1b5b0acdf8ac2fd332e1d9f9b2923a90221d5c
7
+ data.tar.gz: 8a17575b7f89b7f9c29d613208972242bd851e42b25659a7533a4c6ed156ce14f9f9396148aa6e171ad5a8e0159395d8e9f9e28b881fa000bbdeb6492cc40388
data/CHANGELOG.md ADDED
@@ -0,0 +1,86 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.2.1] - 2026-01-05
11
+
12
+ ### Added
13
+ - `to_hex` method for HSL colors (converts via RGB)
14
+ - `to_hex` method for OKLCH colors (converts via RGB)
15
+
16
+ ## [0.2.0] - 2026-01-05
17
+
18
+ ### Added
19
+
20
+ #### Color Harmonies
21
+ - `complementary` - returns the opposite color on the color wheel (180° shift)
22
+ - `analogous(angle: 30)` - returns two adjacent colors at ±angle degrees
23
+ - `triadic` - returns two colors equally spaced at +120° and +240°
24
+ - `split_complementary(angle: 30)` - returns two colors flanking the complement
25
+ - `tetradic_square` - returns three colors at +90°, +180°, +270°
26
+ - `tetradic_rectangle(angle: 60)` - returns three colors forming a rectangle on the wheel
27
+
28
+ #### Color Variations
29
+ - `monochromatic(steps: 5)` - generates colors with varying lightness
30
+ - `shades(steps: 5, amount: 0.5)` - generates progressively darker colors
31
+ - `tints(steps: 5, amount: 0.5)` - generates progressively lighter colors
32
+ - `tones(steps: 5, amount: 0.5)` - generates progressively desaturated colors
33
+
34
+ #### Gradients
35
+ - `Unmagic::Color::Gradient.linear` - create gradients with automatic color space detection
36
+ - `Unmagic::Color::RGB::Gradient::Linear` - RGB color space gradients
37
+ - `Unmagic::Color::HSL::Gradient::Linear` - HSL color space gradients (smoother hue transitions)
38
+ - `Unmagic::Color::OKLCH::Gradient::Linear` - OKLCH gradients (perceptually uniform)
39
+ - Support for gradient directions: keywords (`to right`), angles (`45deg`), and from/to syntax
40
+ - 2D gradient rasterization with `width` and `height` parameters
41
+ - Explicit color stop positions (like CSS `linear-gradient`)
42
+
43
+ #### Alpha Channel
44
+ - Alpha channel support for RGB, HSL, and OKLCH colors
45
+ - Parse alpha from CSS color functions: `rgba()`, `hsla()`, `oklch()` with alpha
46
+ - `Alpha` class with CSS ratio output (`to_css` returns 0.0-1.0)
47
+
48
+ #### ANSI Terminal Colors
49
+ - ANSI escape code parsing (3/4-bit, 256-color, and 24-bit true color)
50
+ - `to_ansi` method with `mode:` parameter (`:truecolor`, `:palette256`, `:palette16`)
51
+ - Truecolor (24-bit) output by default for accurate color reproduction
52
+ - Support for both foreground and background layers
53
+ - Color swatches in `pretty_print` output
54
+
55
+ #### Console Tools
56
+ - `Unmagic::Color::Console::Card` - render color profile cards with harmonies and variations
57
+ - `Unmagic::Color::Console::Banner` - gradient ASCII art banner
58
+ - `Unmagic::Color::Console::Help` - syntax-highlighted help text
59
+ - `Unmagic::Color::Console::Highlighter` - Ruby syntax highlighting with customizable colors
60
+
61
+ #### Other
62
+ - Full X11 color database (658 colors) with lazy loading
63
+ - JSON storage for color databases (faster loading, ~54KB for X11)
64
+ - `build` class method with positional arguments: `RGB.build(255, 87, 51)`
65
+ - Improved percentage parsing with fraction notation support (`1/2` = 50%)
66
+
67
+ ### Changed
68
+ - Default ANSI output mode changed from `:palette16` to `:truecolor` for better color accuracy
69
+ - Color databases are now stored as JSON for faster parsing
70
+
71
+ ## [0.1.0] - 2026-01-01
72
+
73
+ ### Added
74
+ - Initial release
75
+ - RGB, HSL, and OKLCH color space support
76
+ - Color parsing from hex, CSS functions, and X11 named colors
77
+ - Color manipulation (lighten, darken, blend)
78
+ - Color space conversions
79
+ - Deterministic color generation from strings
80
+ - Luminance calculations and light/dark detection
81
+ - HSL color progressions for palette generation
82
+ - Multiple hash functions for string-to-color derivation
83
+
84
+ [0.2.1]: https://github.com/unreasonable-magic/unmagic-color/releases/tag/v0.2.1
85
+ [0.2.0]: https://github.com/unreasonable-magic/unmagic-color/releases/tag/v0.2.0
86
+ [0.1.0]: https://github.com/unreasonable-magic/unmagic-color/releases/tag/v0.1.0
data/README.md CHANGED
@@ -1,4 +1,6 @@
1
- # Unmagic Color
1
+ # unmagic-color
2
+
3
+ ![Screenshot](docs/screenshot.png)
2
4
 
3
5
  A comprehensive Ruby color manipulation library with support for RGB, HSL, and OKLCH color spaces. Parse, convert, and manipulate colors with an intuitive API.
4
6
 
@@ -22,38 +24,6 @@ Or install it yourself as:
22
24
  gem install unmagic-color
23
25
  ```
24
26
 
25
- ## Features
26
-
27
- - **Multiple Color Spaces**: RGB, HSL, and OKLCH support
28
- - **Flexible Parsing**: Parse colors from hex, CSS format strings, named colors, or component values
29
- - **Named Colors**: Support for [X11 color names](https://en.wikipedia.org/wiki/X11_color_names) (red, blue, goldenrod, etc.)
30
- - **Color Conversions**: Seamlessly convert between color spaces
31
- - **Color Manipulation**: Lighten, darken, and blend colors
32
- - **Deterministic Generation**: Generate consistent colors from strings or seeds
33
- - **Luminance Calculation**: Determine if colors are light or dark
34
- - **Color Progressions**: Create color scales and palettes
35
-
36
- ## Quick Start
37
-
38
- ```ruby
39
- require 'unmagic/color'
40
-
41
- # Parse a color
42
- color = Unmagic::Color.parse("#FF5733")
43
-
44
- # Convert to different color spaces
45
- hsl = color.to_hsl
46
- oklch = color.to_oklch
47
-
48
- # Manipulate colors
49
- lighter = color.lighten(0.2)
50
- darker = color.darken(0.1)
51
-
52
- # Check luminance
53
- color.light? # => false
54
- color.dark? # => true
55
- ```
56
-
57
27
  ## Usage Examples
58
28
 
59
29
  ### Parsing Colors
@@ -75,15 +45,71 @@ color = Unmagic::Color::HSL.new(hue: 9, saturation: 100, lightness: 60)
75
45
  color = Unmagic::Color.parse("oklch(0.65 0.15 30)")
76
46
  color = Unmagic::Color::OKLCH.new(lightness: 0.65, chroma: 0.15, hue: 30)
77
47
 
78
- # From X11 named colors (https://en.wikipedia.org/wiki/X11_color_names)
48
+ # From named colors (X11 is the default and CSS/W3C databases)
79
49
  color = Unmagic::Color.parse("goldenrod")
80
50
  color = Unmagic::Color["red"]
81
51
 
52
+ # Pass db name as prefix for specific lookup:
53
+ color = Unmagic::Color.parse("css:red")
54
+ color = Unmagic::Color.parse("w3c:gray") # w3c is alias for css
55
+ color = Unmagic::Color.parse("x11:red")
56
+
82
57
  # Named colors are case-insensitive and whitespace-tolerant
83
58
  color = Unmagic::Color.parse("Golden Rod") # Same as "goldenrod"
84
59
  color = Unmagic::Color.parse("DARK SLATE BLUE") # Same as "darkslateblue"
85
60
  ```
86
61
 
62
+ **Named Color Databases:**
63
+ - **X11**: 658 colors, ~54 KB in memory (lazy-loaded)
64
+ - **CSS/W3C**: 148 colors, ~13 KB in memory (lazy-loaded)
65
+
66
+ Databases are only loaded into memory when first accessed, with sub-millisecond load times.
67
+
68
+ ```ruby
69
+ # From ANSI escape codes
70
+ color = Unmagic::Color.parse("31") # Red (standard ANSI)
71
+ color = Unmagic::Color.parse("38;5;196") # Red (256-color palette)
72
+ color = Unmagic::Color.parse("38;2;255;0;0") # Red (24-bit true color)
73
+ ```
74
+
75
+ ### Terminal Colors (ANSI)
76
+
77
+ Generate ANSI escape codes for colorful terminal output:
78
+
79
+ ```ruby
80
+ # Convert any color to ANSI
81
+ color = Unmagic::Color.parse("goldenrod")
82
+ puts "\x1b[#{color.to_ansi}mHello World!\x1b[0m"
83
+
84
+ # Foreground colors (default)
85
+ red = Unmagic::Color.parse("#ff0000")
86
+ puts "\x1b[#{red.to_ansi}mRed text\x1b[0m"
87
+
88
+ # Background colors
89
+ blue = Unmagic::Color.parse("#0000ff")
90
+ puts "\x1b[#{blue.to_ansi(layer: :background)}mBlue background\x1b[0m"
91
+
92
+ # Default mode is 24-bit true color
93
+ Unmagic::Color.parse("red").to_ansi # => "38;2;255;0;0"
94
+ Unmagic::Color.parse("css:green").to_ansi # => "38;2;0;128;0"
95
+
96
+ # Named colors can use standard codes with palette16 mode
97
+ Unmagic::Color.parse("red").to_ansi(mode: :palette16) # => "91"
98
+ Unmagic::Color.parse("green").to_ansi(mode: :palette16) # => "92"
99
+
100
+ # Custom colors also use 24-bit true color by default
101
+ Unmagic::Color.parse("#6496c8").to_ansi # => "38;2;100;150;200"
102
+
103
+ # Parse ANSI codes back to colors
104
+ color = Unmagic::Color.parse("38;2;100;150;200")
105
+ color.to_hex # => "#6496c8"
106
+ ```
107
+
108
+ **Supported ANSI formats:**
109
+ - **3/4-bit colors**: `30-37` (foreground), `40-47` (background), `90-97` (bright foreground), `100-107` (bright background)
110
+ - **256-color palette**: `38;5;N` (foreground), `48;5;N` (background) where N is 0-255
111
+ - **24-bit true color**: `38;2;R;G;B` (foreground), `48;2;R;G;B` (background)
112
+
87
113
  ### Converting Between Color Spaces
88
114
 
89
115
  ```ruby
@@ -91,7 +117,7 @@ rgb = Unmagic::Color.parse("#FF5733")
91
117
 
92
118
  # Convert to HSL
93
119
  hsl = rgb.to_hsl
94
- puts hsl.hue.to_f # => 9.0
120
+ puts hsl.hue.to_f # => 11.0
95
121
  puts hsl.saturation.to_f # => 100.0
96
122
  puts hsl.lightness.to_f # => 60.0
97
123
 
@@ -100,7 +126,7 @@ oklch = rgb.to_oklch
100
126
 
101
127
  # Convert back to hex
102
128
  hex = hsl.to_rgb.to_hex
103
- puts hex # => "#FF5733"
129
+ puts hex # => "#ff5833"
104
130
  ```
105
131
 
106
132
  ### Color Manipulation
@@ -125,6 +151,68 @@ else
125
151
  end
126
152
  ```
127
153
 
154
+ ### Color Harmonies
155
+
156
+ Generate color palettes based on color theory relationships:
157
+
158
+ ```ruby
159
+ color = Unmagic::Color.parse("#FF5733")
160
+
161
+ # Complementary - opposite on the color wheel (180°)
162
+ color.complementary.to_hex # => "#33daff"
163
+
164
+ # Analogous - adjacent colors (default ±30°)
165
+ color.analogous.map(&:to_hex) # => ["#ff3374", "#ffbe33"]
166
+
167
+ # Triadic - three colors equally spaced (120° apart)
168
+ color.triadic.map(&:to_hex) # => ["#33ff58", "#5833ff"]
169
+
170
+ # Split Complementary - complement's neighbors (default 180° ±30°)
171
+ color.split_complementary.map(&:to_hex) # => ["#33ffbe", "#3374ff"]
172
+
173
+ # Tetradic Square - four colors equally spaced (90° apart)
174
+ color.tetradic_square.map(&:to_hex) # => ["#74ff33", "#33daff", "#be33ff"]
175
+
176
+ # Tetradic Rectangle - two complementary pairs (default 60°)
177
+ color.tetradic_rectangle.map(&:to_hex) # => ["#daff33", "#33daff", "#5833ff"]
178
+ ```
179
+
180
+ ### Color Variations
181
+
182
+ ![Variations](docs/variations.png)
183
+
184
+ Generate shades, tints, tones, and monochromatic palettes:
185
+
186
+ ```ruby
187
+ color = Unmagic::Color.parse("#3366CC")
188
+
189
+ # Monochromatic - same hue with varying lightness
190
+ color.monochromatic(steps: 5).map(&:to_hex) # => ["#0f1f3d", "#214285", "#3366cc", "#7a9cde", "#c2d1f0"]
191
+
192
+ # Shades - progressively darker (mixed with black)
193
+ shades = color.shades(steps: 5)
194
+ shades = color.shades(steps: 5, amount: 0.8) # Darker range
195
+
196
+ # Tints - progressively lighter (mixed with white)
197
+ tints = color.tints(steps: 5)
198
+ tints = color.tints(steps: 5, amount: 0.8) # Lighter range
199
+
200
+ # Tones - progressively desaturated (mixed with gray)
201
+ tones = color.tones(steps: 5)
202
+ tones = color.tones(steps: 5, amount: 0.8) # More muted range
203
+ ```
204
+
205
+ All harmony and variation methods preserve the original color space:
206
+
207
+ ```ruby
208
+ hsl = Unmagic::Color::HSL.new(hue: 200, saturation: 80, lightness: 50)
209
+ hsl.complementary.to_hex # => "#e65e19"
210
+ hsl.shades(steps: 3).map(&:to_hex) # => ["#1587bf", "#116c99", "#0d5173"]
211
+
212
+ rgb = Unmagic::Color.parse("#FF5733")
213
+ rgb.analogous.map(&:to_hex) # => ["#ff3374", "#ffbe33"]
214
+ ```
215
+
128
216
  ### HSL-Specific Features
129
217
 
130
218
  ```ruby
@@ -136,11 +224,8 @@ muted = hsl.desaturate(0.3)
136
224
  shifted = hsl.adjust_hue(30)
137
225
 
138
226
  # Create color progressions
139
- palette = hsl.progression(
140
- steps: 5,
141
- lightness: [30, 50, 70, 85, 95]
142
- )
143
- # => Array of 5 HSL colors with varying lightness
227
+ hsl.progression(steps: 5, lightness: [30, 50, 70, 85, 95]).map(&:to_hex)
228
+ # => ["#175e82", "#269dd9", "#7dc4e8", "#bee2f4", "#e9f5fb"]
144
229
  ```
145
230
 
146
231
  ### Generating Colors from Strings
@@ -231,6 +316,81 @@ color.dark? # => true
231
316
  text_color = color.light? ? "#000000" : "#FFFFFF"
232
317
  ```
233
318
 
319
+ ### Gradients
320
+
321
+ Create smooth color transitions with gradients in RGB, HSL, or OKLCH color spaces:
322
+
323
+ ```ruby
324
+ # Simple gradient - auto-detects color space
325
+ gradient = Unmagic::Color::Gradient.linear(["#FF0000", "#0000FF"])
326
+ bitmap = gradient.rasterize(width: 10)
327
+
328
+ # Access the colors
329
+ colors = bitmap.pixels[0] # Array of 10 colors from red to blue
330
+ colors.map(&:to_hex)
331
+ # => ["#ff0000", "#e60019", "#cc0033", ..., "#0000ff"]
332
+
333
+ # Create gradients with multiple stops
334
+ gradient = Unmagic::Color::Gradient.linear([
335
+ "#FF0000", # Red at start (0%)
336
+ "#00FF00", # Green at middle (50%)
337
+ "#0000FF" # Blue at end (100%)
338
+ ])
339
+ bitmap = gradient.rasterize(width: 20)
340
+
341
+ # Use explicit positions (like CSS linear-gradient)
342
+ gradient = Unmagic::Color::Gradient.linear([
343
+ ["#FF0000", 0.0], # Red at start
344
+ ["#FFFF00", 0.3], # Yellow at 30%
345
+ "#00FF00", # Green auto-balances at 65%
346
+ ["#0000FF", 1.0] # Blue at end
347
+ ])
348
+
349
+ # Specify gradient direction
350
+ gradient = Unmagic::Color::Gradient.linear(
351
+ ["#FF0000", "#0000FF"],
352
+ direction: "to right"
353
+ )
354
+
355
+ # Use angle directions
356
+ gradient = Unmagic::Color::Gradient.linear(
357
+ ["#FF0000", "#0000FF"],
358
+ direction: "45deg" # or just 45
359
+ )
360
+
361
+ # 2D gradients with width and height
362
+ gradient = Unmagic::Color::Gradient.linear(
363
+ ["#FF0000", "#0000FF"],
364
+ direction: "to bottom right"
365
+ )
366
+ bitmap = gradient.rasterize(width: 100, height: 100)
367
+
368
+ # Access individual pixels
369
+ color = bitmap.at(50, 50) # Get color at x=50, y=50
370
+
371
+ # Choose color space for different effects
372
+ # RGB gradients - direct color component interpolation
373
+ rgb_gradient = Unmagic::Color::RGB::Gradient::Linear.build(["#FF0000", "#0000FF"])
374
+
375
+ # HSL gradients - smoother transitions through the color wheel
376
+ hsl_gradient = Unmagic::Color::HSL::Gradient::Linear.build([
377
+ "hsl(0, 100%, 50%)", # Red
378
+ "hsl(240, 100%, 50%)" # Blue
379
+ ])
380
+
381
+ # OKLCH gradients - perceptually uniform transitions
382
+ oklch_gradient = Unmagic::Color::OKLCH::Gradient::Linear.build([
383
+ "oklch(0.5 0.15 30)", # Orange
384
+ "oklch(0.7 0.15 240)" # Blue
385
+ ])
386
+ ```
387
+
388
+ **Supported direction formats:**
389
+ - Keywords: `"to top"`, `"to right"`, `"to bottom left"`, etc.
390
+ - From/to: `"from left to right"`, `"from bottom to top"`
391
+ - Angles: `"45deg"`, `"90deg"`, or numeric values like `45`, `90`
392
+ - Direction objects: `Unmagic::Color::Units::Degrees::Direction::LEFT_TO_RIGHT`
393
+
234
394
  ## Color Spaces
235
395
 
236
396
  ### RGB (Red, Green, Blue)
data/data/css.jsonc ADDED
@@ -0,0 +1,150 @@
1
+ {
2
+ "black": 0, // #000000
3
+ "silver": 12632256, // #c0c0c0
4
+ "gray": 8421504, // #808080
5
+ "white": 16777215, // #ffffff
6
+ "maroon": 8388608, // #800000
7
+ "red": 16711680, // #ff0000
8
+ "purple": 8388736, // #800080
9
+ "fuchsia": 16711935, // #ff00ff
10
+ "green": 32768, // #008000
11
+ "lime": 65280, // #00ff00
12
+ "olive": 8421376, // #808000
13
+ "yellow": 16776960, // #ffff00
14
+ "navy": 128, // #000080
15
+ "blue": 255, // #0000ff
16
+ "teal": 32896, // #008080
17
+ "aqua": 65535, // #00ffff
18
+ "aliceblue": 15792383, // #f0f8ff
19
+ "antiquewhite": 16444375, // #faebd7
20
+ "aquamarine": 8388564, // #7fffd4
21
+ "azure": 15794175, // #f0ffff
22
+ "beige": 16119260, // #f5f5dc
23
+ "bisque": 16770244, // #ffe4c4
24
+ "blanchedalmond": 16772045, // #ffebcd
25
+ "blueviolet": 9055202, // #8a2be2
26
+ "brown": 10824234, // #a52a2a
27
+ "burlywood": 14596231, // #deb887
28
+ "cadetblue": 6266528, // #5f9ea0
29
+ "chartreuse": 8388352, // #7fff00
30
+ "chocolate": 13789470, // #d2691e
31
+ "coral": 16744272, // #ff7f50
32
+ "cornflowerblue": 6591981, // #6495ed
33
+ "cornsilk": 16775388, // #fff8dc
34
+ "crimson": 14423100, // #dc143c
35
+ "cyan": 65535, // #00ffff
36
+ "darkblue": 139, // #00008b
37
+ "darkcyan": 35723, // #008b8b
38
+ "darkgoldenrod": 12092939, // #b8860b
39
+ "darkgray": 11119017, // #a9a9a9
40
+ "darkgreen": 25600, // #006400
41
+ "darkgrey": 11119017, // #a9a9a9
42
+ "darkkhaki": 12433259, // #bdb76b
43
+ "darkmagenta": 9109643, // #8b008b
44
+ "darkolivegreen": 5597999, // #556b2f
45
+ "darkorange": 16747520, // #ff8c00
46
+ "darkorchid": 10040012, // #9932cc
47
+ "darkred": 9109504, // #8b0000
48
+ "darksalmon": 15308410, // #e9967a
49
+ "darkseagreen": 9419919, // #8fbc8f
50
+ "darkslateblue": 4734347, // #483d8b
51
+ "darkslategray": 3100495, // #2f4f4f
52
+ "darkslategrey": 3100495, // #2f4f4f
53
+ "darkturquoise": 52945, // #00ced1
54
+ "darkviolet": 9699539, // #9400d3
55
+ "deeppink": 16716947, // #ff1493
56
+ "deepskyblue": 49151, // #00bfff
57
+ "dimgray": 6908265, // #696969
58
+ "dimgrey": 6908265, // #696969
59
+ "dodgerblue": 2003199, // #1e90ff
60
+ "firebrick": 11674146, // #b22222
61
+ "floralwhite": 16775920, // #fffaf0
62
+ "forestgreen": 2263842, // #228b22
63
+ "gainsboro": 14474460, // #dcdcdc
64
+ "ghostwhite": 16316671, // #f8f8ff
65
+ "gold": 16766720, // #ffd700
66
+ "goldenrod": 14329120, // #daa520
67
+ "greenyellow": 11403055, // #adff2f
68
+ "grey": 8421504, // #808080
69
+ "honeydew": 15794160, // #f0fff0
70
+ "hotpink": 16738740, // #ff69b4
71
+ "indianred": 13458524, // #cd5c5c
72
+ "indigo": 4915330, // #4b0082
73
+ "ivory": 16777200, // #fffff0
74
+ "khaki": 15787660, // #f0e68c
75
+ "lavender": 15132410, // #e6e6fa
76
+ "lavenderblush": 16773365, // #fff0f5
77
+ "lawngreen": 8190976, // #7cfc00
78
+ "lemonchiffon": 16775885, // #fffacd
79
+ "lightblue": 11393254, // #add8e6
80
+ "lightcoral": 15761536, // #f08080
81
+ "lightcyan": 14745599, // #e0ffff
82
+ "lightgoldenrodyellow": 16448210, // #fafad2
83
+ "lightgray": 13882323, // #d3d3d3
84
+ "lightgreen": 9498256, // #90ee90
85
+ "lightgrey": 13882323, // #d3d3d3
86
+ "lightpink": 16758465, // #ffb6c1
87
+ "lightsalmon": 16752762, // #ffa07a
88
+ "lightseagreen": 2142890, // #20b2aa
89
+ "lightskyblue": 8900346, // #87cefa
90
+ "lightslategray": 7833753, // #778899
91
+ "lightslategrey": 7833753, // #778899
92
+ "lightsteelblue": 11584734, // #b0c4de
93
+ "lightyellow": 16777184, // #ffffe0
94
+ "limegreen": 3329330, // #32cd32
95
+ "linen": 16445670, // #faf0e6
96
+ "magenta": 16711935, // #ff00ff
97
+ "mediumaquamarine": 6737322, // #66cdaa
98
+ "mediumblue": 205, // #0000cd
99
+ "mediumorchid": 12211667, // #ba55d3
100
+ "mediumpurple": 9662683, // #9370db
101
+ "mediumseagreen": 3978097, // #3cb371
102
+ "mediumslateblue": 8087790, // #7b68ee
103
+ "mediumspringgreen": 64154, // #00fa9a
104
+ "mediumturquoise": 4772300, // #48d1cc
105
+ "mediumvioletred": 13047173, // #c71585
106
+ "midnightblue": 1644912, // #191970
107
+ "mintcream": 16121850, // #f5fffa
108
+ "mistyrose": 16770273, // #ffe4e1
109
+ "moccasin": 16770229, // #ffe4b5
110
+ "navajowhite": 16768685, // #ffdead
111
+ "oldlace": 16643558, // #fdf5e6
112
+ "olivedrab": 7048739, // #6b8e23
113
+ "orange": 16753920, // #ffa500
114
+ "orangered": 16729344, // #ff4500
115
+ "orchid": 14315734, // #da70d6
116
+ "palegoldenrod": 15657130, // #eee8aa
117
+ "palegreen": 10025880, // #98fb98
118
+ "paleturquoise": 11529966, // #afeeee
119
+ "palevioletred": 14381203, // #db7093
120
+ "papayawhip": 16773077, // #ffefd5
121
+ "peachpuff": 16767673, // #ffdab9
122
+ "peru": 13468991, // #cd853f
123
+ "pink": 16761035, // #ffc0cb
124
+ "plum": 14524637, // #dda0dd
125
+ "powderblue": 11591910, // #b0e0e6
126
+ "rebeccapurple": 6697881, // #663399
127
+ "rosybrown": 12357519, // #bc8f8f
128
+ "royalblue": 4286945, // #4169e1
129
+ "saddlebrown": 9127187, // #8b4513
130
+ "salmon": 16416882, // #fa8072
131
+ "sandybrown": 16032864, // #f4a460
132
+ "seagreen": 3050327, // #2e8b57
133
+ "seashell": 16774638, // #fff5ee
134
+ "sienna": 10506797, // #a0522d
135
+ "skyblue": 8900331, // #87ceeb
136
+ "slateblue": 6970061, // #6a5acd
137
+ "slategray": 7372944, // #708090
138
+ "slategrey": 7372944, // #708090
139
+ "snow": 16775930, // #fffafa
140
+ "springgreen": 65407, // #00ff7f
141
+ "steelblue": 4620980, // #4682b4
142
+ "tan": 13808780, // #d2b48c
143
+ "thistle": 14204888, // #d8bfd8
144
+ "tomato": 16737095, // #ff6347
145
+ "turquoise": 4251856, // #40e0d0
146
+ "violet": 15631086, // #ee82ee
147
+ "wheat": 16113331, // #f5deb3
148
+ "whitesmoke": 16119285, // #f5f5f5
149
+ "yellowgreen": 10145074 // #9acd32
150
+ }