@lewismoten/gamemaker-sandbox-engine 0.0.0-stage → 3.3.0

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.
Files changed (129) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/LICENSE +24 -0
  3. package/NOTICE.md +58 -0
  4. package/README.md +149 -2
  5. package/dist/assets/music.worklet-aD2x7RRM.js +466 -0
  6. package/dist/audio/cmfLoad.js +10 -0
  7. package/dist/audio/cmfPlayer.js +201 -0
  8. package/dist/audio/context.js +75 -0
  9. package/dist/audio/engine.js +173 -0
  10. package/dist/audio/mix.js +40 -0
  11. package/dist/audio/opl.js +245 -0
  12. package/dist/audio/output.js +40 -0
  13. package/dist/core/gameFiles.js +89 -0
  14. package/dist/engine/character.js +187 -0
  15. package/dist/engine/funcKeys.js +164 -0
  16. package/dist/engine/game.js +133 -0
  17. package/dist/engine/keys.js +68 -0
  18. package/dist/engine/machine.js +192 -0
  19. package/dist/engine/menus.js +135 -0
  20. package/dist/engine/monsters.js +259 -0
  21. package/dist/engine/playGain.js +10 -0
  22. package/dist/engine/playerLook.js +48 -0
  23. package/dist/engine/recorder.js +127 -0
  24. package/dist/engine/render.js +45 -0
  25. package/dist/engine/scene.js +324 -0
  26. package/dist/engine/scroll.js +79 -0
  27. package/dist/engine/showGraphic.js +107 -0
  28. package/dist/engine/slowPc.js +98 -0
  29. package/dist/engine/slowPcMusic.js +46 -0
  30. package/dist/engine/touch.js +61 -0
  31. package/dist/engine/world.js +205 -0
  32. package/dist/formats/binary.js +120 -0
  33. package/dist/formats/blocks.js +103 -0
  34. package/dist/formats/character.js +83 -0
  35. package/dist/formats/cmf.js +37 -0
  36. package/dist/formats/cmfEdit.js +154 -0
  37. package/dist/formats/cmfPreview.js +89 -0
  38. package/dist/formats/cmfSong.js +190 -0
  39. package/dist/formats/fli.js +340 -0
  40. package/dist/formats/fliFrames.js +34 -0
  41. package/dist/formats/fliLimits.js +54 -0
  42. package/dist/formats/game.js +198 -0
  43. package/dist/formats/gif.js +125 -0
  44. package/dist/formats/gifProgressive.js +99 -0
  45. package/dist/formats/graphicScripts.js +44 -0
  46. package/dist/formats/highscore.js +30 -0
  47. package/dist/formats/jpeg.js +359 -0
  48. package/dist/formats/map.js +38 -0
  49. package/dist/formats/monster.js +69 -0
  50. package/dist/formats/palette.js +58 -0
  51. package/dist/formats/recording.js +17 -0
  52. package/dist/formats/sound.js +44 -0
  53. package/dist/formats/voc.js +303 -0
  54. package/dist/gfx/colorVision.js +45 -0
  55. package/dist/gfx/cp437Glyphs.js +337 -0
  56. package/dist/gfx/font8x8.js +10 -0
  57. package/dist/gfx/screen.js +151 -0
  58. package/dist/index.js +15 -0
  59. package/dist/input/chords.js +46 -0
  60. package/dist/input/deskMouse.js +24 -0
  61. package/dist/input/keyboard.js +82 -0
  62. package/dist/input/scancodes.js +143 -0
  63. package/dist/player/fileExtensions.js +118 -0
  64. package/dist/player/patchRules.js +129 -0
  65. package/dist/player/patchTable.js +1753 -0
  66. package/dist/text/cp437.js +44 -0
  67. package/dist/types/audio/cmfLoad.d.ts +7 -0
  68. package/dist/types/audio/cmfPlayer.d.ts +69 -0
  69. package/dist/types/audio/context.d.ts +12 -0
  70. package/dist/types/audio/engine.d.ts +60 -0
  71. package/dist/types/audio/mix.d.ts +14 -0
  72. package/dist/types/audio/music.worklet.d.ts +22 -0
  73. package/dist/types/audio/opl.d.ts +37 -0
  74. package/dist/types/audio/output.d.ts +13 -0
  75. package/dist/types/core/gameFiles.d.ts +49 -0
  76. package/dist/types/engine/character.d.ts +30 -0
  77. package/dist/types/engine/funcKeys.d.ts +35 -0
  78. package/dist/types/engine/game.d.ts +57 -0
  79. package/dist/types/engine/keys.d.ts +17 -0
  80. package/dist/types/engine/machine.d.ts +103 -0
  81. package/dist/types/engine/menus.d.ts +46 -0
  82. package/dist/types/engine/monsters.d.ts +19 -0
  83. package/dist/types/engine/playGain.d.ts +11 -0
  84. package/dist/types/engine/playerLook.d.ts +44 -0
  85. package/dist/types/engine/recorder.d.ts +67 -0
  86. package/dist/types/engine/render.d.ts +8 -0
  87. package/dist/types/engine/scene.d.ts +188 -0
  88. package/dist/types/engine/scroll.d.ts +24 -0
  89. package/dist/types/engine/showGraphic.d.ts +39 -0
  90. package/dist/types/engine/slowPc.d.ts +124 -0
  91. package/dist/types/engine/slowPcMusic.d.ts +18 -0
  92. package/dist/types/engine/touch.d.ts +33 -0
  93. package/dist/types/engine/world.d.ts +237 -0
  94. package/dist/types/formats/binary.d.ts +44 -0
  95. package/dist/types/formats/blocks.d.ts +52 -0
  96. package/dist/types/formats/character.d.ts +65 -0
  97. package/dist/types/formats/cmf.d.ts +33 -0
  98. package/dist/types/formats/cmfEdit.d.ts +53 -0
  99. package/dist/types/formats/cmfPreview.d.ts +19 -0
  100. package/dist/types/formats/cmfSong.d.ts +74 -0
  101. package/dist/types/formats/fli.d.ts +56 -0
  102. package/dist/types/formats/fliFrames.d.ts +18 -0
  103. package/dist/types/formats/fliLimits.d.ts +13 -0
  104. package/dist/types/formats/game.d.ts +79 -0
  105. package/dist/types/formats/gif.d.ts +15 -0
  106. package/dist/types/formats/gifProgressive.d.ts +46 -0
  107. package/dist/types/formats/graphicScripts.d.ts +18 -0
  108. package/dist/types/formats/highscore.d.ts +10 -0
  109. package/dist/types/formats/jpeg.d.ts +20 -0
  110. package/dist/types/formats/map.d.ts +24 -0
  111. package/dist/types/formats/monster.d.ts +48 -0
  112. package/dist/types/formats/palette.d.ts +15 -0
  113. package/dist/types/formats/recording.d.ts +7 -0
  114. package/dist/types/formats/sound.d.ts +13 -0
  115. package/dist/types/formats/voc.d.ts +13 -0
  116. package/dist/types/gfx/colorVision.d.ts +26 -0
  117. package/dist/types/gfx/cp437Glyphs.d.ts +2 -0
  118. package/dist/types/gfx/font8x8.d.ts +2 -0
  119. package/dist/types/gfx/screen.d.ts +50 -0
  120. package/dist/types/index.d.ts +4 -0
  121. package/dist/types/input/chords.d.ts +22 -0
  122. package/dist/types/input/deskMouse.d.ts +14 -0
  123. package/dist/types/input/keyboard.d.ts +39 -0
  124. package/dist/types/input/scancodes.d.ts +3 -0
  125. package/dist/types/player/fileExtensions.d.ts +44 -0
  126. package/dist/types/player/patchRules.d.ts +24 -0
  127. package/dist/types/player/patchTable.d.ts +83 -0
  128. package/dist/types/text/cp437.d.ts +6 -0
  129. package/package.json +339 -4
@@ -0,0 +1,69 @@
1
+ import { Writer as g, Reader as L } from "./binary.js";
2
+ const e = 64, p = 20, l = 10, R = 300, C = 0, V = 1;
3
+ function a(t) {
4
+ return { x: t.i16(), y: t.i16(), pic: t.i16(), orient: t.i16() };
5
+ }
6
+ function f(t, o) {
7
+ t.i16(o.x).i16(o.y).i16(o.pic).i16(o.orient);
8
+ }
9
+ function j(t) {
10
+ const o = t.i16(), n = t.i16(), c = t.i16(), M = t.i16(), h = t.u8(), y = t.i8(), s = [];
11
+ for (let i = 0; i <= p; i++) s.push([t.i16(), t.i16()]);
12
+ const d = t.u32(), w = t.i8(), A = t.i16(), x = t.bytesOf(21), T = t.i16(), E = t.i16(), O = t.i16(), S = [t.i16(), t.i16()], r = [[], []];
13
+ for (let i = 0; i < 2; i++) for (let u = 0; u < l; u++) r[i].push(a(t));
14
+ const N = a(t);
15
+ return { used: o, fly: n, jump: c, stick: M, power: h, thru: y, pic: s, lasttime: d, newmon: w, upscore: A, xtra: x, activate: T, end: E, towards: O, close: S, march: r, cur: N };
16
+ }
17
+ function k(t, o) {
18
+ t.i16(o.used).i16(o.fly).i16(o.jump).i16(o.stick).u8(o.power).i8(o.thru);
19
+ for (const [n, c] of o.pic) t.i16(n).i16(c);
20
+ t.u32(o.lasttime).i8(o.newmon).i16(o.upscore).bytes(o.xtra, 21).i16(o.activate).i16(o.end).i16(o.towards).i16(o.close[0]).i16(o.close[1]);
21
+ for (const n of o.march) for (const c of n) f(t, c);
22
+ f(t, o.cur);
23
+ }
24
+ function z(t) {
25
+ const o = new L(t);
26
+ return Array.from({ length: e }, () => j(o));
27
+ }
28
+ function B(t) {
29
+ const o = new g(e * R);
30
+ for (const n of t) k(o, n);
31
+ return o.toBytes();
32
+ }
33
+ function v() {
34
+ const t = Array.from({ length: p + 1 }, () => [100, 1]), o = () => Array.from({ length: l }, () => ({ x: 0, y: 0, pic: 0, orient: 0 }));
35
+ return {
36
+ used: 0,
37
+ fly: 0,
38
+ jump: 0,
39
+ stick: 0,
40
+ power: 1,
41
+ thru: 1,
42
+ pic: t,
43
+ lasttime: 0,
44
+ newmon: e,
45
+ upscore: 0,
46
+ xtra: new Uint8Array(21),
47
+ activate: 0,
48
+ end: 0,
49
+ towards: 0,
50
+ close: [0, 0],
51
+ march: [o(), o()],
52
+ cur: { x: 0, y: 0, pic: 0, orient: 0 }
53
+ };
54
+ }
55
+ function H() {
56
+ return Array.from({ length: e }, () => v());
57
+ }
58
+ export {
59
+ V as ATTACKMOVEMENT,
60
+ e as LASTMON,
61
+ p as LASTSL,
62
+ l as MAXMARCH,
63
+ R as MONSTER_SIZE,
64
+ C as NORMALMOVEMENT,
65
+ v as emptyMonster,
66
+ H as newMonsterSet,
67
+ z as parseMonsters,
68
+ B as serializeMonsters
69
+ };
@@ -0,0 +1,58 @@
1
+ const T = 768;
2
+ function h(t) {
3
+ const r = new Uint8Array(768);
4
+ return r.set(t.subarray(0, 768)), r;
5
+ }
6
+ function A(t) {
7
+ return t.slice(0, 768);
8
+ }
9
+ function P(t) {
10
+ const r = new Uint32Array(256);
11
+ for (let n = 0; n < 256; n++)
12
+ r[n] = 255 << 24 | u(t[n * 3 + 2]) << 16 | u(t[n * 3 + 1]) << 8 | u(t[n * 3]);
13
+ return r;
14
+ }
15
+ function u(t) {
16
+ const r = t & 63;
17
+ return r << 2 | r >> 4;
18
+ }
19
+ function b(t, r) {
20
+ return `rgb(${u(t[r * 3])},${u(t[r * 3 + 1])},${u(t[r * 3 + 2])})`;
21
+ }
22
+ function d(t, r, n, e) {
23
+ let o = 0, s = 1 / 0;
24
+ for (let c = 0; c < 256; c++) {
25
+ const i = (t[c * 3] & 63) - r, f = (t[c * 3 + 1] & 63) - n, a = (t[c * 3 + 2] & 63) - e, E = i * i + f * f + a * a;
26
+ E < s && (s = E, o = c);
27
+ }
28
+ return o;
29
+ }
30
+ function I() {
31
+ const t = new Uint8Array(768);
32
+ for (let n = 0; n < 16; n++) t.set([n * 4 + 3, n * 4 + 3, n * 4 + 3], n * 3);
33
+ let r = 16;
34
+ for (let n = 0; n < 6; n++)
35
+ for (let e = 0; e < 6; e++) for (let o = 0; o < 6; o++) t.set([Math.round(n * 63 / 5), Math.round(e * 63 / 5), Math.round(o * 63 / 5)], r++ * 3);
36
+ for (; r < 255; r++) {
37
+ const n = (r - 232) / 23 * 6, [e, o, s] = l(n, 1, 1);
38
+ t.set([e, o, s], r * 3);
39
+ }
40
+ return t.set([63, 0, 63], 765), t;
41
+ }
42
+ function l(t, r, n) {
43
+ const e = (o) => {
44
+ const s = (o + t) % 6;
45
+ return Math.round(63 * (n - n * r * Math.max(0, Math.min(s, 4 - s, 1))));
46
+ };
47
+ return [e(5), e(3), e(1)];
48
+ }
49
+ export {
50
+ T as PALETTE_SIZE,
51
+ I as defaultPalette,
52
+ d as matchColor,
53
+ b as paletteCss,
54
+ P as paletteToRGBA,
55
+ h as parsePalette,
56
+ A as serializePalette,
57
+ u as vga8
58
+ };
@@ -0,0 +1,17 @@
1
+ import { Reader as i, Writer as u } from "./binary.js";
2
+ const r = 1e3;
3
+ function l(t) {
4
+ const e = new i(t), o = [], c = Math.min(r, Math.floor(t.length / 3));
5
+ for (let n = 0; n < c; n++) o.push({ delta: e.u16(), key: e.u8() });
6
+ return o;
7
+ }
8
+ function a(t) {
9
+ const e = new u(t.length * 3);
10
+ for (const o of t.slice(0, r)) e.u16(o.delta).u8(o.key);
11
+ return e.toBytes();
12
+ }
13
+ export {
14
+ r as RECLEN,
15
+ l as parseRecording,
16
+ a as serializeRecording
17
+ };
@@ -0,0 +1,44 @@
1
+ import { Reader as f, Writer as u } from "./binary.js";
2
+ const e = 30, c = 36, d = e * c * 2 + e * 9, w = [
3
+ "Help (hit points up)",
4
+ "Kill monster",
5
+ "Add money",
6
+ "Subtract money",
7
+ "Add life",
8
+ "Add score",
9
+ "Subtract score",
10
+ "Add other counter",
11
+ "Subtract other counter"
12
+ ];
13
+ function A(i) {
14
+ const n = new f(i), o = [];
15
+ for (let r = 0; r < e; r++) {
16
+ const a = new Uint16Array(c);
17
+ for (let s = 0; s < c; s++) a[s] = n.u16();
18
+ o.push(a);
19
+ }
20
+ const t = [];
21
+ for (let r = 0; r < e; r++) t.push(n.bytesOf(9));
22
+ const l = t.map((r) => new f(r).cstr(9));
23
+ return { freqs: o, digital: l, digitalRaw: t };
24
+ }
25
+ function y(i) {
26
+ const n = new u(d);
27
+ for (const o of i.freqs) for (let t = 0; t < c; t++) n.u16(o[t] ?? 0);
28
+ return i.digital.forEach((o, t) => n.cstrOver(o, i.digitalRaw[t], 9)), n.toBytes();
29
+ }
30
+ function p() {
31
+ return {
32
+ freqs: Array.from({ length: e }, () => new Uint16Array(c)),
33
+ digital: new Array(e).fill(""),
34
+ digitalRaw: Array.from({ length: e }, () => new Uint8Array(9))
35
+ };
36
+ }
37
+ export {
38
+ e as LASTSND,
39
+ c as NUMFREQ,
40
+ w as SOUND_NAMES,
41
+ p as newSoundSet,
42
+ A as parseSoundSet,
43
+ y as serializeSoundSet
44
+ };
@@ -0,0 +1,303 @@
1
+ const A = "Creative Voice File";
2
+ function C(e) {
3
+ for (let t = 0; t < A.length; t++) if (e[t] !== A.charCodeAt(t)) return !1;
4
+ return !0;
5
+ }
6
+ function j(e) {
7
+ if (!C(e)) throw new Error("Not a VOC file");
8
+ let t = e[20] | e[21] << 8, n = 0;
9
+ const s = [];
10
+ let f = -1, h = 0, l = 0, u = 0, i;
11
+ const p = (a) => {
12
+ if (u === 0) return k(a);
13
+ const c = x[u];
14
+ return c ? (i || (i = { reference: a[0] ?? 128, scale: 0 }, a = a.subarray(1)), F(a, c, i)) : new Float32Array(0);
15
+ };
16
+ for (; t < e.length && l++ < 1e4; ) {
17
+ const a = e[t];
18
+ if (a === 0) break;
19
+ const c = e[t + 1] | e[t + 2] << 8 | e[t + 3] << 16, r = t + 4, M = Math.min(e.length, r + c);
20
+ switch (a) {
21
+ case 1: {
22
+ const m = Math.round(1e6 / (256 - e[r]));
23
+ n ||= m, u = e[r + 1], i = void 0, s.push(p(e.subarray(r + 2, M)));
24
+ break;
25
+ }
26
+ case 2:
27
+ s.push(p(e.subarray(r, M)));
28
+ break;
29
+ case 3: {
30
+ const m = (e[r] | e[r + 1] << 8) + 1;
31
+ n ||= Math.round(1e6 / (256 - e[r + 2])), s.push(new Float32Array(m));
32
+ break;
33
+ }
34
+ case 6:
35
+ f = t + 4 + c, h = e[r] | e[r + 1] << 8;
36
+ break;
37
+ case 7:
38
+ if (f >= 0 && h > 0 && h < 65535) {
39
+ h--, t = f;
40
+ continue;
41
+ }
42
+ break;
43
+ case 8: {
44
+ const m = e[r] | e[r + 1] << 8, w = e[r + 3] === 1;
45
+ n = Math.round(256e6 / ((w ? 2 : 1) * (65536 - m)));
46
+ break;
47
+ }
48
+ case 9: {
49
+ n = e[r] | e[r + 1] << 8 | e[r + 2] << 16 | e[r + 3] << 24;
50
+ const m = e[r + 4], w = e.subarray(r + 12, M);
51
+ s.push(m === 16 ? V(w) : k(w));
52
+ break;
53
+ }
54
+ }
55
+ t = r + c;
56
+ }
57
+ const g = s.reduce((a, c) => a + c.length, 0), o = new Float32Array(g);
58
+ let d = 0;
59
+ for (const a of s)
60
+ o.set(a, d), d += a.length;
61
+ return { sampleRate: n || 8e3, samples: o };
62
+ }
63
+ function k(e) {
64
+ const t = new Float32Array(e.length);
65
+ for (let n = 0; n < e.length; n++) t[n] = (e[n] - 128) / 128;
66
+ return t;
67
+ }
68
+ const x = {
69
+ 1: {
70
+ bits: [4, 4],
71
+ scaleMap: [
72
+ 0,
73
+ 1,
74
+ 2,
75
+ 3,
76
+ 4,
77
+ 5,
78
+ 6,
79
+ 7,
80
+ 0,
81
+ -1,
82
+ -2,
83
+ -3,
84
+ -4,
85
+ -5,
86
+ -6,
87
+ -7,
88
+ 1,
89
+ 3,
90
+ 5,
91
+ 7,
92
+ 9,
93
+ 11,
94
+ 13,
95
+ 15,
96
+ -1,
97
+ -3,
98
+ -5,
99
+ -7,
100
+ -9,
101
+ -11,
102
+ -13,
103
+ -15,
104
+ 2,
105
+ 6,
106
+ 10,
107
+ 14,
108
+ 18,
109
+ 22,
110
+ 26,
111
+ 30,
112
+ -2,
113
+ -6,
114
+ -10,
115
+ -14,
116
+ -18,
117
+ -22,
118
+ -26,
119
+ -30,
120
+ 4,
121
+ 12,
122
+ 20,
123
+ 28,
124
+ 36,
125
+ 44,
126
+ 52,
127
+ 60,
128
+ -4,
129
+ -12,
130
+ -20,
131
+ -28,
132
+ -36,
133
+ -44,
134
+ -52,
135
+ -60
136
+ ],
137
+ adjustMap: [
138
+ 0,
139
+ 0,
140
+ 0,
141
+ 0,
142
+ 0,
143
+ 16,
144
+ 16,
145
+ 16,
146
+ 0,
147
+ 0,
148
+ 0,
149
+ 0,
150
+ 0,
151
+ 16,
152
+ 16,
153
+ 16,
154
+ 240,
155
+ 0,
156
+ 0,
157
+ 0,
158
+ 0,
159
+ 16,
160
+ 16,
161
+ 16,
162
+ 240,
163
+ 0,
164
+ 0,
165
+ 0,
166
+ 0,
167
+ 16,
168
+ 16,
169
+ 16,
170
+ 240,
171
+ 0,
172
+ 0,
173
+ 0,
174
+ 0,
175
+ 16,
176
+ 16,
177
+ 16,
178
+ 240,
179
+ 0,
180
+ 0,
181
+ 0,
182
+ 0,
183
+ 16,
184
+ 16,
185
+ 16,
186
+ 240,
187
+ 0,
188
+ 0,
189
+ 0,
190
+ 0,
191
+ 0,
192
+ 0,
193
+ 0,
194
+ 240,
195
+ 0,
196
+ 0,
197
+ 0,
198
+ 0,
199
+ 0,
200
+ 0,
201
+ 0
202
+ ]
203
+ },
204
+ 2: {
205
+ bits: [3, 3, 2],
206
+ scaleMap: [
207
+ 0,
208
+ 1,
209
+ 2,
210
+ 3,
211
+ 0,
212
+ -1,
213
+ -2,
214
+ -3,
215
+ 1,
216
+ 3,
217
+ 5,
218
+ 7,
219
+ -1,
220
+ -3,
221
+ -5,
222
+ -7,
223
+ 2,
224
+ 6,
225
+ 10,
226
+ 14,
227
+ -2,
228
+ -6,
229
+ -10,
230
+ -14,
231
+ 4,
232
+ 12,
233
+ 20,
234
+ 28,
235
+ -4,
236
+ -12,
237
+ -20,
238
+ -28,
239
+ 5,
240
+ 15,
241
+ 25,
242
+ 35,
243
+ -5,
244
+ -15,
245
+ -25,
246
+ -35
247
+ ],
248
+ adjustMap: [0, 0, 0, 8, 0, 0, 0, 8, 248, 0, 0, 8, 248, 0, 0, 8, 248, 0, 0, 8, 248, 0, 0, 8, 248, 0, 0, 8, 248, 0, 0, 8, 248, 0, 0, 0, 248, 0, 0, 0]
249
+ },
250
+ 3: {
251
+ bits: [2, 2, 2, 2],
252
+ scaleMap: [0, 1, 0, -1, 1, 3, -1, -3, 2, 6, -2, -6, 4, 12, -4, -12, 8, 24, -8, -24, 6, 48, -16, -48],
253
+ adjustMap: [0, 4, 0, 4, 252, 4, 252, 4, 252, 4, 252, 4, 252, 4, 252, 4, 252, 4, 252, 4, 252, 0, 252, 0]
254
+ }
255
+ };
256
+ function F(e, t, n) {
257
+ const s = new Float32Array(e.length * t.bits.length), f = t.scaleMap.length - 1;
258
+ let h = 0;
259
+ for (const l of e) {
260
+ let u = 8;
261
+ for (const i of t.bits) {
262
+ u -= i;
263
+ let p = l >> u & (1 << i) - 1;
264
+ t.bits.length === 3 && i === 2 && (p <<= 1);
265
+ const g = Math.max(0, Math.min(f, p + n.scale));
266
+ n.reference = Math.max(0, Math.min(255, n.reference + t.scaleMap[g])), n.scale = n.scale + t.adjustMap[g] & 255, s[h++] = (n.reference - 128) / 128;
267
+ }
268
+ }
269
+ return s;
270
+ }
271
+ function V(e) {
272
+ const t = new Float32Array(e.length >> 1);
273
+ for (let n = 0; n < t.length; n++) t[n] = ((e[n * 2] | e[n * 2 + 1] << 8) << 16 >> 16) / 32768;
274
+ return t;
275
+ }
276
+ function U(e, t = 11025) {
277
+ const n = Math.max(0, Math.min(255, Math.round(256 - 1e6 / t))), s = 16777200, f = [];
278
+ let h = 0;
279
+ do {
280
+ const o = e.subarray(h, Math.min(e.length, h + s)), d = h === 0, a = d ? 6 : 4, c = new Uint8Array(a + o.length), r = o.length + (d ? 2 : 0);
281
+ c[0] = d ? 1 : 2, c[1] = r & 255, c[2] = r >> 8 & 255, c[3] = r >> 16 & 255, d && (c[4] = n, c[5] = 0);
282
+ for (let M = 0; M < o.length; M++) c[a + M] = Math.max(0, Math.min(255, Math.round(o[M] * 127 + 128)));
283
+ f.push(c), h += s;
284
+ } while (h < e.length);
285
+ const l = new Uint8Array(26);
286
+ for (let o = 0; o < A.length; o++) l[o] = A.charCodeAt(o);
287
+ l[20] = 26;
288
+ const u = 266;
289
+ l[22] = u & 255, l[23] = u >> 8;
290
+ const i = ~u + 4660 & 65535;
291
+ l[24] = i & 255, l[25] = i >> 8;
292
+ const p = new Uint8Array(l.length + f.reduce((o, d) => o + d.length, 0) + 1);
293
+ p.set(l);
294
+ let g = l.length;
295
+ for (const o of f)
296
+ p.set(o, g), g += o.length;
297
+ return p;
298
+ }
299
+ export {
300
+ j as decodeVoc,
301
+ U as encodeVoc,
302
+ C as isVoc
303
+ };
@@ -0,0 +1,45 @@
1
+ const f = {
2
+ protan: [0.152286, 1.052583, -0.204868, 0.114503, 0.786281, 0.099216, -3882e-6, -0.048116, 1.051998],
3
+ deutan: [0.367322, 0.860646, -0.227968, 0.280085, 0.672501, 0.047413, -0.01182, 0.04294, 0.968881],
4
+ tritan: [1.255528, -0.076749, -0.178779, -0.078411, 0.930809, 0.147602, 4733e-6, 0.691367, 0.3039]
5
+ }, l = (t) => t <= 0.04045 ? t / 12.92 : ((t + 0.055) / 1.055) ** 2.4;
6
+ function m(t) {
7
+ const n = Math.max(0, Math.min(1, t));
8
+ return n <= 31308e-7 ? n * 12.92 : 1.055 * n ** (1 / 2.4) - 0.055;
9
+ }
10
+ function y(t, n) {
11
+ return [0, 1, 2].map((o) => Math.max(0, Math.min(1, n[o * 3] * t[0] + n[o * 3 + 1] * t[1] + n[o * 3 + 2] * t[2])));
12
+ }
13
+ function h([t, n, o]) {
14
+ const e = (0.4124 * t + 0.3576 * n + 0.1805 * o) / 0.95047, c = 0.2126 * t + 0.7152 * n + 0.0722 * o, r = (0.0193 * t + 0.1192 * n + 0.9505 * o) / 1.08883, s = (a) => a > 216 / 24389 ? Math.cbrt(a) : (24389 / 27 * a + 16) / 116;
15
+ return [116 * s(c) - 16, 500 * (s(e) - s(c)), 200 * (s(c) - s(r))];
16
+ }
17
+ function p([t, n, o]) {
18
+ const e = (t + 16) / 116, c = (u) => u ** 3 > 216 / 24389 ? u ** 3 : (116 * u - 16) / (24389 / 27), r = c(e + n / 500) * 0.95047, s = c(e), a = c(e - o / 200) * 1.08883;
19
+ return [3.2406 * r - 1.5372 * s - 0.4986 * a, -0.9689 * r + 1.8758 * s + 0.0415 * a, 0.0557 * r - 0.204 * s + 1.057 * a];
20
+ }
21
+ const M = (t, n) => Math.hypot(t[0] - n[0], t[1] - n[1], t[2] - n[2]), i = (t) => t.map((n) => l(n / 255));
22
+ function d(t, n) {
23
+ return y(i(t), f[n]).map((o) => Math.round(255 * m(o)));
24
+ }
25
+ const L = (t, n) => M(h(i(t)), h(i(n)));
26
+ function x(t, n) {
27
+ const o = new Uint8Array(t.length);
28
+ for (let e = 0; e < t.length; e += 3) {
29
+ const [c, r, s] = d([0, 1, 2].map((a) => t[e + a] << 2 | t[e + a] >> 4), n);
30
+ o.set([c >> 2, r >> 2, s >> 2], e);
31
+ }
32
+ return o;
33
+ }
34
+ export {
35
+ f as MACHADO,
36
+ L as deltaEBytes,
37
+ M as deltaELab,
38
+ h as lab,
39
+ m as linearToSrgb,
40
+ d as simulateBytes,
41
+ y as simulateLinear,
42
+ x as simulatePalette,
43
+ l as srgbToLinear,
44
+ p as unlab
45
+ };