@mocanvas/wasm 1.0.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.
@@ -0,0 +1,243 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+
4
+ /**
5
+ * The engine: one scene (the current page) and one renderer.
6
+ */
7
+ export class Engine {
8
+ free(): void;
9
+ [Symbol.dispose](): void;
10
+ /**
11
+ * Union of all page bounds → `f32_ptr()`. Returns false if the scene is empty.
12
+ */
13
+ all_bounds(): boolean;
14
+ /**
15
+ * Union of all geometry bounds → `f32_ptr()`. Returns false if the scene is empty.
16
+ */
17
+ all_geometry_bounds(): boolean;
18
+ /**
19
+ * Apply `len` words of commands from the command buffer. Returns the number of
20
+ * commands applied; on a malformed stream applies what it can and records an error.
21
+ */
22
+ apply(len: number): number;
23
+ /**
24
+ * Number of u32 in the batch buffer (7 per batch).
25
+ */
26
+ batches_len(): number;
27
+ /**
28
+ * Pointer to batch records: `first_index count texture clip_minx clip_miny clip_maxx
29
+ * clip_maxy` (clip as f32 bits; all four zero = no clip).
30
+ */
31
+ batches_ptr(): number;
32
+ /**
33
+ * Page bounds of a shape → `f32_ptr()` holds `minx miny maxx maxy`. Returns false if missing.
34
+ */
35
+ bounds(handle: number): boolean;
36
+ /**
37
+ * Current capacity of the command buffer in words.
38
+ */
39
+ cmd_capacity(): number;
40
+ /**
41
+ * Reserve the command buffer for at least `words` u32 words and return its pointer.
42
+ * The host writes commands into a `Uint32Array(memory.buffer, ptr, words)` view
43
+ * (bit-casting floats) and then calls [`Engine::apply`].
44
+ */
45
+ cmd_ptr(words: number): number;
46
+ /**
47
+ * Shapes culled last frame.
48
+ */
49
+ culled_count(): number;
50
+ /**
51
+ * The default per-frame tessellation budget.
52
+ */
53
+ static default_tess_budget(): number;
54
+ /**
55
+ * Shapes drawn last frame.
56
+ */
57
+ drawn_count(): number;
58
+ /**
59
+ * Change counter.
60
+ */
61
+ epoch(): number;
62
+ /**
63
+ * Pointer to the small f32 result buffer.
64
+ */
65
+ f32_ptr(): number;
66
+ /**
67
+ * Build the frame for a camera (`cx, cy` page offset, `zoom`) and viewport size in
68
+ * screen pixels. Afterwards read the buffers through the `*_ptr`/`*_len` getters.
69
+ *
70
+ * The buffers are page-space, so they do not depend on the camera: when the scene
71
+ * is unchanged and the camera has only moved a little, this reuses the previous
72
+ * build, leaves the buffers alone and reports [`Engine::frame_dirty`] `false` — the
73
+ * host can then skip re-uploading them and just redraw with the new camera uniform.
74
+ *
75
+ * `tess_budget` caps how many shapes may be tessellated in this call (0 = no cap);
76
+ * the rest are drawn as level-of-detail quads until a later frame catches up, with
77
+ * [`Engine::frame_pending`] set meanwhile.
78
+ */
79
+ frame(cam_x: number, cam_y: number, zoom: number, vp_w: number, vp_h: number, tess_budget: number): void;
80
+ /**
81
+ * Whether the last [`Engine::frame`] rebuilt the buffers. When false the pointers,
82
+ * lengths and contents are exactly what the previous frame produced.
83
+ */
84
+ frame_dirty(): boolean;
85
+ /**
86
+ * Whether shapes are still waiting on the tessellation budget and are meanwhile
87
+ * drawn as quads. The host should keep scheduling frames while this is true.
88
+ */
89
+ frame_pending(): boolean;
90
+ /**
91
+ * Counter bumped on every rebuild. A host that has uploaded version `v` can skip
92
+ * the upload for as long as this still reads `v`.
93
+ */
94
+ frame_version(): number;
95
+ /**
96
+ * Geometry-only page bounds of a shape → `f32_ptr()` holds `minx miny maxx maxy`.
97
+ * Same box as `bounds` without the half-stroke pad. Returns false if missing.
98
+ */
99
+ geometry_bounds(handle: number): boolean;
100
+ /**
101
+ * Pointer to the handle result buffer.
102
+ */
103
+ handles_ptr(): number;
104
+ /**
105
+ * Topmost shape at a page point, or 0. `filter` bits: 1 include locked, 2 include hidden, 4 hollow only.
106
+ */
107
+ hit_test(x: number, y: number, tolerance: number, filter: number): number;
108
+ /**
109
+ * Number of indices.
110
+ */
111
+ indices_len(): number;
112
+ /**
113
+ * Pointer to u32 indices.
114
+ */
115
+ indices_ptr(): number;
116
+ /**
117
+ * Create an empty engine.
118
+ */
119
+ constructor();
120
+ /**
121
+ * Number of u32 in the overlay buffer (10 per entry).
122
+ */
123
+ overlay_len(): number;
124
+ /**
125
+ * Pointer to overlay entries (`handle x y w h rot clip_minx clip_miny clip_maxx
126
+ * clip_maxy`, floats as bits; clip all zero = unclipped).
127
+ */
128
+ overlay_ptr(): number;
129
+ /**
130
+ * Page transform of a shape → `f32_ptr()` holds `a b c d e f`. Returns false if missing.
131
+ */
132
+ page_transform(handle: number): boolean;
133
+ /**
134
+ * Shapes in a page box. `mode` 0 = intersects, 1 = contains. Returns count; read via `handles_ptr`.
135
+ */
136
+ query_box(minx: number, miny: number, maxx: number, maxy: number, mode: number, filter: number): number;
137
+ /**
138
+ * Grow the box each frame is built for by `pad` (a fraction of the viewport size)
139
+ * on every side, so a camera panning inside that margin reuses the build instead
140
+ * of re-tessellating and re-uploading. Defaults to
141
+ * `mocanvas_render::DEFAULT_VIEWPORT_PAD` — see `Renderer::set_viewport_pad` for
142
+ * the trade-off, which depends on how expensive the host's rasteriser makes
143
+ * geometry relative to uploads.
144
+ */
145
+ set_viewport_pad(pad: number): void;
146
+ /**
147
+ * Number of shapes in the scene.
148
+ */
149
+ shape_count(): number;
150
+ /**
151
+ * Take the last error message, if any.
152
+ */
153
+ take_error(): string | undefined;
154
+ /**
155
+ * Union of page bounds for `len` handles read from the command buffer → `f32_ptr()`.
156
+ * Returns false if the union is empty.
157
+ */
158
+ union_bounds(len: number): boolean;
159
+ /**
160
+ * Number of f32 in the vertex buffer.
161
+ */
162
+ vertices_len(): number;
163
+ /**
164
+ * Pointer to interleaved `x y u v r g b a` f32 vertices (8 per vertex).
165
+ */
166
+ vertices_ptr(): number;
167
+ /**
168
+ * The current viewport pad.
169
+ */
170
+ viewport_pad(): number;
171
+ }
172
+
173
+ /**
174
+ * Library version.
175
+ */
176
+ export function version(): string;
177
+
178
+ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
179
+
180
+ export interface InitOutput {
181
+ readonly memory: WebAssembly.Memory;
182
+ readonly __wbg_engine_free: (a: number, b: number) => void;
183
+ readonly engine_all_bounds: (a: number) => number;
184
+ readonly engine_all_geometry_bounds: (a: number) => number;
185
+ readonly engine_apply: (a: number, b: number) => number;
186
+ readonly engine_batches_len: (a: number) => number;
187
+ readonly engine_batches_ptr: (a: number) => number;
188
+ readonly engine_bounds: (a: number, b: number) => number;
189
+ readonly engine_cmd_capacity: (a: number) => number;
190
+ readonly engine_cmd_ptr: (a: number, b: number) => number;
191
+ readonly engine_culled_count: (a: number) => number;
192
+ readonly engine_default_tess_budget: () => number;
193
+ readonly engine_drawn_count: (a: number) => number;
194
+ readonly engine_epoch: (a: number) => number;
195
+ readonly engine_f32_ptr: (a: number) => number;
196
+ readonly engine_frame: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
197
+ readonly engine_frame_dirty: (a: number) => number;
198
+ readonly engine_frame_pending: (a: number) => number;
199
+ readonly engine_frame_version: (a: number) => number;
200
+ readonly engine_geometry_bounds: (a: number, b: number) => number;
201
+ readonly engine_handles_ptr: (a: number) => number;
202
+ readonly engine_hit_test: (a: number, b: number, c: number, d: number, e: number) => number;
203
+ readonly engine_indices_len: (a: number) => number;
204
+ readonly engine_indices_ptr: (a: number) => number;
205
+ readonly engine_new: () => number;
206
+ readonly engine_overlay_len: (a: number) => number;
207
+ readonly engine_overlay_ptr: (a: number) => number;
208
+ readonly engine_page_transform: (a: number, b: number) => number;
209
+ readonly engine_query_box: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => number;
210
+ readonly engine_set_viewport_pad: (a: number, b: number) => void;
211
+ readonly engine_shape_count: (a: number) => number;
212
+ readonly engine_take_error: (a: number) => [number, number];
213
+ readonly engine_union_bounds: (a: number, b: number) => number;
214
+ readonly engine_vertices_len: (a: number) => number;
215
+ readonly engine_vertices_ptr: (a: number) => number;
216
+ readonly engine_viewport_pad: (a: number) => number;
217
+ readonly version: () => [number, number];
218
+ readonly __wbindgen_externrefs: WebAssembly.Table;
219
+ readonly __wbindgen_free: (a: number, b: number, c: number) => void;
220
+ readonly __wbindgen_start: () => void;
221
+ }
222
+
223
+ export type SyncInitInput = BufferSource | WebAssembly.Module;
224
+
225
+ /**
226
+ * Instantiates the given `module`, which can either be bytes or
227
+ * a precompiled `WebAssembly.Module`.
228
+ *
229
+ * @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated.
230
+ *
231
+ * @returns {InitOutput}
232
+ */
233
+ export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput;
234
+
235
+ /**
236
+ * If `module_or_path` is {RequestInfo} or {URL}, makes a request and
237
+ * for everything else, calls `WebAssembly.instantiate` directly.
238
+ *
239
+ * @param {{ module_or_path: InitInput | Promise<InitInput> }} module_or_path - Passing `InitInput` directly is deprecated.
240
+ *
241
+ * @returns {Promise<InitOutput>}
242
+ */
243
+ export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise<InitInput> } | InitInput | Promise<InitInput>): Promise<InitOutput>;