@takumi-rs/wasm 0.70.3 → 0.71.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@takumi-rs/wasm",
3
- "version": "0.70.3",
3
+ "version": "0.71.0",
4
4
  "keywords": [
5
5
  "image",
6
6
  "rendering",
@@ -61,6 +61,17 @@ class Renderer {
61
61
  clearImageStore() {
62
62
  wasm.renderer_clearImageStore(this.__wbg_ptr);
63
63
  }
64
+ encodeFrames(frames, options) {
65
+ const ptr0 = passArrayJsValueToWasm0(frames, wasm.__wbindgen_malloc);
66
+ const len0 = WASM_VECTOR_LEN;
67
+ const ret = wasm.renderer_encodeFrames(this.__wbg_ptr, ptr0, len0, options);
68
+ if (ret[3]) {
69
+ throw takeFromExternrefTable0(ret[2]);
70
+ }
71
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
72
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
73
+ return v2;
74
+ }
64
75
  loadFont(font) {
65
76
  const ret = wasm.renderer_loadFont(this.__wbg_ptr, font);
66
77
  if (ret[1]) {
@@ -104,16 +115,14 @@ class Renderer {
104
115
  wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
105
116
  return v1;
106
117
  }
107
- renderAnimation(frames, options) {
108
- const ptr0 = passArrayJsValueToWasm0(frames, wasm.__wbindgen_malloc);
109
- const len0 = WASM_VECTOR_LEN;
110
- const ret = wasm.renderer_renderAnimation(this.__wbg_ptr, ptr0, len0, options);
118
+ renderAnimation(options) {
119
+ const ret = wasm.renderer_renderAnimation(this.__wbg_ptr, options);
111
120
  if (ret[3]) {
112
121
  throw takeFromExternrefTable0(ret[2]);
113
122
  }
114
- var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
123
+ var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
115
124
  wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
116
- return v2;
125
+ return v1;
117
126
  }
118
127
  renderAsDataUrl(node, options) {
119
128
  let deferred2_0;
@@ -40,13 +40,63 @@ export type RenderOptions = {
40
40
  * @default 1.0
41
41
  */
42
42
  devicePixelRatio?: number,
43
+ /**
44
+ * The animation timeline time in milliseconds.
45
+ */
46
+ timeMs?: number,
43
47
  };
44
48
 
45
49
  export type RenderAnimationOptions = {
50
+ scenes: AnimationSceneSource[],
46
51
  width: number,
47
52
  height: number,
48
- format?: "webp" | "apng",
53
+ format?: "webp" | "apng" | "gif",
54
+ /**
55
+ * The quality of WebP format (0-100). Ignored for APNG and GIF.
56
+ */
57
+ quality?: number,
58
+ /**
59
+ * The resources fetched externally. You should collect the fetch tasks first using `extractResourceUrls` and then pass the resources here.
60
+ */
61
+ fetchedResources?: ImageSource[],
49
62
  drawDebugBorder?: boolean,
63
+ /**
64
+ * CSS stylesheets to apply before rendering.
65
+ */
66
+ stylesheets?: string[],
67
+ /**
68
+ * Defines the ratio resolution of the image to the physical pixels.
69
+ * @default 1.0
70
+ */
71
+ devicePixelRatio?: number,
72
+ /**
73
+ * Frames per second for timeline sampling.
74
+ */
75
+ fps: number,
76
+ };
77
+
78
+ export type EncodeFramesOptions = {
79
+ width: number,
80
+ height: number,
81
+ format?: "webp" | "apng" | "gif",
82
+ /**
83
+ * The quality of WebP format (0-100). Ignored for APNG and GIF.
84
+ */
85
+ quality?: number,
86
+ /**
87
+ * The resources fetched externally. You should collect the fetch tasks first using `extractResourceUrls` and then pass the resources here.
88
+ */
89
+ fetchedResources?: ImageSource[],
90
+ drawDebugBorder?: boolean,
91
+ /**
92
+ * CSS stylesheets to apply before rendering.
93
+ */
94
+ stylesheets?: string[],
95
+ /**
96
+ * Defines the ratio resolution of the image to the physical pixels.
97
+ * @default 1.0
98
+ */
99
+ devicePixelRatio?: number,
50
100
  };
51
101
 
52
102
  export type FontDetails = {
@@ -95,6 +145,11 @@ export type AnimationFrameSource = {
95
145
  durationMs: number,
96
146
  };
97
147
 
148
+ export type AnimationSceneSource = {
149
+ node: AnyNode,
150
+ durationMs: number,
151
+ };
152
+
98
153
 
99
154
 
100
155
  /**
@@ -107,6 +162,10 @@ export class Renderer {
107
162
  * Clears the renderer's internal image store.
108
163
  */
109
164
  clearImageStore(): void;
165
+ /**
166
+ * Encodes a precomputed frame sequence into an animated image buffer.
167
+ */
168
+ encodeFrames(frames: AnimationFrameSource[], options: EncodeFramesOptions): Uint8Array;
110
169
  /**
111
170
  * Loads a font into the renderer.
112
171
  */
@@ -132,9 +191,9 @@ export class Renderer {
132
191
  */
133
192
  render(node: AnyNode, options?: RenderOptions | null): Uint8Array;
134
193
  /**
135
- * Renders an animation sequence into a buffer.
194
+ * Renders a sequential animation timeline into a buffer.
136
195
  */
137
- renderAnimation(frames: AnimationFrameSource[], options: RenderAnimationOptions): Uint8Array;
196
+ renderAnimation(options: RenderAnimationOptions): Uint8Array;
138
197
  /**
139
198
  * Renders a node tree into a data URL.
140
199
  *
@@ -161,13 +220,14 @@ export interface InitOutput {
161
220
  readonly __wbg_renderer_free: (a: number, b: number) => void;
162
221
  readonly collectNodeFetchTasks: (a: any) => [number, number, number, number];
163
222
  readonly renderer_clearImageStore: (a: number) => void;
223
+ readonly renderer_encodeFrames: (a: number, b: number, c: number, d: any) => [number, number, number, number];
164
224
  readonly renderer_loadFont: (a: number, b: any) => [number, number];
165
225
  readonly renderer_loadFontWithInfo: (a: number, b: any) => [number, number];
166
226
  readonly renderer_measure: (a: number, b: any, c: number) => [number, number, number];
167
227
  readonly renderer_new: (a: number) => [number, number, number];
168
228
  readonly renderer_putPersistentImage: (a: number, b: any) => [number, number];
169
229
  readonly renderer_render: (a: number, b: any, c: number) => [number, number, number, number];
170
- readonly renderer_renderAnimation: (a: number, b: number, c: number, d: any) => [number, number, number, number];
230
+ readonly renderer_renderAnimation: (a: number, b: any) => [number, number, number, number];
171
231
  readonly renderer_renderAsDataUrl: (a: number, b: any, c: any) => [number, number, number, number];
172
232
  readonly extractResourceUrls: (a: any) => [number, number, number, number];
173
233
  readonly __wbindgen_malloc: (a: number, b: number) => number;
@@ -20,6 +20,23 @@ export class Renderer {
20
20
  clearImageStore() {
21
21
  wasm.renderer_clearImageStore(this.__wbg_ptr);
22
22
  }
23
+ /**
24
+ * Encodes a precomputed frame sequence into an animated image buffer.
25
+ * @param {AnimationFrameSource[]} frames
26
+ * @param {EncodeFramesOptions} options
27
+ * @returns {Uint8Array}
28
+ */
29
+ encodeFrames(frames, options) {
30
+ const ptr0 = passArrayJsValueToWasm0(frames, wasm.__wbindgen_malloc);
31
+ const len0 = WASM_VECTOR_LEN;
32
+ const ret = wasm.renderer_encodeFrames(this.__wbg_ptr, ptr0, len0, options);
33
+ if (ret[3]) {
34
+ throw takeFromExternrefTable0(ret[2]);
35
+ }
36
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
37
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
38
+ return v2;
39
+ }
23
40
  /**
24
41
  * Loads a font into the renderer.
25
42
  * @param {Font} font
@@ -92,21 +109,18 @@ export class Renderer {
92
109
  return v1;
93
110
  }
94
111
  /**
95
- * Renders an animation sequence into a buffer.
96
- * @param {AnimationFrameSource[]} frames
112
+ * Renders a sequential animation timeline into a buffer.
97
113
  * @param {RenderAnimationOptions} options
98
114
  * @returns {Uint8Array}
99
115
  */
100
- renderAnimation(frames, options) {
101
- const ptr0 = passArrayJsValueToWasm0(frames, wasm.__wbindgen_malloc);
102
- const len0 = WASM_VECTOR_LEN;
103
- const ret = wasm.renderer_renderAnimation(this.__wbg_ptr, ptr0, len0, options);
116
+ renderAnimation(options) {
117
+ const ret = wasm.renderer_renderAnimation(this.__wbg_ptr, options);
104
118
  if (ret[3]) {
105
119
  throw takeFromExternrefTable0(ret[2]);
106
120
  }
107
- var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
121
+ var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
108
122
  wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
109
- return v2;
123
+ return v1;
110
124
  }
111
125
  /**
112
126
  * Renders a node tree into a data URL.
Binary file
@@ -4,13 +4,14 @@ export const memory: WebAssembly.Memory;
4
4
  export const __wbg_renderer_free: (a: number, b: number) => void;
5
5
  export const collectNodeFetchTasks: (a: any) => [number, number, number, number];
6
6
  export const renderer_clearImageStore: (a: number) => void;
7
+ export const renderer_encodeFrames: (a: number, b: number, c: number, d: any) => [number, number, number, number];
7
8
  export const renderer_loadFont: (a: number, b: any) => [number, number];
8
9
  export const renderer_loadFontWithInfo: (a: number, b: any) => [number, number];
9
10
  export const renderer_measure: (a: number, b: any, c: number) => [number, number, number];
10
11
  export const renderer_new: (a: number) => [number, number, number];
11
12
  export const renderer_putPersistentImage: (a: number, b: any) => [number, number];
12
13
  export const renderer_render: (a: number, b: any, c: number) => [number, number, number, number];
13
- export const renderer_renderAnimation: (a: number, b: number, c: number, d: any) => [number, number, number, number];
14
+ export const renderer_renderAnimation: (a: number, b: any) => [number, number, number, number];
14
15
  export const renderer_renderAsDataUrl: (a: number, b: any, c: any) => [number, number, number, number];
15
16
  export const extractResourceUrls: (a: any) => [number, number, number, number];
16
17
  export const __wbindgen_malloc: (a: number, b: number) => number;