@mapwhit/tilerenderer 0.49.0 → 0.51.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/build/min/package.json +1 -1
- package/build/min/src/shaders/.dir +0 -0
- package/build/min/src/shaders/_prelude.fragment.glsl.js +14 -0
- package/build/min/src/shaders/_prelude.vertex.glsl.js +14 -0
- package/build/min/src/shaders/background.fragment.glsl.js +5 -0
- package/build/min/src/shaders/background.vertex.glsl.js +1 -0
- package/build/min/src/shaders/background_pattern.fragment.glsl.js +5 -0
- package/build/min/src/shaders/background_pattern.vertex.glsl.js +1 -0
- package/build/min/src/shaders/circle.fragment.glsl.js +20 -0
- package/build/min/src/shaders/circle.vertex.glsl.js +17 -0
- package/build/min/src/shaders/clipping_mask.fragment.glsl.js +1 -0
- package/build/min/src/shaders/clipping_mask.vertex.glsl.js +1 -0
- package/build/min/src/shaders/collision_box.fragment.glsl.js +1 -0
- package/build/min/src/shaders/collision_box.vertex.glsl.js +1 -0
- package/build/min/src/shaders/collision_circle.fragment.glsl.js +1 -0
- package/build/min/src/shaders/collision_circle.vertex.glsl.js +1 -0
- package/build/min/src/shaders/debug.fragment.glsl.js +1 -0
- package/build/min/src/shaders/debug.vertex.glsl.js +1 -0
- package/build/min/src/shaders/fill.fragment.glsl.js +10 -0
- package/build/min/src/shaders/fill.vertex.glsl.js +7 -0
- package/build/min/src/shaders/fill_extrusion.fragment.glsl.js +5 -0
- package/build/min/src/shaders/fill_extrusion.fragment.glsl.txt +1 -9
- package/build/min/src/shaders/fill_extrusion.vertex.glsl.js +9 -0
- package/build/min/src/shaders/fill_extrusion.vertex.glsl.txt +4 -4
- package/build/min/src/shaders/fill_extrusion_pattern.fragment.glsl.js +15 -0
- package/build/min/src/shaders/fill_extrusion_pattern.vertex.glsl.js +11 -0
- package/build/min/src/shaders/fill_outline.fragment.glsl.js +10 -0
- package/build/min/src/shaders/fill_outline.vertex.glsl.js +7 -0
- package/build/min/src/shaders/fill_outline_pattern.fragment.glsl.js +13 -0
- package/build/min/src/shaders/fill_outline_pattern.vertex.glsl.js +9 -0
- package/build/min/src/shaders/fill_pattern.fragment.glsl.js +13 -0
- package/build/min/src/shaders/fill_pattern.vertex.glsl.js +9 -0
- package/build/min/src/shaders/heatmap.fragment.glsl.js +10 -0
- package/build/min/src/shaders/heatmap.vertex.glsl.js +8 -0
- package/build/min/src/shaders/heatmap_texture.fragment.glsl.js +5 -0
- package/build/min/src/shaders/heatmap_texture.vertex.glsl.js +1 -0
- package/build/min/src/shaders/hillshade.fragment.glsl.js +7 -0
- package/build/min/src/shaders/hillshade.vertex.glsl.js +1 -0
- package/build/min/src/shaders/hillshade_prepare.fragment.glsl.js +8 -0
- package/build/min/src/shaders/hillshade_prepare.vertex.glsl.js +1 -0
- package/build/min/src/shaders/line.fragment.glsl.js +12 -0
- package/build/min/src/shaders/line.vertex.glsl.js +17 -0
- package/build/min/src/shaders/line_gradient.fragment.glsl.js +10 -0
- package/build/min/src/shaders/line_gradient.vertex.glsl.js +16 -0
- package/build/min/src/shaders/line_pattern.fragment.glsl.js +15 -0
- package/build/min/src/shaders/line_pattern.vertex.glsl.js +20 -0
- package/build/min/src/shaders/line_sdf.fragment.glsl.js +17 -0
- package/build/min/src/shaders/line_sdf.vertex.glsl.js +20 -0
- package/build/min/src/shaders/raster.fragment.glsl.js +5 -0
- package/build/min/src/shaders/raster.vertex.glsl.js +1 -0
- package/build/min/src/shaders/symbol_icon.fragment.glsl.js +9 -0
- package/build/min/src/shaders/symbol_icon.vertex.glsl.js +5 -0
- package/build/min/src/shaders/symbol_sdf.fragment.glsl.js +19 -0
- package/build/min/src/shaders/symbol_sdf.vertex.glsl.js +13 -0
- package/package.json +7 -7
- package/src/data/bucket/fill_bucket.js +1 -1
- package/src/data/bucket/fill_extrusion_bucket.js +2 -2
- package/src/data/bucket/line_bucket.js +1 -1
- package/src/data/bucket/symbol_bucket.js +16 -15
- package/src/data/feature_index.js +1 -1
- package/src/data/program_configuration.js +1 -1
- package/src/gl/color_mode.js +1 -1
- package/src/gl/value.js +1 -1
- package/src/render/draw_debug.js +1 -1
- package/src/render/draw_fill.js +1 -1
- package/src/render/draw_heatmap.js +1 -1
- package/src/render/glyph_manager.js +6 -130
- package/src/render/painter.js +1 -1
- package/src/render/uniform_binding.js +1 -1
- package/src/shaders/fill_extrusion.fragment.glsl +0 -7
- package/src/shaders/fill_extrusion.vertex.glsl +4 -4
- package/src/shaders/index.js +50 -50
- package/src/source/geojson_worker_source.js +4 -4
- package/src/source/geojson_wrapper.js +34 -26
- package/src/source/resources/glyphs.js +73 -0
- package/src/source/resources/images.js +68 -0
- package/src/source/resources/index.js +22 -0
- package/src/source/vector_tile_worker_source.js +5 -5
- package/src/source/worker.js +6 -5
- package/src/source/worker_tile.js +4 -4
- package/src/style/properties.js +1 -2
- package/src/style/style.js +3 -3
- package/src/style/style_layer/symbol_style_layer.js +1 -1
- package/src/style/style_layer.js +1 -1
- package/src/style-spec/feature_filter/index.js +43 -34
- package/src/style-spec/group_by_layout.js +10 -32
- package/src/style-spec/reference/v8.json +1 -1
- package/src/symbol/mergelines.js +1 -3
- package/src/symbol/placement.js +21 -2
- package/src/symbol/shaping.js +9 -18
- package/src/symbol/symbol_layout.js +1 -2
- package/src/symbol/symbol_size.js +1 -1
- package/src/symbol/transform_text.js +4 -8
- package/src/ui/map.js +11 -39
- package/src/util/browser.js +3 -18
- package/src/util/classify_rings.js +1 -1
- package/src/util/dom.js +0 -88
- package/src/util/find_pole_of_inaccessibility.js +2 -2
- package/src/util/web_worker_transfer.js +4 -4
- package/src/style/load_glyph_range.js +0 -17
- package/src/style-spec/expression/compound_expression.js +0 -132
- package/src/style-spec/expression/definitions/assertion.js +0 -116
- package/src/style-spec/expression/definitions/at.js +0 -57
- package/src/style-spec/expression/definitions/case.js +0 -73
- package/src/style-spec/expression/definitions/coalesce.js +0 -68
- package/src/style-spec/expression/definitions/coercion.js +0 -109
- package/src/style-spec/expression/definitions/collator.js +0 -102
- package/src/style-spec/expression/definitions/comparison.js +0 -193
- package/src/style-spec/expression/definitions/formatted.js +0 -123
- package/src/style-spec/expression/definitions/index.js +0 -356
- package/src/style-spec/expression/definitions/interpolate.js +0 -245
- package/src/style-spec/expression/definitions/length.js +0 -54
- package/src/style-spec/expression/definitions/let.js +0 -60
- package/src/style-spec/expression/definitions/literal.js +0 -69
- package/src/style-spec/expression/definitions/match.js +0 -142
- package/src/style-spec/expression/definitions/step.js +0 -116
- package/src/style-spec/expression/definitions/var.js +0 -38
- package/src/style-spec/expression/evaluation_context.js +0 -35
- package/src/style-spec/expression/index.js +0 -329
- package/src/style-spec/expression/is_constant.js +0 -63
- package/src/style-spec/expression/parsing_context.js +0 -212
- package/src/style-spec/expression/parsing_error.js +0 -9
- package/src/style-spec/expression/runtime_error.js +0 -12
- package/src/style-spec/expression/scope.js +0 -34
- package/src/style-spec/expression/stops.js +0 -37
- package/src/style-spec/expression/types.js +0 -88
- package/src/style-spec/expression/values.js +0 -126
- package/src/style-spec/function/convert.js +0 -234
- package/src/style-spec/function/index.js +0 -299
- package/src/style-spec/util/color.js +0 -73
- package/src/style-spec/util/color_spaces.js +0 -128
- package/src/style-spec/util/get_type.js +0 -18
- package/src/style-spec/util/interpolate.js +0 -21
- package/src/style-spec/util/properties.js +0 -17
- package/src/style-spec/util/result.js +0 -19
- package/src/ui/anchor.js +0 -24
- package/src/ui/bind_handlers.js +0 -199
- package/src/ui/events.js +0 -210
- package/src/ui/handler/box_zoom.js +0 -151
- package/src/ui/handler/dblclick_zoom.js +0 -91
- package/src/ui/handler/drag_pan.js +0 -285
- package/src/ui/handler/drag_rotate.js +0 -290
- package/src/ui/handler/frame.js +0 -28
- package/src/ui/handler/inertia.js +0 -45
- package/src/ui/handler/keyboard.js +0 -148
- package/src/ui/handler/scroll_zoom.js +0 -284
- package/src/ui/handler/touch_zoom_rotate.js +0 -263
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mapwhit/tilerenderer",
|
|
3
3
|
"description": "A WebGL interactive maps library",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.51.0",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"license": "BSD-3-Clause",
|
|
7
7
|
"repository": {
|
|
@@ -11,23 +11,23 @@
|
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@mapbox/gl-matrix": "^0.0.1",
|
|
13
13
|
"@mapbox/point-geometry": "^0.1.0",
|
|
14
|
-
"@mapbox/tiny-sdf": "^1.1.0",
|
|
15
14
|
"@mapbox/unitbezier": "^0.0.0",
|
|
16
|
-
"@mapbox/vector-tile": "^1.3.1",
|
|
17
15
|
"@mapbox/whoots-js": "^3.0.0",
|
|
18
16
|
"@mapwhit/geojson-rewind": "^1.0.0",
|
|
19
17
|
"@mapwhit/pbf": "^1.0.0",
|
|
18
|
+
"@mapwhit/style-expressions": "^0.0.2",
|
|
19
|
+
"@mapwhit/vector-tile": "^1.0.0",
|
|
20
20
|
"@mapwhit/vt-pbf": "^1.0.0",
|
|
21
21
|
"@pirxpilot/nanoassert": "~1",
|
|
22
22
|
"csscolorparser": "^1.0.3",
|
|
23
|
-
"earcut": "^
|
|
24
|
-
"geojson-vt": "^
|
|
23
|
+
"earcut": "^3.0.1",
|
|
24
|
+
"geojson-vt": "^4.0.2",
|
|
25
25
|
"grid-index": "^1.1.0",
|
|
26
26
|
"murmurhash-js": "^1.0.0",
|
|
27
27
|
"potpack": "^1.0.1",
|
|
28
|
-
"quickselect": "^
|
|
28
|
+
"quickselect": "^3.0.0",
|
|
29
29
|
"supercluster": "^2.0.1",
|
|
30
|
-
"tinyqueue": "^
|
|
30
|
+
"tinyqueue": "^3.0.0"
|
|
31
31
|
},
|
|
32
32
|
"browser": {
|
|
33
33
|
"assert": "@pirxpilot/nanoassert",
|
|
@@ -4,7 +4,7 @@ const { members: layoutAttributes } = require('./fill_attributes');
|
|
|
4
4
|
const SegmentVector = require('../segment');
|
|
5
5
|
const { ProgramConfigurationSet } = require('../program_configuration');
|
|
6
6
|
const { LineIndexArray, TriangleIndexArray } = require('../index_array_type');
|
|
7
|
-
const earcut = require('earcut');
|
|
7
|
+
const { default: earcut } = require('earcut');
|
|
8
8
|
const classifyRings = require('../../util/classify_rings');
|
|
9
9
|
const assert = require('assert');
|
|
10
10
|
const EARCUT_MAX_RINGS = 500;
|
|
@@ -5,10 +5,10 @@ const SegmentVector = require('../segment');
|
|
|
5
5
|
const { ProgramConfigurationSet } = require('../program_configuration');
|
|
6
6
|
const { TriangleIndexArray } = require('../index_array_type');
|
|
7
7
|
const EXTENT = require('../extent');
|
|
8
|
-
const earcut = require('earcut');
|
|
8
|
+
const { default: earcut } = require('earcut');
|
|
9
9
|
const {
|
|
10
10
|
VectorTileFeature: { types: vectorTileFeatureTypes }
|
|
11
|
-
} = require('@
|
|
11
|
+
} = require('@mapwhit/vector-tile');
|
|
12
12
|
const classifyRings = require('../../util/classify_rings');
|
|
13
13
|
const assert = require('assert');
|
|
14
14
|
const EARCUT_MAX_RINGS = 500;
|
|
@@ -5,7 +5,7 @@ const SegmentVector = require('../segment');
|
|
|
5
5
|
const { ProgramConfigurationSet } = require('../program_configuration');
|
|
6
6
|
const { TriangleIndexArray } = require('../index_array_type');
|
|
7
7
|
const EXTENT = require('../extent');
|
|
8
|
-
const mvt = require('@
|
|
8
|
+
const mvt = require('@mapwhit/vector-tile');
|
|
9
9
|
const vectorTileFeatureTypes = mvt.VectorTileFeature.types;
|
|
10
10
|
const { register } = require('../../util/transfer_registry');
|
|
11
11
|
const { hasPattern, addPatternDependencies } = require('./pattern_bucket_features');
|
|
@@ -26,13 +26,13 @@ const transformText = require('../../symbol/transform_text');
|
|
|
26
26
|
const mergeLines = require('../../symbol/mergelines');
|
|
27
27
|
const { allowsVerticalWritingMode } = require('../../util/script_detection');
|
|
28
28
|
const loadGeometry = require('../load_geometry');
|
|
29
|
-
const mvt = require('@
|
|
29
|
+
const mvt = require('@mapwhit/vector-tile');
|
|
30
30
|
const vectorTileFeatureTypes = mvt.VectorTileFeature.types;
|
|
31
31
|
const { verticalizedCharacterMap } = require('../../util/verticalize_punctuation');
|
|
32
32
|
const { getSizeData } = require('../../symbol/symbol_size');
|
|
33
33
|
const { register } = require('../../util/transfer_registry');
|
|
34
34
|
const EvaluationParameters = require('../../style/evaluation_parameters');
|
|
35
|
-
const { Formatted } = require('
|
|
35
|
+
const { Formatted } = require('@mapwhit/style-expressions');
|
|
36
36
|
|
|
37
37
|
// Opacity arrays are frequently updated but don't contain a lot of information, so we pack them
|
|
38
38
|
// tight. Each Uint32 is actually four duplicate Uint8s for the four corners of a glyph
|
|
@@ -267,8 +267,15 @@ class SymbolBucket {
|
|
|
267
267
|
|
|
268
268
|
let text;
|
|
269
269
|
if (hasText) {
|
|
270
|
-
|
|
271
|
-
|
|
270
|
+
// Expression evaluation will automatically coerce to Formatted
|
|
271
|
+
// but plain string token evaluation skips that pathway so do the
|
|
272
|
+
// conversion here.
|
|
273
|
+
const resolvedTokens = layer.getValueAndResolveTokens('text-field', feature);
|
|
274
|
+
text = transformText(
|
|
275
|
+
resolvedTokens instanceof Formatted ? resolvedTokens : Formatted.fromString(resolvedTokens),
|
|
276
|
+
layer,
|
|
277
|
+
feature
|
|
278
|
+
);
|
|
272
279
|
}
|
|
273
280
|
|
|
274
281
|
let icon;
|
|
@@ -300,19 +307,13 @@ class SymbolBucket {
|
|
|
300
307
|
|
|
301
308
|
if (text) {
|
|
302
309
|
const fontStack = textFont.evaluate(feature, {}).join(',');
|
|
303
|
-
const stack = (stacks[fontStack] = stacks[fontStack] || {});
|
|
304
310
|
const textAlongLine =
|
|
305
311
|
layout.get('text-rotation-alignment') === 'map' && layout.get('symbol-placement') !== 'point';
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
this.calculateGlyphDependencies(section.text, sectionStack, textAlongLine, doesAllowVerticalWritingMode);
|
|
312
|
-
}
|
|
313
|
-
} else {
|
|
314
|
-
const doesAllowVerticalWritingMode = allowsVerticalWritingMode(text);
|
|
315
|
-
this.calculateGlyphDependencies(text, stack, textAlongLine, doesAllowVerticalWritingMode);
|
|
312
|
+
for (const section of text.sections) {
|
|
313
|
+
const doesAllowVerticalWritingMode = allowsVerticalWritingMode(text.toString());
|
|
314
|
+
const sectionFont = section.fontStack || fontStack;
|
|
315
|
+
const sectionStack = (stacks[sectionFont] = stacks[sectionFont] || {});
|
|
316
|
+
this.calculateGlyphDependencies(section.text, sectionStack, textAlongLine, doesAllowVerticalWritingMode);
|
|
316
317
|
}
|
|
317
318
|
}
|
|
318
319
|
}
|
|
@@ -3,7 +3,7 @@ const EXTENT = require('./extent');
|
|
|
3
3
|
const featureFilter = require('../style-spec/feature_filter');
|
|
4
4
|
const Grid = require('grid-index');
|
|
5
5
|
const dictionaryCoder = require('../util/dictionary_coder');
|
|
6
|
-
const vt = require('@
|
|
6
|
+
const vt = require('@mapwhit/vector-tile');
|
|
7
7
|
const Protobuf = require('@mapwhit/pbf');
|
|
8
8
|
const GeoJSONFeature = require('../util/vectortile_to_geojson');
|
|
9
9
|
const { arraysIntersect } = require('../util/object');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const { packUint8ToFloat } = require('../shaders/encode_attribute');
|
|
2
|
-
const { supportsPropertyExpression } = require('
|
|
2
|
+
const { supportsPropertyExpression } = require('@mapwhit/style-expressions');
|
|
3
3
|
const { register } = require('../util/transfer_registry');
|
|
4
4
|
const { PossiblyEvaluatedPropertyValue } = require('../style/properties');
|
|
5
5
|
const {
|
package/src/gl/color_mode.js
CHANGED
package/src/gl/value.js
CHANGED
package/src/render/draw_debug.js
CHANGED
|
@@ -8,7 +8,7 @@ const DepthMode = require('../gl/depth_mode');
|
|
|
8
8
|
const StencilMode = require('../gl/stencil_mode');
|
|
9
9
|
const CullFaceMode = require('../gl/cull_face_mode');
|
|
10
10
|
const { debugUniformValues } = require('./program/debug_program');
|
|
11
|
-
const Color = require('
|
|
11
|
+
const { Color } = require('@mapwhit/style-expressions');
|
|
12
12
|
|
|
13
13
|
module.exports = drawDebug;
|
|
14
14
|
|
package/src/render/draw_fill.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const Texture = require('./texture');
|
|
2
|
-
const Color = require('
|
|
2
|
+
const { Color } = require('@mapwhit/style-expressions');
|
|
3
3
|
const DepthMode = require('../gl/depth_mode');
|
|
4
4
|
const StencilMode = require('../gl/stencil_mode');
|
|
5
5
|
const ColorMode = require('../gl/color_mode');
|
|
@@ -1,140 +1,16 @@
|
|
|
1
|
-
const loadGlyphRange = require('../style/load_glyph_range');
|
|
2
|
-
|
|
3
|
-
const TinySDF = require('@mapbox/tiny-sdf');
|
|
4
|
-
const isChar = require('../util/is_char_in_unicode_block');
|
|
5
|
-
const { AlphaImage } = require('../util/image');
|
|
6
|
-
|
|
7
1
|
class GlyphManager {
|
|
8
|
-
|
|
9
|
-
static loadGlyphRange = loadGlyphRange;
|
|
10
|
-
static TinySDF = TinySDF;
|
|
11
|
-
|
|
12
|
-
constructor(localIdeographFontFamily) {
|
|
13
|
-
this.localIdeographFontFamily = localIdeographFontFamily;
|
|
14
|
-
this.entries = {};
|
|
15
|
-
}
|
|
2
|
+
#cache = {};
|
|
16
3
|
|
|
17
4
|
setGlyphsLoader(loader) {
|
|
18
5
|
this.loader = loader;
|
|
19
6
|
}
|
|
20
7
|
|
|
21
|
-
async
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
const fetchedGlyphs = await Promise.all(all);
|
|
29
|
-
const result = {};
|
|
30
|
-
for (const { stack, id, glyph } of fetchedGlyphs) {
|
|
31
|
-
// Clone the glyph so that our own copy of its ArrayBuffer doesn't get transferred.
|
|
32
|
-
(result[stack] ??= {})[id] = cloneGlyph(glyph);
|
|
33
|
-
}
|
|
34
|
-
return result;
|
|
35
|
-
|
|
36
|
-
function cloneGlyph(glyph) {
|
|
37
|
-
if (glyph) {
|
|
38
|
-
return {
|
|
39
|
-
id: glyph.id,
|
|
40
|
-
bitmap: glyph.bitmap.clone(),
|
|
41
|
-
metrics: glyph.metrics
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
async function retrieveGlyph({ entries, loader, localIdeographFontFamily }, { stack, id }) {
|
|
47
|
-
const entry = (entries[stack] ??= { glyphs: {}, requests: {} });
|
|
48
|
-
|
|
49
|
-
let glyph = entry.glyphs[id];
|
|
50
|
-
if (glyph) {
|
|
51
|
-
return { stack, id, glyph };
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
glyph = tinySDF(localIdeographFontFamily, entry, stack, id);
|
|
55
|
-
if (glyph) {
|
|
56
|
-
return { stack, id, glyph };
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
const range = Math.floor(id / 256);
|
|
60
|
-
if (range * 256 > 65535) {
|
|
61
|
-
throw new Error('glyphs > 65535 not supported');
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
const promise = (entry.requests[range] ??= GlyphManager.loadGlyphRange(stack, range, loader));
|
|
65
|
-
const response = await promise;
|
|
66
|
-
if (response) {
|
|
67
|
-
for (const id in response) {
|
|
68
|
-
entry.glyphs[+id] = response[+id];
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
delete entry.requests[range];
|
|
72
|
-
return { stack, id, glyph: response?.[id] || null };
|
|
73
|
-
}
|
|
8
|
+
async loadGlyphRange(stack, range) {
|
|
9
|
+
this.#cache[stack] ??= {};
|
|
10
|
+
const promise = (this.#cache[stack][range] ??= this.loader(stack, range));
|
|
11
|
+
const response = await promise;
|
|
12
|
+
return response.slice();
|
|
74
13
|
}
|
|
75
14
|
}
|
|
76
15
|
|
|
77
16
|
module.exports = GlyphManager;
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Creates a glyph descriptor for a character using TinySDF if the character belongs to
|
|
81
|
-
* the CJK Unified Ideographs or Hangul Syllables ranges.
|
|
82
|
-
*
|
|
83
|
-
* The function checks if the provided font family is valid and whether the Unicode code
|
|
84
|
-
* point (id) falls within the supported character ranges. If so, it creates or reuses a
|
|
85
|
-
* TinySDF instance from the given entry to generate a bitmap for the character.
|
|
86
|
-
*
|
|
87
|
-
* @param {string} family - The font family to be used for rendering the glyph.
|
|
88
|
-
* @param {Object} entry - An object containing glyph-related data. May store a cached TinySDF instance.
|
|
89
|
-
* @param {string} stack - A string representing the font style stack (e.g., "bold", "medium", "light") to determine the font weight.
|
|
90
|
-
* @param {number} id - The Unicode code point of the character to render.
|
|
91
|
-
* @returns {Object|undefined} An object with the glyph descriptor containing:
|
|
92
|
-
* - id {number}: The Unicode code point.
|
|
93
|
-
* - bitmap {AlphaImage}: An image instance created from the glyph bitmap.
|
|
94
|
-
* - metrics {Object}: An object containing rendering metrics:
|
|
95
|
-
* - width {number}: The width of the glyph.
|
|
96
|
-
* - height {number}: The height of the glyph.
|
|
97
|
-
* - left {number}: The left bearing for the glyph.
|
|
98
|
-
* - top {number}: The top bearing for the glyph (used for vertical offset).
|
|
99
|
-
* - advance {number}: The advance width for spacing the glyph.
|
|
100
|
-
*
|
|
101
|
-
* Returns undefined if no font family is provided or if the character is not within the supported ranges.
|
|
102
|
-
*/
|
|
103
|
-
function tinySDF(family, entry, stack, id) {
|
|
104
|
-
if (!family) {
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
if (!isChar['CJK Unified Ideographs'](id) && !isChar['Hangul Syllables'](id)) {
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
const tinySDF = getTinySDF();
|
|
113
|
-
return {
|
|
114
|
-
id,
|
|
115
|
-
bitmap: new AlphaImage({ width: 30, height: 30 }, tinySDF.draw(String.fromCharCode(id))),
|
|
116
|
-
metrics: {
|
|
117
|
-
width: 24,
|
|
118
|
-
height: 24,
|
|
119
|
-
left: 0,
|
|
120
|
-
top: -8,
|
|
121
|
-
advance: 24
|
|
122
|
-
}
|
|
123
|
-
};
|
|
124
|
-
|
|
125
|
-
function getTinySDF() {
|
|
126
|
-
const { tinySDF } = entry;
|
|
127
|
-
if (tinySDF) {
|
|
128
|
-
return tinySDF;
|
|
129
|
-
}
|
|
130
|
-
let fontWeight = '400';
|
|
131
|
-
if (/bold/i.test(stack)) {
|
|
132
|
-
fontWeight = '900';
|
|
133
|
-
} else if (/medium/i.test(stack)) {
|
|
134
|
-
fontWeight = '500';
|
|
135
|
-
} else if (/light/i.test(stack)) {
|
|
136
|
-
fontWeight = '200';
|
|
137
|
-
}
|
|
138
|
-
return (entry.tinySDF = new GlyphManager.TinySDF(24, 3, 8, 0.25, family, fontWeight));
|
|
139
|
-
}
|
|
140
|
-
}
|
package/src/render/painter.js
CHANGED
|
@@ -20,7 +20,7 @@ const ColorMode = require('../gl/color_mode');
|
|
|
20
20
|
const CullFaceMode = require('../gl/cull_face_mode');
|
|
21
21
|
const updateTileMasks = require('./tile_mask');
|
|
22
22
|
const { clippingMaskUniformValues } = require('./program/clipping_mask_program');
|
|
23
|
-
const Color = require('
|
|
23
|
+
const { Color } = require('@mapwhit/style-expressions');
|
|
24
24
|
const symbol = require('./draw_symbol');
|
|
25
25
|
const circle = require('./draw_circle');
|
|
26
26
|
const heatmap = require('./draw_heatmap');
|
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
varying vec4 v_color;
|
|
2
|
-
#pragma mapbox: define lowp float base
|
|
3
|
-
#pragma mapbox: define lowp float height
|
|
4
|
-
#pragma mapbox: define highp vec4 color
|
|
5
2
|
|
|
6
3
|
void main() {
|
|
7
|
-
#pragma mapbox: initialize lowp float base
|
|
8
|
-
#pragma mapbox: initialize lowp float height
|
|
9
|
-
#pragma mapbox: initialize highp vec4 color
|
|
10
|
-
|
|
11
4
|
gl_FragColor = v_color;
|
|
12
5
|
|
|
13
6
|
#ifdef OVERDRAW_INSPECTOR
|
|
@@ -10,14 +10,14 @@ attribute vec4 a_normal_ed;
|
|
|
10
10
|
|
|
11
11
|
varying vec4 v_color;
|
|
12
12
|
|
|
13
|
-
#pragma mapbox: define
|
|
14
|
-
#pragma mapbox: define
|
|
13
|
+
#pragma mapbox: define highp float base
|
|
14
|
+
#pragma mapbox: define highp float height
|
|
15
15
|
|
|
16
16
|
#pragma mapbox: define highp vec4 color
|
|
17
17
|
|
|
18
18
|
void main() {
|
|
19
|
-
#pragma mapbox: initialize
|
|
20
|
-
#pragma mapbox: initialize
|
|
19
|
+
#pragma mapbox: initialize highp float base
|
|
20
|
+
#pragma mapbox: initialize highp float height
|
|
21
21
|
#pragma mapbox: initialize highp vec4 color
|
|
22
22
|
|
|
23
23
|
vec3 normal = a_normal_ed.xyz;
|
package/src/shaders/index.js
CHANGED
|
@@ -1,103 +1,103 @@
|
|
|
1
1
|
const shaders = {
|
|
2
2
|
prelude: {
|
|
3
|
-
fragmentSource: require('../../build/min/src/shaders/_prelude.fragment.glsl.
|
|
4
|
-
vertexSource: require('../../build/min/src/shaders/_prelude.vertex.glsl.
|
|
3
|
+
fragmentSource: require('../../build/min/src/shaders/_prelude.fragment.glsl.js'),
|
|
4
|
+
vertexSource: require('../../build/min/src/shaders/_prelude.vertex.glsl.js')
|
|
5
5
|
},
|
|
6
6
|
background: {
|
|
7
|
-
fragmentSource: require('../../build/min/src/shaders/background.fragment.glsl.
|
|
8
|
-
vertexSource: require('../../build/min/src/shaders/background.vertex.glsl.
|
|
7
|
+
fragmentSource: require('../../build/min/src/shaders/background.fragment.glsl.js'),
|
|
8
|
+
vertexSource: require('../../build/min/src/shaders/background.vertex.glsl.js')
|
|
9
9
|
},
|
|
10
10
|
backgroundPattern: {
|
|
11
|
-
fragmentSource: require('../../build/min/src/shaders/background_pattern.fragment.glsl.
|
|
12
|
-
vertexSource: require('../../build/min/src/shaders/background_pattern.vertex.glsl.
|
|
11
|
+
fragmentSource: require('../../build/min/src/shaders/background_pattern.fragment.glsl.js'),
|
|
12
|
+
vertexSource: require('../../build/min/src/shaders/background_pattern.vertex.glsl.js')
|
|
13
13
|
},
|
|
14
14
|
circle: {
|
|
15
|
-
fragmentSource: require('../../build/min/src/shaders/circle.fragment.glsl.
|
|
16
|
-
vertexSource: require('../../build/min/src/shaders/circle.vertex.glsl.
|
|
15
|
+
fragmentSource: require('../../build/min/src/shaders/circle.fragment.glsl.js'),
|
|
16
|
+
vertexSource: require('../../build/min/src/shaders/circle.vertex.glsl.js')
|
|
17
17
|
},
|
|
18
18
|
clippingMask: {
|
|
19
|
-
fragmentSource: require('../../build/min/src/shaders/clipping_mask.fragment.glsl.
|
|
20
|
-
vertexSource: require('../../build/min/src/shaders/clipping_mask.vertex.glsl.
|
|
19
|
+
fragmentSource: require('../../build/min/src/shaders/clipping_mask.fragment.glsl.js'),
|
|
20
|
+
vertexSource: require('../../build/min/src/shaders/clipping_mask.vertex.glsl.js')
|
|
21
21
|
},
|
|
22
22
|
heatmap: {
|
|
23
|
-
fragmentSource: require('../../build/min/src/shaders/heatmap.fragment.glsl.
|
|
24
|
-
vertexSource: require('../../build/min/src/shaders/heatmap.vertex.glsl.
|
|
23
|
+
fragmentSource: require('../../build/min/src/shaders/heatmap.fragment.glsl.js'),
|
|
24
|
+
vertexSource: require('../../build/min/src/shaders/heatmap.vertex.glsl.js')
|
|
25
25
|
},
|
|
26
26
|
heatmapTexture: {
|
|
27
|
-
fragmentSource: require('../../build/min/src/shaders/heatmap_texture.fragment.glsl.
|
|
28
|
-
vertexSource: require('../../build/min/src/shaders/heatmap_texture.vertex.glsl.
|
|
27
|
+
fragmentSource: require('../../build/min/src/shaders/heatmap_texture.fragment.glsl.js'),
|
|
28
|
+
vertexSource: require('../../build/min/src/shaders/heatmap_texture.vertex.glsl.js')
|
|
29
29
|
},
|
|
30
30
|
collisionBox: {
|
|
31
|
-
fragmentSource: require('../../build/min/src/shaders/collision_box.fragment.glsl.
|
|
32
|
-
vertexSource: require('../../build/min/src/shaders/collision_box.vertex.glsl.
|
|
31
|
+
fragmentSource: require('../../build/min/src/shaders/collision_box.fragment.glsl.js'),
|
|
32
|
+
vertexSource: require('../../build/min/src/shaders/collision_box.vertex.glsl.js')
|
|
33
33
|
},
|
|
34
34
|
collisionCircle: {
|
|
35
|
-
fragmentSource: require('../../build/min/src/shaders/collision_circle.fragment.glsl.
|
|
36
|
-
vertexSource: require('../../build/min/src/shaders/collision_circle.vertex.glsl.
|
|
35
|
+
fragmentSource: require('../../build/min/src/shaders/collision_circle.fragment.glsl.js'),
|
|
36
|
+
vertexSource: require('../../build/min/src/shaders/collision_circle.vertex.glsl.js')
|
|
37
37
|
},
|
|
38
38
|
debug: {
|
|
39
|
-
fragmentSource: require('../../build/min/src/shaders/debug.fragment.glsl.
|
|
40
|
-
vertexSource: require('../../build/min/src/shaders/debug.vertex.glsl.
|
|
39
|
+
fragmentSource: require('../../build/min/src/shaders/debug.fragment.glsl.js'),
|
|
40
|
+
vertexSource: require('../../build/min/src/shaders/debug.vertex.glsl.js')
|
|
41
41
|
},
|
|
42
42
|
fill: {
|
|
43
|
-
fragmentSource: require('../../build/min/src/shaders/fill.fragment.glsl.
|
|
44
|
-
vertexSource: require('../../build/min/src/shaders/fill.vertex.glsl.
|
|
43
|
+
fragmentSource: require('../../build/min/src/shaders/fill.fragment.glsl.js'),
|
|
44
|
+
vertexSource: require('../../build/min/src/shaders/fill.vertex.glsl.js')
|
|
45
45
|
},
|
|
46
46
|
fillOutline: {
|
|
47
|
-
fragmentSource: require('../../build/min/src/shaders/fill_outline.fragment.glsl.
|
|
48
|
-
vertexSource: require('../../build/min/src/shaders/fill_outline.vertex.glsl.
|
|
47
|
+
fragmentSource: require('../../build/min/src/shaders/fill_outline.fragment.glsl.js'),
|
|
48
|
+
vertexSource: require('../../build/min/src/shaders/fill_outline.vertex.glsl.js')
|
|
49
49
|
},
|
|
50
50
|
fillOutlinePattern: {
|
|
51
|
-
fragmentSource: require('../../build/min/src/shaders/fill_outline_pattern.fragment.glsl.
|
|
52
|
-
vertexSource: require('../../build/min/src/shaders/fill_outline_pattern.vertex.glsl.
|
|
51
|
+
fragmentSource: require('../../build/min/src/shaders/fill_outline_pattern.fragment.glsl.js'),
|
|
52
|
+
vertexSource: require('../../build/min/src/shaders/fill_outline_pattern.vertex.glsl.js')
|
|
53
53
|
},
|
|
54
54
|
fillPattern: {
|
|
55
|
-
fragmentSource: require('../../build/min/src/shaders/fill_pattern.fragment.glsl.
|
|
56
|
-
vertexSource: require('../../build/min/src/shaders/fill_pattern.vertex.glsl.
|
|
55
|
+
fragmentSource: require('../../build/min/src/shaders/fill_pattern.fragment.glsl.js'),
|
|
56
|
+
vertexSource: require('../../build/min/src/shaders/fill_pattern.vertex.glsl.js')
|
|
57
57
|
},
|
|
58
58
|
fillExtrusion: {
|
|
59
|
-
fragmentSource: require('../../build/min/src/shaders/fill_extrusion.fragment.glsl.
|
|
60
|
-
vertexSource: require('../../build/min/src/shaders/fill_extrusion.vertex.glsl.
|
|
59
|
+
fragmentSource: require('../../build/min/src/shaders/fill_extrusion.fragment.glsl.js'),
|
|
60
|
+
vertexSource: require('../../build/min/src/shaders/fill_extrusion.vertex.glsl.js')
|
|
61
61
|
},
|
|
62
62
|
fillExtrusionPattern: {
|
|
63
|
-
fragmentSource: require('../../build/min/src/shaders/fill_extrusion_pattern.fragment.glsl.
|
|
64
|
-
vertexSource: require('../../build/min/src/shaders/fill_extrusion_pattern.vertex.glsl.
|
|
63
|
+
fragmentSource: require('../../build/min/src/shaders/fill_extrusion_pattern.fragment.glsl.js'),
|
|
64
|
+
vertexSource: require('../../build/min/src/shaders/fill_extrusion_pattern.vertex.glsl.js')
|
|
65
65
|
},
|
|
66
66
|
hillshadePrepare: {
|
|
67
|
-
fragmentSource: require('../../build/min/src/shaders/hillshade_prepare.fragment.glsl.
|
|
68
|
-
vertexSource: require('../../build/min/src/shaders/hillshade_prepare.vertex.glsl.
|
|
67
|
+
fragmentSource: require('../../build/min/src/shaders/hillshade_prepare.fragment.glsl.js'),
|
|
68
|
+
vertexSource: require('../../build/min/src/shaders/hillshade_prepare.vertex.glsl.js')
|
|
69
69
|
},
|
|
70
70
|
hillshade: {
|
|
71
|
-
fragmentSource: require('../../build/min/src/shaders/hillshade.fragment.glsl.
|
|
72
|
-
vertexSource: require('../../build/min/src/shaders/hillshade.vertex.glsl.
|
|
71
|
+
fragmentSource: require('../../build/min/src/shaders/hillshade.fragment.glsl.js'),
|
|
72
|
+
vertexSource: require('../../build/min/src/shaders/hillshade.vertex.glsl.js')
|
|
73
73
|
},
|
|
74
74
|
line: {
|
|
75
|
-
fragmentSource: require('../../build/min/src/shaders/line.fragment.glsl.
|
|
76
|
-
vertexSource: require('../../build/min/src/shaders/line.vertex.glsl.
|
|
75
|
+
fragmentSource: require('../../build/min/src/shaders/line.fragment.glsl.js'),
|
|
76
|
+
vertexSource: require('../../build/min/src/shaders/line.vertex.glsl.js')
|
|
77
77
|
},
|
|
78
78
|
lineGradient: {
|
|
79
|
-
fragmentSource: require('../../build/min/src/shaders/line_gradient.fragment.glsl.
|
|
80
|
-
vertexSource: require('../../build/min/src/shaders/line_gradient.vertex.glsl.
|
|
79
|
+
fragmentSource: require('../../build/min/src/shaders/line_gradient.fragment.glsl.js'),
|
|
80
|
+
vertexSource: require('../../build/min/src/shaders/line_gradient.vertex.glsl.js')
|
|
81
81
|
},
|
|
82
82
|
linePattern: {
|
|
83
|
-
fragmentSource: require('../../build/min/src/shaders/line_pattern.fragment.glsl.
|
|
84
|
-
vertexSource: require('../../build/min/src/shaders/line_pattern.vertex.glsl.
|
|
83
|
+
fragmentSource: require('../../build/min/src/shaders/line_pattern.fragment.glsl.js'),
|
|
84
|
+
vertexSource: require('../../build/min/src/shaders/line_pattern.vertex.glsl.js')
|
|
85
85
|
},
|
|
86
86
|
lineSDF: {
|
|
87
|
-
fragmentSource: require('../../build/min/src/shaders/line_sdf.fragment.glsl.
|
|
88
|
-
vertexSource: require('../../build/min/src/shaders/line_sdf.vertex.glsl.
|
|
87
|
+
fragmentSource: require('../../build/min/src/shaders/line_sdf.fragment.glsl.js'),
|
|
88
|
+
vertexSource: require('../../build/min/src/shaders/line_sdf.vertex.glsl.js')
|
|
89
89
|
},
|
|
90
90
|
raster: {
|
|
91
|
-
fragmentSource: require('../../build/min/src/shaders/raster.fragment.glsl.
|
|
92
|
-
vertexSource: require('../../build/min/src/shaders/raster.vertex.glsl.
|
|
91
|
+
fragmentSource: require('../../build/min/src/shaders/raster.fragment.glsl.js'),
|
|
92
|
+
vertexSource: require('../../build/min/src/shaders/raster.vertex.glsl.js')
|
|
93
93
|
},
|
|
94
94
|
symbolIcon: {
|
|
95
|
-
fragmentSource: require('../../build/min/src/shaders/symbol_icon.fragment.glsl.
|
|
96
|
-
vertexSource: require('../../build/min/src/shaders/symbol_icon.vertex.glsl.
|
|
95
|
+
fragmentSource: require('../../build/min/src/shaders/symbol_icon.fragment.glsl.js'),
|
|
96
|
+
vertexSource: require('../../build/min/src/shaders/symbol_icon.vertex.glsl.js')
|
|
97
97
|
},
|
|
98
98
|
symbolSDF: {
|
|
99
|
-
fragmentSource: require('../../build/min/src/shaders/symbol_sdf.fragment.glsl.
|
|
100
|
-
vertexSource: require('../../build/min/src/shaders/symbol_sdf.vertex.glsl.
|
|
99
|
+
fragmentSource: require('../../build/min/src/shaders/symbol_sdf.fragment.glsl.js'),
|
|
100
|
+
vertexSource: require('../../build/min/src/shaders/symbol_sdf.vertex.glsl.js')
|
|
101
101
|
}
|
|
102
102
|
};
|
|
103
103
|
|
|
@@ -2,7 +2,7 @@ const rewind = require('@mapwhit/geojson-rewind');
|
|
|
2
2
|
const GeoJSONWrapper = require('./geojson_wrapper');
|
|
3
3
|
const vtpbf = require('@mapwhit/vt-pbf');
|
|
4
4
|
const supercluster = require('supercluster');
|
|
5
|
-
const geojsonvt = require('geojson-vt');
|
|
5
|
+
const { default: geojsonvt } = require('geojson-vt');
|
|
6
6
|
const VectorTileWorkerSource = require('./vector_tile_worker_source');
|
|
7
7
|
|
|
8
8
|
function loadGeoJSONTile(params) {
|
|
@@ -46,7 +46,7 @@ function loadGeoJSONTile(params) {
|
|
|
46
46
|
* This class is designed to be easily reused to support custom source types
|
|
47
47
|
* for data formats that can be parsed/converted into an in-memory GeoJSON
|
|
48
48
|
* representation. To do so, create it with
|
|
49
|
-
* `new GeoJSONWorkerSource(
|
|
49
|
+
* `new GeoJSONWorkerSource(resources, layerIndex, customLoadGeoJSONFunction)`.
|
|
50
50
|
* For a full example, see [mapbox-gl-topojson](https://github.com/developmentseed/mapbox-gl-topojson).
|
|
51
51
|
*
|
|
52
52
|
*/
|
|
@@ -56,8 +56,8 @@ class GeoJSONWorkerSource extends VectorTileWorkerSource {
|
|
|
56
56
|
* GeoJSON based on parameters passed from the main-thread Source.
|
|
57
57
|
* See {@link GeoJSONWorkerSource#loadGeoJSON}.
|
|
58
58
|
*/
|
|
59
|
-
constructor(
|
|
60
|
-
super(
|
|
59
|
+
constructor(resources, layerIndex, loadGeoJSON) {
|
|
60
|
+
super(resources, layerIndex, loadGeoJSONTile);
|
|
61
61
|
if (loadGeoJSON) {
|
|
62
62
|
this.loadGeoJSON = loadGeoJSON;
|
|
63
63
|
}
|