maplibre-gl 2.1.1 → 2.1.2
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/{banner.js → banner.ts} +1 -1
- package/build/generate-query-test-fixtures.ts +123 -0
- package/build/generate-shaders.ts +35 -0
- package/build/generate-struct-arrays.ts +7 -7
- package/build/generate-style-code.ts +8 -8
- package/build/generate-style-spec.ts +5 -4
- package/build/generate-typings.ts +16 -0
- package/build/readme.md +8 -18
- package/build/release-notes.js +9 -13
- package/build/{rollup_plugin_minify_style_spec.js → rollup_plugin_minify_style_spec.ts} +4 -3
- package/build/{rollup_plugins.js → rollup_plugins.ts} +11 -26
- package/dist/maplibre-gl-dev.js +522 -226
- package/dist/maplibre-gl.css +1 -1
- package/dist/maplibre-gl.d.ts +1536 -1010
- package/dist/maplibre-gl.js +3 -3
- package/dist/maplibre-gl.js.map +1 -1
- package/package.json +40 -61
- package/src/data/{array_types.ts → array_types.g.ts} +0 -0
- package/src/data/bucket/circle_bucket.ts +1 -1
- package/src/data/bucket/fill_bucket.test.ts +1 -1
- package/src/data/bucket/fill_bucket.ts +4 -4
- package/src/data/bucket/fill_extrusion_bucket.ts +1 -1
- package/src/data/bucket/line_bucket.test.ts +1 -1
- package/src/data/bucket/line_bucket.ts +6 -6
- package/src/data/bucket/symbol_bucket.test.ts +16 -16
- package/src/data/bucket/symbol_bucket.ts +53 -53
- package/src/data/bucket.ts +43 -43
- package/src/data/dem_data.ts +12 -12
- package/src/data/evaluation_feature.ts +10 -10
- package/src/data/feature_index.ts +37 -37
- package/src/data/feature_position_map.ts +5 -5
- package/src/data/index_array_type.ts +1 -1
- package/src/data/load_geometry.test.ts +1 -1
- package/src/data/program_configuration.ts +46 -46
- package/src/data/segment.ts +14 -14
- package/src/geo/edge_insets.ts +2 -2
- package/src/geo/lng_lat.ts +4 -4
- package/src/geo/lng_lat_bounds.ts +35 -35
- package/src/geo/mercator_coordinate.ts +5 -5
- package/src/geo/transform.test.ts +1 -1
- package/src/geo/transform.ts +14 -14
- package/src/gl/context.ts +3 -3
- package/src/gl/types.ts +19 -19
- package/src/gl/value.ts +6 -6
- package/src/gl/vertex_buffer.test.ts +1 -1
- package/src/index.ts +24 -9
- package/src/render/draw_circle.ts +8 -8
- package/src/render/draw_collision_debug.ts +5 -5
- package/src/render/draw_line.ts +4 -4
- package/src/render/draw_symbol.ts +21 -21
- package/src/render/glyph_atlas.ts +12 -12
- package/src/render/glyph_manager.test.ts +10 -21
- package/src/render/glyph_manager.ts +33 -32
- package/src/render/image_manager.ts +4 -4
- package/src/render/painter.ts +11 -11
- package/src/render/program/background_program.ts +29 -29
- package/src/render/program/circle_program.ts +10 -10
- package/src/render/program/clipping_mask_program.ts +1 -1
- package/src/render/program/collision_program.ts +9 -9
- package/src/render/program/debug_program.ts +4 -4
- package/src/render/program/fill_extrusion_program.ts +31 -31
- package/src/render/program/fill_program.ts +29 -29
- package/src/render/program/heatmap_program.ts +12 -12
- package/src/render/program/hillshade_program.ts +12 -12
- package/src/render/program/line_program.ts +38 -38
- package/src/render/program/pattern.ts +28 -28
- package/src/render/program/raster_program.ts +21 -21
- package/src/render/program/symbol_program.ts +96 -96
- package/src/render/program.ts +25 -25
- package/src/render/texture.ts +9 -9
- package/src/render/uniform_binding.ts +1 -1
- package/src/render/vertex_array_object.ts +13 -13
- package/src/shaders/_prelude.fragment.glsl.g.ts +2 -0
- package/src/shaders/_prelude.vertex.glsl.g.ts +2 -0
- package/src/shaders/background.fragment.glsl.g.ts +2 -0
- package/src/shaders/background.vertex.glsl.g.ts +2 -0
- package/src/shaders/background_pattern.fragment.glsl.g.ts +2 -0
- package/src/shaders/background_pattern.vertex.glsl.g.ts +2 -0
- package/src/shaders/circle.fragment.glsl.g.ts +2 -0
- package/src/shaders/circle.vertex.glsl.g.ts +2 -0
- package/src/shaders/clipping_mask.fragment.glsl.g.ts +2 -0
- package/src/shaders/clipping_mask.vertex.glsl.g.ts +2 -0
- package/src/shaders/collision_box.fragment.glsl.g.ts +2 -0
- package/src/shaders/collision_box.vertex.glsl.g.ts +2 -0
- package/src/shaders/collision_circle.fragment.glsl.g.ts +2 -0
- package/src/shaders/collision_circle.vertex.glsl.g.ts +2 -0
- package/src/shaders/debug.fragment.glsl.g.ts +2 -0
- package/src/shaders/debug.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill_extrusion.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill_extrusion.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill_extrusion_pattern.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill_extrusion_pattern.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill_outline.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill_outline.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill_outline_pattern.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill_outline_pattern.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill_pattern.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill_pattern.vertex.glsl.g.ts +2 -0
- package/src/shaders/heatmap.fragment.glsl.g.ts +2 -0
- package/src/shaders/heatmap.vertex.glsl.g.ts +2 -0
- package/src/shaders/heatmap_texture.fragment.glsl.g.ts +2 -0
- package/src/shaders/heatmap_texture.vertex.glsl.g.ts +2 -0
- package/src/shaders/hillshade.fragment.glsl.g.ts +2 -0
- package/src/shaders/hillshade.vertex.glsl.g.ts +2 -0
- package/src/shaders/hillshade_prepare.fragment.glsl.g.ts +2 -0
- package/src/shaders/hillshade_prepare.vertex.glsl.g.ts +2 -0
- package/src/shaders/line.fragment.glsl.g.ts +2 -0
- package/src/shaders/line.vertex.glsl.g.ts +2 -0
- package/src/shaders/line_gradient.fragment.glsl.g.ts +2 -0
- package/src/shaders/line_gradient.vertex.glsl.g.ts +2 -0
- package/src/shaders/line_pattern.fragment.glsl.g.ts +2 -0
- package/src/shaders/line_pattern.vertex.glsl.g.ts +2 -0
- package/src/shaders/line_sdf.fragment.glsl.g.ts +2 -0
- package/src/shaders/line_sdf.vertex.glsl.g.ts +2 -0
- package/src/shaders/raster.fragment.glsl.g.ts +2 -0
- package/src/shaders/raster.vertex.glsl.g.ts +2 -0
- package/src/shaders/shaders.ts +52 -55
- package/src/shaders/symbol_icon.fragment.glsl.g.ts +2 -0
- package/src/shaders/symbol_icon.vertex.glsl.g.ts +2 -0
- package/src/shaders/symbol_sdf.fragment.glsl.g.ts +2 -0
- package/src/shaders/symbol_sdf.vertex.glsl.g.ts +2 -0
- package/src/shaders/symbol_text_and_icon.fragment.glsl.g.ts +2 -0
- package/src/shaders/symbol_text_and_icon.vertex.glsl.g.ts +2 -0
- package/src/source/canvas_source.test.ts +11 -12
- package/src/source/canvas_source.ts +4 -4
- package/src/source/geojson_worker_source.ts +23 -23
- package/src/source/geojson_wrapper.ts +8 -8
- package/src/source/image_source.test.ts +2 -2
- package/src/source/image_source.ts +6 -6
- package/src/source/pixels_to_tile_units.ts +6 -6
- package/src/source/query_features.ts +20 -20
- package/src/source/raster_dem_tile_source.test.ts +2 -2
- package/src/source/raster_tile_source.test.ts +2 -2
- package/src/source/rtl_text_plugin.ts +10 -10
- package/src/source/source.ts +29 -29
- package/src/source/source_cache.test.ts +32 -0
- package/src/source/source_cache.ts +7 -5
- package/src/source/source_state.ts +1 -1
- package/src/source/tile.test.ts +3 -3
- package/src/source/tile.ts +15 -15
- package/src/source/tile_cache.ts +6 -6
- package/src/source/tile_id.test.ts +0 -1
- package/src/source/vector_tile_source.test.ts +3 -3
- package/src/source/vector_tile_source.ts +1 -1
- package/src/source/vector_tile_worker_source.test.ts +4 -4
- package/src/source/vector_tile_worker_source.ts +5 -5
- package/src/source/worker.test.ts +1 -1
- package/src/source/worker.ts +22 -22
- package/src/source/worker_source.ts +56 -56
- package/src/source/worker_tile.ts +4 -4
- package/src/style/evaluation_parameters.ts +3 -3
- package/src/style/format_section_override.test.ts +1 -1
- package/src/style/light.ts +10 -10
- package/src/style/load_glyph_range.test.ts +3 -3
- package/src/style/load_glyph_range.ts +6 -6
- package/src/style/load_sprite.ts +4 -4
- package/src/style/pauseable_placement.ts +1 -1
- package/src/style/properties.ts +69 -69
- package/src/style/query_utils.ts +7 -7
- package/src/style/style.test.ts +2 -2
- package/src/style/style.ts +29 -29
- package/src/style/style_glyph.ts +8 -8
- package/src/style/style_image.ts +58 -58
- package/src/style/style_layer/background_style_layer.ts +2 -2
- package/src/style/style_layer/{background_style_layer_properties.ts → background_style_layer_properties.g.ts} +0 -0
- package/src/style/style_layer/circle_style_layer.ts +10 -10
- package/src/style/style_layer/{circle_style_layer_properties.ts → circle_style_layer_properties.g.ts} +0 -0
- package/src/style/style_layer/custom_style_layer.ts +17 -17
- package/src/style/style_layer/fill_extrusion_style_layer.ts +10 -10
- package/src/style/style_layer/{fill_extrusion_style_layer_properties.ts → fill_extrusion_style_layer_properties.g.ts} +0 -0
- package/src/style/style_layer/fill_style_layer.ts +9 -9
- package/src/style/style_layer/{fill_style_layer_properties.ts → fill_style_layer_properties.g.ts} +0 -0
- package/src/style/style_layer/heatmap_style_layer.ts +2 -2
- package/src/style/style_layer/{heatmap_style_layer_properties.ts → heatmap_style_layer_properties.g.ts} +0 -0
- package/src/style/style_layer/hillshade_style_layer.ts +2 -2
- package/src/style/style_layer/{hillshade_style_layer_properties.ts → hillshade_style_layer_properties.g.ts} +0 -0
- package/src/style/style_layer/line_style_layer.ts +9 -9
- package/src/style/style_layer/{line_style_layer_properties.ts → line_style_layer_properties.g.ts} +0 -0
- package/src/style/style_layer/raster_style_layer.ts +2 -2
- package/src/style/style_layer/{raster_style_layer_properties.ts → raster_style_layer_properties.g.ts} +0 -0
- package/src/style/style_layer/symbol_style_layer.ts +7 -7
- package/src/style/style_layer/{symbol_style_layer_properties.ts → symbol_style_layer_properties.g.ts} +0 -0
- package/src/style/style_layer.ts +10 -10
- package/src/style/style_layer_index.ts +3 -3
- package/src/style/validate_style.ts +15 -15
- package/src/style-spec/error/validation_error.ts +1 -1
- package/src/style-spec/expression/compound_expression.ts +3 -3
- package/src/style-spec/expression/definitions/format.ts +11 -11
- package/src/style-spec/expression/definitions/interpolate.ts +5 -5
- package/src/style-spec/expression/definitions/match.ts +2 -2
- package/src/style-spec/expression/definitions/number_format.ts +11 -11
- package/src/style-spec/expression/expression.ts +8 -8
- package/src/style-spec/expression/index.ts +97 -97
- package/src/style-spec/expression/parsing_context.ts +11 -11
- package/src/style-spec/expression/types/collator.ts +9 -9
- package/src/style-spec/expression/types/resolved_image.ts +2 -2
- package/src/style-spec/expression/types.ts +14 -14
- package/src/style-spec/expression/values.ts +1 -1
- package/src/style-spec/feature_filter/index.ts +66 -66
- package/src/style-spec/function/convert.ts +3 -3
- package/src/style-spec/style-spec.ts +44 -44
- package/src/style-spec/util/color_spaces.ts +8 -8
- package/src/style-spec/util/result.ts +4 -4
- package/src/style-spec/validate/validate_filter.ts +58 -58
- package/src/style-spec/validate/validate_source.ts +63 -63
- package/src/style-spec/visit.ts +11 -11
- package/src/symbol/collision_feature.test.ts +1 -1
- package/src/symbol/collision_feature.ts +10 -10
- package/src/symbol/collision_index.ts +26 -26
- package/src/symbol/cross_tile_symbol_index.ts +17 -17
- package/src/symbol/get_anchors.ts +16 -16
- package/src/symbol/grid_index.ts +7 -7
- package/src/symbol/placement.ts +72 -72
- package/src/symbol/projection.ts +30 -30
- package/src/symbol/quads.ts +30 -30
- package/src/symbol/shaping.ts +160 -160
- package/src/symbol/symbol_layout.ts +119 -119
- package/src/symbol/symbol_size.ts +29 -29
- package/src/symbol/symbol_style_layer.test.ts +1 -1
- package/src/types/cancelable.ts +1 -1
- package/src/types/tilejson.ts +13 -13
- package/src/ui/anchor.ts +1 -1
- package/src/ui/camera.test.ts +5 -5
- package/src/ui/camera.ts +18 -18
- package/src/ui/control/attribution_control.test.ts +51 -16
- package/src/ui/control/attribution_control.ts +35 -16
- package/src/ui/control/control.ts +40 -40
- package/src/ui/control/fullscreen_control.ts +1 -1
- package/src/ui/control/geolocate_control.test.ts +1 -1
- package/src/ui/control/geolocate_control.ts +102 -102
- package/src/ui/control/logo_control.test.ts +4 -4
- package/src/ui/control/navigation_control.ts +3 -3
- package/src/ui/control/scale_control.test.ts +2 -2
- package/src/ui/control/scale_control.ts +5 -5
- package/src/ui/events.ts +289 -200
- package/src/ui/handler/box_zoom.test.ts +1 -1
- package/src/ui/handler/box_zoom.ts +1 -1
- package/src/ui/handler/dblclick_zoom.test.ts +1 -1
- package/src/ui/handler/drag_pan.test.ts +1 -1
- package/src/ui/handler/drag_rotate.test.ts +1 -1
- package/src/ui/handler/keyboard.test.ts +1 -1
- package/src/ui/handler/keyboard.ts +51 -51
- package/src/ui/handler/map_event.test.ts +1 -1
- package/src/ui/handler/map_event.ts +1 -1
- package/src/ui/handler/mouse.ts +1 -1
- package/src/ui/handler/mouse_rotate.test.ts +1 -1
- package/src/ui/handler/scroll_zoom.test.ts +1 -1
- package/src/ui/handler/scroll_zoom.ts +9 -9
- package/src/ui/handler/shim/drag_pan.ts +4 -4
- package/src/ui/handler/shim/drag_rotate.ts +1 -1
- package/src/ui/handler/shim/touch_zoom_rotate.ts +1 -1
- package/src/ui/handler/tap_recognizer.ts +4 -4
- package/src/ui/handler/touch_pan.ts +2 -2
- package/src/ui/handler/touch_zoom_rotate.test.ts +1 -1
- package/src/ui/handler/touch_zoom_rotate.ts +1 -1
- package/src/ui/handler_inertia.ts +6 -6
- package/src/ui/handler_manager.ts +44 -44
- package/src/ui/map/isMoving.test.ts +1 -1
- package/src/ui/map/isRotating.test.ts +1 -1
- package/src/ui/map/isZooming.test.ts +1 -1
- package/src/ui/map.test.ts +10 -4
- package/src/ui/map.ts +106 -101
- package/src/ui/map_events.test.ts +1 -1
- package/src/ui/marker.test.ts +12 -12
- package/src/ui/marker.ts +37 -37
- package/src/ui/popup.test.ts +7 -7
- package/src/ui/popup.ts +9 -9
- package/src/util/actor.test.ts +41 -10
- package/src/util/actor.ts +8 -8
- package/src/util/ajax.test.ts +29 -21
- package/src/util/ajax.ts +51 -30
- package/src/util/browser.ts +1 -1
- package/src/util/classify_rings.test.ts +1 -1
- package/src/util/color_ramp.ts +5 -5
- package/src/util/config.ts +2 -2
- package/src/util/dispatcher.ts +1 -1
- package/src/util/dom.ts +2 -2
- package/src/util/evented.ts +1 -1
- package/src/util/find_pole_of_inaccessibility.ts +3 -3
- package/src/util/image.ts +5 -5
- package/src/util/performance.ts +7 -7
- package/src/util/request_manager.ts +4 -4
- package/src/util/resolve_tokens.ts +4 -4
- package/src/util/struct_array.test.ts +1 -1
- package/src/util/struct_array.ts +15 -15
- package/src/util/task_queue.ts +3 -3
- package/src/util/tile_request_cache.ts +3 -3
- package/src/util/transferable_grid_index.ts +4 -4
- package/src/util/util.ts +8 -8
- package/src/util/web_worker.ts +4 -68
- package/src/util/web_worker_transfer.test.ts +3 -0
- package/src/util/web_worker_transfer.ts +21 -17
- package/src/util/worker_pool.ts +1 -1
- package/build/.eslintrc +0 -21
- package/build/glsl_to_js.js +0 -12
- package/build/post-ts-build.js +0 -43
- package/build/release-notes.md.ejs +0 -8
- package/build/test/build-tape.js +0 -17
- package/build/web_worker_replacement.js +0 -5
- package/dist/package.json +0 -1
- package/src/style-spec/validate_spec.test.ts +0 -29
- package/src/symbol/shaping.test.ts +0 -392
- package/src/types/glsl.d.ts +0 -4
|
@@ -126,51 +126,51 @@ class LngLatBounds {
|
|
|
126
126
|
getSouthWest(): LngLat { return this._sw; }
|
|
127
127
|
|
|
128
128
|
/**
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
129
|
+
* Returns the northeast corner of the bounding box.
|
|
130
|
+
*
|
|
131
|
+
* @returns {LngLat} The northeast corner of the bounding box.
|
|
132
132
|
*/
|
|
133
133
|
getNorthEast(): LngLat { return this._ne; }
|
|
134
134
|
|
|
135
135
|
/**
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
136
|
+
* Returns the northwest corner of the bounding box.
|
|
137
|
+
*
|
|
138
|
+
* @returns {LngLat} The northwest corner of the bounding box.
|
|
139
139
|
*/
|
|
140
140
|
getNorthWest(): LngLat { return new LngLat(this.getWest(), this.getNorth()); }
|
|
141
141
|
|
|
142
142
|
/**
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
143
|
+
* Returns the southeast corner of the bounding box.
|
|
144
|
+
*
|
|
145
|
+
* @returns {LngLat} The southeast corner of the bounding box.
|
|
146
146
|
*/
|
|
147
147
|
getSouthEast(): LngLat { return new LngLat(this.getEast(), this.getSouth()); }
|
|
148
148
|
|
|
149
149
|
/**
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
150
|
+
* Returns the west edge of the bounding box.
|
|
151
|
+
*
|
|
152
|
+
* @returns {number} The west edge of the bounding box.
|
|
153
153
|
*/
|
|
154
154
|
getWest(): number { return this._sw.lng; }
|
|
155
155
|
|
|
156
156
|
/**
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
157
|
+
* Returns the south edge of the bounding box.
|
|
158
|
+
*
|
|
159
|
+
* @returns {number} The south edge of the bounding box.
|
|
160
160
|
*/
|
|
161
161
|
getSouth(): number { return this._sw.lat; }
|
|
162
162
|
|
|
163
163
|
/**
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
164
|
+
* Returns the east edge of the bounding box.
|
|
165
|
+
*
|
|
166
|
+
* @returns {number} The east edge of the bounding box.
|
|
167
167
|
*/
|
|
168
168
|
getEast(): number { return this._ne.lng; }
|
|
169
169
|
|
|
170
170
|
/**
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
171
|
+
* Returns the north edge of the bounding box.
|
|
172
|
+
*
|
|
173
|
+
* @returns {number} The north edge of the bounding box.
|
|
174
174
|
*/
|
|
175
175
|
getNorth(): number { return this._ne.lat; }
|
|
176
176
|
|
|
@@ -210,20 +210,20 @@ class LngLatBounds {
|
|
|
210
210
|
}
|
|
211
211
|
|
|
212
212
|
/**
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
213
|
+
* Check if the point is within the bounding box.
|
|
214
|
+
*
|
|
215
|
+
* @param {LngLatLike} lnglat geographic point to check against.
|
|
216
|
+
* @returns {boolean} True if the point is within the bounding box.
|
|
217
|
+
* @example
|
|
218
|
+
* var llb = new maplibregl.LngLatBounds(
|
|
219
|
+
* new maplibregl.LngLat(-73.9876, 40.7661),
|
|
220
|
+
* new maplibregl.LngLat(-73.9397, 40.8002)
|
|
221
|
+
* );
|
|
222
|
+
*
|
|
223
|
+
* var ll = new maplibregl.LngLat(-73.9567, 40.7789);
|
|
224
|
+
*
|
|
225
|
+
* console.log(llb.contains(ll)); // = true
|
|
226
|
+
*/
|
|
227
227
|
contains(lnglat: LngLatLike) {
|
|
228
228
|
const {lng, lat} = LngLat.convert(lnglat);
|
|
229
229
|
|
|
@@ -99,9 +99,9 @@ class MercatorCoordinate {
|
|
|
99
99
|
const lngLat = LngLat.convert(lngLatLike);
|
|
100
100
|
|
|
101
101
|
return new MercatorCoordinate(
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
102
|
+
mercatorXfromLng(lngLat.lng),
|
|
103
|
+
mercatorYfromLat(lngLat.lat),
|
|
104
|
+
mercatorZfromAltitude(altitude, lngLat.lat));
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
/**
|
|
@@ -114,8 +114,8 @@ class MercatorCoordinate {
|
|
|
114
114
|
*/
|
|
115
115
|
toLngLat() {
|
|
116
116
|
return new LngLat(
|
|
117
|
-
|
|
118
|
-
|
|
117
|
+
lngFromMercatorX(this.x),
|
|
118
|
+
latFromMercatorY(this.y));
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
/**
|
|
@@ -2,7 +2,7 @@ import Point from '@mapbox/point-geometry';
|
|
|
2
2
|
import Transform from './transform';
|
|
3
3
|
import LngLat from './lng_lat';
|
|
4
4
|
import {OverscaledTileID, CanonicalTileID} from '../source/tile_id';
|
|
5
|
-
import {fixedLngLat, fixedCoord} from '../../test/
|
|
5
|
+
import {fixedLngLat, fixedCoord} from '../../test/unit/lib/fixed';
|
|
6
6
|
|
|
7
7
|
describe('transform', () => {
|
|
8
8
|
test('creates a transform', () => {
|
package/src/geo/transform.ts
CHANGED
|
@@ -262,8 +262,8 @@ class Transform {
|
|
|
262
262
|
* @returns {number} zoom level An integer zoom level at which all tiles will be visible.
|
|
263
263
|
*/
|
|
264
264
|
coveringZoomLevel(options: {
|
|
265
|
-
|
|
266
|
-
|
|
265
|
+
roundZoom?: boolean;
|
|
266
|
+
tileSize: number;
|
|
267
267
|
}) {
|
|
268
268
|
const z = (options.roundZoom ? Math.round : Math.floor)(
|
|
269
269
|
this.zoom + this.scaleZoom(this.tileSize / options.tileSize)
|
|
@@ -315,14 +315,14 @@ class Transform {
|
|
|
315
315
|
* @private
|
|
316
316
|
*/
|
|
317
317
|
coveringTiles(
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
318
|
+
options: {
|
|
319
|
+
tileSize: number;
|
|
320
|
+
minzoom?: number;
|
|
321
|
+
maxzoom?: number;
|
|
322
|
+
roundZoom?: boolean;
|
|
323
|
+
reparseOverscaled?: boolean;
|
|
324
|
+
renderWorldCopies?: boolean;
|
|
325
|
+
}
|
|
326
326
|
): Array<OverscaledTileID> {
|
|
327
327
|
let z = this.coveringZoomLevel(options);
|
|
328
328
|
const actualZ = z;
|
|
@@ -436,8 +436,8 @@ class Transform {
|
|
|
436
436
|
project(lnglat: LngLat) {
|
|
437
437
|
const lat = clamp(lnglat.lat, -this.maxValidLatitude, this.maxValidLatitude);
|
|
438
438
|
return new Point(
|
|
439
|
-
|
|
440
|
-
|
|
439
|
+
mercatorXfromLng(lnglat.lng) * this.worldSize,
|
|
440
|
+
mercatorYfromLat(lat) * this.worldSize);
|
|
441
441
|
}
|
|
442
442
|
|
|
443
443
|
unproject(point: Point): LngLat {
|
|
@@ -451,8 +451,8 @@ class Transform {
|
|
|
451
451
|
const b = this.pointCoordinate(this.centerPoint);
|
|
452
452
|
const loc = this.locationCoordinate(lnglat);
|
|
453
453
|
const newCenter = new MercatorCoordinate(
|
|
454
|
-
|
|
455
|
-
|
|
454
|
+
loc.x - (a.x - b.x),
|
|
455
|
+
loc.y - (a.y - b.y));
|
|
456
456
|
this.center = this.coordinateLocation(newCenter);
|
|
457
457
|
if (this._renderWorldCopies) {
|
|
458
458
|
this.center = this.center.wrap();
|
package/src/gl/context.ts
CHANGED
package/src/gl/types.ts
CHANGED
|
@@ -15,9 +15,9 @@ export type DepthRangeType = [number, number];
|
|
|
15
15
|
export type DepthFuncType = CompareFuncType;
|
|
16
16
|
|
|
17
17
|
export type StencilFuncType = {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
func: CompareFuncType;
|
|
19
|
+
ref: number;
|
|
20
|
+
mask: number;
|
|
21
21
|
};
|
|
22
22
|
|
|
23
23
|
export type StencilOpConstant = WebGLRenderingContext['KEEP'] | WebGLRenderingContext['ZERO'] | WebGLRenderingContext['REPLACE'] | WebGLRenderingContext['INCR'] | WebGLRenderingContext['INCR_WRAP'] | WebGLRenderingContext['DECR'] | WebGLRenderingContext['DECR_WRAP'] | WebGLRenderingContext['INVERT'];
|
|
@@ -29,29 +29,29 @@ export type TextureUnitType = number;
|
|
|
29
29
|
export type ViewportType = [number, number, number, number];
|
|
30
30
|
|
|
31
31
|
export type StencilTestGL = {
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
func: WebGLRenderingContext['NEVER'];
|
|
33
|
+
mask: 0;
|
|
34
34
|
} | {
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
func: WebGLRenderingContext['LESS'];
|
|
36
|
+
mask: number;
|
|
37
37
|
} | {
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
func: WebGLRenderingContext['EQUAL'];
|
|
39
|
+
mask: number;
|
|
40
40
|
} | {
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
func: WebGLRenderingContext['LEQUAL'];
|
|
42
|
+
mask: number;
|
|
43
43
|
} | {
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
func: WebGLRenderingContext['GREATER'];
|
|
45
|
+
mask: number;
|
|
46
46
|
} | {
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
func: WebGLRenderingContext['NOTEQUAL'];
|
|
48
|
+
mask: number;
|
|
49
49
|
} | {
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
func: WebGLRenderingContext['GEQUAL'];
|
|
51
|
+
mask: number;
|
|
52
52
|
} | {
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
func: WebGLRenderingContext['ALWAYS'];
|
|
54
|
+
mask: 0;
|
|
55
55
|
};
|
|
56
56
|
|
|
57
57
|
export type CullFaceModeType = WebGLRenderingContext['FRONT'] | WebGLRenderingContext['BACK'] | WebGLRenderingContext['FRONT_AND_BACK'];
|
package/src/gl/value.ts
CHANGED
|
@@ -17,12 +17,12 @@ import type {
|
|
|
17
17
|
} from './types';
|
|
18
18
|
|
|
19
19
|
export interface IValue<T> {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
current: T;
|
|
21
|
+
default: T;
|
|
22
|
+
dirty: boolean;
|
|
23
|
+
get(): T;
|
|
24
|
+
setDefault(): void;
|
|
25
|
+
set(value: T): void;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
class BaseValue<T> implements IValue<T> {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import VertexBuffer from './vertex_buffer';
|
|
2
|
-
import {StructArrayLayout3i6} from '../data/array_types';
|
|
2
|
+
import {StructArrayLayout3i6} from '../data/array_types.g';
|
|
3
3
|
import Context from '../gl/context';
|
|
4
4
|
import gl from 'gl';
|
|
5
5
|
import {StructArrayMember} from '../util/struct_array';
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference path="./types/glsl.d.ts" />
|
|
2
1
|
import assert from 'assert';
|
|
3
2
|
import {supported} from '@mapbox/mapbox-gl-supported';
|
|
4
3
|
|
|
@@ -24,8 +23,16 @@ import WorkerPool from './util/worker_pool';
|
|
|
24
23
|
import {prewarm, clearPrewarmedResources} from './util/global_worker_pool';
|
|
25
24
|
import {clearTileCache} from './util/tile_request_cache';
|
|
26
25
|
import {PerformanceUtils} from './util/performance';
|
|
26
|
+
import {AJAXError} from './util/ajax';
|
|
27
27
|
import type {RequestParameters, ResponseCallback} from './util/ajax';
|
|
28
28
|
import type {Cancelable} from './types/cancelable';
|
|
29
|
+
import GeoJSONSource from './source/geojson_source';
|
|
30
|
+
import CanvasSource from './source/canvas_source';
|
|
31
|
+
import ImageSource from './source/image_source';
|
|
32
|
+
import RasterDEMTileSource from './source/raster_dem_tile_source';
|
|
33
|
+
import RasterTileSource from './source/raster_tile_source';
|
|
34
|
+
import VectorTileSource from './source/vector_tile_source';
|
|
35
|
+
import VideoSource from './source/video_source';
|
|
29
36
|
|
|
30
37
|
const exported = {
|
|
31
38
|
supported,
|
|
@@ -45,7 +52,15 @@ const exported = {
|
|
|
45
52
|
Point,
|
|
46
53
|
MercatorCoordinate,
|
|
47
54
|
Evented,
|
|
55
|
+
AJAXError,
|
|
48
56
|
config,
|
|
57
|
+
CanvasSource,
|
|
58
|
+
GeoJSONSource,
|
|
59
|
+
ImageSource,
|
|
60
|
+
RasterDEMTileSource,
|
|
61
|
+
RasterTileSource,
|
|
62
|
+
VectorTileSource,
|
|
63
|
+
VideoSource,
|
|
49
64
|
/**
|
|
50
65
|
* Initializes resources like WebWorkers that can be shared across maps to lower load
|
|
51
66
|
* times in some situations. `maplibregl.workerUrl` and `maplibregl.workerCount`, if being
|
|
@@ -223,14 +238,14 @@ Debug.extend(exported, {isSafari, getPerformanceMetrics: PerformanceUtils.getPer
|
|
|
223
238
|
*/
|
|
224
239
|
|
|
225
240
|
/**
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
241
|
+
* Gets the map's [RTL text plugin](https://www.mapbox.com/mapbox-gl-js/plugins/#mapbox-gl-rtl-text) status.
|
|
242
|
+
* The status can be `unavailable` (i.e. not requested or removed), `loading`, `loaded` or `error`.
|
|
243
|
+
* If the status is `loaded` and the plugin is requested again, an error will be thrown.
|
|
244
|
+
*
|
|
245
|
+
* @function getRTLTextPluginStatus
|
|
246
|
+
* @example
|
|
247
|
+
* const pluginStatus = maplibregl.getRTLTextPluginStatus();
|
|
248
|
+
*/
|
|
234
249
|
|
|
235
250
|
export default exported;
|
|
236
251
|
// canary assert: used to confirm that asserts have been removed from production build
|
|
@@ -19,17 +19,17 @@ import type {CircleUniformsType} from './program/circle_program';
|
|
|
19
19
|
export default drawCircles;
|
|
20
20
|
|
|
21
21
|
type TileRenderState = {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
programConfiguration: ProgramConfiguration;
|
|
23
|
+
program: Program<any>;
|
|
24
|
+
layoutVertexBuffer: VertexBuffer;
|
|
25
|
+
indexBuffer: IndexBuffer;
|
|
26
|
+
uniformValues: UniformValues<CircleUniformsType>;
|
|
27
27
|
};
|
|
28
28
|
|
|
29
29
|
type SegmentsTileRenderState = {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
segments: SegmentVector;
|
|
31
|
+
sortKey: number;
|
|
32
|
+
state: TileRenderState;
|
|
33
33
|
};
|
|
34
34
|
|
|
35
35
|
function drawCircles(painter: Painter, sourceCache: SourceCache, layer: CircleStyleLayer, coords: Array<OverscaledTileID>) {
|
|
@@ -8,7 +8,7 @@ import StencilMode from '../gl/stencil_mode';
|
|
|
8
8
|
import CullFaceMode from '../gl/cull_face_mode';
|
|
9
9
|
import {collisionUniformValues, collisionCircleUniformValues} from './program/collision_program';
|
|
10
10
|
|
|
11
|
-
import {QuadTriangleArray, CollisionCircleLayoutArray} from '../data/array_types';
|
|
11
|
+
import {QuadTriangleArray, CollisionCircleLayoutArray} from '../data/array_types.g';
|
|
12
12
|
import {collisionCircleLayout} from '../data/bucket/symbol_attributes';
|
|
13
13
|
import SegmentVector from '../data/segment';
|
|
14
14
|
import {mat4} from 'gl-matrix';
|
|
@@ -18,10 +18,10 @@ import IndexBuffer from '../gl/index_buffer';
|
|
|
18
18
|
export default drawCollisionDebug;
|
|
19
19
|
|
|
20
20
|
type TileBatch = {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
circleArray: Array<number>;
|
|
22
|
+
circleOffset: number;
|
|
23
|
+
transform: mat4;
|
|
24
|
+
invTransform: mat4;
|
|
25
25
|
};
|
|
26
26
|
|
|
27
27
|
let quadTriangles: QuadTriangleArray;
|
package/src/render/draw_line.ts
CHANGED
|
@@ -36,8 +36,8 @@ export default function drawLine(painter: Painter, sourceCache: SourceCache, lay
|
|
|
36
36
|
|
|
37
37
|
const programId =
|
|
38
38
|
image ? 'linePattern' :
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
dasharray ? 'lineSDF' :
|
|
40
|
+
gradient ? 'lineGradient' : 'line';
|
|
41
41
|
|
|
42
42
|
const context = painter.context;
|
|
43
43
|
const gl = context.gl;
|
|
@@ -67,8 +67,8 @@ export default function drawLine(painter: Painter, sourceCache: SourceCache, lay
|
|
|
67
67
|
|
|
68
68
|
const uniformValues = image ? linePatternUniformValues(painter, tile, layer, crossfade) :
|
|
69
69
|
dasharray ? lineSDFUniformValues(painter, tile, layer, dasharray, crossfade) :
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
gradient ? lineGradientUniformValues(painter, tile, layer, bucket.lineClipsArray.length) :
|
|
71
|
+
lineUniformValues(painter, tile, layer);
|
|
72
72
|
|
|
73
73
|
if (image) {
|
|
74
74
|
context.activeTexture.set(gl.TEXTURE0);
|
|
@@ -34,25 +34,25 @@ import type {CrossTileID, VariableOffset} from '../symbol/placement';
|
|
|
34
34
|
export default drawSymbols;
|
|
35
35
|
|
|
36
36
|
type SymbolTileRenderState = {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
37
|
+
segments: SegmentVector;
|
|
38
|
+
sortKey: number;
|
|
39
|
+
state: {
|
|
40
|
+
program: any;
|
|
41
|
+
buffers: SymbolBuffers;
|
|
42
|
+
uniformValues: any;
|
|
43
|
+
atlasTexture: Texture;
|
|
44
|
+
atlasTextureIcon: Texture | null;
|
|
45
|
+
atlasInterpolation: any;
|
|
46
|
+
atlasInterpolationIcon: any;
|
|
47
|
+
isSDF: boolean;
|
|
48
|
+
hasHalo: boolean;
|
|
49
|
+
};
|
|
50
50
|
};
|
|
51
51
|
|
|
52
52
|
const identityMat4 = mat4.identity(new Float32Array(16));
|
|
53
53
|
|
|
54
54
|
function drawSymbols(painter: Painter, sourceCache: SourceCache, layer: SymbolStyleLayer, coords: Array<OverscaledTileID>, variableOffsets: {
|
|
55
|
-
|
|
55
|
+
[_ in CrossTileID]: VariableOffset;
|
|
56
56
|
}) {
|
|
57
57
|
if (painter.renderPass !== 'translucent') return;
|
|
58
58
|
|
|
@@ -132,13 +132,13 @@ function updateVariableAnchors(coords, painter, layer, sourceCache, rotationAlig
|
|
|
132
132
|
if (size) {
|
|
133
133
|
const tileScale = Math.pow(2, tr.zoom - tile.tileID.overscaledZ);
|
|
134
134
|
updateVariableAnchorsForBucket(bucket, rotateWithMap, pitchWithMap, variableOffsets, symbolSize,
|
|
135
|
-
|
|
135
|
+
tr, labelPlaneMatrix, coord.posMatrix, tileScale, size, updateTextFitIcon);
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
function updateVariableAnchorsForBucket(bucket, rotateWithMap, pitchWithMap, variableOffsets, symbolSize,
|
|
141
|
-
|
|
141
|
+
transform, labelPlaneMatrix, posMatrix, tileScale, size, updateTextFitIcon) {
|
|
142
142
|
const placedSymbols = bucket.text.placedSymbolArray;
|
|
143
143
|
const dynamicTextLayoutVertexArray = bucket.text.dynamicLayoutVertexArray;
|
|
144
144
|
const dynamicIconLayoutVertexArray = bucket.icon.dynamicLayoutVertexArray;
|
|
@@ -223,7 +223,7 @@ function getSymbolProgramName(isSDF: boolean, isText: boolean, bucket: SymbolBuc
|
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
function drawLayerSymbols(painter, sourceCache, layer, coords, isText, translate, translateAnchor,
|
|
226
|
-
|
|
226
|
+
rotationAlignment, pitchAlignment, keepUpright, stencilMode, colorMode) {
|
|
227
227
|
|
|
228
228
|
const context = painter.context;
|
|
229
229
|
const gl = context.gl;
|
|
@@ -310,12 +310,12 @@ function drawLayerSymbols(painter, sourceCache, layer, coords, isText, translate
|
|
|
310
310
|
if (isSDF) {
|
|
311
311
|
if (!bucket.iconsInText) {
|
|
312
312
|
uniformValues = symbolSDFUniformValues(sizeData.kind,
|
|
313
|
-
|
|
314
|
-
|
|
313
|
+
size, rotateInShader, pitchWithMap, painter, matrix,
|
|
314
|
+
uLabelPlaneMatrix, uglCoordMatrix, isText, texSize, true);
|
|
315
315
|
} else {
|
|
316
316
|
uniformValues = symbolTextAndIconUniformValues(sizeData.kind,
|
|
317
|
-
|
|
318
|
-
|
|
317
|
+
size, rotateInShader, pitchWithMap, painter, matrix,
|
|
318
|
+
uLabelPlaneMatrix, uglCoordMatrix, texSize, texSizeIcon);
|
|
319
319
|
}
|
|
320
320
|
} else {
|
|
321
321
|
uniformValues = symbolIconUniformValues(sizeData.kind,
|
|
@@ -7,21 +7,21 @@ import type {GlyphMetrics, StyleGlyph} from '../style/style_glyph';
|
|
|
7
7
|
const padding = 1;
|
|
8
8
|
|
|
9
9
|
export type Rect = {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
x: number;
|
|
11
|
+
y: number;
|
|
12
|
+
w: number;
|
|
13
|
+
h: number;
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
export type GlyphPosition = {
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
rect: Rect;
|
|
18
|
+
metrics: GlyphMetrics;
|
|
19
19
|
};
|
|
20
20
|
|
|
21
21
|
export type GlyphPositions = {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
[_: string]: {
|
|
23
|
+
[_: number]: GlyphPosition;
|
|
24
|
+
};
|
|
25
25
|
};
|
|
26
26
|
|
|
27
27
|
export default class GlyphAtlas {
|
|
@@ -29,9 +29,9 @@ export default class GlyphAtlas {
|
|
|
29
29
|
positions: GlyphPositions;
|
|
30
30
|
|
|
31
31
|
constructor(stacks: {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
[_: string]: {
|
|
33
|
+
[_: number]: StyleGlyph;
|
|
34
|
+
};
|
|
35
35
|
}) {
|
|
36
36
|
const positions = {};
|
|
37
37
|
const bins = [];
|
|
@@ -4,7 +4,7 @@ import fs from 'fs';
|
|
|
4
4
|
import {RequestManager} from '../util/request_manager';
|
|
5
5
|
|
|
6
6
|
const glyphs = {};
|
|
7
|
-
for (const glyph of parseGlyphPBF(fs.readFileSync('./test/
|
|
7
|
+
for (const glyph of parseGlyphPBF(fs.readFileSync('./test/unit/assets/0-255.pbf'))) {
|
|
8
8
|
glyphs[glyph.id] = glyph;
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -21,12 +21,6 @@ const createLoadGlyphRangeStub = () => {
|
|
|
21
21
|
};
|
|
22
22
|
|
|
23
23
|
const createGlyphManager = (font?) => {
|
|
24
|
-
GlyphManager.TinySDF = class {
|
|
25
|
-
// Return empty 30x30 bitmap (24 fontsize + 3 * 2 buffer)
|
|
26
|
-
draw() {
|
|
27
|
-
return {data: new Uint8ClampedArray(900)} as any;
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
24
|
const manager = new GlyphManager(identityTransform, font);
|
|
31
25
|
manager.setURL('https://localhost/fonts/v1/{fontstack}/{range}.pbf');
|
|
32
26
|
return manager;
|
|
@@ -106,8 +100,8 @@ describe('GlyphManager', () => {
|
|
|
106
100
|
expect(err).toBeFalsy();
|
|
107
101
|
const glyph = glyphs['Arial Unicode MS'][0x30c6];
|
|
108
102
|
//Ensure that te is locally generated.
|
|
109
|
-
expect(glyph.bitmap.height).toBe(
|
|
110
|
-
expect(glyph.bitmap.width).toBe(
|
|
103
|
+
expect(glyph.bitmap.height).toBe(6);
|
|
104
|
+
expect(glyph.bitmap.width).toBe(6);
|
|
111
105
|
done();
|
|
112
106
|
});
|
|
113
107
|
});
|
|
@@ -118,7 +112,7 @@ describe('GlyphManager', () => {
|
|
|
118
112
|
|
|
119
113
|
manager.getGlyphs({'Arial Unicode MS': [0x5e73]}, (err, glyphs) => {
|
|
120
114
|
expect(err).toBeFalsy();
|
|
121
|
-
expect(glyphs['Arial Unicode MS'][0x5e73].metrics.advance).toBe(
|
|
115
|
+
expect(glyphs['Arial Unicode MS'][0x5e73].metrics.advance).toBe(1);
|
|
122
116
|
done();
|
|
123
117
|
});
|
|
124
118
|
});
|
|
@@ -129,7 +123,7 @@ describe('GlyphManager', () => {
|
|
|
129
123
|
// Katakana letter te
|
|
130
124
|
manager.getGlyphs({'Arial Unicode MS': [0x30c6]}, (err, glyphs) => {
|
|
131
125
|
expect(err).toBeFalsy();
|
|
132
|
-
expect(glyphs['Arial Unicode MS'][0x30c6].metrics.advance).toBe(
|
|
126
|
+
expect(glyphs['Arial Unicode MS'][0x30c6].metrics.advance).toBe(1);
|
|
133
127
|
done();
|
|
134
128
|
});
|
|
135
129
|
});
|
|
@@ -140,7 +134,7 @@ describe('GlyphManager', () => {
|
|
|
140
134
|
//Hiragana letter te
|
|
141
135
|
manager.getGlyphs({'Arial Unicode MS': [0x3066]}, (err, glyphs) => {
|
|
142
136
|
expect(err).toBeFalsy();
|
|
143
|
-
expect(glyphs['Arial Unicode MS'][0x3066].metrics.advance).toBe(
|
|
137
|
+
expect(glyphs['Arial Unicode MS'][0x3066].metrics.advance).toBe(1);
|
|
144
138
|
done();
|
|
145
139
|
});
|
|
146
140
|
});
|
|
@@ -148,21 +142,16 @@ describe('GlyphManager', () => {
|
|
|
148
142
|
test('GlyphManager caches locally generated glyphs', done => {
|
|
149
143
|
|
|
150
144
|
const manager = createGlyphManager('sans-serif');
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
draw() {
|
|
155
|
-
drawCallCount++;
|
|
156
|
-
return {data: new Uint8ClampedArray(900)} as any;
|
|
157
|
-
}
|
|
158
|
-
};
|
|
145
|
+
const drawSpy = GlyphManager.TinySDF.prototype.draw = jest.fn().mockImplementation(() => {
|
|
146
|
+
return {data: new Uint8ClampedArray(900)} as any;
|
|
147
|
+
});
|
|
159
148
|
|
|
160
149
|
// Katakana letter te
|
|
161
150
|
manager.getGlyphs({'Arial Unicode MS': [0x30c6]}, (err, glyphs) => {
|
|
162
151
|
expect(err).toBeFalsy();
|
|
163
152
|
expect(glyphs['Arial Unicode MS'][0x30c6].metrics.advance).toBe(24);
|
|
164
153
|
manager.getGlyphs({'Arial Unicode MS': [0x30c6]}, () => {
|
|
165
|
-
expect(
|
|
154
|
+
expect(drawSpy).toHaveBeenCalledTimes(1);
|
|
166
155
|
done();
|
|
167
156
|
});
|
|
168
157
|
});
|