isard 1.12.0 → 1.12.1
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/CHANGELOG.md +10 -0
- package/dist/basemap/vectortiles.js +10 -1
- package/dist/basemap/vectortiles.js.map +1 -1
- package/dist/basemap/workerpool.d.ts +2 -2
- package/dist/basemap/workerpool.js +3 -3
- package/dist/basemap/workerpool.js.map +1 -1
- package/dist/basemap.worker.js +2 -2
- package/dist/basemap.worker.js.map +4 -4
- package/dist/engine-loader.d.ts +2 -2
- package/dist/engine-loader.js +3 -2
- package/dist/engine-loader.js.map +1 -1
- package/dist/isard_bg.wasm +0 -0
- package/dist/isard_core_bg.wasm +0 -0
- package/dist/map/engines.d.ts +1 -1
- package/dist/map/engines.js.map +1 -1
- package/dist/map/quality.d.ts +7 -0
- package/dist/map/quality.js +12 -3
- package/dist/map/quality.js.map +1 -1
- package/dist/map/workers.d.ts +4 -2
- package/dist/map/workers.js +6 -3
- package/dist/map/workers.js.map +1 -1
- package/dist/map.js +3 -3
- package/dist/map.js.map +1 -1
- package/dist/workers/basemap/protocol.d.ts +2 -0
- package/dist/workers/basemap/tiles.d.ts +2 -2
- package/package.json +1 -1
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"/**\n * Things placed by a vector basemap's workers in its tiles (trees, street lamps, street furniture), as they send them\n * to the page: so many numbers each.\n */\n\n/** Numbers of a thing placed: longitude, latitude, scale, heading (degrees), rank (in [0, 1): far from the view, the\n * page keeps the lowest) and kind (its model among those of its kinds) */\nexport const PLACED_NUMBERS = 6;\n\n/** Where its rank is among its numbers */\nexport const PLACED_RANK = 4;\n\n/** Where its kind is among its numbers */\nexport const PLACED_KIND = 5;\n\n/** A heading for a number, the same each time, near numbers turned far apart (7919, a prime) */\nexport const turned = (n: number): number => (n * 7919) % 360;\n\n/** The kinds of furniture placed by the workers, in the order of their numbers (`PLACED_KIND`) */\nexport const FURNITURE = ['shelter', 'bin', 'postbox', 'fountain', 'rack', 'bench'] as const;\n",
|
|
18
18
|
"/**\n * Mapbox Vector Tiles (MVT 2.1) decoding: layers of features with their properties and geometry, in tile units\n * (`extent`, usually 4096 across). Points are lists of points, lines lists of lines, polygons lists of rings (the\n * outer ones clockwise in tile coordinates, y down, holes the other way round, as the specification says).\n */\n\nexport type Value = string | number | boolean;\n\nexport interface TileFeature {\n /** 1 point, 2 line, 3 polygon */\n type: 1 | 2 | 3;\n properties: Record<string, Value>;\n /** Point lists: x0, y0, x1, y1… in tile units */\n geometry: number[][];\n}\n\nexport interface TileLayer {\n extent: number;\n features: TileFeature[];\n}\n\n/** Protobuf reader of a buffer range */\nclass Pbf {\n pos: number;\n constructor(\n private readonly buf: Uint8Array,\n start = 0,\n readonly end = buf.length,\n ) {\n this.pos = start;\n }\n /** An unsigned varint, approximated beyond 2^53; all its bytes are read (up to 10), so the next field is right */\n varint(): number {\n let value = 0;\n\n for (let shift = 0; shift < 70; shift += 7) {\n const b = this.buf[this.pos++] ?? 0;\n\n value += (b & 0x7f) * 2 ** shift;\n if (b < 0x80) break;\n }\n\n return value;\n }\n /** A signed 64-bit varint (two's complement: a negative value takes 10 bytes) */\n int64(): number {\n let lo = 0;\n let hi = 0;\n\n for (let i = 0; i < 10; i += 1) {\n const b = this.buf[this.pos++] ?? 0;\n const bits = b & 0x7f;\n\n // Bits 0-27 in the low word, bits 28-31 split, the rest in the high word\n if (i < 4) lo |= bits << (7 * i);\n else if (i === 4) {\n lo |= (bits & 0x0f) << 28;\n hi |= bits >> 4;\n } else hi |= bits << (7 * i - 32);\n if (b < 0x80) break;\n }\n\n // The high word signed: values from 2^63 up are negative\n return (hi | 0) * 2 ** 32 + (lo >>> 0);\n }\n sint(): number {\n const v = this.varint();\n\n return v % 2 === 1 ? -(v + 1) / 2 : v / 2;\n }\n /** A length-delimited field as a sub-reader */\n sub(): Pbf {\n const n = this.varint();\n // A length past the end (a truncated tile) stops at the end\n const end = Math.min(this.pos + n, this.end);\n const r = new Pbf(this.buf, this.pos, end);\n\n this.pos = end;\n\n return r;\n }\n string(): string {\n const n = this.varint();\n const end = Math.min(this.pos + n, this.end);\n const s = decoder.decode(this.buf.subarray(this.pos, end));\n\n this.pos = end;\n\n return s;\n }\n float(): number {\n const v = this.pos + 4 <= this.end ? this.view().getFloat32(this.pos, true) : 0;\n\n this.pos += 4;\n\n return v;\n }\n double(): number {\n const v = this.pos + 8 <= this.end ? this.view().getFloat64(this.pos, true) : 0;\n\n this.pos += 8;\n\n return v;\n }\n private view(): DataView {\n return new DataView(this.buf.buffer, this.buf.byteOffset, this.buf.byteLength);\n }\n skip(wire: number): void {\n if (wire === 0) this.varint();\n else if (wire === 1) this.pos += 8;\n else if (wire === 2) this.pos += this.varint();\n else if (wire === 5) this.pos += 4;\n }\n get more(): boolean {\n return this.pos < this.end;\n }\n}\n\nconst decoder = new TextDecoder();\n\nconst value = (p: Pbf): Value => {\n let v: Value = '';\n\n while (p.more) {\n const tag = p.varint();\n\n switch (tag >> 3) {\n case 1:\n v = p.string();\n break;\n case 2:\n v = p.float();\n break;\n case 3:\n v = p.double();\n break;\n case 4:\n v = p.int64();\n break;\n case 5:\n v = p.varint();\n break;\n case 6:\n v = p.sint();\n break;\n case 7:\n v = p.varint() !== 0;\n break;\n default:\n p.skip(tag & 7);\n }\n }\n\n return v;\n};\n\n/** Point lists of a geometry's commands (MoveTo, LineTo, ClosePath) */\nconst geometry = (p: Pbf): number[][] => {\n const out: number[][] = [];\n let current: number[] | undefined;\n let [x, y] = [0, 0];\n\n while (p.more) {\n const command = p.varint();\n const id = command & 7;\n const count = command >> 3;\n\n if (id === 7) {\n // ClosePath: back to the first point\n if (current && current.length >= 2) current.push(current[0] ?? 0, current[1] ?? 0);\n continue;\n }\n // A count past the end (a truncated geometry) stops there\n for (let i = 0; i < count && p.more; i += 1) {\n x += p.sint();\n y += p.sint();\n if (id === 1) {\n current = [];\n out.push(current);\n }\n current?.push(x, y);\n }\n }\n\n return out;\n};\n\n/** Decodes a tile; only the layers in `wanted` (all if undefined) */\nexport const decode = (bytes: Uint8Array, wanted?: Set<string>): Map<string, TileLayer> => {\n const layers = new Map<string, TileLayer>();\n const tile = new Pbf(bytes);\n\n while (tile.more) {\n const tag = tile.varint();\n\n if (tag >> 3 !== 3) {\n tile.skip(tag & 7);\n continue;\n }\n\n const l = tile.sub();\n let name = '';\n let extent = 4096;\n const keys: string[] = [];\n const values: Value[] = [];\n const raw: Pbf[] = [];\n\n while (l.more) {\n const t = l.varint();\n\n switch (t >> 3) {\n case 1:\n name = l.string();\n break;\n case 2:\n raw.push(l.sub());\n break;\n case 3:\n keys.push(l.string());\n break;\n case 4:\n values.push(value(l.sub()));\n break;\n case 5:\n extent = l.varint();\n break;\n default:\n l.skip(t & 7);\n }\n }\n if (wanted && !wanted.has(name)) continue;\n\n const features: TileFeature[] = [];\n\n for (const f of raw) {\n let type: 1 | 2 | 3 = 1;\n const properties: Record<string, Value> = {};\n let geom: number[][] = [];\n\n while (f.more) {\n const t = f.varint();\n\n switch (t >> 3) {\n case 2: {\n const tags = f.sub();\n\n while (tags.more) {\n const k = keys[tags.varint()];\n const v = values[tags.varint()];\n\n if (k !== undefined && v !== undefined) properties[k] = v;\n }\n break;\n }\n case 3:\n type = Math.min(3, Math.max(1, f.varint())) as 1 | 2 | 3;\n break;\n case 4:\n geom = geometry(f.sub());\n break;\n default:\n f.skip(t & 7);\n }\n }\n features.push({ type, properties, geometry: geom });\n }\n layers.set(name, { extent, features });\n }\n\n return layers;\n};\n",
|
|
19
19
|
"/**\n * PMTiles v3 archives: one file of tiles read by HTTP range requests (or from a `Blob`), as Protomaps publishes them.\n * The header and root directory in one request, the leaf directories as needed (kept in a small cache), each tile in\n * its own range; gzip through `DecompressionStream`. The same reader in the page (raster tiles) and in the basemap\n * workers (vector tiles of a style source `pmtiles://…`, as MapLibre's protocol names them).\n */\n\nimport { httpError } from '../util/fetch.ts';\nimport { isRecord } from '../util/guards.ts';\nimport { Lru } from '../util/lru.ts';\nimport { withHeaders } from '../util/requests.ts';\n\n/** What a PMTiles archive's tiles are */\nexport type PmtilesTileType = 'unknown' | 'mvt' | 'png' | 'jpeg' | 'webp' | 'avif';\n\n/** The header of a PMTiles archive (v3) */\nexport interface PmtilesHeader {\n rootDirectoryOffset: number;\n rootDirectoryLength: number;\n metadataOffset: number;\n metadataLength: number;\n leafDirectoryOffset: number;\n leafDirectoryLength: number;\n tileDataOffset: number;\n tileDataLength: number;\n /** 1 none, 2 gzip, 3 brotli, 4 zstd (only none and gzip are read) */\n internalCompression: number;\n tileCompression: number;\n tileType: PmtilesTileType;\n minZoom: number;\n maxZoom: number;\n /** `[west, south, east, north]`, degrees */\n bounds: [number, number, number, number];\n center: [lon: number, lat: number, zoom: number];\n}\n\n/** An entry of a directory: a run of tiles (`runLength` > 0) or a leaf directory (0) */\nexport interface PmtilesEntry {\n tileId: number;\n offset: number;\n length: number;\n runLength: number;\n}\n\nconst HEADER = 127;\n/** The header and the root directory lie within the first 16 KB of the file */\nconst FIRST = 16384;\nconst TYPES: PmtilesTileType[] = ['unknown', 'mvt', 'png', 'jpeg', 'webp', 'avif'];\n\n/** Tiles before level z: (4^z - 1) / 3 */\nconst levelStart = (z: number) => (4 ** z - 1) / 3;\n\n/** The tile id of z/x/y: the tiles of the lower levels, then the position along the level's Hilbert curve */\nexport const zxyToTileId = (z: number, x: number, y: number): number => {\n if (z > 26) throw new Error(`isard: PMTiles level ${z} past 26`);\n\n const n = 2 ** z;\n\n if (x < 0 || y < 0 || x >= n || y >= n) throw new Error(`isard: PMTiles tile ${z}/${x}/${y} out of its level`);\n\n let [px, py] = [x, y];\n let d = 0;\n\n for (let s = n / 2; s >= 1; s /= 2) {\n const rx = (px & s) > 0 ? 1 : 0;\n const ry = (py & s) > 0 ? 1 : 0;\n\n d += s * s * ((3 * rx) ^ ry);\n if (ry === 0) {\n if (rx === 1) [px, py] = [s - 1 - px, s - 1 - py];\n [px, py] = [py, px];\n }\n }\n\n return levelStart(z) + d;\n};\n\n/** The z/x/y of a tile id (the inverse of `zxyToTileId`) */\nexport const tileIdToZxy = (id: number): [z: number, x: number, y: number] => {\n let z = 0;\n\n while (levelStart(z + 1) <= id) z += 1;\n\n const n = 2 ** z;\n let t = id - levelStart(z);\n let [x, y] = [0, 0];\n\n for (let s = 1; s < n; s *= 2) {\n // Arithmetic, not bitwise: positions pass 32 bits past level 16\n const rx = Math.floor(t / 2) % 2;\n const ry = (t % 2) ^ rx;\n\n if (ry === 0) {\n if (rx === 1) [x, y] = [s - 1 - x, s - 1 - y];\n [x, y] = [y, x];\n }\n x += s * rx;\n y += s * ry;\n t = Math.floor(t / 4);\n }\n\n return [z, x, y];\n};\n\n/** A reader of unsigned varints past 32 bits (tile ids reach 2^52) */\nclass Varints {\n pos = 0;\n constructor(private readonly bytes: Uint8Array) {}\n next(): number {\n let value = 0;\n let scale = 1;\n\n for (;;) {\n const b = this.bytes[this.pos++];\n\n if (b === undefined) throw new Error('isard: PMTiles directory truncated');\n value += (b & 0x7f) * scale;\n if (b < 0x80) return value;\n scale *= 128;\n if (scale > 2 ** 63) throw new Error('isard: PMTiles varint too long');\n }\n }\n}\n\n/** The entries of a directory (decompressed) */\nexport const parseDirectory = (bytes: Uint8Array): PmtilesEntry[] => {\n const v = new Varints(bytes);\n const count = v.next();\n\n if (count > bytes.length) throw new Error('isard: PMTiles directory larger than its bytes');\n\n const entries: PmtilesEntry[] = [];\n let id = 0;\n\n for (let i = 0; i < count; i += 1) {\n id += v.next();\n entries.push({ tileId: id, offset: 0, length: 0, runLength: 1 });\n }\n for (const e of entries) e.runLength = v.next();\n for (const e of entries) e.length = v.next();\n entries.forEach((e, i) => {\n const value = v.next();\n const previous = entries[i - 1];\n\n // 0 after the first: right after the previous entry's bytes\n e.offset = value === 0 && previous ? previous.offset + previous.length : value - 1;\n });\n\n return entries;\n};\n\n/** The entry holding a tile id: its run of tiles, or the leaf directory it falls in; undefined if none */\nexport const findEntry = (entries: readonly PmtilesEntry[], id: number): PmtilesEntry | undefined => {\n let [lo, hi] = [0, entries.length - 1];\n\n while (lo <= hi) {\n const mid = (lo + hi) >> 1;\n const e = entries[mid];\n\n if (!e) break;\n if (e.tileId === id) return e;\n if (e.tileId < id) lo = mid + 1;\n else hi = mid - 1;\n }\n\n const e = entries[hi];\n\n if (!e) return undefined;\n if (e.runLength === 0 || id - e.tileId < e.runLength) return e;\n\n return undefined;\n};\n\n/** The header of an archive from its first bytes */\nexport const parseHeader = (bytes: Uint8Array): PmtilesHeader => {\n if (bytes.length < HEADER || String.fromCharCode(...bytes.subarray(0, 7)) !== 'PMTiles') {\n throw new Error('isard: not a PMTiles archive');\n }\n if (bytes[7] !== 3) throw new Error(`isard: PMTiles version ${bytes[7]} (only 3 is read)`);\n\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const u64 = (at: number) => Number(view.getBigUint64(at, true));\n const deg = (at: number) => view.getInt32(at, true) / 1e7;\n\n return {\n rootDirectoryOffset: u64(8),\n rootDirectoryLength: u64(16),\n metadataOffset: u64(24),\n metadataLength: u64(32),\n leafDirectoryOffset: u64(40),\n leafDirectoryLength: u64(48),\n tileDataOffset: u64(56),\n tileDataLength: u64(64),\n internalCompression: view.getUint8(97),\n tileCompression: view.getUint8(98),\n tileType: TYPES[view.getUint8(99)] ?? 'unknown',\n minZoom: view.getUint8(100),\n maxZoom: view.getUint8(101),\n bounds: [deg(102), deg(106), deg(110), deg(114)],\n center: [deg(119), deg(123), view.getUint8(118)],\n };\n};\n\n/** Bytes as they are stored, decompressed (1: none, 2: gzip; 0, unknown, is read as none) */\nexport const decompress = async (\n bytes: Uint8Array<ArrayBuffer>,\n compression: number,\n): Promise<Uint8Array<ArrayBuffer>> => {\n if (compression === 0 || compression === 1) return bytes;\n if (compression !== 2) {\n throw new Error(`isard: PMTiles compression ${compression === 3 ? 'brotli' : 'zstd'} is not read (gzip only)`);\n }\n\n const stream = new Blob([bytes]).stream().pipeThrough(new DecompressionStream('gzip'));\n\n return new Uint8Array(await new Response(stream).arrayBuffer());\n};\n\n/** Past this, a whole file sent for a range request (a server ignoring ranges) is an error rather than kept */\nconst WHOLE_FILE_MAX = 64 * 1024 * 1024;\n\n/** A PMTiles archive at a URL (range requests) or in a `Blob` (a dropped file) */\nexport class PMTiles {\n private head: Promise<{ header: PmtilesHeader; root: PmtilesEntry[] }> | undefined;\n /** The leaf directories read, by offset */\n private readonly leaves = new Lru<number, Promise<PmtilesEntry[]>>(64);\n /** The whole file, when the server answered a range request with it (small files, `blob:` URLs) */\n private whole: Promise<Uint8Array<ArrayBuffer>> | undefined;\n\n constructor(readonly source: string | Blob) {}\n\n /** `length` bytes from `offset` */\n private async range(offset: number, length: number, signal?: AbortSignal): Promise<Uint8Array<ArrayBuffer>> {\n if (typeof this.source !== 'string') {\n return new Uint8Array(await this.source.slice(offset, offset + length).arrayBuffer());\n }\n if (this.whole) return (await this.whole).subarray(offset, offset + length);\n\n const response = await fetch(\n this.source,\n withHeaders(this.source, {\n headers: { Range: `bytes=${offset}-${offset + Math.max(length, 1) - 1}` },\n ...(signal ? { signal } : {}),\n }),\n );\n\n if (!response.ok) throw httpError(this.source, response.status);\n if (response.status === 206) return new Uint8Array(await response.arrayBuffer());\n\n // The whole file: kept, when small enough, for the next ranges\n const size = Number(response.headers.get('Content-Length'));\n\n if (size > WHOLE_FILE_MAX) {\n await response.body?.cancel();\n throw new Error(`isard: ${this.source}: the server ignores range requests (HTTP 206 expected)`);\n }\n\n const whole = response.arrayBuffer().then((b) => new Uint8Array(b));\n\n this.whole = whole;\n whole.catch(() => {\n this.whole = undefined;\n });\n\n return (await whole).subarray(offset, offset + length);\n }\n\n private load() {\n this.head ??= (async () => {\n const first = await this.range(0, FIRST);\n const header = parseHeader(first);\n const { rootDirectoryOffset: o, rootDirectoryLength: n } = header;\n const raw = o + n <= first.length ? first.subarray(o, o + n) : await this.range(o, n);\n const root = parseDirectory(await decompress(raw, header.internalCompression));\n\n return { header, root };\n })();\n // A failure is not kept: asked again next time\n this.head.catch(() => {\n this.head = undefined;\n });\n\n return this.head;\n }\n\n /** The archive's header */\n async header(): Promise<PmtilesHeader> {\n return (await this.load()).header;\n }\n\n /** The archive's JSON metadata (`vector_layers`, `attribution`, `name`…); `{}` if it has none */\n async metadata(): Promise<Record<string, unknown>> {\n const { header } = await this.load();\n\n if (header.metadataLength === 0) return {};\n\n const raw = await this.range(header.metadataOffset, header.metadataLength);\n const text = new TextDecoder().decode(await decompress(raw, header.internalCompression));\n const value: unknown = JSON.parse(text);\n\n return isRecord(value) ? value : {};\n }\n\n private leaf(header: PmtilesHeader, entry: PmtilesEntry): Promise<PmtilesEntry[]> {\n const offset = header.leafDirectoryOffset + entry.offset;\n const cached = this.leaves.get(offset);\n\n if (cached) return cached;\n\n const leaf = this.range(offset, entry.length).then(async (raw) =>\n parseDirectory(await decompress(raw, header.internalCompression)),\n );\n\n leaf.catch(() => this.leaves.delete(offset));\n this.leaves.set(offset, leaf);\n\n return leaf;\n }\n\n /** The bytes of tile z/x/y, decompressed (a vector tile ungzipped); undefined where the archive has none */\n async tile(z: number, x: number, y: number, signal?: AbortSignal): Promise<Uint8Array<ArrayBuffer> | undefined> {\n const { header, root } = await this.load();\n\n if (z < header.minZoom || z > header.maxZoom) return undefined;\n\n const id = zxyToTileId(z, x, y);\n let entries = root;\n\n // The root, then at most three levels of leaves\n for (let depth = 0; depth < 4; depth += 1) {\n const entry = findEntry(entries, id);\n\n if (!entry) return undefined;\n if (entry.runLength > 0) {\n const raw = await this.range(header.tileDataOffset + entry.offset, entry.length, signal);\n\n return decompress(raw, header.tileCompression);\n }\n entries = await this.leaf(header, entry);\n }\n throw new Error('isard: PMTiles directories nested too deep');\n }\n}\n\n/** The archives opened, by URL: one reader (and its directory cache) per archive in a page or worker */\nconst archives = new Lru<string, PMTiles>(16);\n\n/** The reader of an archive URL (without `pmtiles://`), shared */\nexport const pmtiles = (url: string): PMTiles => {\n const cached = archives.get(url);\n\n if (cached) return cached;\n\n const archive = new PMTiles(url);\n\n archives.set(url, archive);\n\n return archive;\n};\n\n/** The URL of the page (or of the worker); undefined out of a browser */\nconst pageUrl = (): string | undefined => {\n const location: unknown = Reflect.get(globalThis, 'location');\n\n return isRecord(location) && typeof location.href === 'string' ? location.href : undefined;\n};\n\n/** The archive URL of a `pmtiles://` URL, absolute (relative to the page), or undefined for another URL */\nexport const pmtilesUrl = (url: string, base?: string): string | undefined => {\n if (!url.startsWith('pmtiles://')) return undefined;\n\n const inner = url.slice('pmtiles://'.length);\n const from = base ?? pageUrl();\n\n try {\n return from ? new URL(inner, from).href : inner;\n } catch {\n return inner;\n }\n};\n\n/** A tile URL `pmtiles://<archive>/{z}/{x}/{y}` (with its numbers in) read from its archive: its bytes, undefined\n * where there is none; undefined too (`false`) for a URL that is not one */\nexport const pmtilesTile = (\n url: string,\n signal?: AbortSignal,\n): Promise<Uint8Array<ArrayBuffer> | undefined> | false => {\n const match = /^pmtiles:\\/\\/(.+)\\/(\\d+)\\/(\\d+)\\/(\\d+)$/.exec(url);\n\n if (!match) return false;\n\n const [, archive = '', z, x, y] = match;\n\n return pmtiles(archive).tile(Number(z), Number(x), Number(y), signal);\n};\n",
|
|
20
|
-
"/** The state a basemap worker shares among its jobs: the renderers (a style's layers over a source), the decoded vector\n * tiles and raster images it keeps, the requests in progress, and the style's values as its jobs read them */\n\nimport { decode, type TileLayer } from '../../basemap/mvt.ts';\nimport { pmtilesTile } from '../../basemap/pmtiles.ts';\nimport {\n type Context,\n color,\n css,\n evaluate,\n isExpression,\n type RasterSource,\n type StyleLayer,\n} from '../../basemap/vectorstyle.ts';\nimport { httpError } from '../../util/fetch.ts';\nimport { latitude, longitude, tileUrl } from '../../util/geo.ts';\nimport { Lru } from '../../util/lru.ts';\nimport { clamp } from '../../util/math.ts';\nimport { withHeaders } from '../../util/requests.ts';\nimport type { Priority } from './protocol.ts';\n\nexport interface Renderer {\n tiles: string;\n maxzoom: number;\n layers: StyleLayer[];\n rasters: Record<string, RasterSource>;\n sprites: Sprite[];\n /** Fill patterns by icon name, cut from the sprites once */\n patterns: Map<string, OffscreenCanvas | undefined>;\n}\n\n/** A sprite of the style: its images by name (`id:name` but in the default sprite) and its sheet */\nexport interface Sprite {\n image: ImageBitmap;\n icons: Record<string, { x: number; y: number; width: number; height: number; pixelRatio?: number }>;\n}\n\n/** An image of the sprites and its sheet */\nexport const spriteIcon = (r: Renderer, name: string) => {\n const sprite = r.sprites.find((sp) => Boolean(sp.icons[name]));\n const icon = sprite?.icons[name];\n\n return sprite && icon ? { icon, image: sprite.image } : undefined;\n};\n\nexport const renderers = new Map<string, Renderer>();\n/** Decoded tiles kept by the pool, shared among its workers (a vector tile always goes to the same worker): some\n * 2 MB each */\nconst CACHE = 96;\n/** Decoded tiles by URL; this worker's share of them, set by the renderers */\nexport const cache = new Lru<string, Promise<Map<string, TileLayer> | undefined>>(CACHE);\n\n/** The decoded tiles one worker of `workers` keeps */\nexport const cacheShare = (workers: number): number => {\n return Math.max(16, Math.ceil(
|
|
20
|
+
"/** The state a basemap worker shares among its jobs: the renderers (a style's layers over a source), the decoded vector\n * tiles and raster images it keeps, the requests in progress, and the style's values as its jobs read them */\n\nimport { decode, type TileLayer } from '../../basemap/mvt.ts';\nimport { pmtilesTile } from '../../basemap/pmtiles.ts';\nimport {\n type Context,\n color,\n css,\n evaluate,\n isExpression,\n type RasterSource,\n type StyleLayer,\n} from '../../basemap/vectorstyle.ts';\nimport { httpError } from '../../util/fetch.ts';\nimport { latitude, longitude, tileUrl } from '../../util/geo.ts';\nimport { Lru } from '../../util/lru.ts';\nimport { clamp } from '../../util/math.ts';\nimport { withHeaders } from '../../util/requests.ts';\nimport type { Priority } from './protocol.ts';\n\nexport interface Renderer {\n tiles: string;\n maxzoom: number;\n layers: StyleLayer[];\n rasters: Record<string, RasterSource>;\n sprites: Sprite[];\n /** Fill patterns by icon name, cut from the sprites once */\n patterns: Map<string, OffscreenCanvas | undefined>;\n}\n\n/** A sprite of the style: its images by name (`id:name` but in the default sprite) and its sheet */\nexport interface Sprite {\n image: ImageBitmap;\n icons: Record<string, { x: number; y: number; width: number; height: number; pixelRatio?: number }>;\n}\n\n/** An image of the sprites and its sheet */\nexport const spriteIcon = (r: Renderer, name: string) => {\n const sprite = r.sprites.find((sp) => Boolean(sp.icons[name]));\n const icon = sprite?.icons[name];\n\n return sprite && icon ? { icon, image: sprite.image } : undefined;\n};\n\nexport const renderers = new Map<string, Renderer>();\n/** Decoded tiles kept by the pool, shared among its workers (a vector tile always goes to the same worker): some\n * 2 MB each; fewer at a lower quality (`QualitySettings.cachedTiles`) */\nconst CACHE = 96;\n/** Decoded tiles by URL; this worker's share of them, set by the renderers */\nexport const cache = new Lru<string, Promise<Map<string, TileLayer> | undefined>>(CACHE);\n\n/** The decoded tiles one worker of `workers` keeps, of the pool's `cached` */\nexport const cacheShare = (workers: number, cached = CACHE): number => {\n return Math.max(16, Math.ceil(cached / Math.max(1, workers)));\n};\n/** Longest a tile's request may take, its body included (ms): past it the request fails and the tile is asked again,\n * rather than every view of it waiting on a connection that hangs */\nconst TILE_TIMEOUT_MS = 30_000;\n\n/** Requests in progress, and those of them aborted (both forgotten once answered) */\nexport const active = new Set<number>();\nexport const aborted = new Set<number>();\n\n/** Images of the raster sources by URL. An image dropped is freed once settled, after the renders that awaited it have\n * drawn it (they draw without awaiting again) */\nconst images = new Lru<string, Promise<ImageBitmap | undefined>>(64, (evicted) =>\n evicted.then(\n (bitmap) => setTimeout(() => bitmap?.close(), 0),\n () => undefined,\n ),\n);\n\n/** An image of a raster source (shared by every renderer); undefined where the source has none */\nexport const image = (url: string, priority: Priority = 'auto'): Promise<ImageBitmap | undefined> => {\n const hit = images.get(url);\n\n if (hit) return hit;\n\n const pending = (async () => {\n // A tile of a PMTiles archive (`pmtiles://…/{z}/{x}/{y}`)\n const archived = pmtilesTile(url);\n\n if (archived) {\n const bytes = await archived;\n\n return bytes && createImageBitmap(new Blob([bytes]));\n }\n\n const init: PriorityInit = { priority, signal: AbortSignal.timeout(TILE_TIMEOUT_MS) };\n const response = await fetch(url, withHeaders(url, init));\n\n if (response.status === 404 || response.status === 204) return undefined;\n if (!response.ok) throw httpError(url, response.status);\n\n return createImageBitmap(await response.blob());\n })();\n\n pending.catch(() => images.delete(url));\n images.set(url, pending);\n\n return pending;\n};\n\n/** `RequestInit` with the fetch priority, which the TypeScript DOM library may not know yet */\ntype PriorityInit = RequestInit & { priority?: Priority };\n\n/** A vector tile, decoded (shared by every renderer of its URL); the first request's priority fetches it */\nexport const tile = (url: string, priority: Priority = 'auto'): Promise<Map<string, TileLayer> | undefined> => {\n const hit = cache.get(url);\n\n if (hit) return hit;\n\n const pending = (async () => {\n // A tile of a PMTiles archive, ungzipped by the reader\n const archived = pmtilesTile(url);\n\n if (archived) {\n const bytes = await archived;\n\n return bytes && decode(bytes);\n }\n for (let attempt = 0; ; attempt += 1) {\n const init: PriorityInit = { priority, signal: AbortSignal.timeout(TILE_TIMEOUT_MS) };\n const response = await fetch(url, withHeaders(url, init));\n\n if (response.status === 404 || response.status === 204) return undefined;\n if (response.ok) {\n // Every layer: renderers of other subsets share the tile\n return decode(new Uint8Array(await response.arrayBuffer()));\n }\n if (attempt >= 2) throw httpError(url, response.status);\n await new Promise((r) => setTimeout(r, 400 * (attempt + 1)));\n }\n })();\n\n pending.catch(() => cache.delete(url));\n cache.set(url, pending);\n\n return pending;\n};\n\n/** The vector tile to draw a raster tile from, and where the raster tile lies in it (tile units) */\nexport const source = (r: Renderer, z: number, x: number, y: number) => {\n const vz = clamp(z - 1, 0, r.maxzoom);\n const d = z - vz;\n const n = 2 ** Math.max(0, d);\n const [vx, vy] = d >= 0 ? [Math.floor(x / n), Math.floor(y / n)] : [x, y];\n const url = tileUrl(r.tiles, vz, vx, vy);\n // Fraction of the vector tile covered, and the offset in it\n const part = 1 / n;\n\n return { url, vz, vx, vy, part, ox: (x % n) * part, oy: (y % n) * part };\n};\n\nexport const value = (layer: StyleLayer, group: 'paint' | 'layout', key: string, ctx: Context, fallback: unknown) => {\n const v = layer[group]?.[key];\n\n if (v === undefined) return fallback;\n\n // An array that is not an expression is a literal value (`text-font`, `text-offset`, `line-dasharray`)\n const out = Array.isArray(v) && !isExpression(v) ? v : evaluate(v, ctx);\n\n return out === undefined || out === null ? fallback : out;\n};\n\n/** A color with an opacity, for the canvas */\nexport const paint = (c: unknown, opacity: number): string => {\n const rgba = color(c) ?? [0, 0, 0, 1];\n\n return css([rgba[0], rgba[1], rgba[2], rgba[3] * opacity]);\n};\n\nexport const shown = (layer: StyleLayer, zoom: number): boolean => {\n if (layer.layout?.visibility === 'none') return false;\n\n return zoom >= (layer.minzoom ?? 0) && zoom < (layer.maxzoom ?? 24);\n};\n\n/** Longitude and latitude of a point of tile (z, x, y) in tile units */\nexport const lonLat = (z: number, x: number, y: number, extent: number, px: number, py: number): [number, number] => {\n const n = 2 ** z;\n\n return [longitude((x + px / extent) / n), latitude((y + py / extent) / n)];\n};\n",
|
|
21
21
|
"/** The label candidates of a tile: the texts and icons of the style's symbol layers, for the page to shape and place */\n\nimport type { TileFeature } from '../../basemap/mvt.ts';\nimport {\n type CandidateIcon,\n type CandidateOverlap,\n type Context,\n context,\n filter,\n isExpression,\n isFeatureDependent,\n type Json,\n type LabelCandidate,\n labelFont,\n type StyleLayer,\n text,\n zoomStops,\n} from '../../basemap/vectorstyle.ts';\nimport { tileUrl } from '../../util/geo.ts';\nimport type { WorkOf } from './protocol.ts';\nimport { aborted, lonLat, type Renderer, shown, tile, value } from './tiles.ts';\n\n/** The line kept on each side of a text along it (CSS pixels): half the longest text that follows a line's bends */\nconst PATH_PIXELS = 300;\n\n/** How a layer's text or icon (`prefix`) meets the others: allowed to overlap, ignored by the placement */\nconst overlapOf = (layer: StyleLayer, prefix: 'text' | 'icon', ctx: Context): CandidateOverlap => {\n const allow = Boolean(value(layer, 'layout', `${prefix}-allow-overlap`, ctx, false));\n const ignore = Boolean(value(layer, 'layout', `${prefix}-ignore-placement`, ctx, false));\n\n if (allow && ignore) return true;\n if (allow) return 'allow';\n\n return ignore ? 'ignore' : false;\n};\n\n/** A pair of numbers of a style value, `fallback` if it is not one */\nconst pair = (v: unknown, fallback: [number, number]): [number, number] => {\n return Array.isArray(v) ? [Number(v[0] ?? fallback[0]), Number(v[1] ?? fallback[1])] : fallback;\n};\n\n/** Top, right, bottom, left of one to four numbers, as CSS's sides */\nconst sides = (v: unknown): [number, number, number, number] => {\n const n = (Array.isArray(v) ? v : [v]).map((x) => Number(x) || 0);\n const [top = 0, right = top, bottom = top, left = right] = n;\n\n return [top, right, bottom, left];\n};\n\n/** A label's text in the case of its `text-transform` */\nconst cased = (t: string, transform: unknown): string => {\n if (transform === 'uppercase') return t.toUpperCase();\n if (transform === 'lowercase') return t.toLowerCase();\n\n return t;\n};\n\n/** Points every `spacing` along a line (tile units, x and y interleaved), the first half a spacing in (the middle of a\n * shorter line): each point, the segment it lies on and how far along the line it is (x, y, x0, y0, x1, y1, the\n * distance) */\nexport const lineAnchors = (line: readonly number[], spacing: number): number[][] => {\n let length = 0;\n\n for (let i = 2; i + 1 < line.length; i += 2) {\n length += Math.hypot((line[i] ?? 0) - (line[i - 2] ?? 0), (line[i + 1] ?? 0) - (line[i - 1] ?? 0));\n }\n\n const out: number[][] = [];\n\n if (!(length > 0) || !(spacing > 0)) return out;\n\n let next = Math.min(spacing / 2, length / 2);\n let walked = 0;\n\n for (let i = 2; i + 1 < line.length; i += 2) {\n const [ax, ay, bx, by] = [line[i - 2] ?? 0, line[i - 1] ?? 0, line[i] ?? 0, line[i + 1] ?? 0];\n const d = Math.hypot(bx - ax, by - ay);\n\n while (d > 0 && next <= walked + d) {\n const t = (next - walked) / d;\n\n out.push([ax + (bx - ax) * t, ay + (by - ay) * t, ax, ay, bx, by, next]);\n next += spacing;\n }\n walked += d;\n }\n\n return out;\n};\n\n/** The point `offset` (tile units) beside a line's anchor (`lineAnchors`), the `k`th anchor's on one side of the line,\n * the next one's on the other: x, y and its heading facing the line (degrees; y towards the south in the tile) */\nexport const besideLine = (\n anchor: readonly number[],\n k: number,\n offset: number,\n): [x: number, y: number, heading: number] => {\n const [px = 0, py = 0, ax = 0, ay = 0, bx = 0, by = 0] = anchor;\n const length = Math.hypot(bx - ax, by - ay) || 1;\n const sign = k % 2 === 0 ? 1 : -1;\n const [nx, ny] = [(-(by - ay) / length) * sign, ((bx - ax) / length) * sign];\n\n return [px + nx * offset, py + ny * offset, (Math.atan2(-nx, ny) * 180) / Math.PI];\n};\n\n/** The part of a line (tile units, interleaved) from `from` to `to` along it (distances from its start) */\nexport const lineBetween = (line: readonly number[], from: number, to: number): number[] => {\n const out: number[] = [];\n let walked = 0;\n\n for (let i = 2; i + 1 < line.length; i += 2) {\n const [ax, ay, bx, by] = [line[i - 2] ?? 0, line[i - 1] ?? 0, line[i] ?? 0, line[i + 1] ?? 0];\n const d = Math.hypot(bx - ax, by - ay);\n const [s0, s1] = [walked, walked + d];\n\n walked = s1;\n if (d <= 0 || s1 < from || s0 > to) continue;\n\n const at = (s: number) => [ax + ((bx - ax) * (s - s0)) / d, ay + ((by - ay) * (s - s0)) / d];\n\n if (out.length === 0) out.push(...at(Math.max(from, s0)));\n out.push(...at(Math.min(to, s1)));\n }\n\n return out;\n};\n\n/** The icon of a label: its layer's icon properties for the feature */\nconst iconOf = (\n layer: StyleLayer,\n image: string,\n ctx: Context,\n placement: 'point' | 'line',\n sizeOf: (layer: StyleLayer) => Json,\n): CandidateIcon => {\n const alignment = value(layer, 'layout', 'icon-rotation-alignment', ctx, 'auto');\n const fit = String(value(layer, 'layout', 'icon-text-fit', ctx, 'none'));\n const padding = value(layer, 'layout', 'icon-text-fit-padding', ctx, [0, 0, 0, 0]);\n\n return {\n image,\n size: isFeatureDependent(layer.layout?.['icon-size'])\n ? Number(value(layer, 'layout', 'icon-size', ctx, 1))\n : sizeOf(layer),\n anchor: String(value(layer, 'layout', 'icon-anchor', ctx, 'center')),\n offset: pair(value(layer, 'layout', 'icon-offset', ctx, [0, 0]), [0, 0]),\n rotate: Number(value(layer, 'layout', 'icon-rotate', ctx, 0)) || 0,\n alignment: alignment === 'map' || (alignment === 'auto' && placement === 'line') ? 'map' : 'viewport',\n overlap: overlapOf(layer, 'icon', ctx),\n optional: Boolean(value(layer, 'layout', 'icon-optional', ctx, false)),\n fit: fit === 'width' || fit === 'height' || fit === 'both' ? fit : 'none',\n padding: sides(padding),\n color: String(value(layer, 'paint', 'icon-color', ctx, '#000')),\n opacity: Number(value(layer, 'paint', 'icon-opacity', ctx, 1)),\n };\n};\n\n/** Squares across a tile of the grid the buildings are found by */\nconst ROOF_GRID = 16;\n\n/**\n * The height of the building under a point of a tile (its units), the highest if several: the buildings of the\n * style's `fill-extrusion` layers shown at `zoom`, at their `fill-extrusion-height`; undefined outside them. A label\n * there stands on its roof, not hidden by its walls. The buildings found through a grid of the tile's squares\n */\nexport const roofsOf = (\n r: Renderer,\n layers: Map<string, { extent: number; features: TileFeature[] }>,\n zoom: number,\n): ((px: number, py: number) => number | undefined) => {\n const buildings: { rings: number[][]; height: number; box: [number, number, number, number] }[] = [];\n const cells = new Map<number, number[]>();\n let extent = 4096;\n\n r.layers.forEach((layer) => {\n if (layer.type !== 'fill-extrusion' || !shown(layer, zoom)) return;\n\n const data = layers.get(layer['source-layer'] ?? '');\n\n if (!data) return;\n extent = data.extent;\n for (const f of data.features) {\n const ctx = context(f, zoom);\n\n if (f.type !== 3 || !filter(layer.filter, ctx)) continue;\n\n const height = Number(value(layer, 'paint', 'fill-extrusion-height', ctx, 0));\n\n if (!(height > 0)) continue;\n\n const box: [number, number, number, number] = [Infinity, Infinity, -Infinity, -Infinity];\n\n for (const ring of f.geometry)\n for (let i = 0; i + 1 < ring.length; i += 2) {\n const [x, y] = [ring[i] ?? 0, ring[i + 1] ?? 0];\n\n box[0] = Math.min(box[0], x);\n box[1] = Math.min(box[1], y);\n box[2] = Math.max(box[2], x);\n box[3] = Math.max(box[3], y);\n }\n buildings.push({ rings: f.geometry, height, box });\n }\n });\n\n const cellOf = (v: number) => Math.max(0, Math.min(ROOF_GRID - 1, Math.floor((v / extent) * ROOF_GRID)));\n\n buildings.forEach(({ box }, b) => {\n for (let cy = cellOf(box[1]); cy <= cellOf(box[3]); cy++)\n for (let cx = cellOf(box[0]); cx <= cellOf(box[2]); cx++) {\n const k = cy * ROOF_GRID + cx;\n const cell = cells.get(k);\n\n if (cell) cell.push(b);\n else cells.set(k, [b]);\n }\n });\n\n /** Whether a point is inside rings (even-odd: the holes left out) */\n const inside = (rings: number[][], px: number, py: number): boolean => {\n let odd = false;\n\n for (const ring of rings)\n for (let i = 0, j = ring.length - 2; i + 1 < ring.length; j = i, i += 2) {\n const [xi, yi, xj, yj] = [ring[i] ?? 0, ring[i + 1] ?? 0, ring[j] ?? 0, ring[j + 1] ?? 0];\n\n if (yi > py !== yj > py && px < ((xj - xi) * (py - yi)) / (yj - yi) + xi) odd = !odd;\n }\n\n return odd;\n };\n\n return (px, py) =>\n (cells.get(cellOf(py) * ROOF_GRID + cellOf(px)) ?? []).reduce<number | undefined>((top, b) => {\n const building = buildings[b];\n\n return building && inside(building.rings, px, py) ? Math.max(top ?? 0, building.height) : top;\n }, undefined);\n};\n\nexport const labels = async (r: Renderer, work: WorkOf<'labels'>): Promise<LabelCandidate[]> => {\n const { z, x, y, id, priority, zoom = z, roofs = false } = work;\n const url = tileUrl(r.tiles, z, x, y);\n const layers = await tile(url, priority);\n\n if (!layers || aborted.has(id)) return [];\n\n const out: LabelCandidate[] = [];\n // Only when the page hides the labels behind the buildings: the buildings of the tile in a grid\n const roofAt = roofs ? roofsOf(r, layers, zoom) : () => undefined;\n // The text size of a layer when it depends on the zoom only: legacy stops as they are, an expression as stops\n const sizes = new Map<StyleLayer, Json>();\n const sizeOf = (layer: StyleLayer): Json => {\n const known = sizes.get(layer);\n\n if (known !== undefined) return known;\n\n const v = layer.layout?.['text-size'] ?? 16;\n const s = isExpression(v) ? zoomStops(v) : v;\n\n sizes.set(layer, s);\n\n return s;\n };\n // The icon size of a layer when it depends on the zoom only, as the text size\n const iconSizes = new Map<StyleLayer, Json>();\n const iconSizeOf = (layer: StyleLayer): Json => {\n const known = iconSizes.get(layer);\n\n if (known !== undefined) return known;\n\n const v = layer.layout?.['icon-size'] ?? 1;\n const s = isExpression(v) ? zoomStops(v) : v;\n\n iconSizes.set(layer, s);\n\n return s;\n };\n\n r.layers.forEach((layer, index) => {\n const layout = layer.layout ?? {};\n\n if (layer.type !== 'symbol' || !shown(layer, zoom)) return;\n if (layout['text-field'] === undefined && layout['icon-image'] === undefined) return;\n\n const data = layers.get(layer['source-layer'] ?? '');\n\n if (!data) return;\n\n const zctx: Context = { zoom, properties: {}, type: 'Unknown' };\n const placement = value(layer, 'layout', 'symbol-placement', zctx, 'point') === 'line' ? 'line' : 'point';\n const textAlong =\n placement === 'line' && value(layer, 'layout', 'text-rotation-alignment', zctx, 'auto') !== 'viewport';\n\n for (const f of data.features) {\n const ctx = context(f, zoom);\n\n if (!filter(layer.filter, ctx)) continue;\n\n const field = text(layout['text-field'], ctx).trim();\n const image = text(layout['icon-image'], ctx).trim();\n\n if (!field && !image) continue;\n\n const t = cased(field, value(layer, 'layout', 'text-transform', ctx, 'none'));\n const fonts = value(layer, 'layout', 'text-font', ctx, ['Noto Sans Regular']);\n const font = labelFont(Array.isArray(fonts) && typeof fonts[0] === 'string' ? fonts[0] : 'Noto Sans Regular');\n const base = {\n layer: index,\n text: t,\n font,\n // Zoom stops are kept for the engine; a value of the feature evaluated here\n size: isFeatureDependent(layer.layout?.['text-size'])\n ? Number(value(layer, 'layout', 'text-size', ctx, 16))\n : sizeOf(layer),\n color: String(value(layer, 'paint', 'text-color', ctx, '#000')),\n haloColor: String(value(layer, 'paint', 'text-halo-color', ctx, 'rgba(0,0,0,0)')),\n haloWidth: Number(value(layer, 'paint', 'text-halo-width', ctx, 0)),\n anchor: String(value(layer, 'layout', 'text-anchor', ctx, 'center')),\n offset: pair(value(layer, 'layout', 'text-offset', ctx, [0, 0]), [0, 0]),\n maxWidth: Number(value(layer, 'layout', 'text-max-width', ctx, 10)),\n lineHeight: Number(value(layer, 'layout', 'text-line-height', ctx, 1.2)),\n overlap: overlapOf(layer, 'text', ctx),\n ...(textAlong ? { textAlong } : {}),\n ...(value(layer, 'layout', 'text-optional', ctx, false) ? { textOptional: true } : {}),\n ...(image ? { icon: iconOf(layer, image, ctx, placement, iconSizeOf) } : {}),\n };\n\n if (f.type === 1) {\n for (const point of f.geometry) {\n for (let i = 0; i + 1 < point.length; i += 2) {\n const [px, py] = [point[i] ?? 0, point[i + 1] ?? 0];\n\n // Points in the buffer belong to the neighbouring tile\n if (px < 0 || py < 0 || px >= data.extent || py >= data.extent) continue;\n\n const [lon, lat] = lonLat(z, x, y, data.extent, px, py);\n const height = roofAt(px, py);\n\n out.push({ ...base, lon, lat, ...(height === undefined ? {} : { height }) });\n }\n }\n } else if (!t && placement === 'line') {\n // Icons alone along lines (one-way arrows): every `symbol-spacing` CSS pixels (a tile is 512 across at its\n // level, twice as many at each zoom past it)\n const spacing =\n (Number(value(layer, 'layout', 'symbol-spacing', ctx, 250)) * data.extent) / (512 * 2 ** (zoom - z));\n\n for (const line of f.geometry) {\n for (const [px = 0, py = 0, ax = 0, ay = 0, bx = 0, by = 0] of lineAnchors(line, Math.max(spacing, 1))) {\n if (px < 0 || py < 0 || px >= data.extent || py >= data.extent) continue;\n\n const [lon, lat] = lonLat(z, x, y, data.extent, px, py);\n const [lon1, lat1] = lonLat(z, x, y, data.extent, bx, by);\n const [lon0, lat0] = lonLat(z, x, y, data.extent, ax, ay);\n\n out.push({ ...base, lon, lat, along: [lon1 - lon0, lat1 - lat0] });\n }\n }\n } else if (t && textAlong) {\n // Texts along lines every `symbol-spacing` CSS pixels, each with the line around it, as long before as after\n // (up to `PATH_PIXELS`), for the text to follow its bends; the placement keeps those that fit\n const pixels = data.extent / (512 * 2 ** (zoom - z));\n const spacing = Number(value(layer, 'layout', 'symbol-spacing', ctx, 250)) * pixels;\n\n for (const line of f.geometry) {\n let length = 0;\n\n for (let i = 2; i + 1 < line.length; i += 2) {\n length += Math.hypot((line[i] ?? 0) - (line[i - 2] ?? 0), (line[i + 1] ?? 0) - (line[i - 1] ?? 0));\n }\n if (length < data.extent / 32) continue;\n\n for (const [px = 0, py = 0, ax = 0, ay = 0, bx = 0, by = 0, s = 0] of lineAnchors(\n line,\n Math.max(spacing, 1),\n )) {\n if (px < 0 || py < 0 || px >= data.extent || py >= data.extent) continue;\n\n const half = Math.min(s, length - s, PATH_PIXELS * pixels);\n const part = lineBetween(line, s - half, s + half);\n const path: number[] = [];\n\n for (let i = 0; i + 1 < part.length; i += 2)\n path.push(...lonLat(z, x, y, data.extent, part[i] ?? 0, part[i + 1] ?? 0));\n\n const [lon, lat] = lonLat(z, x, y, data.extent, px, py);\n const [lon1, lat1] = lonLat(z, x, y, data.extent, bx, by);\n const [lon0, lat0] = lonLat(z, x, y, data.extent, ax, ay);\n\n out.push({ ...base, lon, lat, along: [lon1 - lon0, lat1 - lat0], ...(path.length >= 4 ? { path } : {}) });\n }\n }\n } else {\n // The middle of the longest line inside the tile, along it\n let best: number[] | undefined;\n let bestLength = 0;\n\n for (const line of f.geometry) {\n let length = 0;\n\n for (let i = 2; i + 1 < line.length; i += 2) {\n length += Math.hypot((line[i] ?? 0) - (line[i - 2] ?? 0), (line[i + 1] ?? 0) - (line[i - 1] ?? 0));\n }\n if (length > bestLength) {\n bestLength = length;\n best = line;\n }\n }\n if (!best || bestLength < data.extent / 32) continue;\n\n let rest = bestLength / 2;\n\n for (let i = 2; i + 1 < best.length; i += 2) {\n const [ax, ay, bx, by] = [best[i - 2] ?? 0, best[i - 1] ?? 0, best[i] ?? 0, best[i + 1] ?? 0];\n const d = Math.hypot(bx - ax, by - ay);\n\n if (d >= rest && d > 0) {\n const [px, py] = [ax + ((bx - ax) * rest) / d, ay + ((by - ay) * rest) / d];\n\n if (px < 0 || py < 0 || px >= data.extent || py >= data.extent) break;\n\n const [lon, lat] = lonLat(z, x, y, data.extent, px, py);\n const [lon1, lat1] = lonLat(z, x, y, data.extent, bx, by);\n const [lon0, lat0] = lonLat(z, x, y, data.extent, ax, ay);\n\n out.push({ ...base, lon, lat, ...(placement === 'line' ? { along: [lon1 - lon0, lat1 - lat0] } : {}) });\n break;\n }\n rest -= d;\n }\n }\n }\n });\n\n return out;\n};\n",
|
|
22
22
|
"/**\n * Where the trees of a vector map grow and how (the page's layers and the workers alike): the style layers they grow\n * on by default and how far apart, the share of conifers in a wood from its data, the height of their models.\n */\n\nimport type { Value } from './mvt.ts';\nimport type { StyleLayer } from './vectorstyle.ts';\n\n/** The models' heights (metres): a tree's height from its data scales them by it */\nexport const TREE_METRES = { broadleaved: 10.2, conifer: 11 } as const;\n\n/** Whether a style layer is OpenMapTiles' grass (the lawns of parks and gardens among it) */\nconst isGrass = (layer: StyleLayer): boolean => layer['source-layer'] === 'landcover' && /grass/i.test(layer.id);\n\n/**\n * Whether trees grow on a style layer by default: the woods and forests of the style's fills (OpenMapTiles'\n * `landcover` wood, PLAN IGN's forests) and the grass of its parks and gardens; not the wooded relief of PLAN IGN,\n * which repeats its forests, nor OpenMapTiles' `park` layer (protected areas and historic sites: a river's banks\n * among them)\n */\nexport const isWoodland = (layer: StyleLayer): boolean =>\n layer.type === 'fill' &&\n layer['source-layer'] !== 'oro_relief' &&\n (/wood|forest|for[eê]t/i.test(layer.id) || isGrass(layer));\n\n/** Default spacing of the trees of a layer (metres): close in woods and forests, apart on grass */\nexport const treeSpacing = (layer: StyleLayer): number => (isGrass(layer) ? 25 : 9);\n\n/**\n * The share of conifers in a wood from its properties: OpenStreetMap's `leaf_type` (needleleaved, broadleaved,\n * mixed), PLAN IGN's `nature` (« conifères », « feuillus », « mixte »); without them, OpenMapTiles' forests a third\n * conifers and its other woods some, the grass of parks none\n */\nexport const coniferShare = (properties: Record<string, Value>): number => {\n const leaf = properties.leaf_type;\n const nature = typeof properties.nature === 'string' ? properties.nature : '';\n\n if (leaf === 'needleleaved' || /conif/i.test(nature)) return 1;\n if (leaf === 'broadleaved' || /feuillu/i.test(nature)) return 0;\n if (leaf === 'mixed' || /mixte/i.test(nature)) return 0.5;\n if (properties.class === 'wood') return properties.subclass === 'forest' ? 0.35 : 0.15;\n\n return 0;\n};\n",
|
|
23
23
|
"/** The trees of a tile: points scattered over the woods of its polygons, the same each time the tile is cut */\n\nimport { PLACED_NUMBERS, PLACED_RANK, turned } from '../../basemap/placed.ts';\nimport { context, filter } from '../../basemap/vectorstyle.ts';\nimport { coniferShare } from '../../basemap/woods.ts';\nimport { tileMetres, tileUrl } from '../../util/geo.ts';\nimport type { WorkOf } from './protocol.ts';\nimport { aborted, lonLat, type Renderer, tile } from './tiles.ts';\n\n/** Things placed (`PLACED_NUMBERS` each), past `max` thinned evenly by their rank: one in so many kept, the\n * same ones each time */\nexport const thinned = (found: readonly number[], max: number): Float64Array => {\n const count = found.length / PLACED_NUMBERS;\n const keep = count > max ? max / count : 1;\n const out: number[] = [];\n\n for (let i = 0; i < count; i += 1) {\n if (keep >= 1 || (found[i * PLACED_NUMBERS + PLACED_RANK] ?? 0) < keep)\n out.push(...found.slice(i * PLACED_NUMBERS, (i + 1) * PLACED_NUMBERS));\n }\n\n return Float64Array.from(out);\n};\n\n/** A number in [0, 1) from four integers, the same for the same ones: where a tree stands in its cell, its size */\nexport const treeHash = (a: number, b: number, c: number, d: number): number => {\n let h = Math.imul(a ^ 0x9e3779b9, 0x85ebca6b) ^ Math.imul(b ^ 0xc2b2ae35, 0x27d4eb2f);\n\n h = Math.imul(h ^ (h >>> 15) ^ Math.imul(c, 0x165667b1), 0x2c1b3c6d);\n h = Math.imul(h ^ (h >>> 13) ^ Math.imul(d, 0x297a2d39), 0x297a2d39);\n\n return ((h ^ (h >>> 16)) >>> 0) / 2 ** 32;\n};\n\n/** Whether a point lies in rings (interleaved points, unclosed or closed), even-odd: the holes cut out */\nexport const inRings = (rings: readonly (readonly number[])[], px: number, py: number): boolean =>\n rings.reduce((inside, ring) => {\n const n = ring.length / 2;\n let crossings = 0;\n\n for (let i = 0, j = n - 1; i < n; j = i, i += 1) {\n const [xi, yi, xj, yj] = [ring[i * 2] ?? 0, ring[i * 2 + 1] ?? 0, ring[j * 2] ?? 0, ring[j * 2 + 1] ?? 0];\n\n if (yi > py !== yj > py && px < ((xj - xi) * (py - yi)) / (yj - yi) + xi) crossings += 1;\n }\n\n return crossings % 2 === 1 ? !inside : inside;\n }, false);\n\n/**\n * Points scattered over a polygon (its rings, tile units) on a jittered grid of `cell` tile units, the grid and the\n * jitter fixed by the tile (`seed`): the same trees whenever the tile is cut again, none twice across tiles (the points\n * past the tile's edge left to its neighbour). Past `maxCells` cells over the polygon (a tile of a coarse level), the\n * cells grow until they are no more. Each point with a number in [0, 1) for its size and heading\n */\nexport const scatter = (\n rings: readonly (readonly number[])[],\n extent: number,\n spacing: number,\n seed: [number, number, number],\n maxCells = Number.POSITIVE_INFINITY,\n): [x: number, y: number, k: number][] => {\n const outer = rings[0] ?? [];\n // The bounds of the outer ring (a loop: a spread of a ring of many points would overflow the call stack)\n const bounds = [\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n ];\n\n for (let i = 0; i + 1 < outer.length; i += 2) {\n const [x, y] = [outer[i] ?? 0, outer[i + 1] ?? 0];\n\n bounds[0] = Math.min(bounds[0] ?? x, x);\n bounds[1] = Math.min(bounds[1] ?? y, y);\n bounds[2] = Math.max(bounds[2] ?? x, x);\n bounds[3] = Math.max(bounds[3] ?? y, y);\n }\n\n const [x0, y0] = [Math.max(0, bounds[0] ?? 0), Math.max(0, bounds[1] ?? 0)];\n const [x1, y1] = [Math.min(extent, bounds[2] ?? 0), Math.min(extent, bounds[3] ?? 0)];\n\n if (!(spacing > 0) || x0 >= x1 || y0 >= y1) return [];\n\n const cells = ((x1 - x0) / spacing) * ((y1 - y0) / spacing);\n const cell = cells > maxCells ? spacing * Math.sqrt(cells / maxCells) : spacing;\n const [cx0, cx1, cy0, cy1] = [\n Math.floor(x0 / cell),\n Math.ceil(x1 / cell),\n Math.floor(y0 / cell),\n Math.ceil(y1 / cell),\n ];\n const [z, x, y] = seed;\n const tileSeed = Math.imul(z + 1, 0x01000193) ^ Math.imul(x, 0x5bd1e995) ^ Math.imul(y, 0x1b873593);\n\n return Array.from({ length: Math.max(0, cy1 - cy0) }, (_, j) => cy0 + j).flatMap((cy) =>\n Array.from({ length: Math.max(0, cx1 - cx0) }, (_, i) => cx0 + i).flatMap((cx): [number, number, number][] => {\n const px = (cx + treeHash(tileSeed, cx, cy, 1)) * cell;\n const py = (cy + treeHash(tileSeed, cx, cy, 2)) * cell;\n\n if (px < 0 || py < 0 || px >= extent || py >= extent || !inRings(rings, px, py)) return [];\n\n return [[px, py, treeHash(tileSeed, cx, cy, 3)]];\n }),\n );\n};\n\n/**\n * Trees over the polygons of the renderer's layers in a tile: longitude, latitude, scale (0.75 to 1.25), heading\n * (degrees), rank (in [0, 1): the page keeps the lowest far from the view) and kind (1 a conifer, as many as its wood's\n * `coniferShare`, else 0) of each, `spacing[s]` metres apart in layer `s` on a jittered grid; past `maxTrees`, thinned\n * evenly\n */\nexport const trees = async (r: Renderer, work: WorkOf<'trees'>) => {\n const { z, x, y, id, spacing, maxTrees, priority } = work;\n\n const url = tileUrl(r.tiles, z, x, y);\n const layers = await tile(url, priority);\n\n if (!layers || aborted.has(id)) return undefined;\n\n // Metres across the tile at its middle: the cells in tile units\n const across = tileMetres(z, y);\n const found: [x: number, y: number, k: number, extent: number, conifers: number][] = [];\n\n r.layers.forEach((layer, s) => {\n const metres = spacing[s] ?? 0;\n const data = layers.get(layer['source-layer'] ?? '');\n\n if (!data || !(metres > 0)) return;\n\n const cell = (metres / across) * data.extent;\n\n data.features.forEach((f) => {\n if (f.type !== 3 || !filter(layer.filter, context(f, z))) return;\n\n const conifers = coniferShare(f.properties);\n\n // Its polygons: an outline (clockwise on screen) and the holes after it\n const polygons = f.geometry.reduce<number[][][]>((list, ring) => {\n let area = 0;\n\n for (let i = 0; i + 1 < ring.length; i += 2) {\n const j = (i + 2) % ring.length;\n\n area += (ring[i] ?? 0) * (ring[j + 1] ?? 0) - (ring[j] ?? 0) * (ring[i + 1] ?? 0);\n }\n if (area > 0) list.push([ring]);\n else if (area < 0) list.at(-1)?.push(ring);\n\n return list;\n }, []);\n\n polygons.forEach((rings) => {\n scatter(rings, data.extent, cell, [z, x, y], maxTrees * 4).forEach(([px, py, k]) => {\n found.push([px, py, k, data.extent, conifers]);\n });\n });\n });\n });\n\n // Too many: one in so many kept, the same ones each time\n const keep = found.length > maxTrees ? maxTrees / found.length : 1;\n const kept = found.filter(([, , k]) => keep >= 1 || treeHash(Math.floor(k * 2 ** 31), z, x, y) < keep);\n const out = new Float64Array(kept.length * PLACED_NUMBERS);\n\n kept.forEach(([px, py, k, extent, conifers], i) => {\n const [lon, lat] = lonLat(z, x, y, extent, px, py);\n const rank = treeHash(Math.floor(k * 2 ** 31), 7, 11, 13);\n const conifer = treeHash(Math.floor(k * 2 ** 31), 3, 5, 17) < conifers ? 1 : 0;\n\n out.set([lon, lat, 0.75 + 0.5 * k, turned(k), rank, conifer], i * PLACED_NUMBERS);\n });\n\n return out;\n};\n",
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
"/** The street lamps of a tile: points along its streets, on one side then the other, the same each time the tile is cut */\n\nimport { context, filter } from '../../basemap/vectorstyle.ts';\nimport { tileMetres, tileUrl } from '../../util/geo.ts';\nimport { besideLine, lineAnchors } from './labels.ts';\nimport type { WorkOf } from './protocol.ts';\nimport { aborted, lonLat, type Renderer, tile } from './tiles.ts';\nimport { thinned, treeHash } from './trees.ts';\n\n/** Metres from a street's middle to its lamps, by OpenMapTiles' class of road (none along the others: motorways,\n * paths, railways) */\nconst SIDE_METRES: Readonly<Record<string, number>> = {\n primary: 8,\n secondary: 7,\n tertiary: 6,\n minor: 5,\n service: 4,\n};\n\n/**\n * Lamps along the lines of the renderer's layers in a tile, `spacing` metres apart along each street, every other\n * one on its other side, as far from its middle as its class says (`SIDE_METRES`): longitude, latitude, scale, heading\n * (degrees, facing the street) and rank (in [0, 1): the page keeps the lowest far from the view) of each, as things\n * placed (`PLACED_NUMBERS`, the kind 0); past `maxLamps`, thinned evenly. A street in several layers has its lamps once\n */\nexport const lamps = async (r: Renderer, work: WorkOf<'lamps'>) => {\n const { z, x, y, id, spacing, maxLamps, priority } = work;\n\n const url = tileUrl(r.tiles, z, x, y);\n const layers = await tile(url, priority);\n\n if (!layers || aborted.has(id)) return undefined;\n\n // Metres across the tile at its middle: the distances in tile units\n const across = tileMetres(z, y);\n const seen = new Set<object>();\n const found: number[] = [];\n\n r.layers.forEach((layer) => {\n const data = layers.get(layer['source-layer'] ?? '');\n\n if (!data) return;\n\n const units = data.extent / across;\n\n data.features.forEach((f) => {\n const side = SIDE_METRES[String(f.properties.class)];\n\n if (f.type !== 2 || side === undefined || seen.has(f) || !filter(layer.filter, context(f, z))) return;\n seen.add(f);\n f.geometry.forEach((line) => {\n lineAnchors(line, spacing * units).forEach((anchor, k) => {\n // On one side of the street, then on the other, facing it\n const [lx, ly, heading] = besideLine(anchor, k, side * units);\n\n if (lx < 0 || ly < 0 || lx >= data.extent || ly >= data.extent) return;\n\n const [lon, lat] = lonLat(z, x, y, data.extent, lx, ly);\n const rank = treeHash(Math.floor(lx), Math.floor(ly), Math.floor(anchor[6] ?? 0), 29);\n\n found.push(lon, lat, 1, heading, rank, 0);\n });\n });\n });\n });\n\n return thinned(found, maxLamps);\n};\n",
|
|
30
30
|
"/** A vector tile drawn into an image with its style (Canvas 2D), for the raster pool */\n\nimport type { TileFeature, TileLayer } from '../../basemap/mvt.ts';\nimport { type Context, color, context, filter, isFeatureDependent } from '../../basemap/vectorstyle.ts';\nimport { tileUrl } from '../../util/geo.ts';\nimport { clamp } from '../../util/math.ts';\nimport type { Priority, WorkOf } from './protocol.ts';\nimport { aborted, image, paint, type Renderer, shown, source, spriteIcon, tile, value } from './tiles.ts';\n\nconst LINE_CAPS: ReadonlySet<unknown> = new Set<CanvasLineCap>(['butt', 'round', 'square']);\nconst LINE_JOINS: ReadonlySet<unknown> = new Set<CanvasLineJoin>(['bevel', 'miter', 'round']);\n\nconst isLineCap = (value: unknown): value is CanvasLineCap => LINE_CAPS.has(value);\nconst isLineJoin = (value: unknown): value is CanvasLineJoin => LINE_JOINS.has(value);\n\n/** A style's `line-cap` for the canvas: `butt` if it is none */\nconst lineCap = (value: unknown): CanvasLineCap => (isLineCap(value) ? value : 'butt');\n\n/** A style's `line-join` for the canvas: `miter` if it is none */\nconst lineJoin = (value: unknown): CanvasLineJoin => (isLineJoin(value) ? value : 'miter');\n\n/** The image of a fill pattern, cut from the sprite on first use */\nconst patternImage = (r: Renderer, name: string): OffscreenCanvas | undefined => {\n if (r.patterns.has(name)) return r.patterns.get(name);\n\n const cut = (): OffscreenCanvas | undefined => {\n const found = spriteIcon(r, name);\n\n if (!found || !(found.icon.width > 0) || !(found.icon.height > 0)) return undefined;\n\n const { icon } = found;\n const canvas = new OffscreenCanvas(icon.width, icon.height);\n\n canvas\n .getContext('2d')\n ?.drawImage(found.image, icon.x, icon.y, icon.width, icon.height, 0, 0, icon.width, icon.height);\n\n return canvas;\n };\n const image = cut();\n\n r.patterns.set(name, image);\n\n return image;\n};\n\n/** Canvases free for the next tiles, by size: one per tile being drawn at most */\nconst canvases = new Map<number, OffscreenCanvas[]>();\n\n/** A blank canvas of `size` pixels and its context, from the free ones if any */\nconst takeCanvas = (size: number): { canvas: OffscreenCanvas; g: OffscreenCanvasRenderingContext2D } => {\n const canvas = canvases.get(size)?.pop() ?? new OffscreenCanvas(size, size);\n // A canvas on the CPU: its pixels are read back here, in the worker, not on the main thread at the upload\n const g = canvas.getContext('2d', { willReadFrequently: true });\n\n if (!g) throw new Error('isard: no 2D context');\n // The state a former tile left\n g.setTransform(1, 0, 0, 1, 0, 0);\n g.globalAlpha = 1;\n g.setLineDash([]);\n g.clearRect(0, 0, size, size);\n\n return { canvas, g };\n};\n\nconst giveCanvas = (canvas: OffscreenCanvas): void => {\n const free = canvases.get(canvas.width) ?? [];\n\n canvases.set(canvas.width, free);\n if (free.length < 4) free.push(canvas);\n};\n\n/**\n * The image of a drawn canvas, its alpha straight (the engine blends straight alpha). An opaque tile (a background\n * of full opacity, as a basemap's) is moved out of the canvas as it is, premultiplied and straight being the same\n * there; another one is read back unpremultiplied, copied\n */\nexport const tileImage = (\n canvas: OffscreenCanvas,\n g: OffscreenCanvasRenderingContext2D,\n opaque: boolean,\n): Promise<ImageBitmap> => {\n if (opaque) return Promise.resolve(canvas.transferToImageBitmap());\n\n return createImageBitmap(g.getImageData(0, 0, canvas.width, canvas.height), { premultiplyAlpha: 'none' });\n};\n\nexport const render = async (r: Renderer, work: WorkOf<'render'>) => {\n const { z, x, y, size, id, priority } = work;\n\n const s = source(r, z, x, y);\n const layers = await tile(s.url, priority);\n\n if (aborted.has(id)) return undefined;\n\n const { canvas, g } = takeCanvas(size);\n\n try {\n return await draw(r, s, layers, canvas, g, z, x, y, size, id, priority);\n } finally {\n giveCanvas(canvas);\n }\n};\n\nconst draw = async (\n r: Renderer,\n s: ReturnType<typeof source>,\n layers: Map<string, TileLayer> | undefined,\n canvas: OffscreenCanvas,\n g: OffscreenCanvasRenderingContext2D,\n z: number,\n x: number,\n y: number,\n size: number,\n id: number,\n priority?: Priority,\n) => {\n const zoom = Math.max(0, z - 1);\n // CSS pixels to canvas pixels: the tile is 256 CSS pixels across at its zoom\n const px = size / 256;\n let drawn = false;\n /** A background of full opacity covers the tile: every pixel stays opaque */\n let opaque = false;\n\n for (const layer of r.layers) {\n if (!shown(layer, zoom)) continue;\n\n const zctx: Context = { zoom, properties: {}, type: 'Unknown' };\n\n if (layer.type === 'background') {\n const fill = value(layer, 'paint', 'background-color', zctx, '#000');\n const opacity = Number(value(layer, 'paint', 'background-opacity', zctx, 1));\n\n g.fillStyle = paint(fill, opacity);\n g.fillRect(0, 0, size, size);\n if ((color(fill) ?? [0, 0, 0, 1])[3] * opacity >= 1) opaque = true;\n drawn = true;\n continue;\n }\n if (layer.type === 'raster') {\n const source = layer.source === undefined ? undefined : r.rasters[layer.source];\n\n if (!source) continue;\n\n // The canvas covers the Web Mercator tile (z, x, y): a source tile of 512 px covers it from a level coarser\n const rz = clamp(z - (source.tileSize >= 512 ? 1 : 0), 0, source.maxzoom);\n const n = 2 ** (z - rz);\n const url = tileUrl(source.tiles, rz, Math.floor(x / n), Math.floor(y / n));\n // None there (404, 204): drawn without it; any other failure fails the tile, which the engine asks for again\n // rather than keeping it without this layer\n const picture = await image(url, priority);\n\n if (aborted.has(id)) return undefined;\n if (!picture) continue;\n\n const [w, h] = [picture.width / n, picture.height / n];\n\n g.globalAlpha = Number(value(layer, 'paint', 'raster-opacity', zctx, 1));\n g.drawImage(picture, (x % n) * w, (y % n) * h, w, h, 0, 0, size, size);\n g.globalAlpha = 1;\n drawn = true;\n continue;\n }\n\n const data = layers?.get(layer['source-layer'] ?? '');\n\n if (!data) continue;\n\n // Tile units to canvas pixels\n const k = size / (data.extent * s.part);\n const [ox, oy] = [s.ox * data.extent, s.oy * data.extent];\n const path = (f: TileFeature, close: boolean) => {\n g.beginPath();\n for (const line of f.geometry) {\n for (let i = 0; i + 1 < line.length; i += 2) {\n const [lx, ly] = [((line[i] ?? 0) - ox) * k, ((line[i + 1] ?? 0) - oy) * k];\n\n if (i === 0) g.moveTo(lx, ly);\n else g.lineTo(lx, ly);\n }\n if (close) g.closePath();\n }\n };\n // Values that only depend on the zoom are evaluated once for the layer\n const dependent = new Map<string, boolean>();\n const get = (group: 'paint' | 'layout', key: string, ctx: Context, fallback: unknown) => {\n const known = dependent.get(key);\n const d = known ?? isFeatureDependent(layer[group]?.[key]);\n\n if (known === undefined) dependent.set(key, d);\n\n return value(layer, group, key, d ? ctx : zctx, fallback);\n };\n\n for (const f of data.features) {\n const ctx = context(f, zoom);\n\n if (!filter(layer.filter, ctx)) continue;\n if (layer.type === 'fill-extrusion' && f.type === 3) {\n // Flat, seen from above: its color\n path(f, true);\n g.fillStyle = paint(\n get('paint', 'fill-extrusion-color', ctx, '#000'),\n Number(get('paint', 'fill-extrusion-opacity', ctx, 1)),\n );\n g.fill('evenodd');\n drawn = true;\n } else if (layer.type === 'fill' && f.type === 3) {\n const opacity = Number(get('paint', 'fill-opacity', ctx, 1));\n const pattern = get('paint', 'fill-pattern', ctx, undefined);\n\n path(f, true);\n\n const icon = typeof pattern === 'string' ? spriteIcon(r, pattern)?.icon : undefined;\n const image = icon && typeof pattern === 'string' && patternImage(r, pattern);\n\n if (icon && image) {\n const p = g.createPattern(image, 'repeat');\n\n if (p) {\n p.setTransform(new DOMMatrix().scale(px / (icon.pixelRatio ?? 1)));\n g.globalAlpha = opacity;\n g.fillStyle = p;\n g.fill('evenodd');\n g.globalAlpha = 1;\n }\n } else {\n g.fillStyle = paint(get('paint', 'fill-color', ctx, '#000'), opacity);\n g.fill('evenodd');\n\n const outline = get('paint', 'fill-outline-color', ctx, undefined);\n\n if (outline !== undefined) {\n g.strokeStyle = paint(outline, opacity);\n g.lineWidth = px;\n g.setLineDash([]);\n g.stroke();\n }\n }\n drawn = true;\n } else if (layer.type === 'line' && f.type !== 1) {\n const width = Number(get('paint', 'line-width', ctx, 1));\n\n if (width <= 0) continue;\n\n // A gap: two lines on either side of it, drawn as one wide line (the casing of a road, its inside drawn over)\n const gap = Number(get('paint', 'line-gap-width', ctx, 0));\n\n g.strokeStyle = paint(get('paint', 'line-color', ctx, '#000'), Number(get('paint', 'line-opacity', ctx, 1)));\n g.lineWidth = (gap > 0 ? gap + 2 * width : width) * px;\n g.lineCap = lineCap(get('layout', 'line-cap', ctx, 'butt'));\n g.lineJoin = lineJoin(get('layout', 'line-join', ctx, 'miter'));\n\n const dash = get('paint', 'line-dasharray', ctx, undefined);\n\n g.setLineDash(Array.isArray(dash) ? dash.map((d) => Number(d) * width * px) : []);\n path(f, f.type === 3);\n g.stroke();\n drawn = true;\n } else if (layer.type === 'circle' && f.type === 1) {\n const radius = Number(get('paint', 'circle-radius', ctx, 5)) * px;\n\n g.fillStyle = paint(get('paint', 'circle-color', ctx, '#000'), Number(get('paint', 'circle-opacity', ctx, 1)));\n\n const stroke = Number(get('paint', 'circle-stroke-width', ctx, 0)) * px;\n\n g.strokeStyle = paint(\n get('paint', 'circle-stroke-color', ctx, '#000'),\n Number(get('paint', 'circle-stroke-opacity', ctx, 1)),\n );\n g.lineWidth = stroke;\n for (const point of f.geometry) {\n for (let i = 0; i + 1 < point.length; i += 2) {\n g.beginPath();\n g.arc(((point[i] ?? 0) - ox) * k, ((point[i + 1] ?? 0) - oy) * k, radius, 0, 2 * Math.PI);\n g.fill();\n if (stroke > 0) g.stroke();\n }\n }\n drawn = true;\n }\n }\n }\n if (!drawn && !layers) return null;\n\n return tileImage(canvas, g, opaque);\n};\n",
|
|
31
31
|
"/** The wind of a city's streets: the buildings of the vector tiles around a square, laid on its grid of cells, and\n * the flow round them for a wind towards the east and one towards the north (the grid module) */\n\nimport { type StreetFlows, streetFlows } from '../../grid-module.ts';\nimport { polygons } from './geometry.ts';\nimport type { Priority } from './protocol.ts';\nimport { aborted, type Renderer } from './tiles.ts';\n\n/** What a street flow is asked with: its square (Mercator: west, north, east, south) and grid, the tiles of level `z`\n * over it (x, y pairs), the sweeps, the grid module's URL */\nexport interface StreetWork {\n module: string;\n z: number;\n tiles: number[];\n bounds: [x0: number, y0: number, x1: number, y1: number];\n width: number;\n height: number;\n iterations: number;\n priority?: Priority;\n}\n\n/** The streets' flows of a square: the buildings of its tiles in cells (those away from it left out), then solved */\nexport const streetFlowOf = async (r: Renderer, work: StreetWork & { id: number }): Promise<StreetFlows> => {\n const { z, tiles, bounds, width, height, iterations, module, priority, id } = work;\n const [x0, y0, x1, y1] = bounds;\n const points: number[] = [];\n const ringStart: number[] = [];\n const polygonStart: number[] = [];\n\n const n = 2 ** z;\n\n for (let t = 0; t + 1 < tiles.length; t += 2) {\n // A column past the antimeridian (the square across it): the tile of the world's other side, a turn away\n const column = tiles[t] ?? 0;\n const wrapped = ((column % n) + n) % n;\n const turn = (column - wrapped) / n;\n const tile = await polygons(r, { z, x: wrapped, y: tiles[t + 1] ?? 0, id, priority });\n\n // A square no longer wanted (the view went on): not solved, its worker free for the tiles\n if (aborted.has(id)) throw new Error('aborted');\n if (!tile) continue;\n\n const { points: merc, ringStart: rings, polygonStart: starts } = tile.arrays;\n\n for (let p = 0; p + 1 < starts.length; p++) {\n const [first, end] = [starts[p] ?? 0, starts[p + 1] ?? 0];\n const from = rings[first] ?? 0;\n const to = rings[end] ?? 0;\n // Its points' bounds in Mercator: away from the square, left out\n let [minX, minY, maxX, maxY] = [Infinity, Infinity, -Infinity, -Infinity];\n\n for (let k = from; k < to; k++) {\n const [mx, my] = [(merc[k * 2] ?? 0) + turn, merc[k * 2 + 1] ?? 0];\n\n minX = Math.min(minX, mx);\n minY = Math.min(minY, my);\n maxX = Math.max(maxX, mx);\n maxY = Math.max(maxY, my);\n }\n if (maxX < x0 || minX > x1 || maxY < y0 || minY > y1) continue;\n\n polygonStart.push(ringStart.length);\n for (let ring = first; ring < end; ring++) {\n ringStart.push(points.length / 2);\n for (let k = rings[ring] ?? 0; k < (rings[ring + 1] ?? 0); k++) {\n points.push(\n (((merc[k * 2] ?? 0) + turn - x0) / (x1 - x0)) * width,\n (((merc[k * 2 + 1] ?? 0) - y0) / (y1 - y0)) * height,\n );\n }\n }\n }\n }\n ringStart.push(points.length / 2);\n polygonStart.push(ringStart.length - 1);\n\n return streetFlows(\n {\n points: Float64Array.from(points),\n ringStart: Uint32Array.from(ringStart),\n polygonStart: Uint32Array.from(polygonStart),\n },\n width,\n height,\n iterations,\n module,\n );\n};\n",
|
|
32
|
-
"/**\n * Worker of the vector basemaps: fetches and decodes vector tiles (kept for the tiles that share them), draws their\n * fills, lines and circles with a MapLibre style into images (Canvas 2D, off the main thread) for the raster pool,\n * with the style's raster layers under them, and lists the label candidates of the style's symbol layers (their texts\n * and icons) for the page to shape and place. Extrusions are drawn flat, as fills. Or it cuts the fills, lines and\n * buildings of a tile into geometry for the engine to draw as such (`vectors`), with their style per feature (a\n * building's color, height and base height). It also decodes the\n * altitudes of PNG relief tiles and draws the rasters reprojected from other grids (planned by the page), for the\n * map's other layers.\n *\n * A raster tile of level z covers 256 CSS pixels at map zoom z - 1 (MapLibre's 512 px convention): it is drawn from\n * the vector tile of level z - 1 (or the deepest one the source has), with the style at that zoom.\n *\n * This module answers the page's messages (typed in `./basemap/protocol.ts`), each work run by its job (`jobs`); the\n * jobs are in `./basemap/`: the state they share (`tiles.ts`), the images (`raster.ts`), the labels (`labels.ts`), the\n * geometry (`geometry.ts`), the trees, lamps and furniture (`trees.ts`, `lamps.ts`, `furniture.ts`), the streets' wind\n * (`street.ts`).\n */\n\nimport { resampler } from '../basemap/resample.ts';\nimport { fetchHeights, type Surface } from '../basemap/terrain.ts';\nimport { vectorKind } from '../basemap/vectorstyle.ts';\nimport { decodeGrids } from '../grid-module.ts';\nimport { fetchOk } from '../util/fetch.ts';\nimport { setHeaderRules, withHeaders } from '../util/requests.ts';\nimport { furniture } from './basemap/furniture.ts';\nimport { polygons, tess, tessellate, tessellator, tileStyles, tileVectors } from './basemap/geometry.ts';\nimport { labels } from './basemap/labels.ts';\nimport { lamps } from './basemap/lamps.ts';\nimport type {\n BasemapReply,\n BasemapRequest,\n BasemapResponse,\n BasemapWork,\n TileVectors,\n WorkOf,\n} from './basemap/protocol.ts';\nimport { render } from './basemap/raster.ts';\nimport { streetFlowOf } from './basemap/street.ts';\nimport { aborted, active, cache, cacheShare, type Renderer, renderers } from './basemap/tiles.ts';\nimport { trees } from './basemap/trees.ts';\n\n/** The signals of the relief and reprojection requests in progress, aborted with them */\nconst controllers = new Map<number, AbortController>();\n\n/** Where this worker reads the colors of the relief tiles back */\nconst heightsSurface: Surface = {};\n\n/** The reprojected rasters' source images this worker keeps, shared by every source */\nconst reprojection = resampler();\n\n// The worker's scope: the tests compile this file with Bun's types, whose `postMessage` takes Bun's transferables\n// (not an `ImageBitmap`)\nconst post = (message: BasemapResponse, transfer: Transferable[] = []) =>\n (self as unknown as Worker).postMessage(message, transfer);\n\n/** An answer and the buffers it hands over; undefined: nothing there (`missing`) */\ntype Answer = [reply: BasemapReply, transfer: Transferable[]] | undefined;\n\n/** The works of a renderer's tiles (the others decode a file or a tile of another layer: `decodeTile`) */\ntype TileWork = Exclude<BasemapWork, { type: 'heights' | 'reproject' | 'grids' }>['type'];\n\n/** The buffers of a tile's geometry, and of its mesh (handed over, not copied) */\nconst vectorBuffers = ({ fills, lines, circles, styles, sublayer, mesh }: TileVectors): Transferable[] =>\n [\n fills.points,\n fills.ringStart,\n fills.polygonStart,\n fills.feature,\n fills.fillStart,\n fills.roofs,\n fills.roofHeights,\n fills.roofOutlines,\n fills.roofOutlineStart,\n lines.points,\n lines.start,\n lines.feature,\n lines.lineStart,\n circles?.points,\n circles?.feature,\n circles?.circleStart,\n styles,\n sublayer,\n mesh?.vertices,\n mesh?.indices,\n mesh?.fillRanges,\n mesh?.pieces,\n mesh?.lineTable,\n mesh?.lineRanges,\n mesh?.blocks,\n mesh?.blockIndices,\n mesh?.blockRanges,\n mesh?.bounds,\n ].flatMap((a) => (a ? [a.buffer] : []));\n\n/** The job of each work on a renderer's tiles: its answer */\nconst jobs: { [T in TileWork]: (r: Renderer, work: WorkOf<T>) => Promise<Answer> } = {\n render: async (r, work) => {\n const image = await render(r, work);\n\n return image ? [{ image }, [image]] : undefined;\n },\n labels: async (r, work) => [{ labels: await labels(r, work) }, []],\n polygons: async (r, work) => {\n const tile = await polygons(r, work);\n\n if (!tile) return undefined;\n\n const { points, ringStart, polygonStart, feature } = tile.arrays;\n\n return [{ polygons: tile }, [points.buffer, ringStart.buffer, polygonStart.buffer, feature.buffer]];\n },\n trees: async (r, work) => {\n const found = await trees(r, work);\n\n return found && [{ trees: found }, [found.buffer]];\n },\n furniture: async (r, work) => {\n const found = await furniture(r, work);\n\n return found && [{ furniture: found }, [found.buffer]];\n },\n lamps: async (r, work) => {\n const found = await lamps(r, work);\n\n return found && [{ lamps: found }, [found.buffer]];\n },\n street: async (r, work) => {\n const street = await streetFlowOf(r, work);\n\n return [{ street }, [street.eastU, street.eastV, street.northU, street.northV].map((a) => a.buffer)];\n },\n vectors: async (r, work) => {\n // The paint changed: the styles alone, of the same features\n if (work.styles) {\n const styles = await tileStyles(r, work);\n\n return styles && [styles, [styles.styles.buffer]];\n }\n\n const cut = await tileVectors(r, work);\n\n if (!cut) return undefined;\n\n // Made ready for the GPU here when the tessellation module loads (else by the engine, on the main thread)\n const raised = Uint8Array.from(r.layers, (l) => (vectorKind(l) === 'extrusion' ? 1 : 0));\n const mesh = (await tessellator()) ? tessellate(cut, raised, work.prism === true) : undefined;\n const vectors = mesh ? { ...cut, mesh } : cut;\n\n return [{ vectors }, vectorBuffers(vectors)];\n },\n};\n\n/** Runs the job of a work of type `type` */\nconst run = <T extends TileWork>(r: Renderer, type: T, work: WorkOf<T>): Promise<Answer> => jobs[type](r, work);\n\nself.onmessage = async ({ data }: MessageEvent<BasemapRequest>) => {\n if (data.type === 'headers') {\n setHeaderRules(data.rules);\n\n return;\n }\n if (data.type === 'tess') {\n tess.url = data.url;\n\n return;\n }\n if (data.type === 'init') {\n if (data.workers !== undefined) cache.capacity = cacheShare(data.workers);\n renderers.set(data.key, {\n tiles: data.tiles,\n maxzoom: data.maxzoom,\n layers: data.layers,\n rasters: data.rasters ?? {},\n sprites: data.sprites ?? [],\n patterns: new Map(),\n });\n\n return;\n }\n if (data.type === 'drop') {\n // Its copy of the sprites\n renderers.get(data.key)?.sprites.forEach((sprite) => {\n sprite.image.close();\n });\n renderers.delete(data.key);\n\n return;\n }\n if (data.type === 'abort') {\n // An abort that arrives after the answer is ignored\n if (active.has(data.id)) aborted.add(data.id);\n controllers.get(data.id)?.abort();\n\n return;\n }\n if (data.type === 'heights' || data.type === 'reproject' || data.type === 'grids') {\n await decodeTile(data);\n\n return;\n }\n active.add(data.id);\n\n try {\n const r = renderers.get(data.key);\n\n if (!r) throw new Error(`isard: no renderer ${data.key}`);\n\n const answer = await run(r, data.type, data);\n\n if (answer) post({ id: data.id, ...answer[0] }, answer[1]);\n else post({ id: data.id, missing: true });\n } catch (error) {\n post({ id: data.id, error: String(error) });\n } finally {\n active.delete(data.id);\n aborted.delete(data.id);\n }\n};\n\n/** A file's bytes, with the page's request headers */\nconst fetchBytes = async (url: string, signal: AbortSignal): Promise<ArrayBuffer> => {\n const response = await fetchOk(url, withHeaders(url, { signal }));\n\n return response.arrayBuffer();\n};\n\n/** A tile of another layer: the altitudes of a relief tile, or a reprojected raster tile; or a file's grids */\nconst decodeTile = async (data: Extract<BasemapWork, { type: 'heights' | 'reproject' | 'grids' }> & { id: number }) => {\n const controller = new AbortController();\n\n controllers.set(data.id, controller);\n try {\n if (data.type === 'grids') {\n const { module, url, bytes } = data;\n const file = bytes ?? (url ? await fetchBytes(url, controller.signal) : new ArrayBuffer(0));\n const { grids, values } = await decodeGrids(new Uint8Array(file), module);\n\n post(\n { id: data.id, grids, values },\n values.map((v) => v.buffer),\n );\n } else if (data.type === 'heights') {\n const heights = await fetchHeights(data.url, data.encoding, data.floor, controller.signal, heightsSurface);\n\n if (heights) post({ id: data.id, heights }, [heights.buffer]);\n else post({ id: data.id, missing: true });\n } else {\n reprojection.cache.capacity = data.cached;\n\n const image = await reprojection.draw(data.job, controller.signal);\n\n if (image) post({ id: data.id, image }, [image]);\n else post({ id: data.id, missing: true });\n }\n } catch (error) {\n post({ id: data.id, error: String(error) });\n } finally {\n controllers.delete(data.id);\n }\n};\n"
|
|
32
|
+
"/**\n * Worker of the vector basemaps: fetches and decodes vector tiles (kept for the tiles that share them), draws their\n * fills, lines and circles with a MapLibre style into images (Canvas 2D, off the main thread) for the raster pool,\n * with the style's raster layers under them, and lists the label candidates of the style's symbol layers (their texts\n * and icons) for the page to shape and place. Extrusions are drawn flat, as fills. Or it cuts the fills, lines and\n * buildings of a tile into geometry for the engine to draw as such (`vectors`), with their style per feature (a\n * building's color, height and base height). It also decodes the\n * altitudes of PNG relief tiles and draws the rasters reprojected from other grids (planned by the page), for the\n * map's other layers.\n *\n * A raster tile of level z covers 256 CSS pixels at map zoom z - 1 (MapLibre's 512 px convention): it is drawn from\n * the vector tile of level z - 1 (or the deepest one the source has), with the style at that zoom.\n *\n * This module answers the page's messages (typed in `./basemap/protocol.ts`), each work run by its job (`jobs`); the\n * jobs are in `./basemap/`: the state they share (`tiles.ts`), the images (`raster.ts`), the labels (`labels.ts`), the\n * geometry (`geometry.ts`), the trees, lamps and furniture (`trees.ts`, `lamps.ts`, `furniture.ts`), the streets' wind\n * (`street.ts`).\n */\n\nimport { resampler } from '../basemap/resample.ts';\nimport { fetchHeights, type Surface } from '../basemap/terrain.ts';\nimport { vectorKind } from '../basemap/vectorstyle.ts';\nimport { decodeGrids } from '../grid-module.ts';\nimport { fetchOk } from '../util/fetch.ts';\nimport { setHeaderRules, withHeaders } from '../util/requests.ts';\nimport { furniture } from './basemap/furniture.ts';\nimport { polygons, tess, tessellate, tessellator, tileStyles, tileVectors } from './basemap/geometry.ts';\nimport { labels } from './basemap/labels.ts';\nimport { lamps } from './basemap/lamps.ts';\nimport type {\n BasemapReply,\n BasemapRequest,\n BasemapResponse,\n BasemapWork,\n TileVectors,\n WorkOf,\n} from './basemap/protocol.ts';\nimport { render } from './basemap/raster.ts';\nimport { streetFlowOf } from './basemap/street.ts';\nimport { aborted, active, cache, cacheShare, type Renderer, renderers } from './basemap/tiles.ts';\nimport { trees } from './basemap/trees.ts';\n\n/** The signals of the relief and reprojection requests in progress, aborted with them */\nconst controllers = new Map<number, AbortController>();\n\n/** Where this worker reads the colors of the relief tiles back */\nconst heightsSurface: Surface = {};\n\n/** The reprojected rasters' source images this worker keeps, shared by every source */\nconst reprojection = resampler();\n\n// The worker's scope: the tests compile this file with Bun's types, whose `postMessage` takes Bun's transferables\n// (not an `ImageBitmap`)\nconst post = (message: BasemapResponse, transfer: Transferable[] = []) =>\n (self as unknown as Worker).postMessage(message, transfer);\n\n/** An answer and the buffers it hands over; undefined: nothing there (`missing`) */\ntype Answer = [reply: BasemapReply, transfer: Transferable[]] | undefined;\n\n/** The works of a renderer's tiles (the others decode a file or a tile of another layer: `decodeTile`) */\ntype TileWork = Exclude<BasemapWork, { type: 'heights' | 'reproject' | 'grids' }>['type'];\n\n/** The buffers of a tile's geometry, and of its mesh (handed over, not copied) */\nconst vectorBuffers = ({ fills, lines, circles, styles, sublayer, mesh }: TileVectors): Transferable[] =>\n [\n fills.points,\n fills.ringStart,\n fills.polygonStart,\n fills.feature,\n fills.fillStart,\n fills.roofs,\n fills.roofHeights,\n fills.roofOutlines,\n fills.roofOutlineStart,\n lines.points,\n lines.start,\n lines.feature,\n lines.lineStart,\n circles?.points,\n circles?.feature,\n circles?.circleStart,\n styles,\n sublayer,\n mesh?.vertices,\n mesh?.indices,\n mesh?.fillRanges,\n mesh?.pieces,\n mesh?.lineTable,\n mesh?.lineRanges,\n mesh?.blocks,\n mesh?.blockIndices,\n mesh?.blockRanges,\n mesh?.bounds,\n ].flatMap((a) => (a ? [a.buffer] : []));\n\n/** The job of each work on a renderer's tiles: its answer */\nconst jobs: { [T in TileWork]: (r: Renderer, work: WorkOf<T>) => Promise<Answer> } = {\n render: async (r, work) => {\n const image = await render(r, work);\n\n return image ? [{ image }, [image]] : undefined;\n },\n labels: async (r, work) => [{ labels: await labels(r, work) }, []],\n polygons: async (r, work) => {\n const tile = await polygons(r, work);\n\n if (!tile) return undefined;\n\n const { points, ringStart, polygonStart, feature } = tile.arrays;\n\n return [{ polygons: tile }, [points.buffer, ringStart.buffer, polygonStart.buffer, feature.buffer]];\n },\n trees: async (r, work) => {\n const found = await trees(r, work);\n\n return found && [{ trees: found }, [found.buffer]];\n },\n furniture: async (r, work) => {\n const found = await furniture(r, work);\n\n return found && [{ furniture: found }, [found.buffer]];\n },\n lamps: async (r, work) => {\n const found = await lamps(r, work);\n\n return found && [{ lamps: found }, [found.buffer]];\n },\n street: async (r, work) => {\n const street = await streetFlowOf(r, work);\n\n return [{ street }, [street.eastU, street.eastV, street.northU, street.northV].map((a) => a.buffer)];\n },\n vectors: async (r, work) => {\n // The paint changed: the styles alone, of the same features\n if (work.styles) {\n const styles = await tileStyles(r, work);\n\n return styles && [styles, [styles.styles.buffer]];\n }\n\n const cut = await tileVectors(r, work);\n\n if (!cut) return undefined;\n\n // Made ready for the GPU here when the tessellation module loads (else by the engine, on the main thread)\n const raised = Uint8Array.from(r.layers, (l) => (vectorKind(l) === 'extrusion' ? 1 : 0));\n const mesh = (await tessellator()) ? tessellate(cut, raised, work.prism === true) : undefined;\n const vectors = mesh ? { ...cut, mesh } : cut;\n\n return [{ vectors }, vectorBuffers(vectors)];\n },\n};\n\n/** Runs the job of a work of type `type` */\nconst run = <T extends TileWork>(r: Renderer, type: T, work: WorkOf<T>): Promise<Answer> => jobs[type](r, work);\n\nself.onmessage = async ({ data }: MessageEvent<BasemapRequest>) => {\n if (data.type === 'headers') {\n setHeaderRules(data.rules);\n\n return;\n }\n if (data.type === 'tess') {\n tess.url = data.url;\n\n return;\n }\n if (data.type === 'init') {\n if (data.workers !== undefined) cache.capacity = cacheShare(data.workers, data.cached);\n renderers.set(data.key, {\n tiles: data.tiles,\n maxzoom: data.maxzoom,\n layers: data.layers,\n rasters: data.rasters ?? {},\n sprites: data.sprites ?? [],\n patterns: new Map(),\n });\n\n return;\n }\n if (data.type === 'drop') {\n // Its copy of the sprites\n renderers.get(data.key)?.sprites.forEach((sprite) => {\n sprite.image.close();\n });\n renderers.delete(data.key);\n\n return;\n }\n if (data.type === 'abort') {\n // An abort that arrives after the answer is ignored\n if (active.has(data.id)) aborted.add(data.id);\n controllers.get(data.id)?.abort();\n\n return;\n }\n if (data.type === 'heights' || data.type === 'reproject' || data.type === 'grids') {\n await decodeTile(data);\n\n return;\n }\n active.add(data.id);\n\n try {\n const r = renderers.get(data.key);\n\n if (!r) throw new Error(`isard: no renderer ${data.key}`);\n\n const answer = await run(r, data.type, data);\n\n if (answer) post({ id: data.id, ...answer[0] }, answer[1]);\n else post({ id: data.id, missing: true });\n } catch (error) {\n post({ id: data.id, error: String(error) });\n } finally {\n active.delete(data.id);\n aborted.delete(data.id);\n }\n};\n\n/** A file's bytes, with the page's request headers */\nconst fetchBytes = async (url: string, signal: AbortSignal): Promise<ArrayBuffer> => {\n const response = await fetchOk(url, withHeaders(url, { signal }));\n\n return response.arrayBuffer();\n};\n\n/** A tile of another layer: the altitudes of a relief tile, or a reprojected raster tile; or a file's grids */\nconst decodeTile = async (data: Extract<BasemapWork, { type: 'heights' | 'reproject' | 'grids' }> & { id: number }) => {\n const controller = new AbortController();\n\n controllers.set(data.id, controller);\n try {\n if (data.type === 'grids') {\n const { module, url, bytes } = data;\n const file = bytes ?? (url ? await fetchBytes(url, controller.signal) : new ArrayBuffer(0));\n const { grids, values } = await decodeGrids(new Uint8Array(file), module);\n\n post(\n { id: data.id, grids, values },\n values.map((v) => v.buffer),\n );\n } else if (data.type === 'heights') {\n const heights = await fetchHeights(data.url, data.encoding, data.floor, controller.signal, heightsSurface);\n\n if (heights) post({ id: data.id, heights }, [heights.buffer]);\n else post({ id: data.id, missing: true });\n } else {\n reprojection.cache.capacity = data.cached;\n\n const image = await reprojection.draw(data.job, controller.signal);\n\n if (image) post({ id: data.id, image }, [image]);\n else post({ id: data.id, missing: true });\n }\n } catch (error) {\n post({ id: data.id, error: String(error) });\n } finally {\n controllers.delete(data.id);\n }\n};\n"
|
|
33
33
|
],
|
|
34
|
-
"mappings": "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",
|
|
35
|
-
"debugId": "
|
|
34
|
+
"mappings": "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",
|
|
35
|
+
"debugId": "C9CE549B5C08D87A64756E2164756E21",
|
|
36
36
|
"names": []
|
|
37
37
|
}
|