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,163 @@
1
+ // @flow
2
+
3
+ import assert from 'assert';
4
+
5
+ import type Program from './program';
6
+ import type VertexBuffer from '../gl/vertex_buffer';
7
+ import type IndexBuffer from '../gl/index_buffer';
8
+ import type Context from '../gl/context';
9
+
10
+ class VertexArrayObject {
11
+ context: Context;
12
+ boundProgram: ?Program<*>;
13
+ boundLayoutVertexBuffer: ?VertexBuffer;
14
+ boundPaintVertexBuffers: Array<VertexBuffer>;
15
+ boundIndexBuffer: ?IndexBuffer;
16
+ boundVertexOffset: ?number;
17
+ boundDynamicVertexBuffer: ?VertexBuffer;
18
+ boundDynamicVertexBuffer2: ?VertexBuffer;
19
+ vao: any;
20
+
21
+ constructor() {
22
+ this.boundProgram = null;
23
+ this.boundLayoutVertexBuffer = null;
24
+ this.boundPaintVertexBuffers = [];
25
+ this.boundIndexBuffer = null;
26
+ this.boundVertexOffset = null;
27
+ this.boundDynamicVertexBuffer = null;
28
+ this.vao = null;
29
+ }
30
+
31
+ bind(context: Context,
32
+ program: Program<*>,
33
+ layoutVertexBuffer: VertexBuffer,
34
+ paintVertexBuffers: Array<VertexBuffer>,
35
+ indexBuffer: ?IndexBuffer,
36
+ vertexOffset: ?number,
37
+ dynamicVertexBuffer: ?VertexBuffer,
38
+ dynamicVertexBuffer2: ?VertexBuffer) {
39
+
40
+ this.context = context;
41
+
42
+ let paintBuffersDiffer = this.boundPaintVertexBuffers.length !== paintVertexBuffers.length;
43
+ for (let i = 0; !paintBuffersDiffer && i < paintVertexBuffers.length; i++) {
44
+ if (this.boundPaintVertexBuffers[i] !== paintVertexBuffers[i]) {
45
+ paintBuffersDiffer = true;
46
+ }
47
+ }
48
+
49
+ const isFreshBindRequired = (
50
+ !this.vao ||
51
+ this.boundProgram !== program ||
52
+ this.boundLayoutVertexBuffer !== layoutVertexBuffer ||
53
+ paintBuffersDiffer ||
54
+ this.boundIndexBuffer !== indexBuffer ||
55
+ this.boundVertexOffset !== vertexOffset ||
56
+ this.boundDynamicVertexBuffer !== dynamicVertexBuffer ||
57
+ this.boundDynamicVertexBuffer2 !== dynamicVertexBuffer2
58
+ );
59
+
60
+ if (!context.extVertexArrayObject || isFreshBindRequired) {
61
+ this.freshBind(program, layoutVertexBuffer, paintVertexBuffers, indexBuffer, vertexOffset, dynamicVertexBuffer, dynamicVertexBuffer2);
62
+ } else {
63
+ context.bindVertexArrayOES.set(this.vao);
64
+
65
+ if (dynamicVertexBuffer) {
66
+ // The buffer may have been updated. Rebind to upload data.
67
+ dynamicVertexBuffer.bind();
68
+ }
69
+
70
+ if (indexBuffer && indexBuffer.dynamicDraw) {
71
+ indexBuffer.bind();
72
+ }
73
+
74
+ if (dynamicVertexBuffer2) {
75
+ dynamicVertexBuffer2.bind();
76
+ }
77
+ }
78
+ }
79
+
80
+ freshBind(program: Program<*>,
81
+ layoutVertexBuffer: VertexBuffer,
82
+ paintVertexBuffers: Array<VertexBuffer>,
83
+ indexBuffer: ?IndexBuffer,
84
+ vertexOffset: ?number,
85
+ dynamicVertexBuffer: ?VertexBuffer,
86
+ dynamicVertexBuffer2: ?VertexBuffer) {
87
+ let numPrevAttributes;
88
+ const numNextAttributes = program.numAttributes;
89
+
90
+ const context = this.context;
91
+ const gl = context.gl;
92
+
93
+ if (context.extVertexArrayObject) {
94
+ if (this.vao) this.destroy();
95
+ this.vao = context.extVertexArrayObject.createVertexArrayOES();
96
+ context.bindVertexArrayOES.set(this.vao);
97
+ numPrevAttributes = 0;
98
+
99
+ // store the arguments so that we can verify them when the vao is bound again
100
+ this.boundProgram = program;
101
+ this.boundLayoutVertexBuffer = layoutVertexBuffer;
102
+ this.boundPaintVertexBuffers = paintVertexBuffers;
103
+ this.boundIndexBuffer = indexBuffer;
104
+ this.boundVertexOffset = vertexOffset;
105
+ this.boundDynamicVertexBuffer = dynamicVertexBuffer;
106
+ this.boundDynamicVertexBuffer2 = dynamicVertexBuffer2;
107
+
108
+ } else {
109
+ numPrevAttributes = context.currentNumAttributes || 0;
110
+
111
+ // Disable all attributes from the previous program that aren't used in
112
+ // the new program. Note: attribute indices are *not* program specific!
113
+ for (let i = numNextAttributes; i < numPrevAttributes; i++) {
114
+ // WebGL breaks if you disable attribute 0.
115
+ // http://stackoverflow.com/questions/20305231
116
+ assert(i !== 0);
117
+ gl.disableVertexAttribArray(i);
118
+ }
119
+ }
120
+
121
+ layoutVertexBuffer.enableAttributes(gl, program);
122
+ for (const vertexBuffer of paintVertexBuffers) {
123
+ vertexBuffer.enableAttributes(gl, program);
124
+ }
125
+
126
+ if (dynamicVertexBuffer) {
127
+ dynamicVertexBuffer.enableAttributes(gl, program);
128
+ }
129
+ if (dynamicVertexBuffer2) {
130
+ dynamicVertexBuffer2.enableAttributes(gl, program);
131
+ }
132
+
133
+ layoutVertexBuffer.bind();
134
+ layoutVertexBuffer.setVertexAttribPointers(gl, program, vertexOffset);
135
+ for (const vertexBuffer of paintVertexBuffers) {
136
+ vertexBuffer.bind();
137
+ vertexBuffer.setVertexAttribPointers(gl, program, vertexOffset);
138
+ }
139
+
140
+ if (dynamicVertexBuffer) {
141
+ dynamicVertexBuffer.bind();
142
+ dynamicVertexBuffer.setVertexAttribPointers(gl, program, vertexOffset);
143
+ }
144
+ if (indexBuffer) {
145
+ indexBuffer.bind();
146
+ }
147
+ if (dynamicVertexBuffer2) {
148
+ dynamicVertexBuffer2.bind();
149
+ dynamicVertexBuffer2.setVertexAttribPointers(gl, program, vertexOffset);
150
+ }
151
+
152
+ context.currentNumAttributes = numNextAttributes;
153
+ }
154
+
155
+ destroy() {
156
+ if (this.vao) {
157
+ this.context.extVertexArrayObject.deleteVertexArrayOES(this.vao);
158
+ this.vao = null;
159
+ }
160
+ }
161
+ }
162
+
163
+ export default VertexArrayObject;
@@ -0,0 +1,42 @@
1
+ # Mapbox GL Shaders
2
+
3
+ This repository contains GL shaders which are shared by [Mapbox GL JS](https://github.com/mapbox/mapbox-gl-js) and [Mapbox GL Native](https://github.com/mapbox/mapbox-gl-native).
4
+
5
+ ## Pragmas
6
+
7
+ Some variables change type depending on their context:
8
+
9
+ - if the variable is the same for all features, we declare it as a `uniform`
10
+ - if the variable is different for each feature, we declare it as an `attribute` (in the vertex shader) and an accompanying `varying` (in both the vertex and fragment shaders).
11
+ - if the variable is different for each feature and a function of zoom, we declare several `attributes` and `uniforms` then calculate the value using interpolation
12
+
13
+ We abstract over this functionality using pragmas.
14
+
15
+ ```glsl
16
+ #pragma mapbox: define highp vec4 color
17
+
18
+ main() {
19
+ #pragma mapbox: initialize highp vec4 color
20
+ ...
21
+ gl_FragColor = color;
22
+ }
23
+ ```
24
+
25
+ This program defines a variable within `main` called `color`, initialize the value of `color`, then sets `gl_FragColor` to the value of `color`.
26
+
27
+ Pragmas take the following form.
28
+
29
+ ```glsl
30
+ #pragma mapbox: (define|initialize) (lowp|mediump|highp) (float|vec2|vec3|vec4) {name}
31
+ ```
32
+
33
+ When using pragmas, the following requirements apply.
34
+
35
+ - all pragma-defined variables must have both `define` and `initialize` pragmas
36
+ - `define` pragmas must be in file scope
37
+ - `initialize` pragmas must be in function scope
38
+ - all pragma-defined variables defined and initialized in the fragment shader must also be defined and initialized in the vertex shader because `attribute`s are not accessible from the fragment shader
39
+
40
+ ## Prelude
41
+
42
+ The `_prelude.fragment.glsl` and `_prelude.vertex.glsl` files are automatically included in all shaders by the compiler.
@@ -0,0 +1,17 @@
1
+ #ifdef GL_ES
2
+ precision mediump float;
3
+ #else
4
+
5
+ #if !defined(lowp)
6
+ #define lowp
7
+ #endif
8
+
9
+ #if !defined(mediump)
10
+ #define mediump
11
+ #endif
12
+
13
+ #if !defined(highp)
14
+ #define highp
15
+ #endif
16
+
17
+ #endif
@@ -0,0 +1,73 @@
1
+ #ifdef GL_ES
2
+ precision highp float;
3
+ #else
4
+
5
+ #if !defined(lowp)
6
+ #define lowp
7
+ #endif
8
+
9
+ #if !defined(mediump)
10
+ #define mediump
11
+ #endif
12
+
13
+ #if !defined(highp)
14
+ #define highp
15
+ #endif
16
+
17
+ #endif
18
+
19
+ // Unpack a pair of values that have been packed into a single float.
20
+ // The packed values are assumed to be 8-bit unsigned integers, and are
21
+ // packed like so:
22
+ // packedValue = floor(input[0]) * 256 + input[1],
23
+ vec2 unpack_float(const float packedValue) {
24
+ int packedIntValue = int(packedValue);
25
+ int v0 = packedIntValue / 256;
26
+ return vec2(v0, packedIntValue - v0 * 256);
27
+ }
28
+
29
+ vec2 unpack_opacity(const float packedOpacity) {
30
+ int intOpacity = int(packedOpacity) / 2;
31
+ return vec2(float(intOpacity) / 127.0, mod(packedOpacity, 2.0));
32
+ }
33
+
34
+ // To minimize the number of attributes needed, we encode a 4-component
35
+ // color into a pair of floats (i.e. a vec2) as follows:
36
+ // [ floor(color.r * 255) * 256 + color.g * 255,
37
+ // floor(color.b * 255) * 256 + color.g * 255 ]
38
+ vec4 decode_color(const vec2 encodedColor) {
39
+ return vec4(
40
+ unpack_float(encodedColor[0]) / 255.0,
41
+ unpack_float(encodedColor[1]) / 255.0
42
+ );
43
+ }
44
+
45
+ // Unpack a pair of paint values and interpolate between them.
46
+ float unpack_mix_vec2(const vec2 packedValue, const float t) {
47
+ return mix(packedValue[0], packedValue[1], t);
48
+ }
49
+
50
+ // Unpack a pair of paint values and interpolate between them.
51
+ vec4 unpack_mix_color(const vec4 packedColors, const float t) {
52
+ vec4 minColor = decode_color(vec2(packedColors[0], packedColors[1]));
53
+ vec4 maxColor = decode_color(vec2(packedColors[2], packedColors[3]));
54
+ return mix(minColor, maxColor, t);
55
+ }
56
+
57
+ // The offset depends on how many pixels are between the world origin and the edge of the tile:
58
+ // vec2 offset = mod(pixel_coord, size)
59
+ //
60
+ // At high zoom levels there are a ton of pixels between the world origin and the edge of the tile.
61
+ // The glsl spec only guarantees 16 bits of precision for highp floats. We need more than that.
62
+ //
63
+ // The pixel_coord is passed in as two 16 bit values:
64
+ // pixel_coord_upper = floor(pixel_coord / 2^16)
65
+ // pixel_coord_lower = mod(pixel_coord, 2^16)
66
+ //
67
+ // The offset is calculated in a series of steps that should preserve this precision:
68
+ vec2 get_pattern_pos(const vec2 pixel_coord_upper, const vec2 pixel_coord_lower,
69
+ const vec2 pattern_size, const float tile_units_to_pixels, const vec2 pos) {
70
+
71
+ vec2 offset = mod(mod(mod(pixel_coord_upper, pattern_size) * 256.0, pattern_size) * 256.0 + pixel_coord_lower, pattern_size);
72
+ return (tile_units_to_pixels * pos + offset) / pattern_size;
73
+ }
@@ -0,0 +1,10 @@
1
+ uniform vec4 u_color;
2
+ uniform float u_opacity;
3
+
4
+ void main() {
5
+ gl_FragColor = u_color * u_opacity;
6
+
7
+ #ifdef OVERDRAW_INSPECTOR
8
+ gl_FragColor = vec4(1.0);
9
+ #endif
10
+ }
@@ -0,0 +1,7 @@
1
+ attribute vec2 a_pos;
2
+
3
+ uniform mat4 u_matrix;
4
+
5
+ void main() {
6
+ gl_Position = u_matrix * vec4(a_pos, 0, 1);
7
+ }
@@ -0,0 +1,28 @@
1
+ uniform vec2 u_pattern_tl_a;
2
+ uniform vec2 u_pattern_br_a;
3
+ uniform vec2 u_pattern_tl_b;
4
+ uniform vec2 u_pattern_br_b;
5
+ uniform vec2 u_texsize;
6
+ uniform float u_mix;
7
+ uniform float u_opacity;
8
+
9
+ uniform sampler2D u_image;
10
+
11
+ varying vec2 v_pos_a;
12
+ varying vec2 v_pos_b;
13
+
14
+ void main() {
15
+ vec2 imagecoord = mod(v_pos_a, 1.0);
16
+ vec2 pos = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, imagecoord);
17
+ vec4 color1 = texture2D(u_image, pos);
18
+
19
+ vec2 imagecoord_b = mod(v_pos_b, 1.0);
20
+ vec2 pos2 = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, imagecoord_b);
21
+ vec4 color2 = texture2D(u_image, pos2);
22
+
23
+ gl_FragColor = mix(color1, color2, u_mix) * u_opacity;
24
+
25
+ #ifdef OVERDRAW_INSPECTOR
26
+ gl_FragColor = vec4(1.0);
27
+ #endif
28
+ }
@@ -0,0 +1,20 @@
1
+ uniform mat4 u_matrix;
2
+ uniform vec2 u_pattern_size_a;
3
+ uniform vec2 u_pattern_size_b;
4
+ uniform vec2 u_pixel_coord_upper;
5
+ uniform vec2 u_pixel_coord_lower;
6
+ uniform float u_scale_a;
7
+ uniform float u_scale_b;
8
+ uniform float u_tile_units_to_pixels;
9
+
10
+ attribute vec2 a_pos;
11
+
12
+ varying vec2 v_pos_a;
13
+ varying vec2 v_pos_b;
14
+
15
+ void main() {
16
+ gl_Position = u_matrix * vec4(a_pos, 0, 1);
17
+
18
+ v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_a * u_pattern_size_a, u_tile_units_to_pixels, a_pos);
19
+ v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_b * u_pattern_size_b, u_tile_units_to_pixels, a_pos);
20
+ }
@@ -0,0 +1,39 @@
1
+ varying vec3 v_data;
2
+
3
+ #pragma mapbox: define highp vec4 color
4
+ #pragma mapbox: define mediump float radius
5
+ #pragma mapbox: define lowp float blur
6
+ #pragma mapbox: define lowp float opacity
7
+ #pragma mapbox: define highp vec4 stroke_color
8
+ #pragma mapbox: define mediump float stroke_width
9
+ #pragma mapbox: define lowp float stroke_opacity
10
+
11
+ void main() {
12
+ #pragma mapbox: initialize highp vec4 color
13
+ #pragma mapbox: initialize mediump float radius
14
+ #pragma mapbox: initialize lowp float blur
15
+ #pragma mapbox: initialize lowp float opacity
16
+ #pragma mapbox: initialize highp vec4 stroke_color
17
+ #pragma mapbox: initialize mediump float stroke_width
18
+ #pragma mapbox: initialize lowp float stroke_opacity
19
+
20
+ vec2 extrude = v_data.xy;
21
+ float extrude_length = length(extrude);
22
+
23
+ lowp float antialiasblur = v_data.z;
24
+ float antialiased_blur = -max(blur, antialiasblur);
25
+
26
+ float opacity_t = smoothstep(0.0, antialiased_blur, extrude_length - 1.0);
27
+
28
+ float color_t = stroke_width < 0.01 ? 0.0 : smoothstep(
29
+ antialiased_blur,
30
+ 0.0,
31
+ extrude_length - radius / (radius + stroke_width)
32
+ );
33
+
34
+ gl_FragColor = opacity_t * mix(color * opacity, stroke_color * stroke_opacity, color_t);
35
+
36
+ #ifdef OVERDRAW_INSPECTOR
37
+ gl_FragColor = vec4(1.0);
38
+ #endif
39
+ }
@@ -0,0 +1,64 @@
1
+ uniform mat4 u_matrix;
2
+ uniform bool u_scale_with_map;
3
+ uniform bool u_pitch_with_map;
4
+ uniform vec2 u_extrude_scale;
5
+ uniform lowp float u_device_pixel_ratio;
6
+ uniform highp float u_camera_to_center_distance;
7
+
8
+ attribute vec2 a_pos;
9
+
10
+ varying vec3 v_data;
11
+
12
+ #pragma mapbox: define highp vec4 color
13
+ #pragma mapbox: define mediump float radius
14
+ #pragma mapbox: define lowp float blur
15
+ #pragma mapbox: define lowp float opacity
16
+ #pragma mapbox: define highp vec4 stroke_color
17
+ #pragma mapbox: define mediump float stroke_width
18
+ #pragma mapbox: define lowp float stroke_opacity
19
+
20
+ void main(void) {
21
+ #pragma mapbox: initialize highp vec4 color
22
+ #pragma mapbox: initialize mediump float radius
23
+ #pragma mapbox: initialize lowp float blur
24
+ #pragma mapbox: initialize lowp float opacity
25
+ #pragma mapbox: initialize highp vec4 stroke_color
26
+ #pragma mapbox: initialize mediump float stroke_width
27
+ #pragma mapbox: initialize lowp float stroke_opacity
28
+
29
+ // unencode the extrusion vector that we snuck into the a_pos vector
30
+ vec2 extrude = vec2(mod(a_pos, 2.0) * 2.0 - 1.0);
31
+
32
+ // multiply a_pos by 0.5, since we had it * 2 in order to sneak
33
+ // in extrusion data
34
+ vec2 circle_center = floor(a_pos * 0.5);
35
+ if (u_pitch_with_map) {
36
+ vec2 corner_position = circle_center;
37
+ if (u_scale_with_map) {
38
+ corner_position += extrude * (radius + stroke_width) * u_extrude_scale;
39
+ } else {
40
+ // Pitching the circle with the map effectively scales it with the map
41
+ // To counteract the effect for pitch-scale: viewport, we rescale the
42
+ // whole circle based on the pitch scaling effect at its central point
43
+ vec4 projected_center = u_matrix * vec4(circle_center, 0, 1);
44
+ corner_position += extrude * (radius + stroke_width) * u_extrude_scale * (projected_center.w / u_camera_to_center_distance);
45
+ }
46
+
47
+ gl_Position = u_matrix * vec4(corner_position, 0, 1);
48
+ } else {
49
+ gl_Position = u_matrix * vec4(circle_center, 0, 1);
50
+
51
+ if (u_scale_with_map) {
52
+ gl_Position.xy += extrude * (radius + stroke_width) * u_extrude_scale * u_camera_to_center_distance;
53
+ } else {
54
+ gl_Position.xy += extrude * (radius + stroke_width) * u_extrude_scale * gl_Position.w;
55
+ }
56
+ }
57
+
58
+ // This is a minimum blur distance that serves as a faux-antialiasing for
59
+ // the circle. since blur is a ratio of the circle's size and the intent is
60
+ // to keep the blur at roughly 1px, the two are inversely related.
61
+ lowp float antialiasblur = 1.0 / u_device_pixel_ratio / (radius + stroke_width);
62
+
63
+ v_data = vec3(extrude.x, extrude.y, antialiasblur);
64
+ }
@@ -0,0 +1,3 @@
1
+ void main() {
2
+ gl_FragColor = vec4(1.0);
3
+ }
@@ -0,0 +1,7 @@
1
+ attribute vec2 a_pos;
2
+
3
+ uniform mat4 u_matrix;
4
+
5
+ void main() {
6
+ gl_Position = u_matrix * vec4(a_pos, 0, 1);
7
+ }
@@ -0,0 +1,21 @@
1
+
2
+ varying float v_placed;
3
+ varying float v_notUsed;
4
+
5
+ void main() {
6
+
7
+ float alpha = 0.5;
8
+
9
+ // Red = collision, hide label
10
+ gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0) * alpha;
11
+
12
+ // Blue = no collision, label is showing
13
+ if (v_placed > 0.5) {
14
+ gl_FragColor = vec4(0.0, 0.0, 1.0, 0.5) * alpha;
15
+ }
16
+
17
+ if (v_notUsed > 0.5) {
18
+ // This box not used, fade it out
19
+ gl_FragColor *= .1;
20
+ }
21
+ }
@@ -0,0 +1,27 @@
1
+ attribute vec2 a_pos;
2
+ attribute vec2 a_anchor_pos;
3
+ attribute vec2 a_extrude;
4
+ attribute vec2 a_placed;
5
+ attribute vec2 a_shift;
6
+
7
+ uniform mat4 u_matrix;
8
+ uniform vec2 u_extrude_scale;
9
+ uniform float u_camera_to_center_distance;
10
+
11
+ varying float v_placed;
12
+ varying float v_notUsed;
13
+
14
+ void main() {
15
+ vec4 projectedPoint = u_matrix * vec4(a_anchor_pos, 0, 1);
16
+ highp float camera_to_anchor_distance = projectedPoint.w;
17
+ highp float collision_perspective_ratio = clamp(
18
+ 0.5 + 0.5 * (u_camera_to_center_distance / camera_to_anchor_distance),
19
+ 0.0, // Prevents oversized near-field boxes in pitched/overzoomed tiles
20
+ 4.0);
21
+
22
+ gl_Position = u_matrix * vec4(a_pos, 0.0, 1.0);
23
+ gl_Position.xy += (a_extrude + a_shift) * u_extrude_scale * gl_Position.w * collision_perspective_ratio;
24
+
25
+ v_placed = a_placed.x;
26
+ v_notUsed = a_placed.y;
27
+ }
@@ -0,0 +1,17 @@
1
+ varying float v_radius;
2
+ varying vec2 v_extrude;
3
+ varying float v_perspective_ratio;
4
+ varying float v_collision;
5
+
6
+ void main() {
7
+ float alpha = 0.5 * min(v_perspective_ratio, 1.0);
8
+ float stroke_radius = 0.9 * max(v_perspective_ratio, 1.0);
9
+
10
+ float distance_to_center = length(v_extrude);
11
+ float distance_to_edge = abs(distance_to_center - v_radius);
12
+ float opacity_t = smoothstep(-stroke_radius, 0.0, -distance_to_edge);
13
+
14
+ vec4 color = mix(vec4(0.0, 0.0, 1.0, 0.5), vec4(1.0, 0.0, 0.0, 1.0), v_collision);
15
+
16
+ gl_FragColor = color * alpha * opacity_t;
17
+ }
@@ -0,0 +1,59 @@
1
+ attribute vec2 a_pos;
2
+ attribute float a_radius;
3
+ attribute vec2 a_flags;
4
+
5
+ uniform mat4 u_matrix;
6
+ uniform mat4 u_inv_matrix;
7
+ uniform vec2 u_viewport_size;
8
+ uniform float u_camera_to_center_distance;
9
+
10
+ varying float v_radius;
11
+ varying vec2 v_extrude;
12
+ varying float v_perspective_ratio;
13
+ varying float v_collision;
14
+
15
+ vec3 toTilePosition(vec2 screenPos) {
16
+ // Shoot a ray towards the ground to reconstruct the depth-value
17
+ vec4 rayStart = u_inv_matrix * vec4(screenPos, -1.0, 1.0);
18
+ vec4 rayEnd = u_inv_matrix * vec4(screenPos, 1.0, 1.0);
19
+
20
+ rayStart.xyz /= rayStart.w;
21
+ rayEnd.xyz /= rayEnd.w;
22
+
23
+ highp float t = (0.0 - rayStart.z) / (rayEnd.z - rayStart.z);
24
+ return mix(rayStart.xyz, rayEnd.xyz, t);
25
+ }
26
+
27
+ void main() {
28
+ vec2 quadCenterPos = a_pos;
29
+ float radius = a_radius;
30
+ float collision = a_flags.x;
31
+ float vertexIdx = a_flags.y;
32
+
33
+ vec2 quadVertexOffset = vec2(
34
+ mix(-1.0, 1.0, float(vertexIdx >= 2.0)),
35
+ mix(-1.0, 1.0, float(vertexIdx >= 1.0 && vertexIdx <= 2.0)));
36
+
37
+ vec2 quadVertexExtent = quadVertexOffset * radius;
38
+
39
+ // Screen position of the quad might have been computed with different camera parameters.
40
+ // Transform the point to a proper position on the current viewport
41
+ vec3 tilePos = toTilePosition(quadCenterPos);
42
+ vec4 clipPos = u_matrix * vec4(tilePos, 1.0);
43
+
44
+ highp float camera_to_anchor_distance = clipPos.w;
45
+ highp float collision_perspective_ratio = clamp(
46
+ 0.5 + 0.5 * (u_camera_to_center_distance / camera_to_anchor_distance),
47
+ 0.0, // Prevents oversized near-field circles in pitched/overzoomed tiles
48
+ 4.0);
49
+
50
+ // Apply small padding for the anti-aliasing effect to fit the quad
51
+ // Note that v_radius and v_extrude are in screen coordinates already
52
+ float padding_factor = 1.2;
53
+ v_radius = radius;
54
+ v_extrude = quadVertexExtent * padding_factor;
55
+ v_perspective_ratio = collision_perspective_ratio;
56
+ v_collision = collision;
57
+
58
+ gl_Position = vec4(clipPos.xyz / clipPos.w, 1.0) + vec4(quadVertexExtent * padding_factor / u_viewport_size * 2.0, 0.0, 0.0);
59
+ }
@@ -0,0 +1,9 @@
1
+ uniform highp vec4 u_color;
2
+ uniform sampler2D u_overlay;
3
+
4
+ varying vec2 v_uv;
5
+
6
+ void main() {
7
+ vec4 overlay_color = texture2D(u_overlay, v_uv);
8
+ gl_FragColor = mix(u_color, overlay_color, overlay_color.a);
9
+ }
@@ -0,0 +1,12 @@
1
+ attribute vec2 a_pos;
2
+ varying vec2 v_uv;
3
+
4
+ uniform mat4 u_matrix;
5
+ uniform float u_overlay_scale;
6
+
7
+ void main() {
8
+ // This vertex shader expects a EXTENT x EXTENT quad,
9
+ // The UV co-ordinates for the overlay texture can be calculated using that knowledge
10
+ v_uv = a_pos / 8192.0;
11
+ gl_Position = u_matrix * vec4(a_pos * u_overlay_scale, 0, 1);
12
+ }
@@ -0,0 +1,17 @@
1
+ // @flow
2
+
3
+ import {clamp} from '../util/util';
4
+
5
+ /**
6
+ * Packs two numbers, interpreted as 8-bit unsigned integers, into a single
7
+ * float. Unpack them in the shader using the `unpack_float()` function,
8
+ * defined in _prelude.vertex.glsl
9
+ *
10
+ * @private
11
+ */
12
+ export function packUint8ToFloat(a: number, b: number) {
13
+ // coerce a and b to 8-bit ints
14
+ a = clamp(Math.floor(a), 0, 255);
15
+ b = clamp(Math.floor(b), 0, 255);
16
+ return 256 * a + b;
17
+ }
@@ -0,0 +1,13 @@
1
+ #pragma mapbox: define highp vec4 color
2
+ #pragma mapbox: define lowp float opacity
3
+
4
+ void main() {
5
+ #pragma mapbox: initialize highp vec4 color
6
+ #pragma mapbox: initialize lowp float opacity
7
+
8
+ gl_FragColor = color * opacity;
9
+
10
+ #ifdef OVERDRAW_INSPECTOR
11
+ gl_FragColor = vec4(1.0);
12
+ #endif
13
+ }