@flighthq/color 0.2.1-next.451.d9a4a4e → 0.2.1-next.530.a223ca9
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/dist/colorFromKelvin.d.ts +1 -1
- package/dist/colorFromKelvin.d.ts.map +1 -1
- package/dist/colorFromKelvin.js +2 -2
- package/dist/colorFromKelvin.js.map +1 -1
- package/dist/hslColor.d.ts +1 -1
- package/dist/hslColor.d.ts.map +1 -1
- package/dist/hslColor.js +1 -1
- package/dist/hslColor.js.map +1 -1
- package/dist/hsvColor.d.ts +1 -1
- package/dist/hsvColor.d.ts.map +1 -1
- package/dist/hsvColor.js +1 -1
- package/dist/hsvColor.js.map +1 -1
- package/dist/packColor.d.ts +1 -1
- package/dist/packColor.d.ts.map +1 -1
- package/dist/packColor.js +4 -4
- package/dist/packColor.js.map +1 -1
- package/package.json +2 -2
- package/src/colorFromKelvin.test.ts +11 -11
- package/src/hslColor.test.ts +3 -3
- package/src/hsvColor.test.ts +3 -3
- package/src/lerpColor.test.ts +4 -4
- package/src/packColor.test.ts +15 -15
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function
|
|
1
|
+
export declare function colorFromKelvin(kelvin: number): number;
|
|
2
2
|
//# sourceMappingURL=colorFromKelvin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colorFromKelvin.d.ts","sourceRoot":"","sources":["../src/colorFromKelvin.ts"],"names":[],"mappings":"AAOA,wBAAgB,
|
|
1
|
+
{"version":3,"file":"colorFromKelvin.d.ts","sourceRoot":"","sources":["../src/colorFromKelvin.ts"],"names":[],"mappings":"AAOA,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAqCtD"}
|
package/dist/colorFromKelvin.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
//
|
|
1
|
+
// Converts a color temperature in Kelvin to a packed sRgb-albedo RGBA color (0xrrggbbaa).
|
|
2
2
|
// Uses the Tanner Helland piecewise approximation (accurate to within ±1% for 1000 K–40000 K),
|
|
3
3
|
// the same algorithm used in Blender, three.js, and Filament's color-temperature helper.
|
|
4
4
|
// Returns opaque white (0xffffffff) for temperatures outside the 1000–40000 K range.
|
|
5
5
|
//
|
|
6
6
|
// Common temperatures: 1800 K = candlelight, 3000 K = warm bulb, 5500 K = noon sunlight,
|
|
7
7
|
// 6500 K = D65 white, 10000 K = overcast sky.
|
|
8
|
-
export function
|
|
8
|
+
export function colorFromKelvin(kelvin) {
|
|
9
9
|
// Clamp to the valid range.
|
|
10
10
|
const temp = Math.max(1000, Math.min(40000, kelvin)) / 100;
|
|
11
11
|
let r;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colorFromKelvin.js","sourceRoot":"","sources":["../src/colorFromKelvin.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"colorFromKelvin.js","sourceRoot":"","sources":["../src/colorFromKelvin.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,+FAA+F;AAC/F,yFAAyF;AACzF,qFAAqF;AACrF,EAAE;AACF,yFAAyF;AACzF,8CAA8C;AAC9C,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,4BAA4B;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC;IAE3D,IAAI,CAAS,CAAC;IACd,IAAI,CAAS,CAAC;IACd,IAAI,CAAS,CAAC;IAEd,eAAe;IACf,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QACf,CAAC,GAAG,GAAG,CAAC;IACV,CAAC;SAAM,CAAC;QACN,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;IACzD,CAAC;IAED,iBAAiB;IACjB,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QACf,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED,gBAAgB;IAChB,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QACf,CAAC,GAAG,GAAG,CAAC;IACV,CAAC;SAAM,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QACtB,CAAC,GAAG,CAAC,CAAC;IACR,CAAC;SAAM,CAAC;QACN,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,cAAc,CAAC;IAC5D,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAErD,8CAA8C;IAC9C,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC"}
|
package/dist/hslColor.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type HslColor = [number, number, number];
|
|
2
|
-
export declare function
|
|
2
|
+
export declare function allocateHslColor(): HslColor;
|
|
3
3
|
export declare function hslToRgb(out: [number, number, number, number], h: number, s: number, l: number): void;
|
|
4
4
|
export declare function rgbToHsl(out: HslColor, color: number): HslColor;
|
|
5
5
|
//# sourceMappingURL=hslColor.d.ts.map
|
package/dist/hslColor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hslColor.d.ts","sourceRoot":"","sources":["../src/hslColor.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAGhD,wBAAgB,
|
|
1
|
+
{"version":3,"file":"hslColor.d.ts","sourceRoot":"","sources":["../src/hslColor.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAGhD,wBAAgB,gBAAgB,IAAI,QAAQ,CAE3C;AAKD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAarG;AAMD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CA2B/D"}
|
package/dist/hslColor.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Allocates a fresh zeroed `HslColor` for use as an `rgbToHsl` out parameter.
|
|
2
|
-
export function
|
|
2
|
+
export function allocateHslColor() {
|
|
3
3
|
return [0, 0, 0];
|
|
4
4
|
}
|
|
5
5
|
// Converts HSL to sRGB floats. Writes sRGB [0, 1] R/G/B to out[0..2] (h in [0, 360), s/l in
|
package/dist/hslColor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hslColor.js","sourceRoot":"","sources":["../src/hslColor.ts"],"names":[],"mappings":"AAIA,8EAA8E;AAC9E,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"hslColor.js","sourceRoot":"","sources":["../src/hslColor.ts"],"names":[],"mappings":"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"}
|
package/dist/hsvColor.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type HsvColor = [number, number, number];
|
|
2
|
-
export declare function
|
|
2
|
+
export declare function allocateHsvColor(): HsvColor;
|
|
3
3
|
export declare function hsvToRgb(out: [number, number, number, number], h: number, s: number, v: number): void;
|
|
4
4
|
export declare function rgbToHsv(out: HsvColor, color: number): HsvColor;
|
|
5
5
|
//# sourceMappingURL=hsvColor.d.ts.map
|
package/dist/hsvColor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hsvColor.d.ts","sourceRoot":"","sources":["../src/hsvColor.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAGhD,wBAAgB,
|
|
1
|
+
{"version":3,"file":"hsvColor.d.ts","sourceRoot":"","sources":["../src/hsvColor.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAGhD,wBAAgB,gBAAgB,IAAI,QAAQ,CAE3C;AAID,wBAAgB,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CA6CrG;AAKD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAuB/D"}
|
package/dist/hsvColor.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Allocates a fresh zeroed `HsvColor` for use as an `rgbToHsv` out parameter.
|
|
2
|
-
export function
|
|
2
|
+
export function allocateHsvColor() {
|
|
3
3
|
return [0, 0, 0];
|
|
4
4
|
}
|
|
5
5
|
// Converts HSV to RGB floats. Writes sRGB [0, 1] to out[0..2] (h in [0, 360), s/v in [0, 1]).
|
package/dist/hsvColor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hsvColor.js","sourceRoot":"","sources":["../src/hsvColor.ts"],"names":[],"mappings":"AAIA,8EAA8E;AAC9E,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"hsvColor.js","sourceRoot":"","sources":["../src/hsvColor.ts"],"names":[],"mappings":"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"}
|
package/dist/packColor.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { LinearColor } from '@flighthq/types';
|
|
2
2
|
export type { LinearColor };
|
|
3
|
+
export declare function allocateLinearColor(): LinearColor;
|
|
3
4
|
export declare function computeRgbHexString(color: number): string;
|
|
4
|
-
export declare function createLinearColor(): LinearColor;
|
|
5
5
|
export declare function getColorAlpha(color: number): number;
|
|
6
6
|
export declare function getColorRgb(color: number): number;
|
|
7
7
|
export declare function packColor(r: number, g: number, b: number, a: number): number;
|
package/dist/packColor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packColor.d.ts","sourceRoot":"","sources":["../src/packColor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD,YAAY,EAAE,WAAW,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"packColor.d.ts","sourceRoot":"","sources":["../src/packColor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD,YAAY,EAAE,WAAW,EAAE,CAAC;AAG5B,wBAAgB,mBAAmB,IAAI,WAAW,CAEjD;AAKD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzD;AAKD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAKD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AAKD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAM5E;AAKD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,MAAM,CAMtE;AAQD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAKD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGlE;AAID,wBAAgB,eAAe,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAK1F;AAQD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAMhF"}
|
package/dist/packColor.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { linearChannelToSrgb, srgbChannelToLinear } from './srgbTransfer';
|
|
2
|
+
// Allocates a fresh zeroed `LinearColor` for use as an `unpackColorToLinear` out parameter.
|
|
3
|
+
export function allocateLinearColor() {
|
|
4
|
+
return [0, 0, 0, 0];
|
|
5
|
+
}
|
|
2
6
|
// Takes a 24-bit RGB color (`0xRRGGBB`, e.g. a TextFormat color) and returns a
|
|
3
7
|
// CSS `#RRGGBB` string. Any high-byte bits are masked off, so a 32-bit RGBA
|
|
4
8
|
// value would keep `GGBBAA` — pass RGB, not RGBA.
|
|
5
9
|
export function computeRgbHexString(color) {
|
|
6
10
|
return `#${(color & 0xffffff).toString(16).padStart(6, '0')}`;
|
|
7
11
|
}
|
|
8
|
-
// Allocates a fresh zeroed `LinearColor` for use as an `unpackColorToLinear` out parameter.
|
|
9
|
-
export function createLinearColor() {
|
|
10
|
-
return [0, 0, 0, 0];
|
|
11
|
-
}
|
|
12
12
|
// Returns the alpha channel of a packed `0xRRGGBBAA` color as a float in [0, 1] — the inverse of
|
|
13
13
|
// `setColorAlpha`. RGB is ignored. Alpha is linear coverage, so this is a plain byte read with no
|
|
14
14
|
// gamma decode (unlike `unpackColorToLinear`, which decodes the RGB channels).
|
package/dist/packColor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packColor.js","sourceRoot":"","sources":["../src/packColor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAI1E,+EAA+E;AAC/E,4EAA4E;AAC5E,kDAAkD;AAClD,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"packColor.js","sourceRoot":"","sources":["../src/packColor.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/color",
|
|
3
|
-
"version": "0.2.1-next.
|
|
3
|
+
"version": "0.2.1-next.530.a223ca9",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/flighthq/flight.git",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@flighthq/types": "0.2.1-next.
|
|
35
|
+
"@flighthq/types": "0.2.1-next.530.a223ca9"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"typescript": "^5.3.0"
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { colorFromKelvin } from './colorFromKelvin';
|
|
2
2
|
|
|
3
|
-
describe('
|
|
3
|
+
describe('colorFromKelvin', () => {
|
|
4
4
|
it('returns opaque alpha (0xff) for all temperatures', () => {
|
|
5
|
-
expect(
|
|
6
|
-
expect(
|
|
7
|
-
expect(
|
|
5
|
+
expect(colorFromKelvin(3000) & 0xff).toBe(0xff);
|
|
6
|
+
expect(colorFromKelvin(6500) & 0xff).toBe(0xff);
|
|
7
|
+
expect(colorFromKelvin(10000) & 0xff).toBe(0xff);
|
|
8
8
|
});
|
|
9
9
|
|
|
10
10
|
it('returns white (0xffffffff) for D65 daylight (~6500 K)', () => {
|
|
11
|
-
const color =
|
|
11
|
+
const color = colorFromKelvin(6500);
|
|
12
12
|
const r = (color >>> 24) & 0xff;
|
|
13
13
|
const g = (color >>> 16) & 0xff;
|
|
14
14
|
const b = (color >>> 8) & 0xff;
|
|
@@ -19,8 +19,8 @@ describe('createColorFromKelvin', () => {
|
|
|
19
19
|
});
|
|
20
20
|
|
|
21
21
|
it('produces warmer (more red, less blue) color for lower temperatures', () => {
|
|
22
|
-
const warm =
|
|
23
|
-
const cool =
|
|
22
|
+
const warm = colorFromKelvin(2000);
|
|
23
|
+
const cool = colorFromKelvin(10000);
|
|
24
24
|
const warmR = (warm >>> 24) & 0xff;
|
|
25
25
|
const warmB = (warm >>> 8) & 0xff;
|
|
26
26
|
const coolR = (cool >>> 24) & 0xff;
|
|
@@ -31,15 +31,15 @@ describe('createColorFromKelvin', () => {
|
|
|
31
31
|
});
|
|
32
32
|
|
|
33
33
|
it('clamps inputs below 1000 K to 1000 K', () => {
|
|
34
|
-
expect(
|
|
34
|
+
expect(colorFromKelvin(500)).toBe(colorFromKelvin(1000));
|
|
35
35
|
});
|
|
36
36
|
|
|
37
37
|
it('clamps inputs above 40000 K to 40000 K', () => {
|
|
38
|
-
expect(
|
|
38
|
+
expect(colorFromKelvin(50000)).toBe(colorFromKelvin(40000));
|
|
39
39
|
});
|
|
40
40
|
|
|
41
41
|
it('returns a valid packed RGBA integer (unsigned 32-bit)', () => {
|
|
42
|
-
const color =
|
|
42
|
+
const color = colorFromKelvin(5500);
|
|
43
43
|
expect(color).toBeGreaterThanOrEqual(0);
|
|
44
44
|
expect(color).toBeLessThanOrEqual(0xffffffff);
|
|
45
45
|
// Must be an integer.
|
package/src/hslColor.test.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { allocateHslColor, hslToRgb, rgbToHsl } from './hslColor';
|
|
2
2
|
|
|
3
|
-
describe('
|
|
3
|
+
describe('allocateHslColor', () => {
|
|
4
4
|
it('allocates a zeroed three-component HSL color', () => {
|
|
5
|
-
expect(
|
|
5
|
+
expect(allocateHslColor()).toEqual([0, 0, 0]);
|
|
6
6
|
});
|
|
7
7
|
});
|
|
8
8
|
|
package/src/hsvColor.test.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { allocateHsvColor, hsvToRgb, rgbToHsv } from './hsvColor';
|
|
2
2
|
|
|
3
|
-
describe('
|
|
3
|
+
describe('allocateHsvColor', () => {
|
|
4
4
|
it('allocates a zeroed three-component HSV color', () => {
|
|
5
|
-
expect(
|
|
5
|
+
expect(allocateHsvColor()).toEqual([0, 0, 0]);
|
|
6
6
|
});
|
|
7
7
|
});
|
|
8
8
|
|
package/src/lerpColor.test.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { lerpColor, lerpLinearColor } from './lerpColor';
|
|
2
|
-
import {
|
|
2
|
+
import { allocateLinearColor } from './packColor';
|
|
3
3
|
|
|
4
4
|
describe('lerpColor', () => {
|
|
5
5
|
it('returns start at t=0', () => {
|
|
@@ -23,14 +23,14 @@ describe('lerpColor', () => {
|
|
|
23
23
|
|
|
24
24
|
describe('lerpLinearColor', () => {
|
|
25
25
|
it('returns start at t=0', () => {
|
|
26
|
-
const out =
|
|
26
|
+
const out = allocateLinearColor();
|
|
27
27
|
const start: [number, number, number, number] = [1, 0, 0, 1];
|
|
28
28
|
const end: [number, number, number, number] = [0, 0, 1, 1];
|
|
29
29
|
lerpLinearColor(out, start, end, 0);
|
|
30
30
|
expect(out).toEqual(start);
|
|
31
31
|
});
|
|
32
32
|
it('returns end at t=1', () => {
|
|
33
|
-
const out =
|
|
33
|
+
const out = allocateLinearColor();
|
|
34
34
|
const start: [number, number, number, number] = [1, 0, 0, 1];
|
|
35
35
|
const end: [number, number, number, number] = [0, 0, 1, 1];
|
|
36
36
|
lerpLinearColor(out, start, end, 1);
|
|
@@ -45,7 +45,7 @@ describe('lerpLinearColor', () => {
|
|
|
45
45
|
expect(out[2]).toBeCloseTo(0.5, 8);
|
|
46
46
|
});
|
|
47
47
|
it('returns the out instance', () => {
|
|
48
|
-
const out =
|
|
48
|
+
const out = allocateLinearColor();
|
|
49
49
|
const start: [number, number, number, number] = [0, 0, 0, 0];
|
|
50
50
|
const end: [number, number, number, number] = [1, 1, 1, 1];
|
|
51
51
|
expect(lerpLinearColor(out, start, end, 0.5)).toBe(out);
|
package/src/packColor.test.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
computeRgbHexString,
|
|
3
|
-
|
|
3
|
+
allocateLinearColor,
|
|
4
4
|
getColorAlpha,
|
|
5
5
|
getColorRgb,
|
|
6
6
|
packColor,
|
|
@@ -11,6 +11,12 @@ import {
|
|
|
11
11
|
unpackColorToLinear,
|
|
12
12
|
} from './packColor';
|
|
13
13
|
|
|
14
|
+
describe('allocateLinearColor', () => {
|
|
15
|
+
it('allocates a zeroed four-component color', () => {
|
|
16
|
+
expect(allocateLinearColor()).toEqual([0, 0, 0, 0]);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
|
|
14
20
|
describe('computeRgbHexString', () => {
|
|
15
21
|
it('returns a 6-digit hex string of the lower 24 bits', () => {
|
|
16
22
|
expect(computeRgbHexString(0x00ff0000)).toBe('#ff0000');
|
|
@@ -21,12 +27,6 @@ describe('computeRgbHexString', () => {
|
|
|
21
27
|
});
|
|
22
28
|
});
|
|
23
29
|
|
|
24
|
-
describe('createLinearColor', () => {
|
|
25
|
-
it('allocates a zeroed four-component color', () => {
|
|
26
|
-
expect(createLinearColor()).toEqual([0, 0, 0, 0]);
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
|
|
30
30
|
describe('getColorAlpha', () => {
|
|
31
31
|
it('returns the alpha byte as a float in [0, 1]', () => {
|
|
32
32
|
expect(getColorAlpha(0x11223344)).toBeCloseTo(0x44 / 0xff);
|
|
@@ -60,25 +60,25 @@ describe('packColor', () => {
|
|
|
60
60
|
|
|
61
61
|
describe('packLinearToColor', () => {
|
|
62
62
|
it('is the inverse of unpackColorToLinear for white', () => {
|
|
63
|
-
const out =
|
|
63
|
+
const out = allocateLinearColor();
|
|
64
64
|
unpackColorToLinear(out, 0xffffffff);
|
|
65
65
|
expect(packLinearToColor(out)).toBe(0xffffffff);
|
|
66
66
|
});
|
|
67
67
|
it('is the inverse of unpackColorToLinear for black (opaque)', () => {
|
|
68
|
-
const out =
|
|
68
|
+
const out = allocateLinearColor();
|
|
69
69
|
unpackColorToLinear(out, 0x000000ff);
|
|
70
70
|
expect(packLinearToColor(out)).toBe(0x000000ff);
|
|
71
71
|
});
|
|
72
72
|
it('passes alpha through without gamma encoding', () => {
|
|
73
73
|
const color = 0x000000_80 >>> 0;
|
|
74
|
-
const out =
|
|
74
|
+
const out = allocateLinearColor();
|
|
75
75
|
unpackColorToLinear(out, color);
|
|
76
76
|
const repacked = packLinearToColor(out);
|
|
77
77
|
expect(repacked & 0xff).toBe(0x80);
|
|
78
78
|
});
|
|
79
79
|
it('round-trips a mid-gray color within 1 LSB', () => {
|
|
80
80
|
const color = 0x808080ff >>> 0;
|
|
81
|
-
const out =
|
|
81
|
+
const out = allocateLinearColor();
|
|
82
82
|
unpackColorToLinear(out, color);
|
|
83
83
|
const repacked = packLinearToColor(out);
|
|
84
84
|
const origR = (color >>> 24) & 0xff;
|
|
@@ -133,19 +133,19 @@ describe('unpackColorRgba', () => {
|
|
|
133
133
|
|
|
134
134
|
describe('unpackColorToLinear', () => {
|
|
135
135
|
it('decodes white and black exactly at the endpoints', () => {
|
|
136
|
-
const out =
|
|
136
|
+
const out = allocateLinearColor();
|
|
137
137
|
expect(unpackColorToLinear(out, 0xffffffff)).toEqual([1, 1, 1, 1]);
|
|
138
138
|
expect(unpackColorToLinear(out, 0x000000ff)).toEqual([0, 0, 0, 1]);
|
|
139
139
|
});
|
|
140
140
|
|
|
141
141
|
it('passes alpha through linearly without gamma decode', () => {
|
|
142
|
-
const out =
|
|
142
|
+
const out = allocateLinearColor();
|
|
143
143
|
unpackColorToLinear(out, 0x00000080);
|
|
144
144
|
expect(out[3]).toBeCloseTo(0x80 / 0xff, 6);
|
|
145
145
|
});
|
|
146
146
|
|
|
147
147
|
it('gamma-decodes RGB so mid sRgb is below the linear midpoint', () => {
|
|
148
|
-
const out =
|
|
148
|
+
const out = allocateLinearColor();
|
|
149
149
|
unpackColorToLinear(out, 0x808080ff);
|
|
150
150
|
expect(out[0]).toBeCloseTo(0.21586, 4);
|
|
151
151
|
expect(out[0]).toBe(out[1]);
|
|
@@ -153,7 +153,7 @@ describe('unpackColorToLinear', () => {
|
|
|
153
153
|
});
|
|
154
154
|
|
|
155
155
|
it('returns the same out instance it was given', () => {
|
|
156
|
-
const out =
|
|
156
|
+
const out = allocateLinearColor();
|
|
157
157
|
expect(unpackColorToLinear(out, 0xff0000ff)).toBe(out);
|
|
158
158
|
});
|
|
159
159
|
});
|