abachrome 0.1.0 → 0.1.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 +4 -4
- data/.envrc +3 -0
- data/README.md +10 -0
- data/Rakefile +12 -0
- data/devenv.lock +88 -17
- data/devenv.nix +2 -1
- data/devenv.yaml +5 -12
- data/lib/abachrome/abc_decimal.rb +202 -8
- data/lib/abachrome/color.rb +77 -2
- data/lib/abachrome/color_mixins/blend.rb +53 -2
- data/lib/abachrome/color_mixins/lighten.rb +49 -2
- data/lib/abachrome/color_mixins/to_colorspace.rb +67 -2
- data/lib/abachrome/color_mixins/to_lrgb.rb +70 -2
- data/lib/abachrome/color_mixins/to_oklab.rb +67 -2
- data/lib/abachrome/color_mixins/to_oklch.rb +60 -2
- data/lib/abachrome/color_mixins/to_srgb.rb +77 -2
- data/lib/abachrome/color_models/hsv.rb +25 -2
- data/lib/abachrome/color_models/oklab.rb +19 -2
- data/lib/abachrome/color_models/oklch.rb +42 -2
- data/lib/abachrome/color_models/rgb.rb +28 -2
- data/lib/abachrome/color_space.rb +76 -2
- data/lib/abachrome/converter.rb +57 -3
- data/lib/abachrome/converters/base.rb +69 -2
- data/lib/abachrome/converters/lrgb_to_oklab.rb +28 -2
- data/lib/abachrome/converters/lrgb_to_srgb.rb +27 -2
- data/lib/abachrome/converters/oklab_to_lrgb.rb +34 -2
- data/lib/abachrome/converters/oklab_to_oklch.rb +31 -2
- data/lib/abachrome/converters/oklab_to_srgb.rb +27 -2
- data/lib/abachrome/converters/oklch_to_lrgb.rb +25 -2
- data/lib/abachrome/converters/oklch_to_oklab.rb +27 -2
- data/lib/abachrome/converters/oklch_to_srgb.rb +26 -2
- data/lib/abachrome/converters/srgb_to_lrgb.rb +26 -2
- data/lib/abachrome/converters/srgb_to_oklab.rb +28 -2
- data/lib/abachrome/converters/srgb_to_oklch.rb +27 -2
- data/lib/abachrome/gamut/base.rb +2 -2
- data/lib/abachrome/gamut/p3.rb +2 -2
- data/lib/abachrome/gamut/rec2020.rb +2 -2
- data/lib/abachrome/gamut/srgb.rb +20 -2
- data/lib/abachrome/illuminants/base.rb +2 -2
- data/lib/abachrome/illuminants/d50.rb +2 -2
- data/lib/abachrome/illuminants/d55.rb +2 -2
- data/lib/abachrome/illuminants/d65.rb +2 -2
- data/lib/abachrome/illuminants/d75.rb +2 -2
- data/lib/abachrome/named/css.rb +149 -158
- data/lib/abachrome/outputs/css.rb +2 -2
- data/lib/abachrome/palette.rb +112 -2
- data/lib/abachrome/palette_mixins/interpolate.rb +20 -2
- data/lib/abachrome/palette_mixins/resample.rb +2 -2
- data/lib/abachrome/palette_mixins/stretch_luminance.rb +2 -2
- data/lib/abachrome/parsers/hex.rb +2 -2
- data/lib/abachrome/to_abcd.rb +10 -2
- data/lib/abachrome/version.rb +2 -2
- data/lib/abachrome.rb +78 -2
- data/logo.png +0 -0
- data/logo.webp +0 -0
- metadata +15 -67
data/lib/abachrome/gamut/srgb.rb
CHANGED
@@ -1,4 +1,22 @@
|
|
1
|
-
#
|
1
|
+
# Abachrome::Gamut::SRGB - sRGB color gamut definition and validation
|
2
|
+
#
|
3
|
+
# This module defines the sRGB color gamut within the Abachrome color manipulation library.
|
4
|
+
# The sRGB gamut represents the range of colors that can be displayed on standard monitors
|
5
|
+
# and is the default color space for web content and most consumer displays. It uses the
|
6
|
+
# D65 white point and specific primary color coordinates that define the boundaries of
|
7
|
+
# reproducible colors in the sRGB color space.
|
8
|
+
#
|
9
|
+
# Key features:
|
10
|
+
# - Defines sRGB primary color coordinates for red, green, and blue
|
11
|
+
# - Uses D65 illuminant as the white point reference for proper color reproduction
|
12
|
+
# - Provides gamut boundary validation to ensure colors fall within displayable ranges
|
13
|
+
# - Implements color containment checking for RGB coordinate validation
|
14
|
+
# - Automatically registers with the global gamut registry for system-wide access
|
15
|
+
# - Serves as the foundation for sRGB color space conversions and display output
|
16
|
+
#
|
17
|
+
# The sRGB gamut is essential for ensuring colors are properly represented on standard
|
18
|
+
# displays and provides the color boundary definitions needed for gamut mapping operations
|
19
|
+
# when converting between different color spaces or preparing colors for web and print output.
|
2
20
|
|
3
21
|
require_relative "base"
|
4
22
|
|
@@ -24,4 +42,4 @@ module Abachrome
|
|
24
42
|
|
25
43
|
register(SRGB.new)
|
26
44
|
end
|
27
|
-
end
|
45
|
+
end
|
data/lib/abachrome/named/css.rb
CHANGED
@@ -1,164 +1,155 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Colors courtesy of w3c:
|
4
|
-
# https://www.w3.org/wiki/CSS/Properties/color/keywords
|
5
1
|
#
|
2
|
+
|
6
3
|
module Abachrome
|
7
4
|
module Named
|
8
5
|
module CSS
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
"yellowgreen" => [154, 205, 50]
|
157
|
-
}.freeze
|
158
|
-
|
159
|
-
def method_missing(name, *args, &block)
|
160
|
-
ColorNames[name] || super
|
161
|
-
end
|
6
|
+
def self.aliceblue; [240, 248, 255] end
|
7
|
+
def self.antiquewhite; [250, 235, 215] end
|
8
|
+
def self.aqua; [0, 255, 255] end
|
9
|
+
def self.aquamarine; [127, 255, 212] end
|
10
|
+
def self.azure; [240, 255, 255] end
|
11
|
+
def self.beige; [245, 245, 220] end
|
12
|
+
def self.bisque; [255, 228, 196] end
|
13
|
+
def self.black; [0, 0, 0] end
|
14
|
+
def self.blanchedalmond; [255, 235, 205] end
|
15
|
+
def self.blue; [0, 0, 255] end
|
16
|
+
def self.blueviolet; [138, 43, 226] end
|
17
|
+
def self.brown; [165, 42, 42] end
|
18
|
+
def self.burlywood; [222, 184, 135] end
|
19
|
+
def self.cadetblue; [95, 158, 160] end
|
20
|
+
def self.chartreuse; [127, 255, 0] end
|
21
|
+
def self.chocolate; [210, 105, 30] end
|
22
|
+
def self.coral; [255, 127, 80] end
|
23
|
+
def self.cornflowerblue; [100, 149, 237] end
|
24
|
+
def self.cornsilk; [255, 248, 220] end
|
25
|
+
def self.crimson; [220, 20, 60] end
|
26
|
+
def self.cyan; [0, 255, 255] end
|
27
|
+
def self.darkblue; [0, 0, 139] end
|
28
|
+
def self.darkcyan; [0, 139, 139] end
|
29
|
+
def self.darkgoldenrod; [184, 134, 11] end
|
30
|
+
def self.darkgray; [169, 169, 169] end
|
31
|
+
def self.darkgreen; [0, 100, 0] end
|
32
|
+
def self.darkgrey; [169, 169, 169] end
|
33
|
+
def self.darkkhaki; [189, 183, 107] end
|
34
|
+
def self.darkmagenta; [139, 0, 139] end
|
35
|
+
def self.darkolivegreen; [85, 107, 47] end
|
36
|
+
def self.darkorange; [255, 140, 0] end
|
37
|
+
def self.darkorchid; [153, 50, 204] end
|
38
|
+
def self.darkred; [139, 0, 0] end
|
39
|
+
def self.darksalmon; [233, 150, 122] end
|
40
|
+
def self.darkseagreen; [143, 188, 143] end
|
41
|
+
def self.darkslateblue; [72, 61, 139] end
|
42
|
+
def self.darkslategray; [47, 79, 79] end
|
43
|
+
def self.darkslategrey; [47, 79, 79] end
|
44
|
+
def self.darkturquoise; [0, 206, 209] end
|
45
|
+
def self.darkviolet; [148, 0, 211] end
|
46
|
+
def self.deeppink; [255, 20, 147] end
|
47
|
+
def self.deepskyblue; [0, 191, 255] end
|
48
|
+
def self.dimgray; [105, 105, 105] end
|
49
|
+
def self.dimgrey; [105, 105, 105] end
|
50
|
+
def self.dodgerblue; [30, 144, 255] end
|
51
|
+
def self.firebrick; [178, 34, 34] end
|
52
|
+
def self.floralwhite; [255, 250, 240] end
|
53
|
+
def self.forestgreen; [34, 139, 34] end
|
54
|
+
def self.fuchsia; [255, 0, 255] end
|
55
|
+
def self.gainsboro; [220, 220, 220] end
|
56
|
+
def self.ghostwhite; [248, 248, 255] end
|
57
|
+
def self.gold; [255, 215, 0] end
|
58
|
+
def self.goldenrod; [218, 165, 32] end
|
59
|
+
def self.gray; [128, 128, 128] end
|
60
|
+
def self.green; [0, 128, 0] end
|
61
|
+
def self.greenyellow; [173, 255, 47] end
|
62
|
+
def self.grey; [128, 128, 128] end
|
63
|
+
def self.honeydew; [240, 255, 240] end
|
64
|
+
def self.hotpink; [255, 105, 180] end
|
65
|
+
def self.indianred; [205, 92, 92] end
|
66
|
+
def self.indigo; [75, 0, 130] end
|
67
|
+
def self.ivory; [255, 255, 240] end
|
68
|
+
def self.khaki; [240, 230, 140] end
|
69
|
+
def self.lavender; [230, 230, 250] end
|
70
|
+
def self.lavenderblush; [255, 240, 245] end
|
71
|
+
def self.lawngreen; [124, 252, 0] end
|
72
|
+
def self.lemonchiffon; [255, 250, 205] end
|
73
|
+
def self.lightblue; [173, 216, 230] end
|
74
|
+
def self.lightcoral; [240, 128, 128] end
|
75
|
+
def self.lightcyan; [224, 255, 255] end
|
76
|
+
def self.lightgoldenrodyellow; [250, 250, 210] end
|
77
|
+
def self.lightgray; [211, 211, 211] end
|
78
|
+
def self.lightgreen; [144, 238, 144] end
|
79
|
+
def self.lightgrey; [211, 211, 211] end
|
80
|
+
def self.lightpink; [255, 182, 193] end
|
81
|
+
def self.lightsalmon; [255, 160, 122] end
|
82
|
+
def self.lightseagreen; [32, 178, 170] end
|
83
|
+
def self.lightskyblue; [135, 206, 250] end
|
84
|
+
def self.lightslategray; [119, 136, 153] end
|
85
|
+
def self.lightslategrey; [119, 136, 153] end
|
86
|
+
def self.lightsteelblue; [176, 196, 222] end
|
87
|
+
def self.lightyellow; [255, 255, 224] end
|
88
|
+
def self.lime; [0, 255, 0] end
|
89
|
+
def self.limegreen; [50, 205, 50] end
|
90
|
+
def self.linen; [250, 240, 230] end
|
91
|
+
def self.magenta; [255, 0, 255] end
|
92
|
+
def self.maroon; [128, 0, 0] end
|
93
|
+
def self.mediumaquamarine; [102, 205, 170] end
|
94
|
+
def self.mediumblue; [0, 0, 205] end
|
95
|
+
def self.mediumorchid; [186, 85, 211] end
|
96
|
+
def self.mediumpurple; [147, 112, 219] end
|
97
|
+
def self.mediumseagreen; [60, 179, 113] end
|
98
|
+
def self.mediumslateblue; [123, 104, 238] end
|
99
|
+
def self.mediumspringgreen; [0, 250, 154] end
|
100
|
+
def self.mediumturquoise; [72, 209, 204] end
|
101
|
+
def self.mediumvioletred; [199, 21, 133] end
|
102
|
+
def self.midnightblue; [25, 25, 112] end
|
103
|
+
def self.mintcream; [245, 255, 250] end
|
104
|
+
def self.mistyrose; [255, 228, 225] end
|
105
|
+
def self.moccasin; [255, 228, 181] end
|
106
|
+
def self.navajowhite; [255, 222, 173] end
|
107
|
+
def self.navy; [0, 0, 128] end
|
108
|
+
def self.oldlace; [253, 245, 230] end
|
109
|
+
def self.olive; [128, 128, 0] end
|
110
|
+
def self.olivedrab; [107, 142, 35] end
|
111
|
+
def self.orange; [255, 165, 0] end
|
112
|
+
def self.orangered; [255, 69, 0] end
|
113
|
+
def self.orchid; [218, 112, 214] end
|
114
|
+
def self.palegoldenrod; [238, 232, 170] end
|
115
|
+
def self.palegreen; [152, 251, 152] end
|
116
|
+
def self.paleturquoise; [175, 238, 238] end
|
117
|
+
def self.palevioletred; [219, 112, 147] end
|
118
|
+
def self.papayawhip; [255, 239, 213] end
|
119
|
+
def self.peachpuff; [255, 218, 185] end
|
120
|
+
def self.peru; [205, 133, 63] end
|
121
|
+
def self.pink; [255, 192, 203] end
|
122
|
+
def self.plum; [221, 160, 221] end
|
123
|
+
def self.powderblue; [176, 224, 230] end
|
124
|
+
def self.purple; [128, 0, 128] end
|
125
|
+
def self.red; [255, 0, 0] end
|
126
|
+
def self.rosybrown; [188, 143, 143] end
|
127
|
+
def self.royalblue; [65, 105, 225] end
|
128
|
+
def self.saddlebrown; [139, 69, 19] end
|
129
|
+
def self.salmon; [250, 128, 114] end
|
130
|
+
def self.sandybrown; [244, 164, 96] end
|
131
|
+
def self.seagreen; [46, 139, 87] end
|
132
|
+
def self.seashell; [255, 245, 238] end
|
133
|
+
def self.sienna; [160, 82, 45] end
|
134
|
+
def self.silver; [192, 192, 192] end
|
135
|
+
def self.skyblue; [135, 206, 235] end
|
136
|
+
def self.slateblue; [106, 90, 205] end
|
137
|
+
def self.slategray; [112, 128, 144] end
|
138
|
+
def self.slategrey; [112, 128, 144] end
|
139
|
+
def self.snow; [255, 250, 250] end
|
140
|
+
def self.springgreen; [0, 255, 127] end
|
141
|
+
def self.steelblue; [70, 130, 180] end
|
142
|
+
def self.tan; [210, 180, 140] end
|
143
|
+
def self.teal; [0, 128, 128] end
|
144
|
+
def self.thistle; [216, 191, 216] end
|
145
|
+
def self.tomato; [255, 99, 71] end
|
146
|
+
def self.turquoise; [64, 224, 208] end
|
147
|
+
def self.violet; [238, 130, 238] end
|
148
|
+
def self.wheat; [245, 222, 179] end
|
149
|
+
def self.white; [255, 255, 255] end
|
150
|
+
def self.whitesmoke; [245, 245, 245] end
|
151
|
+
def self.yellow; [255, 255, 0] end
|
152
|
+
def self.yellowgreen; [154, 205, 50] end
|
162
153
|
end
|
163
154
|
end
|
164
|
-
end
|
155
|
+
end
|