precise-colors 0.9.5 → 0.9.7
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/LICENSE +20 -20
- package/README.md +6 -6
- package/dist/{index.mjs → index.cjs} +69 -5
- package/dist/index.cjs.map +1 -0
- package/dist/{index.d.mts → index.d.cts} +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +4 -68
- package/dist/index.js.map +1 -1
- package/package.json +20 -11
- package/dist/index.mjs.map +0 -1
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2024 Anton Veretennikov (king8fisher)
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024-2025 Anton Veretennikov (king8fisher)
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
[](https://npmjs.com/package/precise-colors)
|
|
2
|
-
|
|
3
|
-
# precise-colors
|
|
4
|
-
|
|
5
|
-
This library converts colors between various models without performing any rounding.
|
|
6
|
-
|
|
1
|
+
[](https://npmjs.com/package/precise-colors)
|
|
2
|
+
|
|
3
|
+
# precise-colors
|
|
4
|
+
|
|
5
|
+
This library converts colors between various models without performing any rounding.
|
|
6
|
+
|
|
7
7
|
The idea is that if a non-trivial conversion is needed, you would perform a sequence of conversions and apply rounding only at the very end, minimizing mathematical errors along the way.
|
|
@@ -1,4 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
1
20
|
// src/color.ts
|
|
21
|
+
var color_exports = {};
|
|
22
|
+
__export(color_exports, {
|
|
23
|
+
apple2rgb: () => apple2rgb,
|
|
24
|
+
cmyk2rgb: () => cmyk2rgb,
|
|
25
|
+
gray2cmyk: () => gray2cmyk,
|
|
26
|
+
gray2hex: () => gray2hex,
|
|
27
|
+
gray2hsl: () => gray2hsl,
|
|
28
|
+
gray2hsv: () => gray2hsv,
|
|
29
|
+
gray2hwb: () => gray2hwb,
|
|
30
|
+
gray2lab: () => gray2lab,
|
|
31
|
+
gray2rgb: () => gray2rgb,
|
|
32
|
+
hcg2hsl: () => hcg2hsl,
|
|
33
|
+
hcg2hsv: () => hcg2hsv,
|
|
34
|
+
hcg2hwb: () => hcg2hwb,
|
|
35
|
+
hcg2rgb: () => hcg2rgb,
|
|
36
|
+
hex2rgb: () => hex2rgb,
|
|
37
|
+
hsl2css: () => hsl2css,
|
|
38
|
+
hsl2hcg: () => hsl2hcg,
|
|
39
|
+
hsl2hsv: () => hsl2hsv,
|
|
40
|
+
hsl2rgb: () => hsl2rgb,
|
|
41
|
+
hsv2hcg: () => hsv2hcg,
|
|
42
|
+
hsv2hsl: () => hsv2hsl,
|
|
43
|
+
hsv2rgb: () => hsv2rgb,
|
|
44
|
+
hwb2css: () => hwb2css,
|
|
45
|
+
hwb2hcg: () => hwb2hcg,
|
|
46
|
+
hwb2rgb: () => hwb2rgb,
|
|
47
|
+
lab2lch: () => lab2lch,
|
|
48
|
+
lab2lyz: () => lab2lyz,
|
|
49
|
+
lch2lab: () => lch2lab,
|
|
50
|
+
modulo: () => modulo,
|
|
51
|
+
rgb2cmyk: () => rgb2cmyk,
|
|
52
|
+
rgb2css: () => rgb2css,
|
|
53
|
+
rgb2hex: () => rgb2hex,
|
|
54
|
+
rgb2hsl: () => rgb2hsl,
|
|
55
|
+
rgb2hwb: () => rgb2hwb,
|
|
56
|
+
rgb2lab: () => rgb2lab,
|
|
57
|
+
rgb2str: () => rgb2str,
|
|
58
|
+
rgb2xyz: () => rgb2xyz,
|
|
59
|
+
rgba2css: () => rgba2css,
|
|
60
|
+
roundTo: () => roundTo,
|
|
61
|
+
xyz2lab: () => xyz2lab,
|
|
62
|
+
xyz2rgb: () => xyz2rgb
|
|
63
|
+
});
|
|
64
|
+
module.exports = __toCommonJS(color_exports);
|
|
2
65
|
function roundTo(num, places) {
|
|
3
66
|
return +(Math.round(parseFloat(num.toString() + "e+" + places)) + "e-" + places);
|
|
4
67
|
}
|
|
@@ -453,8 +516,8 @@ function gray2hsv(gray) {
|
|
|
453
516
|
function gray2hwb(gray) {
|
|
454
517
|
return {
|
|
455
518
|
h: 0,
|
|
456
|
-
w:
|
|
457
|
-
b: gray
|
|
519
|
+
w: gray,
|
|
520
|
+
b: 100 - gray
|
|
458
521
|
};
|
|
459
522
|
}
|
|
460
523
|
function gray2cmyk(gray) {
|
|
@@ -605,7 +668,8 @@ function rgb2xyz(rgb) {
|
|
|
605
668
|
z: var_R * 0.019334 + var_G * 0.119193 + var_B * 0.950227
|
|
606
669
|
};
|
|
607
670
|
}
|
|
608
|
-
export
|
|
671
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
672
|
+
0 && (module.exports = {
|
|
609
673
|
apple2rgb,
|
|
610
674
|
cmyk2rgb,
|
|
611
675
|
gray2cmyk,
|
|
@@ -646,5 +710,5 @@ export {
|
|
|
646
710
|
roundTo,
|
|
647
711
|
xyz2lab,
|
|
648
712
|
xyz2rgb
|
|
649
|
-
};
|
|
650
|
-
//# sourceMappingURL=index.
|
|
713
|
+
});
|
|
714
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/color.ts"],"sourcesContent":["export interface Cmyk {\n /** [0..100] */\n readonly c: number;\n /** [0..100] */\n readonly m: number;\n /** [0..100] */\n readonly y: number;\n /** [0..100] */\n readonly k: number;\n}\n\nexport interface Apple {\n readonly r16: number;\n readonly g16: number;\n readonly b16: number;\n}\n\nexport interface Rgb {\n /** [0..255] */\n readonly r: number;\n /** [0..255] */\n readonly g: number;\n /** [0..255] */\n readonly b: number;\n}\n\nexport interface Hsl {\n readonly h: number;\n readonly s: number;\n readonly l: number;\n}\n\nexport interface Hsv {\n readonly h: number;\n readonly s: number;\n readonly v: number;\n}\n\nexport interface Hcg {\n readonly h: number;\n readonly c: number;\n readonly g: number;\n}\n\nexport interface Hwb {\n /** Hue [0..360] */\n readonly h: number;\n /** Whiteness [0..100] */\n readonly w: number;\n /** Blackness [0..100] */\n readonly b: number;\n}\n\nexport interface Lab {\n readonly l: number;\n readonly a: number;\n readonly b: number;\n}\n\nexport interface Xyz {\n readonly x: number;\n readonly y: number;\n readonly z: number;\n}\n\nexport interface Lyz {\n readonly l: number;\n readonly y: number;\n readonly z: number;\n}\n\nexport interface Lch {\n readonly l: number;\n readonly c: number;\n readonly h: number;\n}\n\n/** rounds number to amount of places after `.` */\nexport function roundTo(num: number, places: number) {\n return +(Math.round(parseFloat(num.toString() + \"e+\" + places)) + \"e-\" +\n places);\n}\n\nexport function modulo(x: number, n: number): number {\n return ((x % n) + n) % n;\n}\n\n/**\n * rgb2css converts {@link Rgb} to a string for css. Calls `Math.round` for each of\n * the Rgb fields.\n * @param {Rbg} rgb - [0..255].\n * @returns {string} `\"rgb(r,g,b)\"` representation of passed {@link Rgb} instance.\n */\nexport function rgb2css(rgb: Rgb): string {\n return `rgb(${Math.round(rgb.r)},${Math.round(rgb.g)},${Math.round(rgb.b)})`;\n}\n\n/**\n * rgb2str converts {@link Rgb} to a rounded `\"0..255,0.255,0.255\"` string.\n * @param {Rgb} rgb\n * @returns {string} example: `\"0,127,255\"`\n */\nexport function rgb2str(rgb: Rgb): string {\n return `${Math.round(rgb.r)},${Math.round(rgb.g)},${Math.round(rgb.b)}`;\n}\n\n/**\n * Converts {@link Rgb} and `alpha` to a string for css. Calls `Math.round` for each of\n * the Rgb fields. Rounds `alpha` to max 2 places after `.`.\n * @param {Rbg} rgb - [0..255].\n * @param {number} alpha [0..1]\n * @returns {string} `\"rgb(r,g,b,a)\"` representation of passed {@link Rgb} instance and `alpha`.\n */\nexport function rgba2css(rgb: Rgb, alpha: number): string {\n return `rgba(${Math.round(rgb.r)},${Math.round(rgb.g)},${Math.round(rgb.b)},${roundTo(alpha, 2)\n })`;\n}\n\n/** returns `hsl(h,s,l)` expression */\nexport function hsl2css(hsl: Hsl) {\n return `hsl(${roundTo(hsl.h, 2)}deg,${roundTo(hsl.s, 2)}%,${roundTo(hsl.l, 2)\n }%)`;\n}\n\n/** returns `hwb(h,w,b)` expression */\nexport function hwb2css(hwb: Hwb) {\n return `hwb(${roundTo(hwb.h, 2)}deg,${roundTo(hwb.w, 2)}%,${roundTo(hwb.b, 2)\n }%)`;\n}\n\n/** rgb expects [0..255] for each field */\nexport function rgb2hex(rgb: Rgb): string {\n return Math.round(rgb.r).toString(16).padStart(2, \"0\") +\n Math.round(rgb.g).toString(16).padStart(2, \"0\") +\n Math.round(rgb.b).toString(16).padStart(2, \"0\");\n}\n\n/** gray expects [0..100] */\nexport function gray2hex(gray: number): string {\n const p = Math.round((gray / 100) * 255).toString(16).padStart(2, \"0\");\n return p + p + p;\n}\n\nexport function hex2rgb(input: string): Rgb {\n const value: number = parseInt(input, 16);\n if (isNaN(value)) {\n return { r: 0, g: 0, b: 0 };\n }\n return {\n r: (value >> 16) & 0xFF,\n g: (value >> 8) & 0xFF,\n b: value & 0xFF,\n };\n}\n\n/** expects h [0..360], s [0..100], l [0..100]. Returns rgb[0..255], doesn't perform Math.round on the result. */\nexport function hsl2rgb(hsl: Hsl): Rgb {\n const h = hsl.h / 360;\n const s = hsl.s / 100;\n const l = hsl.l / 100;\n let t2: number;\n let t3: number;\n let val: number;\n if (s === 0) {\n val = l * 255;\n return { r: val, g: val, b: val };\n }\n if (l < 0.5) {\n t2 = l * (1 + s);\n } else {\n t2 = l + s - l * s;\n }\n const t1 = 2 * l - t2;\n const rgb: [number, number, number] = [0, 0, 0];\n for (let i = 0; i < 3; i++) {\n t3 = h + 1.0 / 3.0 * (-(i - 1));\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n } else if (2 * t3 < 1) {\n val = t2;\n } else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2.0 / 3.0 - t3) * 6;\n } else {\n val = t1;\n }\n rgb[i] = val * 255;\n }\n return {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2],\n };\n}\n\n/** expects h [0..360], s [0..100], l [0..100]. Returns rgb[0..255], doesn't perform Math.round on the result. */\nexport function hsl2hsv(hsl: Hsl): Hsv {\n let s = hsl.s / 100;\n let l = hsl.l / 100;\n let smin = s;\n const lmin = Math.max(l, 0.01);\n l *= 2;\n if (l <= 1) {\n s *= l;\n } else {\n s *= 2 - l;\n }\n if (lmin <= 1) {\n smin *= lmin;\n } else {\n smin *= 2 - lmin;\n }\n const v = (l + s) / 2;\n let sv: number;\n if (l === 0) {\n sv = (2 * smin) / (lmin + smin);\n } else {\n sv = (2 * s) / (l + s);\n }\n return {\n h: hsl.h,\n s: sv * 100,\n v: v * 100,\n };\n}\n\nexport function hsl2hcg(hsl: Hsl): Hcg {\n const s = hsl.s / 100;\n const l = hsl.l / 100;\n let c: number;\n if (l < 0.5) {\n c = 2.0 * s * l;\n } else {\n c = 2.0 * s * (1.0 - l);\n }\n let f = 0;\n if (c < 1.0) {\n f = (l - 0.5 * c) / (1.0 - c);\n }\n return {\n h: hsl.h,\n c: c * 100,\n g: f * 100,\n };\n}\n\nexport function hsv2rgb(hsv: Hsv): Rgb {\n const h = hsv.h / 60;\n const s = hsv.s / 100;\n let v = hsv.v / 100;\n const hi = modulo(Math.floor(h), 6);\n const f = h - Math.floor(h);\n const p = 255 * v * (1 - s);\n const q = 255 * v * (1 - (s * f));\n const t = 255 * v * (1 - (s * (1 - f)));\n v *= 255;\n switch (hi) {\n case 0:\n return { r: v, g: t, b: p };\n case 1:\n return { r: q, g: v, b: p };\n case 2:\n return { r: p, g: v, b: t };\n case 3:\n return { r: p, g: q, b: v };\n case 4:\n return { r: t, g: p, b: v };\n case 5:\n return { r: v, g: p, b: q };\n default:\n return { r: 0, g: 0, b: 0 };\n }\n}\n\nexport function hsv2hsl(hsv: Hsv): Hsl {\n const s = hsv.s / 100;\n const v = hsv.v / 100;\n const vmin = Math.max(v, 0.01);\n let sl: number;\n let l: number;\n l = (2 - s) * v;\n const lmin = (2 - s) * vmin;\n sl = s * vmin;\n if (lmin <= 1) {\n sl /= lmin;\n } else {\n sl /= 2 - lmin;\n }\n\n if (isNaN(sl)) {\n sl = 0;\n }\n l /= 2;\n\n return {\n h: (hsv.h),\n s: (sl * 100),\n l: (l * 100),\n };\n}\n\nexport function hsv2hcg(hsv: Hsv): Hcg {\n const s = hsv.s / 100;\n const v = hsv.v / 100;\n const c = s * v;\n let g = 0;\n if (c < 1.0) {\n g = (v - c) / (1 - c);\n }\n return {\n h: (hsv.h),\n c: (c * 100),\n g: (g * 100),\n };\n}\n\nexport function apple2rgb(rgb16: Apple): Rgb {\n return {\n r: (rgb16.r16 / 65535) * 255,\n g: (rgb16.g16 / 65535) * 255,\n b: (rgb16.b16 / 65535) * 255,\n };\n}\n\nexport function cmyk2rgb(cmyk: Cmyk): Rgb {\n const c = cmyk.c / 100;\n const m = cmyk.m / 100;\n const y = cmyk.y / 100;\n const k = cmyk.k / 100;\n\n const r = 1 - Math.min(1, c * (1 - k) + k);\n const g = 1 - Math.min(1, m * (1 - k) + k);\n const b = 1 - Math.min(1, y * (1 - k) + k);\n\n return {\n r: (r * 255),\n g: (g * 255),\n b: (b * 255),\n };\n}\n\nexport function rgb2cmyk(rgb: Rgb): Cmyk {\n const r = rgb.r / 255;\n const g = rgb.g / 255;\n const b = rgb.b / 255;\n const k = +(1 - Math.max(r, g, b));\n return {\n c: +((1 - r - k) / (1 - k) || 0) * 100,\n m: +((1 - g - k) / (1 - k) || 0) * 100,\n y: +((1 - b - k) / (1 - k) || 0) * 100,\n k: k * 100,\n };\n}\n\nexport function rgb2hsl(rgb: Rgb): Hsl {\n const r = rgb.r / 255;\n const g = rgb.g / 255;\n const b = rgb.b / 255;\n\n const min = Math.min(Math.min(r, g), b);\n\n const max = Math.max(Math.max(r, g), b);\n\n const delta = max - min;\n\n let h = 0;\n let s = 0;\n\n if (max == min) {\n h = 0;\n } else if (r == max) {\n h = (g - b) / delta;\n } else if (g == max) {\n h = 2 + (b - r) / delta;\n } else if (b == max) {\n h = 4 + (r - g) / delta;\n }\n\n h = Math.min(h * 60, 360);\n\n if (h < 0) {\n h += 360;\n }\n\n const l = (min + max) / 2;\n\n if (max == min) {\n s = 0;\n } else if (l <= 0.5) {\n s = delta / (max + min);\n } else {\n s = delta / (2 - max - min);\n }\n\n return { h: h, s: s * 100, l: l * 100 };\n}\n\nexport function rgb2hwb(rgb: Rgb): Hwb {\n const h = rgb2hsl(rgb).h;\n const w = 1.0 / 255.0 * Math.min(rgb.r, Math.min(rgb.g, rgb.b));\n const b = 1.0 - 1.0 / 255.0 * Math.max(rgb.r, Math.max(rgb.g, rgb.b));\n\n return { h: h, w: w * 100, b: b * 100 };\n}\n\nexport function hwb2rgb(hwb: Hwb): Rgb {\n const h = hwb.h / 360;\n let w = hwb.w / 100;\n let b = hwb.b / 100;\n const ratio = w + b;\n let f = 0;\n if (ratio > 1) { // w + b cannot be > 1\n w /= ratio;\n b /= ratio;\n }\n const i = Math.floor(6 * h);\n const v = 1 - b;\n f = 6 * h - i;\n if ((i & 0x01) != 0) {\n f = 1 - f;\n }\n const n = w + f * (v - w); // linear interpolation\n switch (i) {\n default:\n case 6:\n case 0:\n return {\n r: (v * 255),\n g: (n * 255),\n b: (w * 255),\n };\n case 1:\n return {\n r: (n * 255),\n g: (v * 255),\n b: (w * 255),\n };\n case 2:\n return {\n r: (w * 255),\n g: (v * 255),\n b: (n * 255),\n };\n case 3:\n return {\n r: (w * 255),\n g: (n * 255),\n b: (v * 255),\n };\n case 4:\n return {\n r: (n * 255),\n g: (w * 255),\n b: (v * 255),\n };\n case 5:\n return {\n r: (v * 255),\n g: (w * 255),\n b: (n * 255),\n };\n }\n}\n\nexport function hwb2hcg(hwb: Hwb): Hcg {\n const w = hwb.w / 100;\n const b = hwb.b / 100;\n const v = 1 - b;\n const c = v - w;\n let g = 0;\n if (c < 1) {\n g = (v - c) / (1 - c);\n }\n return {\n h: hwb.h,\n c: c * 100,\n g: g * 100,\n };\n}\n\nexport function hcg2rgb(hcg: Hcg): Rgb {\n const h = hcg.h / 360;\n const c = hcg.c / 100;\n const g = hcg.g / 100;\n if (c === 0) {\n return { r: g * 255, g: g * 255, b: g * 255 };\n }\n let pure0 = 0, pure1 = 0, pure2 = 0;\n const hi: number = modulo(h, 1) * 6;\n const v: number = modulo(hi, 1);\n const w: number = 1 - v;\n let mg = 0;\n switch (Math.floor(hi)) {\n case 0:\n pure0 = 1;\n pure1 = v;\n pure2 = 0;\n break;\n case 1:\n pure0 = w;\n pure1 = 1;\n pure2 = 0;\n break;\n case 2:\n pure0 = 0;\n pure1 = 1;\n pure2 = v;\n break;\n case 3:\n pure0 = 0;\n pure1 = w;\n pure2 = 1;\n break;\n case 4:\n pure0 = v;\n pure1 = 0;\n pure2 = 1;\n break;\n default:\n pure0 = 1;\n pure1 = 0;\n pure2 = w;\n break;\n }\n mg = (1.0 - c) * g;\n return {\n r: (c * pure0 + mg) * 255,\n g: (c * pure1 + mg) * 255,\n b: (c * pure2 + mg) * 255,\n };\n}\n\nexport function hcg2hsv(hcg: Hcg): Hsv {\n const c = hcg.c / 100;\n const g = hcg.g / 100;\n const v = c + g * (1.0 - c);\n let s = 0;\n if (v > 0.0) {\n s = c / v;\n }\n return {\n h: hcg.h,\n s: s * 100,\n v: v * 100,\n };\n}\n\nexport function hcg2hsl(hcg: Hcg): Hsl {\n const c = hcg.c / 100;\n const g = hcg.g / 100;\n const l: number = g * (1.0 - c) + 0.5 * c;\n let s = 0;\n if (l > 0.0 && l < 0.5) {\n s = c / (2 * l);\n } else if (l >= 0.5 && l < 1.0) {\n s = c / (2 * (1 - l));\n }\n return {\n h: hcg.h,\n s: s * 100,\n l: l * 100,\n };\n}\n\nexport function hcg2hwb(hcg: Hcg): Hwb {\n const c = hcg.c / 100;\n const g = hcg.g / 100;\n const v: number = c + g * (1.0 - c);\n return {\n h: hcg.h,\n w: (v - c) * 100,\n b: (1 - v) * 100,\n };\n}\n\nexport function gray2rgb(gray: number): Rgb {\n return {\n r: (gray / 100) * 255,\n g: (gray / 100) * 255,\n b: (gray / 100) * 255,\n };\n}\n\nexport function gray2hsl(gray: number): Hsl {\n return {\n h: 0,\n s: 0,\n l: gray,\n };\n}\n\nexport function gray2hsv(gray: number): Hsv {\n return {\n h: 0,\n s: 0,\n v: gray,\n };\n}\n\nexport function gray2hwb(gray: number): Hwb {\n return {\n h: 0,\n w: gray,\n b: 100 - gray,\n };\n}\n\nexport function gray2cmyk(gray: number): Cmyk {\n return {\n c: 0,\n m: 0,\n y: 0,\n k: gray,\n };\n}\n\nexport function gray2lab(gray: number): Lab {\n return {\n l: gray,\n a: 0,\n b: 0,\n };\n}\n\nexport function rgb2lab(rgb: Rgb): Lab {\n let r = rgb.r / 255,\n g = rgb.g / 255,\n b = rgb.b / 255;\n let x = 0, y = 0, z = 0;\n\n r = (r > 0.04045) ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;\n g = (g > 0.04045) ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;\n b = (b > 0.04045) ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;\n\n x = (r * 0.4124 + g * 0.3576 + b * 0.1805) / 0.95047;\n y = (r * 0.2126 + g * 0.7152 + b * 0.0722) / 1.00000;\n z = (r * 0.0193 + g * 0.1192 + b * 0.9505) / 1.08883;\n\n x = (x > 0.008856) ? Math.pow(x, 1 / 3) : (7.787 * x) + 16 / 116;\n y = (y > 0.008856) ? Math.pow(y, 1 / 3) : (7.787 * y) + 16 / 116;\n z = (z > 0.008856) ? Math.pow(z, 1 / 3) : (7.787 * z) + 16 / 116;\n\n return { l: (116 * y) - 16, a: 500 * (x - y), b: 200 * (y - z) };\n}\n\nexport function lab2lyz(lab: Lab): Lyz {\n let y = (lab.l + 16) / 116;\n let x = lab.a / 500 + y;\n let z = y - lab.b / 200;\n const x2: number = Math.pow(x, 3);\n const y2: number = Math.pow(y, 3);\n const z2: number = Math.pow(z, 3);\n if (x2 > 0.008856) {\n x = x2;\n } else {\n x = (x - 16.0 / 116.0) / 7.787;\n }\n if (y2 > 0.008856) {\n y = y2;\n } else {\n y = (y - 16.0 / 116.0) / 7.787;\n }\n if (z2 > 0.008856) {\n z = z2;\n } else {\n z = (z - 16.0 / 116.0) / 7.787;\n }\n x *= 95.047;\n y *= 100;\n z *= 108.883;\n return {\n l: x,\n y: y,\n z: z,\n };\n}\n\nexport function lab2lch(lab: Lab): Lch {\n let h: number;\n const hr: number = Math.atan2(lab.b, lab.a);\n h = hr * 360.0 / 2.0 / Math.PI;\n if (h < 0) {\n h += 360;\n }\n const c: number = Math.sqrt(lab.a * lab.a + lab.b * lab.b);\n return {\n l: lab.l,\n c: c,\n h: h,\n };\n}\n\nexport function lch2lab(lch: Lch): Lab {\n const hr: number = lch.h / 360.0 * 2 * Math.PI;\n const a: number = lch.c * Math.cos(hr);\n const b: number = lch.c * Math.sin(hr);\n return {\n l: lch.l,\n a: a,\n b: b,\n };\n}\n\nexport function xyz2rgb(xyz: Xyz): Rgb {\n const x = xyz.x / 100;\n const y = xyz.y / 100;\n const z = xyz.z / 100;\n let r: number;\n let g: number;\n let b: number;\n r = (x * 3.2404542) + (y * -1.5371385) + (z * -0.4985314);\n g = (x * -0.969266) + (y * 1.8760108) + (z * 0.041556);\n b = (x * 0.0556434) + (y * -0.2040259) + (z * 1.0572252);\n\n if (r > 0.0031308) {\n r = (1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055;\n } else {\n r = r * 12.92;\n }\n if (g > 0.0031308) {\n g = (1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055;\n } else {\n g = g * 12.92;\n }\n if (b > 0.0031308) {\n b = (1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055;\n } else {\n b = b * 12.92;\n }\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255,\n };\n}\n\nexport function xyz2lab(xyz: Xyz): Lab {\n let x = xyz.x / 95.047;\n let y = xyz.y / 100;\n let z = xyz.z / 108.883;\n if (x > 0.008856) {\n x = Math.pow(x, 1.0 / 3.0);\n } else {\n x = (7.787 * x) + (16.0 / 116.0);\n }\n if (y > 0.008856) {\n y = Math.pow(y, 1.0 / 3.0);\n } else {\n y = (7.787 * y) + (16.0 / 116.0);\n }\n if (z > 0.008856) {\n z = Math.pow(z, 1.0 / 3.0);\n } else {\n z = (7.787 * z) + (16.0 / 116.0);\n }\n return {\n l: (116 * y) - 16,\n a: 500 * (x - y),\n b: 200 * (y - z),\n };\n}\n\nexport function rgb2xyz(rgb: Rgb): Xyz {\n const [var_R, var_G, var_B] = [rgb.r, rgb.g, rgb.b]\n .map((x) => x / 255)\n .map((x) => x > 0.04045 ? Math.pow((x + 0.055) / 1.055, 2.4) : x / 12.92)\n .map((x) => x * 100);\n return {\n x: var_R * 0.412453 + var_G * 0.357580 + var_B * 0.180423,\n y: var_R * 0.212671 + var_G * 0.715160 + var_B * 0.072169,\n z: var_R * 0.019334 + var_G * 0.119193 + var_B * 0.950227,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA8EO,SAAS,QAAQ,KAAa,QAAgB;AACnD,SAAO,EAAE,KAAK,MAAM,WAAW,IAAI,SAAS,IAAI,OAAO,MAAM,CAAC,IAAI,OAChE;AACJ;AAEO,SAAS,OAAO,GAAW,GAAmB;AACnD,UAAS,IAAI,IAAK,KAAK;AACzB;AAQO,SAAS,QAAQ,KAAkB;AACxC,SAAO,OAAO,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC;AAC3E;AAOO,SAAS,QAAQ,KAAkB;AACxC,SAAO,GAAG,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC;AACvE;AASO,SAAS,SAAS,KAAU,OAAuB;AACxD,SAAO,QAAQ,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,QAAQ,OAAO,CAAC,CAC5F;AACJ;AAGO,SAAS,QAAQ,KAAU;AAChC,SAAO,OAAO,QAAQ,IAAI,GAAG,CAAC,CAAC,OAAO,QAAQ,IAAI,GAAG,CAAC,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,CAC1E;AACJ;AAGO,SAAS,QAAQ,KAAU;AAChC,SAAO,OAAO,QAAQ,IAAI,GAAG,CAAC,CAAC,OAAO,QAAQ,IAAI,GAAG,CAAC,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,CAC1E;AACJ;AAGO,SAAS,QAAQ,KAAkB;AACxC,SAAO,KAAK,MAAM,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,IACnD,KAAK,MAAM,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,IAC9C,KAAK,MAAM,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAClD;AAGO,SAAS,SAAS,MAAsB;AAC7C,QAAM,IAAI,KAAK,MAAO,OAAO,MAAO,GAAG,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AACrE,SAAO,IAAI,IAAI;AACjB;AAEO,SAAS,QAAQ,OAAoB;AAC1C,QAAM,QAAgB,SAAS,OAAO,EAAE;AACxC,MAAI,MAAM,KAAK,GAAG;AAChB,WAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;AAAA,EAC5B;AACA,SAAO;AAAA,IACL,GAAI,SAAS,KAAM;AAAA,IACnB,GAAI,SAAS,IAAK;AAAA,IAClB,GAAG,QAAQ;AAAA,EACb;AACF;AAGO,SAAS,QAAQ,KAAe;AACrC,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI,IAAI;AAClB,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,MAAM,GAAG;AACX,UAAM,IAAI;AACV,WAAO,EAAE,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI;AAAA,EAClC;AACA,MAAI,IAAI,KAAK;AACX,SAAK,KAAK,IAAI;AAAA,EAChB,OAAO;AACL,SAAK,IAAI,IAAI,IAAI;AAAA,EACnB;AACA,QAAM,KAAK,IAAI,IAAI;AACnB,QAAM,MAAgC,CAAC,GAAG,GAAG,CAAC;AAC9C,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,SAAK,IAAI,IAAM,IAAO,EAAE,IAAI;AAC5B,QAAI,KAAK,GAAG;AACV;AAAA,IACF;AACA,QAAI,KAAK,GAAG;AACV;AAAA,IACF;AACA,QAAI,IAAI,KAAK,GAAG;AACd,YAAM,MAAM,KAAK,MAAM,IAAI;AAAA,IAC7B,WAAW,IAAI,KAAK,GAAG;AACrB,YAAM;AAAA,IACR,WAAW,IAAI,KAAK,GAAG;AACrB,YAAM,MAAM,KAAK,OAAO,IAAM,IAAM,MAAM;AAAA,IAC5C,OAAO;AACL,YAAM;AAAA,IACR;AACA,QAAI,CAAC,IAAI,MAAM;AAAA,EACjB;AACA,SAAO;AAAA,IACL,GAAG,IAAI,CAAC;AAAA,IACR,GAAG,IAAI,CAAC;AAAA,IACR,GAAG,IAAI,CAAC;AAAA,EACV;AACF;AAGO,SAAS,QAAQ,KAAe;AACrC,MAAI,IAAI,IAAI,IAAI;AAChB,MAAI,IAAI,IAAI,IAAI;AAChB,MAAI,OAAO;AACX,QAAM,OAAO,KAAK,IAAI,GAAG,IAAI;AAC7B,OAAK;AACL,MAAI,KAAK,GAAG;AACV,SAAK;AAAA,EACP,OAAO;AACL,SAAK,IAAI;AAAA,EACX;AACA,MAAI,QAAQ,GAAG;AACb,YAAQ;AAAA,EACV,OAAO;AACL,YAAQ,IAAI;AAAA,EACd;AACA,QAAM,KAAK,IAAI,KAAK;AACpB,MAAI;AACJ,MAAI,MAAM,GAAG;AACX,SAAM,IAAI,QAAS,OAAO;AAAA,EAC5B,OAAO;AACL,SAAM,IAAI,KAAM,IAAI;AAAA,EACtB;AACA,SAAO;AAAA,IACL,GAAG,IAAI;AAAA,IACP,GAAG,KAAK;AAAA,IACR,GAAG,IAAI;AAAA,EACT;AACF;AAEO,SAAS,QAAQ,KAAe;AACrC,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI,IAAI;AAClB,MAAI;AACJ,MAAI,IAAI,KAAK;AACX,QAAI,IAAM,IAAI;AAAA,EAChB,OAAO;AACL,QAAI,IAAM,KAAK,IAAM;AAAA,EACvB;AACA,MAAI,IAAI;AACR,MAAI,IAAI,GAAK;AACX,SAAK,IAAI,MAAM,MAAM,IAAM;AAAA,EAC7B;AACA,SAAO;AAAA,IACL,GAAG,IAAI;AAAA,IACP,GAAG,IAAI;AAAA,IACP,GAAG,IAAI;AAAA,EACT;AACF;AAEO,SAAS,QAAQ,KAAe;AACrC,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI,IAAI;AAClB,MAAI,IAAI,IAAI,IAAI;AAChB,QAAM,KAAK,OAAO,KAAK,MAAM,CAAC,GAAG,CAAC;AAClC,QAAM,IAAI,IAAI,KAAK,MAAM,CAAC;AAC1B,QAAM,IAAI,MAAM,KAAK,IAAI;AACzB,QAAM,IAAI,MAAM,KAAK,IAAK,IAAI;AAC9B,QAAM,IAAI,MAAM,KAAK,IAAK,KAAK,IAAI;AACnC,OAAK;AACL,UAAQ,IAAI;AAAA,IACV,KAAK;AACH,aAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;AAAA,IAC5B,KAAK;AACH,aAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;AAAA,IAC5B,KAAK;AACH,aAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;AAAA,IAC5B,KAAK;AACH,aAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;AAAA,IAC5B,KAAK;AACH,aAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;AAAA,IAC5B,KAAK;AACH,aAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;AAAA,IAC5B;AACE,aAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;AAAA,EAC9B;AACF;AAEO,SAAS,QAAQ,KAAe;AACrC,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,OAAO,KAAK,IAAI,GAAG,IAAI;AAC7B,MAAI;AACJ,MAAI;AACJ,OAAK,IAAI,KAAK;AACd,QAAM,QAAQ,IAAI,KAAK;AACvB,OAAK,IAAI;AACT,MAAI,QAAQ,GAAG;AACb,UAAM;AAAA,EACR,OAAO;AACL,UAAM,IAAI;AAAA,EACZ;AAEA,MAAI,MAAM,EAAE,GAAG;AACb,SAAK;AAAA,EACP;AACA,OAAK;AAEL,SAAO;AAAA,IACL,GAAI,IAAI;AAAA,IACR,GAAI,KAAK;AAAA,IACT,GAAI,IAAI;AAAA,EACV;AACF;AAEO,SAAS,QAAQ,KAAe;AACrC,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI;AACd,MAAI,IAAI;AACR,MAAI,IAAI,GAAK;AACX,SAAK,IAAI,MAAM,IAAI;AAAA,EACrB;AACA,SAAO;AAAA,IACL,GAAI,IAAI;AAAA,IACR,GAAI,IAAI;AAAA,IACR,GAAI,IAAI;AAAA,EACV;AACF;AAEO,SAAS,UAAU,OAAmB;AAC3C,SAAO;AAAA,IACL,GAAI,MAAM,MAAM,QAAS;AAAA,IACzB,GAAI,MAAM,MAAM,QAAS;AAAA,IACzB,GAAI,MAAM,MAAM,QAAS;AAAA,EAC3B;AACF;AAEO,SAAS,SAAS,MAAiB;AACxC,QAAM,IAAI,KAAK,IAAI;AACnB,QAAM,IAAI,KAAK,IAAI;AACnB,QAAM,IAAI,KAAK,IAAI;AACnB,QAAM,IAAI,KAAK,IAAI;AAEnB,QAAM,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC;AACzC,QAAM,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC;AACzC,QAAM,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC;AAEzC,SAAO;AAAA,IACL,GAAI,IAAI;AAAA,IACR,GAAI,IAAI;AAAA,IACR,GAAI,IAAI;AAAA,EACV;AACF;AAEO,SAAS,SAAS,KAAgB;AACvC,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC;AAChC,SAAO;AAAA,IACL,GAAG,GAAG,IAAI,IAAI,MAAM,IAAI,MAAM,KAAK;AAAA,IACnC,GAAG,GAAG,IAAI,IAAI,MAAM,IAAI,MAAM,KAAK;AAAA,IACnC,GAAG,GAAG,IAAI,IAAI,MAAM,IAAI,MAAM,KAAK;AAAA,IACnC,GAAG,IAAI;AAAA,EACT;AACF;AAEO,SAAS,QAAQ,KAAe;AACrC,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI,IAAI;AAElB,QAAM,MAAM,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;AAEtC,QAAM,MAAM,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;AAEtC,QAAM,QAAQ,MAAM;AAEpB,MAAI,IAAI;AACR,MAAI,IAAI;AAER,MAAI,OAAO,KAAK;AACd,QAAI;AAAA,EACN,WAAW,KAAK,KAAK;AACnB,SAAK,IAAI,KAAK;AAAA,EAChB,WAAW,KAAK,KAAK;AACnB,QAAI,KAAK,IAAI,KAAK;AAAA,EACpB,WAAW,KAAK,KAAK;AACnB,QAAI,KAAK,IAAI,KAAK;AAAA,EACpB;AAEA,MAAI,KAAK,IAAI,IAAI,IAAI,GAAG;AAExB,MAAI,IAAI,GAAG;AACT,SAAK;AAAA,EACP;AAEA,QAAM,KAAK,MAAM,OAAO;AAExB,MAAI,OAAO,KAAK;AACd,QAAI;AAAA,EACN,WAAW,KAAK,KAAK;AACnB,QAAI,SAAS,MAAM;AAAA,EACrB,OAAO;AACL,QAAI,SAAS,IAAI,MAAM;AAAA,EACzB;AAEA,SAAO,EAAE,GAAM,GAAG,IAAI,KAAK,GAAG,IAAI,IAAI;AACxC;AAEO,SAAS,QAAQ,KAAe;AACrC,QAAM,IAAI,QAAQ,GAAG,EAAE;AACvB,QAAM,IAAI,IAAM,MAAQ,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC;AAC9D,QAAM,IAAI,IAAM,IAAM,MAAQ,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC;AAEpE,SAAO,EAAE,GAAM,GAAG,IAAI,KAAK,GAAG,IAAI,IAAI;AACxC;AAEO,SAAS,QAAQ,KAAe;AACrC,QAAM,IAAI,IAAI,IAAI;AAClB,MAAI,IAAI,IAAI,IAAI;AAChB,MAAI,IAAI,IAAI,IAAI;AAChB,QAAM,QAAQ,IAAI;AAClB,MAAI,IAAI;AACR,MAAI,QAAQ,GAAG;AACb,SAAK;AACL,SAAK;AAAA,EACP;AACA,QAAM,IAAI,KAAK,MAAM,IAAI,CAAC;AAC1B,QAAM,IAAI,IAAI;AACd,MAAI,IAAI,IAAI;AACZ,OAAK,IAAI,MAAS,GAAG;AACnB,QAAI,IAAI;AAAA,EACV;AACA,QAAM,IAAI,IAAI,KAAK,IAAI;AACvB,UAAQ,GAAG;AAAA,IACT;AAAA,IACA,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,QACL,GAAI,IAAI;AAAA,QACR,GAAI,IAAI;AAAA,QACR,GAAI,IAAI;AAAA,MACV;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,GAAI,IAAI;AAAA,QACR,GAAI,IAAI;AAAA,QACR,GAAI,IAAI;AAAA,MACV;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,GAAI,IAAI;AAAA,QACR,GAAI,IAAI;AAAA,QACR,GAAI,IAAI;AAAA,MACV;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,GAAI,IAAI;AAAA,QACR,GAAI,IAAI;AAAA,QACR,GAAI,IAAI;AAAA,MACV;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,GAAI,IAAI;AAAA,QACR,GAAI,IAAI;AAAA,QACR,GAAI,IAAI;AAAA,MACV;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,GAAI,IAAI;AAAA,QACR,GAAI,IAAI;AAAA,QACR,GAAI,IAAI;AAAA,MACV;AAAA,EACJ;AACF;AAEO,SAAS,QAAQ,KAAe;AACrC,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI;AACd,QAAM,IAAI,IAAI;AACd,MAAI,IAAI;AACR,MAAI,IAAI,GAAG;AACT,SAAK,IAAI,MAAM,IAAI;AAAA,EACrB;AACA,SAAO;AAAA,IACL,GAAG,IAAI;AAAA,IACP,GAAG,IAAI;AAAA,IACP,GAAG,IAAI;AAAA,EACT;AACF;AAEO,SAAS,QAAQ,KAAe;AACrC,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI,IAAI;AAClB,MAAI,MAAM,GAAG;AACX,WAAO,EAAE,GAAG,IAAI,KAAK,GAAG,IAAI,KAAK,GAAG,IAAI,IAAI;AAAA,EAC9C;AACA,MAAI,QAAQ,GAAG,QAAQ,GAAG,QAAQ;AAClC,QAAM,KAAa,OAAO,GAAG,CAAC,IAAI;AAClC,QAAM,IAAY,OAAO,IAAI,CAAC;AAC9B,QAAM,IAAY,IAAI;AACtB,MAAI,KAAK;AACT,UAAQ,KAAK,MAAM,EAAE,GAAG;AAAA,IACtB,KAAK;AACH,cAAQ;AACR,cAAQ;AACR,cAAQ;AACR;AAAA,IACF,KAAK;AACH,cAAQ;AACR,cAAQ;AACR,cAAQ;AACR;AAAA,IACF,KAAK;AACH,cAAQ;AACR,cAAQ;AACR,cAAQ;AACR;AAAA,IACF,KAAK;AACH,cAAQ;AACR,cAAQ;AACR,cAAQ;AACR;AAAA,IACF,KAAK;AACH,cAAQ;AACR,cAAQ;AACR,cAAQ;AACR;AAAA,IACF;AACE,cAAQ;AACR,cAAQ;AACR,cAAQ;AACR;AAAA,EACJ;AACA,QAAM,IAAM,KAAK;AACjB,SAAO;AAAA,IACL,IAAI,IAAI,QAAQ,MAAM;AAAA,IACtB,IAAI,IAAI,QAAQ,MAAM;AAAA,IACtB,IAAI,IAAI,QAAQ,MAAM;AAAA,EACxB;AACF;AAEO,SAAS,QAAQ,KAAe;AACrC,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI,KAAK,IAAM;AACzB,MAAI,IAAI;AACR,MAAI,IAAI,GAAK;AACX,QAAI,IAAI;AAAA,EACV;AACA,SAAO;AAAA,IACL,GAAG,IAAI;AAAA,IACP,GAAG,IAAI;AAAA,IACP,GAAG,IAAI;AAAA,EACT;AACF;AAEO,SAAS,QAAQ,KAAe;AACrC,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAY,KAAK,IAAM,KAAK,MAAM;AACxC,MAAI,IAAI;AACR,MAAI,IAAI,KAAO,IAAI,KAAK;AACtB,QAAI,KAAK,IAAI;AAAA,EACf,WAAW,KAAK,OAAO,IAAI,GAAK;AAC9B,QAAI,KAAK,KAAK,IAAI;AAAA,EACpB;AACA,SAAO;AAAA,IACL,GAAG,IAAI;AAAA,IACP,GAAG,IAAI;AAAA,IACP,GAAG,IAAI;AAAA,EACT;AACF;AAEO,SAAS,QAAQ,KAAe;AACrC,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAY,IAAI,KAAK,IAAM;AACjC,SAAO;AAAA,IACL,GAAG,IAAI;AAAA,IACP,IAAI,IAAI,KAAK;AAAA,IACb,IAAI,IAAI,KAAK;AAAA,EACf;AACF;AAEO,SAAS,SAAS,MAAmB;AAC1C,SAAO;AAAA,IACL,GAAI,OAAO,MAAO;AAAA,IAClB,GAAI,OAAO,MAAO;AAAA,IAClB,GAAI,OAAO,MAAO;AAAA,EACpB;AACF;AAEO,SAAS,SAAS,MAAmB;AAC1C,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF;AAEO,SAAS,SAAS,MAAmB;AAC1C,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF;AAEO,SAAS,SAAS,MAAmB;AAC1C,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG,MAAM;AAAA,EACX;AACF;AAEO,SAAS,UAAU,MAAoB;AAC5C,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF;AAEO,SAAS,SAAS,MAAmB;AAC1C,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF;AAEO,SAAS,QAAQ,KAAe;AACrC,MAAI,IAAI,IAAI,IAAI,KACd,IAAI,IAAI,IAAI,KACZ,IAAI,IAAI,IAAI;AACd,MAAI,IAAI,GAAG,IAAI,GAAG,IAAI;AAEtB,MAAK,IAAI,UAAW,KAAK,KAAK,IAAI,SAAS,OAAO,GAAG,IAAI,IAAI;AAC7D,MAAK,IAAI,UAAW,KAAK,KAAK,IAAI,SAAS,OAAO,GAAG,IAAI,IAAI;AAC7D,MAAK,IAAI,UAAW,KAAK,KAAK,IAAI,SAAS,OAAO,GAAG,IAAI,IAAI;AAE7D,OAAK,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU;AAC7C,OAAK,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU;AAC7C,OAAK,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU;AAE7C,MAAK,IAAI,UAAY,KAAK,IAAI,GAAG,IAAI,CAAC,IAAK,QAAQ,IAAK,KAAK;AAC7D,MAAK,IAAI,UAAY,KAAK,IAAI,GAAG,IAAI,CAAC,IAAK,QAAQ,IAAK,KAAK;AAC7D,MAAK,IAAI,UAAY,KAAK,IAAI,GAAG,IAAI,CAAC,IAAK,QAAQ,IAAK,KAAK;AAE7D,SAAO,EAAE,GAAI,MAAM,IAAK,IAAI,GAAG,OAAO,IAAI,IAAI,GAAG,OAAO,IAAI,GAAG;AACjE;AAEO,SAAS,QAAQ,KAAe;AACrC,MAAI,KAAK,IAAI,IAAI,MAAM;AACvB,MAAI,IAAI,IAAI,IAAI,MAAM;AACtB,MAAI,IAAI,IAAI,IAAI,IAAI;AACpB,QAAM,KAAa,KAAK,IAAI,GAAG,CAAC;AAChC,QAAM,KAAa,KAAK,IAAI,GAAG,CAAC;AAChC,QAAM,KAAa,KAAK,IAAI,GAAG,CAAC;AAChC,MAAI,KAAK,SAAU;AACjB,QAAI;AAAA,EACN,OAAO;AACL,SAAK,IAAI,KAAO,OAAS;AAAA,EAC3B;AACA,MAAI,KAAK,SAAU;AACjB,QAAI;AAAA,EACN,OAAO;AACL,SAAK,IAAI,KAAO,OAAS;AAAA,EAC3B;AACA,MAAI,KAAK,SAAU;AACjB,QAAI;AAAA,EACN,OAAO;AACL,SAAK,IAAI,KAAO,OAAS;AAAA,EAC3B;AACA,OAAK;AACL,OAAK;AACL,OAAK;AACL,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,QAAQ,KAAe;AACrC,MAAI;AACJ,QAAM,KAAa,KAAK,MAAM,IAAI,GAAG,IAAI,CAAC;AAC1C,MAAI,KAAK,MAAQ,IAAM,KAAK;AAC5B,MAAI,IAAI,GAAG;AACT,SAAK;AAAA,EACP;AACA,QAAM,IAAY,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC;AACzD,SAAO;AAAA,IACL,GAAG,IAAI;AAAA,IACP;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,QAAQ,KAAe;AACrC,QAAM,KAAa,IAAI,IAAI,MAAQ,IAAI,KAAK;AAC5C,QAAM,IAAY,IAAI,IAAI,KAAK,IAAI,EAAE;AACrC,QAAM,IAAY,IAAI,IAAI,KAAK,IAAI,EAAE;AACrC,SAAO;AAAA,IACL,GAAG,IAAI;AAAA,IACP;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,QAAQ,KAAe;AACrC,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI,IAAI;AAClB,QAAM,IAAI,IAAI,IAAI;AAClB,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAK,IAAI,YAAc,IAAI,aAAe,IAAI;AAC9C,MAAK,IAAI,YAAc,IAAI,YAAc,IAAI;AAC7C,MAAK,IAAI,YAAc,IAAI,aAAe,IAAI;AAE9C,MAAI,IAAI,UAAW;AACjB,QAAK,QAAQ,KAAK,IAAI,GAAG,IAAM,GAAG,IAAK;AAAA,EACzC,OAAO;AACL,QAAI,IAAI;AAAA,EACV;AACA,MAAI,IAAI,UAAW;AACjB,QAAK,QAAQ,KAAK,IAAI,GAAG,IAAM,GAAG,IAAK;AAAA,EACzC,OAAO;AACL,QAAI,IAAI;AAAA,EACV;AACA,MAAI,IAAI,UAAW;AACjB,QAAK,QAAQ,KAAK,IAAI,GAAG,IAAM,GAAG,IAAK;AAAA,EACzC,OAAO;AACL,QAAI,IAAI;AAAA,EACV;AACA,SAAO;AAAA,IACL,GAAG,IAAI;AAAA,IACP,GAAG,IAAI;AAAA,IACP,GAAG,IAAI;AAAA,EACT;AACF;AAEO,SAAS,QAAQ,KAAe;AACrC,MAAI,IAAI,IAAI,IAAI;AAChB,MAAI,IAAI,IAAI,IAAI;AAChB,MAAI,IAAI,IAAI,IAAI;AAChB,MAAI,IAAI,SAAU;AAChB,QAAI,KAAK,IAAI,GAAG,IAAM,CAAG;AAAA,EAC3B,OAAO;AACL,QAAK,QAAQ,IAAM,KAAO;AAAA,EAC5B;AACA,MAAI,IAAI,SAAU;AAChB,QAAI,KAAK,IAAI,GAAG,IAAM,CAAG;AAAA,EAC3B,OAAO;AACL,QAAK,QAAQ,IAAM,KAAO;AAAA,EAC5B;AACA,MAAI,IAAI,SAAU;AAChB,QAAI,KAAK,IAAI,GAAG,IAAM,CAAG;AAAA,EAC3B,OAAO;AACL,QAAK,QAAQ,IAAM,KAAO;AAAA,EAC5B;AACA,SAAO;AAAA,IACL,GAAI,MAAM,IAAK;AAAA,IACf,GAAG,OAAO,IAAI;AAAA,IACd,GAAG,OAAO,IAAI;AAAA,EAChB;AACF;AAEO,SAAS,QAAQ,KAAe;AACrC,QAAM,CAAC,OAAO,OAAO,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,EAC/C,IAAI,CAAC,MAAM,IAAI,GAAG,EAClB,IAAI,CAAC,MAAM,IAAI,UAAU,KAAK,KAAK,IAAI,SAAS,OAAO,GAAG,IAAI,IAAI,KAAK,EACvE,IAAI,CAAC,MAAM,IAAI,GAAG;AACrB,SAAO;AAAA,IACL,GAAG,QAAQ,WAAW,QAAQ,UAAW,QAAQ;AAAA,IACjD,GAAG,QAAQ,WAAW,QAAQ,UAAW,QAAQ;AAAA,IACjD,GAAG,QAAQ,WAAW,QAAQ,WAAW,QAAQ;AAAA,EACnD;AACF;","names":[]}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,67 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
1
|
// src/color.ts
|
|
21
|
-
var color_exports = {};
|
|
22
|
-
__export(color_exports, {
|
|
23
|
-
apple2rgb: () => apple2rgb,
|
|
24
|
-
cmyk2rgb: () => cmyk2rgb,
|
|
25
|
-
gray2cmyk: () => gray2cmyk,
|
|
26
|
-
gray2hex: () => gray2hex,
|
|
27
|
-
gray2hsl: () => gray2hsl,
|
|
28
|
-
gray2hsv: () => gray2hsv,
|
|
29
|
-
gray2hwb: () => gray2hwb,
|
|
30
|
-
gray2lab: () => gray2lab,
|
|
31
|
-
gray2rgb: () => gray2rgb,
|
|
32
|
-
hcg2hsl: () => hcg2hsl,
|
|
33
|
-
hcg2hsv: () => hcg2hsv,
|
|
34
|
-
hcg2hwb: () => hcg2hwb,
|
|
35
|
-
hcg2rgb: () => hcg2rgb,
|
|
36
|
-
hex2rgb: () => hex2rgb,
|
|
37
|
-
hsl2css: () => hsl2css,
|
|
38
|
-
hsl2hcg: () => hsl2hcg,
|
|
39
|
-
hsl2hsv: () => hsl2hsv,
|
|
40
|
-
hsl2rgb: () => hsl2rgb,
|
|
41
|
-
hsv2hcg: () => hsv2hcg,
|
|
42
|
-
hsv2hsl: () => hsv2hsl,
|
|
43
|
-
hsv2rgb: () => hsv2rgb,
|
|
44
|
-
hwb2css: () => hwb2css,
|
|
45
|
-
hwb2hcg: () => hwb2hcg,
|
|
46
|
-
hwb2rgb: () => hwb2rgb,
|
|
47
|
-
lab2lch: () => lab2lch,
|
|
48
|
-
lab2lyz: () => lab2lyz,
|
|
49
|
-
lch2lab: () => lch2lab,
|
|
50
|
-
modulo: () => modulo,
|
|
51
|
-
rgb2cmyk: () => rgb2cmyk,
|
|
52
|
-
rgb2css: () => rgb2css,
|
|
53
|
-
rgb2hex: () => rgb2hex,
|
|
54
|
-
rgb2hsl: () => rgb2hsl,
|
|
55
|
-
rgb2hwb: () => rgb2hwb,
|
|
56
|
-
rgb2lab: () => rgb2lab,
|
|
57
|
-
rgb2str: () => rgb2str,
|
|
58
|
-
rgb2xyz: () => rgb2xyz,
|
|
59
|
-
rgba2css: () => rgba2css,
|
|
60
|
-
roundTo: () => roundTo,
|
|
61
|
-
xyz2lab: () => xyz2lab,
|
|
62
|
-
xyz2rgb: () => xyz2rgb
|
|
63
|
-
});
|
|
64
|
-
module.exports = __toCommonJS(color_exports);
|
|
65
2
|
function roundTo(num, places) {
|
|
66
3
|
return +(Math.round(parseFloat(num.toString() + "e+" + places)) + "e-" + places);
|
|
67
4
|
}
|
|
@@ -516,8 +453,8 @@ function gray2hsv(gray) {
|
|
|
516
453
|
function gray2hwb(gray) {
|
|
517
454
|
return {
|
|
518
455
|
h: 0,
|
|
519
|
-
w:
|
|
520
|
-
b: gray
|
|
456
|
+
w: gray,
|
|
457
|
+
b: 100 - gray
|
|
521
458
|
};
|
|
522
459
|
}
|
|
523
460
|
function gray2cmyk(gray) {
|
|
@@ -668,8 +605,7 @@ function rgb2xyz(rgb) {
|
|
|
668
605
|
z: var_R * 0.019334 + var_G * 0.119193 + var_B * 0.950227
|
|
669
606
|
};
|
|
670
607
|
}
|
|
671
|
-
|
|
672
|
-
0 && (module.exports = {
|
|
608
|
+
export {
|
|
673
609
|
apple2rgb,
|
|
674
610
|
cmyk2rgb,
|
|
675
611
|
gray2cmyk,
|
|
@@ -710,5 +646,5 @@ function rgb2xyz(rgb) {
|
|
|
710
646
|
roundTo,
|
|
711
647
|
xyz2lab,
|
|
712
648
|
xyz2rgb
|
|
713
|
-
}
|
|
649
|
+
};
|
|
714
650
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/color.ts"],"sourcesContent":["export interface Cmyk {\n /** [0..100] */\n readonly c: number;\n /** [0..100] */\n readonly m: number;\n /** [0..100] */\n readonly y: number;\n /** [0..100] */\n readonly k: number;\n}\n\nexport interface Apple {\n readonly r16: number;\n readonly g16: number;\n readonly b16: number;\n}\n\nexport interface Rgb {\n /** [0..255] */\n readonly r: number;\n /** [0..255] */\n readonly g: number;\n /** [0..255] */\n readonly b: number;\n}\n\nexport interface Hsl {\n readonly h: number;\n readonly s: number;\n readonly l: number;\n}\n\nexport interface Hsv {\n readonly h: number;\n readonly s: number;\n readonly v: number;\n}\n\nexport interface Hcg {\n readonly h: number;\n readonly c: number;\n readonly g: number;\n}\n\nexport interface Hwb {\n readonly h: number;\n readonly w: number;\n readonly b: number;\n}\n\nexport interface Lab {\n readonly l: number;\n readonly a: number;\n readonly b: number;\n}\n\nexport interface Xyz {\n readonly x: number;\n readonly y: number;\n readonly z: number;\n}\n\nexport interface Lyz {\n readonly l: number;\n readonly y: number;\n readonly z: number;\n}\n\nexport interface Lch {\n readonly l: number;\n readonly c: number;\n readonly h: number;\n}\n\n/** rounds number to amount of places after `.` */\nexport function roundTo(num: number, places: number) {\n return +(Math.round(parseFloat(num.toString() + \"e+\" + places)) + \"e-\" +\n places);\n}\n\nexport function modulo(x: number, n: number): number {\n return ((x % n) + n) % n;\n}\n\n/**\n * rgb2css converts {@link Rgb} to a string for css. Calls `Math.round` for each of\n * the Rgb fields.\n * @param {Rbg} rgb - [0..255].\n * @returns {string} `\"rgb(r,g,b)\"` representation of passed {@link Rgb} instance.\n */\nexport function rgb2css(rgb: Rgb): string {\n return `rgb(${Math.round(rgb.r)},${Math.round(rgb.g)},${Math.round(rgb.b)})`;\n}\n\n/**\n * rgb2str converts {@link Rgb} to a rounded `\"0..255,0.255,0.255\"` string.\n * @param {Rgb} rgb\n * @returns {string} example: `\"0,127,255\"`\n */\nexport function rgb2str(rgb: Rgb): string {\n return `${Math.round(rgb.r)},${Math.round(rgb.g)},${Math.round(rgb.b)}`;\n}\n\n/**\n * Converts {@link Rgb} and `alpha` to a string for css. Calls `Math.round` for each of\n * the Rgb fields. Rounds `alpha` to max 2 places after `.`.\n * @param {Rbg} rgb - [0..255].\n * @param {number} alpha [0..1]\n * @returns {string} `\"rgb(r,g,b,a)\"` representation of passed {@link Rgb} instance and `alpha`.\n */\nexport function rgba2css(rgb: Rgb, alpha: number): string {\n return `rgba(${Math.round(rgb.r)},${Math.round(rgb.g)},${Math.round(rgb.b)},${roundTo(alpha, 2)\n })`;\n}\n\n/** returns `hsl(h,s,l)` expression */\nexport function hsl2css(hsl: Hsl) {\n return `hsl(${roundTo(hsl.h, 2)}deg,${roundTo(hsl.s, 2)}%,${roundTo(hsl.l, 2)\n }%)`;\n}\n\n/** returns `hwb(h,w,b)` expression */\nexport function hwb2css(hwb: Hwb) {\n return `hwb(${roundTo(hwb.h, 2)}deg,${roundTo(hwb.w, 2)}%,${roundTo(hwb.b, 2)\n }%)`;\n}\n\n/** rgb expects [0..255] for each field */\nexport function rgb2hex(rgb: Rgb): string {\n return Math.round(rgb.r).toString(16).padStart(2, \"0\") +\n Math.round(rgb.g).toString(16).padStart(2, \"0\") +\n Math.round(rgb.b).toString(16).padStart(2, \"0\");\n}\n\n/** gray expects [0..100] */\nexport function gray2hex(gray: number): string {\n const p = Math.round((gray / 100) * 255).toString(16).padStart(2, \"0\");\n return p + p + p;\n}\n\nexport function hex2rgb(input: string): Rgb {\n const value: number = parseInt(input, 16);\n if (isNaN(value)) {\n return { r: 0, g: 0, b: 0 };\n }\n return {\n r: (value >> 16) & 0xFF,\n g: (value >> 8) & 0xFF,\n b: value & 0xFF,\n };\n}\n\n/** expects h [0..360], s [0..100], l [0..100]. Returns rgb[0..255], doesn't perform Math.round on the result. */\nexport function hsl2rgb(hsl: Hsl): Rgb {\n const h = hsl.h / 360;\n const s = hsl.s / 100;\n const l = hsl.l / 100;\n let t2: number;\n let t3: number;\n let val: number;\n if (s === 0) {\n val = l * 255;\n return { r: val, g: val, b: val };\n }\n if (l < 0.5) {\n t2 = l * (1 + s);\n } else {\n t2 = l + s - l * s;\n }\n const t1 = 2 * l - t2;\n const rgb: [number, number, number] = [0, 0, 0];\n for (let i = 0; i < 3; i++) {\n t3 = h + 1.0 / 3.0 * (-(i - 1));\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n } else if (2 * t3 < 1) {\n val = t2;\n } else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2.0 / 3.0 - t3) * 6;\n } else {\n val = t1;\n }\n rgb[i] = val * 255;\n }\n return {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2],\n };\n}\n\n/** expects h [0..360], s [0..100], l [0..100]. Returns rgb[0..255], doesn't perform Math.round on the result. */\nexport function hsl2hsv(hsl: Hsl): Hsv {\n let s = hsl.s / 100;\n let l = hsl.l / 100;\n let smin = s;\n const lmin = Math.max(l, 0.01);\n l *= 2;\n if (l <= 1) {\n s *= l;\n } else {\n s *= 2 - l;\n }\n if (lmin <= 1) {\n smin *= lmin;\n } else {\n smin *= 2 - lmin;\n }\n const v = (l + s) / 2;\n let sv: number;\n if (l === 0) {\n sv = (2 * smin) / (lmin + smin);\n } else {\n sv = (2 * s) / (l + s);\n }\n return {\n h: hsl.h,\n s: sv * 100,\n v: v * 100,\n };\n}\n\nexport function hsl2hcg(hsl: Hsl): Hcg {\n const s = hsl.s / 100;\n const l = hsl.l / 100;\n let c: number;\n if (l < 0.5) {\n c = 2.0 * s * l;\n } else {\n c = 2.0 * s * (1.0 - l);\n }\n let f = 0;\n if (c < 1.0) {\n f = (l - 0.5 * c) / (1.0 - c);\n }\n return {\n h: hsl.h,\n c: c * 100,\n g: f * 100,\n };\n}\n\nexport function hsv2rgb(hsv: Hsv): Rgb {\n const h = hsv.h / 60;\n const s = hsv.s / 100;\n let v = hsv.v / 100;\n const hi = modulo(Math.floor(h), 6);\n const f = h - Math.floor(h);\n const p = 255 * v * (1 - s);\n const q = 255 * v * (1 - (s * f));\n const t = 255 * v * (1 - (s * (1 - f)));\n v *= 255;\n switch (hi) {\n case 0:\n return { r: v, g: t, b: p };\n case 1:\n return { r: q, g: v, b: p };\n case 2:\n return { r: p, g: v, b: t };\n case 3:\n return { r: p, g: q, b: v };\n case 4:\n return { r: t, g: p, b: v };\n case 5:\n return { r: v, g: p, b: q };\n default:\n return { r: 0, g: 0, b: 0 };\n }\n}\n\nexport function hsv2hsl(hsv: Hsv): Hsl {\n const s = hsv.s / 100;\n const v = hsv.v / 100;\n const vmin = Math.max(v, 0.01);\n let sl: number;\n let l: number;\n l = (2 - s) * v;\n const lmin = (2 - s) * vmin;\n sl = s * vmin;\n if (lmin <= 1) {\n sl /= lmin;\n } else {\n sl /= 2 - lmin;\n }\n\n if (isNaN(sl)) {\n sl = 0;\n }\n l /= 2;\n\n return {\n h: (hsv.h),\n s: (sl * 100),\n l: (l * 100),\n };\n}\n\nexport function hsv2hcg(hsv: Hsv): Hcg {\n const s = hsv.s / 100;\n const v = hsv.v / 100;\n const c = s * v;\n let g = 0;\n if (c < 1.0) {\n g = (v - c) / (1 - c);\n }\n return {\n h: (hsv.h),\n c: (c * 100),\n g: (g * 100),\n };\n}\n\nexport function apple2rgb(rgb16: Apple): Rgb {\n return {\n r: (rgb16.r16 / 65535) * 255,\n g: (rgb16.g16 / 65535) * 255,\n b: (rgb16.b16 / 65535) * 255,\n };\n}\n\nexport function cmyk2rgb(cmyk: Cmyk): Rgb {\n const c = cmyk.c / 100;\n const m = cmyk.m / 100;\n const y = cmyk.y / 100;\n const k = cmyk.k / 100;\n\n const r = 1 - Math.min(1, c * (1 - k) + k);\n const g = 1 - Math.min(1, m * (1 - k) + k);\n const b = 1 - Math.min(1, y * (1 - k) + k);\n\n return {\n r: (r * 255),\n g: (g * 255),\n b: (b * 255),\n };\n}\n\nexport function rgb2cmyk(rgb: Rgb): Cmyk {\n const r = rgb.r / 255;\n const g = rgb.g / 255;\n const b = rgb.b / 255;\n const k = +(1 - Math.max(r, g, b));\n return {\n c: +((1 - r - k) / (1 - k) || 0) * 100,\n m: +((1 - g - k) / (1 - k) || 0) * 100,\n y: +((1 - b - k) / (1 - k) || 0) * 100,\n k: k * 100,\n };\n}\n\nexport function rgb2hsl(rgb: Rgb): Hsl {\n const r = rgb.r / 255;\n const g = rgb.g / 255;\n const b = rgb.b / 255;\n\n const min = Math.min(Math.min(r, g), b);\n\n const max = Math.max(Math.max(r, g), b);\n\n const delta = max - min;\n\n let h = 0;\n let s = 0;\n\n if (max == min) {\n h = 0;\n } else if (r == max) {\n h = (g - b) / delta;\n } else if (g == max) {\n h = 2 + (b - r) / delta;\n } else if (b == max) {\n h = 4 + (r - g) / delta;\n }\n\n h = Math.min(h * 60, 360);\n\n if (h < 0) {\n h += 360;\n }\n\n const l = (min + max) / 2;\n\n if (max == min) {\n s = 0;\n } else if (l <= 0.5) {\n s = delta / (max + min);\n } else {\n s = delta / (2 - max - min);\n }\n\n return { h: h, s: s * 100, l: l * 100 };\n}\n\nexport function rgb2hwb(rgb: Rgb): Hwb {\n const h = rgb2hsl(rgb).h;\n const w = 1.0 / 255.0 * Math.min(rgb.r, Math.min(rgb.g, rgb.b));\n const b = 1.0 - 1.0 / 255.0 * Math.max(rgb.r, Math.max(rgb.g, rgb.b));\n\n return { h: h, w: w * 100, b: b * 100 };\n}\n\nexport function hwb2rgb(hwb: Hwb): Rgb {\n const h = hwb.h / 360;\n let w = hwb.w / 100;\n let b = hwb.b / 100;\n const ratio = w + b;\n let f = 0;\n if (ratio > 1) { // w + b cannot be > 1\n w /= ratio;\n b /= ratio;\n }\n const i = Math.floor(6 * h);\n const v = 1 - b;\n f = 6 * h - i;\n if ((i & 0x01) != 0) {\n f = 1 - f;\n }\n const n = w + f * (v - w); // linear interpolation\n switch (i) {\n default:\n case 6:\n case 0:\n return {\n r: (v * 255),\n g: (n * 255),\n b: (w * 255),\n };\n case 1:\n return {\n r: (n * 255),\n g: (v * 255),\n b: (w * 255),\n };\n case 2:\n return {\n r: (w * 255),\n g: (v * 255),\n b: (n * 255),\n };\n case 3:\n return {\n r: (w * 255),\n g: (n * 255),\n b: (v * 255),\n };\n case 4:\n return {\n r: (n * 255),\n g: (w * 255),\n b: (v * 255),\n };\n case 5:\n return {\n r: (v * 255),\n g: (w * 255),\n b: (n * 255),\n };\n }\n}\n\nexport function hwb2hcg(hwb: Hwb): Hcg {\n const w = hwb.w / 100;\n const b = hwb.b / 100;\n const v = 1 - b;\n const c = v - w;\n let g = 0;\n if (c < 1) {\n g = (v - c) / (1 - c);\n }\n return {\n h: hwb.h,\n c: c * 100,\n g: g * 100,\n };\n}\n\nexport function hcg2rgb(hcg: Hcg): Rgb {\n const h = hcg.h / 360;\n const c = hcg.c / 100;\n const g = hcg.g / 100;\n if (c === 0) {\n return { r: g * 255, g: g * 255, b: g * 255 };\n }\n let pure0 = 0, pure1 = 0, pure2 = 0;\n const hi: number = modulo(h, 1) * 6;\n const v: number = modulo(hi, 1);\n const w: number = 1 - v;\n let mg = 0;\n switch (Math.floor(hi)) {\n case 0:\n pure0 = 1;\n pure1 = v;\n pure2 = 0;\n break;\n case 1:\n pure0 = w;\n pure1 = 1;\n pure2 = 0;\n break;\n case 2:\n pure0 = 0;\n pure1 = 1;\n pure2 = v;\n break;\n case 3:\n pure0 = 0;\n pure1 = w;\n pure2 = 1;\n break;\n case 4:\n pure0 = v;\n pure1 = 0;\n pure2 = 1;\n break;\n default:\n pure0 = 1;\n pure1 = 0;\n pure2 = w;\n break;\n }\n mg = (1.0 - c) * g;\n return {\n r: (c * pure0 + mg) * 255,\n g: (c * pure1 + mg) * 255,\n b: (c * pure2 + mg) * 255,\n };\n}\n\nexport function hcg2hsv(hcg: Hcg): Hsv {\n const c = hcg.c / 100;\n const g = hcg.g / 100;\n const v = c + g * (1.0 - c);\n let s = 0;\n if (v > 0.0) {\n s = c / v;\n }\n return {\n h: hcg.h,\n s: s * 100,\n v: v * 100,\n };\n}\n\nexport function hcg2hsl(hcg: Hcg): Hsl {\n const c = hcg.c / 100;\n const g = hcg.g / 100;\n const l: number = g * (1.0 - c) + 0.5 * c;\n let s = 0;\n if (l > 0.0 && l < 0.5) {\n s = c / (2 * l);\n } else if (l >= 0.5 && l < 1.0) {\n s = c / (2 * (1 - l));\n }\n return {\n h: hcg.h,\n s: s * 100,\n l: l * 100,\n };\n}\n\nexport function hcg2hwb(hcg: Hcg): Hwb {\n const c = hcg.c / 100;\n const g = hcg.g / 100;\n const v: number = c + g * (1.0 - c);\n return {\n h: hcg.h,\n w: (v - c) * 100,\n b: (1 - v) * 100,\n };\n}\n\nexport function gray2rgb(gray: number): Rgb {\n return {\n r: (gray / 100) * 255,\n g: (gray / 100) * 255,\n b: (gray / 100) * 255,\n };\n}\n\nexport function gray2hsl(gray: number): Hsl {\n return {\n h: 0,\n s: 0,\n l: gray,\n };\n}\n\nexport function gray2hsv(gray: number): Hsv {\n return {\n h: 0,\n s: 0,\n v: gray,\n };\n}\n\nexport function gray2hwb(gray: number): Hwb {\n return {\n h: 0,\n w: 100,\n b: gray,\n };\n}\n\nexport function gray2cmyk(gray: number): Cmyk {\n return {\n c: 0,\n m: 0,\n y: 0,\n k: gray,\n };\n}\n\nexport function gray2lab(gray: number): Lab {\n return {\n l: gray,\n a: 0,\n b: 0,\n };\n}\n\nexport function rgb2lab(rgb: Rgb): Lab {\n let r = rgb.r / 255,\n g = rgb.g / 255,\n b = rgb.b / 255;\n let x = 0, y = 0, z = 0;\n\n r = (r > 0.04045) ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;\n g = (g > 0.04045) ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;\n b = (b > 0.04045) ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;\n\n x = (r * 0.4124 + g * 0.3576 + b * 0.1805) / 0.95047;\n y = (r * 0.2126 + g * 0.7152 + b * 0.0722) / 1.00000;\n z = (r * 0.0193 + g * 0.1192 + b * 0.9505) / 1.08883;\n\n x = (x > 0.008856) ? Math.pow(x, 1 / 3) : (7.787 * x) + 16 / 116;\n y = (y > 0.008856) ? Math.pow(y, 1 / 3) : (7.787 * y) + 16 / 116;\n z = (z > 0.008856) ? Math.pow(z, 1 / 3) : (7.787 * z) + 16 / 116;\n\n return { l: (116 * y) - 16, a: 500 * (x - y), b: 200 * (y - z) };\n}\n\nexport function lab2lyz(lab: Lab): Lyz {\n let y = (lab.l + 16) / 116;\n let x = lab.a / 500 + y;\n let z = y - lab.b / 200;\n const x2: number = Math.pow(x, 3);\n const y2: number = Math.pow(y, 3);\n const z2: number = Math.pow(z, 3);\n if (x2 > 0.008856) {\n x = x2;\n } else {\n x = (x - 16.0 / 116.0) / 7.787;\n }\n if (y2 > 0.008856) {\n y = y2;\n } else {\n y = (y - 16.0 / 116.0) / 7.787;\n }\n if (z2 > 0.008856) {\n z = z2;\n } else {\n z = (z - 16.0 / 116.0) / 7.787;\n }\n x *= 95.047;\n y *= 100;\n z *= 108.883;\n return {\n l: x,\n y: y,\n z: z,\n };\n}\n\nexport function lab2lch(lab: Lab): Lch {\n let h: number;\n const hr: number = Math.atan2(lab.b, lab.a);\n h = hr * 360.0 / 2.0 / Math.PI;\n if (h < 0) {\n h += 360;\n }\n const c: number = Math.sqrt(lab.a * lab.a + lab.b * lab.b);\n return {\n l: lab.l,\n c: c,\n h: h,\n };\n}\n\nexport function lch2lab(lch: Lch): Lab {\n const hr: number = lch.h / 360.0 * 2 * Math.PI;\n const a: number = lch.c * Math.cos(hr);\n const b: number = lch.c * Math.sin(hr);\n return {\n l: lch.l,\n a: a,\n b: b,\n };\n}\n\nexport function xyz2rgb(xyz: Xyz): Rgb {\n const x = xyz.x / 100;\n const y = xyz.y / 100;\n const z = xyz.z / 100;\n let r: number;\n let g: number;\n let b: number;\n r = (x * 3.2404542) + (y * -1.5371385) + (z * -0.4985314);\n g = (x * -0.969266) + (y * 1.8760108) + (z * 0.041556);\n b = (x * 0.0556434) + (y * -0.2040259) + (z * 1.0572252);\n\n if (r > 0.0031308) {\n r = (1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055;\n } else {\n r = r * 12.92;\n }\n if (g > 0.0031308) {\n g = (1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055;\n } else {\n g = g * 12.92;\n }\n if (b > 0.0031308) {\n b = (1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055;\n } else {\n b = b * 12.92;\n }\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255,\n };\n}\n\nexport function xyz2lab(xyz: Xyz): Lab {\n let x = xyz.x / 95.047;\n let y = xyz.y / 100;\n let z = xyz.z / 108.883;\n if (x > 0.008856) {\n x = Math.pow(x, 1.0 / 3.0);\n } else {\n x = (7.787 * x) + (16.0 / 116.0);\n }\n if (y > 0.008856) {\n y = Math.pow(y, 1.0 / 3.0);\n } else {\n y = (7.787 * y) + (16.0 / 116.0);\n }\n if (z > 0.008856) {\n z = Math.pow(z, 1.0 / 3.0);\n } else {\n z = (7.787 * z) + (16.0 / 116.0);\n }\n return {\n l: (116 * y) - 16,\n a: 500 * (x - y),\n b: 200 * (y - z),\n };\n}\n\nexport function rgb2xyz(rgb: Rgb): Xyz {\n const [var_R, var_G, var_B] = [rgb.r, rgb.g, rgb.b]\n .map((x) => x / 255)\n .map((x) => x > 0.04045 ? Math.pow((x + 0.055) / 1.055, 2.4) : x / 12.92)\n .map((x) => x * 100);\n return {\n x: var_R * 0.412453 + var_G * 0.357580 + var_B * 0.180423,\n y: var_R * 0.212671 + var_G * 0.715160 + var_B * 0.072169,\n z: var_R * 0.019334 + var_G * 0.119193 + var_B * 0.950227,\n };\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/color.ts"],"sourcesContent":["export interface Cmyk {\n /** [0..100] */\n readonly c: number;\n /** [0..100] */\n readonly m: number;\n /** [0..100] */\n readonly y: number;\n /** [0..100] */\n readonly k: number;\n}\n\nexport interface Apple {\n readonly r16: number;\n readonly g16: number;\n readonly b16: number;\n}\n\nexport interface Rgb {\n /** [0..255] */\n readonly r: number;\n /** [0..255] */\n readonly g: number;\n /** [0..255] */\n readonly b: number;\n}\n\nexport interface Hsl {\n readonly h: number;\n readonly s: number;\n readonly l: number;\n}\n\nexport interface Hsv {\n readonly h: number;\n readonly s: number;\n readonly v: number;\n}\n\nexport interface Hcg {\n readonly h: number;\n readonly c: number;\n readonly g: number;\n}\n\nexport interface Hwb {\n /** Hue [0..360] */\n readonly h: number;\n /** Whiteness [0..100] */\n readonly w: number;\n /** Blackness [0..100] */\n readonly b: number;\n}\n\nexport interface Lab {\n readonly l: number;\n readonly a: number;\n readonly b: number;\n}\n\nexport interface Xyz {\n readonly x: number;\n readonly y: number;\n readonly z: number;\n}\n\nexport interface Lyz {\n readonly l: number;\n readonly y: number;\n readonly z: number;\n}\n\nexport interface Lch {\n readonly l: number;\n readonly c: number;\n readonly h: number;\n}\n\n/** rounds number to amount of places after `.` */\nexport function roundTo(num: number, places: number) {\n return +(Math.round(parseFloat(num.toString() + \"e+\" + places)) + \"e-\" +\n places);\n}\n\nexport function modulo(x: number, n: number): number {\n return ((x % n) + n) % n;\n}\n\n/**\n * rgb2css converts {@link Rgb} to a string for css. Calls `Math.round` for each of\n * the Rgb fields.\n * @param {Rbg} rgb - [0..255].\n * @returns {string} `\"rgb(r,g,b)\"` representation of passed {@link Rgb} instance.\n */\nexport function rgb2css(rgb: Rgb): string {\n return `rgb(${Math.round(rgb.r)},${Math.round(rgb.g)},${Math.round(rgb.b)})`;\n}\n\n/**\n * rgb2str converts {@link Rgb} to a rounded `\"0..255,0.255,0.255\"` string.\n * @param {Rgb} rgb\n * @returns {string} example: `\"0,127,255\"`\n */\nexport function rgb2str(rgb: Rgb): string {\n return `${Math.round(rgb.r)},${Math.round(rgb.g)},${Math.round(rgb.b)}`;\n}\n\n/**\n * Converts {@link Rgb} and `alpha` to a string for css. Calls `Math.round` for each of\n * the Rgb fields. Rounds `alpha` to max 2 places after `.`.\n * @param {Rbg} rgb - [0..255].\n * @param {number} alpha [0..1]\n * @returns {string} `\"rgb(r,g,b,a)\"` representation of passed {@link Rgb} instance and `alpha`.\n */\nexport function rgba2css(rgb: Rgb, alpha: number): string {\n return `rgba(${Math.round(rgb.r)},${Math.round(rgb.g)},${Math.round(rgb.b)},${roundTo(alpha, 2)\n })`;\n}\n\n/** returns `hsl(h,s,l)` expression */\nexport function hsl2css(hsl: Hsl) {\n return `hsl(${roundTo(hsl.h, 2)}deg,${roundTo(hsl.s, 2)}%,${roundTo(hsl.l, 2)\n }%)`;\n}\n\n/** returns `hwb(h,w,b)` expression */\nexport function hwb2css(hwb: Hwb) {\n return `hwb(${roundTo(hwb.h, 2)}deg,${roundTo(hwb.w, 2)}%,${roundTo(hwb.b, 2)\n }%)`;\n}\n\n/** rgb expects [0..255] for each field */\nexport function rgb2hex(rgb: Rgb): string {\n return Math.round(rgb.r).toString(16).padStart(2, \"0\") +\n Math.round(rgb.g).toString(16).padStart(2, \"0\") +\n Math.round(rgb.b).toString(16).padStart(2, \"0\");\n}\n\n/** gray expects [0..100] */\nexport function gray2hex(gray: number): string {\n const p = Math.round((gray / 100) * 255).toString(16).padStart(2, \"0\");\n return p + p + p;\n}\n\nexport function hex2rgb(input: string): Rgb {\n const value: number = parseInt(input, 16);\n if (isNaN(value)) {\n return { r: 0, g: 0, b: 0 };\n }\n return {\n r: (value >> 16) & 0xFF,\n g: (value >> 8) & 0xFF,\n b: value & 0xFF,\n };\n}\n\n/** expects h [0..360], s [0..100], l [0..100]. Returns rgb[0..255], doesn't perform Math.round on the result. */\nexport function hsl2rgb(hsl: Hsl): Rgb {\n const h = hsl.h / 360;\n const s = hsl.s / 100;\n const l = hsl.l / 100;\n let t2: number;\n let t3: number;\n let val: number;\n if (s === 0) {\n val = l * 255;\n return { r: val, g: val, b: val };\n }\n if (l < 0.5) {\n t2 = l * (1 + s);\n } else {\n t2 = l + s - l * s;\n }\n const t1 = 2 * l - t2;\n const rgb: [number, number, number] = [0, 0, 0];\n for (let i = 0; i < 3; i++) {\n t3 = h + 1.0 / 3.0 * (-(i - 1));\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n } else if (2 * t3 < 1) {\n val = t2;\n } else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2.0 / 3.0 - t3) * 6;\n } else {\n val = t1;\n }\n rgb[i] = val * 255;\n }\n return {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2],\n };\n}\n\n/** expects h [0..360], s [0..100], l [0..100]. Returns rgb[0..255], doesn't perform Math.round on the result. */\nexport function hsl2hsv(hsl: Hsl): Hsv {\n let s = hsl.s / 100;\n let l = hsl.l / 100;\n let smin = s;\n const lmin = Math.max(l, 0.01);\n l *= 2;\n if (l <= 1) {\n s *= l;\n } else {\n s *= 2 - l;\n }\n if (lmin <= 1) {\n smin *= lmin;\n } else {\n smin *= 2 - lmin;\n }\n const v = (l + s) / 2;\n let sv: number;\n if (l === 0) {\n sv = (2 * smin) / (lmin + smin);\n } else {\n sv = (2 * s) / (l + s);\n }\n return {\n h: hsl.h,\n s: sv * 100,\n v: v * 100,\n };\n}\n\nexport function hsl2hcg(hsl: Hsl): Hcg {\n const s = hsl.s / 100;\n const l = hsl.l / 100;\n let c: number;\n if (l < 0.5) {\n c = 2.0 * s * l;\n } else {\n c = 2.0 * s * (1.0 - l);\n }\n let f = 0;\n if (c < 1.0) {\n f = (l - 0.5 * c) / (1.0 - c);\n }\n return {\n h: hsl.h,\n c: c * 100,\n g: f * 100,\n };\n}\n\nexport function hsv2rgb(hsv: Hsv): Rgb {\n const h = hsv.h / 60;\n const s = hsv.s / 100;\n let v = hsv.v / 100;\n const hi = modulo(Math.floor(h), 6);\n const f = h - Math.floor(h);\n const p = 255 * v * (1 - s);\n const q = 255 * v * (1 - (s * f));\n const t = 255 * v * (1 - (s * (1 - f)));\n v *= 255;\n switch (hi) {\n case 0:\n return { r: v, g: t, b: p };\n case 1:\n return { r: q, g: v, b: p };\n case 2:\n return { r: p, g: v, b: t };\n case 3:\n return { r: p, g: q, b: v };\n case 4:\n return { r: t, g: p, b: v };\n case 5:\n return { r: v, g: p, b: q };\n default:\n return { r: 0, g: 0, b: 0 };\n }\n}\n\nexport function hsv2hsl(hsv: Hsv): Hsl {\n const s = hsv.s / 100;\n const v = hsv.v / 100;\n const vmin = Math.max(v, 0.01);\n let sl: number;\n let l: number;\n l = (2 - s) * v;\n const lmin = (2 - s) * vmin;\n sl = s * vmin;\n if (lmin <= 1) {\n sl /= lmin;\n } else {\n sl /= 2 - lmin;\n }\n\n if (isNaN(sl)) {\n sl = 0;\n }\n l /= 2;\n\n return {\n h: (hsv.h),\n s: (sl * 100),\n l: (l * 100),\n };\n}\n\nexport function hsv2hcg(hsv: Hsv): Hcg {\n const s = hsv.s / 100;\n const v = hsv.v / 100;\n const c = s * v;\n let g = 0;\n if (c < 1.0) {\n g = (v - c) / (1 - c);\n }\n return {\n h: (hsv.h),\n c: (c * 100),\n g: (g * 100),\n };\n}\n\nexport function apple2rgb(rgb16: Apple): Rgb {\n return {\n r: (rgb16.r16 / 65535) * 255,\n g: (rgb16.g16 / 65535) * 255,\n b: (rgb16.b16 / 65535) * 255,\n };\n}\n\nexport function cmyk2rgb(cmyk: Cmyk): Rgb {\n const c = cmyk.c / 100;\n const m = cmyk.m / 100;\n const y = cmyk.y / 100;\n const k = cmyk.k / 100;\n\n const r = 1 - Math.min(1, c * (1 - k) + k);\n const g = 1 - Math.min(1, m * (1 - k) + k);\n const b = 1 - Math.min(1, y * (1 - k) + k);\n\n return {\n r: (r * 255),\n g: (g * 255),\n b: (b * 255),\n };\n}\n\nexport function rgb2cmyk(rgb: Rgb): Cmyk {\n const r = rgb.r / 255;\n const g = rgb.g / 255;\n const b = rgb.b / 255;\n const k = +(1 - Math.max(r, g, b));\n return {\n c: +((1 - r - k) / (1 - k) || 0) * 100,\n m: +((1 - g - k) / (1 - k) || 0) * 100,\n y: +((1 - b - k) / (1 - k) || 0) * 100,\n k: k * 100,\n };\n}\n\nexport function rgb2hsl(rgb: Rgb): Hsl {\n const r = rgb.r / 255;\n const g = rgb.g / 255;\n const b = rgb.b / 255;\n\n const min = Math.min(Math.min(r, g), b);\n\n const max = Math.max(Math.max(r, g), b);\n\n const delta = max - min;\n\n let h = 0;\n let s = 0;\n\n if (max == min) {\n h = 0;\n } else if (r == max) {\n h = (g - b) / delta;\n } else if (g == max) {\n h = 2 + (b - r) / delta;\n } else if (b == max) {\n h = 4 + (r - g) / delta;\n }\n\n h = Math.min(h * 60, 360);\n\n if (h < 0) {\n h += 360;\n }\n\n const l = (min + max) / 2;\n\n if (max == min) {\n s = 0;\n } else if (l <= 0.5) {\n s = delta / (max + min);\n } else {\n s = delta / (2 - max - min);\n }\n\n return { h: h, s: s * 100, l: l * 100 };\n}\n\nexport function rgb2hwb(rgb: Rgb): Hwb {\n const h = rgb2hsl(rgb).h;\n const w = 1.0 / 255.0 * Math.min(rgb.r, Math.min(rgb.g, rgb.b));\n const b = 1.0 - 1.0 / 255.0 * Math.max(rgb.r, Math.max(rgb.g, rgb.b));\n\n return { h: h, w: w * 100, b: b * 100 };\n}\n\nexport function hwb2rgb(hwb: Hwb): Rgb {\n const h = hwb.h / 360;\n let w = hwb.w / 100;\n let b = hwb.b / 100;\n const ratio = w + b;\n let f = 0;\n if (ratio > 1) { // w + b cannot be > 1\n w /= ratio;\n b /= ratio;\n }\n const i = Math.floor(6 * h);\n const v = 1 - b;\n f = 6 * h - i;\n if ((i & 0x01) != 0) {\n f = 1 - f;\n }\n const n = w + f * (v - w); // linear interpolation\n switch (i) {\n default:\n case 6:\n case 0:\n return {\n r: (v * 255),\n g: (n * 255),\n b: (w * 255),\n };\n case 1:\n return {\n r: (n * 255),\n g: (v * 255),\n b: (w * 255),\n };\n case 2:\n return {\n r: (w * 255),\n g: (v * 255),\n b: (n * 255),\n };\n case 3:\n return {\n r: (w * 255),\n g: (n * 255),\n b: (v * 255),\n };\n case 4:\n return {\n r: (n * 255),\n g: (w * 255),\n b: (v * 255),\n };\n case 5:\n return {\n r: (v * 255),\n g: (w * 255),\n b: (n * 255),\n };\n }\n}\n\nexport function hwb2hcg(hwb: Hwb): Hcg {\n const w = hwb.w / 100;\n const b = hwb.b / 100;\n const v = 1 - b;\n const c = v - w;\n let g = 0;\n if (c < 1) {\n g = (v - c) / (1 - c);\n }\n return {\n h: hwb.h,\n c: c * 100,\n g: g * 100,\n };\n}\n\nexport function hcg2rgb(hcg: Hcg): Rgb {\n const h = hcg.h / 360;\n const c = hcg.c / 100;\n const g = hcg.g / 100;\n if (c === 0) {\n return { r: g * 255, g: g * 255, b: g * 255 };\n }\n let pure0 = 0, pure1 = 0, pure2 = 0;\n const hi: number = modulo(h, 1) * 6;\n const v: number = modulo(hi, 1);\n const w: number = 1 - v;\n let mg = 0;\n switch (Math.floor(hi)) {\n case 0:\n pure0 = 1;\n pure1 = v;\n pure2 = 0;\n break;\n case 1:\n pure0 = w;\n pure1 = 1;\n pure2 = 0;\n break;\n case 2:\n pure0 = 0;\n pure1 = 1;\n pure2 = v;\n break;\n case 3:\n pure0 = 0;\n pure1 = w;\n pure2 = 1;\n break;\n case 4:\n pure0 = v;\n pure1 = 0;\n pure2 = 1;\n break;\n default:\n pure0 = 1;\n pure1 = 0;\n pure2 = w;\n break;\n }\n mg = (1.0 - c) * g;\n return {\n r: (c * pure0 + mg) * 255,\n g: (c * pure1 + mg) * 255,\n b: (c * pure2 + mg) * 255,\n };\n}\n\nexport function hcg2hsv(hcg: Hcg): Hsv {\n const c = hcg.c / 100;\n const g = hcg.g / 100;\n const v = c + g * (1.0 - c);\n let s = 0;\n if (v > 0.0) {\n s = c / v;\n }\n return {\n h: hcg.h,\n s: s * 100,\n v: v * 100,\n };\n}\n\nexport function hcg2hsl(hcg: Hcg): Hsl {\n const c = hcg.c / 100;\n const g = hcg.g / 100;\n const l: number = g * (1.0 - c) + 0.5 * c;\n let s = 0;\n if (l > 0.0 && l < 0.5) {\n s = c / (2 * l);\n } else if (l >= 0.5 && l < 1.0) {\n s = c / (2 * (1 - l));\n }\n return {\n h: hcg.h,\n s: s * 100,\n l: l * 100,\n };\n}\n\nexport function hcg2hwb(hcg: Hcg): Hwb {\n const c = hcg.c / 100;\n const g = hcg.g / 100;\n const v: number = c + g * (1.0 - c);\n return {\n h: hcg.h,\n w: (v - c) * 100,\n b: (1 - v) * 100,\n };\n}\n\nexport function gray2rgb(gray: number): Rgb {\n return {\n r: (gray / 100) * 255,\n g: (gray / 100) * 255,\n b: (gray / 100) * 255,\n };\n}\n\nexport function gray2hsl(gray: number): Hsl {\n return {\n h: 0,\n s: 0,\n l: gray,\n };\n}\n\nexport function gray2hsv(gray: number): Hsv {\n return {\n h: 0,\n s: 0,\n v: gray,\n };\n}\n\nexport function gray2hwb(gray: number): Hwb {\n return {\n h: 0,\n w: gray,\n b: 100 - gray,\n };\n}\n\nexport function gray2cmyk(gray: number): Cmyk {\n return {\n c: 0,\n m: 0,\n y: 0,\n k: gray,\n };\n}\n\nexport function gray2lab(gray: number): Lab {\n return {\n l: gray,\n a: 0,\n b: 0,\n };\n}\n\nexport function rgb2lab(rgb: Rgb): Lab {\n let r = rgb.r / 255,\n g = rgb.g / 255,\n b = rgb.b / 255;\n let x = 0, y = 0, z = 0;\n\n r = (r > 0.04045) ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;\n g = (g > 0.04045) ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;\n b = (b > 0.04045) ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;\n\n x = (r * 0.4124 + g * 0.3576 + b * 0.1805) / 0.95047;\n y = (r * 0.2126 + g * 0.7152 + b * 0.0722) / 1.00000;\n z = (r * 0.0193 + g * 0.1192 + b * 0.9505) / 1.08883;\n\n x = (x > 0.008856) ? Math.pow(x, 1 / 3) : (7.787 * x) + 16 / 116;\n y = (y > 0.008856) ? Math.pow(y, 1 / 3) : (7.787 * y) + 16 / 116;\n z = (z > 0.008856) ? Math.pow(z, 1 / 3) : (7.787 * z) + 16 / 116;\n\n return { l: (116 * y) - 16, a: 500 * (x - y), b: 200 * (y - z) };\n}\n\nexport function lab2lyz(lab: Lab): Lyz {\n let y = (lab.l + 16) / 116;\n let x = lab.a / 500 + y;\n let z = y - lab.b / 200;\n const x2: number = Math.pow(x, 3);\n const y2: number = Math.pow(y, 3);\n const z2: number = Math.pow(z, 3);\n if (x2 > 0.008856) {\n x = x2;\n } else {\n x = (x - 16.0 / 116.0) / 7.787;\n }\n if (y2 > 0.008856) {\n y = y2;\n } else {\n y = (y - 16.0 / 116.0) / 7.787;\n }\n if (z2 > 0.008856) {\n z = z2;\n } else {\n z = (z - 16.0 / 116.0) / 7.787;\n }\n x *= 95.047;\n y *= 100;\n z *= 108.883;\n return {\n l: x,\n y: y,\n z: z,\n };\n}\n\nexport function lab2lch(lab: Lab): Lch {\n let h: number;\n const hr: number = Math.atan2(lab.b, lab.a);\n h = hr * 360.0 / 2.0 / Math.PI;\n if (h < 0) {\n h += 360;\n }\n const c: number = Math.sqrt(lab.a * lab.a + lab.b * lab.b);\n return {\n l: lab.l,\n c: c,\n h: h,\n };\n}\n\nexport function lch2lab(lch: Lch): Lab {\n const hr: number = lch.h / 360.0 * 2 * Math.PI;\n const a: number = lch.c * Math.cos(hr);\n const b: number = lch.c * Math.sin(hr);\n return {\n l: lch.l,\n a: a,\n b: b,\n };\n}\n\nexport function xyz2rgb(xyz: Xyz): Rgb {\n const x = xyz.x / 100;\n const y = xyz.y / 100;\n const z = xyz.z / 100;\n let r: number;\n let g: number;\n let b: number;\n r = (x * 3.2404542) + (y * -1.5371385) + (z * -0.4985314);\n g = (x * -0.969266) + (y * 1.8760108) + (z * 0.041556);\n b = (x * 0.0556434) + (y * -0.2040259) + (z * 1.0572252);\n\n if (r > 0.0031308) {\n r = (1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055;\n } else {\n r = r * 12.92;\n }\n if (g > 0.0031308) {\n g = (1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055;\n } else {\n g = g * 12.92;\n }\n if (b > 0.0031308) {\n b = (1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055;\n } else {\n b = b * 12.92;\n }\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255,\n };\n}\n\nexport function xyz2lab(xyz: Xyz): Lab {\n let x = xyz.x / 95.047;\n let y = xyz.y / 100;\n let z = xyz.z / 108.883;\n if (x > 0.008856) {\n x = Math.pow(x, 1.0 / 3.0);\n } else {\n x = (7.787 * x) + (16.0 / 116.0);\n }\n if (y > 0.008856) {\n y = Math.pow(y, 1.0 / 3.0);\n } else {\n y = (7.787 * y) + (16.0 / 116.0);\n }\n if (z > 0.008856) {\n z = Math.pow(z, 1.0 / 3.0);\n } else {\n z = (7.787 * z) + (16.0 / 116.0);\n }\n return {\n l: (116 * y) - 16,\n a: 500 * (x - y),\n b: 200 * (y - z),\n };\n}\n\nexport function rgb2xyz(rgb: Rgb): Xyz {\n const [var_R, var_G, var_B] = [rgb.r, rgb.g, rgb.b]\n .map((x) => x / 255)\n .map((x) => x > 0.04045 ? Math.pow((x + 0.055) / 1.055, 2.4) : x / 12.92)\n .map((x) => x * 100);\n return {\n x: var_R * 0.412453 + var_G * 0.357580 + var_B * 0.180423,\n y: var_R * 0.212671 + var_G * 0.715160 + var_B * 0.072169,\n z: var_R * 0.019334 + var_G * 0.119193 + var_B * 0.950227,\n };\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "precise-colors",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.7",
|
|
4
|
+
"private": false,
|
|
4
5
|
"description": "This library converts colors between various models without performing any rounding.",
|
|
5
6
|
"main": "./dist/index.js",
|
|
6
7
|
"module": "./dist/index.mjs",
|
|
@@ -12,6 +13,12 @@
|
|
|
12
13
|
"type": "git",
|
|
13
14
|
"url": "https://github.com/king8fisher/precise-colors.git"
|
|
14
15
|
},
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsup",
|
|
18
|
+
"lint": "eslint .",
|
|
19
|
+
"test:watch": "bun test --watch",
|
|
20
|
+
"prepublishOnly": "bun run build"
|
|
21
|
+
},
|
|
15
22
|
"keywords": [
|
|
16
23
|
"colors",
|
|
17
24
|
"round",
|
|
@@ -19,15 +26,17 @@
|
|
|
19
26
|
],
|
|
20
27
|
"author": "Anton Veretennikov (king8fisher)",
|
|
21
28
|
"license": "MIT",
|
|
29
|
+
"engines": {
|
|
30
|
+
"node": ">=18"
|
|
31
|
+
},
|
|
22
32
|
"devDependencies": {
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
33
|
+
"@eslint/js": "^9.39.2",
|
|
34
|
+
"eslint": "^9.39.2",
|
|
35
|
+
"eslint-plugin-no-in-array": "^1.2.0",
|
|
36
|
+
"tsup": "^8.5.1",
|
|
37
|
+
"typescript": "^5.9.3",
|
|
38
|
+
"typescript-eslint": "^8.50.1",
|
|
39
|
+
"@types/bun": "latest"
|
|
27
40
|
},
|
|
28
|
-
"
|
|
29
|
-
|
|
30
|
-
"test": "vitest --run",
|
|
31
|
-
"wtest": "vitest"
|
|
32
|
-
}
|
|
33
|
-
}
|
|
41
|
+
"type": "module"
|
|
42
|
+
}
|
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/color.ts"],"sourcesContent":["export interface Cmyk {\n /** [0..100] */\n readonly c: number;\n /** [0..100] */\n readonly m: number;\n /** [0..100] */\n readonly y: number;\n /** [0..100] */\n readonly k: number;\n}\n\nexport interface Apple {\n readonly r16: number;\n readonly g16: number;\n readonly b16: number;\n}\n\nexport interface Rgb {\n /** [0..255] */\n readonly r: number;\n /** [0..255] */\n readonly g: number;\n /** [0..255] */\n readonly b: number;\n}\n\nexport interface Hsl {\n readonly h: number;\n readonly s: number;\n readonly l: number;\n}\n\nexport interface Hsv {\n readonly h: number;\n readonly s: number;\n readonly v: number;\n}\n\nexport interface Hcg {\n readonly h: number;\n readonly c: number;\n readonly g: number;\n}\n\nexport interface Hwb {\n readonly h: number;\n readonly w: number;\n readonly b: number;\n}\n\nexport interface Lab {\n readonly l: number;\n readonly a: number;\n readonly b: number;\n}\n\nexport interface Xyz {\n readonly x: number;\n readonly y: number;\n readonly z: number;\n}\n\nexport interface Lyz {\n readonly l: number;\n readonly y: number;\n readonly z: number;\n}\n\nexport interface Lch {\n readonly l: number;\n readonly c: number;\n readonly h: number;\n}\n\n/** rounds number to amount of places after `.` */\nexport function roundTo(num: number, places: number) {\n return +(Math.round(parseFloat(num.toString() + \"e+\" + places)) + \"e-\" +\n places);\n}\n\nexport function modulo(x: number, n: number): number {\n return ((x % n) + n) % n;\n}\n\n/**\n * rgb2css converts {@link Rgb} to a string for css. Calls `Math.round` for each of\n * the Rgb fields.\n * @param {Rbg} rgb - [0..255].\n * @returns {string} `\"rgb(r,g,b)\"` representation of passed {@link Rgb} instance.\n */\nexport function rgb2css(rgb: Rgb): string {\n return `rgb(${Math.round(rgb.r)},${Math.round(rgb.g)},${Math.round(rgb.b)})`;\n}\n\n/**\n * rgb2str converts {@link Rgb} to a rounded `\"0..255,0.255,0.255\"` string.\n * @param {Rgb} rgb\n * @returns {string} example: `\"0,127,255\"`\n */\nexport function rgb2str(rgb: Rgb): string {\n return `${Math.round(rgb.r)},${Math.round(rgb.g)},${Math.round(rgb.b)}`;\n}\n\n/**\n * Converts {@link Rgb} and `alpha` to a string for css. Calls `Math.round` for each of\n * the Rgb fields. Rounds `alpha` to max 2 places after `.`.\n * @param {Rbg} rgb - [0..255].\n * @param {number} alpha [0..1]\n * @returns {string} `\"rgb(r,g,b,a)\"` representation of passed {@link Rgb} instance and `alpha`.\n */\nexport function rgba2css(rgb: Rgb, alpha: number): string {\n return `rgba(${Math.round(rgb.r)},${Math.round(rgb.g)},${Math.round(rgb.b)},${roundTo(alpha, 2)\n })`;\n}\n\n/** returns `hsl(h,s,l)` expression */\nexport function hsl2css(hsl: Hsl) {\n return `hsl(${roundTo(hsl.h, 2)}deg,${roundTo(hsl.s, 2)}%,${roundTo(hsl.l, 2)\n }%)`;\n}\n\n/** returns `hwb(h,w,b)` expression */\nexport function hwb2css(hwb: Hwb) {\n return `hwb(${roundTo(hwb.h, 2)}deg,${roundTo(hwb.w, 2)}%,${roundTo(hwb.b, 2)\n }%)`;\n}\n\n/** rgb expects [0..255] for each field */\nexport function rgb2hex(rgb: Rgb): string {\n return Math.round(rgb.r).toString(16).padStart(2, \"0\") +\n Math.round(rgb.g).toString(16).padStart(2, \"0\") +\n Math.round(rgb.b).toString(16).padStart(2, \"0\");\n}\n\n/** gray expects [0..100] */\nexport function gray2hex(gray: number): string {\n const p = Math.round((gray / 100) * 255).toString(16).padStart(2, \"0\");\n return p + p + p;\n}\n\nexport function hex2rgb(input: string): Rgb {\n const value: number = parseInt(input, 16);\n if (isNaN(value)) {\n return { r: 0, g: 0, b: 0 };\n }\n return {\n r: (value >> 16) & 0xFF,\n g: (value >> 8) & 0xFF,\n b: value & 0xFF,\n };\n}\n\n/** expects h [0..360], s [0..100], l [0..100]. Returns rgb[0..255], doesn't perform Math.round on the result. */\nexport function hsl2rgb(hsl: Hsl): Rgb {\n const h = hsl.h / 360;\n const s = hsl.s / 100;\n const l = hsl.l / 100;\n let t2: number;\n let t3: number;\n let val: number;\n if (s === 0) {\n val = l * 255;\n return { r: val, g: val, b: val };\n }\n if (l < 0.5) {\n t2 = l * (1 + s);\n } else {\n t2 = l + s - l * s;\n }\n const t1 = 2 * l - t2;\n const rgb: [number, number, number] = [0, 0, 0];\n for (let i = 0; i < 3; i++) {\n t3 = h + 1.0 / 3.0 * (-(i - 1));\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n } else if (2 * t3 < 1) {\n val = t2;\n } else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2.0 / 3.0 - t3) * 6;\n } else {\n val = t1;\n }\n rgb[i] = val * 255;\n }\n return {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2],\n };\n}\n\n/** expects h [0..360], s [0..100], l [0..100]. Returns rgb[0..255], doesn't perform Math.round on the result. */\nexport function hsl2hsv(hsl: Hsl): Hsv {\n let s = hsl.s / 100;\n let l = hsl.l / 100;\n let smin = s;\n const lmin = Math.max(l, 0.01);\n l *= 2;\n if (l <= 1) {\n s *= l;\n } else {\n s *= 2 - l;\n }\n if (lmin <= 1) {\n smin *= lmin;\n } else {\n smin *= 2 - lmin;\n }\n const v = (l + s) / 2;\n let sv: number;\n if (l === 0) {\n sv = (2 * smin) / (lmin + smin);\n } else {\n sv = (2 * s) / (l + s);\n }\n return {\n h: hsl.h,\n s: sv * 100,\n v: v * 100,\n };\n}\n\nexport function hsl2hcg(hsl: Hsl): Hcg {\n const s = hsl.s / 100;\n const l = hsl.l / 100;\n let c: number;\n if (l < 0.5) {\n c = 2.0 * s * l;\n } else {\n c = 2.0 * s * (1.0 - l);\n }\n let f = 0;\n if (c < 1.0) {\n f = (l - 0.5 * c) / (1.0 - c);\n }\n return {\n h: hsl.h,\n c: c * 100,\n g: f * 100,\n };\n}\n\nexport function hsv2rgb(hsv: Hsv): Rgb {\n const h = hsv.h / 60;\n const s = hsv.s / 100;\n let v = hsv.v / 100;\n const hi = modulo(Math.floor(h), 6);\n const f = h - Math.floor(h);\n const p = 255 * v * (1 - s);\n const q = 255 * v * (1 - (s * f));\n const t = 255 * v * (1 - (s * (1 - f)));\n v *= 255;\n switch (hi) {\n case 0:\n return { r: v, g: t, b: p };\n case 1:\n return { r: q, g: v, b: p };\n case 2:\n return { r: p, g: v, b: t };\n case 3:\n return { r: p, g: q, b: v };\n case 4:\n return { r: t, g: p, b: v };\n case 5:\n return { r: v, g: p, b: q };\n default:\n return { r: 0, g: 0, b: 0 };\n }\n}\n\nexport function hsv2hsl(hsv: Hsv): Hsl {\n const s = hsv.s / 100;\n const v = hsv.v / 100;\n const vmin = Math.max(v, 0.01);\n let sl: number;\n let l: number;\n l = (2 - s) * v;\n const lmin = (2 - s) * vmin;\n sl = s * vmin;\n if (lmin <= 1) {\n sl /= lmin;\n } else {\n sl /= 2 - lmin;\n }\n\n if (isNaN(sl)) {\n sl = 0;\n }\n l /= 2;\n\n return {\n h: (hsv.h),\n s: (sl * 100),\n l: (l * 100),\n };\n}\n\nexport function hsv2hcg(hsv: Hsv): Hcg {\n const s = hsv.s / 100;\n const v = hsv.v / 100;\n const c = s * v;\n let g = 0;\n if (c < 1.0) {\n g = (v - c) / (1 - c);\n }\n return {\n h: (hsv.h),\n c: (c * 100),\n g: (g * 100),\n };\n}\n\nexport function apple2rgb(rgb16: Apple): Rgb {\n return {\n r: (rgb16.r16 / 65535) * 255,\n g: (rgb16.g16 / 65535) * 255,\n b: (rgb16.b16 / 65535) * 255,\n };\n}\n\nexport function cmyk2rgb(cmyk: Cmyk): Rgb {\n const c = cmyk.c / 100;\n const m = cmyk.m / 100;\n const y = cmyk.y / 100;\n const k = cmyk.k / 100;\n\n const r = 1 - Math.min(1, c * (1 - k) + k);\n const g = 1 - Math.min(1, m * (1 - k) + k);\n const b = 1 - Math.min(1, y * (1 - k) + k);\n\n return {\n r: (r * 255),\n g: (g * 255),\n b: (b * 255),\n };\n}\n\nexport function rgb2cmyk(rgb: Rgb): Cmyk {\n const r = rgb.r / 255;\n const g = rgb.g / 255;\n const b = rgb.b / 255;\n const k = +(1 - Math.max(r, g, b));\n return {\n c: +((1 - r - k) / (1 - k) || 0) * 100,\n m: +((1 - g - k) / (1 - k) || 0) * 100,\n y: +((1 - b - k) / (1 - k) || 0) * 100,\n k: k * 100,\n };\n}\n\nexport function rgb2hsl(rgb: Rgb): Hsl {\n const r = rgb.r / 255;\n const g = rgb.g / 255;\n const b = rgb.b / 255;\n\n const min = Math.min(Math.min(r, g), b);\n\n const max = Math.max(Math.max(r, g), b);\n\n const delta = max - min;\n\n let h = 0;\n let s = 0;\n\n if (max == min) {\n h = 0;\n } else if (r == max) {\n h = (g - b) / delta;\n } else if (g == max) {\n h = 2 + (b - r) / delta;\n } else if (b == max) {\n h = 4 + (r - g) / delta;\n }\n\n h = Math.min(h * 60, 360);\n\n if (h < 0) {\n h += 360;\n }\n\n const l = (min + max) / 2;\n\n if (max == min) {\n s = 0;\n } else if (l <= 0.5) {\n s = delta / (max + min);\n } else {\n s = delta / (2 - max - min);\n }\n\n return { h: h, s: s * 100, l: l * 100 };\n}\n\nexport function rgb2hwb(rgb: Rgb): Hwb {\n const h = rgb2hsl(rgb).h;\n const w = 1.0 / 255.0 * Math.min(rgb.r, Math.min(rgb.g, rgb.b));\n const b = 1.0 - 1.0 / 255.0 * Math.max(rgb.r, Math.max(rgb.g, rgb.b));\n\n return { h: h, w: w * 100, b: b * 100 };\n}\n\nexport function hwb2rgb(hwb: Hwb): Rgb {\n const h = hwb.h / 360;\n let w = hwb.w / 100;\n let b = hwb.b / 100;\n const ratio = w + b;\n let f = 0;\n if (ratio > 1) { // w + b cannot be > 1\n w /= ratio;\n b /= ratio;\n }\n const i = Math.floor(6 * h);\n const v = 1 - b;\n f = 6 * h - i;\n if ((i & 0x01) != 0) {\n f = 1 - f;\n }\n const n = w + f * (v - w); // linear interpolation\n switch (i) {\n default:\n case 6:\n case 0:\n return {\n r: (v * 255),\n g: (n * 255),\n b: (w * 255),\n };\n case 1:\n return {\n r: (n * 255),\n g: (v * 255),\n b: (w * 255),\n };\n case 2:\n return {\n r: (w * 255),\n g: (v * 255),\n b: (n * 255),\n };\n case 3:\n return {\n r: (w * 255),\n g: (n * 255),\n b: (v * 255),\n };\n case 4:\n return {\n r: (n * 255),\n g: (w * 255),\n b: (v * 255),\n };\n case 5:\n return {\n r: (v * 255),\n g: (w * 255),\n b: (n * 255),\n };\n }\n}\n\nexport function hwb2hcg(hwb: Hwb): Hcg {\n const w = hwb.w / 100;\n const b = hwb.b / 100;\n const v = 1 - b;\n const c = v - w;\n let g = 0;\n if (c < 1) {\n g = (v - c) / (1 - c);\n }\n return {\n h: hwb.h,\n c: c * 100,\n g: g * 100,\n };\n}\n\nexport function hcg2rgb(hcg: Hcg): Rgb {\n const h = hcg.h / 360;\n const c = hcg.c / 100;\n const g = hcg.g / 100;\n if (c === 0) {\n return { r: g * 255, g: g * 255, b: g * 255 };\n }\n let pure0 = 0, pure1 = 0, pure2 = 0;\n const hi: number = modulo(h, 1) * 6;\n const v: number = modulo(hi, 1);\n const w: number = 1 - v;\n let mg = 0;\n switch (Math.floor(hi)) {\n case 0:\n pure0 = 1;\n pure1 = v;\n pure2 = 0;\n break;\n case 1:\n pure0 = w;\n pure1 = 1;\n pure2 = 0;\n break;\n case 2:\n pure0 = 0;\n pure1 = 1;\n pure2 = v;\n break;\n case 3:\n pure0 = 0;\n pure1 = w;\n pure2 = 1;\n break;\n case 4:\n pure0 = v;\n pure1 = 0;\n pure2 = 1;\n break;\n default:\n pure0 = 1;\n pure1 = 0;\n pure2 = w;\n break;\n }\n mg = (1.0 - c) * g;\n return {\n r: (c * pure0 + mg) * 255,\n g: (c * pure1 + mg) * 255,\n b: (c * pure2 + mg) * 255,\n };\n}\n\nexport function hcg2hsv(hcg: Hcg): Hsv {\n const c = hcg.c / 100;\n const g = hcg.g / 100;\n const v = c + g * (1.0 - c);\n let s = 0;\n if (v > 0.0) {\n s = c / v;\n }\n return {\n h: hcg.h,\n s: s * 100,\n v: v * 100,\n };\n}\n\nexport function hcg2hsl(hcg: Hcg): Hsl {\n const c = hcg.c / 100;\n const g = hcg.g / 100;\n const l: number = g * (1.0 - c) + 0.5 * c;\n let s = 0;\n if (l > 0.0 && l < 0.5) {\n s = c / (2 * l);\n } else if (l >= 0.5 && l < 1.0) {\n s = c / (2 * (1 - l));\n }\n return {\n h: hcg.h,\n s: s * 100,\n l: l * 100,\n };\n}\n\nexport function hcg2hwb(hcg: Hcg): Hwb {\n const c = hcg.c / 100;\n const g = hcg.g / 100;\n const v: number = c + g * (1.0 - c);\n return {\n h: hcg.h,\n w: (v - c) * 100,\n b: (1 - v) * 100,\n };\n}\n\nexport function gray2rgb(gray: number): Rgb {\n return {\n r: (gray / 100) * 255,\n g: (gray / 100) * 255,\n b: (gray / 100) * 255,\n };\n}\n\nexport function gray2hsl(gray: number): Hsl {\n return {\n h: 0,\n s: 0,\n l: gray,\n };\n}\n\nexport function gray2hsv(gray: number): Hsv {\n return {\n h: 0,\n s: 0,\n v: gray,\n };\n}\n\nexport function gray2hwb(gray: number): Hwb {\n return {\n h: 0,\n w: 100,\n b: gray,\n };\n}\n\nexport function gray2cmyk(gray: number): Cmyk {\n return {\n c: 0,\n m: 0,\n y: 0,\n k: gray,\n };\n}\n\nexport function gray2lab(gray: number): Lab {\n return {\n l: gray,\n a: 0,\n b: 0,\n };\n}\n\nexport function rgb2lab(rgb: Rgb): Lab {\n let r = rgb.r / 255,\n g = rgb.g / 255,\n b = rgb.b / 255;\n let x = 0, y = 0, z = 0;\n\n r = (r > 0.04045) ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;\n g = (g > 0.04045) ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;\n b = (b > 0.04045) ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;\n\n x = (r * 0.4124 + g * 0.3576 + b * 0.1805) / 0.95047;\n y = (r * 0.2126 + g * 0.7152 + b * 0.0722) / 1.00000;\n z = (r * 0.0193 + g * 0.1192 + b * 0.9505) / 1.08883;\n\n x = (x > 0.008856) ? Math.pow(x, 1 / 3) : (7.787 * x) + 16 / 116;\n y = (y > 0.008856) ? Math.pow(y, 1 / 3) : (7.787 * y) + 16 / 116;\n z = (z > 0.008856) ? Math.pow(z, 1 / 3) : (7.787 * z) + 16 / 116;\n\n return { l: (116 * y) - 16, a: 500 * (x - y), b: 200 * (y - z) };\n}\n\nexport function lab2lyz(lab: Lab): Lyz {\n let y = (lab.l + 16) / 116;\n let x = lab.a / 500 + y;\n let z = y - lab.b / 200;\n const x2: number = Math.pow(x, 3);\n const y2: number = Math.pow(y, 3);\n const z2: number = Math.pow(z, 3);\n if (x2 > 0.008856) {\n x = x2;\n } else {\n x = (x - 16.0 / 116.0) / 7.787;\n }\n if (y2 > 0.008856) {\n y = y2;\n } else {\n y = (y - 16.0 / 116.0) / 7.787;\n }\n if (z2 > 0.008856) {\n z = z2;\n } else {\n z = (z - 16.0 / 116.0) / 7.787;\n }\n x *= 95.047;\n y *= 100;\n z *= 108.883;\n return {\n l: x,\n y: y,\n z: z,\n };\n}\n\nexport function lab2lch(lab: Lab): Lch {\n let h: number;\n const hr: number = Math.atan2(lab.b, lab.a);\n h = hr * 360.0 / 2.0 / Math.PI;\n if (h < 0) {\n h += 360;\n }\n const c: number = Math.sqrt(lab.a * lab.a + lab.b * lab.b);\n return {\n l: lab.l,\n c: c,\n h: h,\n };\n}\n\nexport function lch2lab(lch: Lch): Lab {\n const hr: number = lch.h / 360.0 * 2 * Math.PI;\n const a: number = lch.c * Math.cos(hr);\n const b: number = lch.c * Math.sin(hr);\n return {\n l: lch.l,\n a: a,\n b: b,\n };\n}\n\nexport function xyz2rgb(xyz: Xyz): Rgb {\n const x = xyz.x / 100;\n const y = xyz.y / 100;\n const z = xyz.z / 100;\n let r: number;\n let g: number;\n let b: number;\n r = (x * 3.2404542) + (y * -1.5371385) + (z * -0.4985314);\n g = (x * -0.969266) + (y * 1.8760108) + (z * 0.041556);\n b = (x * 0.0556434) + (y * -0.2040259) + (z * 1.0572252);\n\n if (r > 0.0031308) {\n r = (1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055;\n } else {\n r = r * 12.92;\n }\n if (g > 0.0031308) {\n g = (1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055;\n } else {\n g = g * 12.92;\n }\n if (b > 0.0031308) {\n b = (1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055;\n } else {\n b = b * 12.92;\n }\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255,\n };\n}\n\nexport function xyz2lab(xyz: Xyz): Lab {\n let x = xyz.x / 95.047;\n let y = xyz.y / 100;\n let z = xyz.z / 108.883;\n if (x > 0.008856) {\n x = Math.pow(x, 1.0 / 3.0);\n } else {\n x = (7.787 * x) + (16.0 / 116.0);\n }\n if (y > 0.008856) {\n y = Math.pow(y, 1.0 / 3.0);\n } else {\n y = (7.787 * y) + (16.0 / 116.0);\n }\n if (z > 0.008856) {\n z = Math.pow(z, 1.0 / 3.0);\n } else {\n z = (7.787 * z) + (16.0 / 116.0);\n }\n return {\n l: (116 * y) - 16,\n a: 500 * (x - y),\n b: 200 * (y - z),\n };\n}\n\nexport function rgb2xyz(rgb: Rgb): Xyz {\n const [var_R, var_G, var_B] = [rgb.r, rgb.g, rgb.b]\n .map((x) => x / 255)\n .map((x) => x > 0.04045 ? Math.pow((x + 0.055) / 1.055, 2.4) : x / 12.92)\n .map((x) => x * 100);\n return {\n x: var_R * 0.412453 + var_G * 0.357580 + var_B * 0.180423,\n y: var_R * 0.212671 + var_G * 0.715160 + var_B * 0.072169,\n z: var_R * 0.019334 + var_G * 0.119193 + var_B * 0.950227,\n };\n}\n"],"mappings":"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","names":[]}
|