@reearth/ezu 0.2.0 → 0.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.
package/web/ezu.js CHANGED
@@ -111,18 +111,50 @@ export class Renderer {
111
111
  wasm.__wbg_renderer_free(ptr, 0);
112
112
  }
113
113
  /**
114
- * Number of brushes currently registered.
115
- * @returns {number}
114
+ * Bind raw tile bytes under a `sources.<name>` entry from the style.
115
+ * The renderer dispatches on the source's declared `type`:
116
+ *
117
+ * - `mvt` / `pmtiles` → decode MVT layers eagerly; layers are bound
118
+ * as `tile.<layer>` when [`render_tile`] runs.
119
+ * - `dem` → store the raw raster-DEM bytes per `(dx, dy)` neighbour
120
+ * offset. The centre tile is `coord: [0, 0]` (default). Decoding
121
+ * and 3×3 stitching happen at render time once the tile id is known.
122
+ *
123
+ * `opts` is a JS object: `{ coord?: [dx, dy] }`. Throws
124
+ * `UnknownSource` if `name` doesn't match any entry in the style's
125
+ * `sources` block, `MvtDecode` if MVT bytes don't parse, and
126
+ * `DemDecode` for non-image DEM bytes (the decode itself runs at
127
+ * render time, but obvious cases are caught here).
128
+ * @param {string} name
129
+ * @param {Uint8Array} bytes
130
+ * @param {object | null} [opts]
116
131
  */
117
- brushCount() {
118
- const ret = wasm.renderer_brushCount(this.__wbg_ptr);
119
- return ret >>> 0;
132
+ bindSource(name, bytes, opts) {
133
+ const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);
134
+ const len0 = WASM_VECTOR_LEN;
135
+ const ptr1 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc_command_export);
136
+ const len1 = WASM_VECTOR_LEN;
137
+ const ret = wasm.renderer_bindSource(this.__wbg_ptr, ptr0, len0, ptr1, len1, isLikeNone(opts) ? 0 : addToExternrefTable0(opts));
138
+ if (ret[1]) {
139
+ throw takeFromExternrefTable0(ret[0]);
140
+ }
141
+ }
142
+ /**
143
+ * Names of every source with at least one pending binding.
144
+ * Order matches the style's `sources` declaration order.
145
+ * @returns {string[]}
146
+ */
147
+ boundSources() {
148
+ const ret = wasm.renderer_boundSources(this.__wbg_ptr);
149
+ var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
150
+ wasm.__wbindgen_free_command_export(ret[0], ret[1] * 4, 4);
151
+ return v1;
120
152
  }
121
153
  /**
122
- * Drop every registered brush.
154
+ * Drop every pending source binding. Call between tile renders.
123
155
  */
124
- clearBrushes() {
125
- wasm.renderer_clearBrushes(this.__wbg_ptr);
156
+ clearSources() {
157
+ wasm.renderer_clearSources(this.__wbg_ptr);
126
158
  }
127
159
  /**
128
160
  * Build a renderer from a style JSON document.
@@ -140,157 +172,31 @@ export class Renderer {
140
172
  return this;
141
173
  }
142
174
  /**
143
- * Register a `.myb` brush under `name` so a `brush-file` node with
144
- * `src: "@name"` (via the style's `assets` map) resolves to it.
145
- * Re-registering the same name replaces the previous entry.
146
- * @param {string} name
147
- * @param {string} myb_json
148
- */
149
- registerBrush(name, myb_json) {
150
- const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);
151
- const len0 = WASM_VECTOR_LEN;
152
- const ptr1 = passStringToWasm0(myb_json, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);
153
- const len1 = WASM_VECTOR_LEN;
154
- const ret = wasm.renderer_registerBrush(this.__wbg_ptr, ptr0, len0, ptr1, len1);
155
- if (ret[1]) {
156
- throw takeFromExternrefTable0(ret[0]);
157
- }
158
- }
159
- /**
160
- * Render a single tile to PNG bytes using the style's `tile-size` / `pad`.
161
- * Pass `null` for `mvtBytes` to get a paper-only tile.
175
+ * Render a single tile using whatever sources are currently bound.
162
176
  *
163
- * Optional `options`: `{ png: { compression: 'fast' | 'default' | 'best' } }`.
164
- * @param {Uint8Array | null | undefined} mvt_bytes
165
- * @param {number} z
166
- * @param {number} x
167
- * @param {number} y
168
- * @param {object | null} [options]
169
- * @returns {Uint8Array}
170
- */
171
- render(mvt_bytes, z, x, y, options) {
172
- var ptr0 = isLikeNone(mvt_bytes) ? 0 : passArray8ToWasm0(mvt_bytes, wasm.__wbindgen_malloc_command_export);
173
- var len0 = WASM_VECTOR_LEN;
174
- const ret = wasm.renderer_render(this.__wbg_ptr, ptr0, len0, z, x, y, isLikeNone(options) ? 0 : addToExternrefTable0(options));
175
- if (ret[3]) {
176
- throw takeFromExternrefTable0(ret[2]);
177
- }
178
- var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
179
- wasm.__wbindgen_free_command_export(ret[0], ret[1] * 1, 1);
180
- return v2;
181
- }
182
- /**
183
- * Like `render` but with `tile_size` / `pad` overridden — useful for
184
- * hi-DPI / preview rendering without mutating the style.
185
- * @param {Uint8Array | null | undefined} mvt_bytes
186
- * @param {number} z
187
- * @param {number} x
188
- * @param {number} y
189
- * @param {number} tile_size
190
- * @param {number} pad
191
- * @param {object | null} [options]
192
- * @returns {Uint8Array}
193
- */
194
- renderAt(mvt_bytes, z, x, y, tile_size, pad, options) {
195
- var ptr0 = isLikeNone(mvt_bytes) ? 0 : passArray8ToWasm0(mvt_bytes, wasm.__wbindgen_malloc_command_export);
196
- var len0 = WASM_VECTOR_LEN;
197
- const ret = wasm.renderer_renderAt(this.__wbg_ptr, ptr0, len0, z, x, y, tile_size, pad, isLikeNone(options) ? 0 : addToExternrefTable0(options));
198
- if (ret[3]) {
199
- throw takeFromExternrefTable0(ret[2]);
200
- }
201
- var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
202
- wasm.__wbindgen_free_command_export(ret[0], ret[1] * 1, 1);
203
- return v2;
204
- }
205
- /**
206
- * Render a single tile to straight RGBA8 bytes (`tile_w * tile_h * 4`).
207
- * @param {Uint8Array | null | undefined} mvt_bytes
208
- * @param {number} z
209
- * @param {number} x
210
- * @param {number} y
211
- * @returns {Uint8Array}
212
- */
213
- renderRgba(mvt_bytes, z, x, y) {
214
- var ptr0 = isLikeNone(mvt_bytes) ? 0 : passArray8ToWasm0(mvt_bytes, wasm.__wbindgen_malloc_command_export);
215
- var len0 = WASM_VECTOR_LEN;
216
- const ret = wasm.renderer_renderRgba(this.__wbg_ptr, ptr0, len0, z, x, y);
217
- if (ret[3]) {
218
- throw takeFromExternrefTable0(ret[2]);
219
- }
220
- var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
221
- wasm.__wbindgen_free_command_export(ret[0], ret[1] * 1, 1);
222
- return v2;
223
- }
224
- /**
225
- * Like `renderRgba` but with `tile_size` / `pad` overridden.
226
- * @param {Uint8Array | null | undefined} mvt_bytes
227
- * @param {number} z
228
- * @param {number} x
229
- * @param {number} y
230
- * @param {number} tile_size
231
- * @param {number} pad
232
- * @returns {Uint8Array}
233
- */
234
- renderRgbaAt(mvt_bytes, z, x, y, tile_size, pad) {
235
- var ptr0 = isLikeNone(mvt_bytes) ? 0 : passArray8ToWasm0(mvt_bytes, wasm.__wbindgen_malloc_command_export);
236
- var len0 = WASM_VECTOR_LEN;
237
- const ret = wasm.renderer_renderRgbaAt(this.__wbg_ptr, ptr0, len0, z, x, y, tile_size, pad);
238
- if (ret[3]) {
239
- throw takeFromExternrefTable0(ret[2]);
240
- }
241
- var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
242
- wasm.__wbindgen_free_command_export(ret[0], ret[1] * 1, 1);
243
- return v2;
244
- }
245
- /**
246
- * Render a single tile to lossless WebP bytes. Smaller than PNG
247
- * for the same painterly content and decoded natively by every
248
- * modern browser. WebP is lossless-only via the pure-Rust
249
- * `image-webp` codec; for lossy WebP, see the
250
- * `OffscreenCanvas.convertToBlob` recipe in the crate README.
251
- * @param {Uint8Array | null | undefined} mvt_bytes
252
- * @param {number} z
253
- * @param {number} x
254
- * @param {number} y
255
- * @param {object | null} [options]
256
- * @returns {Uint8Array}
257
- */
258
- renderWebp(mvt_bytes, z, x, y, options) {
259
- var ptr0 = isLikeNone(mvt_bytes) ? 0 : passArray8ToWasm0(mvt_bytes, wasm.__wbindgen_malloc_command_export);
260
- var len0 = WASM_VECTOR_LEN;
261
- const ret = wasm.renderer_renderWebp(this.__wbg_ptr, ptr0, len0, z, x, y, isLikeNone(options) ? 0 : addToExternrefTable0(options));
262
- if (ret[3]) {
263
- throw takeFromExternrefTable0(ret[2]);
264
- }
265
- var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
266
- wasm.__wbindgen_free_command_export(ret[0], ret[1] * 1, 1);
267
- return v2;
268
- }
269
- /**
270
- * Like `renderWebp` but with `tile_size` / `pad` overridden.
271
- * @param {Uint8Array | null | undefined} mvt_bytes
177
+ * `opts` (JS object, all fields optional):
178
+ * - `format`: `"png"` (default) / `"webp"` / `"rgba"`
179
+ * - `tileSize`, `pad`: override the style's canvas size for this
180
+ * call (hi-DPI / preview)
181
+ * - `png`: `{ compression?: "fast" | "default" | "best" }`
272
182
  * @param {number} z
273
183
  * @param {number} x
274
184
  * @param {number} y
275
- * @param {number} tile_size
276
- * @param {number} pad
277
- * @param {object | null} [options]
185
+ * @param {object | null} [opts]
278
186
  * @returns {Uint8Array}
279
187
  */
280
- renderWebpAt(mvt_bytes, z, x, y, tile_size, pad, options) {
281
- var ptr0 = isLikeNone(mvt_bytes) ? 0 : passArray8ToWasm0(mvt_bytes, wasm.__wbindgen_malloc_command_export);
282
- var len0 = WASM_VECTOR_LEN;
283
- const ret = wasm.renderer_renderWebpAt(this.__wbg_ptr, ptr0, len0, z, x, y, tile_size, pad, isLikeNone(options) ? 0 : addToExternrefTable0(options));
188
+ renderTile(z, x, y, opts) {
189
+ const ret = wasm.renderer_renderTile(this.__wbg_ptr, z, x, y, isLikeNone(opts) ? 0 : addToExternrefTable0(opts));
284
190
  if (ret[3]) {
285
191
  throw takeFromExternrefTable0(ret[2]);
286
192
  }
287
- var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
193
+ var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
288
194
  wasm.__wbindgen_free_command_export(ret[0], ret[1] * 1, 1);
289
- return v2;
195
+ return v1;
290
196
  }
291
197
  /**
292
198
  * Replace the active style. Returns the new node count. Invalidates
293
- * the intermediate cache.
199
+ * the intermediate cache and drops any pending source bindings.
294
200
  * @param {string} style_json
295
201
  * @returns {number}
296
202
  */
@@ -311,17 +217,6 @@ export class Renderer {
311
217
  const ret = wasm.renderer_tileSize(this.__wbg_ptr);
312
218
  return ret >>> 0;
313
219
  }
314
- /**
315
- * Remove a brush by name. Returns `true` if the brush existed.
316
- * @param {string} name
317
- * @returns {boolean}
318
- */
319
- unregisterBrush(name) {
320
- const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);
321
- const len0 = WASM_VECTOR_LEN;
322
- const ret = wasm.renderer_unregisterBrush(this.__wbg_ptr, ptr0, len0);
323
- return ret !== 0;
324
- }
325
220
  }
326
221
  if (Symbol.dispose) Renderer.prototype[Symbol.dispose] = Renderer.prototype.free;
327
222
 
@@ -337,6 +232,20 @@ export function simdEnabled() {
337
232
  function __wbg_get_imports() {
338
233
  const import0 = {
339
234
  __proto__: null,
235
+ __wbg___wbindgen_is_null_2042690d351e14f0: function(arg0) {
236
+ const ret = arg0 === null;
237
+ return ret;
238
+ },
239
+ __wbg___wbindgen_is_undefined_35bb9f4c7fd651d5: function(arg0) {
240
+ const ret = arg0 === undefined;
241
+ return ret;
242
+ },
243
+ __wbg___wbindgen_number_get_f73a1244370fcc2c: function(arg0, arg1) {
244
+ const obj = arg1;
245
+ const ret = typeof(obj) === 'number' ? obj : undefined;
246
+ getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);
247
+ getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);
248
+ },
340
249
  __wbg___wbindgen_string_get_d109740c0d18f4d7: function(arg0, arg1) {
341
250
  const obj = arg1;
342
251
  const ret = typeof(obj) === 'string' ? obj : undefined;
@@ -363,6 +272,10 @@ function __wbg_get_imports() {
363
272
  wasm.__wbindgen_free_command_export(deferred0_0, deferred0_1, 1);
364
273
  }
365
274
  },
275
+ __wbg_get_98fdf51d029a75eb: function(arg0, arg1) {
276
+ const ret = arg0[arg1 >>> 0];
277
+ return ret;
278
+ },
366
279
  __wbg_get_dcf82ab8aad1a593: function() { return handleError(function (arg0, arg1) {
367
280
  const ret = Reflect.get(arg0, arg1);
368
281
  return ret;
@@ -377,6 +290,14 @@ function __wbg_get_imports() {
377
290
  const ret = result;
378
291
  return ret;
379
292
  },
293
+ __wbg_isArray_94898ed3aad6947b: function(arg0) {
294
+ const ret = Array.isArray(arg0);
295
+ return ret;
296
+ },
297
+ __wbg_length_2591a0f4f659a55c: function(arg0) {
298
+ const ret = arg0.length;
299
+ return ret;
300
+ },
380
301
  __wbg_new_02d162bc6cf02f60: function() {
381
302
  const ret = new Object();
382
303
  return ret;
package/web/ezu_bg.wasm CHANGED
Binary file
@@ -11,19 +11,13 @@ export const logsink_len: (a: number) => number;
11
11
  export const logsink_new: (a: number, b: number) => [number, number, number];
12
12
  export const logsink_onEvent: (a: number, b: number) => void;
13
13
  export const logsink_setCapacity: (a: number, b: number) => void;
14
- export const renderer_brushCount: (a: number) => number;
15
- export const renderer_clearBrushes: (a: number) => void;
14
+ export const renderer_bindSource: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
15
+ export const renderer_boundSources: (a: number) => [number, number];
16
+ export const renderer_clearSources: (a: number) => void;
16
17
  export const renderer_new: (a: number, b: number) => [number, number, number];
17
- export const renderer_registerBrush: (a: number, b: number, c: number, d: number, e: number) => [number, number];
18
- export const renderer_render: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number, number];
19
- export const renderer_renderAt: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number, number, number];
20
- export const renderer_renderRgba: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
21
- export const renderer_renderRgbaAt: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number, number, number];
22
- export const renderer_renderWebp: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number, number];
23
- export const renderer_renderWebpAt: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number, number, number];
18
+ export const renderer_renderTile: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
24
19
  export const renderer_setStyle: (a: number, b: number, c: number) => [number, number, number];
25
20
  export const renderer_tileSize: (a: number) => number;
26
- export const renderer_unregisterBrush: (a: number, b: number, c: number) => number;
27
21
  export const simdEnabled: () => number;
28
22
  export const __wbindgen_malloc_command_export: (a: number, b: number) => number;
29
23
  export const __wbindgen_realloc_command_export: (a: number, b: number, c: number, d: number) => number;