@thi.ng/color 5.6.2 → 5.6.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/CHANGELOG.md +1 -1
- package/README.md +1 -1
- package/alpha.js +6 -10
- package/analog.js +35 -67
- package/api/constants.js +128 -156
- package/api/gradients.js +0 -1
- package/api/names.js +154 -151
- package/api/ranges.js +0 -1
- package/api/system.js +21 -26
- package/api.js +27 -32
- package/clamp.js +18 -29
- package/closest-hue.js +6 -12
- package/color-range.js +159 -228
- package/color.js +29 -28
- package/contrast.js +7 -17
- package/convert.js +19 -40
- package/cosine-gradients.js +177 -229
- package/css/css.js +27 -53
- package/css/parse-css.js +94 -160
- package/defcolor.js +97 -108
- package/distance.js +96 -187
- package/gradients.js +29 -37
- package/hcy/hcy-rgb.js +20 -13
- package/hcy/hcy.js +9 -11
- package/hsi/hsi-rgb.js +32 -30
- package/hsi/hsi.js +9 -11
- package/hsl/hsl-css.js +9 -10
- package/hsl/hsl-hsv.js +12 -9
- package/hsl/hsl-rgb.js +14 -6
- package/hsl/hsl.js +14 -16
- package/hsv/hsv-css.js +4 -1
- package/hsv/hsv-hsl.js +11 -8
- package/hsv/hsv-rgb.js +14 -6
- package/hsv/hsv.js +14 -16
- package/hue.js +12 -12
- package/int/int-css.js +10 -6
- package/int/int-int.js +6 -10
- package/int/int-rgb.js +16 -5
- package/int/int-srgb.js +22 -4
- package/int/int.js +136 -142
- package/internal/css.js +16 -12
- package/internal/dispatch.js +6 -2
- package/internal/ensure.js +18 -16
- package/internal/matrix-ops.js +39 -41
- package/internal/scale.js +4 -2
- package/invert.js +46 -39
- package/is-black.js +12 -5
- package/is-gamut.js +8 -13
- package/is-gray.js +12 -5
- package/is-white.js +14 -7
- package/lab/lab-css.js +4 -9
- package/lab/lab-lab.js +6 -2
- package/lab/lab-lch.js +18 -10
- package/lab/lab-rgb.js +6 -14
- package/lab/lab-xyz.js +16 -20
- package/lab/lab50.js +18 -15
- package/lab/lab65.js +18 -15
- package/lch/lch-css.js +4 -9
- package/lch/lch.js +18 -23
- package/lighten.js +13 -17
- package/linear.js +6 -16
- package/luminance-rgb.js +14 -22
- package/luminance.js +16 -14
- package/max-chroma.js +1340 -227
- package/mix.js +34 -82
- package/oklab/oklab-css.js +4 -9
- package/oklab/oklab-rgb.js +17 -23
- package/oklab/oklab-xyz.js +22 -9
- package/oklab/oklab.js +19 -22
- package/oklch/oklab-oklch.js +10 -11
- package/oklch/oklch-css.js +4 -9
- package/oklch/oklch-oklab.js +9 -9
- package/oklch/oklch.js +14 -20
- package/package.json +19 -17
- package/rgb/hue-rgb.js +14 -11
- package/rgb/kelvin-rgba.js +23 -22
- package/rgb/rgb-css.js +4 -1
- package/rgb/rgb-hcv.js +14 -15
- package/rgb/rgb-hcy.js +10 -14
- package/rgb/rgb-hsi.js +13 -8
- package/rgb/rgb-hsl.js +8 -5
- package/rgb/rgb-hsv.js +7 -4
- package/rgb/rgb-lab.js +6 -18
- package/rgb/rgb-oklab.js +13 -19
- package/rgb/rgb-srgb.js +18 -8
- package/rgb/rgb-xyz.js +6 -19
- package/rgb/rgb-ycc.js +12 -17
- package/rgb/rgb.js +25 -22
- package/rotate.js +25 -38
- package/sort.js +24 -72
- package/srgb/srgb-css.js +9 -9
- package/srgb/srgb-int.js +6 -10
- package/srgb/srgb-rgb.js +18 -8
- package/srgb/srgb.js +16 -13
- package/strategies.js +42 -112
- package/swatches.js +28 -5
- package/tint.js +27 -53
- package/transform.js +274 -149
- package/variations.js +10 -9
- package/xyy/xyy-xyz.js +12 -11
- package/xyy/xyy.js +16 -13
- package/xyz/wavelength-xyz.js +14 -28
- package/xyz/xyz-lab.js +17 -26
- package/xyz/xyz-oklab.js +4 -1
- package/xyz/xyz-rgb.js +6 -18
- package/xyz/xyz-xyy.js +13 -12
- package/xyz/xyz-xyz.js +6 -2
- package/xyz/xyz50.js +20 -17
- package/xyz/xyz65.js +20 -17
- package/ycc/ycc-rgb.js +14 -19
- package/ycc/ycc.js +12 -9
package/hsv/hsv-css.js
CHANGED
package/hsv/hsv-hsl.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { clampH } from "../clamp.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
const hsvHsl = (out, src) => {
|
|
3
|
+
out = clampH(out || src, src);
|
|
4
|
+
const s = out[1];
|
|
5
|
+
const v = out[2];
|
|
6
|
+
const l = (2 - s) * v / 2;
|
|
7
|
+
out[2] = l;
|
|
8
|
+
out[1] = l && l < 1 ? s * v / (l < 0.5 ? l * 2 : 2 - l * 2) : s;
|
|
9
|
+
return out;
|
|
10
|
+
};
|
|
11
|
+
export {
|
|
12
|
+
hsvHsl
|
|
10
13
|
};
|
package/hsv/hsv-rgb.js
CHANGED
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
import { setC3 } from "@thi.ng/vectors/setc";
|
|
2
2
|
import { clampH } from "../clamp.js";
|
|
3
3
|
import { hueRgb } from "../rgb/hue-rgb.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
const hsvRgb = (out, src) => {
|
|
5
|
+
out = clampH(out || src, src);
|
|
6
|
+
const s = out[1];
|
|
7
|
+
const v = out[2];
|
|
8
|
+
hueRgb(out, src[0], out[3]);
|
|
9
|
+
return setC3(
|
|
10
|
+
out,
|
|
11
|
+
((out[0] - 1) * s + 1) * v,
|
|
12
|
+
((out[1] - 1) * s + 1) * v,
|
|
13
|
+
((out[2] - 1) * s + 1) * v
|
|
14
|
+
);
|
|
15
|
+
};
|
|
16
|
+
export {
|
|
17
|
+
hsvRgb
|
|
10
18
|
};
|
package/hsv/hsv.js
CHANGED
|
@@ -5,20 +5,18 @@ import { labRgb } from "../lab/lab-rgb.js";
|
|
|
5
5
|
import { rgbHsv } from "../rgb/rgb-hsv.js";
|
|
6
6
|
import { rgbSrgb } from "../rgb/rgb-srgb.js";
|
|
7
7
|
import { hsvRgb } from "./hsv-rgb.js";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
srgb: rgbHsv,
|
|
20
|
-
hsl: hslHsv,
|
|
21
|
-
lch: [lchLab, labRgb, rgbSrgb, rgbHsv],
|
|
22
|
-
},
|
|
23
|
-
toRgb: hsvRgb,
|
|
8
|
+
const hsv = defColor({
|
|
9
|
+
mode: "hsv",
|
|
10
|
+
channels: { h: { hue: true } },
|
|
11
|
+
order: ["h", "s", "v", "alpha"],
|
|
12
|
+
from: {
|
|
13
|
+
rgb: rgbHsv,
|
|
14
|
+
srgb: rgbHsv,
|
|
15
|
+
hsl: hslHsv,
|
|
16
|
+
lch: [lchLab, labRgb, rgbSrgb, rgbHsv]
|
|
17
|
+
},
|
|
18
|
+
toRgb: hsvRgb
|
|
24
19
|
});
|
|
20
|
+
export {
|
|
21
|
+
hsv
|
|
22
|
+
};
|
package/hue.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { DEFAULT, defmulti } from "@thi.ng/defmulti/defmulti";
|
|
2
2
|
import { hsv } from "./hsv/hsv.js";
|
|
3
3
|
import { __dispatch0 } from "./internal/dispatch.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
* @remarks
|
|
8
|
-
* Since LCH uses different hue values than the more familiar HSV/HSL color
|
|
9
|
-
* wheel, LCH colors will be first converted to HSV to ensure uniform results.
|
|
10
|
-
*/
|
|
11
|
-
export const hue = defmulti(__dispatch0, {
|
|
4
|
+
const hue = defmulti(
|
|
5
|
+
__dispatch0,
|
|
6
|
+
{
|
|
12
7
|
hcy: "hsv",
|
|
13
8
|
hsi: "hsv",
|
|
14
|
-
hsl: "hsv"
|
|
15
|
-
},
|
|
9
|
+
hsl: "hsv"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
16
12
|
[DEFAULT]: (col) => hsv(col)[0],
|
|
17
|
-
hsv: (col) => col[0]
|
|
18
|
-
}
|
|
13
|
+
hsv: (col) => col[0]
|
|
14
|
+
}
|
|
15
|
+
);
|
|
16
|
+
export {
|
|
17
|
+
hue
|
|
18
|
+
};
|
package/int/int-css.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { U24 } from "@thi.ng/strings/radix";
|
|
2
2
|
import { FF, INV8BIT } from "../api/constants.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
const intArgb32Css = (src) => {
|
|
4
|
+
const a = src >>> 24;
|
|
5
|
+
return a < 255 ? `rgba(${src >> 16 & 255},${src >> 8 & 255},${src & 255},${FF(
|
|
6
|
+
a * INV8BIT
|
|
7
|
+
)})` : `#${U24(src & 16777215)}`;
|
|
8
|
+
};
|
|
9
|
+
const intRgb24Css = (src) => `#${U24(src & 16777215)}`;
|
|
10
|
+
export {
|
|
11
|
+
intArgb32Css,
|
|
12
|
+
intRgb24Css
|
|
8
13
|
};
|
|
9
|
-
export const intRgb24Css = (src) => `#${U24(src & 0xffffff)}`;
|
package/int/int-int.js
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { swapLane13 } from "@thi.ng/binary/swizzle";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Alias for {@link intArgbAbgr}.
|
|
10
|
-
*/
|
|
11
|
-
export const intAbgr32Argb32 = swapLane13;
|
|
2
|
+
const intArgb32Abgr32 = swapLane13;
|
|
3
|
+
const intAbgr32Argb32 = swapLane13;
|
|
4
|
+
export {
|
|
5
|
+
intAbgr32Argb32,
|
|
6
|
+
intArgb32Abgr32
|
|
7
|
+
};
|
package/int/int-rgb.js
CHANGED
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
import { srgbRgb } from "../srgb/srgb-rgb.js";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
import {
|
|
3
|
+
intAbgr32Srgb,
|
|
4
|
+
intArgb32Srgb,
|
|
5
|
+
intBgr24Srgb,
|
|
6
|
+
intRgb24Srgb
|
|
7
|
+
} from "./int-srgb.js";
|
|
8
|
+
const intArgb32Rgb = (out, src) => srgbRgb(null, intArgb32Srgb(out, src));
|
|
9
|
+
const intRgb24Rgb = (out, src) => srgbRgb(null, intRgb24Srgb(out, src));
|
|
10
|
+
const intAbgr32Rgb = (out, src) => srgbRgb(null, intAbgr32Srgb(out, src));
|
|
11
|
+
const intBgr24Rgb = (out, src) => srgbRgb(null, intBgr24Srgb(out, src));
|
|
12
|
+
export {
|
|
13
|
+
intAbgr32Rgb,
|
|
14
|
+
intArgb32Rgb,
|
|
15
|
+
intBgr24Rgb,
|
|
16
|
+
intRgb24Rgb
|
|
17
|
+
};
|
package/int/int-srgb.js
CHANGED
|
@@ -1,6 +1,24 @@
|
|
|
1
1
|
import { setC4 } from "@thi.ng/vectors/setc";
|
|
2
2
|
import { INV8BIT } from "../api/constants.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
const intArgb32Srgb = (out, src) => setC4(
|
|
4
|
+
out || [],
|
|
5
|
+
(src >>> 16 & 255) * INV8BIT,
|
|
6
|
+
(src >>> 8 & 255) * INV8BIT,
|
|
7
|
+
(src & 255) * INV8BIT,
|
|
8
|
+
(src >>> 24) * INV8BIT
|
|
9
|
+
);
|
|
10
|
+
const intAbgr32Srgb = (out, src) => setC4(
|
|
11
|
+
out || [],
|
|
12
|
+
(src & 255) * INV8BIT,
|
|
13
|
+
(src >>> 8 & 255) * INV8BIT,
|
|
14
|
+
(src >>> 16 & 255) * INV8BIT,
|
|
15
|
+
(src >>> 24) * INV8BIT
|
|
16
|
+
);
|
|
17
|
+
const intRgb24Srgb = (out, src) => intArgb32Srgb(out, src | 4278190080);
|
|
18
|
+
const intBgr24Srgb = (out, src) => intAbgr32Srgb(out, src | 4278190080);
|
|
19
|
+
export {
|
|
20
|
+
intAbgr32Srgb,
|
|
21
|
+
intArgb32Srgb,
|
|
22
|
+
intBgr24Srgb,
|
|
23
|
+
intRgb24Srgb
|
|
24
|
+
};
|
package/int/int.js
CHANGED
|
@@ -12,152 +12,146 @@ import { __scale8bit } from "../internal/scale.js";
|
|
|
12
12
|
import { srgb } from "../srgb/srgb.js";
|
|
13
13
|
import { srgbIntAbgr32, srgbIntArgb32 } from "../srgb/srgb-int.js";
|
|
14
14
|
import { intArgb32Srgb } from "./int-srgb.js";
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
15
|
+
class Int32 {
|
|
16
|
+
constructor(buf, offset = 0, stride = 1) {
|
|
17
|
+
this.offset = offset;
|
|
18
|
+
this.stride = stride;
|
|
19
|
+
this.buf = buf || [0];
|
|
20
|
+
}
|
|
21
|
+
buf;
|
|
22
|
+
value;
|
|
23
|
+
eqDelta(o, eps) {
|
|
24
|
+
return eqDelta4(
|
|
25
|
+
// channel order irrelevant here...
|
|
26
|
+
intArgb32Srgb([], this[0]),
|
|
27
|
+
intArgb32Srgb([], o[0]),
|
|
28
|
+
eps
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
get length() {
|
|
32
|
+
return 1;
|
|
33
|
+
}
|
|
34
|
+
get range() {
|
|
35
|
+
return [[0], [4294967295]];
|
|
36
|
+
}
|
|
37
|
+
get alpha() {
|
|
38
|
+
return (this[0] >>> 24) / 255;
|
|
39
|
+
}
|
|
40
|
+
set alpha(x) {
|
|
41
|
+
this[0] = this[0] & 16777215 | __scale8bit(x, 24);
|
|
42
|
+
}
|
|
43
|
+
get xyz() {
|
|
44
|
+
const val = this[0];
|
|
45
|
+
return [
|
|
46
|
+
(val >> 16 & 255) / 255,
|
|
47
|
+
(val >> 8 & 255) / 255,
|
|
48
|
+
(val & 255) / 255
|
|
49
|
+
];
|
|
50
|
+
}
|
|
51
|
+
*[Symbol.iterator]() {
|
|
52
|
+
yield this[0];
|
|
53
|
+
}
|
|
54
|
+
deref() {
|
|
55
|
+
return [this[0]];
|
|
56
|
+
}
|
|
57
|
+
randomize(rnd = SYSTEM) {
|
|
58
|
+
const x = this[0];
|
|
59
|
+
this[0] = x & 4278190080 | rnd.int() & 16777215;
|
|
60
|
+
return this;
|
|
61
|
+
}
|
|
62
|
+
clamp() {
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
set(src) {
|
|
66
|
+
this[0] = src[0];
|
|
67
|
+
return this;
|
|
68
|
+
}
|
|
69
|
+
toJSON() {
|
|
70
|
+
return [this[0]];
|
|
71
|
+
}
|
|
71
72
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
73
|
+
class ARGB extends Int32 {
|
|
74
|
+
get mode() {
|
|
75
|
+
return "argb32";
|
|
76
|
+
}
|
|
77
|
+
get r() {
|
|
78
|
+
return (this[0] >> 16 & 255) / 255;
|
|
79
|
+
}
|
|
80
|
+
set r(x) {
|
|
81
|
+
this[0] = this[0] & 4278255615 | __scale8bit(x, 16);
|
|
82
|
+
}
|
|
83
|
+
get g() {
|
|
84
|
+
return (this[0] >> 8 & 255) / 255;
|
|
85
|
+
}
|
|
86
|
+
set g(x) {
|
|
87
|
+
this[0] = this[0] & 4294902015 | __scale8bit(x, 8);
|
|
88
|
+
}
|
|
89
|
+
get b() {
|
|
90
|
+
return (this[0] & 255) / 255;
|
|
91
|
+
}
|
|
92
|
+
set b(x) {
|
|
93
|
+
this[0] = this[0] & 4294967040 | __scale8bit(x);
|
|
94
|
+
}
|
|
95
|
+
copy() {
|
|
96
|
+
return new ARGB([this[0]]);
|
|
97
|
+
}
|
|
98
|
+
copyView() {
|
|
99
|
+
return new ARGB(this.buf, this.offset, this.stride);
|
|
100
|
+
}
|
|
101
|
+
empty() {
|
|
102
|
+
return new ARGB();
|
|
103
|
+
}
|
|
103
104
|
}
|
|
104
105
|
declareIndex(ARGB.prototype, "value", 0);
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
106
|
+
class ABGR extends Int32 {
|
|
107
|
+
get mode() {
|
|
108
|
+
return "abgr32";
|
|
109
|
+
}
|
|
110
|
+
get r() {
|
|
111
|
+
return (this[0] & 255) / 255;
|
|
112
|
+
}
|
|
113
|
+
set r(x) {
|
|
114
|
+
this[0] = this[0] & 4294967040 | __scale8bit(x);
|
|
115
|
+
}
|
|
116
|
+
get g() {
|
|
117
|
+
return (this[0] >> 8 & 255) / 255;
|
|
118
|
+
}
|
|
119
|
+
set g(x) {
|
|
120
|
+
this[0] = this[0] & 4294902015 | __scale8bit(x, 8);
|
|
121
|
+
}
|
|
122
|
+
get b() {
|
|
123
|
+
return (this[0] >> 16 & 255) / 255;
|
|
124
|
+
}
|
|
125
|
+
set b(x) {
|
|
126
|
+
this[0] = this[0] & 4278255615 | __scale8bit(x, 16);
|
|
127
|
+
}
|
|
128
|
+
copy() {
|
|
129
|
+
return new ABGR([this[0]]);
|
|
130
|
+
}
|
|
131
|
+
copyView() {
|
|
132
|
+
return new ABGR(this.buf, this.offset, this.stride);
|
|
133
|
+
}
|
|
134
|
+
empty() {
|
|
135
|
+
return new ABGR();
|
|
136
|
+
}
|
|
136
137
|
}
|
|
137
138
|
declareIndex(ABGR.prototype, "value", 0);
|
|
138
139
|
const defInt = (ctor, fromSrgb) => {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
factory.random = (rnd = SYSTEM, buf, idx, stride) => (new ctor(buf, idx, stride).set([
|
|
157
|
-
(rnd.int() & 0xffffff) | 0xff000000,
|
|
158
|
-
]));
|
|
159
|
-
factory.mapBuffer = (buf, num = buf.length, start = 0, cstride = 1, estride = 1) => mapStridedBuffer(ctor, buf, num, start, cstride, estride);
|
|
160
|
-
return factory;
|
|
140
|
+
const factory = (src, ...xs) => src == null ? new ctor() : isNumber(src) ? xs.length && xs.every(isNumber) ? new ctor([srgbIntArgb32([src, ...xs])]) : new ctor([src], ...xs) : isString(src) ? factory(parseCss(src)) : isArrayLike(src) ? isString(src.mode) ? new ctor([fromSrgb(srgb(src))], ...xs) : new ctor(src, ...xs) : implementsFunction(src, "deref") ? new ctor([fromSrgb(srgb(src))], ...xs) : illegalArgs(`can't create a ARGB32 color from: ${src}`);
|
|
141
|
+
factory.class = ctor;
|
|
142
|
+
factory.range = [[0], [4294967295]];
|
|
143
|
+
factory.random = (rnd = SYSTEM, buf, idx, stride) => new ctor(buf, idx, stride).set([
|
|
144
|
+
rnd.int() & 16777215 | 4278190080
|
|
145
|
+
]);
|
|
146
|
+
factory.mapBuffer = (buf, num = buf.length, start = 0, cstride = 1, estride = 1) => mapStridedBuffer(ctor, buf, num, start, cstride, estride);
|
|
147
|
+
return factory;
|
|
148
|
+
};
|
|
149
|
+
const argb32 = defInt(ARGB, srgbIntArgb32);
|
|
150
|
+
const abgr32 = defInt(ABGR, srgbIntAbgr32);
|
|
151
|
+
export {
|
|
152
|
+
ABGR,
|
|
153
|
+
ARGB,
|
|
154
|
+
Int32,
|
|
155
|
+
abgr32,
|
|
156
|
+
argb32
|
|
161
157
|
};
|
|
162
|
-
export const argb32 = defInt(ARGB, srgbIntArgb32);
|
|
163
|
-
export const abgr32 = defInt(ABGR, srgbIntAbgr32);
|
package/internal/css.js
CHANGED
|
@@ -2,17 +2,21 @@ import { clamp0 } from "@thi.ng/math/interval";
|
|
|
2
2
|
import { fract } from "@thi.ng/math/prec";
|
|
3
3
|
import { FF, PC } from "../api/constants.js";
|
|
4
4
|
import { __ensureAlpha } from "./ensure.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
const __labCss = (mode, src, scale) => {
|
|
6
|
+
const l = PC(clamp0(src[0]));
|
|
7
|
+
const a = FF(src[1] * scale);
|
|
8
|
+
const b = FF(src[2] * scale);
|
|
9
|
+
const alpha = __ensureAlpha(src[3]);
|
|
10
|
+
return `${mode}(${l} ${a} ${b}` + (alpha < 1 ? `/${FF(alpha)})` : ")");
|
|
11
11
|
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
const __lchCss = (mode, src, scaleC) => {
|
|
13
|
+
const l = PC(clamp0(src[0]));
|
|
14
|
+
const c = FF(clamp0(src[1]) * scaleC);
|
|
15
|
+
const h = FF(fract(src[2]) * 360);
|
|
16
|
+
const a = __ensureAlpha(src[3]);
|
|
17
|
+
return `${mode}(${l} ${c} ${h}` + (a < 1 ? `/${FF(a)})` : ")");
|
|
18
|
+
};
|
|
19
|
+
export {
|
|
20
|
+
__labCss,
|
|
21
|
+
__lchCss
|
|
18
22
|
};
|
package/internal/dispatch.js
CHANGED
package/internal/ensure.js
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import { clamp01 } from "@thi.ng/math/interval";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
default:
|
|
15
|
-
return [args];
|
|
16
|
-
}
|
|
2
|
+
const __ensureAlpha = (x, def = 1) => x != void 0 ? clamp01(x) : def;
|
|
3
|
+
const __ensureArgs = (args) => {
|
|
4
|
+
if (typeof args[0] === "number") {
|
|
5
|
+
switch (args.length) {
|
|
6
|
+
case 1:
|
|
7
|
+
return args.push(0, 0, 1), [args];
|
|
8
|
+
case 2:
|
|
9
|
+
return args.push(0, 1), [args];
|
|
10
|
+
case 3:
|
|
11
|
+
return args.push(1), [args];
|
|
12
|
+
default:
|
|
13
|
+
return [args];
|
|
17
14
|
}
|
|
18
|
-
|
|
15
|
+
}
|
|
16
|
+
return args;
|
|
17
|
+
};
|
|
18
|
+
export {
|
|
19
|
+
__ensureAlpha,
|
|
20
|
+
__ensureArgs
|
|
19
21
|
};
|