@swf2es/native 0.1.14 → 0.1.16

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.
@@ -1 +1 @@
1
- {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../src/render/binary.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,MAAM,GACjB,8xlKAA8xlK,CAAC"}
1
+ {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../src/render/binary.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,MAAM,GACjB,80nKAA80nK,CAAC"}
@@ -97,7 +97,7 @@ export declare class BitmapKernel {
97
97
  readonly layer: (source: BitmapSource, area: BitmapRect, f: LayerFilter, offsets: readonly (readonly [number, number])[]) => Uint32Array | null;
98
98
  /**
99
99
  * `region` of `into` (`intoWidth` wide) made by the copy `op` of `from`'s
100
- * pixels from (sx, sy) on: copyChannel, merge, paletteMap or a colour
100
+ * pixels from (sx, sy) on: copyChannel, merge, copyPixels' blend, paletteMap or a colour
101
101
  * matrix filter (pixel-ops.ts), each pixel reading what the pixels before
102
102
  * it wrote where `from` is `into`. False where the module refused it,
103
103
  * which may leave the rows done before it done.
@@ -512,7 +512,7 @@ export class BitmapKernel {
512
512
  };
513
513
  /**
514
514
  * `region` of `into` (`intoWidth` wide) made by the copy `op` of `from`'s
515
- * pixels from (sx, sy) on: copyChannel, merge, paletteMap or a colour
515
+ * pixels from (sx, sy) on: copyChannel, merge, copyPixels' blend, paletteMap or a colour
516
516
  * matrix filter (pixel-ops.ts), each pixel reading what the pixels before
517
517
  * it wrote where `from` is `into`. False where the module refused it,
518
518
  * which may leave the rows done before it done.
@@ -4,6 +4,7 @@ export interface PixelExports {
4
4
  resetArena(bytes: number): number;
5
5
  channelPixels(params: number): number;
6
6
  mergePixels(params: number): number;
7
+ overPixels(params: number): number;
7
8
  palettePixels(params: number): number;
8
9
  matrixPixels(params: number): number;
9
10
  transformPixels(params: number): number;
@@ -30,6 +31,8 @@ export type CopyOp = {
30
31
  } | {
31
32
  op: "merge";
32
33
  muls: readonly [number, number, number, number];
34
+ } | {
35
+ op: "over";
33
36
  } | {
34
37
  op: "palette";
35
38
  tables: readonly [Uint32Array, Uint32Array, Uint32Array, Uint32Array];
@@ -1 +1 @@
1
- {"version":3,"file":"pixel-ops.d.ts","sourceRoot":"","sources":["../../src/render/pixel-ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pixel-ops.d.ts","sourceRoot":"","sources":["../../src/render/pixel-ops.ts"],"names":[],"mappings":"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"}
@@ -58,7 +58,7 @@ export function copyRows(wasm, into, intoWidth, from, fromWidth, region, sx, sy,
58
58
  src = base + rows * w;
59
59
  stride = w;
60
60
  // paletteMap's and a colour matrix's pixels are the source's alone: the destination's are not read.
61
- const reads = op.op === "channel" || op.op === "merge";
61
+ const reads = op.op === "channel" || op.op === "merge" || op.op === "over";
62
62
  for (let row = 0; row < rows; row++) {
63
63
  if (reads) {
64
64
  const to = (dy0 + row) * intoWidth + dx;
@@ -86,6 +86,9 @@ export function copyRows(wasm, into, intoWidth, from, fromWidth, region, sx, sy,
86
86
  }
87
87
  ok = wasm.mergePixels(at);
88
88
  break;
89
+ case "over":
90
+ ok = wasm.overPixels(at);
91
+ break;
89
92
  case "palette": {
90
93
  params.setUint32(32, at + HEAD, true);
91
94
  params.setUint32(36, 0, true);
@@ -1 +1 @@
1
- {"version":3,"file":"pixel-ops.js","sourceRoot":"","sources":["../../src/render/pixel-ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pixel-ops.js","sourceRoot":"","sources":["../../src/render/pixel-ops.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swf2es/native",
3
- "version": "0.1.14",
3
+ "version": "0.1.16",
4
4
  "description": "swf2es's WebAssembly modules: bitmap kernels, MP3, ADPCM and Nellymoser decoding, zlib and LZMA, fill and line tessellation, and ATF textures",
5
5
  "keywords": [
6
6
  "swf",
package/src/atf/index.ts CHANGED
@@ -2,7 +2,8 @@
2
2
  // level decoded into what a desktop GPU takes, as Flash Player picks it on
3
3
  // the desktop: RGB888 and RGBA8888's JPEG XR images as BGRA, and the block
4
4
  // compressed formats as S3TC, DXT1 or DXT5, rebuilt from their LZMA'd
5
- // indices and JPEG XR endpoint images, or copied where they are raw.
5
+ // indices and JPEG XR endpoint images, or copied where they are raw. The
6
+ // same module writes JPEG XR files too, for BitmapData.encode (jxr.ts).
6
7
  import { DONE, lzmaDecode } from "../compress/index.js";
7
8
  import { decodeJxr, JXR_BGR, JXR_BGRA, JXR_GRAY, JXR_RGB565, type JxrImage } from "./jxr.js";
8
9
  import {
@@ -19,7 +20,15 @@ import {
19
20
  readAtfBlocks,
20
21
  } from "./parse.js";
21
22
 
22
- export { jxrMemoryInUse, jxrTraps } from "./jxr.js";
23
+ export {
24
+ JXR_420,
25
+ JXR_422,
26
+ JXR_444,
27
+ type JxrEncodeOptions,
28
+ jxrEncode,
29
+ jxrMemoryInUse,
30
+ jxrTraps,
31
+ } from "./jxr.js";
23
32
  export * from "./parse.js";
24
33
 
25
34
  /** What a level decodes to: BGRA pixels, or S3TC blocks. */
package/src/atf/jxr.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  // JPEG XR images through jxrlib, synchronously, in one module that imports
2
2
  // nothing, kept as compress's is (instance.ts). Each call copies its input
3
3
  // into the module's memory, decodes in an arena reset first, and copies
4
- // the pixels out. jxrlib is not memory safe on corrupt input: it may read
4
+ // the pixels out; an encode copies its pixels in 16 rows at a time, and
5
+ // the file out. jxrlib is not memory safe on corrupt input: it may read
5
6
  // past its tables, write through null pointers into the bottom of the
6
7
  // stack, or trap, all within its instance. So an instance that refused an
7
8
  // image, or trapped, is let go, and the next image starts in a new one:
@@ -17,6 +18,17 @@ interface Exports {
17
18
  resultPointer(): number;
18
19
  resultWidth(): number;
19
20
  resultHeight(): number;
21
+ resultSize(): number;
22
+ encodeBegin(
23
+ width: number,
24
+ height: number,
25
+ alpha: number,
26
+ quantization: number,
27
+ subsampling: number,
28
+ trim: number,
29
+ ): number;
30
+ encodeRows(input: number, lines: number): number;
31
+ encodeEnd(): number;
20
32
  }
21
33
 
22
34
  /** The pixel formats ATF's images hold, as jxr.c numbers them, and their bytes a pixel out: 24-bit pixels come out as BGRA. */
@@ -81,3 +93,86 @@ export function jxrTraps(): number {
81
93
  export function jxrMemoryInUse(): number {
82
94
  return kept.memory;
83
95
  }
96
+
97
+ /** How an encode keeps chroma, as jxr.c numbers it (jxrlib's colour formats). */
98
+ export const JXR_444 = 3;
99
+ export const JXR_422 = 2;
100
+ export const JXR_420 = 1;
101
+
102
+ /** What an encode writes, Flash's BitmapData.encode's JPEGXREncoderOptions. */
103
+ export interface JxrEncodeOptions {
104
+ /** Whether alpha is kept, and the pixels taken as premultiplied (32bppPBGRA); else 24bppBGR. */
105
+ alpha: boolean;
106
+ /** Flash's quantization, 0 (lossless) to 100. */
107
+ quantization: number;
108
+ /** JXR_444, JXR_422 or JXR_420. */
109
+ subsampling: number;
110
+ /** Flexbits trimmed, 0 to 15; dropped with alpha, as Flash drops them. */
111
+ trimFlexBits: number;
112
+ }
113
+
114
+ /**
115
+ * `pixels`, `width` by `height` of them in rows from the top, each a
116
+ * 0xAARRGGBB (BGRA in memory), as a JPEG XR file, as Flash's
117
+ * BitmapData.encode writes one; a RangeError if the options are out of
118
+ * range or the module cannot have the memory.
119
+ */
120
+ export function jxrEncode(
121
+ pixels: Uint32Array,
122
+ width: number,
123
+ height: number,
124
+ options: JxrEncodeOptions,
125
+ ): Uint8Array {
126
+ const { alpha, quantization, subsampling, trimFlexBits } = options;
127
+ if (pixels.length !== width * height) {
128
+ throw new RangeError(`${pixels.length} pixels are no ${width} by ${height}`);
129
+ }
130
+
131
+ if (
132
+ !(width >= 1 && width <= 65536 && height >= 1 && height <= 65536) ||
133
+ !(Number.isInteger(quantization) && quantization >= 0 && quantization <= 100) ||
134
+ !(Number.isInteger(trimFlexBits) && trimFlexBits >= 0 && trimFlexBits <= 15) ||
135
+ (subsampling !== JXR_444 && subsampling !== JXR_422 && subsampling !== JXR_420)
136
+ ) {
137
+ throw new RangeError(
138
+ `no JPEG XR of ${width} by ${height} pixels with ${JSON.stringify(options)}`,
139
+ );
140
+ }
141
+
142
+ const bytes = kept.call((x) => {
143
+ x.reset();
144
+ // Before the encoder's own allocations, so that its output, the last, grows in place.
145
+ const band = x.alloc(width * 16 * 4);
146
+ if (band === 0) {
147
+ return null;
148
+ }
149
+
150
+ if (
151
+ x.encodeBegin(width, height, alpha ? 1 : 0, quantization, subsampling, trimFlexBits) !== 0
152
+ ) {
153
+ return null;
154
+ }
155
+
156
+ for (let y = 0; y < height; y += 16) {
157
+ const lines = Math.min(16, height - y);
158
+ new Uint32Array(x.memory.buffer, band, width * lines).set(
159
+ pixels.subarray(y * width, (y + lines) * width),
160
+ );
161
+ if (x.encodeRows(band, lines) !== 0) {
162
+ return null;
163
+ }
164
+ }
165
+
166
+ if (x.encodeEnd() !== 0) {
167
+ return null;
168
+ }
169
+
170
+ return new Uint8Array(x.memory.buffer, x.resultPointer(), x.resultSize()).slice();
171
+ });
172
+ if (bytes === null) {
173
+ kept.drop();
174
+ throw new RangeError(`no memory to encode ${width} by ${height} pixels as JPEG XR`);
175
+ }
176
+
177
+ return bytes;
178
+ }
@@ -25,6 +25,7 @@ interface Exports {
25
25
  level: number,
26
26
  filter: number,
27
27
  ): number;
28
+ jpegEncode(input: number, width: number, height: number, quality: number): number;
28
29
  lzmaDecode(properties: number, input: number, length: number, size: number): number;
29
30
  lzmaEncode(input: number, length: number): number;
30
31
  }
@@ -206,6 +207,44 @@ export function pngEncode(
206
207
  });
207
208
  }
208
209
 
210
+ /**
211
+ * A JPEG file of `width` by `height` pixels, ARGB, at `quality`, 0 to 100,
212
+ * as Flash's BitmapData.encode writes one (jpeg.zig): JFIF, 4:2:0, Annex
213
+ * K's quantization tables scaled as the IJG scales them (in 16 bits, under
214
+ * an extended sequential frame, where a value passes 255: under quality
215
+ * 24) and its Huffman tables. Alpha is left out: premultiplied pixels
216
+ * encode as they are, faded to black. Throws a RangeError for a quality
217
+ * past 100 or a side that is 0 or past 65535.
218
+ */
219
+ export function jpegEncode(
220
+ pixels: Uint32Array,
221
+ width: number,
222
+ height: number,
223
+ quality: number,
224
+ ): Uint8Array {
225
+ if (pixels.length !== width * height) {
226
+ throw new RangeError(`${pixels.length} pixels are no ${width} by ${height}`);
227
+ }
228
+
229
+ if (
230
+ !(width >= 1 && width <= 65535 && height >= 1 && height <= 65535) ||
231
+ !(quality >= 0 && quality <= 100)
232
+ ) {
233
+ throw new RangeError(`no JPEG of ${width} by ${height} pixels at quality ${quality}`);
234
+ }
235
+
236
+ return call((x) => {
237
+ const at = input(x, new Uint8Array(pixels.buffer, pixels.byteOffset, pixels.byteLength));
238
+ const bytes =
239
+ at === 0 || x.jpegEncode(at, width, height, quality) !== DONE ? null : output(x, 0);
240
+ if (bytes === null) {
241
+ throw new RangeError(`no memory to encode ${width} by ${height} pixels as a JPEG`);
242
+ }
243
+
244
+ return bytes;
245
+ });
246
+ }
247
+
209
248
  /**
210
249
  * Decode the LZMA stream at `start` of `data`, whose 5 property bytes are at
211
250
  * `properties`, to `size` bytes, or fewer if its end marker comes first.
@@ -713,7 +713,7 @@ export class BitmapKernel {
713
713
 
714
714
  /**
715
715
  * `region` of `into` (`intoWidth` wide) made by the copy `op` of `from`'s
716
- * pixels from (sx, sy) on: copyChannel, merge, paletteMap or a colour
716
+ * pixels from (sx, sy) on: copyChannel, merge, copyPixels' blend, paletteMap or a colour
717
717
  * matrix filter (pixel-ops.ts), each pixel reading what the pixels before
718
718
  * it wrote where `from` is `into`. False where the module refused it,
719
719
  * which may leave the rows done before it done.
@@ -14,6 +14,7 @@ export interface PixelExports {
14
14
  resetArena(bytes: number): number;
15
15
  channelPixels(params: number): number;
16
16
  mergePixels(params: number): number;
17
+ overPixels(params: number): number;
17
18
  palettePixels(params: number): number;
18
19
  matrixPixels(params: number): number;
19
20
  transformPixels(params: number): number;
@@ -46,6 +47,7 @@ export interface Progress {
46
47
  export type CopyOp =
47
48
  | { op: "channel"; from: number; to: number }
48
49
  | { op: "merge"; muls: readonly [number, number, number, number] }
50
+ | { op: "over" }
49
51
  | { op: "palette"; tables: readonly [Uint32Array, Uint32Array, Uint32Array, Uint32Array] }
50
52
  | {
51
53
  op: "matrix";
@@ -112,7 +114,7 @@ export function copyRows(
112
114
  src = base + rows * w;
113
115
  stride = w;
114
116
  // paletteMap's and a colour matrix's pixels are the source's alone: the destination's are not read.
115
- const reads = op.op === "channel" || op.op === "merge";
117
+ const reads = op.op === "channel" || op.op === "merge" || op.op === "over";
116
118
  for (let row = 0; row < rows; row++) {
117
119
  if (reads) {
118
120
  const to = (dy0 + row) * intoWidth + dx;
@@ -144,6 +146,9 @@ export function copyRows(
144
146
 
145
147
  ok = wasm.mergePixels(at);
146
148
  break;
149
+ case "over":
150
+ ok = wasm.overPixels(at);
151
+ break;
147
152
  case "palette": {
148
153
  params.setUint32(32, at + HEAD, true);
149
154
  params.setUint32(36, 0, true);