@mapgis/mapbox-gl 16.0.1 → 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 (434) hide show
  1. package/dist/mapbox-gl.js +3 -3
  2. package/dist/mapbox-gl.js.map +1 -1
  3. package/package.json +1 -1
  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/flow-typed/gl.js +0 -5
  22. package/flow-typed/jsdom.js +0 -18
  23. package/flow-typed/mapbox-gl-supported.js +0 -9
  24. package/flow-typed/mapbox-unitbezier.js +0 -14
  25. package/flow-typed/offscreen-canvas.js +0 -9
  26. package/flow-typed/pbf.js +0 -25
  27. package/flow-typed/point-geometry.js +0 -44
  28. package/flow-typed/potpack.js +0 -12
  29. package/flow-typed/sinon.js +0 -28
  30. package/flow-typed/vector-tile.js +0 -41
  31. package/src/css/mapbox-gl.css +0 -798
  32. package/src/css/svg/mapboxgl-ctrl-attrib.svg +0 -3
  33. package/src/css/svg/mapboxgl-ctrl-compass.svg +0 -4
  34. package/src/css/svg/mapboxgl-ctrl-fullscreen.svg +0 -3
  35. package/src/css/svg/mapboxgl-ctrl-geolocate.svg +0 -5
  36. package/src/css/svg/mapboxgl-ctrl-logo.svg +0 -20
  37. package/src/css/svg/mapboxgl-ctrl-shrink.svg +0 -3
  38. package/src/css/svg/mapboxgl-ctrl-zoom-in.svg +0 -3
  39. package/src/css/svg/mapboxgl-ctrl-zoom-out.svg +0 -3
  40. package/src/data/array_types.js +0 -1095
  41. package/src/data/bucket/circle_attributes.js +0 -9
  42. package/src/data/bucket/circle_bucket.js +0 -204
  43. package/src/data/bucket/fill_attributes.js +0 -9
  44. package/src/data/bucket/fill_bucket.js +0 -233
  45. package/src/data/bucket/fill_extrusion_attributes.js +0 -10
  46. package/src/data/bucket/fill_extrusion_bucket.js +0 -289
  47. package/src/data/bucket/heatmap_bucket.js +0 -17
  48. package/src/data/bucket/line_attributes.js +0 -10
  49. package/src/data/bucket/line_bucket.js +0 -556
  50. package/src/data/bucket/pattern_attributes.js +0 -10
  51. package/src/data/bucket/pattern_bucket_features.js +0 -60
  52. package/src/data/bucket/symbol_attributes.js +0 -117
  53. package/src/data/bucket/symbol_bucket.js +0 -972
  54. package/src/data/bucket.js +0 -123
  55. package/src/data/dem_data.js +0 -125
  56. package/src/data/extent.js +0 -18
  57. package/src/data/feature_index.js +0 -321
  58. package/src/data/feature_position_map.js +0 -125
  59. package/src/data/index_array_type.js +0 -16
  60. package/src/data/load_geometry.js +0 -48
  61. package/src/data/pos_attributes.js +0 -6
  62. package/src/data/program_configuration.js +0 -687
  63. package/src/data/raster_bounds_attributes.js +0 -7
  64. package/src/data/segment.js +0 -76
  65. package/src/geo/edge_insets.js +0 -102
  66. package/src/geo/lng_lat.js +0 -165
  67. package/src/geo/lng_lat_bounds.js +0 -267
  68. package/src/geo/mercator_coordinate.js +0 -153
  69. package/src/geo/transform.js +0 -864
  70. package/src/gl/color_mode.js +0 -34
  71. package/src/gl/context.js +0 -298
  72. package/src/gl/cull_face_mode.js +0 -26
  73. package/src/gl/depth_mode.js +0 -29
  74. package/src/gl/framebuffer.js +0 -44
  75. package/src/gl/index_buffer.js +0 -55
  76. package/src/gl/stencil_mode.js +0 -30
  77. package/src/gl/types.js +0 -84
  78. package/src/gl/value.js +0 -520
  79. package/src/gl/vertex_buffer.js +0 -119
  80. package/src/index.js +0 -201
  81. package/src/render/draw_background.js +0 -57
  82. package/src/render/draw_circle.js +0 -113
  83. package/src/render/draw_collision_debug.js +0 -49
  84. package/src/render/draw_custom.js +0 -49
  85. package/src/render/draw_debug.js +0 -127
  86. package/src/render/draw_fill.js +0 -126
  87. package/src/render/draw_fill_extrusion.js +0 -96
  88. package/src/render/draw_heatmap.js +0 -140
  89. package/src/render/draw_hillshade.js +0 -108
  90. package/src/render/draw_line.js +0 -98
  91. package/src/render/draw_raster.js +0 -125
  92. package/src/render/draw_symbol.js +0 -394
  93. package/src/render/glyph_atlas.js +0 -71
  94. package/src/render/glyph_manager.js +0 -182
  95. package/src/render/image_atlas.js +0 -149
  96. package/src/render/image_manager.js +0 -306
  97. package/src/render/line_atlas.js +0 -210
  98. package/src/render/painter.js +0 -653
  99. package/src/render/program/background_program.js +0 -103
  100. package/src/render/program/circle_program.js +0 -69
  101. package/src/render/program/clipping_mask_program.js +0 -20
  102. package/src/render/program/collision_program.js +0 -49
  103. package/src/render/program/debug_program.js +0 -35
  104. package/src/render/program/fill_extrusion_program.js +0 -122
  105. package/src/render/program/fill_program.js +0 -126
  106. package/src/render/program/heatmap_program.js +0 -83
  107. package/src/render/program/hillshade_program.js +0 -122
  108. package/src/render/program/line_program.js +0 -207
  109. package/src/render/program/pattern.js +0 -102
  110. package/src/render/program/program_uniforms.js +0 -42
  111. package/src/render/program/raster_program.js +0 -92
  112. package/src/render/program/symbol_program.js +0 -224
  113. package/src/render/program.js +0 -168
  114. package/src/render/texture.js +0 -122
  115. package/src/render/uniform_binding.js +0 -147
  116. package/src/render/vertex_array_object.js +0 -163
  117. package/src/shaders/README.md +0 -42
  118. package/src/shaders/_prelude.fragment.glsl +0 -17
  119. package/src/shaders/_prelude.vertex.glsl +0 -73
  120. package/src/shaders/background.fragment.glsl +0 -10
  121. package/src/shaders/background.vertex.glsl +0 -7
  122. package/src/shaders/background_pattern.fragment.glsl +0 -28
  123. package/src/shaders/background_pattern.vertex.glsl +0 -20
  124. package/src/shaders/circle.fragment.glsl +0 -39
  125. package/src/shaders/circle.vertex.glsl +0 -64
  126. package/src/shaders/clipping_mask.fragment.glsl +0 -3
  127. package/src/shaders/clipping_mask.vertex.glsl +0 -7
  128. package/src/shaders/collision_box.fragment.glsl +0 -21
  129. package/src/shaders/collision_box.vertex.glsl +0 -27
  130. package/src/shaders/collision_circle.fragment.glsl +0 -34
  131. package/src/shaders/collision_circle.vertex.glsl +0 -36
  132. package/src/shaders/debug.fragment.glsl +0 -9
  133. package/src/shaders/debug.vertex.glsl +0 -12
  134. package/src/shaders/encode_attribute.js +0 -17
  135. package/src/shaders/fill.fragment.glsl +0 -13
  136. package/src/shaders/fill.vertex.glsl +0 -13
  137. package/src/shaders/fill_extrusion.fragment.glsl +0 -9
  138. package/src/shaders/fill_extrusion.vertex.glsl +0 -66
  139. package/src/shaders/fill_extrusion_pattern.fragment.glsl +0 -45
  140. package/src/shaders/fill_extrusion_pattern.vertex.glsl +0 -79
  141. package/src/shaders/fill_outline.fragment.glsl +0 -17
  142. package/src/shaders/fill_outline.vertex.glsl +0 -17
  143. package/src/shaders/fill_outline_pattern.fragment.glsl +0 -43
  144. package/src/shaders/fill_outline_pattern.vertex.glsl +0 -44
  145. package/src/shaders/fill_pattern.fragment.glsl +0 -36
  146. package/src/shaders/fill_pattern.vertex.glsl +0 -39
  147. package/src/shaders/heatmap.fragment.glsl +0 -22
  148. package/src/shaders/heatmap.vertex.glsl +0 -54
  149. package/src/shaders/heatmap_texture.fragment.glsl +0 -14
  150. package/src/shaders/heatmap_texture.vertex.glsl +0 -11
  151. package/src/shaders/hillshade.fragment.glsl +0 -52
  152. package/src/shaders/hillshade.vertex.glsl +0 -11
  153. package/src/shaders/hillshade_prepare.fragment.glsl +0 -74
  154. package/src/shaders/hillshade_prepare.vertex.glsl +0 -15
  155. package/src/shaders/index.js +0 -20
  156. package/src/shaders/line.fragment.glsl +0 -30
  157. package/src/shaders/line.vertex.glsl +0 -85
  158. package/src/shaders/line_gradient.fragment.glsl +0 -34
  159. package/src/shaders/line_gradient.vertex.glsl +0 -87
  160. package/src/shaders/line_pattern.fragment.glsl +0 -74
  161. package/src/shaders/line_pattern.vertex.glsl +0 -99
  162. package/src/shaders/line_sdf.fragment.glsl +0 -45
  163. package/src/shaders/line_sdf.vertex.glsl +0 -98
  164. package/src/shaders/raster.fragment.glsl +0 -52
  165. package/src/shaders/raster.vertex.glsl +0 -21
  166. package/src/shaders/shaders.js +0 -180
  167. package/src/shaders/symbol_icon.fragment.glsl +0 -17
  168. package/src/shaders/symbol_icon.vertex.glsl +0 -94
  169. package/src/shaders/symbol_sdf.fragment.glsl +0 -52
  170. package/src/shaders/symbol_sdf.vertex.glsl +0 -115
  171. package/src/shaders/symbol_text_and_icon.fragment.glsl +0 -68
  172. package/src/shaders/symbol_text_and_icon.vertex.glsl +0 -116
  173. package/src/source/canvas_source.js +0 -238
  174. package/src/source/geojson_helper.js +0 -92
  175. package/src/source/geojson_source.js +0 -374
  176. package/src/source/geojson_worker_source.js +0 -357
  177. package/src/source/geojson_wrapper.js +0 -94
  178. package/src/source/image_source.js +0 -307
  179. package/src/source/load_tilejson.js +0 -39
  180. package/src/source/mbtiles_source.js +0 -115
  181. package/src/source/offline_database.js +0 -61
  182. package/src/source/offline_database_root.js +0 -62
  183. package/src/source/pixels_to_tile_units.js +0 -21
  184. package/src/source/query_features.js +0 -208
  185. package/src/source/raster_dem_tile_source.js +0 -138
  186. package/src/source/raster_dem_tile_worker_source.js +0 -62
  187. package/src/source/raster_tile_offline_source.js +0 -136
  188. package/src/source/raster_tile_source.js +0 -177
  189. package/src/source/rtl_text_plugin.js +0 -138
  190. package/src/source/source.js +0 -137
  191. package/src/source/source_cache.js +0 -957
  192. package/src/source/source_state.js +0 -159
  193. package/src/source/tile.js +0 -465
  194. package/src/source/tile_bounds.js +0 -38
  195. package/src/source/tile_cache.js +0 -212
  196. package/src/source/tile_id.js +0 -402
  197. package/src/source/vector_tile_source.js +0 -192
  198. package/src/source/vector_tile_worker_source.js +0 -216
  199. package/src/source/video_source.js +0 -203
  200. package/src/source/worker.js +0 -237
  201. package/src/source/worker_source.js +0 -106
  202. package/src/source/worker_tile.js +0 -224
  203. package/src/style/create_style_layer.js +0 -36
  204. package/src/style/evaluation_parameters.js +0 -62
  205. package/src/style/light.js +0 -130
  206. package/src/style/load_glyph_range.js +0 -38
  207. package/src/style/load_sprite.js +0 -67
  208. package/src/style/parse_glyph_pbf.js +0 -44
  209. package/src/style/pauseable_placement.js +0 -132
  210. package/src/style/properties.js +0 -753
  211. package/src/style/query_utils.js +0 -43
  212. package/src/style/style.js +0 -1361
  213. package/src/style/style_glyph.js +0 -17
  214. package/src/style/style_image.js +0 -137
  215. package/src/style/style_layer/background_style_layer.js +0 -21
  216. package/src/style/style_layer/background_style_layer_properties.js +0 -40
  217. package/src/style/style_layer/circle_style_layer.js +0 -98
  218. package/src/style/style_layer/circle_style_layer_properties.js +0 -63
  219. package/src/style/style_layer/custom_style_layer.js +0 -223
  220. package/src/style/style_layer/fill_extrusion_style_layer.js +0 -224
  221. package/src/style/style_layer/fill_extrusion_style_layer_properties.js +0 -50
  222. package/src/style/style_layer/fill_style_layer.js +0 -67
  223. package/src/style/style_layer/fill_style_layer_properties.js +0 -55
  224. package/src/style/style_layer/heatmap_style_layer.js +0 -69
  225. package/src/style/style_layer/heatmap_style_layer_properties.js +0 -44
  226. package/src/style/style_layer/hillshade_style_layer.js +0 -25
  227. package/src/style/style_layer/hillshade_style_layer_properties.js +0 -46
  228. package/src/style/style_layer/layer_properties.js.ejs +0 -69
  229. package/src/style/style_layer/line_style_layer.js +0 -151
  230. package/src/style/style_layer/line_style_layer_properties.js +0 -71
  231. package/src/style/style_layer/raster_style_layer.js +0 -21
  232. package/src/style/style_layer/raster_style_layer_properties.js +0 -50
  233. package/src/style/style_layer/symbol_style_layer.js +0 -190
  234. package/src/style/style_layer/symbol_style_layer_properties.js +0 -153
  235. package/src/style/style_layer/typed_style_layer.js +0 -17
  236. package/src/style/style_layer.js +0 -281
  237. package/src/style/style_layer_index.js +0 -80
  238. package/src/style/validate_style.js +0 -42
  239. package/src/style/zoom_history.js +0 -44
  240. package/src/style-spec/.eslintrc +0 -5
  241. package/src/style-spec/CHANGELOG.md +0 -438
  242. package/src/style-spec/README.md +0 -59
  243. package/src/style-spec/bin/gl-style-composite +0 -9
  244. package/src/style-spec/bin/gl-style-format +0 -22
  245. package/src/style-spec/bin/gl-style-migrate +0 -9
  246. package/src/style-spec/bin/gl-style-validate +0 -50
  247. package/src/style-spec/composite.js +0 -50
  248. package/src/style-spec/declass.js +0 -42
  249. package/src/style-spec/deref.js +0 -52
  250. package/src/style-spec/diff.js +0 -393
  251. package/src/style-spec/dist/.gitkeep +0 -0
  252. package/src/style-spec/empty.js +0 -29
  253. package/src/style-spec/error/parsing_error.js +0 -16
  254. package/src/style-spec/error/validation_error.js +0 -18
  255. package/src/style-spec/expression/compound_expression.js +0 -162
  256. package/src/style-spec/expression/definitions/assertion.js +0 -130
  257. package/src/style-spec/expression/definitions/at.js +0 -70
  258. package/src/style-spec/expression/definitions/case.js +0 -85
  259. package/src/style-spec/expression/definitions/coalesce.js +0 -93
  260. package/src/style-spec/expression/definitions/coercion.js +0 -133
  261. package/src/style-spec/expression/definitions/collator.js +0 -78
  262. package/src/style-spec/expression/definitions/comparison.js +0 -184
  263. package/src/style-spec/expression/definitions/format.js +0 -144
  264. package/src/style-spec/expression/definitions/format_section_override.js +0 -54
  265. package/src/style-spec/expression/definitions/image.js +0 -52
  266. package/src/style-spec/expression/definitions/in.js +0 -92
  267. package/src/style-spec/expression/definitions/index.js +0 -561
  268. package/src/style-spec/expression/definitions/interpolate.js +0 -267
  269. package/src/style-spec/expression/definitions/length.js +0 -61
  270. package/src/style-spec/expression/definitions/let.js +0 -72
  271. package/src/style-spec/expression/definitions/literal.js +0 -77
  272. package/src/style-spec/expression/definitions/match.js +0 -158
  273. package/src/style-spec/expression/definitions/number_format.js +0 -142
  274. package/src/style-spec/expression/definitions/step.js +0 -120
  275. package/src/style-spec/expression/definitions/var.js +0 -46
  276. package/src/style-spec/expression/definitions/within.js +0 -333
  277. package/src/style-spec/expression/evaluation_context.js +0 -59
  278. package/src/style-spec/expression/expression.js +0 -27
  279. package/src/style-spec/expression/index.js +0 -392
  280. package/src/style-spec/expression/is_constant.js +0 -59
  281. package/src/style-spec/expression/parsing_context.js +0 -233
  282. package/src/style-spec/expression/parsing_error.js +0 -13
  283. package/src/style-spec/expression/runtime_error.js +0 -17
  284. package/src/style-spec/expression/scope.js +0 -36
  285. package/src/style-spec/expression/stops.js +0 -39
  286. package/src/style-spec/expression/types/collator.js +0 -61
  287. package/src/style-spec/expression/types/formatted.js +0 -73
  288. package/src/style-spec/expression/types/resolved_image.js +0 -29
  289. package/src/style-spec/expression/types.js +0 -106
  290. package/src/style-spec/expression/values.js +0 -123
  291. package/src/style-spec/feature_filter/README.md +0 -55
  292. package/src/style-spec/feature_filter/convert.js +0 -208
  293. package/src/style-spec/feature_filter/index.js +0 -165
  294. package/src/style-spec/format.js +0 -51
  295. package/src/style-spec/function/convert.js +0 -254
  296. package/src/style-spec/function/index.js +0 -262
  297. package/src/style-spec/group_by_layout.js +0 -75
  298. package/src/style-spec/migrate/expressions.js +0 -39
  299. package/src/style-spec/migrate/v8.js +0 -203
  300. package/src/style-spec/migrate/v9.js +0 -26
  301. package/src/style-spec/migrate.js +0 -36
  302. package/src/style-spec/package.json +0 -41
  303. package/src/style-spec/read_style.js +0 -14
  304. package/src/style-spec/reference/latest.js +0 -3
  305. package/src/style-spec/reference/v8.json +0 -5808
  306. package/src/style-spec/rollup.config.js +0 -45
  307. package/src/style-spec/style-spec.js +0 -122
  308. package/src/style-spec/types.js +0 -438
  309. package/src/style-spec/util/color.js +0 -95
  310. package/src/style-spec/util/color_spaces.js +0 -139
  311. package/src/style-spec/util/deep_equal.js +0 -28
  312. package/src/style-spec/util/extend.js +0 -10
  313. package/src/style-spec/util/get_type.js +0 -17
  314. package/src/style-spec/util/interpolate.js +0 -22
  315. package/src/style-spec/util/properties.js +0 -15
  316. package/src/style-spec/util/ref_properties.js +0 -2
  317. package/src/style-spec/util/result.js +0 -19
  318. package/src/style-spec/util/unbundle_jsonlint.js +0 -24
  319. package/src/style-spec/validate/latest.js +0 -11
  320. package/src/style-spec/validate/validate.js +0 -75
  321. package/src/style-spec/validate/validate_array.js +0 -52
  322. package/src/style-spec/validate/validate_boolean.js +0 -15
  323. package/src/style-spec/validate/validate_color.js +0 -20
  324. package/src/style-spec/validate/validate_constants.js +0 -13
  325. package/src/style-spec/validate/validate_enum.js +0 -21
  326. package/src/style-spec/validate/validate_expression.js +0 -43
  327. package/src/style-spec/validate/validate_filter.js +0 -111
  328. package/src/style-spec/validate/validate_formatted.js +0 -11
  329. package/src/style-spec/validate/validate_function.js +0 -207
  330. package/src/style-spec/validate/validate_glyphs_url.js +0 -21
  331. package/src/style-spec/validate/validate_image.js +0 -11
  332. package/src/style-spec/validate/validate_layer.js +0 -134
  333. package/src/style-spec/validate/validate_layout_property.js +0 -6
  334. package/src/style-spec/validate/validate_light.js +0 -47
  335. package/src/style-spec/validate/validate_number.js +0 -29
  336. package/src/style-spec/validate/validate_object.js +0 -61
  337. package/src/style-spec/validate/validate_paint_property.js +0 -6
  338. package/src/style-spec/validate/validate_property.js +0 -64
  339. package/src/style-spec/validate/validate_source.js +0 -111
  340. package/src/style-spec/validate/validate_string.js +0 -15
  341. package/src/style-spec/validate_mapbox_api_supported.js +0 -171
  342. package/src/style-spec/validate_style.js +0 -39
  343. package/src/style-spec/validate_style.min.js +0 -78
  344. package/src/style-spec/visit.js +0 -77
  345. package/src/symbol/anchor.js +0 -26
  346. package/src/symbol/check_max_angle.js +0 -81
  347. package/src/symbol/clip_line.js +0 -71
  348. package/src/symbol/collision_feature.js +0 -217
  349. package/src/symbol/collision_index.js +0 -372
  350. package/src/symbol/cross_tile_symbol_index.js +0 -301
  351. package/src/symbol/get_anchors.js +0 -167
  352. package/src/symbol/grid_index.js +0 -335
  353. package/src/symbol/mergelines.js +0 -82
  354. package/src/symbol/one_em.js +0 -4
  355. package/src/symbol/opacity_state.js +0 -27
  356. package/src/symbol/placement.js +0 -1062
  357. package/src/symbol/projection.js +0 -450
  358. package/src/symbol/quads.js +0 -334
  359. package/src/symbol/shaping.js +0 -816
  360. package/src/symbol/symbol_layout.js +0 -772
  361. package/src/symbol/symbol_size.js +0 -113
  362. package/src/symbol/transform_text.js +0 -29
  363. package/src/types/callback.js +0 -17
  364. package/src/types/cancelable.js +0 -3
  365. package/src/types/tilejson.js +0 -17
  366. package/src/types/transferable.js +0 -3
  367. package/src/types/window.js +0 -172
  368. package/src/ui/anchor.js +0 -32
  369. package/src/ui/bind_handlers.js +0 -202
  370. package/src/ui/camera.js +0 -1152
  371. package/src/ui/control/attribution_control.js +0 -189
  372. package/src/ui/control/fps_control.js +0 -185
  373. package/src/ui/control/fullscreen_control.js +0 -147
  374. package/src/ui/control/geolocate_control.js +0 -594
  375. package/src/ui/control/logo_control.js +0 -92
  376. package/src/ui/control/navigation_control.js +0 -148
  377. package/src/ui/control/scale_control.js +0 -142
  378. package/src/ui/crs.js +0 -64
  379. package/src/ui/default_locale.js +0 -20
  380. package/src/ui/events.js +0 -806
  381. package/src/ui/handler/box_zoom.js +0 -175
  382. package/src/ui/handler/dblclick_zoom.js +0 -139
  383. package/src/ui/handler/drag_pan.js +0 -416
  384. package/src/ui/handler/drag_rotate.js +0 -378
  385. package/src/ui/handler/keyboard.js +0 -161
  386. package/src/ui/handler/scroll_zoom.js +0 -333
  387. package/src/ui/handler/touch_zoom_rotate.js +0 -293
  388. package/src/ui/hash.js +0 -147
  389. package/src/ui/map.js +0 -2883
  390. package/src/ui/marker.js +0 -607
  391. package/src/ui/offline_map.js +0 -91
  392. package/src/ui/popup.js +0 -530
  393. package/src/util/actor.js +0 -212
  394. package/src/util/ajax.js +0 -371
  395. package/src/util/browser/web_worker.js +0 -10
  396. package/src/util/browser/window.js +0 -5
  397. package/src/util/browser.js +0 -70
  398. package/src/util/classify_rings.js +0 -52
  399. package/src/util/color_ramp.js +0 -28
  400. package/src/util/config.js +0 -30
  401. package/src/util/debug.js +0 -12
  402. package/src/util/dictionary_coder.js +0 -30
  403. package/src/util/dispatcher.js +0 -70
  404. package/src/util/dom.js +0 -144
  405. package/src/util/evented.js +0 -174
  406. package/src/util/find_pole_of_inaccessibility.js +0 -129
  407. package/src/util/global_worker_pool.js +0 -17
  408. package/src/util/image.js +0 -142
  409. package/src/util/intersection_tests.js +0 -208
  410. package/src/util/is_char_in_unicode_block.js +0 -311
  411. package/src/util/mapbox.js +0 -486
  412. package/src/util/offscreen_canvas_supported.js +0 -14
  413. package/src/util/performance.js +0 -112
  414. package/src/util/primitives.js +0 -145
  415. package/src/util/resolve_tokens.js +0 -16
  416. package/src/util/script_detection.js +0 -328
  417. package/src/util/sku_token.js +0 -42
  418. package/src/util/smart_wrap.js +0 -55
  419. package/src/util/struct_array.js +0 -243
  420. package/src/util/struct_array.js.ejs +0 -112
  421. package/src/util/struct_array_layout.js.ejs +0 -98
  422. package/src/util/task_queue.js +0 -68
  423. package/src/util/throttle.js +0 -28
  424. package/src/util/throttled_invoker.js +0 -46
  425. package/src/util/tile_cover.js +0 -101
  426. package/src/util/tile_request_cache.js +0 -172
  427. package/src/util/util.js +0 -504
  428. package/src/util/vectortile_to_geojson.js +0 -54
  429. package/src/util/verticalize_punctuation.js +0 -114
  430. package/src/util/web_worker.js +0 -91
  431. package/src/util/web_worker_transfer.js +0 -266
  432. package/src/util/webp_supported.js +0 -69
  433. package/src/util/window.js +0 -102
  434. 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
- }