@mapgis/mapbox-gl 16.0.0 → 16.2.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.
Files changed (441) hide show
  1. package/dist/mapbox-gl.js +4 -4
  2. package/dist/mapbox-gl.js.map +1 -1
  3. package/package.json +4 -5
  4. package/.flowconfig +0 -61
  5. package/LICENSE.txt +0 -84
  6. package/README.md +0 -34
  7. package/build/banner.js +0 -4
  8. package/build/check-bundle-size.js +0 -140
  9. package/build/generate-access-token-script.js +0 -11
  10. package/build/generate-flow-typed-style-spec.js +0 -188
  11. package/build/generate-release-list.js +0 -21
  12. package/build/generate-struct-arrays.js +0 -237
  13. package/build/generate-style-code.js +0 -159
  14. package/build/mapbox-gl.js.flow +0 -3
  15. package/build/print-release-url.js +0 -6
  16. package/build/rollup_plugin_minify_style_spec.js +0 -20
  17. package/build/rollup_plugins.js +0 -80
  18. package/build/run-node +0 -3
  19. package/build/run-tap +0 -8
  20. package/build/test/build-tape.js +0 -19
  21. package/dist/mapbox-gl-csp-worker.js +0 -2
  22. package/dist/mapbox-gl-csp-worker.js.map +0 -1
  23. package/dist/mapbox-gl-csp.js +0 -2
  24. package/dist/mapbox-gl-csp.js.map +0 -1
  25. package/dist/mapbox-gl-dev.js +0 -68798
  26. package/dist/mapbox-gl-unminified.js +0 -45076
  27. package/dist/mapbox-gl-unminified.js.map +0 -1
  28. package/flow-typed/gl.js +0 -5
  29. package/flow-typed/jsdom.js +0 -18
  30. package/flow-typed/mapbox-gl-supported.js +0 -9
  31. package/flow-typed/mapbox-unitbezier.js +0 -14
  32. package/flow-typed/offscreen-canvas.js +0 -9
  33. package/flow-typed/pbf.js +0 -25
  34. package/flow-typed/point-geometry.js +0 -44
  35. package/flow-typed/potpack.js +0 -12
  36. package/flow-typed/sinon.js +0 -28
  37. package/flow-typed/vector-tile.js +0 -41
  38. package/src/css/mapbox-gl.css +0 -798
  39. package/src/css/svg/mapboxgl-ctrl-attrib.svg +0 -3
  40. package/src/css/svg/mapboxgl-ctrl-compass.svg +0 -4
  41. package/src/css/svg/mapboxgl-ctrl-fullscreen.svg +0 -3
  42. package/src/css/svg/mapboxgl-ctrl-geolocate.svg +0 -5
  43. package/src/css/svg/mapboxgl-ctrl-logo.svg +0 -20
  44. package/src/css/svg/mapboxgl-ctrl-shrink.svg +0 -3
  45. package/src/css/svg/mapboxgl-ctrl-zoom-in.svg +0 -3
  46. package/src/css/svg/mapboxgl-ctrl-zoom-out.svg +0 -3
  47. package/src/data/array_types.js +0 -1095
  48. package/src/data/bucket/circle_attributes.js +0 -9
  49. package/src/data/bucket/circle_bucket.js +0 -204
  50. package/src/data/bucket/fill_attributes.js +0 -9
  51. package/src/data/bucket/fill_bucket.js +0 -233
  52. package/src/data/bucket/fill_extrusion_attributes.js +0 -10
  53. package/src/data/bucket/fill_extrusion_bucket.js +0 -289
  54. package/src/data/bucket/heatmap_bucket.js +0 -17
  55. package/src/data/bucket/line_attributes.js +0 -10
  56. package/src/data/bucket/line_bucket.js +0 -556
  57. package/src/data/bucket/pattern_attributes.js +0 -10
  58. package/src/data/bucket/pattern_bucket_features.js +0 -60
  59. package/src/data/bucket/symbol_attributes.js +0 -117
  60. package/src/data/bucket/symbol_bucket.js +0 -972
  61. package/src/data/bucket.js +0 -123
  62. package/src/data/dem_data.js +0 -125
  63. package/src/data/extent.js +0 -18
  64. package/src/data/feature_index.js +0 -321
  65. package/src/data/feature_position_map.js +0 -125
  66. package/src/data/index_array_type.js +0 -16
  67. package/src/data/load_geometry.js +0 -48
  68. package/src/data/pos_attributes.js +0 -6
  69. package/src/data/program_configuration.js +0 -687
  70. package/src/data/raster_bounds_attributes.js +0 -7
  71. package/src/data/segment.js +0 -76
  72. package/src/geo/edge_insets.js +0 -102
  73. package/src/geo/lng_lat.js +0 -165
  74. package/src/geo/lng_lat_bounds.js +0 -267
  75. package/src/geo/mercator_coordinate.js +0 -153
  76. package/src/geo/transform.js +0 -864
  77. package/src/gl/color_mode.js +0 -34
  78. package/src/gl/context.js +0 -298
  79. package/src/gl/cull_face_mode.js +0 -26
  80. package/src/gl/depth_mode.js +0 -29
  81. package/src/gl/framebuffer.js +0 -44
  82. package/src/gl/index_buffer.js +0 -55
  83. package/src/gl/stencil_mode.js +0 -30
  84. package/src/gl/types.js +0 -84
  85. package/src/gl/value.js +0 -520
  86. package/src/gl/vertex_buffer.js +0 -119
  87. package/src/index.js +0 -201
  88. package/src/render/draw_background.js +0 -57
  89. package/src/render/draw_circle.js +0 -113
  90. package/src/render/draw_collision_debug.js +0 -49
  91. package/src/render/draw_custom.js +0 -49
  92. package/src/render/draw_debug.js +0 -127
  93. package/src/render/draw_fill.js +0 -126
  94. package/src/render/draw_fill_extrusion.js +0 -96
  95. package/src/render/draw_heatmap.js +0 -140
  96. package/src/render/draw_hillshade.js +0 -108
  97. package/src/render/draw_line.js +0 -98
  98. package/src/render/draw_raster.js +0 -125
  99. package/src/render/draw_symbol.js +0 -394
  100. package/src/render/glyph_atlas.js +0 -71
  101. package/src/render/glyph_manager.js +0 -182
  102. package/src/render/image_atlas.js +0 -149
  103. package/src/render/image_manager.js +0 -306
  104. package/src/render/line_atlas.js +0 -210
  105. package/src/render/painter.js +0 -653
  106. package/src/render/program/background_program.js +0 -103
  107. package/src/render/program/circle_program.js +0 -69
  108. package/src/render/program/clipping_mask_program.js +0 -20
  109. package/src/render/program/collision_program.js +0 -49
  110. package/src/render/program/debug_program.js +0 -35
  111. package/src/render/program/fill_extrusion_program.js +0 -122
  112. package/src/render/program/fill_program.js +0 -126
  113. package/src/render/program/heatmap_program.js +0 -83
  114. package/src/render/program/hillshade_program.js +0 -122
  115. package/src/render/program/line_program.js +0 -207
  116. package/src/render/program/pattern.js +0 -102
  117. package/src/render/program/program_uniforms.js +0 -42
  118. package/src/render/program/raster_program.js +0 -92
  119. package/src/render/program/symbol_program.js +0 -224
  120. package/src/render/program.js +0 -168
  121. package/src/render/texture.js +0 -122
  122. package/src/render/uniform_binding.js +0 -147
  123. package/src/render/vertex_array_object.js +0 -163
  124. package/src/shaders/README.md +0 -42
  125. package/src/shaders/_prelude.fragment.glsl +0 -17
  126. package/src/shaders/_prelude.vertex.glsl +0 -73
  127. package/src/shaders/background.fragment.glsl +0 -10
  128. package/src/shaders/background.vertex.glsl +0 -7
  129. package/src/shaders/background_pattern.fragment.glsl +0 -28
  130. package/src/shaders/background_pattern.vertex.glsl +0 -20
  131. package/src/shaders/circle.fragment.glsl +0 -39
  132. package/src/shaders/circle.vertex.glsl +0 -64
  133. package/src/shaders/clipping_mask.fragment.glsl +0 -3
  134. package/src/shaders/clipping_mask.vertex.glsl +0 -7
  135. package/src/shaders/collision_box.fragment.glsl +0 -21
  136. package/src/shaders/collision_box.vertex.glsl +0 -27
  137. package/src/shaders/collision_circle.fragment.glsl +0 -34
  138. package/src/shaders/collision_circle.vertex.glsl +0 -36
  139. package/src/shaders/debug.fragment.glsl +0 -9
  140. package/src/shaders/debug.vertex.glsl +0 -12
  141. package/src/shaders/encode_attribute.js +0 -17
  142. package/src/shaders/fill.fragment.glsl +0 -13
  143. package/src/shaders/fill.vertex.glsl +0 -13
  144. package/src/shaders/fill_extrusion.fragment.glsl +0 -9
  145. package/src/shaders/fill_extrusion.vertex.glsl +0 -66
  146. package/src/shaders/fill_extrusion_pattern.fragment.glsl +0 -45
  147. package/src/shaders/fill_extrusion_pattern.vertex.glsl +0 -79
  148. package/src/shaders/fill_outline.fragment.glsl +0 -17
  149. package/src/shaders/fill_outline.vertex.glsl +0 -17
  150. package/src/shaders/fill_outline_pattern.fragment.glsl +0 -43
  151. package/src/shaders/fill_outline_pattern.vertex.glsl +0 -44
  152. package/src/shaders/fill_pattern.fragment.glsl +0 -36
  153. package/src/shaders/fill_pattern.vertex.glsl +0 -39
  154. package/src/shaders/heatmap.fragment.glsl +0 -22
  155. package/src/shaders/heatmap.vertex.glsl +0 -54
  156. package/src/shaders/heatmap_texture.fragment.glsl +0 -14
  157. package/src/shaders/heatmap_texture.vertex.glsl +0 -11
  158. package/src/shaders/hillshade.fragment.glsl +0 -52
  159. package/src/shaders/hillshade.vertex.glsl +0 -11
  160. package/src/shaders/hillshade_prepare.fragment.glsl +0 -74
  161. package/src/shaders/hillshade_prepare.vertex.glsl +0 -15
  162. package/src/shaders/index.js +0 -20
  163. package/src/shaders/line.fragment.glsl +0 -30
  164. package/src/shaders/line.vertex.glsl +0 -85
  165. package/src/shaders/line_gradient.fragment.glsl +0 -34
  166. package/src/shaders/line_gradient.vertex.glsl +0 -87
  167. package/src/shaders/line_pattern.fragment.glsl +0 -74
  168. package/src/shaders/line_pattern.vertex.glsl +0 -99
  169. package/src/shaders/line_sdf.fragment.glsl +0 -45
  170. package/src/shaders/line_sdf.vertex.glsl +0 -98
  171. package/src/shaders/raster.fragment.glsl +0 -52
  172. package/src/shaders/raster.vertex.glsl +0 -21
  173. package/src/shaders/shaders.js +0 -180
  174. package/src/shaders/symbol_icon.fragment.glsl +0 -17
  175. package/src/shaders/symbol_icon.vertex.glsl +0 -94
  176. package/src/shaders/symbol_sdf.fragment.glsl +0 -52
  177. package/src/shaders/symbol_sdf.vertex.glsl +0 -115
  178. package/src/shaders/symbol_text_and_icon.fragment.glsl +0 -68
  179. package/src/shaders/symbol_text_and_icon.vertex.glsl +0 -116
  180. package/src/source/canvas_source.js +0 -238
  181. package/src/source/geojson_helper.js +0 -92
  182. package/src/source/geojson_source.js +0 -374
  183. package/src/source/geojson_worker_source.js +0 -357
  184. package/src/source/geojson_wrapper.js +0 -94
  185. package/src/source/image_source.js +0 -307
  186. package/src/source/load_tilejson.js +0 -39
  187. package/src/source/mbtiles_source.js +0 -115
  188. package/src/source/offline_database.js +0 -61
  189. package/src/source/offline_database_root.js +0 -62
  190. package/src/source/pixels_to_tile_units.js +0 -21
  191. package/src/source/query_features.js +0 -208
  192. package/src/source/raster_dem_tile_source.js +0 -138
  193. package/src/source/raster_dem_tile_worker_source.js +0 -62
  194. package/src/source/raster_tile_offline_source.js +0 -136
  195. package/src/source/raster_tile_source.js +0 -177
  196. package/src/source/rtl_text_plugin.js +0 -138
  197. package/src/source/source.js +0 -137
  198. package/src/source/source_cache.js +0 -957
  199. package/src/source/source_state.js +0 -159
  200. package/src/source/tile.js +0 -465
  201. package/src/source/tile_bounds.js +0 -38
  202. package/src/source/tile_cache.js +0 -212
  203. package/src/source/tile_id.js +0 -402
  204. package/src/source/vector_tile_source.js +0 -192
  205. package/src/source/vector_tile_worker_source.js +0 -216
  206. package/src/source/video_source.js +0 -203
  207. package/src/source/worker.js +0 -237
  208. package/src/source/worker_source.js +0 -106
  209. package/src/source/worker_tile.js +0 -224
  210. package/src/style/create_style_layer.js +0 -36
  211. package/src/style/evaluation_parameters.js +0 -62
  212. package/src/style/light.js +0 -130
  213. package/src/style/load_glyph_range.js +0 -38
  214. package/src/style/load_sprite.js +0 -67
  215. package/src/style/parse_glyph_pbf.js +0 -44
  216. package/src/style/pauseable_placement.js +0 -132
  217. package/src/style/properties.js +0 -753
  218. package/src/style/query_utils.js +0 -43
  219. package/src/style/style.js +0 -1361
  220. package/src/style/style_glyph.js +0 -17
  221. package/src/style/style_image.js +0 -137
  222. package/src/style/style_layer/background_style_layer.js +0 -21
  223. package/src/style/style_layer/background_style_layer_properties.js +0 -40
  224. package/src/style/style_layer/circle_style_layer.js +0 -98
  225. package/src/style/style_layer/circle_style_layer_properties.js +0 -63
  226. package/src/style/style_layer/custom_style_layer.js +0 -223
  227. package/src/style/style_layer/fill_extrusion_style_layer.js +0 -224
  228. package/src/style/style_layer/fill_extrusion_style_layer_properties.js +0 -50
  229. package/src/style/style_layer/fill_style_layer.js +0 -67
  230. package/src/style/style_layer/fill_style_layer_properties.js +0 -55
  231. package/src/style/style_layer/heatmap_style_layer.js +0 -69
  232. package/src/style/style_layer/heatmap_style_layer_properties.js +0 -44
  233. package/src/style/style_layer/hillshade_style_layer.js +0 -25
  234. package/src/style/style_layer/hillshade_style_layer_properties.js +0 -46
  235. package/src/style/style_layer/layer_properties.js.ejs +0 -69
  236. package/src/style/style_layer/line_style_layer.js +0 -151
  237. package/src/style/style_layer/line_style_layer_properties.js +0 -71
  238. package/src/style/style_layer/raster_style_layer.js +0 -21
  239. package/src/style/style_layer/raster_style_layer_properties.js +0 -50
  240. package/src/style/style_layer/symbol_style_layer.js +0 -190
  241. package/src/style/style_layer/symbol_style_layer_properties.js +0 -153
  242. package/src/style/style_layer/typed_style_layer.js +0 -17
  243. package/src/style/style_layer.js +0 -281
  244. package/src/style/style_layer_index.js +0 -80
  245. package/src/style/validate_style.js +0 -42
  246. package/src/style/zoom_history.js +0 -44
  247. package/src/style-spec/.eslintrc +0 -5
  248. package/src/style-spec/CHANGELOG.md +0 -438
  249. package/src/style-spec/README.md +0 -59
  250. package/src/style-spec/bin/gl-style-composite +0 -9
  251. package/src/style-spec/bin/gl-style-format +0 -22
  252. package/src/style-spec/bin/gl-style-migrate +0 -9
  253. package/src/style-spec/bin/gl-style-validate +0 -50
  254. package/src/style-spec/composite.js +0 -50
  255. package/src/style-spec/declass.js +0 -42
  256. package/src/style-spec/deref.js +0 -52
  257. package/src/style-spec/diff.js +0 -393
  258. package/src/style-spec/dist/.gitkeep +0 -0
  259. package/src/style-spec/empty.js +0 -29
  260. package/src/style-spec/error/parsing_error.js +0 -16
  261. package/src/style-spec/error/validation_error.js +0 -18
  262. package/src/style-spec/expression/compound_expression.js +0 -162
  263. package/src/style-spec/expression/definitions/assertion.js +0 -130
  264. package/src/style-spec/expression/definitions/at.js +0 -70
  265. package/src/style-spec/expression/definitions/case.js +0 -85
  266. package/src/style-spec/expression/definitions/coalesce.js +0 -93
  267. package/src/style-spec/expression/definitions/coercion.js +0 -133
  268. package/src/style-spec/expression/definitions/collator.js +0 -78
  269. package/src/style-spec/expression/definitions/comparison.js +0 -184
  270. package/src/style-spec/expression/definitions/format.js +0 -144
  271. package/src/style-spec/expression/definitions/format_section_override.js +0 -54
  272. package/src/style-spec/expression/definitions/image.js +0 -52
  273. package/src/style-spec/expression/definitions/in.js +0 -92
  274. package/src/style-spec/expression/definitions/index.js +0 -561
  275. package/src/style-spec/expression/definitions/interpolate.js +0 -267
  276. package/src/style-spec/expression/definitions/length.js +0 -61
  277. package/src/style-spec/expression/definitions/let.js +0 -72
  278. package/src/style-spec/expression/definitions/literal.js +0 -77
  279. package/src/style-spec/expression/definitions/match.js +0 -158
  280. package/src/style-spec/expression/definitions/number_format.js +0 -142
  281. package/src/style-spec/expression/definitions/step.js +0 -120
  282. package/src/style-spec/expression/definitions/var.js +0 -46
  283. package/src/style-spec/expression/definitions/within.js +0 -333
  284. package/src/style-spec/expression/evaluation_context.js +0 -59
  285. package/src/style-spec/expression/expression.js +0 -27
  286. package/src/style-spec/expression/index.js +0 -392
  287. package/src/style-spec/expression/is_constant.js +0 -59
  288. package/src/style-spec/expression/parsing_context.js +0 -233
  289. package/src/style-spec/expression/parsing_error.js +0 -13
  290. package/src/style-spec/expression/runtime_error.js +0 -17
  291. package/src/style-spec/expression/scope.js +0 -36
  292. package/src/style-spec/expression/stops.js +0 -39
  293. package/src/style-spec/expression/types/collator.js +0 -61
  294. package/src/style-spec/expression/types/formatted.js +0 -73
  295. package/src/style-spec/expression/types/resolved_image.js +0 -29
  296. package/src/style-spec/expression/types.js +0 -106
  297. package/src/style-spec/expression/values.js +0 -123
  298. package/src/style-spec/feature_filter/README.md +0 -55
  299. package/src/style-spec/feature_filter/convert.js +0 -208
  300. package/src/style-spec/feature_filter/index.js +0 -165
  301. package/src/style-spec/format.js +0 -51
  302. package/src/style-spec/function/convert.js +0 -254
  303. package/src/style-spec/function/index.js +0 -262
  304. package/src/style-spec/group_by_layout.js +0 -75
  305. package/src/style-spec/migrate/expressions.js +0 -39
  306. package/src/style-spec/migrate/v8.js +0 -203
  307. package/src/style-spec/migrate/v9.js +0 -26
  308. package/src/style-spec/migrate.js +0 -36
  309. package/src/style-spec/package.json +0 -41
  310. package/src/style-spec/read_style.js +0 -14
  311. package/src/style-spec/reference/latest.js +0 -3
  312. package/src/style-spec/reference/v8.json +0 -5808
  313. package/src/style-spec/rollup.config.js +0 -45
  314. package/src/style-spec/style-spec.js +0 -122
  315. package/src/style-spec/types.js +0 -438
  316. package/src/style-spec/util/color.js +0 -95
  317. package/src/style-spec/util/color_spaces.js +0 -139
  318. package/src/style-spec/util/deep_equal.js +0 -28
  319. package/src/style-spec/util/extend.js +0 -10
  320. package/src/style-spec/util/get_type.js +0 -17
  321. package/src/style-spec/util/interpolate.js +0 -22
  322. package/src/style-spec/util/properties.js +0 -15
  323. package/src/style-spec/util/ref_properties.js +0 -2
  324. package/src/style-spec/util/result.js +0 -19
  325. package/src/style-spec/util/unbundle_jsonlint.js +0 -24
  326. package/src/style-spec/validate/latest.js +0 -11
  327. package/src/style-spec/validate/validate.js +0 -75
  328. package/src/style-spec/validate/validate_array.js +0 -52
  329. package/src/style-spec/validate/validate_boolean.js +0 -15
  330. package/src/style-spec/validate/validate_color.js +0 -20
  331. package/src/style-spec/validate/validate_constants.js +0 -13
  332. package/src/style-spec/validate/validate_enum.js +0 -21
  333. package/src/style-spec/validate/validate_expression.js +0 -43
  334. package/src/style-spec/validate/validate_filter.js +0 -111
  335. package/src/style-spec/validate/validate_formatted.js +0 -11
  336. package/src/style-spec/validate/validate_function.js +0 -207
  337. package/src/style-spec/validate/validate_glyphs_url.js +0 -21
  338. package/src/style-spec/validate/validate_image.js +0 -11
  339. package/src/style-spec/validate/validate_layer.js +0 -134
  340. package/src/style-spec/validate/validate_layout_property.js +0 -6
  341. package/src/style-spec/validate/validate_light.js +0 -47
  342. package/src/style-spec/validate/validate_number.js +0 -29
  343. package/src/style-spec/validate/validate_object.js +0 -61
  344. package/src/style-spec/validate/validate_paint_property.js +0 -6
  345. package/src/style-spec/validate/validate_property.js +0 -64
  346. package/src/style-spec/validate/validate_source.js +0 -111
  347. package/src/style-spec/validate/validate_string.js +0 -15
  348. package/src/style-spec/validate_mapbox_api_supported.js +0 -171
  349. package/src/style-spec/validate_style.js +0 -39
  350. package/src/style-spec/validate_style.min.js +0 -78
  351. package/src/style-spec/visit.js +0 -77
  352. package/src/symbol/anchor.js +0 -26
  353. package/src/symbol/check_max_angle.js +0 -81
  354. package/src/symbol/clip_line.js +0 -71
  355. package/src/symbol/collision_feature.js +0 -217
  356. package/src/symbol/collision_index.js +0 -372
  357. package/src/symbol/cross_tile_symbol_index.js +0 -301
  358. package/src/symbol/get_anchors.js +0 -167
  359. package/src/symbol/grid_index.js +0 -335
  360. package/src/symbol/mergelines.js +0 -82
  361. package/src/symbol/one_em.js +0 -4
  362. package/src/symbol/opacity_state.js +0 -27
  363. package/src/symbol/placement.js +0 -1062
  364. package/src/symbol/projection.js +0 -450
  365. package/src/symbol/quads.js +0 -334
  366. package/src/symbol/shaping.js +0 -816
  367. package/src/symbol/symbol_layout.js +0 -772
  368. package/src/symbol/symbol_size.js +0 -113
  369. package/src/symbol/transform_text.js +0 -29
  370. package/src/types/callback.js +0 -17
  371. package/src/types/cancelable.js +0 -3
  372. package/src/types/tilejson.js +0 -17
  373. package/src/types/transferable.js +0 -3
  374. package/src/types/window.js +0 -172
  375. package/src/ui/anchor.js +0 -32
  376. package/src/ui/bind_handlers.js +0 -202
  377. package/src/ui/camera.js +0 -1152
  378. package/src/ui/control/attribution_control.js +0 -189
  379. package/src/ui/control/fps_control.js +0 -185
  380. package/src/ui/control/fullscreen_control.js +0 -147
  381. package/src/ui/control/geolocate_control.js +0 -594
  382. package/src/ui/control/logo_control.js +0 -92
  383. package/src/ui/control/navigation_control.js +0 -148
  384. package/src/ui/control/scale_control.js +0 -142
  385. package/src/ui/crs.js +0 -64
  386. package/src/ui/default_locale.js +0 -20
  387. package/src/ui/events.js +0 -806
  388. package/src/ui/handler/box_zoom.js +0 -175
  389. package/src/ui/handler/dblclick_zoom.js +0 -139
  390. package/src/ui/handler/drag_pan.js +0 -416
  391. package/src/ui/handler/drag_rotate.js +0 -378
  392. package/src/ui/handler/keyboard.js +0 -161
  393. package/src/ui/handler/scroll_zoom.js +0 -333
  394. package/src/ui/handler/touch_zoom_rotate.js +0 -293
  395. package/src/ui/hash.js +0 -147
  396. package/src/ui/map.js +0 -2883
  397. package/src/ui/marker.js +0 -607
  398. package/src/ui/offline_map.js +0 -91
  399. package/src/ui/popup.js +0 -530
  400. package/src/util/actor.js +0 -212
  401. package/src/util/ajax.js +0 -371
  402. package/src/util/browser/web_worker.js +0 -10
  403. package/src/util/browser/window.js +0 -5
  404. package/src/util/browser.js +0 -70
  405. package/src/util/classify_rings.js +0 -52
  406. package/src/util/color_ramp.js +0 -28
  407. package/src/util/config.js +0 -30
  408. package/src/util/debug.js +0 -12
  409. package/src/util/dictionary_coder.js +0 -30
  410. package/src/util/dispatcher.js +0 -70
  411. package/src/util/dom.js +0 -144
  412. package/src/util/evented.js +0 -174
  413. package/src/util/find_pole_of_inaccessibility.js +0 -129
  414. package/src/util/global_worker_pool.js +0 -17
  415. package/src/util/image.js +0 -142
  416. package/src/util/intersection_tests.js +0 -208
  417. package/src/util/is_char_in_unicode_block.js +0 -311
  418. package/src/util/mapbox.js +0 -486
  419. package/src/util/offscreen_canvas_supported.js +0 -14
  420. package/src/util/performance.js +0 -112
  421. package/src/util/primitives.js +0 -145
  422. package/src/util/resolve_tokens.js +0 -16
  423. package/src/util/script_detection.js +0 -328
  424. package/src/util/sku_token.js +0 -42
  425. package/src/util/smart_wrap.js +0 -55
  426. package/src/util/struct_array.js +0 -243
  427. package/src/util/struct_array.js.ejs +0 -112
  428. package/src/util/struct_array_layout.js.ejs +0 -98
  429. package/src/util/task_queue.js +0 -68
  430. package/src/util/throttle.js +0 -28
  431. package/src/util/throttled_invoker.js +0 -46
  432. package/src/util/tile_cover.js +0 -101
  433. package/src/util/tile_request_cache.js +0 -172
  434. package/src/util/util.js +0 -504
  435. package/src/util/vectortile_to_geojson.js +0 -54
  436. package/src/util/verticalize_punctuation.js +0 -114
  437. package/src/util/web_worker.js +0 -91
  438. package/src/util/web_worker_transfer.js +0 -266
  439. package/src/util/webp_supported.js +0 -69
  440. package/src/util/window.js +0 -102
  441. package/src/util/worker_pool.js +0 -47
@@ -1,556 +0,0 @@
1
- // @flow
2
-
3
- import {LineLayoutArray} from '../array_types';
4
-
5
- import {members as layoutAttributes} from './line_attributes';
6
- import SegmentVector from '../segment';
7
- import {ProgramConfigurationSet} from '../program_configuration';
8
- import {TriangleIndexArray} from '../index_array_type';
9
- import EXTENT from '../extent';
10
- import mvt from '@mapbox/vector-tile';
11
- const vectorTileFeatureTypes = mvt.VectorTileFeature.types;
12
- import {register} from '../../util/web_worker_transfer';
13
- import {hasPattern, addPatternDependencies} from './pattern_bucket_features';
14
- import loadGeometry from '../load_geometry';
15
- import EvaluationParameters from '../../style/evaluation_parameters';
16
-
17
- import type {CanonicalTileID} from '../../source/tile_id';
18
- import type {
19
- Bucket,
20
- BucketParameters,
21
- BucketFeature,
22
- IndexedFeature,
23
- PopulateParameters
24
- } from '../bucket';
25
- import type LineStyleLayer from '../../style/style_layer/line_style_layer';
26
- import type Point from '@mapbox/point-geometry';
27
- import type {Segment} from '../segment';
28
- import type Context from '../../gl/context';
29
- import type IndexBuffer from '../../gl/index_buffer';
30
- import type VertexBuffer from '../../gl/vertex_buffer';
31
- import type {FeatureStates} from '../../source/source_state';
32
- import type {ImagePosition} from '../../render/image_atlas';
33
-
34
- // NOTE ON EXTRUDE SCALE:
35
- // scale the extrusion vector so that the normal length is this value.
36
- // contains the "texture" normals (-1..1). this is distinct from the extrude
37
- // normals for line joins, because the x-value remains 0 for the texture
38
- // normal array, while the extrude normal actually moves the vertex to create
39
- // the acute/bevelled line join.
40
- const EXTRUDE_SCALE = 63;
41
-
42
- /*
43
- * Sharp corners cause dashed lines to tilt because the distance along the line
44
- * is the same at both the inner and outer corners. To improve the appearance of
45
- * dashed lines we add extra points near sharp corners so that a smaller part
46
- * of the line is tilted.
47
- *
48
- * COS_HALF_SHARP_CORNER controls how sharp a corner has to be for us to add an
49
- * extra vertex. The default is 75 degrees.
50
- *
51
- * The newly created vertices are placed SHARP_CORNER_OFFSET pixels from the corner.
52
- */
53
- const COS_HALF_SHARP_CORNER = Math.cos(75 / 2 * (Math.PI / 180));
54
- const SHARP_CORNER_OFFSET = 15;
55
-
56
- // Angle per triangle for approximating round line joins.
57
- const DEG_PER_TRIANGLE = 20;
58
-
59
- // The number of bits that is used to store the line distance in the buffer.
60
- const LINE_DISTANCE_BUFFER_BITS = 15;
61
-
62
- // We don't have enough bits for the line distance as we'd like to have, so
63
- // use this value to scale the line distance (in tile units) down to a smaller
64
- // value. This lets us store longer distances while sacrificing precision.
65
- const LINE_DISTANCE_SCALE = 1 / 2;
66
-
67
- // The maximum line distance, in tile units, that fits in the buffer.
68
- const MAX_LINE_DISTANCE = Math.pow(2, LINE_DISTANCE_BUFFER_BITS - 1) / LINE_DISTANCE_SCALE;
69
-
70
- /**
71
- * @private
72
- */
73
- class LineBucket implements Bucket {
74
- distance: number;
75
- totalDistance: number;
76
- scaledDistance: number;
77
- clipStart: number;
78
- clipEnd: number;
79
-
80
- e1: number;
81
- e2: number;
82
-
83
- index: number;
84
- zoom: number;
85
- overscaling: number;
86
- layers: Array<LineStyleLayer>;
87
- layerIds: Array<string>;
88
- stateDependentLayers: Array<any>;
89
- stateDependentLayerIds: Array<string>;
90
- patternFeatures: Array<BucketFeature>;
91
-
92
- layoutVertexArray: LineLayoutArray;
93
- layoutVertexBuffer: VertexBuffer;
94
-
95
- indexArray: TriangleIndexArray;
96
- indexBuffer: IndexBuffer;
97
-
98
- hasPattern: boolean;
99
- programConfigurations: ProgramConfigurationSet<LineStyleLayer>;
100
- segments: SegmentVector;
101
- uploaded: boolean;
102
-
103
- constructor(options: BucketParameters<LineStyleLayer>) {
104
- this.zoom = options.zoom;
105
- this.overscaling = options.overscaling;
106
- this.layers = options.layers;
107
- this.layerIds = this.layers.map(layer => layer.id);
108
- this.index = options.index;
109
- this.hasPattern = false;
110
- this.patternFeatures = [];
111
-
112
- this.layoutVertexArray = new LineLayoutArray();
113
- this.indexArray = new TriangleIndexArray();
114
- this.programConfigurations = new ProgramConfigurationSet(layoutAttributes, options.layers, options.zoom);
115
- this.segments = new SegmentVector();
116
-
117
- this.stateDependentLayerIds = this.layers.filter((l) => l.isStateDependent()).map((l) => l.id);
118
- }
119
-
120
- populate(features: Array<IndexedFeature>, options: PopulateParameters, canonical: CanonicalTileID) {
121
- this.hasPattern = hasPattern('line', this.layers, options);
122
- const lineSortKey = this.layers[0].layout.get('line-sort-key');
123
- const bucketFeatures = [];
124
-
125
- for (const {feature, id, index, sourceLayerIndex} of features) {
126
- const needGeometry = this.layers[0]._featureFilter.needGeometry;
127
- const evaluationFeature = {type: feature.type,
128
- id,
129
- properties: feature.properties,
130
- geometry: needGeometry ? loadGeometry(feature) : []};
131
-
132
- if (!this.layers[0]._featureFilter.filter(new EvaluationParameters(this.zoom), evaluationFeature, canonical)) continue;
133
-
134
- if (!needGeometry) evaluationFeature.geometry = loadGeometry(feature);
135
-
136
- const sortKey = lineSortKey ?
137
- lineSortKey.evaluate(evaluationFeature, {}, canonical) :
138
- undefined;
139
-
140
- const bucketFeature: BucketFeature = {
141
- id,
142
- properties: feature.properties,
143
- type: feature.type,
144
- sourceLayerIndex,
145
- index,
146
- geometry: evaluationFeature.geometry,
147
- patterns: {},
148
- sortKey
149
- };
150
-
151
- bucketFeatures.push(bucketFeature);
152
- }
153
-
154
- if (lineSortKey) {
155
- bucketFeatures.sort((a, b) => {
156
- // a.sortKey is always a number when in use
157
- return ((a.sortKey: any): number) - ((b.sortKey: any): number);
158
- });
159
- }
160
-
161
- for (const bucketFeature of bucketFeatures) {
162
- const {geometry, index, sourceLayerIndex} = bucketFeature;
163
-
164
- if (this.hasPattern) {
165
- const patternBucketFeature = addPatternDependencies('line', this.layers, bucketFeature, this.zoom, options);
166
- // pattern features are added only once the pattern is loaded into the image atlas
167
- // so are stored during populate until later updated with positions by tile worker in addFeatures
168
- this.patternFeatures.push(patternBucketFeature);
169
- } else {
170
- this.addFeature(bucketFeature, geometry, index, canonical, {});
171
- }
172
-
173
- const feature = features[index].feature;
174
- options.featureIndex.insert(feature, geometry, index, sourceLayerIndex, this.index);
175
- }
176
- }
177
-
178
- update(states: FeatureStates, vtLayer: VectorTileLayer, imagePositions: {[_: string]: ImagePosition}) {
179
- if (!this.stateDependentLayers.length) return;
180
- this.programConfigurations.updatePaintArrays(states, vtLayer, this.stateDependentLayers, imagePositions);
181
- }
182
-
183
- addFeatures(options: PopulateParameters, canonical: CanonicalTileID, imagePositions: {[_: string]: ImagePosition}) {
184
- for (const feature of this.patternFeatures) {
185
- this.addFeature(feature, feature.geometry, feature.index, canonical, imagePositions);
186
- }
187
- }
188
-
189
- isEmpty() {
190
- return this.layoutVertexArray.length === 0;
191
- }
192
-
193
- uploadPending() {
194
- return !this.uploaded || this.programConfigurations.needsUpload;
195
- }
196
-
197
- upload(context: Context) {
198
- if (!this.uploaded) {
199
- this.layoutVertexBuffer = context.createVertexBuffer(this.layoutVertexArray, layoutAttributes);
200
- this.indexBuffer = context.createIndexBuffer(this.indexArray);
201
- }
202
- this.programConfigurations.upload(context);
203
- this.uploaded = true;
204
- }
205
-
206
- destroy() {
207
- if (!this.layoutVertexBuffer) return;
208
- this.layoutVertexBuffer.destroy();
209
- this.indexBuffer.destroy();
210
- this.programConfigurations.destroy();
211
- this.segments.destroy();
212
- }
213
-
214
- addFeature(feature: BucketFeature, geometry: Array<Array<Point>>, index: number, canonical: CanonicalTileID, imagePositions: {[_: string]: ImagePosition}) {
215
- const layout = this.layers[0].layout;
216
- const join = layout.get('line-join').evaluate(feature, {});
217
- const cap = layout.get('line-cap');
218
- const miterLimit = layout.get('line-miter-limit');
219
- const roundLimit = layout.get('line-round-limit');
220
-
221
- for (const line of geometry) {
222
- this.addLine(line, feature, join, cap, miterLimit, roundLimit);
223
- }
224
-
225
- this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, feature, index, imagePositions, canonical);
226
- }
227
-
228
- addLine(vertices: Array<Point>, feature: BucketFeature, join: string, cap: string, miterLimit: number, roundLimit: number) {
229
- this.distance = 0;
230
- this.scaledDistance = 0;
231
- this.totalDistance = 0;
232
-
233
- if (!!feature.properties &&
234
- feature.properties.hasOwnProperty('mapbox_clip_start') &&
235
- feature.properties.hasOwnProperty('mapbox_clip_end')) {
236
-
237
- this.clipStart = +feature.properties['mapbox_clip_start'];
238
- this.clipEnd = +feature.properties['mapbox_clip_end'];
239
-
240
- // Calculate the total distance, in tile units, of this tiled line feature
241
- for (let i = 0; i < vertices.length - 1; i++) {
242
- this.totalDistance += vertices[i].dist(vertices[i + 1]);
243
- }
244
- this.updateScaledDistance();
245
- }
246
-
247
- const isPolygon = vectorTileFeatureTypes[feature.type] === 'Polygon';
248
-
249
- // If the line has duplicate vertices at the ends, adjust start/length to remove them.
250
- let len = vertices.length;
251
- while (len >= 2 && vertices[len - 1].equals(vertices[len - 2])) {
252
- len--;
253
- }
254
- let first = 0;
255
- while (first < len - 1 && vertices[first].equals(vertices[first + 1])) {
256
- first++;
257
- }
258
-
259
- // Ignore invalid geometry.
260
- if (len < (isPolygon ? 3 : 2)) return;
261
-
262
- if (join === 'bevel') miterLimit = 1.05;
263
-
264
- const sharpCornerOffset = this.overscaling <= 16 ?
265
- SHARP_CORNER_OFFSET * EXTENT / (512 * this.overscaling) :
266
- 0;
267
-
268
- // we could be more precise, but it would only save a negligible amount of space
269
- const segment = this.segments.prepareSegment(len * 10, this.layoutVertexArray, this.indexArray);
270
-
271
- let currentVertex;
272
- let prevVertex = ((undefined: any): Point);
273
- let nextVertex = ((undefined: any): Point);
274
- let prevNormal = ((undefined: any): Point);
275
- let nextNormal = ((undefined: any): Point);
276
-
277
- // the last two vertices added
278
- this.e1 = this.e2 = -1;
279
-
280
- if (isPolygon) {
281
- currentVertex = vertices[len - 2];
282
- nextNormal = vertices[first].sub(currentVertex)._unit()._perp();
283
- }
284
-
285
- for (let i = first; i < len; i++) {
286
-
287
- nextVertex = i === len - 1 ?
288
- (isPolygon ? vertices[first + 1] : (undefined: any)) : // if it's a polygon, treat the last vertex like the first
289
- vertices[i + 1]; // just the next vertex
290
-
291
- // if two consecutive vertices exist, skip the current one
292
- if (nextVertex && vertices[i].equals(nextVertex)) continue;
293
-
294
- if (nextNormal) prevNormal = nextNormal;
295
- if (currentVertex) prevVertex = currentVertex;
296
-
297
- currentVertex = vertices[i];
298
-
299
- // Calculate the normal towards the next vertex in this line. In case
300
- // there is no next vertex, pretend that the line is continuing straight,
301
- // meaning that we are just using the previous normal.
302
- nextNormal = nextVertex ? nextVertex.sub(currentVertex)._unit()._perp() : prevNormal;
303
-
304
- // If we still don't have a previous normal, this is the beginning of a
305
- // non-closed line, so we're doing a straight "join".
306
- prevNormal = prevNormal || nextNormal;
307
-
308
- // Determine the normal of the join extrusion. It is the angle bisector
309
- // of the segments between the previous line and the next line.
310
- // In the case of 180° angles, the prev and next normals cancel each other out:
311
- // prevNormal + nextNormal = (0, 0), its magnitude is 0, so the unit vector would be
312
- // undefined. In that case, we're keeping the joinNormal at (0, 0), so that the cosHalfAngle
313
- // below will also become 0 and miterLength will become Infinity.
314
- let joinNormal = prevNormal.add(nextNormal);
315
- if (joinNormal.x !== 0 || joinNormal.y !== 0) {
316
- joinNormal._unit();
317
- }
318
- /* joinNormal prevNormal
319
- * ↖ ↑
320
- * .________. prevVertex
321
- * |
322
- * nextNormal ← | currentVertex
323
- * |
324
- * nextVertex !
325
- *
326
- */
327
-
328
- // calculate cosines of the angle (and its half) using dot product
329
- const cosAngle = prevNormal.x * nextNormal.x + prevNormal.y * nextNormal.y;
330
- const cosHalfAngle = joinNormal.x * nextNormal.x + joinNormal.y * nextNormal.y;
331
-
332
- // Calculate the length of the miter (the ratio of the miter to the width)
333
- // as the inverse of cosine of the angle between next and join normals
334
- const miterLength = cosHalfAngle !== 0 ? 1 / cosHalfAngle : Infinity;
335
-
336
- // approximate angle from cosine
337
- const approxAngle = 2 * Math.sqrt(2 - 2 * cosHalfAngle);
338
-
339
- const isSharpCorner = cosHalfAngle < COS_HALF_SHARP_CORNER && prevVertex && nextVertex;
340
- const lineTurnsLeft = prevNormal.x * nextNormal.y - prevNormal.y * nextNormal.x > 0;
341
-
342
- if (isSharpCorner && i > first) {
343
- const prevSegmentLength = currentVertex.dist(prevVertex);
344
- if (prevSegmentLength > 2 * sharpCornerOffset) {
345
- const newPrevVertex = currentVertex.sub(currentVertex.sub(prevVertex)._mult(sharpCornerOffset / prevSegmentLength)._round());
346
- this.updateDistance(prevVertex, newPrevVertex);
347
- this.addCurrentVertex(newPrevVertex, prevNormal, 0, 0, segment);
348
- prevVertex = newPrevVertex;
349
- }
350
- }
351
-
352
- // The join if a middle vertex, otherwise the cap.
353
- const middleVertex = prevVertex && nextVertex;
354
- let currentJoin = middleVertex ? join : isPolygon ? 'butt' : cap;
355
-
356
- if (middleVertex && currentJoin === 'round') {
357
- if (miterLength < roundLimit) {
358
- currentJoin = 'miter';
359
- } else if (miterLength <= 2) {
360
- currentJoin = 'fakeround';
361
- }
362
- }
363
-
364
- if (currentJoin === 'miter' && miterLength > miterLimit) {
365
- currentJoin = 'bevel';
366
- }
367
-
368
- if (currentJoin === 'bevel') {
369
- // The maximum extrude length is 128 / 63 = 2 times the width of the line
370
- // so if miterLength >= 2 we need to draw a different type of bevel here.
371
- if (miterLength > 2) currentJoin = 'flipbevel';
372
-
373
- // If the miterLength is really small and the line bevel wouldn't be visible,
374
- // just draw a miter join to save a triangle.
375
- if (miterLength < miterLimit) currentJoin = 'miter';
376
- }
377
-
378
- // Calculate how far along the line the currentVertex is
379
- if (prevVertex) this.updateDistance(prevVertex, currentVertex);
380
-
381
- if (currentJoin === 'miter') {
382
-
383
- joinNormal._mult(miterLength);
384
- this.addCurrentVertex(currentVertex, joinNormal, 0, 0, segment);
385
-
386
- } else if (currentJoin === 'flipbevel') {
387
- // miter is too big, flip the direction to make a beveled join
388
-
389
- if (miterLength > 100) {
390
- // Almost parallel lines
391
- joinNormal = nextNormal.mult(-1);
392
-
393
- } else {
394
- const bevelLength = miterLength * prevNormal.add(nextNormal).mag() / prevNormal.sub(nextNormal).mag();
395
- joinNormal._perp()._mult(bevelLength * (lineTurnsLeft ? -1 : 1));
396
- }
397
- this.addCurrentVertex(currentVertex, joinNormal, 0, 0, segment);
398
- this.addCurrentVertex(currentVertex, joinNormal.mult(-1), 0, 0, segment);
399
-
400
- } else if (currentJoin === 'bevel' || currentJoin === 'fakeround') {
401
- const offset = -Math.sqrt(miterLength * miterLength - 1);
402
- const offsetA = lineTurnsLeft ? offset : 0;
403
- const offsetB = lineTurnsLeft ? 0 : offset;
404
-
405
- // Close previous segment with a bevel
406
- if (prevVertex) {
407
- this.addCurrentVertex(currentVertex, prevNormal, offsetA, offsetB, segment);
408
- }
409
-
410
- if (currentJoin === 'fakeround') {
411
- // The join angle is sharp enough that a round join would be visible.
412
- // Bevel joins fill the gap between segments with a single pie slice triangle.
413
- // Create a round join by adding multiple pie slices. The join isn't actually round, but
414
- // it looks like it is at the sizes we render lines at.
415
-
416
- // pick the number of triangles for approximating round join by based on the angle between normals
417
- const n = Math.round((approxAngle * 180 / Math.PI) / DEG_PER_TRIANGLE);
418
-
419
- for (let m = 1; m < n; m++) {
420
- let t = m / n;
421
- if (t !== 0.5) {
422
- // approximate spherical interpolation https://observablehq.com/@mourner/approximating-geometric-slerp
423
- const t2 = t - 0.5;
424
- const A = 1.0904 + cosAngle * (-3.2452 + cosAngle * (3.55645 - cosAngle * 1.43519));
425
- const B = 0.848013 + cosAngle * (-1.06021 + cosAngle * 0.215638);
426
- t = t + t * t2 * (t - 1) * (A * t2 * t2 + B);
427
- }
428
- const extrude = nextNormal.sub(prevNormal)._mult(t)._add(prevNormal)._unit()._mult(lineTurnsLeft ? -1 : 1);
429
- this.addHalfVertex(currentVertex, extrude.x, extrude.y, false, lineTurnsLeft, 0, segment);
430
- }
431
- }
432
-
433
- if (nextVertex) {
434
- // Start next segment
435
- this.addCurrentVertex(currentVertex, nextNormal, -offsetA, -offsetB, segment);
436
- }
437
-
438
- } else if (currentJoin === 'butt') {
439
- this.addCurrentVertex(currentVertex, joinNormal, 0, 0, segment); // butt cap
440
-
441
- } else if (currentJoin === 'square') {
442
- const offset = prevVertex ? 1 : -1; // closing or starting square cap
443
- this.addCurrentVertex(currentVertex, joinNormal, offset, offset, segment);
444
-
445
- } else if (currentJoin === 'round') {
446
-
447
- if (prevVertex) {
448
- // Close previous segment with butt
449
- this.addCurrentVertex(currentVertex, prevNormal, 0, 0, segment);
450
-
451
- // Add round cap or linejoin at end of segment
452
- this.addCurrentVertex(currentVertex, prevNormal, 1, 1, segment, true);
453
- }
454
- if (nextVertex) {
455
- // Add round cap before first segment
456
- this.addCurrentVertex(currentVertex, nextNormal, -1, -1, segment, true);
457
-
458
- // Start next segment with a butt
459
- this.addCurrentVertex(currentVertex, nextNormal, 0, 0, segment);
460
- }
461
- }
462
-
463
- if (isSharpCorner && i < len - 1) {
464
- const nextSegmentLength = currentVertex.dist(nextVertex);
465
- if (nextSegmentLength > 2 * sharpCornerOffset) {
466
- const newCurrentVertex = currentVertex.add(nextVertex.sub(currentVertex)._mult(sharpCornerOffset / nextSegmentLength)._round());
467
- this.updateDistance(currentVertex, newCurrentVertex);
468
- this.addCurrentVertex(newCurrentVertex, nextNormal, 0, 0, segment);
469
- currentVertex = newCurrentVertex;
470
- }
471
- }
472
- }
473
- }
474
-
475
- /**
476
- * Add two vertices to the buffers.
477
- *
478
- * @param p the line vertex to add buffer vertices for
479
- * @param normal vertex normal
480
- * @param endLeft extrude to shift the left vertex along the line
481
- * @param endRight extrude to shift the left vertex along the line
482
- * @param segment the segment object to add the vertex to
483
- * @param round whether this is a round cap
484
- * @private
485
- */
486
- addCurrentVertex(p: Point, normal: Point, endLeft: number, endRight: number, segment: Segment, round: boolean = false) {
487
- // left and right extrude vectors, perpendicularly shifted by endLeft/endRight
488
- const leftX = normal.x + normal.y * endLeft;
489
- const leftY = normal.y - normal.x * endLeft;
490
- const rightX = -normal.x + normal.y * endRight;
491
- const rightY = -normal.y - normal.x * endRight;
492
-
493
- this.addHalfVertex(p, leftX, leftY, round, false, endLeft, segment);
494
- this.addHalfVertex(p, rightX, rightY, round, true, -endRight, segment);
495
-
496
- // There is a maximum "distance along the line" that we can store in the buffers.
497
- // When we get close to the distance, reset it to zero and add the vertex again with
498
- // a distance of zero. The max distance is determined by the number of bits we allocate
499
- // to `linesofar`.
500
- if (this.distance > MAX_LINE_DISTANCE / 2 && this.totalDistance === 0) {
501
- this.distance = 0;
502
- this.addCurrentVertex(p, normal, endLeft, endRight, segment, round);
503
- }
504
- }
505
-
506
- addHalfVertex({x, y}: Point, extrudeX: number, extrudeY: number, round: boolean, up: boolean, dir: number, segment: Segment) {
507
- // scale down so that we can store longer distances while sacrificing precision.
508
- const linesofar = this.scaledDistance * LINE_DISTANCE_SCALE;
509
-
510
- this.layoutVertexArray.emplaceBack(
511
- // a_pos_normal
512
- // Encode round/up the least significant bits
513
- (x << 1) + (round ? 1 : 0),
514
- (y << 1) + (up ? 1 : 0),
515
- // a_data
516
- // add 128 to store a byte in an unsigned byte
517
- Math.round(EXTRUDE_SCALE * extrudeX) + 128,
518
- Math.round(EXTRUDE_SCALE * extrudeY) + 128,
519
- // Encode the -1/0/1 direction value into the first two bits of .z of a_data.
520
- // Combine it with the lower 6 bits of `linesofar` (shifted by 2 bites to make
521
- // room for the direction value). The upper 8 bits of `linesofar` are placed in
522
- // the `w` component.
523
- ((dir === 0 ? 0 : (dir < 0 ? -1 : 1)) + 1) | ((linesofar & 0x3F) << 2),
524
- linesofar >> 6);
525
-
526
- const e = segment.vertexLength++;
527
- if (this.e1 >= 0 && this.e2 >= 0) {
528
- this.indexArray.emplaceBack(this.e1, this.e2, e);
529
- segment.primitiveLength++;
530
- }
531
- if (up) {
532
- this.e2 = e;
533
- } else {
534
- this.e1 = e;
535
- }
536
- }
537
-
538
- updateScaledDistance() {
539
- // Knowing the ratio of the full linestring covered by this tiled feature, as well
540
- // as the total distance (in tile units) of this tiled feature, and the distance
541
- // (in tile units) of the current vertex, we can determine the relative distance
542
- // of this vertex along the full linestring feature and scale it to [0, 2^15)
543
- this.scaledDistance = this.totalDistance > 0 ?
544
- (this.clipStart + (this.clipEnd - this.clipStart) * this.distance / this.totalDistance) * (MAX_LINE_DISTANCE - 1) :
545
- this.distance;
546
- }
547
-
548
- updateDistance(prev: Point, next: Point) {
549
- this.distance += prev.dist(next);
550
- this.updateScaledDistance();
551
- }
552
- }
553
-
554
- register('LineBucket', LineBucket, {omit: ['layers', 'patternFeatures']});
555
-
556
- export default LineBucket;
@@ -1,10 +0,0 @@
1
- // @flow
2
- import {createLayout} from '../../util/struct_array';
3
-
4
- export default createLayout([
5
- // [tl.x, tl.y, br.x, br.y]
6
- {name: 'a_pattern_from', components: 4, type: 'Uint16'},
7
- {name: 'a_pattern_to', components: 4, type: 'Uint16'},
8
- {name: 'a_pixel_ratio_from', components: 1, type: 'Uint8'},
9
- {name: 'a_pixel_ratio_to', components: 1, type: 'Uint8'},
10
- ]);
@@ -1,60 +0,0 @@
1
- // @flow
2
- import type FillStyleLayer from '../../style/style_layer/fill_style_layer';
3
- import type FillExtrusionStyleLayer from '../../style/style_layer/fill_extrusion_style_layer';
4
- import type LineStyleLayer from '../../style/style_layer/line_style_layer';
5
-
6
- import type {
7
- BucketFeature,
8
- PopulateParameters
9
- } from '../bucket';
10
-
11
- type PatternStyleLayers =
12
- Array<LineStyleLayer> |
13
- Array<FillStyleLayer> |
14
- Array<FillExtrusionStyleLayer>;
15
-
16
- export function hasPattern(type: string, layers: PatternStyleLayers, options: PopulateParameters) {
17
- const patterns = options.patternDependencies;
18
- let hasPattern = false;
19
-
20
- for (const layer of layers) {
21
- const patternProperty = layer.paint.get(`${type}-pattern`);
22
- if (!patternProperty.isConstant()) {
23
- hasPattern = true;
24
- }
25
-
26
- const constantPattern = patternProperty.constantOr(null);
27
- if (constantPattern) {
28
- hasPattern = true;
29
- patterns[constantPattern.to] = true;
30
- patterns[constantPattern.from] = true;
31
- }
32
- }
33
-
34
- return hasPattern;
35
- }
36
-
37
- export function addPatternDependencies(type: string, layers: PatternStyleLayers, patternFeature: BucketFeature, zoom: number, options: PopulateParameters) {
38
- const patterns = options.patternDependencies;
39
- for (const layer of layers) {
40
- const patternProperty = layer.paint.get(`${type}-pattern`);
41
-
42
- const patternPropertyValue = patternProperty.value;
43
- if (patternPropertyValue.kind !== "constant") {
44
- let min = patternPropertyValue.evaluate({zoom: zoom - 1}, patternFeature, {}, options.availableImages);
45
- let mid = patternPropertyValue.evaluate({zoom}, patternFeature, {}, options.availableImages);
46
- let max = patternPropertyValue.evaluate({zoom: zoom + 1}, patternFeature, {}, options.availableImages);
47
- min = min && min.name ? min.name : min;
48
- mid = mid && mid.name ? mid.name : mid;
49
- max = max && max.name ? max.name : max;
50
- // add to patternDependencies
51
- patterns[min] = true;
52
- patterns[mid] = true;
53
- patterns[max] = true;
54
-
55
- // save for layout
56
- patternFeature.patterns[layer.id] = {min, mid, max};
57
- }
58
- }
59
- return patternFeature;
60
- }