color-bits 1.1.0 → 1.2.0
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.
- package/.claude/settings.local.json +9 -0
- package/README.md +30 -14
- package/benchmarks/compare-oklab.ts +44 -0
- package/benchmarks/compare-srgb.ts +59 -0
- package/benchmarks/compare.ts +46 -0
- package/benchmarks/parse.ts +41 -0
- package/build/conversion/channels.d.ts +61 -0
- package/build/conversion/channels.js +353 -0
- package/build/conversion/channels.js.map +1 -0
- package/build/{convert.d.ts → conversion/color-spaces.d.ts} +25 -23
- package/build/conversion/color-spaces.js +263 -0
- package/build/conversion/color-spaces.js.map +1 -0
- package/build/core/bits.d.ts +28 -0
- package/build/{core.js → core/bits.js} +25 -26
- package/build/core/bits.js.map +1 -0
- package/build/core/bytes.d.ts +5 -0
- package/build/core/bytes.js +12 -0
- package/build/core/bytes.js.map +1 -0
- package/build/css.d.ts +1 -0
- package/build/css.js +18 -0
- package/build/css.js.map +1 -0
- package/build/formatting/index.d.ts +27 -0
- package/build/{format.js → formatting/index.js} +13 -67
- package/build/formatting/index.js.map +1 -0
- package/build/index.d.ts +6 -4
- package/build/index.js +6 -4
- package/build/index.js.map +1 -1
- package/build/namedColors.d.ts +1 -0
- package/build/namedColors.js +18 -0
- package/build/namedColors.js.map +1 -0
- package/build/operations/adjust.d.ts +19 -0
- package/build/operations/adjust.js +40 -0
- package/build/operations/adjust.js.map +1 -0
- package/build/operations/blend.d.ts +9 -0
- package/build/operations/blend.js +19 -0
- package/build/operations/blend.js.map +1 -0
- package/build/operations/color-mix.d.ts +20 -0
- package/build/operations/color-mix.js +144 -0
- package/build/operations/color-mix.js.map +1 -0
- package/build/operations/luminance.d.ts +7 -0
- package/build/operations/luminance.js +20 -0
- package/build/operations/luminance.js.map +1 -0
- package/build/parsing/calc.d.ts +8 -0
- package/build/parsing/calc.js +205 -0
- package/build/parsing/calc.js.map +1 -0
- package/build/parsing/color-mix.d.ts +8 -0
- package/build/parsing/color-mix.js +70 -0
- package/build/parsing/color-mix.js.map +1 -0
- package/build/parsing/css.d.ts +23 -0
- package/build/parsing/css.js +115 -0
- package/build/parsing/css.js.map +1 -0
- package/build/parsing/fast.d.ts +19 -0
- package/build/parsing/fast.js +184 -0
- package/build/parsing/fast.js.map +1 -0
- package/build/parsing/named-colors.d.ts +12 -0
- package/build/parsing/named-colors.js +68 -0
- package/build/parsing/named-colors.js.map +1 -0
- package/build/parsing/relative.d.ts +9 -0
- package/build/parsing/relative.js +158 -0
- package/build/parsing/relative.js.map +1 -0
- package/build/parsing/tokenizer.d.ts +16 -0
- package/build/parsing/tokenizer.js +78 -0
- package/build/parsing/tokenizer.js.map +1 -0
- package/build/parsing/values.d.ts +41 -0
- package/build/parsing/values.js +139 -0
- package/build/parsing/values.js.map +1 -0
- package/package.json +30 -12
- package/benchmarks/index.ts +0 -35
- package/build/bit.d.ts +0 -3
- package/build/bit.js +0 -29
- package/build/bit.js.map +0 -1
- package/build/convert.js +0 -347
- package/build/convert.js.map +0 -1
- package/build/core.d.ts +0 -27
- package/build/core.js.map +0 -1
- package/build/format.d.ts +0 -27
- package/build/format.js.map +0 -1
- package/build/functions.d.ts +0 -33
- package/build/functions.js +0 -95
- package/build/functions.js.map +0 -1
- package/build/parse.d.ts +0 -17
- package/build/parse.js +0 -392
- package/build/parse.js.map +0 -1
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2022 The Chromium Authors. All rights reserved.
|
|
3
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
4
|
+
// found in the LICENSE file.
|
|
5
|
+
//
|
|
6
|
+
// Source: https://github.com/ChromeDevTools/devtools-frontend/blob/c51201e6ee70370f7f1ac8a1a49dca7d4561aeaa/front_end/core/common/ColorConverter.ts
|
|
7
|
+
// License: https://github.com/ChromeDevTools/devtools-frontend/blob/c51201e6ee70370f7f1ac8a1a49dca7d4561aeaa/LICENSE
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.labToXyzd50 = labToXyzd50;
|
|
10
|
+
exports.xyzd50ToLab = xyzd50ToLab;
|
|
11
|
+
exports.oklabToXyzd65 = oklabToXyzd65;
|
|
12
|
+
exports.xyzd65ToOklab = xyzd65ToOklab;
|
|
13
|
+
exports.lchToLab = lchToLab;
|
|
14
|
+
exports.labToLch = labToLch;
|
|
15
|
+
exports.displayP3ToXyzd50 = displayP3ToXyzd50;
|
|
16
|
+
exports.xyzd50ToDisplayP3 = xyzd50ToDisplayP3;
|
|
17
|
+
exports.proPhotoToXyzd50 = proPhotoToXyzd50;
|
|
18
|
+
exports.xyzd50ToProPhoto = xyzd50ToProPhoto;
|
|
19
|
+
exports.adobeRGBToXyzd50 = adobeRGBToXyzd50;
|
|
20
|
+
exports.xyzd50ToAdobeRGB = xyzd50ToAdobeRGB;
|
|
21
|
+
exports.rec2020ToXyzd50 = rec2020ToXyzd50;
|
|
22
|
+
exports.xyzd50ToRec2020 = xyzd50ToRec2020;
|
|
23
|
+
exports.xyzd50ToD65 = xyzd50ToD65;
|
|
24
|
+
exports.xyzd65ToD50 = xyzd65ToD50;
|
|
25
|
+
exports.xyzd65TosRGBLinear = xyzd65TosRGBLinear;
|
|
26
|
+
exports.xyzd50TosRGBLinear = xyzd50TosRGBLinear;
|
|
27
|
+
exports.srgbLinearToXyzd50 = srgbLinearToXyzd50;
|
|
28
|
+
exports.srgbToXyzd50 = srgbToXyzd50;
|
|
29
|
+
exports.xyzd50ToSrgb = xyzd50ToSrgb;
|
|
30
|
+
exports.oklchToXyzd50 = oklchToXyzd50;
|
|
31
|
+
exports.xyzd50ToOklch = xyzd50ToOklch;
|
|
32
|
+
/**
|
|
33
|
+
* Implementation of this module and all the tests are heavily influenced by
|
|
34
|
+
* https://source.chromium.org/chromium/chromium/src/+/main:ui/gfx/color_conversions.cc
|
|
35
|
+
*/
|
|
36
|
+
// https://en.wikipedia.org/wiki/CIELAB_color_space#Converting_between_CIELAB_and_CIEXYZ_coordinates
|
|
37
|
+
const D50_X = 0.9642;
|
|
38
|
+
const D50_Y = 1.0;
|
|
39
|
+
const D50_Z = 0.8251;
|
|
40
|
+
function mat3(m00, m01, m02, m10, m11, m12, m20, m21, m22) {
|
|
41
|
+
return Float64Array.of(m00, m01, m02, m10, m11, m12, m20, m21, m22);
|
|
42
|
+
}
|
|
43
|
+
function transform(matrix, c1, c2, c3, out) {
|
|
44
|
+
out[0] = matrix[0] * c1 + matrix[1] * c2 + matrix[2] * c3;
|
|
45
|
+
out[1] = matrix[3] * c1 + matrix[4] * c2 + matrix[5] * c3;
|
|
46
|
+
out[2] = matrix[6] * c1 + matrix[7] * c2 + matrix[8] * c3;
|
|
47
|
+
return out;
|
|
48
|
+
}
|
|
49
|
+
// A transfer function mapping encoded values to linear values,
|
|
50
|
+
// represented by this 7-parameter piecewise function:
|
|
51
|
+
//
|
|
52
|
+
// linear = sign(encoded) * (c*|encoded| + f) , 0 <= |encoded| < d
|
|
53
|
+
// = sign(encoded) * ((a*|encoded| + b)^g + e), d <= |encoded|
|
|
54
|
+
//
|
|
55
|
+
// (A simple gamma transfer function sets g to gamma and a to 1.)
|
|
56
|
+
class TransferFunction {
|
|
57
|
+
g;
|
|
58
|
+
a;
|
|
59
|
+
b;
|
|
60
|
+
c;
|
|
61
|
+
d;
|
|
62
|
+
e;
|
|
63
|
+
f;
|
|
64
|
+
constructor(g, a, b = 0, c = 0, d = 0, e = 0, f = 0) {
|
|
65
|
+
this.g = g;
|
|
66
|
+
this.a = a;
|
|
67
|
+
this.b = b;
|
|
68
|
+
this.c = c;
|
|
69
|
+
this.d = d;
|
|
70
|
+
this.e = e;
|
|
71
|
+
this.f = f;
|
|
72
|
+
}
|
|
73
|
+
eval(val) {
|
|
74
|
+
const sign = val < 0 ? -1.0 : 1.0;
|
|
75
|
+
const abs = val * sign;
|
|
76
|
+
// 0 <= |encoded| < d path
|
|
77
|
+
if (abs < this.d) {
|
|
78
|
+
return sign * (this.c * abs + this.f);
|
|
79
|
+
}
|
|
80
|
+
// d <= |encoded| path
|
|
81
|
+
return sign * (Math.pow(this.a * abs + this.b, this.g) + this.e);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const NAMED_TRANSFER_FN = {
|
|
85
|
+
sRGB: new TransferFunction(2.4, (1 / 1.055), (0.055 / 1.055), (1 / 12.92), 0.04045, 0.0, 0.0),
|
|
86
|
+
sRGB_INVERSE: new TransferFunction(0.416667, 1.13728, -0, 12.92, 0.0031308, -0.0549698, -0),
|
|
87
|
+
proPhotoRGB: new TransferFunction(1.8, 1),
|
|
88
|
+
proPhotoRGB_INVERSE: new TransferFunction(0.555556, 1, -0, 0, 0, 0, 0),
|
|
89
|
+
k2Dot2: new TransferFunction(2.2, 1.0),
|
|
90
|
+
k2Dot2_INVERSE: new TransferFunction(0.454545, 1),
|
|
91
|
+
rec2020: new TransferFunction(2.22222, 0.909672, 0.0903276, 0.222222, 0.0812429, 0, 0),
|
|
92
|
+
rec2020_INVERSE: new TransferFunction(0.45, 1.23439, -0, 4.5, 0.018054, -0.0993195, -0),
|
|
93
|
+
};
|
|
94
|
+
const NAMED_GAMUTS = {
|
|
95
|
+
sRGB: mat3(0.436065674, 0.385147095, 0.143066406, 0.222488403, 0.716873169, 0.060607910, 0.013916016, 0.097076416, 0.714096069),
|
|
96
|
+
sRGB_INVERSE: mat3(3.134112151374599, -1.6173924597114966, -0.4906334036481285, -0.9787872938826594, 1.9162795854799963, 0.0334547139520088, 0.07198304248352326, -0.2289858493321844, 1.4053851325241447),
|
|
97
|
+
displayP3: mat3(0.515102, 0.291965, 0.157153, 0.241182, 0.692236, 0.0665819, -0.00104941, 0.0418818, 0.784378),
|
|
98
|
+
displayP3_INVERSE: mat3(2.404045155982687, -0.9898986932663839, -0.3976317191366333, -0.8422283799266768, 1.7988505115115485, 0.016048170293157416, 0.04818705979712955, -0.09737385156228891, 1.2735066448052303),
|
|
99
|
+
adobeRGB: mat3(0.60974, 0.20528, 0.14919, 0.31111, 0.62567, 0.06322, 0.01947, 0.06087, 0.74457),
|
|
100
|
+
adobeRGB_INVERSE: mat3(1.9625385510109137, -0.6106892546501431, -0.3413827467482388, -0.9787580455521, 1.9161624707082339, 0.03341676594241408, 0.028696263137883395, -0.1406807819331586, 1.349252109991369),
|
|
101
|
+
rec2020: mat3(0.673459, 0.165661, 0.125100, 0.279033, 0.675338, 0.0456288, -0.00193139, 0.0299794, 0.797162),
|
|
102
|
+
rec2020_INVERSE: mat3(1.647275201661012, -0.3936024771460771, -0.23598028884792507, -0.6826176165196962, 1.647617775014935, 0.01281626807852422, 0.029662725298529837, -0.06291668721366285, 1.2533964313435522),
|
|
103
|
+
xyz: mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0),
|
|
104
|
+
};
|
|
105
|
+
function degToRad(deg) {
|
|
106
|
+
return deg * (Math.PI / 180);
|
|
107
|
+
}
|
|
108
|
+
function radToDeg(rad) {
|
|
109
|
+
return rad * (180 / Math.PI);
|
|
110
|
+
}
|
|
111
|
+
function applyTransferFnsInto(fn, input) {
|
|
112
|
+
input[0] = fn.eval(input[0]);
|
|
113
|
+
input[1] = fn.eval(input[1]);
|
|
114
|
+
input[2] = fn.eval(input[2]);
|
|
115
|
+
return input;
|
|
116
|
+
}
|
|
117
|
+
const OKLAB_TO_LMS_MATRIX = mat3(0.99999999845051981432, 0.39633779217376785678, 0.21580375806075880339, 1.0000000088817607767, -0.1055613423236563494, -0.063854174771705903402, 1.0000000546724109177, -0.089484182094965759684, -1.2914855378640917399);
|
|
118
|
+
// Inverse of the OKLAB_TO_LMS_MATRIX
|
|
119
|
+
const LMS_TO_OKLAB_MATRIX = mat3(0.2104542553, 0.7936177849999999, -0.0040720468, 1.9779984951000003, -2.4285922049999997, 0.4505937099000001, 0.025904037099999982, 0.7827717662, -0.8086757660000001);
|
|
120
|
+
const XYZ_TO_LMS_MATRIX = mat3(0.8190224432164319, 0.3619062562801221, -0.12887378261216414, 0.0329836671980271, 0.9292868468965546, 0.03614466816999844, 0.048177199566046255, 0.26423952494422764, 0.6335478258136937);
|
|
121
|
+
// Inverse of XYZ_TO_LMS_MATRIX
|
|
122
|
+
const LMS_TO_XYZ_MATRIX = mat3(1.226879873374156, -0.5578149965554814, 0.2813910501772159, -0.040575762624313734, 1.1122868293970596, -0.07171106666151703, -0.07637294974672144, -0.4214933239627915, 1.586924024427242);
|
|
123
|
+
const PRO_PHOTO_TO_XYZD50_MATRIX = mat3(0.7976700747153241, 0.13519395152800417, 0.03135596341127167, 0.28803902352472205, 0.7118744007923554, 0.00008661179538844252, 2.739876695467402e-7, -0.0000014405226518969991, 0.825211112593861);
|
|
124
|
+
// Inverse of PRO_PHOTO_TO_XYZD50_MATRIX
|
|
125
|
+
const XYZD50_TO_PRO_PHOTO_MATRIX = mat3(1.3459533710138858, -0.25561367037652133, -0.051116041522131374, -0.544600415668951, 1.5081687311475767, 0.020535163968720935, -0.0000013975622054109725, 0.000002717590904589903, 1.2118111696814942);
|
|
126
|
+
const XYZD65_TO_XYZD50_MATRIX = mat3(1.0478573189120088, 0.022907374491829943, -0.050162247377152525, 0.029570500050499514, 0.9904755577034089, -0.017061518194840468, -0.00924047197558879, 0.015052921526981566, 0.7519708530777581);
|
|
127
|
+
// Inverse of XYZD65_TO_XYZD50_MATRIX
|
|
128
|
+
const XYZD50_TO_XYZD65_MATRIX = mat3(0.9555366447632887, -0.02306009252137888, 0.06321844147263304, -0.028315378228764922, 1.009951351591575, 0.021026001591792402, 0.012308773293784308, -0.02050053471777469, 1.3301947294775631);
|
|
129
|
+
const XYZD65_TO_SRGB_MATRIX = mat3(3.2408089365140573, -1.5375788839307314, -0.4985609572551541, -0.9692732213205414, 1.876110235238969, 0.041560501141251774, 0.05567030990267439, -0.2040007921971802, 1.0571046720577026);
|
|
130
|
+
// PERF: fusing these matrix chains at load (e.g. LMS->linear-sRGB, or
|
|
131
|
+
// gamut ∘ sRGB_INVERSE for color() endpoints) collapses each conversion to one
|
|
132
|
+
// matrix and benched ~30% faster on oklab — tried and reverted. Its re-rounding
|
|
133
|
+
// shifts achromatic a/b (e.g. white->oklab) by ~1e-16 absolute, which is
|
|
134
|
+
// thousands of ulps against the near-zero result, breaking bit-parity with the
|
|
135
|
+
// Chromium XYZ-hub chain that the float-domain API commits to. Packed 8-bit
|
|
136
|
+
// output is unaffected; revisit only if that parity guarantee is dropped.
|
|
137
|
+
function labInverseTransferFunction(t) {
|
|
138
|
+
const delta = (24.0 / 116.0);
|
|
139
|
+
if (t <= delta) {
|
|
140
|
+
return (108.0 / 841.0) * (t - (16.0 / 116.0));
|
|
141
|
+
}
|
|
142
|
+
return t * t * t;
|
|
143
|
+
}
|
|
144
|
+
function labTransferFunction(t) {
|
|
145
|
+
const deltaLimit = (24.0 / 116.0) * (24.0 / 116.0) * (24.0 / 116.0);
|
|
146
|
+
if (t <= deltaLimit) {
|
|
147
|
+
return (841.0 / 108.0) * t + (16.0 / 116.0);
|
|
148
|
+
}
|
|
149
|
+
return Math.pow(t, 1.0 / 3.0);
|
|
150
|
+
}
|
|
151
|
+
function labToXyzd50(l, a, b, out) {
|
|
152
|
+
const y = (l + 16.0) / 116.0;
|
|
153
|
+
const x = y + a / 500.0;
|
|
154
|
+
const z = y - b / 200.0;
|
|
155
|
+
out[0] = labInverseTransferFunction(x) * D50_X;
|
|
156
|
+
out[1] = labInverseTransferFunction(y) * D50_Y;
|
|
157
|
+
out[2] = labInverseTransferFunction(z) * D50_Z;
|
|
158
|
+
return out;
|
|
159
|
+
}
|
|
160
|
+
function xyzd50ToLab(x, y, z, out) {
|
|
161
|
+
x = labTransferFunction(x / D50_X);
|
|
162
|
+
y = labTransferFunction(y / D50_Y);
|
|
163
|
+
z = labTransferFunction(z / D50_Z);
|
|
164
|
+
out[0] = 116.0 * y - 16.0;
|
|
165
|
+
out[1] = 500.0 * (x - y);
|
|
166
|
+
out[2] = 200.0 * (y - z);
|
|
167
|
+
return out;
|
|
168
|
+
}
|
|
169
|
+
function oklabToXyzd65(l, a, b, out) {
|
|
170
|
+
transform(OKLAB_TO_LMS_MATRIX, l, a, b, out);
|
|
171
|
+
const lms0 = out[0];
|
|
172
|
+
const lms1 = out[1];
|
|
173
|
+
const lms2 = out[2];
|
|
174
|
+
return transform(LMS_TO_XYZ_MATRIX, lms0 * lms0 * lms0, lms1 * lms1 * lms1, lms2 * lms2 * lms2, out);
|
|
175
|
+
}
|
|
176
|
+
function xyzd65ToOklab(x, y, z, out) {
|
|
177
|
+
transform(XYZ_TO_LMS_MATRIX, x, y, z, out);
|
|
178
|
+
return transform(LMS_TO_OKLAB_MATRIX, Math.pow(out[0], 1.0 / 3.0), Math.pow(out[1], 1.0 / 3.0), Math.pow(out[2], 1.0 / 3.0), out);
|
|
179
|
+
}
|
|
180
|
+
function lchToLab(l, c, h, out) {
|
|
181
|
+
out[0] = l;
|
|
182
|
+
if (h === undefined) {
|
|
183
|
+
out[1] = 0;
|
|
184
|
+
out[2] = 0;
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
out[1] = c * Math.cos(degToRad(h));
|
|
188
|
+
out[2] = c * Math.sin(degToRad(h));
|
|
189
|
+
}
|
|
190
|
+
return out;
|
|
191
|
+
}
|
|
192
|
+
function labToLch(l, a, b, out) {
|
|
193
|
+
out[0] = l;
|
|
194
|
+
out[1] = Math.sqrt(a * a + b * b);
|
|
195
|
+
out[2] = radToDeg(Math.atan2(b, a));
|
|
196
|
+
return out;
|
|
197
|
+
}
|
|
198
|
+
function displayP3ToXyzd50(r, g, b, out) {
|
|
199
|
+
const fn = NAMED_TRANSFER_FN.sRGB;
|
|
200
|
+
return transform(NAMED_GAMUTS.displayP3, fn.eval(r), fn.eval(g), fn.eval(b), out);
|
|
201
|
+
}
|
|
202
|
+
function xyzd50ToDisplayP3(x, y, z, out) {
|
|
203
|
+
transform(NAMED_GAMUTS.displayP3_INVERSE, x, y, z, out);
|
|
204
|
+
return applyTransferFnsInto(NAMED_TRANSFER_FN.sRGB_INVERSE, out);
|
|
205
|
+
}
|
|
206
|
+
function proPhotoToXyzd50(r, g, b, out) {
|
|
207
|
+
const fn = NAMED_TRANSFER_FN.proPhotoRGB;
|
|
208
|
+
return transform(PRO_PHOTO_TO_XYZD50_MATRIX, fn.eval(r), fn.eval(g), fn.eval(b), out);
|
|
209
|
+
}
|
|
210
|
+
function xyzd50ToProPhoto(x, y, z, out) {
|
|
211
|
+
transform(XYZD50_TO_PRO_PHOTO_MATRIX, x, y, z, out);
|
|
212
|
+
return applyTransferFnsInto(NAMED_TRANSFER_FN.proPhotoRGB_INVERSE, out);
|
|
213
|
+
}
|
|
214
|
+
function adobeRGBToXyzd50(r, g, b, out) {
|
|
215
|
+
const fn = NAMED_TRANSFER_FN.k2Dot2;
|
|
216
|
+
return transform(NAMED_GAMUTS.adobeRGB, fn.eval(r), fn.eval(g), fn.eval(b), out);
|
|
217
|
+
}
|
|
218
|
+
function xyzd50ToAdobeRGB(x, y, z, out) {
|
|
219
|
+
transform(NAMED_GAMUTS.adobeRGB_INVERSE, x, y, z, out);
|
|
220
|
+
return applyTransferFnsInto(NAMED_TRANSFER_FN.k2Dot2_INVERSE, out);
|
|
221
|
+
}
|
|
222
|
+
function rec2020ToXyzd50(r, g, b, out) {
|
|
223
|
+
const fn = NAMED_TRANSFER_FN.rec2020;
|
|
224
|
+
return transform(NAMED_GAMUTS.rec2020, fn.eval(r), fn.eval(g), fn.eval(b), out);
|
|
225
|
+
}
|
|
226
|
+
function xyzd50ToRec2020(x, y, z, out) {
|
|
227
|
+
transform(NAMED_GAMUTS.rec2020_INVERSE, x, y, z, out);
|
|
228
|
+
return applyTransferFnsInto(NAMED_TRANSFER_FN.rec2020_INVERSE, out);
|
|
229
|
+
}
|
|
230
|
+
function xyzd50ToD65(x, y, z, out) {
|
|
231
|
+
return transform(XYZD50_TO_XYZD65_MATRIX, x, y, z, out);
|
|
232
|
+
}
|
|
233
|
+
function xyzd65ToD50(x, y, z, out) {
|
|
234
|
+
return transform(XYZD65_TO_XYZD50_MATRIX, x, y, z, out);
|
|
235
|
+
}
|
|
236
|
+
function xyzd65TosRGBLinear(x, y, z, out) {
|
|
237
|
+
return transform(XYZD65_TO_SRGB_MATRIX, x, y, z, out);
|
|
238
|
+
}
|
|
239
|
+
function xyzd50TosRGBLinear(x, y, z, out) {
|
|
240
|
+
return transform(NAMED_GAMUTS.sRGB_INVERSE, x, y, z, out);
|
|
241
|
+
}
|
|
242
|
+
function srgbLinearToXyzd50(r, g, b, out) {
|
|
243
|
+
return transform(NAMED_GAMUTS.sRGB, r, g, b, out);
|
|
244
|
+
}
|
|
245
|
+
function srgbToXyzd50(r, g, b, out) {
|
|
246
|
+
const fn = NAMED_TRANSFER_FN.sRGB;
|
|
247
|
+
return transform(NAMED_GAMUTS.sRGB, fn.eval(r), fn.eval(g), fn.eval(b), out);
|
|
248
|
+
}
|
|
249
|
+
function xyzd50ToSrgb(x, y, z, out) {
|
|
250
|
+
transform(NAMED_GAMUTS.sRGB_INVERSE, x, y, z, out);
|
|
251
|
+
return applyTransferFnsInto(NAMED_TRANSFER_FN.sRGB_INVERSE, out);
|
|
252
|
+
}
|
|
253
|
+
function oklchToXyzd50(l, c, h, out) {
|
|
254
|
+
lchToLab(l, c, h, out);
|
|
255
|
+
oklabToXyzd65(out[0], out[1], out[2], out);
|
|
256
|
+
return xyzd65ToD50(out[0], out[1], out[2], out);
|
|
257
|
+
}
|
|
258
|
+
function xyzd50ToOklch(x, y, z, out) {
|
|
259
|
+
xyzd50ToD65(x, y, z, out);
|
|
260
|
+
xyzd65ToOklab(out[0], out[1], out[2], out);
|
|
261
|
+
return labToLch(out[0], out[1], out[2], out);
|
|
262
|
+
}
|
|
263
|
+
//# sourceMappingURL=color-spaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-spaces.js","sourceRoot":"","sources":["../../src/conversion/color-spaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export type ColorBits = number;
|
|
2
|
+
export type Color = ColorBits;
|
|
3
|
+
export declare const OFFSET_R = 24;
|
|
4
|
+
export declare const OFFSET_G = 16;
|
|
5
|
+
export declare const OFFSET_B = 8;
|
|
6
|
+
export declare const OFFSET_A = 0;
|
|
7
|
+
/**
|
|
8
|
+
* Creates a new color from the given RGBA components.
|
|
9
|
+
* Every component should be in the [0, 255] range.
|
|
10
|
+
*/
|
|
11
|
+
export declare function newColor(r: number, g: number, b: number, a: number): ColorBits;
|
|
12
|
+
/**
|
|
13
|
+
* Creates a new color from the given number value, e.g. 0x599eff.
|
|
14
|
+
*/
|
|
15
|
+
export declare function from(color: number): ColorBits;
|
|
16
|
+
/**
|
|
17
|
+
* Turns the color into its equivalent number representation.
|
|
18
|
+
* This is essentially a cast from int32 to uint32.
|
|
19
|
+
*/
|
|
20
|
+
export declare function toNumber(color: ColorBits): number;
|
|
21
|
+
export declare function getRed(c: ColorBits): number;
|
|
22
|
+
export declare function getGreen(c: ColorBits): number;
|
|
23
|
+
export declare function getBlue(c: ColorBits): number;
|
|
24
|
+
export declare function getAlpha(c: ColorBits): number;
|
|
25
|
+
export declare function setRed(c: ColorBits, value: number): ColorBits;
|
|
26
|
+
export declare function setGreen(c: ColorBits, value: number): ColorBits;
|
|
27
|
+
export declare function setBlue(c: ColorBits, value: number): ColorBits;
|
|
28
|
+
export declare function setAlpha(c: ColorBits, value: number): ColorBits;
|
|
@@ -1,27 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
2
|
+
// Bits
|
|
3
|
+
//
|
|
4
|
+
// The color representation would ideally be 32-bits unsigned, but JS bitwise
|
|
5
|
+
// operators only work as 32-bits signed. The range of Smi values on V8 is also
|
|
6
|
+
// 32-bits signed. Those two factors make it that it's much more efficient to just
|
|
7
|
+
// use signed integers to represent the data.
|
|
8
|
+
//
|
|
9
|
+
// Colors with a R channel >= 0x80 will be a negative number, but that's not really
|
|
10
|
+
// an issue at any point because the bits for signed and unsigned integers are always
|
|
11
|
+
// the same, only their interpretation changes.
|
|
25
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
13
|
exports.OFFSET_A = exports.OFFSET_B = exports.OFFSET_G = exports.OFFSET_R = void 0;
|
|
27
14
|
exports.newColor = newColor;
|
|
@@ -35,8 +22,7 @@ exports.setRed = setRed;
|
|
|
35
22
|
exports.setGreen = setGreen;
|
|
36
23
|
exports.setBlue = setBlue;
|
|
37
24
|
exports.setAlpha = setAlpha;
|
|
38
|
-
const
|
|
39
|
-
const { cast, get, set } = bit;
|
|
25
|
+
const INT32_TO_UINT32_OFFSET = 2 ** 32;
|
|
40
26
|
exports.OFFSET_R = 24;
|
|
41
27
|
exports.OFFSET_G = 16;
|
|
42
28
|
exports.OFFSET_B = 8;
|
|
@@ -72,4 +58,17 @@ function setRed(c, value) { return set(c, exports.OFFSET_R, value); }
|
|
|
72
58
|
function setGreen(c, value) { return set(c, exports.OFFSET_G, value); }
|
|
73
59
|
function setBlue(c, value) { return set(c, exports.OFFSET_B, value); }
|
|
74
60
|
function setAlpha(c, value) { return set(c, exports.OFFSET_A, value); }
|
|
75
|
-
|
|
61
|
+
/* Bitwise functions */
|
|
62
|
+
function cast(n) {
|
|
63
|
+
if (n < 0) {
|
|
64
|
+
return n + INT32_TO_UINT32_OFFSET;
|
|
65
|
+
}
|
|
66
|
+
return n;
|
|
67
|
+
}
|
|
68
|
+
function get(n, offset) {
|
|
69
|
+
return (n >> offset) & 0xff;
|
|
70
|
+
}
|
|
71
|
+
function set(n, offset, byte) {
|
|
72
|
+
return n ^ ((n ^ (byte << offset)) & (0xff << offset));
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=bits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bits.js","sourceRoot":"","sources":["../../src/core/bits.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.clampByte = clampByte;
|
|
4
|
+
/**
|
|
5
|
+
* Round and clamp a channel value to a [0, 255] byte. NaN passes through so it
|
|
6
|
+
* packs as 0 in `newColor`.
|
|
7
|
+
*/
|
|
8
|
+
function clampByte(value) {
|
|
9
|
+
const n = Math.round(value);
|
|
10
|
+
return n < 0 ? 0 : n > 255 ? 255 : n;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=bytes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/core/bytes.ts"],"names":[],"mappings":";;AAIA,8BAGC;AAPD;;;GAGG;AACH,SAAgB,SAAS,CAAC,KAAa;IACrC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AACtC,CAAC"}
|
package/build/css.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './parsing/css';
|
package/build/css.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./parsing/css"), exports);
|
|
18
|
+
//# sourceMappingURL=css.js.map
|
package/build/css.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css.js","sourceRoot":"","sources":["../src/css.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA6B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ColorBits } from '../core/bits';
|
|
2
|
+
/** Format to a #RRGGBBAA string */
|
|
3
|
+
export declare const format: typeof formatHEXA;
|
|
4
|
+
/** Format to a #RRGGBBAA string */
|
|
5
|
+
export declare function formatHEXA(color: ColorBits): string;
|
|
6
|
+
export declare function formatHEX(color: ColorBits): string;
|
|
7
|
+
export declare function formatRGBA(color: ColorBits): string;
|
|
8
|
+
export declare function toRGBA(color: ColorBits): {
|
|
9
|
+
r: number;
|
|
10
|
+
g: number;
|
|
11
|
+
b: number;
|
|
12
|
+
a: number;
|
|
13
|
+
};
|
|
14
|
+
export declare function formatHSLA(color: ColorBits): string;
|
|
15
|
+
export declare function toHSLA(color: ColorBits): {
|
|
16
|
+
h: number;
|
|
17
|
+
s: number;
|
|
18
|
+
l: number;
|
|
19
|
+
a: number;
|
|
20
|
+
};
|
|
21
|
+
export declare function formatHWBA(color: ColorBits): string;
|
|
22
|
+
export declare function toHWBA(color: ColorBits): {
|
|
23
|
+
h: number;
|
|
24
|
+
w: number;
|
|
25
|
+
b: number;
|
|
26
|
+
a: number;
|
|
27
|
+
};
|
|
@@ -32,10 +32,11 @@ exports.formatHSLA = formatHSLA;
|
|
|
32
32
|
exports.toHSLA = toHSLA;
|
|
33
33
|
exports.formatHWBA = formatHWBA;
|
|
34
34
|
exports.toHWBA = toHWBA;
|
|
35
|
-
const core = __importStar(require("
|
|
35
|
+
const core = __importStar(require("../core/bits"));
|
|
36
|
+
const channels_1 = require("../conversion/channels");
|
|
36
37
|
const { getRed, getGreen, getBlue, getAlpha } = core;
|
|
37
|
-
//
|
|
38
|
-
const
|
|
38
|
+
// Scratch for srgbToHsl/srgbToHwb results; read out before the next call.
|
|
39
|
+
const SCRATCH = new Float64Array(3);
|
|
39
40
|
/**
|
|
40
41
|
* Map 8-bits value to its hexadecimal representation
|
|
41
42
|
* ['00', '01', '02', ..., 'fe', 'ff']
|
|
@@ -70,74 +71,19 @@ function toRGBA(color) {
|
|
|
70
71
|
};
|
|
71
72
|
}
|
|
72
73
|
function formatHSLA(color) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
const s = buffer[1];
|
|
76
|
-
const l = buffer[2];
|
|
77
|
-
const a = getAlpha(color) / 255;
|
|
78
|
-
return `hsla(${h} ${s}% ${l}% / ${a})`;
|
|
74
|
+
(0, channels_1.srgbToHsl)(getRed(color) / 255, getGreen(color) / 255, getBlue(color) / 255, SCRATCH);
|
|
75
|
+
return `hsla(${SCRATCH[0]} ${SCRATCH[1]}% ${SCRATCH[2]}% / ${getAlpha(color) / 255})`;
|
|
79
76
|
}
|
|
80
77
|
function toHSLA(color) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
const s = buffer[1];
|
|
84
|
-
const l = buffer[2];
|
|
85
|
-
const a = getAlpha(color) / 255;
|
|
86
|
-
return { h, s, l, a };
|
|
78
|
+
(0, channels_1.srgbToHsl)(getRed(color) / 255, getGreen(color) / 255, getBlue(color) / 255, SCRATCH);
|
|
79
|
+
return { h: SCRATCH[0], s: SCRATCH[1], l: SCRATCH[2], a: getAlpha(color) / 255 };
|
|
87
80
|
}
|
|
88
81
|
function formatHWBA(color) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
const w = buffer[1];
|
|
92
|
-
const b = buffer[2];
|
|
93
|
-
const a = getAlpha(color) / 255;
|
|
94
|
-
return `hsla(${h} ${w}% ${b}% / ${a})`;
|
|
82
|
+
(0, channels_1.srgbToHwb)(getRed(color) / 255, getGreen(color) / 255, getBlue(color) / 255, SCRATCH);
|
|
83
|
+
return `hwb(${SCRATCH[0]} ${SCRATCH[1]}% ${SCRATCH[2]}% / ${getAlpha(color) / 255})`;
|
|
95
84
|
}
|
|
96
85
|
function toHWBA(color) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
const w = buffer[1];
|
|
100
|
-
const b = buffer[2];
|
|
101
|
-
const a = getAlpha(color) / 255;
|
|
102
|
-
return { h, w, b, a };
|
|
86
|
+
(0, channels_1.srgbToHwb)(getRed(color) / 255, getGreen(color) / 255, getBlue(color) / 255, SCRATCH);
|
|
87
|
+
return { h: SCRATCH[0], w: SCRATCH[1], b: SCRATCH[2], a: getAlpha(color) / 255 };
|
|
103
88
|
}
|
|
104
|
-
|
|
105
|
-
// https://www.30secondsofcode.org/js/s/rgb-hex-hsl-hsb-color-format-conversion/
|
|
106
|
-
function rgbToHSL(r, g, b) {
|
|
107
|
-
r /= 255;
|
|
108
|
-
g /= 255;
|
|
109
|
-
b /= 255;
|
|
110
|
-
const l = Math.max(r, g, b);
|
|
111
|
-
const s = l - Math.min(r, g, b);
|
|
112
|
-
const h = s
|
|
113
|
-
? l === r
|
|
114
|
-
? (g - b) / s
|
|
115
|
-
: l === g
|
|
116
|
-
? 2 + (b - r) / s
|
|
117
|
-
: 4 + (r - g) / s
|
|
118
|
-
: 0;
|
|
119
|
-
buffer[0] = 60 * h < 0 ? 60 * h + 360 : 60 * h;
|
|
120
|
-
buffer[1] = 100 * (s ? (l <= 0.5 ? s / (2 * l - s) : s / (2 - (2 * l - s))) : 0);
|
|
121
|
-
buffer[2] = (100 * (2 * l - s)) / 2;
|
|
122
|
-
}
|
|
123
|
-
// https://stackoverflow.com/a/29463581/3112706
|
|
124
|
-
function rgbToHWB(r, g, b) {
|
|
125
|
-
r /= 255;
|
|
126
|
-
g /= 255;
|
|
127
|
-
b /= 255;
|
|
128
|
-
const w = Math.min(r, g, b);
|
|
129
|
-
const v = Math.max(r, g, b);
|
|
130
|
-
const black = 1 - v;
|
|
131
|
-
if (v === w) {
|
|
132
|
-
buffer[0] = 0;
|
|
133
|
-
buffer[1] = w;
|
|
134
|
-
buffer[2] = black;
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
let f = r === w ? g - b : (g === w ? b - r : r - g);
|
|
138
|
-
let i = r === w ? 3 : (g === w ? 5 : 1);
|
|
139
|
-
buffer[0] = (i - f / (v - w)) / 6;
|
|
140
|
-
buffer[1] = w;
|
|
141
|
-
buffer[2] = black;
|
|
142
|
-
}
|
|
143
|
-
//# sourceMappingURL=format.js.map
|
|
89
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formatting/index.ts"],"names":[],"mappings":"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"}
|
package/build/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
export * from './core';
|
|
2
|
-
export * from './
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './
|
|
1
|
+
export * from './core/bits';
|
|
2
|
+
export * from './parsing/fast';
|
|
3
|
+
export * from './formatting';
|
|
4
|
+
export * from './operations/adjust';
|
|
5
|
+
export * from './operations/blend';
|
|
6
|
+
export * from './operations/luminance';
|
package/build/index.js
CHANGED
|
@@ -14,8 +14,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./core"), exports);
|
|
18
|
-
__exportStar(require("./
|
|
19
|
-
__exportStar(require("./
|
|
20
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./core/bits"), exports);
|
|
18
|
+
__exportStar(require("./parsing/fast"), exports);
|
|
19
|
+
__exportStar(require("./formatting"), exports);
|
|
20
|
+
__exportStar(require("./operations/adjust"), exports);
|
|
21
|
+
__exportStar(require("./operations/blend"), exports);
|
|
22
|
+
__exportStar(require("./operations/luminance"), exports);
|
|
21
23
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,iDAA8B;AAC9B,+CAA4B;AAC5B,sDAAmC;AACnC,qDAAkC;AAClC,yDAAsC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './parsing/named-colors';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./parsing/named-colors"), exports);
|
|
18
|
+
//# sourceMappingURL=namedColors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namedColors.js","sourceRoot":"","sources":["../src/namedColors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAsC"}
|