@swf2es/format 0.0.0-stage → 0.1.1

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 (94) hide show
  1. package/LICENSE +202 -0
  2. package/LICENSE.third-party +35 -0
  3. package/README.md +22 -2
  4. package/dist/abc-names.d.ts +3 -0
  5. package/dist/abc-names.d.ts.map +1 -0
  6. package/dist/abc-names.js +127 -0
  7. package/dist/abc-names.js.map +1 -0
  8. package/dist/actions.d.ts +106 -0
  9. package/dist/actions.d.ts.map +1 -0
  10. package/dist/actions.js +223 -0
  11. package/dist/actions.js.map +1 -0
  12. package/dist/air-descriptor.d.ts +11 -0
  13. package/dist/air-descriptor.d.ts.map +1 -0
  14. package/dist/air-descriptor.js +64 -0
  15. package/dist/air-descriptor.js.map +1 -0
  16. package/dist/api-versions.d.ts +12 -0
  17. package/dist/api-versions.d.ts.map +1 -0
  18. package/dist/api-versions.js +23 -0
  19. package/dist/api-versions.js.map +1 -0
  20. package/dist/bitmap.d.ts +34 -0
  21. package/dist/bitmap.d.ts.map +1 -0
  22. package/dist/bitmap.js +200 -0
  23. package/dist/bitmap.js.map +1 -0
  24. package/dist/button.d.ts +39 -0
  25. package/dist/button.d.ts.map +1 -0
  26. package/dist/button.js +61 -0
  27. package/dist/button.js.map +1 -0
  28. package/dist/compression.d.ts +47 -0
  29. package/dist/compression.d.ts.map +1 -0
  30. package/dist/compression.js +201 -0
  31. package/dist/compression.js.map +1 -0
  32. package/dist/display.d.ts +106 -0
  33. package/dist/display.d.ts.map +1 -0
  34. package/dist/display.js +306 -0
  35. package/dist/display.js.map +1 -0
  36. package/dist/filters.d.ts +66 -0
  37. package/dist/filters.d.ts.map +1 -0
  38. package/dist/filters.js +137 -0
  39. package/dist/filters.js.map +1 -0
  40. package/dist/font.d.ts +60 -0
  41. package/dist/font.d.ts.map +1 -0
  42. package/dist/font.js +169 -0
  43. package/dist/font.js.map +1 -0
  44. package/dist/index.d.ts +27 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.js +27 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/pbj.d.ts +178 -0
  49. package/dist/pbj.d.ts.map +1 -0
  50. package/dist/pbj.js +485 -0
  51. package/dist/pbj.js.map +1 -0
  52. package/dist/shape.d.ts +152 -0
  53. package/dist/shape.d.ts.map +1 -0
  54. package/dist/shape.js +412 -0
  55. package/dist/shape.js.map +1 -0
  56. package/dist/sound.d.ts +71 -0
  57. package/dist/sound.d.ts.map +1 -0
  58. package/dist/sound.js +92 -0
  59. package/dist/sound.js.map +1 -0
  60. package/dist/swf.d.ts +77 -0
  61. package/dist/swf.d.ts.map +1 -0
  62. package/dist/swf.js +164 -0
  63. package/dist/swf.js.map +1 -0
  64. package/dist/tags.d.ts +57 -0
  65. package/dist/tags.d.ts.map +1 -0
  66. package/dist/tags.js +59 -0
  67. package/dist/tags.js.map +1 -0
  68. package/dist/text.d.ts +75 -0
  69. package/dist/text.d.ts.map +1 -0
  70. package/dist/text.js +136 -0
  71. package/dist/text.js.map +1 -0
  72. package/dist/zip.d.ts +17 -0
  73. package/dist/zip.d.ts.map +1 -0
  74. package/dist/zip.js +92 -0
  75. package/dist/zip.js.map +1 -0
  76. package/package.json +33 -3
  77. package/src/abc-names.ts +138 -0
  78. package/src/actions.ts +319 -0
  79. package/src/air-descriptor.ts +84 -0
  80. package/src/api-versions.ts +27 -0
  81. package/src/bitmap.ts +259 -0
  82. package/src/button.ts +99 -0
  83. package/src/compression.ts +243 -0
  84. package/src/display.ts +419 -0
  85. package/src/filters.ts +206 -0
  86. package/src/font.ts +238 -0
  87. package/src/index.ts +151 -0
  88. package/src/pbj.ts +651 -0
  89. package/src/shape.ts +618 -0
  90. package/src/sound.ts +173 -0
  91. package/src/swf.ts +234 -0
  92. package/src/tags.ts +58 -0
  93. package/src/text.ts +213 -0
  94. package/src/zip.ts +135 -0
package/dist/pbj.js ADDED
@@ -0,0 +1,485 @@
1
+ // Pixel Bender bytecode (PBJ), as flash.display.Shader takes it: the
2
+ // kernel's metadata, parameters and image inputs, then its operations. The
3
+ // layout is Ruffle's (https://github.com/ruffle-rs/ruffle)
4
+ // render/pixel_bender/src/parser.rs, itself after pbjas and Haxe's
5
+ // format.pbj: MIT OR Apache-2.0, Copyright (c) 2018-2022 Ruffle LLC and
6
+ // Ruffle contributors. What Flash refuses, and with which error, is
7
+ // adl's: bytes that end inside an opcode are EOFError 2030, and anything
8
+ // else it will not run, ArgumentError 2004, kernels Ruffle accepts among
9
+ // them (each operation's register kinds and sizes, PBJ_RULES).
10
+ import { utf8 } from "./display.js";
11
+ /** The parameter and metadata types, by their PBJ code, as ShaderParameterType names them. */
12
+ export const PBJ_TYPES = [
13
+ null,
14
+ "float",
15
+ "float2",
16
+ "float3",
17
+ "float4",
18
+ "matrix2x2",
19
+ "matrix3x3",
20
+ "matrix4x4",
21
+ "int",
22
+ "int2",
23
+ "int3",
24
+ "int4",
25
+ "string",
26
+ "bool",
27
+ "bool2",
28
+ "bool3",
29
+ "bool4",
30
+ ];
31
+ export const PBJ_STRING = 0xc;
32
+ /** How many numbers a value of each type holds, by code; 0 for a string. */
33
+ export const PBJ_TYPE_SIZES = [0, 1, 2, 3, 4, 4, 9, 16, 1, 2, 3, 4, 0, 1, 2, 3, 4];
34
+ /** Whether a type's numbers are floats, by code. */
35
+ export function pbjFloatType(type) {
36
+ return type >= 0x1 && type <= 0x7;
37
+ }
38
+ export const PbjOp = {
39
+ nop: 0x00,
40
+ add: 0x01,
41
+ sub: 0x02,
42
+ mul: 0x03,
43
+ rcp: 0x04,
44
+ div: 0x05,
45
+ atan2: 0x06,
46
+ pow: 0x07,
47
+ mod: 0x08,
48
+ min: 0x09,
49
+ max: 0x0a,
50
+ step: 0x0b,
51
+ sin: 0x0c,
52
+ cos: 0x0d,
53
+ tan: 0x0e,
54
+ asin: 0x0f,
55
+ acos: 0x10,
56
+ atan: 0x11,
57
+ exp: 0x12,
58
+ exp2: 0x13,
59
+ log: 0x14,
60
+ log2: 0x15,
61
+ sqrt: 0x16,
62
+ rsqrt: 0x17,
63
+ abs: 0x18,
64
+ sign: 0x19,
65
+ floor: 0x1a,
66
+ ceil: 0x1b,
67
+ fract: 0x1c,
68
+ mov: 0x1d,
69
+ floatToInt: 0x1e,
70
+ intToFloat: 0x1f,
71
+ matMatMul: 0x20,
72
+ vecMatMul: 0x21,
73
+ matVecMul: 0x22,
74
+ normalize: 0x23,
75
+ length: 0x24,
76
+ distance: 0x25,
77
+ dot: 0x26,
78
+ cross: 0x27,
79
+ equal: 0x28,
80
+ notEqual: 0x29,
81
+ lessThan: 0x2a,
82
+ lessThanEqual: 0x2b,
83
+ logicalNot: 0x2c,
84
+ logicalAnd: 0x2d,
85
+ logicalOr: 0x2e,
86
+ logicalXor: 0x2f,
87
+ sampleNearest: 0x30,
88
+ sampleLinear: 0x31,
89
+ load: 0x32,
90
+ select: 0x33,
91
+ if: 0x34,
92
+ else: 0x35,
93
+ endIf: 0x36,
94
+ floatToBool: 0x37,
95
+ boolToFloat: 0x38,
96
+ intToBool: 0x39,
97
+ boolToInt: 0x3a,
98
+ vectorEqual: 0x3b,
99
+ vectorNotEqual: 0x3c,
100
+ any: 0x3d,
101
+ all: 0x3e,
102
+ kernelMetadata: 0xa0,
103
+ parameter: 0xa1,
104
+ parameterMetadata: 0xa2,
105
+ texture: 0xa3,
106
+ name: 0xa4,
107
+ version: 0xa5,
108
+ };
109
+ /** Why Flash refuses a kernel: EOFError 2030 for bytes that end too soon, ArgumentError 2004 for anything else. */
110
+ export class PbjError extends Error {
111
+ errorID;
112
+ constructor(errorID) {
113
+ super(errorID === 2030 ? "End of file was encountered." : "One of the parameters is invalid.");
114
+ this.errorID = errorID;
115
+ }
116
+ }
117
+ const F = 1;
118
+ const I = 2;
119
+ const FF = [F, F];
120
+ const FF_II = [F, F, I, I];
121
+ const SAME_FLOAT = { kinds: FF, sizes: "same" };
122
+ const SAME_EITHER = { kinds: FF_II, sizes: "same" };
123
+ export const PBJ_RULES = new Map([
124
+ [PbjOp.add, SAME_EITHER],
125
+ [PbjOp.sub, SAME_EITHER],
126
+ [PbjOp.mul, SAME_EITHER],
127
+ [PbjOp.div, SAME_EITHER],
128
+ [PbjOp.mov, SAME_EITHER],
129
+ [PbjOp.equal, SAME_EITHER],
130
+ [PbjOp.notEqual, SAME_EITHER],
131
+ [PbjOp.lessThan, SAME_EITHER],
132
+ [PbjOp.lessThanEqual, SAME_EITHER],
133
+ [PbjOp.matMatMul, SAME_FLOAT],
134
+ [PbjOp.vecMatMul, { kinds: [F, F, F, I, I, F, I, I], sizes: "scalar" }],
135
+ [PbjOp.matVecMul, { kinds: [F, F, F, I, I, F, I, I], sizes: "scalar" }],
136
+ [PbjOp.normalize, { kinds: FF, sizes: "vector" }],
137
+ [PbjOp.length, { kinds: FF, sizes: "length" }],
138
+ [PbjOp.distance, { kinds: FF, sizes: "vector" }],
139
+ [PbjOp.cross, { kinds: FF, sizes: "cross" }],
140
+ [PbjOp.floatToInt, { kinds: [I, F], sizes: "same" }],
141
+ [PbjOp.intToFloat, { kinds: [F, I], sizes: "same" }],
142
+ [PbjOp.logicalNot, { kinds: [I, I], sizes: "scalar" }],
143
+ [PbjOp.logicalAnd, { kinds: [I, I], sizes: "scalar" }],
144
+ [PbjOp.logicalOr, { kinds: [I, I], sizes: "scalar" }],
145
+ [PbjOp.logicalXor, { kinds: [I, I], sizes: "scalar" }],
146
+ [PbjOp.floatToBool, { kinds: [I, F], sizes: "any" }],
147
+ [PbjOp.boolToFloat, { kinds: [F, I], sizes: "any" }],
148
+ [PbjOp.intToBool, { kinds: [I, I], sizes: "any" }],
149
+ [PbjOp.boolToInt, { kinds: [F, I], sizes: "any" }],
150
+ [PbjOp.vectorEqual, { kinds: FF_II, sizes: "any" }],
151
+ [PbjOp.vectorNotEqual, { kinds: FF_II, sizes: "any" }],
152
+ [PbjOp.any, { kinds: [I, I], sizes: "any" }],
153
+ [PbjOp.all, { kinds: [I, I], sizes: "any" }],
154
+ ]);
155
+ for (let op = PbjOp.rcp; op <= PbjOp.fract; op++) {
156
+ if (op !== PbjOp.div) {
157
+ PBJ_RULES.set(op, SAME_FLOAT);
158
+ }
159
+ }
160
+ PBJ_RULES.set(PbjOp.dot, SAME_FLOAT);
161
+ /** The operations adl takes on matrices, each column as its registers hold it. */
162
+ const MATRIX_OPS = [
163
+ PbjOp.add,
164
+ PbjOp.sub,
165
+ PbjOp.mul,
166
+ PbjOp.mov,
167
+ PbjOp.matMatMul,
168
+ PbjOp.matVecMul,
169
+ PbjOp.vecMatMul,
170
+ ];
171
+ function sizesFit(rule, dst, src) {
172
+ switch (rule.sizes) {
173
+ case "same":
174
+ return dst === src;
175
+ case "any":
176
+ return true;
177
+ case "scalar":
178
+ return dst === 1 && src === 1;
179
+ case "vector":
180
+ return dst === src && src >= 2;
181
+ case "length":
182
+ return dst === 1 && src >= 2;
183
+ case "cross":
184
+ return dst === 3 && src === 3;
185
+ }
186
+ }
187
+ function kindsFit(rule, dst, src) {
188
+ const d = dst.int ? I : F;
189
+ const s = src.int ? I : F;
190
+ for (let i = 0; i < rule.kinds.length; i += 2) {
191
+ if (rule.kinds[i] === d && rule.kinds[i + 1] === s) {
192
+ return true;
193
+ }
194
+ }
195
+ return false;
196
+ }
197
+ class Reader {
198
+ bytes;
199
+ at = 0;
200
+ view;
201
+ constructor(bytes) {
202
+ this.bytes = bytes;
203
+ this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
204
+ }
205
+ get done() {
206
+ return this.at >= this.bytes.length;
207
+ }
208
+ need(n) {
209
+ const at = this.at;
210
+ if (at + n > this.bytes.length) {
211
+ throw new PbjError(2030);
212
+ }
213
+ this.at += n;
214
+ return at;
215
+ }
216
+ u8() {
217
+ return this.bytes[this.need(1)];
218
+ }
219
+ u16() {
220
+ return this.view.getUint16(this.need(2), true);
221
+ }
222
+ u24() {
223
+ const at = this.need(3);
224
+ return this.bytes[at] | (this.bytes[at + 1] << 8) | (this.bytes[at + 2] << 16);
225
+ }
226
+ i32() {
227
+ return this.view.getInt32(this.need(4), true);
228
+ }
229
+ /** A float, big-endian, unlike every other number in PBJ. */
230
+ f32() {
231
+ return this.view.getFloat32(this.need(4), false);
232
+ }
233
+ skip(n) {
234
+ this.need(n);
235
+ }
236
+ /** A string to its terminating zero, in UTF-8. */
237
+ cstring() {
238
+ const start = this.at;
239
+ while (this.u8() !== 0) {
240
+ // Up to the zero.
241
+ }
242
+ return utf8(this.bytes.subarray(start, this.at - 1));
243
+ }
244
+ string(length) {
245
+ return utf8(this.bytes.subarray(this.need(length), this.at));
246
+ }
247
+ }
248
+ /** A destination: a register of the channels its 4-bit mask writes, r first. */
249
+ function destination(value, mask) {
250
+ const channels = [];
251
+ for (let c = 0; c < 4; c++) {
252
+ if (mask & (8 >> c)) {
253
+ channels.push(c);
254
+ }
255
+ }
256
+ return {
257
+ index: value & 0x7fff,
258
+ int: (value & 0x8000) !== 0,
259
+ channels,
260
+ size: channels.length,
261
+ matrix: 0,
262
+ };
263
+ }
264
+ /** A source: its register in the low 16 bits, the swizzle's four channels in the high 8. */
265
+ function source(value, size) {
266
+ const swizzle = value >>> 16;
267
+ const channels = [];
268
+ for (let i = 0; i < 4; i++) {
269
+ channels.push((swizzle >> (6 - i * 2)) & 3);
270
+ }
271
+ return { index: value & 0x7fff, int: (value & 0x8000) !== 0, channels, size, matrix: 0 };
272
+ }
273
+ function matrix(value, size) {
274
+ return {
275
+ index: value & 0x7fff,
276
+ int: (value & 0x8000) !== 0,
277
+ channels: [],
278
+ size: 1,
279
+ matrix: size,
280
+ };
281
+ }
282
+ function metadataValue(r, type) {
283
+ if (type === PBJ_STRING) {
284
+ return r.cstring();
285
+ }
286
+ const values = [];
287
+ for (let i = 0; i < PBJ_TYPE_SIZES[type]; i++) {
288
+ values.push(pbjFloatType(type) ? r.f32() : r.u16());
289
+ }
290
+ return values;
291
+ }
292
+ /**
293
+ * The kernel `bytes` hold, or PbjError with the error Flash refuses it
294
+ * with. Every byte is read: PBJ has no length, so it ends with the bytes.
295
+ */
296
+ export function readPbj(bytes) {
297
+ const r = new Reader(bytes);
298
+ const kernel = {
299
+ name: null,
300
+ metadata: [],
301
+ parameters: [],
302
+ inputs: [],
303
+ operations: [],
304
+ };
305
+ /** The parameter the second metadata opcode adds to: the last one, but for an input after it. */
306
+ let owner = null;
307
+ let depth = 0;
308
+ const elses = [];
309
+ const refuse = () => {
310
+ throw new PbjError(2004);
311
+ };
312
+ while (!r.done) {
313
+ const op = r.u8();
314
+ switch (op) {
315
+ case PbjOp.version: {
316
+ if (r.i32() !== 1) {
317
+ refuse();
318
+ }
319
+ break;
320
+ }
321
+ case PbjOp.name: {
322
+ kernel.name = r.string(r.u16());
323
+ break;
324
+ }
325
+ case PbjOp.kernelMetadata:
326
+ case PbjOp.parameterMetadata: {
327
+ const type = r.u8();
328
+ const key = r.cstring();
329
+ if (type === 0 || type >= PBJ_TYPES.length) {
330
+ // adl reads on past what it cannot size, to the end.
331
+ throw new PbjError(2030);
332
+ }
333
+ const value = metadataValue(r, type);
334
+ if (op === PbjOp.kernelMetadata) {
335
+ if (type !== PBJ_STRING && type !== 0x8) {
336
+ refuse();
337
+ }
338
+ kernel.metadata.push({ key, type, value });
339
+ }
340
+ else {
341
+ owner?.metadata.push({ key, type, value });
342
+ }
343
+ break;
344
+ }
345
+ case PbjOp.parameter: {
346
+ const qualifier = r.u8();
347
+ const type = r.u8();
348
+ const reg = r.u16();
349
+ const mask = r.u8();
350
+ const name = r.cstring();
351
+ const output = qualifier === 2;
352
+ if (type === PBJ_STRING || name === "name" || (output && !pbjFloatType(type))) {
353
+ refuse();
354
+ }
355
+ const size = type - 0x5 + 2;
356
+ const register = size >= 2 && size <= 4 ? matrix(reg, size) : destination(reg, mask & 0xf);
357
+ const parameter = { name, type, output, register, metadata: [] };
358
+ if (output && register.matrix) {
359
+ refuse();
360
+ }
361
+ kernel.parameters.push(parameter);
362
+ owner = parameter;
363
+ break;
364
+ }
365
+ case PbjOp.texture: {
366
+ const index = r.u8();
367
+ const channels = r.u8();
368
+ kernel.inputs.push({ name: r.cstring(), index, channels });
369
+ owner = null;
370
+ break;
371
+ }
372
+ case PbjOp.nop: {
373
+ // Both words read first: a nop cut short is EOFError 2030, whatever its bytes.
374
+ const first = r.u24();
375
+ const second = r.u24();
376
+ if (first !== 0 || second !== 0) {
377
+ refuse();
378
+ }
379
+ break;
380
+ }
381
+ case PbjOp.load: {
382
+ const dst = destination(r.u16(), r.u8() >> 4);
383
+ const value = dst.int ? r.i32() & 0xffff : r.f32();
384
+ if (dst.size === 0) {
385
+ refuse();
386
+ }
387
+ kernel.operations.push({ op, dst, value });
388
+ break;
389
+ }
390
+ case PbjOp.sampleNearest:
391
+ case PbjOp.sampleLinear: {
392
+ const reg = r.u16();
393
+ const mask = r.u8();
394
+ const src = source(r.u24(), (mask & 3) + 1);
395
+ const texture = r.u8();
396
+ const dst = destination(reg, mask >> 4);
397
+ // adl takes an int coordinate, and a texture never declared, which then has no input.
398
+ if (dst.int || dst.size === 0) {
399
+ refuse();
400
+ }
401
+ kernel.operations.push({ op, dst, src, texture });
402
+ break;
403
+ }
404
+ case PbjOp.if: {
405
+ r.skip(3);
406
+ const src = source(r.u24(), 1);
407
+ r.skip(1);
408
+ if (!src.int) {
409
+ refuse();
410
+ }
411
+ depth++;
412
+ elses.push(false);
413
+ kernel.operations.push({ op, src });
414
+ break;
415
+ }
416
+ case PbjOp.else:
417
+ case PbjOp.endIf: {
418
+ r.skip(7);
419
+ if (depth === 0 || (op === PbjOp.else && elses[elses.length - 1])) {
420
+ refuse();
421
+ }
422
+ if (op === PbjOp.else) {
423
+ elses[elses.length - 1] = true;
424
+ }
425
+ else {
426
+ depth--;
427
+ elses.pop();
428
+ }
429
+ kernel.operations.push({ op });
430
+ break;
431
+ }
432
+ case PbjOp.select: {
433
+ const dst = destination(r.u16(), r.u8() >> 4);
434
+ const condition = source(r.u24(), 1);
435
+ r.skip(1);
436
+ const a = source(r.u24(), dst.size);
437
+ r.skip(1);
438
+ const b = source(r.u24(), dst.size);
439
+ r.skip(1);
440
+ if (!condition.int || dst.int !== a.int || a.int !== b.int || dst.size === 0) {
441
+ refuse();
442
+ }
443
+ kernel.operations.push({ op, dst, condition, a, b });
444
+ break;
445
+ }
446
+ default: {
447
+ const reg = r.u16();
448
+ const mask = r.u8();
449
+ const value = r.u24();
450
+ r.skip(1);
451
+ const rule = PBJ_RULES.get(op) ?? refuse();
452
+ const size = (mask & 3) + 1;
453
+ const bits = (mask >> 2) & 3;
454
+ if (bits === 0) {
455
+ const dst = destination(reg, mask >> 4);
456
+ const src = source(value, size);
457
+ if (dst.size === 0 || !kindsFit(rule, dst, src) || !sizesFit(rule, dst.size, src.size)) {
458
+ refuse();
459
+ }
460
+ kernel.operations.push({ op, dst, src });
461
+ break;
462
+ }
463
+ // A matrix: its size in the mask, and no swizzle.
464
+ const n = bits + 1;
465
+ const src = matrix(value, n);
466
+ const vector = op === PbjOp.matVecMul || op === PbjOp.vecMatMul;
467
+ const dst = vector ? destination(reg, mask >> 4) : matrix(reg, n);
468
+ if (!MATRIX_OPS.includes(op) ||
469
+ value >>> 16 !== 0 ||
470
+ size !== 1 ||
471
+ src.int ||
472
+ dst.int ||
473
+ (vector ? dst.size !== n : mask >> 4 !== 0)) {
474
+ refuse();
475
+ }
476
+ kernel.operations.push({ op, dst, src });
477
+ }
478
+ }
479
+ }
480
+ if (depth !== 0 || !kernel.parameters.some((p) => p.output)) {
481
+ refuse();
482
+ }
483
+ return kernel;
484
+ }
485
+ //# sourceMappingURL=pbj.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbj.js","sourceRoot":"","sources":["../src/pbj.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,152 @@
1
+ import { type Rect, SwfReader } from "./swf.js";
2
+ /** An affine transform as MATRIX holds one: a, b, c, d as numbers, tx and ty in twips. */
3
+ export interface Matrix {
4
+ a: number;
5
+ b: number;
6
+ c: number;
7
+ d: number;
8
+ tx: number;
9
+ ty: number;
10
+ }
11
+ export declare const IDENTITY: Matrix;
12
+ /** A colour transform, as CXFORM or, with alpha, CXFORMWITHALPHA: multipliers /256, offsets. */
13
+ export interface ColorTransform {
14
+ rMul: number;
15
+ gMul: number;
16
+ bMul: number;
17
+ aMul: number;
18
+ rAdd: number;
19
+ gAdd: number;
20
+ bAdd: number;
21
+ aAdd: number;
22
+ }
23
+ export interface GradientStop {
24
+ ratio: number;
25
+ /** 0xAARRGGBB. */
26
+ color: number;
27
+ }
28
+ export interface Gradient {
29
+ matrix: Matrix;
30
+ /** 0 pad, 1 reflect, 2 repeat. */
31
+ spread: number;
32
+ /** 0 normal RGB, 1 linear RGB. */
33
+ interpolation: number;
34
+ stops: GradientStop[];
35
+ /** A focal gradient's focal point, -1 to 1; 0 for any other. */
36
+ focal: number;
37
+ }
38
+ export type Fill = {
39
+ type: "solid";
40
+ color: number;
41
+ } | {
42
+ type: "linear" | "radial" | "focal";
43
+ gradient: Gradient;
44
+ } | {
45
+ type: "bitmap";
46
+ bitmap: number;
47
+ matrix: Matrix;
48
+ repeat: boolean;
49
+ smooth: boolean;
50
+ };
51
+ export interface Line {
52
+ /** Width in twips; 0 is a hairline. */
53
+ width: number;
54
+ /** 0xAARRGGBB, or the colour of a gradient's first stop for a filled line. */
55
+ color: number;
56
+ /** DefineShape4's LINESTYLE2 fields, else a round line. */
57
+ startCap: number;
58
+ endCap: number;
59
+ /** 0 round, 1 bevel, 2 miter. */
60
+ join: number;
61
+ miterLimit: number;
62
+ noHScale: boolean;
63
+ noVScale: boolean;
64
+ pixelHinting: boolean;
65
+ noClose: boolean;
66
+ fill: Fill | null;
67
+ }
68
+ /**
69
+ * A shape record: a style change, which may move the pen (moveTo, absolute),
70
+ * switch fills and line (0 for none, else 1-based into the styles in force),
71
+ * and bring new styles; or an edge from the pen, straight or quadratic,
72
+ * with its deltas in twips.
73
+ */
74
+ export type ShapeRecord = {
75
+ type: "style";
76
+ moveTo: {
77
+ x: number;
78
+ y: number;
79
+ } | null;
80
+ fill0: number | null;
81
+ fill1: number | null;
82
+ line: number | null;
83
+ styles: {
84
+ fills: Fill[];
85
+ lines: Line[];
86
+ } | null;
87
+ } | {
88
+ type: "line";
89
+ dx: number;
90
+ dy: number;
91
+ } | {
92
+ type: "curve";
93
+ cx: number;
94
+ cy: number;
95
+ ax: number;
96
+ ay: number;
97
+ };
98
+ export interface Shape {
99
+ id: number;
100
+ bounds: Rect;
101
+ /** DefineShape4's bounds without the lines' widths. */
102
+ edgeBounds: Rect | null;
103
+ fills: Fill[];
104
+ lines: Line[];
105
+ records: ShapeRecord[];
106
+ /** Whether the records ran past the tag's end. */
107
+ truncated: boolean;
108
+ }
109
+ export declare function readMatrix(r: SwfReader): Matrix;
110
+ export declare function readColorTransform(r: SwfReader, alpha: boolean): ColorTransform;
111
+ /** The records from the reader's position: fill and line bit counts first, then records to the end record. */
112
+ export declare function readRecords(r: SwfReader, version: number): {
113
+ records: ShapeRecord[];
114
+ truncated: boolean;
115
+ };
116
+ /**
117
+ * A DefineShape tag's body, of the version its code gives, from a SWF of
118
+ * `swfVersion`, which decides whether its bitmap fills may be smoothed.
119
+ */
120
+ export declare function readShape(bytes: Uint8Array, code: number, offset: number, length: number, swfVersion?: number): Shape;
121
+ /**
122
+ * DefineMorphShape or DefineMorphShape2: a shape at two ends, which a
123
+ * placement's ratio blends. Each fill and line is a pair, its start and its
124
+ * end; the end's records have the start's edges in the same order and only
125
+ * moves for style changes.
126
+ */
127
+ export interface MorphShape {
128
+ id: number;
129
+ startBounds: Rect;
130
+ endBounds: Rect;
131
+ /** DefineMorphShape2's bounds without the lines' widths. */
132
+ startEdgeBounds: Rect | null;
133
+ endEdgeBounds: Rect | null;
134
+ fills: {
135
+ start: Fill;
136
+ end: Fill;
137
+ }[];
138
+ lines: {
139
+ start: Line;
140
+ end: Line;
141
+ }[];
142
+ start: ShapeRecord[];
143
+ end: ShapeRecord[];
144
+ /** Whether either end's records ran past the tag's end. */
145
+ truncated: boolean;
146
+ }
147
+ /**
148
+ * A DefineMorphShape or DefineMorphShape2 tag's body, of the version its
149
+ * code gives, from a SWF of `swfVersion` (as `readShape`).
150
+ */
151
+ export declare function readMorphShape(bytes: Uint8Array, code: number, offset: number, length: number, swfVersion?: number): MorphShape;
152
+ //# sourceMappingURL=shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../src/shape.ts"],"names":[],"mappings":"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"}