mapbox-gl 1.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/.flowconfig +61 -0
  2. package/CHANGELOG.md +2485 -0
  3. package/LICENSE.txt +84 -0
  4. package/README.md +34 -0
  5. package/build/banner.js +4 -0
  6. package/build/check-bundle-size.js +140 -0
  7. package/build/diff-tarball.js +18 -0
  8. package/build/generate-access-token-script.js +11 -0
  9. package/build/generate-flow-typed-style-spec.js +188 -0
  10. package/build/generate-release-list.js +21 -0
  11. package/build/generate-struct-arrays.js +243 -0
  12. package/build/generate-style-code.js +159 -0
  13. package/build/mapbox-gl.js.flow +3 -0
  14. package/build/print-release-url.js +6 -0
  15. package/build/rollup_plugin_minify_style_spec.js +24 -0
  16. package/build/rollup_plugins.js +80 -0
  17. package/build/run-node +3 -0
  18. package/build/run-tap +8 -0
  19. package/build/test/build-tape.js +19 -0
  20. package/dist/mapbox-gl-csp-worker.js +2 -0
  21. package/dist/mapbox-gl-csp-worker.js.map +1 -0
  22. package/dist/mapbox-gl-csp.js +2 -0
  23. package/dist/mapbox-gl-csp.js.map +1 -0
  24. package/dist/mapbox-gl-dev.js +65889 -0
  25. package/dist/mapbox-gl-dev.js.flow +3 -0
  26. package/dist/mapbox-gl-unminified.js +42889 -0
  27. package/dist/mapbox-gl-unminified.js.map +1 -0
  28. package/dist/mapbox-gl.css +1 -0
  29. package/dist/mapbox-gl.js +42 -0
  30. package/dist/mapbox-gl.js.flow +3 -0
  31. package/dist/mapbox-gl.js.map +1 -0
  32. package/dist/style-spec/index.es.js +15032 -0
  33. package/dist/style-spec/index.es.js.map +1 -0
  34. package/dist/style-spec/index.js +15058 -0
  35. package/dist/style-spec/index.js.map +1 -0
  36. package/flow-typed/gl.js +5 -0
  37. package/flow-typed/jsdom.js +18 -0
  38. package/flow-typed/mapbox-gl-supported.js +9 -0
  39. package/flow-typed/mapbox-unitbezier.js +14 -0
  40. package/flow-typed/offscreen-canvas.js +9 -0
  41. package/flow-typed/pbf.js +25 -0
  42. package/flow-typed/point-geometry.js +44 -0
  43. package/flow-typed/potpack.js +12 -0
  44. package/flow-typed/sinon.js +28 -0
  45. package/flow-typed/vector-tile.js +41 -0
  46. package/package.json +173 -0
  47. package/src/css/mapbox-gl.css +812 -0
  48. package/src/css/svg/mapboxgl-ctrl-attrib.svg +3 -0
  49. package/src/css/svg/mapboxgl-ctrl-compass.svg +4 -0
  50. package/src/css/svg/mapboxgl-ctrl-fullscreen.svg +3 -0
  51. package/src/css/svg/mapboxgl-ctrl-geolocate.svg +5 -0
  52. package/src/css/svg/mapboxgl-ctrl-logo.svg +20 -0
  53. package/src/css/svg/mapboxgl-ctrl-shrink.svg +3 -0
  54. package/src/css/svg/mapboxgl-ctrl-zoom-in.svg +3 -0
  55. package/src/css/svg/mapboxgl-ctrl-zoom-out.svg +3 -0
  56. package/src/data/array_types.js +1135 -0
  57. package/src/data/bucket/circle_attributes.js +9 -0
  58. package/src/data/bucket/circle_bucket.js +201 -0
  59. package/src/data/bucket/fill_attributes.js +9 -0
  60. package/src/data/bucket/fill_bucket.js +229 -0
  61. package/src/data/bucket/fill_extrusion_attributes.js +10 -0
  62. package/src/data/bucket/fill_extrusion_bucket.js +283 -0
  63. package/src/data/bucket/heatmap_bucket.js +17 -0
  64. package/src/data/bucket/line_attributes.js +10 -0
  65. package/src/data/bucket/line_attributes_ext.js +10 -0
  66. package/src/data/bucket/line_bucket.js +594 -0
  67. package/src/data/bucket/pattern_attributes.js +12 -0
  68. package/src/data/bucket/pattern_bucket_features.js +60 -0
  69. package/src/data/bucket/symbol_attributes.js +117 -0
  70. package/src/data/bucket/symbol_bucket.js +937 -0
  71. package/src/data/bucket.js +123 -0
  72. package/src/data/dem_data.js +125 -0
  73. package/src/data/evaluation_feature.js +25 -0
  74. package/src/data/extent.js +18 -0
  75. package/src/data/feature_index.js +322 -0
  76. package/src/data/feature_position_map.js +131 -0
  77. package/src/data/index_array_type.js +16 -0
  78. package/src/data/load_geometry.js +46 -0
  79. package/src/data/pos_attributes.js +6 -0
  80. package/src/data/program_configuration.js +708 -0
  81. package/src/data/raster_bounds_attributes.js +7 -0
  82. package/src/data/segment.js +76 -0
  83. package/src/geo/edge_insets.js +102 -0
  84. package/src/geo/lng_lat.js +168 -0
  85. package/src/geo/lng_lat_bounds.js +276 -0
  86. package/src/geo/mercator_coordinate.js +150 -0
  87. package/src/geo/transform.js +834 -0
  88. package/src/gl/color_mode.js +34 -0
  89. package/src/gl/context.js +302 -0
  90. package/src/gl/cull_face_mode.js +26 -0
  91. package/src/gl/depth_mode.js +29 -0
  92. package/src/gl/framebuffer.js +44 -0
  93. package/src/gl/index_buffer.js +55 -0
  94. package/src/gl/stencil_mode.js +30 -0
  95. package/src/gl/types.js +84 -0
  96. package/src/gl/value.js +520 -0
  97. package/src/gl/vertex_buffer.js +119 -0
  98. package/src/index.js +230 -0
  99. package/src/render/draw_background.js +57 -0
  100. package/src/render/draw_circle.js +113 -0
  101. package/src/render/draw_collision_debug.js +172 -0
  102. package/src/render/draw_custom.js +49 -0
  103. package/src/render/draw_debug.js +127 -0
  104. package/src/render/draw_fill.js +124 -0
  105. package/src/render/draw_fill_extrusion.js +95 -0
  106. package/src/render/draw_heatmap.js +133 -0
  107. package/src/render/draw_hillshade.js +107 -0
  108. package/src/render/draw_line.js +125 -0
  109. package/src/render/draw_raster.js +125 -0
  110. package/src/render/draw_symbol.js +392 -0
  111. package/src/render/glyph_atlas.js +71 -0
  112. package/src/render/glyph_manager.js +182 -0
  113. package/src/render/image_atlas.js +149 -0
  114. package/src/render/image_manager.js +306 -0
  115. package/src/render/line_atlas.js +210 -0
  116. package/src/render/painter.js +654 -0
  117. package/src/render/program/background_program.js +103 -0
  118. package/src/render/program/circle_program.js +69 -0
  119. package/src/render/program/clipping_mask_program.js +20 -0
  120. package/src/render/program/collision_program.js +76 -0
  121. package/src/render/program/debug_program.js +35 -0
  122. package/src/render/program/fill_extrusion_program.js +122 -0
  123. package/src/render/program/fill_program.js +126 -0
  124. package/src/render/program/heatmap_program.js +83 -0
  125. package/src/render/program/hillshade_program.js +119 -0
  126. package/src/render/program/line_program.js +211 -0
  127. package/src/render/program/pattern.js +102 -0
  128. package/src/render/program/program_uniforms.js +42 -0
  129. package/src/render/program/raster_program.js +92 -0
  130. package/src/render/program/symbol_program.js +224 -0
  131. package/src/render/program.js +188 -0
  132. package/src/render/texture.js +122 -0
  133. package/src/render/uniform_binding.js +147 -0
  134. package/src/render/vertex_array_object.js +163 -0
  135. package/src/shaders/README.md +42 -0
  136. package/src/shaders/_prelude.fragment.glsl +17 -0
  137. package/src/shaders/_prelude.vertex.glsl +73 -0
  138. package/src/shaders/background.fragment.glsl +10 -0
  139. package/src/shaders/background.vertex.glsl +7 -0
  140. package/src/shaders/background_pattern.fragment.glsl +28 -0
  141. package/src/shaders/background_pattern.vertex.glsl +20 -0
  142. package/src/shaders/circle.fragment.glsl +39 -0
  143. package/src/shaders/circle.vertex.glsl +64 -0
  144. package/src/shaders/clipping_mask.fragment.glsl +3 -0
  145. package/src/shaders/clipping_mask.vertex.glsl +7 -0
  146. package/src/shaders/collision_box.fragment.glsl +21 -0
  147. package/src/shaders/collision_box.vertex.glsl +27 -0
  148. package/src/shaders/collision_circle.fragment.glsl +17 -0
  149. package/src/shaders/collision_circle.vertex.glsl +59 -0
  150. package/src/shaders/debug.fragment.glsl +9 -0
  151. package/src/shaders/debug.vertex.glsl +12 -0
  152. package/src/shaders/encode_attribute.js +17 -0
  153. package/src/shaders/fill.fragment.glsl +13 -0
  154. package/src/shaders/fill.vertex.glsl +13 -0
  155. package/src/shaders/fill_extrusion.fragment.glsl +9 -0
  156. package/src/shaders/fill_extrusion.vertex.glsl +66 -0
  157. package/src/shaders/fill_extrusion_pattern.fragment.glsl +45 -0
  158. package/src/shaders/fill_extrusion_pattern.vertex.glsl +79 -0
  159. package/src/shaders/fill_outline.fragment.glsl +17 -0
  160. package/src/shaders/fill_outline.vertex.glsl +17 -0
  161. package/src/shaders/fill_outline_pattern.fragment.glsl +43 -0
  162. package/src/shaders/fill_outline_pattern.vertex.glsl +44 -0
  163. package/src/shaders/fill_pattern.fragment.glsl +36 -0
  164. package/src/shaders/fill_pattern.vertex.glsl +39 -0
  165. package/src/shaders/heatmap.fragment.glsl +22 -0
  166. package/src/shaders/heatmap.vertex.glsl +54 -0
  167. package/src/shaders/heatmap_texture.fragment.glsl +14 -0
  168. package/src/shaders/heatmap_texture.vertex.glsl +11 -0
  169. package/src/shaders/hillshade.fragment.glsl +52 -0
  170. package/src/shaders/hillshade.vertex.glsl +11 -0
  171. package/src/shaders/hillshade_prepare.fragment.glsl +75 -0
  172. package/src/shaders/hillshade_prepare.vertex.glsl +15 -0
  173. package/src/shaders/index.js +20 -0
  174. package/src/shaders/line.fragment.glsl +30 -0
  175. package/src/shaders/line.vertex.glsl +85 -0
  176. package/src/shaders/line_gradient.fragment.glsl +34 -0
  177. package/src/shaders/line_gradient.vertex.glsl +88 -0
  178. package/src/shaders/line_pattern.fragment.glsl +74 -0
  179. package/src/shaders/line_pattern.vertex.glsl +99 -0
  180. package/src/shaders/line_sdf.fragment.glsl +45 -0
  181. package/src/shaders/line_sdf.vertex.glsl +98 -0
  182. package/src/shaders/raster.fragment.glsl +52 -0
  183. package/src/shaders/raster.vertex.glsl +21 -0
  184. package/src/shaders/shaders.js +185 -0
  185. package/src/shaders/symbol_icon.fragment.glsl +17 -0
  186. package/src/shaders/symbol_icon.vertex.glsl +94 -0
  187. package/src/shaders/symbol_sdf.fragment.glsl +52 -0
  188. package/src/shaders/symbol_sdf.vertex.glsl +115 -0
  189. package/src/shaders/symbol_text_and_icon.fragment.glsl +68 -0
  190. package/src/shaders/symbol_text_and_icon.vertex.glsl +116 -0
  191. package/src/source/canvas_source.js +238 -0
  192. package/src/source/geojson_source.js +370 -0
  193. package/src/source/geojson_worker_source.js +366 -0
  194. package/src/source/geojson_wrapper.js +94 -0
  195. package/src/source/image_source.js +307 -0
  196. package/src/source/load_tilejson.js +39 -0
  197. package/src/source/pixels_to_tile_units.js +21 -0
  198. package/src/source/query_features.js +208 -0
  199. package/src/source/raster_dem_tile_source.js +138 -0
  200. package/src/source/raster_dem_tile_worker_source.js +62 -0
  201. package/src/source/raster_tile_source.js +169 -0
  202. package/src/source/rtl_text_plugin.js +143 -0
  203. package/src/source/source.js +137 -0
  204. package/src/source/source_cache.js +953 -0
  205. package/src/source/source_state.js +159 -0
  206. package/src/source/tile.js +458 -0
  207. package/src/source/tile_bounds.js +38 -0
  208. package/src/source/tile_cache.js +212 -0
  209. package/src/source/tile_id.js +199 -0
  210. package/src/source/vector_tile_source.js +259 -0
  211. package/src/source/vector_tile_worker_source.js +216 -0
  212. package/src/source/video_source.js +203 -0
  213. package/src/source/worker.js +240 -0
  214. package/src/source/worker_source.js +107 -0
  215. package/src/source/worker_tile.js +224 -0
  216. package/src/style/create_style_layer.js +36 -0
  217. package/src/style/evaluation_parameters.js +62 -0
  218. package/src/style/format_section_override.js +56 -0
  219. package/src/style/light.js +130 -0
  220. package/src/style/load_glyph_range.js +38 -0
  221. package/src/style/load_sprite.js +67 -0
  222. package/src/style/parse_glyph_pbf.js +44 -0
  223. package/src/style/pauseable_placement.js +132 -0
  224. package/src/style/properties.js +753 -0
  225. package/src/style/query_utils.js +43 -0
  226. package/src/style/style.js +1374 -0
  227. package/src/style/style_glyph.js +17 -0
  228. package/src/style/style_image.js +137 -0
  229. package/src/style/style_layer/background_style_layer.js +21 -0
  230. package/src/style/style_layer/background_style_layer_properties.js +40 -0
  231. package/src/style/style_layer/circle_style_layer.js +98 -0
  232. package/src/style/style_layer/circle_style_layer_properties.js +63 -0
  233. package/src/style/style_layer/custom_style_layer.js +223 -0
  234. package/src/style/style_layer/fill_extrusion_style_layer.js +224 -0
  235. package/src/style/style_layer/fill_extrusion_style_layer_properties.js +50 -0
  236. package/src/style/style_layer/fill_style_layer.js +67 -0
  237. package/src/style/style_layer/fill_style_layer_properties.js +55 -0
  238. package/src/style/style_layer/heatmap_style_layer.js +73 -0
  239. package/src/style/style_layer/heatmap_style_layer_properties.js +44 -0
  240. package/src/style/style_layer/hillshade_style_layer.js +25 -0
  241. package/src/style/style_layer/hillshade_style_layer_properties.js +46 -0
  242. package/src/style/style_layer/layer_properties.js.ejs +69 -0
  243. package/src/style/style_layer/line_style_layer.js +150 -0
  244. package/src/style/style_layer/line_style_layer_properties.js +71 -0
  245. package/src/style/style_layer/raster_style_layer.js +21 -0
  246. package/src/style/style_layer/raster_style_layer_properties.js +50 -0
  247. package/src/style/style_layer/symbol_style_layer.js +190 -0
  248. package/src/style/style_layer/symbol_style_layer_properties.js +153 -0
  249. package/src/style/style_layer/typed_style_layer.js +17 -0
  250. package/src/style/style_layer.js +283 -0
  251. package/src/style/style_layer_index.js +80 -0
  252. package/src/style/validate_style.js +42 -0
  253. package/src/style/zoom_history.js +44 -0
  254. package/src/style-spec/.eslintrc +5 -0
  255. package/src/style-spec/CHANGELOG.md +468 -0
  256. package/src/style-spec/README.md +59 -0
  257. package/src/style-spec/bin/gl-style-composite +9 -0
  258. package/src/style-spec/bin/gl-style-format +22 -0
  259. package/src/style-spec/bin/gl-style-migrate +9 -0
  260. package/src/style-spec/bin/gl-style-validate +50 -0
  261. package/src/style-spec/composite.js +50 -0
  262. package/src/style-spec/declass.js +42 -0
  263. package/src/style-spec/deref.js +52 -0
  264. package/src/style-spec/diff.js +393 -0
  265. package/src/style-spec/dist/.gitkeep +0 -0
  266. package/src/style-spec/dist/index.es.js +15032 -0
  267. package/src/style-spec/dist/index.es.js.map +1 -0
  268. package/src/style-spec/dist/index.js +15058 -0
  269. package/src/style-spec/dist/index.js.map +1 -0
  270. package/src/style-spec/empty.js +29 -0
  271. package/src/style-spec/error/parsing_error.js +16 -0
  272. package/src/style-spec/error/validation_error.js +18 -0
  273. package/src/style-spec/expression/compound_expression.js +162 -0
  274. package/src/style-spec/expression/definitions/assertion.js +130 -0
  275. package/src/style-spec/expression/definitions/at.js +70 -0
  276. package/src/style-spec/expression/definitions/case.js +85 -0
  277. package/src/style-spec/expression/definitions/coalesce.js +93 -0
  278. package/src/style-spec/expression/definitions/coercion.js +133 -0
  279. package/src/style-spec/expression/definitions/collator.js +78 -0
  280. package/src/style-spec/expression/definitions/comparison.js +184 -0
  281. package/src/style-spec/expression/definitions/format.js +144 -0
  282. package/src/style-spec/expression/definitions/image.js +52 -0
  283. package/src/style-spec/expression/definitions/in.js +72 -0
  284. package/src/style-spec/expression/definitions/index.js +565 -0
  285. package/src/style-spec/expression/definitions/index_of.js +89 -0
  286. package/src/style-spec/expression/definitions/interpolate.js +267 -0
  287. package/src/style-spec/expression/definitions/length.js +61 -0
  288. package/src/style-spec/expression/definitions/let.js +72 -0
  289. package/src/style-spec/expression/definitions/literal.js +77 -0
  290. package/src/style-spec/expression/definitions/match.js +158 -0
  291. package/src/style-spec/expression/definitions/number_format.js +142 -0
  292. package/src/style-spec/expression/definitions/slice.js +86 -0
  293. package/src/style-spec/expression/definitions/step.js +120 -0
  294. package/src/style-spec/expression/definitions/var.js +46 -0
  295. package/src/style-spec/expression/definitions/within.js +342 -0
  296. package/src/style-spec/expression/evaluation_context.js +59 -0
  297. package/src/style-spec/expression/expression.js +27 -0
  298. package/src/style-spec/expression/index.js +392 -0
  299. package/src/style-spec/expression/is_constant.js +59 -0
  300. package/src/style-spec/expression/parsing_context.js +233 -0
  301. package/src/style-spec/expression/parsing_error.js +13 -0
  302. package/src/style-spec/expression/runtime_error.js +17 -0
  303. package/src/style-spec/expression/scope.js +36 -0
  304. package/src/style-spec/expression/stops.js +39 -0
  305. package/src/style-spec/expression/types/collator.js +61 -0
  306. package/src/style-spec/expression/types/formatted.js +73 -0
  307. package/src/style-spec/expression/types/resolved_image.js +29 -0
  308. package/src/style-spec/expression/types.js +126 -0
  309. package/src/style-spec/expression/values.js +123 -0
  310. package/src/style-spec/feature_filter/README.md +55 -0
  311. package/src/style-spec/feature_filter/convert.js +208 -0
  312. package/src/style-spec/feature_filter/index.js +175 -0
  313. package/src/style-spec/format.js +51 -0
  314. package/src/style-spec/function/convert.js +270 -0
  315. package/src/style-spec/function/index.js +262 -0
  316. package/src/style-spec/group_by_layout.js +75 -0
  317. package/src/style-spec/migrate/expressions.js +39 -0
  318. package/src/style-spec/migrate/v8.js +203 -0
  319. package/src/style-spec/migrate/v9.js +26 -0
  320. package/src/style-spec/migrate.js +36 -0
  321. package/src/style-spec/package.json +41 -0
  322. package/src/style-spec/read_style.js +14 -0
  323. package/src/style-spec/reference/latest.js +3 -0
  324. package/src/style-spec/reference/v8.json +5914 -0
  325. package/src/style-spec/rollup.config.js +65 -0
  326. package/src/style-spec/style-spec.js +124 -0
  327. package/src/style-spec/types.js +432 -0
  328. package/src/style-spec/util/color.js +95 -0
  329. package/src/style-spec/util/color_spaces.js +139 -0
  330. package/src/style-spec/util/deep_equal.js +28 -0
  331. package/src/style-spec/util/extend.js +10 -0
  332. package/src/style-spec/util/get_type.js +17 -0
  333. package/src/style-spec/util/interpolate.js +22 -0
  334. package/src/style-spec/util/properties.js +15 -0
  335. package/src/style-spec/util/ref_properties.js +2 -0
  336. package/src/style-spec/util/result.js +19 -0
  337. package/src/style-spec/util/unbundle_jsonlint.js +24 -0
  338. package/src/style-spec/validate/latest.js +11 -0
  339. package/src/style-spec/validate/validate.js +75 -0
  340. package/src/style-spec/validate/validate_array.js +52 -0
  341. package/src/style-spec/validate/validate_boolean.js +15 -0
  342. package/src/style-spec/validate/validate_color.js +20 -0
  343. package/src/style-spec/validate/validate_constants.js +13 -0
  344. package/src/style-spec/validate/validate_enum.js +21 -0
  345. package/src/style-spec/validate/validate_expression.js +43 -0
  346. package/src/style-spec/validate/validate_filter.js +117 -0
  347. package/src/style-spec/validate/validate_formatted.js +11 -0
  348. package/src/style-spec/validate/validate_function.js +207 -0
  349. package/src/style-spec/validate/validate_glyphs_url.js +21 -0
  350. package/src/style-spec/validate/validate_image.js +11 -0
  351. package/src/style-spec/validate/validate_layer.js +134 -0
  352. package/src/style-spec/validate/validate_layout_property.js +6 -0
  353. package/src/style-spec/validate/validate_light.js +47 -0
  354. package/src/style-spec/validate/validate_number.js +29 -0
  355. package/src/style-spec/validate/validate_object.js +61 -0
  356. package/src/style-spec/validate/validate_paint_property.js +6 -0
  357. package/src/style-spec/validate/validate_property.js +64 -0
  358. package/src/style-spec/validate/validate_source.js +111 -0
  359. package/src/style-spec/validate/validate_string.js +15 -0
  360. package/src/style-spec/validate_mapbox_api_supported.js +171 -0
  361. package/src/style-spec/validate_style.js +39 -0
  362. package/src/style-spec/validate_style.min.js +78 -0
  363. package/src/style-spec/visit.js +77 -0
  364. package/src/symbol/anchor.js +26 -0
  365. package/src/symbol/check_max_angle.js +81 -0
  366. package/src/symbol/clip_line.js +71 -0
  367. package/src/symbol/collision_feature.js +109 -0
  368. package/src/symbol/collision_index.js +373 -0
  369. package/src/symbol/cross_tile_symbol_index.js +301 -0
  370. package/src/symbol/get_anchors.js +167 -0
  371. package/src/symbol/grid_index.js +335 -0
  372. package/src/symbol/mergelines.js +82 -0
  373. package/src/symbol/one_em.js +4 -0
  374. package/src/symbol/opacity_state.js +27 -0
  375. package/src/symbol/path_interpolator.js +61 -0
  376. package/src/symbol/placement.js +1124 -0
  377. package/src/symbol/projection.js +451 -0
  378. package/src/symbol/quads.js +334 -0
  379. package/src/symbol/shaping.js +816 -0
  380. package/src/symbol/symbol_layout.js +796 -0
  381. package/src/symbol/symbol_size.js +113 -0
  382. package/src/symbol/transform_text.js +29 -0
  383. package/src/types/callback.js +17 -0
  384. package/src/types/cancelable.js +3 -0
  385. package/src/types/tilejson.js +17 -0
  386. package/src/types/transferable.js +3 -0
  387. package/src/types/window.js +172 -0
  388. package/src/ui/anchor.js +32 -0
  389. package/src/ui/camera.js +1277 -0
  390. package/src/ui/control/attribution_control.js +212 -0
  391. package/src/ui/control/fullscreen_control.js +147 -0
  392. package/src/ui/control/geolocate_control.js +707 -0
  393. package/src/ui/control/logo_control.js +92 -0
  394. package/src/ui/control/navigation_control.js +257 -0
  395. package/src/ui/control/scale_control.js +142 -0
  396. package/src/ui/default_locale.js +22 -0
  397. package/src/ui/events.js +1301 -0
  398. package/src/ui/handler/box_zoom.js +170 -0
  399. package/src/ui/handler/click_zoom.js +52 -0
  400. package/src/ui/handler/handler_util.js +12 -0
  401. package/src/ui/handler/keyboard.js +208 -0
  402. package/src/ui/handler/map_event.js +156 -0
  403. package/src/ui/handler/mouse.js +171 -0
  404. package/src/ui/handler/scroll_zoom.js +350 -0
  405. package/src/ui/handler/shim/dblclick_zoom.js +62 -0
  406. package/src/ui/handler/shim/drag_pan.js +88 -0
  407. package/src/ui/handler/shim/drag_rotate.js +67 -0
  408. package/src/ui/handler/shim/touch_zoom_rotate.js +108 -0
  409. package/src/ui/handler/tap_drag_zoom.js +103 -0
  410. package/src/ui/handler/tap_recognizer.js +133 -0
  411. package/src/ui/handler/tap_zoom.js +93 -0
  412. package/src/ui/handler/touch_pan.js +101 -0
  413. package/src/ui/handler/touch_zoom_rotate.js +305 -0
  414. package/src/ui/handler_inertia.js +158 -0
  415. package/src/ui/handler_manager.js +531 -0
  416. package/src/ui/hash.js +148 -0
  417. package/src/ui/map.js +2874 -0
  418. package/src/ui/marker.js +672 -0
  419. package/src/ui/popup.js +640 -0
  420. package/src/util/actor.js +212 -0
  421. package/src/util/ajax.js +388 -0
  422. package/src/util/browser/web_worker.js +10 -0
  423. package/src/util/browser/window.js +6 -0
  424. package/src/util/browser.js +70 -0
  425. package/src/util/classify_rings.js +52 -0
  426. package/src/util/color_ramp.js +61 -0
  427. package/src/util/config.js +30 -0
  428. package/src/util/debug.js +28 -0
  429. package/src/util/dictionary_coder.js +30 -0
  430. package/src/util/dispatcher.js +70 -0
  431. package/src/util/dom.js +142 -0
  432. package/src/util/evented.js +174 -0
  433. package/src/util/find_pole_of_inaccessibility.js +129 -0
  434. package/src/util/global_worker_pool.js +35 -0
  435. package/src/util/image.js +142 -0
  436. package/src/util/intersection_tests.js +208 -0
  437. package/src/util/is_char_in_unicode_block.js +311 -0
  438. package/src/util/mapbox.js +491 -0
  439. package/src/util/offscreen_canvas_supported.js +14 -0
  440. package/src/util/performance.js +112 -0
  441. package/src/util/primitives.js +145 -0
  442. package/src/util/resolve_tokens.js +16 -0
  443. package/src/util/script_detection.js +328 -0
  444. package/src/util/sku_token.js +42 -0
  445. package/src/util/smart_wrap.js +55 -0
  446. package/src/util/struct_array.js +243 -0
  447. package/src/util/struct_array.js.ejs +112 -0
  448. package/src/util/struct_array_layout.js.ejs +98 -0
  449. package/src/util/task_queue.js +68 -0
  450. package/src/util/throttle.js +27 -0
  451. package/src/util/throttled_invoker.js +46 -0
  452. package/src/util/tile_request_cache.js +172 -0
  453. package/src/util/util.js +524 -0
  454. package/src/util/vectortile_to_geojson.js +50 -0
  455. package/src/util/verticalize_punctuation.js +114 -0
  456. package/src/util/web_worker.js +91 -0
  457. package/src/util/web_worker_transfer.js +266 -0
  458. package/src/util/webp_supported.js +69 -0
  459. package/src/util/window.js +102 -0
  460. package/src/util/worker_pool.js +57 -0
@@ -0,0 +1,185 @@
1
+
2
+ // Disable Flow annotations here because Flow doesn't support importing GLSL files
3
+ /* eslint-disable flowtype/require-valid-file-annotation */
4
+
5
+ import preludeFrag from './_prelude.fragment.glsl';
6
+ import preludeVert from './_prelude.vertex.glsl';
7
+ import backgroundFrag from './background.fragment.glsl';
8
+ import backgroundVert from './background.vertex.glsl';
9
+ import backgroundPatternFrag from './background_pattern.fragment.glsl';
10
+ import backgroundPatternVert from './background_pattern.vertex.glsl';
11
+ import circleFrag from './circle.fragment.glsl';
12
+ import circleVert from './circle.vertex.glsl';
13
+ import clippingMaskFrag from './clipping_mask.fragment.glsl';
14
+ import clippingMaskVert from './clipping_mask.vertex.glsl';
15
+ import heatmapFrag from './heatmap.fragment.glsl';
16
+ import heatmapVert from './heatmap.vertex.glsl';
17
+ import heatmapTextureFrag from './heatmap_texture.fragment.glsl';
18
+ import heatmapTextureVert from './heatmap_texture.vertex.glsl';
19
+ import collisionBoxFrag from './collision_box.fragment.glsl';
20
+ import collisionBoxVert from './collision_box.vertex.glsl';
21
+ import collisionCircleFrag from './collision_circle.fragment.glsl';
22
+ import collisionCircleVert from './collision_circle.vertex.glsl';
23
+ import debugFrag from './debug.fragment.glsl';
24
+ import debugVert from './debug.vertex.glsl';
25
+ import fillFrag from './fill.fragment.glsl';
26
+ import fillVert from './fill.vertex.glsl';
27
+ import fillOutlineFrag from './fill_outline.fragment.glsl';
28
+ import fillOutlineVert from './fill_outline.vertex.glsl';
29
+ import fillOutlinePatternFrag from './fill_outline_pattern.fragment.glsl';
30
+ import fillOutlinePatternVert from './fill_outline_pattern.vertex.glsl';
31
+ import fillPatternFrag from './fill_pattern.fragment.glsl';
32
+ import fillPatternVert from './fill_pattern.vertex.glsl';
33
+ import fillExtrusionFrag from './fill_extrusion.fragment.glsl';
34
+ import fillExtrusionVert from './fill_extrusion.vertex.glsl';
35
+ import fillExtrusionPatternFrag from './fill_extrusion_pattern.fragment.glsl';
36
+ import fillExtrusionPatternVert from './fill_extrusion_pattern.vertex.glsl';
37
+ import hillshadePrepareFrag from './hillshade_prepare.fragment.glsl';
38
+ import hillshadePrepareVert from './hillshade_prepare.vertex.glsl';
39
+ import hillshadeFrag from './hillshade.fragment.glsl';
40
+ import hillshadeVert from './hillshade.vertex.glsl';
41
+ import lineFrag from './line.fragment.glsl';
42
+ import lineVert from './line.vertex.glsl';
43
+ import lineGradientFrag from './line_gradient.fragment.glsl';
44
+ import lineGradientVert from './line_gradient.vertex.glsl';
45
+ import linePatternFrag from './line_pattern.fragment.glsl';
46
+ import linePatternVert from './line_pattern.vertex.glsl';
47
+ import lineSDFFrag from './line_sdf.fragment.glsl';
48
+ import lineSDFVert from './line_sdf.vertex.glsl';
49
+ import rasterFrag from './raster.fragment.glsl';
50
+ import rasterVert from './raster.vertex.glsl';
51
+ import symbolIconFrag from './symbol_icon.fragment.glsl';
52
+ import symbolIconVert from './symbol_icon.vertex.glsl';
53
+ import symbolSDFFrag from './symbol_sdf.fragment.glsl';
54
+ import symbolSDFVert from './symbol_sdf.vertex.glsl';
55
+ import symbolTextAndIconFrag from './symbol_text_and_icon.fragment.glsl';
56
+ import symbolTextAndIconVert from './symbol_text_and_icon.vertex.glsl';
57
+
58
+ export const prelude = compile(preludeFrag, preludeVert);
59
+ export const background = compile(backgroundFrag, backgroundVert);
60
+ export const backgroundPattern = compile(backgroundPatternFrag, backgroundPatternVert);
61
+ export const circle = compile(circleFrag, circleVert);
62
+ export const clippingMask = compile(clippingMaskFrag, clippingMaskVert);
63
+ export const heatmap = compile(heatmapFrag, heatmapVert);
64
+ export const heatmapTexture = compile(heatmapTextureFrag, heatmapTextureVert);
65
+ export const collisionBox = compile(collisionBoxFrag, collisionBoxVert);
66
+ export const collisionCircle = compile(collisionCircleFrag, collisionCircleVert);
67
+ export const debug = compile(debugFrag, debugVert);
68
+ export const fill = compile(fillFrag, fillVert);
69
+ export const fillOutline = compile(fillOutlineFrag, fillOutlineVert);
70
+ export const fillOutlinePattern = compile(fillOutlinePatternFrag, fillOutlinePatternVert);
71
+ export const fillPattern = compile(fillPatternFrag, fillPatternVert);
72
+ export const fillExtrusion = compile(fillExtrusionFrag, fillExtrusionVert);
73
+ export const fillExtrusionPattern = compile(fillExtrusionPatternFrag, fillExtrusionPatternVert);
74
+ export const hillshadePrepare = compile(hillshadePrepareFrag, hillshadePrepareVert);
75
+ export const hillshade = compile(hillshadeFrag, hillshadeVert);
76
+ export const line = compile(lineFrag, lineVert);
77
+ export const lineGradient = compile(lineGradientFrag, lineGradientVert);
78
+ export const linePattern = compile(linePatternFrag, linePatternVert);
79
+ export const lineSDF = compile(lineSDFFrag, lineSDFVert);
80
+ export const raster = compile(rasterFrag, rasterVert);
81
+ export const symbolIcon = compile(symbolIconFrag, symbolIconVert);
82
+ export const symbolSDF = compile(symbolSDFFrag, symbolSDFVert);
83
+ export const symbolTextAndIcon = compile(symbolTextAndIconFrag, symbolTextAndIconVert);
84
+
85
+ // Expand #pragmas to #ifdefs.
86
+
87
+ function compile(fragmentSource, vertexSource) {
88
+ const re = /#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g;
89
+
90
+ const staticAttributes = vertexSource.match(/attribute ([\w]+) ([\w]+)/g);
91
+ const fragmentUniforms = fragmentSource.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g);
92
+ const vertexUniforms = vertexSource.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g);
93
+ const staticUniforms = vertexUniforms ? vertexUniforms.concat(fragmentUniforms) : fragmentUniforms;
94
+
95
+ const fragmentPragmas = {};
96
+
97
+ fragmentSource = fragmentSource.replace(re, (match, operation, precision, type, name) => {
98
+ fragmentPragmas[name] = true;
99
+ if (operation === 'define') {
100
+ return `
101
+ #ifndef HAS_UNIFORM_u_${name}
102
+ varying ${precision} ${type} ${name};
103
+ #else
104
+ uniform ${precision} ${type} u_${name};
105
+ #endif
106
+ `;
107
+ } else /* if (operation === 'initialize') */ {
108
+ return `
109
+ #ifdef HAS_UNIFORM_u_${name}
110
+ ${precision} ${type} ${name} = u_${name};
111
+ #endif
112
+ `;
113
+ }
114
+ });
115
+
116
+ vertexSource = vertexSource.replace(re, (match, operation, precision, type, name) => {
117
+ const attrType = type === 'float' ? 'vec2' : 'vec4';
118
+ const unpackType = name.match(/color/) ? 'color' : attrType;
119
+
120
+ if (fragmentPragmas[name]) {
121
+ if (operation === 'define') {
122
+ return `
123
+ #ifndef HAS_UNIFORM_u_${name}
124
+ uniform lowp float u_${name}_t;
125
+ attribute ${precision} ${attrType} a_${name};
126
+ varying ${precision} ${type} ${name};
127
+ #else
128
+ uniform ${precision} ${type} u_${name};
129
+ #endif
130
+ `;
131
+ } else /* if (operation === 'initialize') */ {
132
+ if (unpackType === 'vec4') {
133
+ // vec4 attributes are only used for cross-faded properties, and are not packed
134
+ return `
135
+ #ifndef HAS_UNIFORM_u_${name}
136
+ ${name} = a_${name};
137
+ #else
138
+ ${precision} ${type} ${name} = u_${name};
139
+ #endif
140
+ `;
141
+ } else {
142
+ return `
143
+ #ifndef HAS_UNIFORM_u_${name}
144
+ ${name} = unpack_mix_${unpackType}(a_${name}, u_${name}_t);
145
+ #else
146
+ ${precision} ${type} ${name} = u_${name};
147
+ #endif
148
+ `;
149
+ }
150
+ }
151
+ } else {
152
+ if (operation === 'define') {
153
+ return `
154
+ #ifndef HAS_UNIFORM_u_${name}
155
+ uniform lowp float u_${name}_t;
156
+ attribute ${precision} ${attrType} a_${name};
157
+ #else
158
+ uniform ${precision} ${type} u_${name};
159
+ #endif
160
+ `;
161
+ } else /* if (operation === 'initialize') */ {
162
+ if (unpackType === 'vec4') {
163
+ // vec4 attributes are only used for cross-faded properties, and are not packed
164
+ return `
165
+ #ifndef HAS_UNIFORM_u_${name}
166
+ ${precision} ${type} ${name} = a_${name};
167
+ #else
168
+ ${precision} ${type} ${name} = u_${name};
169
+ #endif
170
+ `;
171
+ } else /* */{
172
+ return `
173
+ #ifndef HAS_UNIFORM_u_${name}
174
+ ${precision} ${type} ${name} = unpack_mix_${unpackType}(a_${name}, u_${name}_t);
175
+ #else
176
+ ${precision} ${type} ${name} = u_${name};
177
+ #endif
178
+ `;
179
+ }
180
+ }
181
+ }
182
+ });
183
+
184
+ return {fragmentSource, vertexSource, staticAttributes, staticUniforms};
185
+ }
@@ -0,0 +1,17 @@
1
+ uniform sampler2D u_texture;
2
+
3
+ varying vec2 v_tex;
4
+ varying float v_fade_opacity;
5
+
6
+ #pragma mapbox: define lowp float opacity
7
+
8
+ void main() {
9
+ #pragma mapbox: initialize lowp float opacity
10
+
11
+ lowp float alpha = opacity * v_fade_opacity;
12
+ gl_FragColor = texture2D(u_texture, v_tex) * alpha;
13
+
14
+ #ifdef OVERDRAW_INSPECTOR
15
+ gl_FragColor = vec4(1.0);
16
+ #endif
17
+ }
@@ -0,0 +1,94 @@
1
+ const float PI = 3.141592653589793;
2
+
3
+ attribute vec4 a_pos_offset;
4
+ attribute vec4 a_data;
5
+ attribute vec4 a_pixeloffset;
6
+ attribute vec3 a_projected_pos;
7
+ attribute float a_fade_opacity;
8
+
9
+ uniform bool u_is_size_zoom_constant;
10
+ uniform bool u_is_size_feature_constant;
11
+ uniform highp float u_size_t; // used to interpolate between zoom stops when size is a composite function
12
+ uniform highp float u_size; // used when size is both zoom and feature constant
13
+ uniform highp float u_camera_to_center_distance;
14
+ uniform highp float u_pitch;
15
+ uniform bool u_rotate_symbol;
16
+ uniform highp float u_aspect_ratio;
17
+ uniform float u_fade_change;
18
+
19
+ uniform mat4 u_matrix;
20
+ uniform mat4 u_label_plane_matrix;
21
+ uniform mat4 u_coord_matrix;
22
+
23
+ uniform bool u_is_text;
24
+ uniform bool u_pitch_with_map;
25
+
26
+ uniform vec2 u_texsize;
27
+
28
+ varying vec2 v_tex;
29
+ varying float v_fade_opacity;
30
+
31
+ #pragma mapbox: define lowp float opacity
32
+
33
+ void main() {
34
+ #pragma mapbox: initialize lowp float opacity
35
+
36
+ vec2 a_pos = a_pos_offset.xy;
37
+ vec2 a_offset = a_pos_offset.zw;
38
+
39
+ vec2 a_tex = a_data.xy;
40
+ vec2 a_size = a_data.zw;
41
+
42
+ float a_size_min = floor(a_size[0] * 0.5);
43
+ vec2 a_pxoffset = a_pixeloffset.xy;
44
+ vec2 a_minFontScale = a_pixeloffset.zw / 256.0;
45
+
46
+ highp float segment_angle = -a_projected_pos[2];
47
+ float size;
48
+
49
+ if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {
50
+ size = mix(a_size_min, a_size[1], u_size_t) / 128.0;
51
+ } else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {
52
+ size = a_size_min / 128.0;
53
+ } else {
54
+ size = u_size;
55
+ }
56
+
57
+ vec4 projectedPoint = u_matrix * vec4(a_pos, 0, 1);
58
+ highp float camera_to_anchor_distance = projectedPoint.w;
59
+ // See comments in symbol_sdf.vertex
60
+ highp float distance_ratio = u_pitch_with_map ?
61
+ camera_to_anchor_distance / u_camera_to_center_distance :
62
+ u_camera_to_center_distance / camera_to_anchor_distance;
63
+ highp float perspective_ratio = clamp(
64
+ 0.5 + 0.5 * distance_ratio,
65
+ 0.0, // Prevents oversized near-field symbols in pitched/overzoomed tiles
66
+ 4.0);
67
+
68
+ size *= perspective_ratio;
69
+
70
+ float fontScale = u_is_text ? size / 24.0 : size;
71
+
72
+ highp float symbol_rotation = 0.0;
73
+ if (u_rotate_symbol) {
74
+ // See comments in symbol_sdf.vertex
75
+ vec4 offsetProjectedPoint = u_matrix * vec4(a_pos + vec2(1, 0), 0, 1);
76
+
77
+ vec2 a = projectedPoint.xy / projectedPoint.w;
78
+ vec2 b = offsetProjectedPoint.xy / offsetProjectedPoint.w;
79
+
80
+ symbol_rotation = atan((b.y - a.y) / u_aspect_ratio, b.x - a.x);
81
+ }
82
+
83
+ highp float angle_sin = sin(segment_angle + symbol_rotation);
84
+ highp float angle_cos = cos(segment_angle + symbol_rotation);
85
+ mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);
86
+
87
+ vec4 projected_pos = u_label_plane_matrix * vec4(a_projected_pos.xy, 0.0, 1.0);
88
+ gl_Position = u_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 32.0 * max(a_minFontScale, fontScale) + a_pxoffset / 16.0), 0.0, 1.0);
89
+
90
+ v_tex = a_tex / u_texsize;
91
+ vec2 fade_opacity = unpack_opacity(a_fade_opacity);
92
+ float fade_change = fade_opacity[1] > 0.5 ? u_fade_change : -u_fade_change;
93
+ v_fade_opacity = max(0.0, min(1.0, fade_opacity[0] + fade_change));
94
+ }
@@ -0,0 +1,52 @@
1
+ #define SDF_PX 8.0
2
+
3
+ uniform bool u_is_halo;
4
+ uniform sampler2D u_texture;
5
+ uniform highp float u_gamma_scale;
6
+ uniform lowp float u_device_pixel_ratio;
7
+ uniform bool u_is_text;
8
+
9
+ varying vec2 v_data0;
10
+ varying vec3 v_data1;
11
+
12
+ #pragma mapbox: define highp vec4 fill_color
13
+ #pragma mapbox: define highp vec4 halo_color
14
+ #pragma mapbox: define lowp float opacity
15
+ #pragma mapbox: define lowp float halo_width
16
+ #pragma mapbox: define lowp float halo_blur
17
+
18
+ void main() {
19
+ #pragma mapbox: initialize highp vec4 fill_color
20
+ #pragma mapbox: initialize highp vec4 halo_color
21
+ #pragma mapbox: initialize lowp float opacity
22
+ #pragma mapbox: initialize lowp float halo_width
23
+ #pragma mapbox: initialize lowp float halo_blur
24
+
25
+ float EDGE_GAMMA = 0.105 / u_device_pixel_ratio;
26
+
27
+ vec2 tex = v_data0.xy;
28
+ float gamma_scale = v_data1.x;
29
+ float size = v_data1.y;
30
+ float fade_opacity = v_data1[2];
31
+
32
+ float fontScale = u_is_text ? size / 24.0 : size;
33
+
34
+ lowp vec4 color = fill_color;
35
+ highp float gamma = EDGE_GAMMA / (fontScale * u_gamma_scale);
36
+ lowp float buff = (256.0 - 64.0) / 256.0;
37
+ if (u_is_halo) {
38
+ color = halo_color;
39
+ gamma = (halo_blur * 1.19 / SDF_PX + EDGE_GAMMA) / (fontScale * u_gamma_scale);
40
+ buff = (6.0 - halo_width / fontScale) / SDF_PX;
41
+ }
42
+
43
+ lowp float dist = texture2D(u_texture, tex).a;
44
+ highp float gamma_scaled = gamma * gamma_scale;
45
+ highp float alpha = smoothstep(buff - gamma_scaled, buff + gamma_scaled, dist);
46
+
47
+ gl_FragColor = color * (alpha * opacity * fade_opacity);
48
+
49
+ #ifdef OVERDRAW_INSPECTOR
50
+ gl_FragColor = vec4(1.0);
51
+ #endif
52
+ }
@@ -0,0 +1,115 @@
1
+ const float PI = 3.141592653589793;
2
+
3
+ attribute vec4 a_pos_offset;
4
+ attribute vec4 a_data;
5
+ attribute vec4 a_pixeloffset;
6
+ attribute vec3 a_projected_pos;
7
+ attribute float a_fade_opacity;
8
+
9
+ // contents of a_size vary based on the type of property value
10
+ // used for {text,icon}-size.
11
+ // For constants, a_size is disabled.
12
+ // For source functions, we bind only one value per vertex: the value of {text,icon}-size evaluated for the current feature.
13
+ // For composite functions:
14
+ // [ text-size(lowerZoomStop, feature),
15
+ // text-size(upperZoomStop, feature) ]
16
+ uniform bool u_is_size_zoom_constant;
17
+ uniform bool u_is_size_feature_constant;
18
+ uniform highp float u_size_t; // used to interpolate between zoom stops when size is a composite function
19
+ uniform highp float u_size; // used when size is both zoom and feature constant
20
+ uniform mat4 u_matrix;
21
+ uniform mat4 u_label_plane_matrix;
22
+ uniform mat4 u_coord_matrix;
23
+ uniform bool u_is_text;
24
+ uniform bool u_pitch_with_map;
25
+ uniform highp float u_pitch;
26
+ uniform bool u_rotate_symbol;
27
+ uniform highp float u_aspect_ratio;
28
+ uniform highp float u_camera_to_center_distance;
29
+ uniform float u_fade_change;
30
+ uniform vec2 u_texsize;
31
+
32
+ varying vec2 v_data0;
33
+ varying vec3 v_data1;
34
+
35
+ #pragma mapbox: define highp vec4 fill_color
36
+ #pragma mapbox: define highp vec4 halo_color
37
+ #pragma mapbox: define lowp float opacity
38
+ #pragma mapbox: define lowp float halo_width
39
+ #pragma mapbox: define lowp float halo_blur
40
+
41
+ void main() {
42
+ #pragma mapbox: initialize highp vec4 fill_color
43
+ #pragma mapbox: initialize highp vec4 halo_color
44
+ #pragma mapbox: initialize lowp float opacity
45
+ #pragma mapbox: initialize lowp float halo_width
46
+ #pragma mapbox: initialize lowp float halo_blur
47
+
48
+ vec2 a_pos = a_pos_offset.xy;
49
+ vec2 a_offset = a_pos_offset.zw;
50
+
51
+ vec2 a_tex = a_data.xy;
52
+ vec2 a_size = a_data.zw;
53
+
54
+ float a_size_min = floor(a_size[0] * 0.5);
55
+ vec2 a_pxoffset = a_pixeloffset.xy;
56
+
57
+ highp float segment_angle = -a_projected_pos[2];
58
+ float size;
59
+
60
+ if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {
61
+ size = mix(a_size_min, a_size[1], u_size_t) / 128.0;
62
+ } else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {
63
+ size = a_size_min / 128.0;
64
+ } else {
65
+ size = u_size;
66
+ }
67
+
68
+ vec4 projectedPoint = u_matrix * vec4(a_pos, 0, 1);
69
+ highp float camera_to_anchor_distance = projectedPoint.w;
70
+ // If the label is pitched with the map, layout is done in pitched space,
71
+ // which makes labels in the distance smaller relative to viewport space.
72
+ // We counteract part of that effect by multiplying by the perspective ratio.
73
+ // If the label isn't pitched with the map, we do layout in viewport space,
74
+ // which makes labels in the distance larger relative to the features around
75
+ // them. We counteract part of that effect by dividing by the perspective ratio.
76
+ highp float distance_ratio = u_pitch_with_map ?
77
+ camera_to_anchor_distance / u_camera_to_center_distance :
78
+ u_camera_to_center_distance / camera_to_anchor_distance;
79
+ highp float perspective_ratio = clamp(
80
+ 0.5 + 0.5 * distance_ratio,
81
+ 0.0, // Prevents oversized near-field symbols in pitched/overzoomed tiles
82
+ 4.0);
83
+
84
+ size *= perspective_ratio;
85
+
86
+ float fontScale = u_is_text ? size / 24.0 : size;
87
+
88
+ highp float symbol_rotation = 0.0;
89
+ if (u_rotate_symbol) {
90
+ // Point labels with 'rotation-alignment: map' are horizontal with respect to tile units
91
+ // To figure out that angle in projected space, we draw a short horizontal line in tile
92
+ // space, project it, and measure its angle in projected space.
93
+ vec4 offsetProjectedPoint = u_matrix * vec4(a_pos + vec2(1, 0), 0, 1);
94
+
95
+ vec2 a = projectedPoint.xy / projectedPoint.w;
96
+ vec2 b = offsetProjectedPoint.xy / offsetProjectedPoint.w;
97
+
98
+ symbol_rotation = atan((b.y - a.y) / u_aspect_ratio, b.x - a.x);
99
+ }
100
+
101
+ highp float angle_sin = sin(segment_angle + symbol_rotation);
102
+ highp float angle_cos = cos(segment_angle + symbol_rotation);
103
+ mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);
104
+
105
+ vec4 projected_pos = u_label_plane_matrix * vec4(a_projected_pos.xy, 0.0, 1.0);
106
+ gl_Position = u_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 32.0 * fontScale + a_pxoffset), 0.0, 1.0);
107
+ float gamma_scale = gl_Position.w;
108
+
109
+ vec2 fade_opacity = unpack_opacity(a_fade_opacity);
110
+ float fade_change = fade_opacity[1] > 0.5 ? u_fade_change : -u_fade_change;
111
+ float interpolated_fade_opacity = max(0.0, min(1.0, fade_opacity[0] + fade_change));
112
+
113
+ v_data0 = a_tex / u_texsize;
114
+ v_data1 = vec3(gamma_scale, size, interpolated_fade_opacity);
115
+ }
@@ -0,0 +1,68 @@
1
+ #define SDF_PX 8.0
2
+
3
+ #define SDF 1.0
4
+ #define ICON 0.0
5
+
6
+ uniform bool u_is_halo;
7
+ uniform sampler2D u_texture;
8
+ uniform sampler2D u_texture_icon;
9
+ uniform highp float u_gamma_scale;
10
+ uniform lowp float u_device_pixel_ratio;
11
+
12
+ varying vec4 v_data0;
13
+ varying vec4 v_data1;
14
+
15
+ #pragma mapbox: define highp vec4 fill_color
16
+ #pragma mapbox: define highp vec4 halo_color
17
+ #pragma mapbox: define lowp float opacity
18
+ #pragma mapbox: define lowp float halo_width
19
+ #pragma mapbox: define lowp float halo_blur
20
+
21
+ void main() {
22
+ #pragma mapbox: initialize highp vec4 fill_color
23
+ #pragma mapbox: initialize highp vec4 halo_color
24
+ #pragma mapbox: initialize lowp float opacity
25
+ #pragma mapbox: initialize lowp float halo_width
26
+ #pragma mapbox: initialize lowp float halo_blur
27
+
28
+ float fade_opacity = v_data1[2];
29
+
30
+ if (v_data1.w == ICON) {
31
+ vec2 tex_icon = v_data0.zw;
32
+ lowp float alpha = opacity * fade_opacity;
33
+ gl_FragColor = texture2D(u_texture_icon, tex_icon) * alpha;
34
+
35
+ #ifdef OVERDRAW_INSPECTOR
36
+ gl_FragColor = vec4(1.0);
37
+ #endif
38
+ return;
39
+ }
40
+
41
+ vec2 tex = v_data0.xy;
42
+
43
+ float EDGE_GAMMA = 0.105 / u_device_pixel_ratio;
44
+
45
+ float gamma_scale = v_data1.x;
46
+ float size = v_data1.y;
47
+
48
+ float fontScale = size / 24.0;
49
+
50
+ lowp vec4 color = fill_color;
51
+ highp float gamma = EDGE_GAMMA / (fontScale * u_gamma_scale);
52
+ lowp float buff = (256.0 - 64.0) / 256.0;
53
+ if (u_is_halo) {
54
+ color = halo_color;
55
+ gamma = (halo_blur * 1.19 / SDF_PX + EDGE_GAMMA) / (fontScale * u_gamma_scale);
56
+ buff = (6.0 - halo_width / fontScale) / SDF_PX;
57
+ }
58
+
59
+ lowp float dist = texture2D(u_texture, tex).a;
60
+ highp float gamma_scaled = gamma * gamma_scale;
61
+ highp float alpha = smoothstep(buff - gamma_scaled, buff + gamma_scaled, dist);
62
+
63
+ gl_FragColor = color * (alpha * opacity * fade_opacity);
64
+
65
+ #ifdef OVERDRAW_INSPECTOR
66
+ gl_FragColor = vec4(1.0);
67
+ #endif
68
+ }
@@ -0,0 +1,116 @@
1
+ const float PI = 3.141592653589793;
2
+
3
+ attribute vec4 a_pos_offset;
4
+ attribute vec4 a_data;
5
+ attribute vec3 a_projected_pos;
6
+ attribute float a_fade_opacity;
7
+
8
+ // contents of a_size vary based on the type of property value
9
+ // used for {text,icon}-size.
10
+ // For constants, a_size is disabled.
11
+ // For source functions, we bind only one value per vertex: the value of {text,icon}-size evaluated for the current feature.
12
+ // For composite functions:
13
+ // [ text-size(lowerZoomStop, feature),
14
+ // text-size(upperZoomStop, feature) ]
15
+ uniform bool u_is_size_zoom_constant;
16
+ uniform bool u_is_size_feature_constant;
17
+ uniform highp float u_size_t; // used to interpolate between zoom stops when size is a composite function
18
+ uniform highp float u_size; // used when size is both zoom and feature constant
19
+ uniform mat4 u_matrix;
20
+ uniform mat4 u_label_plane_matrix;
21
+ uniform mat4 u_coord_matrix;
22
+ uniform bool u_is_text;
23
+ uniform bool u_pitch_with_map;
24
+ uniform highp float u_pitch;
25
+ uniform bool u_rotate_symbol;
26
+ uniform highp float u_aspect_ratio;
27
+ uniform highp float u_camera_to_center_distance;
28
+ uniform float u_fade_change;
29
+ uniform vec2 u_texsize;
30
+ uniform vec2 u_texsize_icon;
31
+
32
+ varying vec4 v_data0;
33
+ varying vec4 v_data1;
34
+
35
+ #pragma mapbox: define highp vec4 fill_color
36
+ #pragma mapbox: define highp vec4 halo_color
37
+ #pragma mapbox: define lowp float opacity
38
+ #pragma mapbox: define lowp float halo_width
39
+ #pragma mapbox: define lowp float halo_blur
40
+
41
+ void main() {
42
+ #pragma mapbox: initialize highp vec4 fill_color
43
+ #pragma mapbox: initialize highp vec4 halo_color
44
+ #pragma mapbox: initialize lowp float opacity
45
+ #pragma mapbox: initialize lowp float halo_width
46
+ #pragma mapbox: initialize lowp float halo_blur
47
+
48
+ vec2 a_pos = a_pos_offset.xy;
49
+ vec2 a_offset = a_pos_offset.zw;
50
+
51
+ vec2 a_tex = a_data.xy;
52
+ vec2 a_size = a_data.zw;
53
+
54
+ float a_size_min = floor(a_size[0] * 0.5);
55
+ float is_sdf = a_size[0] - 2.0 * a_size_min;
56
+
57
+ highp float segment_angle = -a_projected_pos[2];
58
+ float size;
59
+
60
+ if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {
61
+ size = mix(a_size_min, a_size[1], u_size_t) / 128.0;
62
+ } else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {
63
+ size = a_size_min / 128.0;
64
+ } else {
65
+ size = u_size;
66
+ }
67
+
68
+ vec4 projectedPoint = u_matrix * vec4(a_pos, 0, 1);
69
+ highp float camera_to_anchor_distance = projectedPoint.w;
70
+ // If the label is pitched with the map, layout is done in pitched space,
71
+ // which makes labels in the distance smaller relative to viewport space.
72
+ // We counteract part of that effect by multiplying by the perspective ratio.
73
+ // If the label isn't pitched with the map, we do layout in viewport space,
74
+ // which makes labels in the distance larger relative to the features around
75
+ // them. We counteract part of that effect by dividing by the perspective ratio.
76
+ highp float distance_ratio = u_pitch_with_map ?
77
+ camera_to_anchor_distance / u_camera_to_center_distance :
78
+ u_camera_to_center_distance / camera_to_anchor_distance;
79
+ highp float perspective_ratio = clamp(
80
+ 0.5 + 0.5 * distance_ratio,
81
+ 0.0, // Prevents oversized near-field symbols in pitched/overzoomed tiles
82
+ 4.0);
83
+
84
+ size *= perspective_ratio;
85
+
86
+ float fontScale = size / 24.0;
87
+
88
+ highp float symbol_rotation = 0.0;
89
+ if (u_rotate_symbol) {
90
+ // Point labels with 'rotation-alignment: map' are horizontal with respect to tile units
91
+ // To figure out that angle in projected space, we draw a short horizontal line in tile
92
+ // space, project it, and measure its angle in projected space.
93
+ vec4 offsetProjectedPoint = u_matrix * vec4(a_pos + vec2(1, 0), 0, 1);
94
+
95
+ vec2 a = projectedPoint.xy / projectedPoint.w;
96
+ vec2 b = offsetProjectedPoint.xy / offsetProjectedPoint.w;
97
+
98
+ symbol_rotation = atan((b.y - a.y) / u_aspect_ratio, b.x - a.x);
99
+ }
100
+
101
+ highp float angle_sin = sin(segment_angle + symbol_rotation);
102
+ highp float angle_cos = cos(segment_angle + symbol_rotation);
103
+ mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);
104
+
105
+ vec4 projected_pos = u_label_plane_matrix * vec4(a_projected_pos.xy, 0.0, 1.0);
106
+ gl_Position = u_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 32.0 * fontScale), 0.0, 1.0);
107
+ float gamma_scale = gl_Position.w;
108
+
109
+ vec2 fade_opacity = unpack_opacity(a_fade_opacity);
110
+ float fade_change = fade_opacity[1] > 0.5 ? u_fade_change : -u_fade_change;
111
+ float interpolated_fade_opacity = max(0.0, min(1.0, fade_opacity[0] + fade_change));
112
+
113
+ v_data0.xy = a_tex / u_texsize;
114
+ v_data0.zw = a_tex / u_texsize_icon;
115
+ v_data1 = vec4(gamma_scale, size, interpolated_fade_opacity, is_sdf);
116
+ }