UNPKG

@allmaps/render

Version:

Render functions for WebGL and image buffers

53 lines (52 loc) 1.54 kB
import { proxy } from "comlink"; import { CacheableTile } from "./CacheableTile.js"; import { WarpedMapEvent, WarpedMapEventType } from "../shared/events.js"; class CacheableWorkerImageDataTile extends CacheableTile { #worker; constructor(fetchableTile, worker, fetchFn) { super(fetchableTile, fetchFn); this.#worker = worker; } /** * Fetch the tile and create its ImageData using a WebWorker. * * @returns */ async fetch() { try { this.#worker.getImageData( this.tileUrl, proxy(() => this.abortController.abort()), this.fetchFn, this.tile.tileZoomLevel.width, this.tile.tileZoomLevel.height ).then((response) => { this.data = response; this.dispatchEvent( new WarpedMapEvent(WarpedMapEventType.TILEFETCHED, this.tileUrl) ); }).catch((err) => { if (err instanceof Error && err.name === "AbortError") { console.log("Fetch aborted"); } else { console.error(err); } }); } catch (err) { if (err instanceof Error && err.name === "AbortError") ; else { this.dispatchEvent( new WarpedMapEvent(WarpedMapEventType.TILEFETCHERROR, this.tileUrl) ); } } return this.data; } static createFactory(worker) { return (fetchableTile, fetchFn) => new CacheableWorkerImageDataTile(fetchableTile, worker, fetchFn); } } export { CacheableWorkerImageDataTile }; //# sourceMappingURL=CacheableWorkerImageDataTile.js.map