@woosh/meep-engine 2.100.1 → 2.100.2
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/build/meep.cjs +21 -2
- package/build/meep.min.js +1 -1
- package/build/meep.module.js +21 -2
- package/package.json +1 -1
- package/src/core/color/oklab/Okhsv.spec.d.ts +2 -0
- package/src/core/color/oklab/Okhsv.spec.d.ts.map +1 -0
- package/src/core/color/oklab/Okhsv.spec.js +17 -0
- package/src/core/color/oklab/XYZ.spec.js +2 -2
- package/src/core/color/oklab/compute_max_saturation.d.ts +11 -0
- package/src/core/color/oklab/compute_max_saturation.d.ts.map +1 -0
- package/src/core/color/oklab/compute_max_saturation.js +84 -0
- package/src/core/color/oklab/find_cusp.d.ts +10 -0
- package/src/core/color/oklab/find_cusp.d.ts.map +1 -0
- package/src/core/color/oklab/find_cusp.js +27 -0
- package/src/core/color/oklab/find_gamut_intersection.d.ts +15 -0
- package/src/core/color/oklab/find_gamut_intersection.d.ts.map +1 -0
- package/src/core/color/oklab/find_gamut_intersection.js +101 -0
- package/src/core/color/oklab/linear_srgb_to_okhsv.d.ts +9 -0
- package/src/core/color/oklab/linear_srgb_to_okhsv.d.ts.map +1 -0
- package/src/core/color/oklab/linear_srgb_to_okhsv.js +74 -0
- package/src/core/color/oklab/linear_srgb_to_oklab.d.ts +9 -0
- package/src/core/color/oklab/linear_srgb_to_oklab.d.ts.map +1 -0
- package/src/core/color/oklab/linear_srgb_to_oklab.js +20 -0
- package/src/core/color/oklab/okhsv_to_linear_srgb.d.ts +9 -0
- package/src/core/color/oklab/okhsv_to_linear_srgb.d.ts.map +1 -0
- package/src/core/color/oklab/okhsv_to_linear_srgb.js +59 -0
- package/src/core/color/oklab/oklab_to_linear_srgb.d.ts +10 -0
- package/src/core/color/oklab/oklab_to_linear_srgb.d.ts.map +1 -0
- package/src/core/color/oklab/oklab_to_linear_srgb.js +21 -0
- package/src/core/color/oklab/oklab_to_xyz.d.ts +5 -2
- package/src/core/color/oklab/oklab_to_xyz.d.ts.map +1 -1
- package/src/core/color/oklab/oklab_to_xyz.js +5 -5
- package/src/core/color/oklab/oklab_to_xyz.spec.js +4 -4
- package/src/core/color/oklab/toe.d.ts +13 -0
- package/src/core/color/oklab/toe.d.ts.map +1 -0
- package/src/core/color/oklab/toe.js +22 -0
- package/src/core/color/oklab/xyz_to_oklab.d.ts +5 -2
- package/src/core/color/oklab/xyz_to_oklab.d.ts.map +1 -1
- package/src/core/color/oklab/xyz_to_oklab.js +5 -5
- package/src/core/color/oklab/xyz_to_oklab.spec.js +4 -4
- package/src/engine/asset/loaders/ArrayBufferLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/ArrayBufferLoader.js +22 -2
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* toe function for L_r
|
|
3
|
+
* @param {number} x
|
|
4
|
+
* @return {number}
|
|
5
|
+
*/
|
|
6
|
+
export function toe(x: number): number;
|
|
7
|
+
/**
|
|
8
|
+
* inverse toe function for L_r
|
|
9
|
+
* @param {number} x
|
|
10
|
+
* @return {number}
|
|
11
|
+
*/
|
|
12
|
+
export function toe_inv(x: number): number;
|
|
13
|
+
//# sourceMappingURL=toe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toe.d.ts","sourceRoot":"","sources":["../../../../../src/core/color/oklab/toe.js"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,uBAHW,MAAM,GACL,MAAM,CAIjB;AAED;;;;GAIG;AACH,2BAHW,MAAM,GACL,MAAM,CAIjB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
|
|
2
|
+
const k_1 = 0.206;
|
|
3
|
+
const k_2 = 0.03;
|
|
4
|
+
const k_3 = (1. + k_1) / (1. + k_2);
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* toe function for L_r
|
|
8
|
+
* @param {number} x
|
|
9
|
+
* @return {number}
|
|
10
|
+
*/
|
|
11
|
+
export function toe(x){
|
|
12
|
+
return 0.5 * (k_3 * x - k_1 + Math.sqrt((k_3 * x - k_1) * (k_3 * x - k_1) + 4 * k_2 * k_3 * x));
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* inverse toe function for L_r
|
|
17
|
+
* @param {number} x
|
|
18
|
+
* @return {number}
|
|
19
|
+
*/
|
|
20
|
+
export function toe_inv(x){
|
|
21
|
+
return (x * x + k_1 * x) / (k_3 * (x + k_2));
|
|
22
|
+
}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Converts CIE XYZ color space to Oklab.
|
|
3
3
|
* Oklab as defined by Björn Ottosson
|
|
4
|
-
* @
|
|
4
|
+
* @copyright "Company Named Limited" 2023
|
|
5
5
|
* @param {number[]} output Lab
|
|
6
|
+
* @param {number} x
|
|
7
|
+
* @param {number} y
|
|
8
|
+
* @param {number} z
|
|
6
9
|
*/
|
|
7
|
-
export function xyz_to_oklab(
|
|
10
|
+
export function xyz_to_oklab(output: number[], x: number, y: number, z: number): void;
|
|
8
11
|
//# sourceMappingURL=xyz_to_oklab.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xyz_to_oklab.d.ts","sourceRoot":"","sources":["../../../../../src/core/color/oklab/xyz_to_oklab.js"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"xyz_to_oklab.d.ts","sourceRoot":"","sources":["../../../../../src/core/color/oklab/xyz_to_oklab.js"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,qCALW,MAAM,EAAE,KACR,MAAM,KACN,MAAM,KACN,MAAM,QAqBhB"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Converts CIE XYZ color space to Oklab.
|
|
3
3
|
* Oklab as defined by Björn Ottosson
|
|
4
|
-
* @
|
|
4
|
+
* @copyright "Company Named Limited" 2023
|
|
5
5
|
* @param {number[]} output Lab
|
|
6
|
+
* @param {number} x
|
|
7
|
+
* @param {number} y
|
|
8
|
+
* @param {number} z
|
|
6
9
|
*/
|
|
7
|
-
export function xyz_to_oklab(
|
|
8
|
-
const x = input[0];
|
|
9
|
-
const y = input[1];
|
|
10
|
-
const z = input[2];
|
|
10
|
+
export function xyz_to_oklab(output, x, y, z) {
|
|
11
11
|
|
|
12
12
|
// M1 * (X Y Z)
|
|
13
13
|
const l = 0.8189330101 * x + 0.3618667424 * y - 0.1288597137 * z;
|
|
@@ -4,25 +4,25 @@ test("known samples", () => {
|
|
|
4
4
|
|
|
5
5
|
const out = [];
|
|
6
6
|
|
|
7
|
-
xyz_to_oklab(
|
|
7
|
+
xyz_to_oklab(out, 0.950, 1.000, 1.089);
|
|
8
8
|
|
|
9
9
|
expect(out[0]).toBeCloseTo(1);
|
|
10
10
|
expect(out[1]).toBeCloseTo(0);
|
|
11
11
|
expect(out[2]).toBeCloseTo(0);
|
|
12
12
|
|
|
13
|
-
xyz_to_oklab(
|
|
13
|
+
xyz_to_oklab(out, 1, 0, 0);
|
|
14
14
|
|
|
15
15
|
expect(out[0]).toBeCloseTo(0.450);
|
|
16
16
|
expect(out[1]).toBeCloseTo(1.236);
|
|
17
17
|
expect(out[2]).toBeCloseTo(-0.019);
|
|
18
18
|
|
|
19
|
-
xyz_to_oklab(
|
|
19
|
+
xyz_to_oklab(out, 0, 1, 0);
|
|
20
20
|
|
|
21
21
|
expect(out[0]).toBeCloseTo(0.922);
|
|
22
22
|
expect(out[1]).toBeCloseTo(-0.671);
|
|
23
23
|
expect(out[2]).toBeCloseTo(0.263);
|
|
24
24
|
|
|
25
|
-
xyz_to_oklab(
|
|
25
|
+
xyz_to_oklab(out, 0, 0, 1);
|
|
26
26
|
|
|
27
27
|
expect(out[0]).toBeCloseTo(0.153);
|
|
28
28
|
expect(out[1]).toBeCloseTo(-1.415);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArrayBufferLoader.d.ts","sourceRoot":"","sources":["../../../../../src/engine/asset/loaders/ArrayBufferLoader.js"],"names":[],"mappings":"AAMA;IACI;;;OAGG;IACH,iCAFW,MAAM,GAAC,KAAK,GAAC,MAAM,EAa7B;IANG;;;;OAIG;IACH,yBAAsC;IAG1C;;;
|
|
1
|
+
{"version":3,"file":"ArrayBufferLoader.d.ts","sourceRoot":"","sources":["../../../../../src/engine/asset/loaders/ArrayBufferLoader.js"],"names":[],"mappings":"AAMA;IACI;;;OAGG;IACH,iCAFW,MAAM,GAAC,KAAK,GAAC,MAAM,EAa7B;IANG;;;;OAIG;IACH,yBAAsC;IAG1C;;;qCA8HC;CACJ;4BAnJ2B,kBAAkB;qBAJzB,gCAAgC"}
|
|
@@ -87,13 +87,17 @@ export class ArrayBufferLoader extends AssetLoader {
|
|
|
87
87
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
+
/**
|
|
91
|
+
* @type {ReadableStreamDefaultReader<Uint8Array>}
|
|
92
|
+
*/
|
|
90
93
|
const reader = response.body.getReader();
|
|
94
|
+
|
|
91
95
|
const contentLength = response.headers.get('Content-Length');
|
|
92
96
|
const total = contentLength ? parseInt(contentLength) : 0;
|
|
93
97
|
let loaded = 0;
|
|
94
98
|
|
|
95
99
|
// periodically read data into the new stream tracking while download progress
|
|
96
|
-
const
|
|
100
|
+
const stream_prototype = {
|
|
97
101
|
type: "bytes",
|
|
98
102
|
start(controller) {
|
|
99
103
|
|
|
@@ -122,7 +126,23 @@ export class ArrayBufferLoader extends AssetLoader {
|
|
|
122
126
|
|
|
123
127
|
}
|
|
124
128
|
|
|
125
|
-
}
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* @type {ReadableStream}
|
|
133
|
+
*/
|
|
134
|
+
let stream;
|
|
135
|
+
|
|
136
|
+
try {
|
|
137
|
+
stream = new ReadableStream(stream_prototype);
|
|
138
|
+
} catch (e) {
|
|
139
|
+
/*
|
|
140
|
+
Workaround for Safari bug: "TypeError: ReadableByteStreamController is not implemented"
|
|
141
|
+
By not wrapping the response we lose the ability to track progress, but that's not a critical issue in most cases
|
|
142
|
+
*/
|
|
143
|
+
console.warn(e);
|
|
144
|
+
return response;
|
|
145
|
+
}
|
|
126
146
|
|
|
127
147
|
return new Response(stream);
|
|
128
148
|
}
|