@react-x11/components 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +95 -34
- package/dist/charts/node.d.ts +1 -1
- package/dist/charts/node.d.ts.map +1 -1
- package/dist/charts/node.js +6 -2
- package/dist/charts/node.js.map +1 -1
- package/dist/embed/client.d.ts +48 -3
- package/dist/embed/client.d.ts.map +1 -1
- package/dist/embed/client.js +79 -5
- package/dist/embed/client.js.map +1 -1
- package/dist/embed/index.d.ts +1 -1
- package/dist/embed/index.d.ts.map +1 -1
- package/dist/embed/index.js +1 -1
- package/dist/embed/index.js.map +1 -1
- package/dist/html/node.d.ts +3 -1
- package/dist/html/node.d.ts.map +1 -1
- package/dist/html/node.js +7 -5
- package/dist/html/node.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/{markdown → internal/markdown}/ast.d.ts +12 -0
- package/dist/internal/markdown/ast.d.ts.map +1 -0
- package/dist/internal/markdown/ast.js +22 -0
- package/dist/internal/markdown/ast.js.map +1 -0
- package/dist/internal/markdown/parse.d.ts.map +1 -0
- package/dist/{markdown → internal/markdown}/parse.js +112 -22
- package/dist/internal/markdown/parse.js.map +1 -0
- package/dist/internal/markdown/stringify.d.ts +4 -0
- package/dist/internal/markdown/stringify.d.ts.map +1 -0
- package/dist/internal/markdown/stringify.js +684 -0
- package/dist/internal/markdown/stringify.js.map +1 -0
- package/dist/internal/markdown/tags.d.ts.map +1 -0
- package/dist/internal/markdown/tags.js.map +1 -0
- package/dist/internal/scroll.d.ts +3 -2
- package/dist/internal/scroll.d.ts.map +1 -1
- package/dist/internal/scroll.js +1 -0
- package/dist/internal/scroll.js.map +1 -1
- package/dist/maps/anchors.d.ts +98 -0
- package/dist/maps/anchors.d.ts.map +1 -0
- package/dist/maps/anchors.js +531 -0
- package/dist/maps/anchors.js.map +1 -0
- package/dist/maps/controller.d.ts +283 -0
- package/dist/maps/controller.d.ts.map +1 -0
- package/dist/maps/controller.js +743 -0
- package/dist/maps/controller.js.map +1 -0
- package/dist/maps/gl/buckets.d.ts +95 -0
- package/dist/maps/gl/buckets.d.ts.map +1 -0
- package/dist/maps/gl/buckets.js +362 -0
- package/dist/maps/gl/buckets.js.map +1 -0
- package/dist/maps/gl/build-worker.d.ts +13 -0
- package/dist/maps/gl/build-worker.d.ts.map +1 -0
- package/dist/maps/gl/build-worker.js +44 -0
- package/dist/maps/gl/build-worker.js.map +1 -0
- package/dist/maps/gl/color.d.ts +8 -0
- package/dist/maps/gl/color.d.ts.map +1 -0
- package/dist/maps/gl/color.js +57 -0
- package/dist/maps/gl/color.js.map +1 -0
- package/dist/maps/gl/cover.d.ts +51 -0
- package/dist/maps/gl/cover.d.ts.map +1 -0
- package/dist/maps/gl/cover.js +124 -0
- package/dist/maps/gl/cover.js.map +1 -0
- package/dist/maps/gl/index.d.ts +3 -0
- package/dist/maps/gl/index.d.ts.map +1 -0
- package/dist/maps/gl/index.js +20 -0
- package/dist/maps/gl/index.js.map +1 -0
- package/dist/maps/gl/markers.d.ts +28 -0
- package/dist/maps/gl/markers.d.ts.map +1 -0
- package/dist/maps/gl/markers.js +60 -0
- package/dist/maps/gl/markers.js.map +1 -0
- package/dist/maps/gl/overlays.d.ts +68 -0
- package/dist/maps/gl/overlays.d.ts.map +1 -0
- package/dist/maps/gl/overlays.js +300 -0
- package/dist/maps/gl/overlays.js.map +1 -0
- package/dist/maps/gl/pane.d.ts +12 -0
- package/dist/maps/gl/pane.d.ts.map +1 -0
- package/dist/maps/gl/pane.js +37 -0
- package/dist/maps/gl/pane.js.map +1 -0
- package/dist/maps/gl/placement.d.ts +111 -0
- package/dist/maps/gl/placement.d.ts.map +1 -0
- package/dist/maps/gl/placement.js +567 -0
- package/dist/maps/gl/placement.js.map +1 -0
- package/dist/maps/gl/renderer.d.ts +352 -0
- package/dist/maps/gl/renderer.d.ts.map +1 -0
- package/dist/maps/gl/renderer.js +1127 -0
- package/dist/maps/gl/renderer.js.map +1 -0
- package/dist/maps/gl/shaders.d.ts +120 -0
- package/dist/maps/gl/shaders.d.ts.map +1 -0
- package/dist/maps/gl/shaders.js +451 -0
- package/dist/maps/gl/shaders.js.map +1 -0
- package/dist/maps/gl/store.d.ts +115 -0
- package/dist/maps/gl/store.d.ts.map +1 -0
- package/dist/maps/gl/store.js +469 -0
- package/dist/maps/gl/store.js.map +1 -0
- package/dist/maps/gl/text.d.ts +154 -0
- package/dist/maps/gl/text.d.ts.map +1 -0
- package/dist/maps/gl/text.js +382 -0
- package/dist/maps/gl/text.js.map +1 -0
- package/dist/maps/gl/view.d.ts +54 -0
- package/dist/maps/gl/view.d.ts.map +1 -0
- package/dist/maps/gl/view.js +974 -0
- package/dist/maps/gl/view.js.map +1 -0
- package/dist/maps/index.d.ts +1 -1
- package/dist/maps/index.d.ts.map +1 -1
- package/dist/maps/index.js +216 -52
- package/dist/maps/index.js.map +1 -1
- package/dist/maps/labels.d.ts +37 -16
- package/dist/maps/labels.d.ts.map +1 -1
- package/dist/maps/labels.js +188 -119
- package/dist/maps/labels.js.map +1 -1
- package/dist/maps/node.d.ts +162 -56
- package/dist/maps/node.d.ts.map +1 -1
- package/dist/maps/node.js +607 -515
- package/dist/maps/node.js.map +1 -1
- package/dist/maps/overlay.d.ts +72 -9
- package/dist/maps/overlay.d.ts.map +1 -1
- package/dist/maps/overlay.js +108 -28
- package/dist/maps/overlay.js.map +1 -1
- package/dist/maps/paint.d.ts +3 -0
- package/dist/maps/paint.d.ts.map +1 -1
- package/dist/maps/paint.js.map +1 -1
- package/dist/maps/proj.d.ts +14 -0
- package/dist/maps/proj.d.ts.map +1 -1
- package/dist/maps/proj.js +28 -0
- package/dist/maps/proj.js.map +1 -1
- package/dist/maps/renderer.d.ts +69 -0
- package/dist/maps/renderer.d.ts.map +1 -0
- package/dist/maps/renderer.js +66 -0
- package/dist/maps/renderer.js.map +1 -0
- package/dist/maps/sources.d.ts +25 -3
- package/dist/maps/sources.d.ts.map +1 -1
- package/dist/maps/sources.js +17 -0
- package/dist/maps/sources.js.map +1 -1
- package/dist/maps/theme.d.ts +19 -0
- package/dist/maps/theme.d.ts.map +1 -0
- package/dist/maps/theme.js +44 -0
- package/dist/maps/theme.js.map +1 -0
- package/dist/maps/tiles.d.ts +117 -17
- package/dist/maps/tiles.d.ts.map +1 -1
- package/dist/maps/tiles.js +163 -30
- package/dist/maps/tiles.js.map +1 -1
- package/dist/maps/types.d.ts +188 -20
- package/dist/maps/types.d.ts.map +1 -1
- package/dist/markdown/expressions.d.ts +1 -1
- package/dist/markdown/expressions.d.ts.map +1 -1
- package/dist/markdown/expressions.js.map +1 -1
- package/dist/markdown/index.d.ts +7 -6
- package/dist/markdown/index.d.ts.map +1 -1
- package/dist/markdown/index.js +9 -7
- package/dist/markdown/index.js.map +1 -1
- package/dist/markdown/spans.d.ts +1 -1
- package/dist/markdown/spans.d.ts.map +1 -1
- package/dist/media-player/index.d.ts +11 -3
- package/dist/media-player/index.d.ts.map +1 -1
- package/dist/media-player/index.js +13 -2
- package/dist/media-player/index.js.map +1 -1
- package/dist/rich-text-editor/clipboard.d.ts +23 -0
- package/dist/rich-text-editor/clipboard.d.ts.map +1 -0
- package/dist/rich-text-editor/clipboard.js +307 -0
- package/dist/rich-text-editor/clipboard.js.map +1 -0
- package/dist/rich-text-editor/collab.d.ts +32 -0
- package/dist/rich-text-editor/collab.d.ts.map +1 -0
- package/dist/rich-text-editor/collab.js +55 -0
- package/dist/rich-text-editor/collab.js.map +1 -0
- package/dist/rich-text-editor/commands.d.ts +50 -0
- package/dist/rich-text-editor/commands.d.ts.map +1 -0
- package/dist/rich-text-editor/commands.js +376 -0
- package/dist/rich-text-editor/commands.js.map +1 -0
- package/dist/rich-text-editor/drag.d.ts +68 -0
- package/dist/rich-text-editor/drag.d.ts.map +1 -0
- package/dist/rich-text-editor/drag.js +148 -0
- package/dist/rich-text-editor/drag.js.map +1 -0
- package/dist/rich-text-editor/html.d.ts +145 -0
- package/dist/rich-text-editor/html.d.ts.map +1 -0
- package/dist/rich-text-editor/html.js +516 -0
- package/dist/rich-text-editor/html.js.map +1 -0
- package/dist/rich-text-editor/index.d.ts +263 -0
- package/dist/rich-text-editor/index.d.ts.map +1 -0
- package/dist/rich-text-editor/index.js +822 -0
- package/dist/rich-text-editor/index.js.map +1 -0
- package/dist/rich-text-editor/inline.d.ts +94 -0
- package/dist/rich-text-editor/inline.d.ts.map +1 -0
- package/dist/rich-text-editor/inline.js +252 -0
- package/dist/rich-text-editor/inline.js.map +1 -0
- package/dist/rich-text-editor/keymap.d.ts +71 -0
- package/dist/rich-text-editor/keymap.d.ts.map +1 -0
- package/dist/rich-text-editor/keymap.js +393 -0
- package/dist/rich-text-editor/keymap.js.map +1 -0
- package/dist/rich-text-editor/keys.d.ts +29 -0
- package/dist/rich-text-editor/keys.d.ts.map +1 -0
- package/dist/rich-text-editor/keys.js +93 -0
- package/dist/rich-text-editor/keys.js.map +1 -0
- package/dist/rich-text-editor/look.d.ts +71 -0
- package/dist/rich-text-editor/look.d.ts.map +1 -0
- package/dist/rich-text-editor/look.js +342 -0
- package/dist/rich-text-editor/look.js.map +1 -0
- package/dist/rich-text-editor/markdown.d.ts +18 -0
- package/dist/rich-text-editor/markdown.d.ts.map +1 -0
- package/dist/rich-text-editor/markdown.js +496 -0
- package/dist/rich-text-editor/markdown.js.map +1 -0
- package/dist/rich-text-editor/nodes.d.ts +135 -0
- package/dist/rich-text-editor/nodes.d.ts.map +1 -0
- package/dist/rich-text-editor/nodes.js +397 -0
- package/dist/rich-text-editor/nodes.js.map +1 -0
- package/dist/rich-text-editor/render.d.ts +68 -0
- package/dist/rich-text-editor/render.d.ts.map +1 -0
- package/dist/rich-text-editor/render.js +500 -0
- package/dist/rich-text-editor/render.js.map +1 -0
- package/dist/rich-text-editor/schema.d.ts +16 -0
- package/dist/rich-text-editor/schema.d.ts.map +1 -0
- package/dist/rich-text-editor/schema.js +386 -0
- package/dist/rich-text-editor/schema.js.map +1 -0
- package/dist/rich-text-editor/store.d.ts +11 -0
- package/dist/rich-text-editor/store.d.ts.map +1 -0
- package/dist/rich-text-editor/store.js +43 -0
- package/dist/rich-text-editor/store.js.map +1 -0
- package/dist/rich-text-editor/suggest.d.ts +127 -0
- package/dist/rich-text-editor/suggest.d.ts.map +1 -0
- package/dist/rich-text-editor/suggest.js +0 -0
- package/dist/rich-text-editor/suggest.js.map +1 -0
- package/dist/rich-text-editor/tables.d.ts +41 -0
- package/dist/rich-text-editor/tables.d.ts.map +1 -0
- package/dist/rich-text-editor/tables.js +204 -0
- package/dist/rich-text-editor/tables.js.map +1 -0
- package/dist/rich-text-editor/toolbar.d.ts +58 -0
- package/dist/rich-text-editor/toolbar.d.ts.map +1 -0
- package/dist/rich-text-editor/toolbar.js +548 -0
- package/dist/rich-text-editor/toolbar.js.map +1 -0
- package/dist/rich-text-editor/view.d.ts +368 -0
- package/dist/rich-text-editor/view.d.ts.map +1 -0
- package/dist/rich-text-editor/view.js +1968 -0
- package/dist/rich-text-editor/view.js.map +1 -0
- package/dist/rich-text-editor/virtual.d.ts +54 -0
- package/dist/rich-text-editor/virtual.d.ts.map +1 -0
- package/dist/rich-text-editor/virtual.js +262 -0
- package/dist/rich-text-editor/virtual.js.map +1 -0
- package/dist/richtext/node.d.ts +25 -2
- package/dist/richtext/node.d.ts.map +1 -1
- package/dist/richtext/node.js +46 -24
- package/dist/richtext/node.js.map +1 -1
- package/dist/terminal/backends.d.ts +4 -1
- package/dist/terminal/backends.d.ts.map +1 -1
- package/dist/terminal/backends.js.map +1 -1
- package/dist/terminal/index.d.ts +18 -7
- package/dist/terminal/index.d.ts.map +1 -1
- package/dist/terminal/index.js +28 -11
- package/dist/terminal/index.js.map +1 -1
- package/package.json +23 -4
- package/src/charts/node.ts +6 -2
- package/src/embed/client.ts +102 -8
- package/src/embed/index.ts +2 -0
- package/src/html/node.ts +7 -5
- package/src/index.ts +2 -0
- package/src/{markdown → internal/markdown}/ast.ts +24 -7
- package/src/{markdown → internal/markdown}/parse.ts +134 -24
- package/src/internal/markdown/stringify.ts +772 -0
- package/src/internal/scroll.ts +5 -3
- package/src/maps/anchors.ts +607 -0
- package/src/maps/controller.ts +999 -0
- package/src/maps/gl/buckets.ts +457 -0
- package/src/maps/gl/build-worker.ts +55 -0
- package/src/maps/gl/color.ts +62 -0
- package/src/maps/gl/cover.ts +170 -0
- package/src/maps/gl/index.ts +23 -0
- package/src/maps/gl/markers.ts +83 -0
- package/src/maps/gl/overlays.ts +379 -0
- package/src/maps/gl/pane.ts +42 -0
- package/src/maps/gl/placement.ts +816 -0
- package/src/maps/gl/renderer.ts +1576 -0
- package/src/maps/gl/shaders.ts +486 -0
- package/src/maps/gl/store.ts +566 -0
- package/src/maps/gl/text.ts +495 -0
- package/src/maps/gl/view.ts +1224 -0
- package/src/maps/index.ts +270 -81
- package/src/maps/labels.ts +214 -121
- package/src/maps/node.ts +763 -629
- package/src/maps/overlay.ts +148 -43
- package/src/maps/paint.ts +3 -0
- package/src/maps/proj.ts +31 -0
- package/src/maps/renderer.ts +155 -0
- package/src/maps/sources.ts +38 -3
- package/src/maps/theme.ts +51 -0
- package/src/maps/tiles.ts +191 -33
- package/src/maps/types.ts +188 -20
- package/src/markdown/expressions.ts +5 -1
- package/src/markdown/index.ts +14 -11
- package/src/markdown/spans.ts +1 -1
- package/src/media-player/index.ts +18 -4
- package/src/rich-text-editor/clipboard.ts +439 -0
- package/src/rich-text-editor/collab.ts +91 -0
- package/src/rich-text-editor/commands.ts +448 -0
- package/src/rich-text-editor/dom-globals.d.ts +23 -0
- package/src/rich-text-editor/drag.ts +211 -0
- package/src/rich-text-editor/html.ts +619 -0
- package/src/rich-text-editor/index.ts +1331 -0
- package/src/rich-text-editor/inline.ts +345 -0
- package/src/rich-text-editor/keymap.ts +510 -0
- package/src/rich-text-editor/keys.ts +119 -0
- package/src/rich-text-editor/look.ts +427 -0
- package/src/rich-text-editor/markdown.ts +653 -0
- package/src/rich-text-editor/nodes.ts +497 -0
- package/src/rich-text-editor/render.ts +800 -0
- package/src/rich-text-editor/schema.ts +431 -0
- package/src/rich-text-editor/store.ts +39 -0
- package/src/rich-text-editor/suggest.ts +597 -0
- package/src/rich-text-editor/tables.ts +272 -0
- package/src/rich-text-editor/toolbar.ts +724 -0
- package/src/rich-text-editor/view.ts +2287 -0
- package/src/rich-text-editor/virtual.ts +347 -0
- package/src/richtext/node.ts +59 -30
- package/src/terminal/backends.ts +4 -1
- package/src/terminal/index.ts +43 -15
- package/dist/markdown/ast.d.ts.map +0 -1
- package/dist/markdown/ast.js +0 -17
- package/dist/markdown/ast.js.map +0 -1
- package/dist/markdown/parse.d.ts.map +0 -1
- package/dist/markdown/parse.js.map +0 -1
- package/dist/markdown/tags.d.ts.map +0 -1
- package/dist/markdown/tags.js.map +0 -1
- /package/dist/{markdown → internal/markdown}/parse.d.ts +0 -0
- /package/dist/{markdown → internal/markdown}/tags.d.ts +0 -0
- /package/dist/{markdown → internal/markdown}/tags.js +0 -0
- /package/src/{markdown → internal/markdown}/tags.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/maps/controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { VectorTile } from '../mvt.js';
|
|
2
|
+
import type { PreparedStyle } from '../paint.js';
|
|
3
|
+
import type { GlLabelData } from '../anchors.js';
|
|
4
|
+
/** Tile units across a tile, after normalisation. */
|
|
5
|
+
export declare const TILE_EXTENT = 4096;
|
|
6
|
+
/** The int16 that marks the end of a polyline or ring. Real coordinates are
|
|
7
|
+
* clamped to one above it. */
|
|
8
|
+
export declare const BREAK = -32768;
|
|
9
|
+
/** Bytes per record, in either stream. */
|
|
10
|
+
export declare const RECORD_BYTES = 8;
|
|
11
|
+
/** A `circle` layer's points are line-stream records too, one per point —
|
|
12
|
+
* a disc each — with a sentinel after them. */
|
|
13
|
+
export type DrawKind = 'fill' | 'line' | 'circle';
|
|
14
|
+
/** What one style layer draws from one tile. */
|
|
15
|
+
export interface LayerDraw {
|
|
16
|
+
/** Index into {@link PreparedStyle.layers}. */
|
|
17
|
+
layer: number;
|
|
18
|
+
kind: DrawKind;
|
|
19
|
+
/**
|
|
20
|
+
* `[firstRecord, recordCount]` pairs into the kind's stream. A range of
|
|
21
|
+
* `n` records is `n - 1` segment instances; the last record of every
|
|
22
|
+
* range is a {@link BREAK}, so the instance that would join a range to
|
|
23
|
+
* whatever follows it is a degenerate one.
|
|
24
|
+
*/
|
|
25
|
+
ranges: number[];
|
|
26
|
+
}
|
|
27
|
+
/** What building a tile's buckets cost and produced. */
|
|
28
|
+
export interface BucketStats {
|
|
29
|
+
features: number;
|
|
30
|
+
/** Records written to the line stream, sentinels included. */
|
|
31
|
+
lineRecords: number;
|
|
32
|
+
/** Records written to the fill stream, closing points and sentinels
|
|
33
|
+
* included. */
|
|
34
|
+
fillRecords: number;
|
|
35
|
+
/** Membership groups — distinct sets of style layers a feature belongs
|
|
36
|
+
* to. What decides how many draw ranges a layer needs. */
|
|
37
|
+
groups: number;
|
|
38
|
+
ms: number;
|
|
39
|
+
}
|
|
40
|
+
/** One tile, ready for upload. Plain typed arrays and a small draw list, so
|
|
41
|
+
* it can be built on a worker and transferred without a copy. */
|
|
42
|
+
export interface GlTileData {
|
|
43
|
+
/** The line stream: `lineRecords` records over one buffer. */
|
|
44
|
+
line: ArrayBuffer;
|
|
45
|
+
lineRecords: number;
|
|
46
|
+
/** The fill stream: `fillRecords` records. */
|
|
47
|
+
fill: ArrayBuffer;
|
|
48
|
+
fillRecords: number;
|
|
49
|
+
/** Indexed by style layer; a hole where this tile has nothing to draw. */
|
|
50
|
+
draws: (LayerDraw | undefined)[];
|
|
51
|
+
/** Where the tile's labels could go — see `../anchors.ts`. */
|
|
52
|
+
labels?: GlLabelData;
|
|
53
|
+
/** A raster tile's image — RGBA, not premultiplied, as a source decodes
|
|
54
|
+
* it — in place of streams: its own texture, and no style. */
|
|
55
|
+
raster?: {
|
|
56
|
+
width: number;
|
|
57
|
+
height: number;
|
|
58
|
+
pixels: Uint8Array;
|
|
59
|
+
};
|
|
60
|
+
stats: BucketStats;
|
|
61
|
+
}
|
|
62
|
+
/** A raster tile as the store keeps it: its image, and nothing to build. */
|
|
63
|
+
export declare function rasterTileData(width: number, height: number, pixels: Uint8Array): GlTileData;
|
|
64
|
+
/** A growable stream of 8-byte records, viewed both ways. */
|
|
65
|
+
export declare class Stream {
|
|
66
|
+
bytes: ArrayBuffer;
|
|
67
|
+
i16: Int16Array;
|
|
68
|
+
f32: Float32Array;
|
|
69
|
+
count: number;
|
|
70
|
+
constructor(records: number);
|
|
71
|
+
reserve(more: number): void;
|
|
72
|
+
/** The records written, trimmed to size — what is kept and uploaded. */
|
|
73
|
+
take(): ArrayBuffer;
|
|
74
|
+
}
|
|
75
|
+
/** A line stream's sentinel. The caller has reserved the record. */
|
|
76
|
+
export declare function pushBreak(line: Stream): void;
|
|
77
|
+
/** A fill stream's sentinel. The caller has reserved the record. */
|
|
78
|
+
export declare function pushFillBreak(fill: Stream): void;
|
|
79
|
+
/**
|
|
80
|
+
* Build a tile's buckets for a style.
|
|
81
|
+
*
|
|
82
|
+
* The style is walked in the same **runs** the retained painter uses —
|
|
83
|
+
* consecutive style layers over one source layer — and each run's features
|
|
84
|
+
* are read once. The new part is what happens to a feature's answer: every
|
|
85
|
+
* feature gets a *membership mask*, the set of the run's layers that select
|
|
86
|
+
* it, and features are written grouped by mask. A road network is fourteen
|
|
87
|
+
* style layers over `streets` whose casing and fill select exactly the same
|
|
88
|
+
* roads, so `motorway-casing` and `motorway` share one group and one copy of
|
|
89
|
+
* the geometry: two draws over the same records, with a different width and
|
|
90
|
+
* colour. Without the grouping every feature would be copied once per layer
|
|
91
|
+
* that draws it — twice for every road — and without it being contiguous
|
|
92
|
+
* a layer would be one draw per feature.
|
|
93
|
+
*/
|
|
94
|
+
export declare function buildTileBuckets(tile: VectorTile, prepared: PreparedStyle): GlTileData;
|
|
95
|
+
//# sourceMappingURL=buckets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buckets.d.ts","sourceRoot":"","sources":["../../../src/maps/gl/buckets.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAiB,UAAU,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,aAAa,CAAC;AAGhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,qDAAqD;AACrD,eAAO,MAAM,WAAW,OAAO,CAAC;AAEhC;+BAC+B;AAC/B,eAAO,MAAM,KAAK,SAAS,CAAC;AAE5B,0CAA0C;AAC1C,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B;gDACgD;AAChD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAElD,gDAAgD;AAChD,MAAM,WAAW,SAAS;IACxB,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;IACf;;;;;OAKG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wDAAwD;AACxD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB;oBACgB;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB;+DAC2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;kEACkE;AAClE,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,KAAK,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE,CAAC;IACjC,8DAA8D;IAC9D,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;mEAC+D;IAC/D,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,CAAC;IAC/D,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,GACjB,UAAU,CAUZ;AA8CD,6DAA6D;AAC7D,qBAAa,MAAM;IACjB,KAAK,EAAE,WAAW,CAAC;IACnB,GAAG,EAAE,UAAU,CAAC;IAChB,GAAG,EAAE,YAAY,CAAC;IAClB,KAAK,SAAK;IAEV,YAAY,OAAO,EAAE,MAAM,EAI1B;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAY1B;IAED,wEAAwE;IACxE,IAAI,IAAI,WAAW,CAElB;CACF;AAQD,oEAAoE;AACpE,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAM5C;AAED,oEAAoE;AACpE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAOhD;AAuFD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,aAAa,GACtB,UAAU,CAkIZ"}
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
// A tile's features as GPU-ready streams — the GL renderer's whole CPU side.
|
|
2
|
+
//
|
|
3
|
+
// The retained renderer (`../paint.ts`) turns a tile into *pixels*, once per
|
|
4
|
+
// zoom level and style, and composites the pixels; this turns it into
|
|
5
|
+
// *geometry*, once per tile, and draws the geometry every frame. That is the
|
|
6
|
+
// entire difference, and it is why nothing here knows about a camera, a
|
|
7
|
+
// scale or a style colour: a bucket is valid for every zoom, every pan,
|
|
8
|
+
// every display scale and every palette, so a style change is a uniform
|
|
9
|
+
// write and a fractional zoom is a matrix.
|
|
10
|
+
//
|
|
11
|
+
// Two streams, both made of 8-byte **records**, and one idea behind both:
|
|
12
|
+
// the GPU draws *segment i* from records `i` and `i + 1` of a stream, as one
|
|
13
|
+
// instance — so a polyline of `k` points is `k` consecutive records and
|
|
14
|
+
// costs nothing to "tessellate". There is no extrusion, no join geometry and
|
|
15
|
+
// no triangulation on the CPU at all: the vertex shader widens a segment into
|
|
16
|
+
// a quad and the fragment shader rounds its ends, so joins, caps and
|
|
17
|
+
// antialiasing come out of one distance function (see `./shaders.ts`).
|
|
18
|
+
//
|
|
19
|
+
// - **line** — `x:int16, y:int16, dist:float32`. `dist` is how far along
|
|
20
|
+
// its polyline the point is, in tile units, for dashes.
|
|
21
|
+
// - **fill** — `x:int16, y:int16, ax:int16, ay:int16`. Every ring is closed
|
|
22
|
+
// explicitly and each record carries its ring's first point as `a`, so
|
|
23
|
+
// segment `i` with `a` is a triangle of the ring's fan. Drawn into the
|
|
24
|
+
// stencil buffer, a fan per ring is a polygon with its holes — no
|
|
25
|
+
// triangulator, the same non-zero rule the retained renderer fills with.
|
|
26
|
+
// The same records drawn as segments are the polygon's outline.
|
|
27
|
+
//
|
|
28
|
+
// Between two polylines (or rings) sits one {@link BREAK} record. The two
|
|
29
|
+
// segments that touch it collapse in the vertex shader, which is cheaper
|
|
30
|
+
// than the index buffer that would otherwise say where every part ends.
|
|
31
|
+
//
|
|
32
|
+
// Coordinates are normalised to {@link TILE_EXTENT} because `extent` is a
|
|
33
|
+
// per-*layer* field that real tiles vary (Shortbread cuts `streets`, `land`,
|
|
34
|
+
// `ocean` and `water_polygons` at 2048 and everything else at 4096), and a
|
|
35
|
+
// per-draw extent would be one more uniform on the hottest loop in the
|
|
36
|
+
// renderer for no benefit.
|
|
37
|
+
import { GeomType, GeometryBuffer } from '../mvt.js';
|
|
38
|
+
import { buildTileLabels } from '../anchors.js';
|
|
39
|
+
/** Tile units across a tile, after normalisation. */
|
|
40
|
+
export const TILE_EXTENT = 4096;
|
|
41
|
+
/** The int16 that marks the end of a polyline or ring. Real coordinates are
|
|
42
|
+
* clamped to one above it. */
|
|
43
|
+
export const BREAK = -32768;
|
|
44
|
+
/** Bytes per record, in either stream. */
|
|
45
|
+
export const RECORD_BYTES = 8;
|
|
46
|
+
/** A raster tile as the store keeps it: its image, and nothing to build. */
|
|
47
|
+
export function rasterTileData(width, height, pixels) {
|
|
48
|
+
return {
|
|
49
|
+
line: new ArrayBuffer(0),
|
|
50
|
+
lineRecords: 0,
|
|
51
|
+
fill: new ArrayBuffer(0),
|
|
52
|
+
fillRecords: 0,
|
|
53
|
+
draws: [],
|
|
54
|
+
raster: { width, height, pixels },
|
|
55
|
+
stats: { features: 0, lineRecords: 0, fillRecords: 0, groups: 0, ms: 0 },
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/** Whether a style layer is one this renderer draws from a tile at all. */
|
|
59
|
+
function drawable(layer) {
|
|
60
|
+
// Symbol layers are labels, which are placed per frame and not bucketed.
|
|
61
|
+
return ((layer.type === 'fill' ||
|
|
62
|
+
layer.type === 'line' ||
|
|
63
|
+
layer.type === 'circle') &&
|
|
64
|
+
layer.visible !== false);
|
|
65
|
+
}
|
|
66
|
+
/** `paint.ts`'s rule: a `line` layer takes polygons too — stroking a ring is
|
|
67
|
+
* what a style asking for an outline means — a `fill` only polygons, and a
|
|
68
|
+
* `circle` only points. */
|
|
69
|
+
function takes(type, geometry) {
|
|
70
|
+
if (type === 'circle')
|
|
71
|
+
return geometry === GeomType.Point;
|
|
72
|
+
return type === 'fill'
|
|
73
|
+
? geometry === GeomType.Polygon
|
|
74
|
+
: geometry === GeomType.LineString || geometry === GeomType.Polygon;
|
|
75
|
+
}
|
|
76
|
+
/** Points, a record each, for a circle layer's discs. */
|
|
77
|
+
function emitPoints(line, coords, from, to, k) {
|
|
78
|
+
line.reserve(to - from);
|
|
79
|
+
for (let i = from; i < to; i++) {
|
|
80
|
+
const at = line.count;
|
|
81
|
+
line.i16[at * 4] = coord(coords[i * 2], k);
|
|
82
|
+
line.i16[at * 4 + 1] = coord(coords[i * 2 + 1], k);
|
|
83
|
+
line.f32[at * 2 + 1] = 0;
|
|
84
|
+
line.count++;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
const globals = globalThis;
|
|
88
|
+
const now = () => globals.performance?.now() ?? Date.now();
|
|
89
|
+
/** A growable stream of 8-byte records, viewed both ways. */
|
|
90
|
+
export class Stream {
|
|
91
|
+
bytes;
|
|
92
|
+
i16;
|
|
93
|
+
f32;
|
|
94
|
+
count = 0;
|
|
95
|
+
constructor(records) {
|
|
96
|
+
this.bytes = new ArrayBuffer(records * RECORD_BYTES);
|
|
97
|
+
this.i16 = new Int16Array(this.bytes);
|
|
98
|
+
this.f32 = new Float32Array(this.bytes);
|
|
99
|
+
}
|
|
100
|
+
reserve(more) {
|
|
101
|
+
const want = (this.count + more) * RECORD_BYTES;
|
|
102
|
+
if (want <= this.bytes.byteLength)
|
|
103
|
+
return;
|
|
104
|
+
let size = this.bytes.byteLength || RECORD_BYTES * 64;
|
|
105
|
+
while (size < want)
|
|
106
|
+
size *= 2;
|
|
107
|
+
const next = new ArrayBuffer(size);
|
|
108
|
+
new Uint8Array(next).set(new Uint8Array(this.bytes, 0, this.count * RECORD_BYTES));
|
|
109
|
+
this.bytes = next;
|
|
110
|
+
this.i16 = new Int16Array(next);
|
|
111
|
+
this.f32 = new Float32Array(next);
|
|
112
|
+
}
|
|
113
|
+
/** The records written, trimmed to size — what is kept and uploaded. */
|
|
114
|
+
take() {
|
|
115
|
+
return this.bytes.slice(0, this.count * RECORD_BYTES);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/** A tile coordinate, normalised and kept clear of the sentinel. */
|
|
119
|
+
function coord(v, k) {
|
|
120
|
+
const s = Math.round(v * k);
|
|
121
|
+
return s < -32767 ? -32767 : s > 32767 ? 32767 : s;
|
|
122
|
+
}
|
|
123
|
+
/** A line stream's sentinel. The caller has reserved the record. */
|
|
124
|
+
export function pushBreak(line) {
|
|
125
|
+
const at = line.count * 4;
|
|
126
|
+
line.i16[at] = BREAK;
|
|
127
|
+
line.i16[at + 1] = BREAK;
|
|
128
|
+
line.f32[line.count * 2 + 1] = 0;
|
|
129
|
+
line.count++;
|
|
130
|
+
}
|
|
131
|
+
/** A fill stream's sentinel. The caller has reserved the record. */
|
|
132
|
+
export function pushFillBreak(fill) {
|
|
133
|
+
const at = fill.count * 4;
|
|
134
|
+
fill.i16[at] = BREAK;
|
|
135
|
+
fill.i16[at + 1] = BREAK;
|
|
136
|
+
fill.i16[at + 2] = BREAK;
|
|
137
|
+
fill.i16[at + 3] = BREAK;
|
|
138
|
+
fill.count++;
|
|
139
|
+
}
|
|
140
|
+
/** One part as a polyline: its points, then (for a ring) its first point
|
|
141
|
+
* again, then a sentinel. */
|
|
142
|
+
function emitLine(line, coords, from, to, k, closed) {
|
|
143
|
+
const count = to - from;
|
|
144
|
+
if (count < 2)
|
|
145
|
+
return;
|
|
146
|
+
line.reserve(count + 2);
|
|
147
|
+
const i16 = line.i16;
|
|
148
|
+
const f32 = line.f32;
|
|
149
|
+
let dist = 0;
|
|
150
|
+
let px = coord(coords[from * 2], k);
|
|
151
|
+
let py = coord(coords[from * 2 + 1], k);
|
|
152
|
+
const firstX = px;
|
|
153
|
+
const firstY = py;
|
|
154
|
+
let at = line.count;
|
|
155
|
+
i16[at * 4] = px;
|
|
156
|
+
i16[at * 4 + 1] = py;
|
|
157
|
+
f32[at * 2 + 1] = 0;
|
|
158
|
+
at++;
|
|
159
|
+
for (let i = from + 1; i < to; i++) {
|
|
160
|
+
const x = coord(coords[i * 2], k);
|
|
161
|
+
const y = coord(coords[i * 2 + 1], k);
|
|
162
|
+
dist += Math.hypot(x - px, y - py);
|
|
163
|
+
i16[at * 4] = x;
|
|
164
|
+
i16[at * 4 + 1] = y;
|
|
165
|
+
f32[at * 2 + 1] = dist;
|
|
166
|
+
at++;
|
|
167
|
+
px = x;
|
|
168
|
+
py = y;
|
|
169
|
+
}
|
|
170
|
+
if (closed && (px !== firstX || py !== firstY)) {
|
|
171
|
+
dist += Math.hypot(firstX - px, firstY - py);
|
|
172
|
+
i16[at * 4] = firstX;
|
|
173
|
+
i16[at * 4 + 1] = firstY;
|
|
174
|
+
f32[at * 2 + 1] = dist;
|
|
175
|
+
at++;
|
|
176
|
+
}
|
|
177
|
+
line.count = at;
|
|
178
|
+
pushBreak(line);
|
|
179
|
+
}
|
|
180
|
+
/** One ring as a fan: its points, closed, each carrying the ring's first
|
|
181
|
+
* point as the fan's apex, then a sentinel. */
|
|
182
|
+
function emitRing(fill, coords, from, to, k) {
|
|
183
|
+
const count = to - from;
|
|
184
|
+
if (count < 3)
|
|
185
|
+
return;
|
|
186
|
+
fill.reserve(count + 2);
|
|
187
|
+
const i16 = fill.i16;
|
|
188
|
+
const ax = coord(coords[from * 2], k);
|
|
189
|
+
const ay = coord(coords[from * 2 + 1], k);
|
|
190
|
+
let at = fill.count * 4;
|
|
191
|
+
for (let i = from; i < to; i++) {
|
|
192
|
+
i16[at] = coord(coords[i * 2], k);
|
|
193
|
+
i16[at + 1] = coord(coords[i * 2 + 1], k);
|
|
194
|
+
i16[at + 2] = ax;
|
|
195
|
+
i16[at + 3] = ay;
|
|
196
|
+
at += 4;
|
|
197
|
+
}
|
|
198
|
+
i16[at] = ax;
|
|
199
|
+
i16[at + 1] = ay;
|
|
200
|
+
i16[at + 2] = ax;
|
|
201
|
+
i16[at + 3] = ay;
|
|
202
|
+
fill.count += count + 1;
|
|
203
|
+
pushFillBreak(fill);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Build a tile's buckets for a style.
|
|
207
|
+
*
|
|
208
|
+
* The style is walked in the same **runs** the retained painter uses —
|
|
209
|
+
* consecutive style layers over one source layer — and each run's features
|
|
210
|
+
* are read once. The new part is what happens to a feature's answer: every
|
|
211
|
+
* feature gets a *membership mask*, the set of the run's layers that select
|
|
212
|
+
* it, and features are written grouped by mask. A road network is fourteen
|
|
213
|
+
* style layers over `streets` whose casing and fill select exactly the same
|
|
214
|
+
* roads, so `motorway-casing` and `motorway` share one group and one copy of
|
|
215
|
+
* the geometry: two draws over the same records, with a different width and
|
|
216
|
+
* colour. Without the grouping every feature would be copied once per layer
|
|
217
|
+
* that draws it — twice for every road — and without it being contiguous
|
|
218
|
+
* a layer would be one draw per feature.
|
|
219
|
+
*/
|
|
220
|
+
export function buildTileBuckets(tile, prepared) {
|
|
221
|
+
const started = now();
|
|
222
|
+
const line = new Stream(1024);
|
|
223
|
+
const fill = new Stream(1024);
|
|
224
|
+
const buffer = new GeometryBuffer();
|
|
225
|
+
const draws = new Array(prepared.layers.length);
|
|
226
|
+
let features = 0;
|
|
227
|
+
let groupCount = 0;
|
|
228
|
+
let cursor = null;
|
|
229
|
+
for (const run of prepared.runs) {
|
|
230
|
+
const source = tile.layers.get(run.sourceLayer);
|
|
231
|
+
if (!source || source.length === 0)
|
|
232
|
+
continue;
|
|
233
|
+
const active = [];
|
|
234
|
+
for (let i = run.from; i < run.to; i++) {
|
|
235
|
+
const layer = prepared.layers[i].layer;
|
|
236
|
+
if (drawable(layer)) {
|
|
237
|
+
active.push({
|
|
238
|
+
index: i,
|
|
239
|
+
prepared: prepared.layers[i],
|
|
240
|
+
type: layer.type,
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
// A mask is a 32-bit integer. A run longer than that is not one any
|
|
245
|
+
// style has been written with; its tail draws nothing rather than
|
|
246
|
+
// aliasing onto the head.
|
|
247
|
+
if (active.length > 31)
|
|
248
|
+
active.length = 31;
|
|
249
|
+
if (active.length === 0)
|
|
250
|
+
continue;
|
|
251
|
+
const k = TILE_EXTENT / source.extent;
|
|
252
|
+
cursor = source.feature(0);
|
|
253
|
+
const byMask = new Map();
|
|
254
|
+
const order = [];
|
|
255
|
+
for (let f = 0; f < source.length; f++) {
|
|
256
|
+
source.seek(f, cursor);
|
|
257
|
+
let mask = 0;
|
|
258
|
+
for (let j = 0; j < active.length; j++) {
|
|
259
|
+
if (!takes(active[j].type, cursor.type))
|
|
260
|
+
continue;
|
|
261
|
+
if (!active[j].prepared.filter(cursor))
|
|
262
|
+
continue;
|
|
263
|
+
mask |= 1 << j;
|
|
264
|
+
}
|
|
265
|
+
if (mask === 0)
|
|
266
|
+
continue;
|
|
267
|
+
let group = byMask.get(mask);
|
|
268
|
+
if (!group) {
|
|
269
|
+
group = { mask, features: [], fill: [0, 0], line: [0, 0] };
|
|
270
|
+
byMask.set(mask, group);
|
|
271
|
+
order.push(group);
|
|
272
|
+
}
|
|
273
|
+
group.features.push(f);
|
|
274
|
+
}
|
|
275
|
+
for (const group of order) {
|
|
276
|
+
let needFill = false;
|
|
277
|
+
let needLine = false;
|
|
278
|
+
let needPoints = false;
|
|
279
|
+
for (let j = 0; j < active.length; j++) {
|
|
280
|
+
if (!(group.mask & (1 << j)))
|
|
281
|
+
continue;
|
|
282
|
+
if (active[j].type === 'fill')
|
|
283
|
+
needFill = true;
|
|
284
|
+
else if (active[j].type === 'circle')
|
|
285
|
+
needPoints = true;
|
|
286
|
+
else
|
|
287
|
+
needLine = true;
|
|
288
|
+
}
|
|
289
|
+
const fillFrom = fill.count;
|
|
290
|
+
const lineFrom = line.count;
|
|
291
|
+
for (const f of group.features) {
|
|
292
|
+
source.seek(f, cursor);
|
|
293
|
+
cursor.readGeometry(buffer);
|
|
294
|
+
if (buffer.parts === 0)
|
|
295
|
+
continue;
|
|
296
|
+
features++;
|
|
297
|
+
const polygon = cursor.type === GeomType.Polygon;
|
|
298
|
+
const points = cursor.type === GeomType.Point;
|
|
299
|
+
for (let part = 0; part < buffer.parts; part++) {
|
|
300
|
+
const from = buffer.starts[part];
|
|
301
|
+
const to = buffer.starts[part + 1];
|
|
302
|
+
if (points) {
|
|
303
|
+
if (needPoints)
|
|
304
|
+
emitPoints(line, buffer.coords, from, to, k);
|
|
305
|
+
continue;
|
|
306
|
+
}
|
|
307
|
+
if (needFill && polygon)
|
|
308
|
+
emitRing(fill, buffer.coords, from, to, k);
|
|
309
|
+
if (needLine)
|
|
310
|
+
emitLine(line, buffer.coords, from, to, k, polygon);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
// A group's points end in a sentinel like a polyline does, so the
|
|
314
|
+
// instance count of their range is the number of points.
|
|
315
|
+
if (needPoints && line.count > lineFrom) {
|
|
316
|
+
line.reserve(1);
|
|
317
|
+
pushBreak(line);
|
|
318
|
+
}
|
|
319
|
+
group.fill = [fillFrom, fill.count - fillFrom];
|
|
320
|
+
group.line = [lineFrom, line.count - lineFrom];
|
|
321
|
+
}
|
|
322
|
+
groupCount += order.length;
|
|
323
|
+
for (let j = 0; j < active.length; j++) {
|
|
324
|
+
const { index, type } = active[j];
|
|
325
|
+
const ranges = [];
|
|
326
|
+
for (const group of order) {
|
|
327
|
+
if (!(group.mask & (1 << j)))
|
|
328
|
+
continue;
|
|
329
|
+
const [first, count] = type === 'fill' ? group.fill : group.line;
|
|
330
|
+
if (count < 2)
|
|
331
|
+
continue;
|
|
332
|
+
const last = ranges.length - 2;
|
|
333
|
+
// Adjacent groups coalesce into one range, so a layer is one draw
|
|
334
|
+
// whenever the groups it spans were written next to each other.
|
|
335
|
+
if (last >= 0 && ranges[last] + ranges[last + 1] === first) {
|
|
336
|
+
ranges[last + 1] += count;
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
ranges.push(first, count);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
if (ranges.length > 0)
|
|
343
|
+
draws[index] = { layer: index, kind: type, ranges };
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
return {
|
|
347
|
+
line: line.take(),
|
|
348
|
+
lineRecords: line.count,
|
|
349
|
+
fill: fill.take(),
|
|
350
|
+
fillRecords: fill.count,
|
|
351
|
+
draws,
|
|
352
|
+
labels: buildTileLabels(tile, prepared, TILE_EXTENT),
|
|
353
|
+
stats: {
|
|
354
|
+
features,
|
|
355
|
+
lineRecords: line.count,
|
|
356
|
+
fillRecords: fill.count,
|
|
357
|
+
groups: groupCount,
|
|
358
|
+
ms: now() - started,
|
|
359
|
+
},
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
//# sourceMappingURL=buckets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buckets.js","sourceRoot":"","sources":["../../../src/maps/gl/buckets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { MapStyleLayer } from '../style.js';
|
|
2
|
+
/** What the store sends. */
|
|
3
|
+
export type BuildRequest = {
|
|
4
|
+
type: 'style';
|
|
5
|
+
id: number;
|
|
6
|
+
layers: MapStyleLayer[];
|
|
7
|
+
} | {
|
|
8
|
+
type: 'build';
|
|
9
|
+
job: number;
|
|
10
|
+
style: number;
|
|
11
|
+
bytes: Uint8Array;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=build-worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-worker.d.ts","sourceRoot":"","sources":["../../../src/maps/gl/build-worker.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,4BAA4B;AAC5B,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,EAAE,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// A worker thread's half of `GlTileStore`: tile bytes in, buckets out.
|
|
2
|
+
//
|
|
3
|
+
// Loaded only as a `Worker` entry and never imported, so the listener below
|
|
4
|
+
// is not an import-time side effect of the package — no bundle that follows
|
|
5
|
+
// imports can reach this file. What crosses the thread boundary is the point
|
|
6
|
+
// of the bucket format: a tile arrives as its own bytes (copied, a few
|
|
7
|
+
// hundred kilobytes) and leaves as two ArrayBuffers that are *transferred*,
|
|
8
|
+
// so the main thread's whole cost for a tile is the upload.
|
|
9
|
+
//
|
|
10
|
+
// `node:worker_threads` through a variable specifier, as `src/embed/host.ts`
|
|
11
|
+
// reaches `node:net`: `src/` compiles with `types: []`, and a literal
|
|
12
|
+
// specifier would make every build depend on Node's type declarations.
|
|
13
|
+
import { prepareStyle } from '../paint.js';
|
|
14
|
+
import { parseVectorTile } from '../sources.js';
|
|
15
|
+
import { buildTileBuckets } from './buckets.js';
|
|
16
|
+
const WORKER_THREADS = 'node:worker_threads';
|
|
17
|
+
const { parentPort } = (await import(WORKER_THREADS));
|
|
18
|
+
/** Compiled filters per style id. Two are kept: the store may still have a
|
|
19
|
+
* build in flight for the style it is leaving. */
|
|
20
|
+
const styles = new Map();
|
|
21
|
+
parentPort?.on('message', (message) => {
|
|
22
|
+
const request = message;
|
|
23
|
+
if (request.type === 'style') {
|
|
24
|
+
styles.set(request.id, prepareStyle({ layers: request.layers }));
|
|
25
|
+
for (const id of styles.keys())
|
|
26
|
+
if (id < request.id - 1)
|
|
27
|
+
styles.delete(id);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
const prepared = styles.get(request.style);
|
|
32
|
+
if (!prepared)
|
|
33
|
+
throw new Error(`style ${request.style} was never sent`);
|
|
34
|
+
const data = buildTileBuckets(parseVectorTile(request.bytes), prepared);
|
|
35
|
+
const transfer = [data.line, data.fill];
|
|
36
|
+
if (data.labels)
|
|
37
|
+
transfer.push(data.labels.anchors.buffer);
|
|
38
|
+
parentPort.postMessage({ job: request.job, data }, transfer);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
parentPort.postMessage({ job: request.job, error: String(error) });
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=build-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-worker.js","sourceRoot":"","sources":["../../../src/maps/gl/build-worker.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,uEAAuE;AACvE,4EAA4E;AAC5E,4DAA4D;AAC5D,EAAE;AACF,6EAA6E;AAC7E,sEAAsE;AACtE,uEAAuE;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAYhD,MAAM,cAAc,GAAG,qBAAqB,CAAC;AAC7C,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,CAEnD,CAAC;AAEF;mDACmD;AACnD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;AAEhD,UAAU,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;IACpC,MAAM,OAAO,GAAG,OAAuB,CAAC;IACxC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjE,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;YAAE,IAAI,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,CAAC;gBAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3E,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,SAAS,OAAO,CAAC,KAAK,iBAAiB,CAAC,CAAC;QACxE,MAAM,IAAI,GAAG,gBAAgB,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,MAAM;YAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAqB,CAAC,CAAC;QAC1E,UAAU,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Straight (unassociated) `[r, g, b, a]`, each in `0..1`. */
|
|
2
|
+
export type Rgba = readonly [number, number, number, number];
|
|
3
|
+
/** Parse `#rgb`, `#rgba`, `#rrggbb`, `#rrggbbaa`, `rgb()` and `rgba()`. */
|
|
4
|
+
export declare function parseColor(value: string): Rgba | null;
|
|
5
|
+
/** Premultiplied, with an extra opacity folded in — what the renderer's
|
|
6
|
+
* `ONE, ONE_MINUS_SRC_ALPHA` blend wants. */
|
|
7
|
+
export declare function premultiplied(color: Rgba, opacity?: number): Rgba;
|
|
8
|
+
//# sourceMappingURL=color.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../src/maps/gl/color.ts"],"names":[],"mappings":"AAQA,8DAA8D;AAC9D,MAAM,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAwC7D,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAIrD;AAED;8CAC8C;AAC9C,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,SAAI,GAAG,IAAI,CAG5D"}
|