@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
package/dist/maps/labels.js
CHANGED
|
@@ -1,114 +1,125 @@
|
|
|
1
|
-
|
|
1
|
+
// Labels: collected from the symbol layers, placed against each other, and
|
|
2
|
+
// drawn into the frame.
|
|
3
|
+
//
|
|
4
|
+
// Not into the tile surfaces, and the three reasons are each a visible bug
|
|
5
|
+
// if it is done the other way. **Collision is global**: two labels in
|
|
6
|
+
// different tiles overlap exactly as readily as two in one, so a per-tile
|
|
7
|
+
// placement produces clutter at every seam. **Text must not be scaled**: a
|
|
8
|
+
// tile surface is composited at up to 2× during a fractional zoom, and text
|
|
9
|
+
// is the one thing on a map nobody accepts blurred. And a tile's labels
|
|
10
|
+
// would be **clipped at its edge**, which is where half of them sit.
|
|
11
|
+
//
|
|
12
|
+
// **Where a label can go is the GL renderer's answer too**: both renderers
|
|
13
|
+
// take their anchors from `./anchors.ts` — a place name at its point, a
|
|
14
|
+
// street's name on a straight stretch of the street, its pieces merged
|
|
15
|
+
// first — so a map switched from one renderer to the other names the same
|
|
16
|
+
// streets in the same places, at the same angles.
|
|
17
|
+
//
|
|
18
|
+
// The placement itself is done in **world pixels** rather than screen
|
|
19
|
+
// pixels, and that is the load-bearing decision in this file. A placement
|
|
20
|
+
// computed against the viewport changes whenever the viewport does, so a
|
|
21
|
+
// pan would have to repaint the whole pane rather than blit it — and a
|
|
22
|
+
// label that was suppressed by a neighbour would pop in as that neighbour
|
|
23
|
+
// scrolled away. Placed in world pixels, whether a label wins depends only
|
|
24
|
+
// on the labels near it and the zoom, so a pan is a translation of a
|
|
25
|
+
// placement that is already correct, and the blit stands.
|
|
26
|
+
import { LABEL_STRIDE, LEVEL_SNAP, LINE_MARGIN, LabelField, STRAIGHT_FRACTION, buildTileLabels, estimateWidth, } from './anchors.js';
|
|
2
27
|
import { resolveZoomed } from './style.js';
|
|
3
28
|
import { tileCountAt, tileKey } from './proj.js';
|
|
4
29
|
function num(value, zoom, fallback) {
|
|
5
30
|
return value === undefined ? fallback : resolveZoomed(value, zoom);
|
|
6
31
|
}
|
|
32
|
+
/** The tile units anchors are worked out in: the GL buckets', so the two
|
|
33
|
+
* renderers' anchors are the same numbers. */
|
|
34
|
+
const EXTENT = 4096;
|
|
7
35
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
36
|
+
* Anchors, per tile and style. They depend on neither the zoom nor the
|
|
37
|
+
* camera, and merging a tile's street pieces is the one costly step, so a
|
|
38
|
+
* zoom that collects a tile's candidates again does not work them out
|
|
39
|
+
* again.
|
|
40
|
+
*/
|
|
41
|
+
const anchorCache = new WeakMap();
|
|
42
|
+
function anchorsOf(tile, prepared) {
|
|
43
|
+
const hit = anchorCache.get(tile);
|
|
44
|
+
if (hit && hit.prepared === prepared)
|
|
45
|
+
return hit.data;
|
|
46
|
+
const data = buildTileLabels(tile, prepared, EXTENT);
|
|
47
|
+
anchorCache.set(tile, { prepared, data });
|
|
48
|
+
return data;
|
|
49
|
+
}
|
|
50
|
+
function paintAt(layer, zoom) {
|
|
51
|
+
if (!layer || layer.type !== 'symbol' || layer.visible === false) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
if (layer.minZoom !== undefined && zoom < layer.minZoom)
|
|
55
|
+
return null;
|
|
56
|
+
if (layer.maxZoom !== undefined && zoom >= layer.maxZoom)
|
|
57
|
+
return null;
|
|
58
|
+
const symbol = layer;
|
|
59
|
+
return {
|
|
60
|
+
id: layer.id,
|
|
61
|
+
size: num(symbol.textSize, zoom, 12),
|
|
62
|
+
color: symbol.textColor ? resolveZoomed(symbol.textColor, zoom) : '#000000',
|
|
63
|
+
halo: symbol.textHaloColor
|
|
64
|
+
? resolveZoomed(symbol.textHaloColor, zoom)
|
|
65
|
+
: undefined,
|
|
66
|
+
haloWidth: num(symbol.textHaloWidth, zoom, 1),
|
|
67
|
+
rank: symbol.rank ?? 0,
|
|
68
|
+
repeat: symbol.repeatDistance ?? 250,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The label candidates one tile contributes: its anchors (`./anchors.ts`),
|
|
73
|
+
* with this zoom's size and colours. A point label anchors at its point,
|
|
74
|
+
* an area's at the middle of its largest ring, and a street's name at the
|
|
75
|
+
* middle of a straight stretch of the street — or of a block of it —
|
|
76
|
+
* turned to lie along it.
|
|
16
77
|
*/
|
|
17
|
-
export function collectLabels(tile, id, prepared, zoom
|
|
78
|
+
export function collectLabels(tile, id, prepared, zoom) {
|
|
18
79
|
const out = [];
|
|
80
|
+
const data = anchorsOf(tile, prepared);
|
|
19
81
|
const n = tileCountAt(id.z);
|
|
20
82
|
const key = tileKey(id);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const symbol = layer;
|
|
33
|
-
const size = num(symbol.textSize, zoom, 12);
|
|
34
|
-
const color = symbol.textColor
|
|
35
|
-
? resolveZoomed(symbol.textColor, zoom)
|
|
36
|
-
: '#000000';
|
|
37
|
-
const halo = symbol.textHaloColor
|
|
38
|
-
? resolveZoomed(symbol.textHaloColor, zoom)
|
|
39
|
-
: undefined;
|
|
40
|
-
const haloWidth = num(symbol.textHaloWidth, zoom, 1);
|
|
41
|
-
const rank = symbol.rank ?? 0;
|
|
42
|
-
const repeat = symbol.repeatDistance ?? 250;
|
|
43
|
-
const extent = source.extent;
|
|
44
|
-
const cursor = source.feature(0);
|
|
45
|
-
for (let f = 0; f < source.length; f++) {
|
|
46
|
-
source.seek(f, cursor);
|
|
47
|
-
if (!filter(cursor))
|
|
48
|
-
continue;
|
|
49
|
-
const raw = cursor.get(symbol.textField);
|
|
50
|
-
// The schema's fallback: a translated name field is absent for most
|
|
51
|
-
// features, and the local `name` is what a map without a translation
|
|
52
|
-
// shows rather than nothing.
|
|
53
|
-
const text = typeof raw === 'string' && raw.length > 0
|
|
54
|
-
? raw
|
|
55
|
-
: symbol.textField !== 'name'
|
|
56
|
-
? typeof cursor.get('name') === 'string'
|
|
57
|
-
? String(cursor.get('name'))
|
|
58
|
-
: ''
|
|
59
|
-
: '';
|
|
60
|
-
if (text.length === 0)
|
|
61
|
-
continue;
|
|
62
|
-
cursor.readGeometry(buffer);
|
|
63
|
-
const anchor = anchorOf(buffer, cursor.type);
|
|
64
|
-
if (!anchor)
|
|
65
|
-
continue;
|
|
66
|
-
out.push({
|
|
67
|
-
id: `${key}:${layer.id}:${f}`,
|
|
68
|
-
key: `${layer.id}|${text}`,
|
|
69
|
-
text,
|
|
70
|
-
// Tile-local to normalized mercator, the same arithmetic the
|
|
71
|
-
// rasterizer's transform does and for the same precision reason.
|
|
72
|
-
mx: (id.x + anchor.x / extent) / n,
|
|
73
|
-
my: (id.y + anchor.y / extent) / n,
|
|
74
|
-
rank,
|
|
75
|
-
size,
|
|
76
|
-
color,
|
|
77
|
-
halo,
|
|
78
|
-
haloWidth,
|
|
79
|
-
repeat,
|
|
80
|
-
});
|
|
83
|
+
// Tile units to normalized mercator.
|
|
84
|
+
const unit = 1 / (EXTENT * n);
|
|
85
|
+
const paints = new Map();
|
|
86
|
+
const a = data.anchors;
|
|
87
|
+
for (let r = 0; r < data.count; r++) {
|
|
88
|
+
const at = r * LABEL_STRIDE;
|
|
89
|
+
const index = a[at + LabelField.layer];
|
|
90
|
+
let paint = paints.get(index);
|
|
91
|
+
if (paint === undefined) {
|
|
92
|
+
paint = paintAt(prepared.layers[index]?.layer, zoom);
|
|
93
|
+
paints.set(index, paint);
|
|
81
94
|
}
|
|
95
|
+
if (!paint)
|
|
96
|
+
continue;
|
|
97
|
+
const text = data.texts[a[at + LabelField.text]];
|
|
98
|
+
const point = a[at + LabelField.avail] < 0;
|
|
99
|
+
out.push({
|
|
100
|
+
id: `${key}:${paint.id}:${r}`,
|
|
101
|
+
key: `${paint.id}|${text}`,
|
|
102
|
+
text,
|
|
103
|
+
// Tile-local to normalized mercator, the same arithmetic the
|
|
104
|
+
// rasterizer's transform does and for the same precision reason.
|
|
105
|
+
mx: (id.x + a[at + LabelField.x] / EXTENT) / n,
|
|
106
|
+
my: (id.y + a[at + LabelField.y] / EXTENT) / n,
|
|
107
|
+
angle: point ? 0 : a[at + LabelField.angle],
|
|
108
|
+
avail: point ? Infinity : a[at + LabelField.avail] * unit,
|
|
109
|
+
clear: point ? Infinity : a[at + LabelField.clear] * unit,
|
|
110
|
+
length: a[at + LabelField.length] * unit,
|
|
111
|
+
dev: a[at + LabelField.dev] * unit,
|
|
112
|
+
rank: paint.rank,
|
|
113
|
+
priority: a[at + LabelField.priority],
|
|
114
|
+
size: paint.size,
|
|
115
|
+
color: paint.color,
|
|
116
|
+
halo: paint.halo,
|
|
117
|
+
haloWidth: paint.haloWidth,
|
|
118
|
+
repeat: paint.repeat,
|
|
119
|
+
});
|
|
82
120
|
}
|
|
83
121
|
return out;
|
|
84
122
|
}
|
|
85
|
-
function anchorOf(buffer, type) {
|
|
86
|
-
if (buffer.points === 0)
|
|
87
|
-
return null;
|
|
88
|
-
if (type === GeomType.Point) {
|
|
89
|
-
return { x: buffer.coords[0], y: buffer.coords[1] };
|
|
90
|
-
}
|
|
91
|
-
// The longest part, by its box — a cheap stand-in for arc length that
|
|
92
|
-
// does not need a second pass over the vertices.
|
|
93
|
-
let best = 0;
|
|
94
|
-
let bestSpan = -1;
|
|
95
|
-
for (let part = 0; part < buffer.parts; part++) {
|
|
96
|
-
const at = part * 4;
|
|
97
|
-
const span = buffer.partBounds[at + 2] -
|
|
98
|
-
buffer.partBounds[at] +
|
|
99
|
-
(buffer.partBounds[at + 3] - buffer.partBounds[at + 1]);
|
|
100
|
-
if (span > bestSpan) {
|
|
101
|
-
bestSpan = span;
|
|
102
|
-
best = part;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
const from = buffer.starts[best];
|
|
106
|
-
const to = buffer.starts[best + 1];
|
|
107
|
-
if (to <= from)
|
|
108
|
-
return null;
|
|
109
|
-
const mid = from + ((to - from) >> 1);
|
|
110
|
-
return { x: buffer.coords[mid * 2], y: buffer.coords[mid * 2 + 1] };
|
|
111
|
-
}
|
|
112
123
|
/** Cache of shaped strings, owned by the element. */
|
|
113
124
|
export class LabelShaper {
|
|
114
125
|
_cache = new Map();
|
|
@@ -168,17 +179,36 @@ export class LabelShaper {
|
|
|
168
179
|
return shaped;
|
|
169
180
|
}
|
|
170
181
|
}
|
|
182
|
+
/** A street name is set level — on whole pixels, which is sharper — when
|
|
183
|
+
* its street is this close to level. */
|
|
184
|
+
function levelled(angle) {
|
|
185
|
+
return Math.abs(angle) < LEVEL_SNAP ? 0 : angle;
|
|
186
|
+
}
|
|
171
187
|
/**
|
|
172
188
|
* Place candidates against each other, in world pixels.
|
|
173
189
|
*
|
|
174
|
-
* Greedy
|
|
175
|
-
* nothing already taken overlaps it. The order
|
|
176
|
-
*
|
|
177
|
-
*
|
|
190
|
+
* Greedy, which is what every map does: sort, and take a label if it fits
|
|
191
|
+
* where it is and nothing already taken overlaps it. The order is the GL
|
|
192
|
+
* renderer's, less what depends on the view: rank, then importance within
|
|
193
|
+
* the layer, then a street name that clears its junctions over one that
|
|
194
|
+
* would cover a crossing street, then the longer straight run. It has to be
|
|
195
|
+
* **total and stable** — the candidate's id last — because a tie broken by
|
|
196
|
+
* array order would flicker as tiles arrived in a different order.
|
|
197
|
+
*
|
|
198
|
+
* A street name fits where the GL renderer says one does: on a stretch
|
|
199
|
+
* straight enough for its size, and long enough for all of it.
|
|
178
200
|
*/
|
|
179
201
|
export function placeLabels(candidates, worldSize, shaper, options) {
|
|
180
202
|
const padding = options?.padding ?? 2;
|
|
181
|
-
const
|
|
203
|
+
const clean = (c) => c.clear * worldSize >= estimateWidth(c.text, c.size) / 2 ? 1 : 0;
|
|
204
|
+
const sorted = [...candidates]
|
|
205
|
+
.map((c) => ({ c, clean: clean(c) }))
|
|
206
|
+
.sort((a, b) => b.c.rank - a.c.rank ||
|
|
207
|
+
b.c.priority - a.c.priority ||
|
|
208
|
+
b.clean - a.clean ||
|
|
209
|
+
b.c.length - a.c.length ||
|
|
210
|
+
(a.c.id < b.c.id ? -1 : a.c.id > b.c.id ? 1 : 0))
|
|
211
|
+
.map((entry) => entry.c);
|
|
182
212
|
const placed = [];
|
|
183
213
|
// A sparse grid over world pixels. The cell is sized for the labels
|
|
184
214
|
// themselves, so a box touches one or two cells and a collision test is a
|
|
@@ -190,15 +220,24 @@ export function placeLabels(candidates, worldSize, shaper, options) {
|
|
|
190
220
|
* repeat-distance rule. */
|
|
191
221
|
const byText = new Map();
|
|
192
222
|
for (const candidate of sorted) {
|
|
223
|
+
// Bent under its size at this zoom: not a stretch to set a name on.
|
|
224
|
+
if (candidate.dev * worldSize > candidate.size * STRAIGHT_FRACTION) {
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
193
227
|
const shaped = shaper.shape(candidate.text, candidate.size, candidate.color);
|
|
194
228
|
if (!shaped)
|
|
195
229
|
return placed; // no font manager: nothing can be measured
|
|
230
|
+
// Longer than the straight stretch it would sit on, with a margin past
|
|
231
|
+
// each end: it would hang off the street, over whatever the street
|
|
232
|
+
// turns into.
|
|
233
|
+
const need = shaped.width / 2 + shaped.height * LINE_MARGIN;
|
|
234
|
+
if (candidate.avail * worldSize < need)
|
|
235
|
+
continue;
|
|
196
236
|
const wx = candidate.mx * worldSize;
|
|
197
237
|
const wy = candidate.my * worldSize;
|
|
198
238
|
// The repeat test before the overlap test, because it is the cheaper
|
|
199
|
-
// one and because it is what rejects most of a street layer: a
|
|
200
|
-
//
|
|
201
|
-
// strung out along the road, none of them overlapping any other.
|
|
239
|
+
// one and because it is what rejects most of a street layer: a long
|
|
240
|
+
// street offers its name every block, none of them overlapping.
|
|
202
241
|
if (candidate.repeat > 0) {
|
|
203
242
|
const already = byText.get(candidate.key);
|
|
204
243
|
if (already) {
|
|
@@ -216,8 +255,15 @@ export function placeLabels(candidates, worldSize, shaper, options) {
|
|
|
216
255
|
continue;
|
|
217
256
|
}
|
|
218
257
|
}
|
|
219
|
-
|
|
220
|
-
|
|
258
|
+
// The turned text's bounding box: what it covers, as far as another
|
|
259
|
+
// label can tell.
|
|
260
|
+
const angle = levelled(candidate.angle);
|
|
261
|
+
const w = shaped.width + padding * 2;
|
|
262
|
+
const h = shaped.height + padding * 2;
|
|
263
|
+
const cos = Math.abs(Math.cos(angle));
|
|
264
|
+
const sin = Math.abs(Math.sin(angle));
|
|
265
|
+
const width = w * cos + h * sin;
|
|
266
|
+
const height = w * sin + h * cos;
|
|
221
267
|
const left = wx - width / 2;
|
|
222
268
|
const top = wy - height / 2;
|
|
223
269
|
const x0 = Math.floor(left / CELL);
|
|
@@ -245,6 +291,7 @@ export function placeLabels(candidates, worldSize, shaper, options) {
|
|
|
245
291
|
continue;
|
|
246
292
|
const entry = {
|
|
247
293
|
...candidate,
|
|
294
|
+
angle,
|
|
248
295
|
wx,
|
|
249
296
|
wy,
|
|
250
297
|
width,
|
|
@@ -281,30 +328,50 @@ export function placeLabels(candidates, worldSize, shaper, options) {
|
|
|
281
328
|
* composites of two shaped runs. That is cheap for the few dozen labels a
|
|
282
329
|
* pane holds and it is the difference between a place name that is
|
|
283
330
|
* readable over a motorway and one that is not.
|
|
331
|
+
*
|
|
332
|
+
* A level label is drawn on whole device pixels. A street name along its
|
|
333
|
+
* street is drawn turned about its centre, where the context can turn —
|
|
334
|
+
* and level where it cannot, on a context with no transform.
|
|
284
335
|
*/
|
|
285
336
|
export function drawLabels(ctx, placed, transform, pane, scale, clip, shaper) {
|
|
286
337
|
let drawn = 0;
|
|
287
338
|
const world = transform.world;
|
|
288
339
|
const originX = pane.x + transform.paneX - transform.centerX * world;
|
|
289
340
|
const originY = pane.y + transform.paneY - transform.centerY * world;
|
|
341
|
+
const turns = typeof ctx.rotate === 'function' && !!ctx.translate;
|
|
290
342
|
for (const label of placed) {
|
|
291
|
-
const
|
|
292
|
-
const
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
343
|
+
const cx = originX + label.wx;
|
|
344
|
+
const cy = originY + label.wy;
|
|
345
|
+
const halfW = label.width / 2;
|
|
346
|
+
const halfH = label.height / 2;
|
|
347
|
+
if (cx + halfW < pane.x ||
|
|
348
|
+
cy + halfH < pane.y ||
|
|
349
|
+
cx - halfW > pane.x + pane.width ||
|
|
350
|
+
cy - halfH > pane.y + pane.height) {
|
|
297
351
|
continue;
|
|
298
352
|
}
|
|
299
353
|
if (clip &&
|
|
300
|
-
(
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
354
|
+
(cx + halfW < clip.x ||
|
|
355
|
+
cy + halfH < clip.y ||
|
|
356
|
+
cx - halfW > clip.x + clip.width ||
|
|
357
|
+
cy - halfH > clip.y + clip.height)) {
|
|
304
358
|
continue;
|
|
305
359
|
}
|
|
306
|
-
const
|
|
307
|
-
const
|
|
360
|
+
const { width, height } = label.shaped;
|
|
361
|
+
const turned = label.angle !== 0 && turns;
|
|
362
|
+
let dx;
|
|
363
|
+
let dy;
|
|
364
|
+
if (turned) {
|
|
365
|
+
ctx.save();
|
|
366
|
+
ctx.translate(cx * scale, cy * scale);
|
|
367
|
+
ctx.rotate(label.angle);
|
|
368
|
+
dx = (-width * scale) / 2;
|
|
369
|
+
dy = (-height * scale) / 2;
|
|
370
|
+
}
|
|
371
|
+
else {
|
|
372
|
+
dx = Math.round((cx - width / 2) * scale);
|
|
373
|
+
dy = Math.round((cy - height / 2) * scale);
|
|
374
|
+
}
|
|
308
375
|
if (label.halo !== undefined && label.haloWidth > 0) {
|
|
309
376
|
const halo = shaper.shape(label.text, label.size, label.halo);
|
|
310
377
|
if (halo) {
|
|
@@ -316,6 +383,8 @@ export function drawLabels(ctx, placed, transform, pane, scale, clip, shaper) {
|
|
|
316
383
|
}
|
|
317
384
|
}
|
|
318
385
|
label.shaped.layout.draw(ctx, dx, dy);
|
|
386
|
+
if (turned)
|
|
387
|
+
ctx.restore();
|
|
319
388
|
drawn++;
|
|
320
389
|
}
|
|
321
390
|
return drawn;
|
package/dist/maps/labels.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labels.js","sourceRoot":"","sources":["../../src/maps/labels.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"labels.js","sourceRoot":"","sources":["../../src/maps/labels.ts"],"names":[],"mappings":"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"}
|