precise-colors 0.9.2 → 0.9.4

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 ADDED
@@ -0,0 +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
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![npm version](https://img.shields.io/badge/precise--colors-CC3534?logo=npm)](https://www.npmjs.com/package/precise-colors)
2
+
1
3
  # precise-colors
2
4
 
3
5
  This library converts colors between various models without performing any rounding.
package/dist/index.d.mts CHANGED
@@ -1,7 +1,11 @@
1
1
  interface Cmyk {
2
+ /** [0..100] */
2
3
  readonly c: number;
4
+ /** [0..100] */
3
5
  readonly m: number;
6
+ /** [0..100] */
4
7
  readonly y: number;
8
+ /** [0..100] */
5
9
  readonly k: number;
6
10
  }
7
11
  interface Apple {
@@ -10,8 +14,11 @@ interface Apple {
10
14
  readonly b16: number;
11
15
  }
12
16
  interface Rgb {
17
+ /** [0..255] */
13
18
  readonly r: number;
19
+ /** [0..255] */
14
20
  readonly g: number;
21
+ /** [0..255] */
15
22
  readonly b: number;
16
23
  }
17
24
  interface Hsl {
package/dist/index.d.ts CHANGED
@@ -1,7 +1,11 @@
1
1
  interface Cmyk {
2
+ /** [0..100] */
2
3
  readonly c: number;
4
+ /** [0..100] */
3
5
  readonly m: number;
6
+ /** [0..100] */
4
7
  readonly y: number;
8
+ /** [0..100] */
5
9
  readonly k: number;
6
10
  }
7
11
  interface Apple {
@@ -10,8 +14,11 @@ interface Apple {
10
14
  readonly b16: number;
11
15
  }
12
16
  interface Rgb {
17
+ /** [0..255] */
13
18
  readonly r: number;
19
+ /** [0..255] */
14
20
  readonly g: number;
21
+ /** [0..255] */
15
22
  readonly b: number;
16
23
  }
17
24
  interface Hsl {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/color.ts"],"sourcesContent":["export interface Cmyk {\n readonly c: number;\n readonly m: number;\n readonly y: number;\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 readonly r: number;\n readonly g: number;\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 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 +1 @@
1
- {"version":3,"sources":["../src/color.ts"],"sourcesContent":["export interface Cmyk {\n readonly c: number;\n readonly m: number;\n readonly y: number;\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 readonly r: number;\n readonly g: number;\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 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":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "precise-colors",
3
- "version": "0.9.2",
3
+ "version": "0.9.4",
4
4
  "description": "This library converts colors between various models without performing any rounding.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -8,6 +8,10 @@
8
8
  "files": [
9
9
  "dist"
10
10
  ],
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://github.com/king8fisher/precise-colors.git"
14
+ },
11
15
  "keywords": [
12
16
  "colors",
13
17
  "round",