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,20 @@
1
+ // This file is intended for use in the GL-JS test suite
2
+ // It provides the shaders entry point for Node (tests and GL Native)
3
+ // In a browser environment, this file is replaced with ./src/shaders/shaders.js
4
+ // when Rollup builds the main bundle.
5
+ // See package.json#browser
6
+
7
+ /* eslint-disable import/unambiguous, import/no-commonjs, flowtype/require-valid-file-annotation, no-global-assign */
8
+
9
+ const fs = require('fs');
10
+
11
+ // enable ES Modules in Node
12
+ require = require("esm")(module);
13
+
14
+ // enable requiring GLSL in Node
15
+ require.extensions['.glsl'] = function (module, filename) {
16
+ const content = fs.readFileSync(filename, 'utf8');
17
+ module._compile(`module.exports = \`${content}\``, filename);
18
+ };
19
+
20
+ module.exports = require("./shaders.js");
@@ -0,0 +1,30 @@
1
+ uniform lowp float u_device_pixel_ratio;
2
+
3
+ varying vec2 v_width2;
4
+ varying vec2 v_normal;
5
+ varying float v_gamma_scale;
6
+
7
+ #pragma mapbox: define highp vec4 color
8
+ #pragma mapbox: define lowp float blur
9
+ #pragma mapbox: define lowp float opacity
10
+
11
+ void main() {
12
+ #pragma mapbox: initialize highp vec4 color
13
+ #pragma mapbox: initialize lowp float blur
14
+ #pragma mapbox: initialize lowp float opacity
15
+
16
+ // Calculate the distance of the pixel from the line in pixels.
17
+ float dist = length(v_normal) * v_width2.s;
18
+
19
+ // Calculate the antialiasing fade factor. This is either when fading in
20
+ // the line in case of an offset line (v_width2.t) or when fading out
21
+ // (v_width2.s)
22
+ float blur2 = (blur + 1.0 / u_device_pixel_ratio) * v_gamma_scale;
23
+ float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);
24
+
25
+ gl_FragColor = color * (alpha * opacity);
26
+
27
+ #ifdef OVERDRAW_INSPECTOR
28
+ gl_FragColor = vec4(1.0);
29
+ #endif
30
+ }
@@ -0,0 +1,85 @@
1
+ // floor(127 / 2) == 63.0
2
+ // the maximum allowed miter limit is 2.0 at the moment. the extrude normal is
3
+ // stored in a byte (-128..127). we scale regular normals up to length 63, but
4
+ // there are also "special" normals that have a bigger length (of up to 126 in
5
+ // this case).
6
+ // #define scale 63.0
7
+ #define scale 0.015873016
8
+
9
+ attribute vec2 a_pos_normal;
10
+ attribute vec4 a_data;
11
+
12
+ uniform mat4 u_matrix;
13
+ uniform mediump float u_ratio;
14
+ uniform vec2 u_units_to_pixels;
15
+ uniform lowp float u_device_pixel_ratio;
16
+
17
+ varying vec2 v_normal;
18
+ varying vec2 v_width2;
19
+ varying float v_gamma_scale;
20
+ varying highp float v_linesofar;
21
+
22
+ #pragma mapbox: define highp vec4 color
23
+ #pragma mapbox: define lowp float blur
24
+ #pragma mapbox: define lowp float opacity
25
+ #pragma mapbox: define mediump float gapwidth
26
+ #pragma mapbox: define lowp float offset
27
+ #pragma mapbox: define mediump float width
28
+
29
+ void main() {
30
+ #pragma mapbox: initialize highp vec4 color
31
+ #pragma mapbox: initialize lowp float blur
32
+ #pragma mapbox: initialize lowp float opacity
33
+ #pragma mapbox: initialize mediump float gapwidth
34
+ #pragma mapbox: initialize lowp float offset
35
+ #pragma mapbox: initialize mediump float width
36
+
37
+ // the distance over which the line edge fades out.
38
+ // Retina devices need a smaller distance to avoid aliasing.
39
+ float ANTIALIASING = 1.0 / u_device_pixel_ratio / 2.0;
40
+
41
+ vec2 a_extrude = a_data.xy - 128.0;
42
+ float a_direction = mod(a_data.z, 4.0) - 1.0;
43
+
44
+ v_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * 2.0;
45
+
46
+ vec2 pos = floor(a_pos_normal * 0.5);
47
+
48
+ // x is 1 if it's a round cap, 0 otherwise
49
+ // y is 1 if the normal points up, and -1 if it points down
50
+ // We store these in the least significant bit of a_pos_normal
51
+ mediump vec2 normal = a_pos_normal - 2.0 * pos;
52
+ normal.y = normal.y * 2.0 - 1.0;
53
+ v_normal = normal;
54
+
55
+ // these transformations used to be applied in the JS and native code bases.
56
+ // moved them into the shader for clarity and simplicity.
57
+ gapwidth = gapwidth / 2.0;
58
+ float halfwidth = width / 2.0;
59
+ offset = -1.0 * offset;
60
+
61
+ float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);
62
+ float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + (halfwidth == 0.0 ? 0.0 : ANTIALIASING);
63
+
64
+ // Scale the extrusion vector down to a normal and then up by the line width
65
+ // of this vertex.
66
+ mediump vec2 dist = outset * a_extrude * scale;
67
+
68
+ // Calculate the offset when drawing a line that is to the side of the actual line.
69
+ // We do this by creating a vector that points towards the extrude, but rotate
70
+ // it when we're drawing round end points (a_direction = -1 or 1) since their
71
+ // extrude vector points in another direction.
72
+ mediump float u = 0.5 * a_direction;
73
+ mediump float t = 1.0 - abs(u);
74
+ mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);
75
+
76
+ vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);
77
+ gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;
78
+
79
+ // calculate how much the perspective view squishes or stretches the extrude
80
+ float extrude_length_without_perspective = length(dist);
81
+ float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_units_to_pixels);
82
+ v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;
83
+
84
+ v_width2 = vec2(outset, inset);
85
+ }
@@ -0,0 +1,34 @@
1
+ uniform lowp float u_device_pixel_ratio;
2
+ uniform sampler2D u_image;
3
+
4
+ varying vec2 v_width2;
5
+ varying vec2 v_normal;
6
+ varying float v_gamma_scale;
7
+ varying highp vec2 v_uv;
8
+
9
+ #pragma mapbox: define lowp float blur
10
+ #pragma mapbox: define lowp float opacity
11
+
12
+ void main() {
13
+ #pragma mapbox: initialize lowp float blur
14
+ #pragma mapbox: initialize lowp float opacity
15
+
16
+ // Calculate the distance of the pixel from the line in pixels.
17
+ float dist = length(v_normal) * v_width2.s;
18
+
19
+ // Calculate the antialiasing fade factor. This is either when fading in
20
+ // the line in case of an offset line (v_width2.t) or when fading out
21
+ // (v_width2.s)
22
+ float blur2 = (blur + 1.0 / u_device_pixel_ratio) * v_gamma_scale;
23
+ float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);
24
+
25
+ // For gradient lines, v_lineprogress is the ratio along the
26
+ // entire line, the gradient ramp is stored in a texture.
27
+ vec4 color = texture2D(u_image, v_uv);
28
+
29
+ gl_FragColor = color * (alpha * opacity);
30
+
31
+ #ifdef OVERDRAW_INSPECTOR
32
+ gl_FragColor = vec4(1.0);
33
+ #endif
34
+ }
@@ -0,0 +1,88 @@
1
+ // floor(127 / 2) == 63.0
2
+ // the maximum allowed miter limit is 2.0 at the moment. the extrude normal is
3
+ // stored in a byte (-128..127). we scale regular normals up to length 63, but
4
+ // there are also "special" normals that have a bigger length (of up to 126 in
5
+ // this case).
6
+ // #define scale 63.0
7
+ #define scale 0.015873016
8
+
9
+ attribute vec2 a_pos_normal;
10
+ attribute vec4 a_data;
11
+ attribute float a_uv_x;
12
+ attribute float a_split_index;
13
+
14
+ uniform mat4 u_matrix;
15
+ uniform mediump float u_ratio;
16
+ uniform lowp float u_device_pixel_ratio;
17
+ uniform vec2 u_units_to_pixels;
18
+ uniform float u_image_height;
19
+
20
+ varying vec2 v_normal;
21
+ varying vec2 v_width2;
22
+ varying float v_gamma_scale;
23
+ varying highp vec2 v_uv;
24
+
25
+ #pragma mapbox: define lowp float blur
26
+ #pragma mapbox: define lowp float opacity
27
+ #pragma mapbox: define mediump float gapwidth
28
+ #pragma mapbox: define lowp float offset
29
+ #pragma mapbox: define mediump float width
30
+
31
+ void main() {
32
+ #pragma mapbox: initialize lowp float blur
33
+ #pragma mapbox: initialize lowp float opacity
34
+ #pragma mapbox: initialize mediump float gapwidth
35
+ #pragma mapbox: initialize lowp float offset
36
+ #pragma mapbox: initialize mediump float width
37
+
38
+ // the distance over which the line edge fades out.
39
+ // Retina devices need a smaller distance to avoid aliasing.
40
+ float ANTIALIASING = 1.0 / u_device_pixel_ratio / 2.0;
41
+
42
+ vec2 a_extrude = a_data.xy - 128.0;
43
+ float a_direction = mod(a_data.z, 4.0) - 1.0;
44
+
45
+ highp float texel_height = 1.0 / u_image_height;
46
+ highp float half_texel_height = 0.5 * texel_height;
47
+ v_uv = vec2(a_uv_x, a_split_index * texel_height - half_texel_height);
48
+
49
+ vec2 pos = floor(a_pos_normal * 0.5);
50
+
51
+ // x is 1 if it's a round cap, 0 otherwise
52
+ // y is 1 if the normal points up, and -1 if it points down
53
+ // We store these in the least significant bit of a_pos_normal
54
+ mediump vec2 normal = a_pos_normal - 2.0 * pos;
55
+ normal.y = normal.y * 2.0 - 1.0;
56
+ v_normal = normal;
57
+
58
+ // these transformations used to be applied in the JS and native code bases.
59
+ // moved them into the shader for clarity and simplicity.
60
+ gapwidth = gapwidth / 2.0;
61
+ float halfwidth = width / 2.0;
62
+ offset = -1.0 * offset;
63
+
64
+ float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);
65
+ float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + (halfwidth == 0.0 ? 0.0 : ANTIALIASING);
66
+
67
+ // Scale the extrusion vector down to a normal and then up by the line width
68
+ // of this vertex.
69
+ mediump vec2 dist = outset * a_extrude * scale;
70
+
71
+ // Calculate the offset when drawing a line that is to the side of the actual line.
72
+ // We do this by creating a vector that points towards the extrude, but rotate
73
+ // it when we're drawing round end points (a_direction = -1 or 1) since their
74
+ // extrude vector points in another direction.
75
+ mediump float u = 0.5 * a_direction;
76
+ mediump float t = 1.0 - abs(u);
77
+ mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);
78
+
79
+ vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);
80
+ gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;
81
+
82
+ // calculate how much the perspective view squishes or stretches the extrude
83
+ float extrude_length_without_perspective = length(dist);
84
+ float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_units_to_pixels);
85
+ v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;
86
+
87
+ v_width2 = vec2(outset, inset);
88
+ }
@@ -0,0 +1,74 @@
1
+ uniform lowp float u_device_pixel_ratio;
2
+ uniform vec2 u_texsize;
3
+ uniform float u_fade;
4
+ uniform mediump vec3 u_scale;
5
+
6
+ uniform sampler2D u_image;
7
+
8
+ varying vec2 v_normal;
9
+ varying vec2 v_width2;
10
+ varying float v_linesofar;
11
+ varying float v_gamma_scale;
12
+ varying float v_width;
13
+
14
+ #pragma mapbox: define lowp vec4 pattern_from
15
+ #pragma mapbox: define lowp vec4 pattern_to
16
+ #pragma mapbox: define lowp float pixel_ratio_from
17
+ #pragma mapbox: define lowp float pixel_ratio_to
18
+ #pragma mapbox: define lowp float blur
19
+ #pragma mapbox: define lowp float opacity
20
+
21
+ void main() {
22
+ #pragma mapbox: initialize mediump vec4 pattern_from
23
+ #pragma mapbox: initialize mediump vec4 pattern_to
24
+ #pragma mapbox: initialize lowp float pixel_ratio_from
25
+ #pragma mapbox: initialize lowp float pixel_ratio_to
26
+
27
+ #pragma mapbox: initialize lowp float blur
28
+ #pragma mapbox: initialize lowp float opacity
29
+
30
+ vec2 pattern_tl_a = pattern_from.xy;
31
+ vec2 pattern_br_a = pattern_from.zw;
32
+ vec2 pattern_tl_b = pattern_to.xy;
33
+ vec2 pattern_br_b = pattern_to.zw;
34
+
35
+ float tileZoomRatio = u_scale.x;
36
+ float fromScale = u_scale.y;
37
+ float toScale = u_scale.z;
38
+
39
+ vec2 display_size_a = (pattern_br_a - pattern_tl_a) / pixel_ratio_from;
40
+ vec2 display_size_b = (pattern_br_b - pattern_tl_b) / pixel_ratio_to;
41
+
42
+ vec2 pattern_size_a = vec2(display_size_a.x * fromScale / tileZoomRatio, display_size_a.y);
43
+ vec2 pattern_size_b = vec2(display_size_b.x * toScale / tileZoomRatio, display_size_b.y);
44
+
45
+ float aspect_a = display_size_a.y / v_width;
46
+ float aspect_b = display_size_b.y / v_width;
47
+
48
+ // Calculate the distance of the pixel from the line in pixels.
49
+ float dist = length(v_normal) * v_width2.s;
50
+
51
+ // Calculate the antialiasing fade factor. This is either when fading in
52
+ // the line in case of an offset line (v_width2.t) or when fading out
53
+ // (v_width2.s)
54
+ float blur2 = (blur + 1.0 / u_device_pixel_ratio) * v_gamma_scale;
55
+ float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);
56
+
57
+ float x_a = mod(v_linesofar / pattern_size_a.x * aspect_a, 1.0);
58
+ float x_b = mod(v_linesofar / pattern_size_b.x * aspect_b, 1.0);
59
+
60
+ float y = 0.5 * v_normal.y + 0.5;
61
+
62
+ vec2 texel_size = 1.0 / u_texsize;
63
+
64
+ vec2 pos_a = mix(pattern_tl_a * texel_size - texel_size, pattern_br_a * texel_size + texel_size, vec2(x_a, y));
65
+ vec2 pos_b = mix(pattern_tl_b * texel_size - texel_size, pattern_br_b * texel_size + texel_size, vec2(x_b, y));
66
+
67
+ vec4 color = mix(texture2D(u_image, pos_a), texture2D(u_image, pos_b), u_fade);
68
+
69
+ gl_FragColor = color * alpha * opacity;
70
+
71
+ #ifdef OVERDRAW_INSPECTOR
72
+ gl_FragColor = vec4(1.0);
73
+ #endif
74
+ }
@@ -0,0 +1,99 @@
1
+ // floor(127 / 2) == 63.0
2
+ // the maximum allowed miter limit is 2.0 at the moment. the extrude normal is
3
+ // stored in a byte (-128..127). we scale regular normals up to length 63, but
4
+ // there are also "special" normals that have a bigger length (of up to 126 in
5
+ // this case).
6
+ // #define scale 63.0
7
+ #define scale 0.015873016
8
+
9
+ // We scale the distance before adding it to the buffers so that we can store
10
+ // long distances for long segments. Use this value to unscale the distance.
11
+ #define LINE_DISTANCE_SCALE 2.0
12
+
13
+ attribute vec2 a_pos_normal;
14
+ attribute vec4 a_data;
15
+
16
+ uniform mat4 u_matrix;
17
+ uniform vec2 u_units_to_pixels;
18
+ uniform mediump float u_ratio;
19
+ uniform lowp float u_device_pixel_ratio;
20
+
21
+ varying vec2 v_normal;
22
+ varying vec2 v_width2;
23
+ varying float v_linesofar;
24
+ varying float v_gamma_scale;
25
+ varying float v_width;
26
+
27
+ #pragma mapbox: define lowp float blur
28
+ #pragma mapbox: define lowp float opacity
29
+ #pragma mapbox: define lowp float offset
30
+ #pragma mapbox: define mediump float gapwidth
31
+ #pragma mapbox: define mediump float width
32
+ #pragma mapbox: define lowp float floorwidth
33
+ #pragma mapbox: define lowp vec4 pattern_from
34
+ #pragma mapbox: define lowp vec4 pattern_to
35
+ #pragma mapbox: define lowp float pixel_ratio_from
36
+ #pragma mapbox: define lowp float pixel_ratio_to
37
+
38
+ void main() {
39
+ #pragma mapbox: initialize lowp float blur
40
+ #pragma mapbox: initialize lowp float opacity
41
+ #pragma mapbox: initialize lowp float offset
42
+ #pragma mapbox: initialize mediump float gapwidth
43
+ #pragma mapbox: initialize mediump float width
44
+ #pragma mapbox: initialize lowp float floorwidth
45
+ #pragma mapbox: initialize mediump vec4 pattern_from
46
+ #pragma mapbox: initialize mediump vec4 pattern_to
47
+ #pragma mapbox: initialize lowp float pixel_ratio_from
48
+ #pragma mapbox: initialize lowp float pixel_ratio_to
49
+
50
+ // the distance over which the line edge fades out.
51
+ // Retina devices need a smaller distance to avoid aliasing.
52
+ float ANTIALIASING = 1.0 / u_device_pixel_ratio / 2.0;
53
+
54
+ vec2 a_extrude = a_data.xy - 128.0;
55
+ float a_direction = mod(a_data.z, 4.0) - 1.0;
56
+ float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;
57
+ // float tileRatio = u_scale.x;
58
+ vec2 pos = floor(a_pos_normal * 0.5);
59
+
60
+ // x is 1 if it's a round cap, 0 otherwise
61
+ // y is 1 if the normal points up, and -1 if it points down
62
+ // We store these in the least significant bit of a_pos_normal
63
+ mediump vec2 normal = a_pos_normal - 2.0 * pos;
64
+ normal.y = normal.y * 2.0 - 1.0;
65
+ v_normal = normal;
66
+
67
+ // these transformations used to be applied in the JS and native code bases.
68
+ // moved them into the shader for clarity and simplicity.
69
+ gapwidth = gapwidth / 2.0;
70
+ float halfwidth = width / 2.0;
71
+ offset = -1.0 * offset;
72
+
73
+ float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);
74
+ float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + (halfwidth == 0.0 ? 0.0 : ANTIALIASING);
75
+
76
+ // Scale the extrusion vector down to a normal and then up by the line width
77
+ // of this vertex.
78
+ mediump vec2 dist = outset * a_extrude * scale;
79
+
80
+ // Calculate the offset when drawing a line that is to the side of the actual line.
81
+ // We do this by creating a vector that points towards the extrude, but rotate
82
+ // it when we're drawing round end points (a_direction = -1 or 1) since their
83
+ // extrude vector points in another direction.
84
+ mediump float u = 0.5 * a_direction;
85
+ mediump float t = 1.0 - abs(u);
86
+ mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);
87
+
88
+ vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);
89
+ gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;
90
+
91
+ // calculate how much the perspective view squishes or stretches the extrude
92
+ float extrude_length_without_perspective = length(dist);
93
+ float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_units_to_pixels);
94
+ v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;
95
+
96
+ v_linesofar = a_linesofar;
97
+ v_width2 = vec2(outset, inset);
98
+ v_width = floorwidth;
99
+ }
@@ -0,0 +1,45 @@
1
+
2
+ uniform lowp float u_device_pixel_ratio;
3
+ uniform sampler2D u_image;
4
+ uniform float u_sdfgamma;
5
+ uniform float u_mix;
6
+
7
+ varying vec2 v_normal;
8
+ varying vec2 v_width2;
9
+ varying vec2 v_tex_a;
10
+ varying vec2 v_tex_b;
11
+ varying float v_gamma_scale;
12
+
13
+ #pragma mapbox: define highp vec4 color
14
+ #pragma mapbox: define lowp float blur
15
+ #pragma mapbox: define lowp float opacity
16
+ #pragma mapbox: define mediump float width
17
+ #pragma mapbox: define lowp float floorwidth
18
+
19
+ void main() {
20
+ #pragma mapbox: initialize highp vec4 color
21
+ #pragma mapbox: initialize lowp float blur
22
+ #pragma mapbox: initialize lowp float opacity
23
+ #pragma mapbox: initialize mediump float width
24
+ #pragma mapbox: initialize lowp float floorwidth
25
+
26
+ // Calculate the distance of the pixel from the line in pixels.
27
+ float dist = length(v_normal) * v_width2.s;
28
+
29
+ // Calculate the antialiasing fade factor. This is either when fading in
30
+ // the line in case of an offset line (v_width2.t) or when fading out
31
+ // (v_width2.s)
32
+ float blur2 = (blur + 1.0 / u_device_pixel_ratio) * v_gamma_scale;
33
+ float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);
34
+
35
+ float sdfdist_a = texture2D(u_image, v_tex_a).a;
36
+ float sdfdist_b = texture2D(u_image, v_tex_b).a;
37
+ float sdfdist = mix(sdfdist_a, sdfdist_b, u_mix);
38
+ alpha *= smoothstep(0.5 - u_sdfgamma / floorwidth, 0.5 + u_sdfgamma / floorwidth, sdfdist);
39
+
40
+ gl_FragColor = color * (alpha * opacity);
41
+
42
+ #ifdef OVERDRAW_INSPECTOR
43
+ gl_FragColor = vec4(1.0);
44
+ #endif
45
+ }
@@ -0,0 +1,98 @@
1
+ // floor(127 / 2) == 63.0
2
+ // the maximum allowed miter limit is 2.0 at the moment. the extrude normal is
3
+ // stored in a byte (-128..127). we scale regular normals up to length 63, but
4
+ // there are also "special" normals that have a bigger length (of up to 126 in
5
+ // this case).
6
+ // #define scale 63.0
7
+ #define scale 0.015873016
8
+
9
+ // We scale the distance before adding it to the buffers so that we can store
10
+ // long distances for long segments. Use this value to unscale the distance.
11
+ #define LINE_DISTANCE_SCALE 2.0
12
+
13
+ attribute vec2 a_pos_normal;
14
+ attribute vec4 a_data;
15
+
16
+ uniform mat4 u_matrix;
17
+ uniform mediump float u_ratio;
18
+ uniform lowp float u_device_pixel_ratio;
19
+ uniform vec2 u_patternscale_a;
20
+ uniform float u_tex_y_a;
21
+ uniform vec2 u_patternscale_b;
22
+ uniform float u_tex_y_b;
23
+ uniform vec2 u_units_to_pixels;
24
+
25
+ varying vec2 v_normal;
26
+ varying vec2 v_width2;
27
+ varying vec2 v_tex_a;
28
+ varying vec2 v_tex_b;
29
+ varying float v_gamma_scale;
30
+
31
+ #pragma mapbox: define highp vec4 color
32
+ #pragma mapbox: define lowp float blur
33
+ #pragma mapbox: define lowp float opacity
34
+ #pragma mapbox: define mediump float gapwidth
35
+ #pragma mapbox: define lowp float offset
36
+ #pragma mapbox: define mediump float width
37
+ #pragma mapbox: define lowp float floorwidth
38
+
39
+ void main() {
40
+ #pragma mapbox: initialize highp vec4 color
41
+ #pragma mapbox: initialize lowp float blur
42
+ #pragma mapbox: initialize lowp float opacity
43
+ #pragma mapbox: initialize mediump float gapwidth
44
+ #pragma mapbox: initialize lowp float offset
45
+ #pragma mapbox: initialize mediump float width
46
+ #pragma mapbox: initialize lowp float floorwidth
47
+
48
+ // the distance over which the line edge fades out.
49
+ // Retina devices need a smaller distance to avoid aliasing.
50
+ float ANTIALIASING = 1.0 / u_device_pixel_ratio / 2.0;
51
+
52
+ vec2 a_extrude = a_data.xy - 128.0;
53
+ float a_direction = mod(a_data.z, 4.0) - 1.0;
54
+ float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;
55
+
56
+ vec2 pos = floor(a_pos_normal * 0.5);
57
+
58
+ // x is 1 if it's a round cap, 0 otherwise
59
+ // y is 1 if the normal points up, and -1 if it points down
60
+ // We store these in the least significant bit of a_pos_normal
61
+ mediump vec2 normal = a_pos_normal - 2.0 * pos;
62
+ normal.y = normal.y * 2.0 - 1.0;
63
+ v_normal = normal;
64
+
65
+ // these transformations used to be applied in the JS and native code bases.
66
+ // moved them into the shader for clarity and simplicity.
67
+ gapwidth = gapwidth / 2.0;
68
+ float halfwidth = width / 2.0;
69
+ offset = -1.0 * offset;
70
+
71
+ float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);
72
+ float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + (halfwidth == 0.0 ? 0.0 : ANTIALIASING);
73
+
74
+ // Scale the extrusion vector down to a normal and then up by the line width
75
+ // of this vertex.
76
+ mediump vec2 dist =outset * a_extrude * scale;
77
+
78
+ // Calculate the offset when drawing a line that is to the side of the actual line.
79
+ // We do this by creating a vector that points towards the extrude, but rotate
80
+ // it when we're drawing round end points (a_direction = -1 or 1) since their
81
+ // extrude vector points in another direction.
82
+ mediump float u = 0.5 * a_direction;
83
+ mediump float t = 1.0 - abs(u);
84
+ mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);
85
+
86
+ vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);
87
+ gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;
88
+
89
+ // calculate how much the perspective view squishes or stretches the extrude
90
+ float extrude_length_without_perspective = length(dist);
91
+ float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_units_to_pixels);
92
+ v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;
93
+
94
+ v_tex_a = vec2(a_linesofar * u_patternscale_a.x / floorwidth, normal.y * u_patternscale_a.y + u_tex_y_a);
95
+ v_tex_b = vec2(a_linesofar * u_patternscale_b.x / floorwidth, normal.y * u_patternscale_b.y + u_tex_y_b);
96
+
97
+ v_width2 = vec2(outset, inset);
98
+ }
@@ -0,0 +1,52 @@
1
+ uniform float u_fade_t;
2
+ uniform float u_opacity;
3
+ uniform sampler2D u_image0;
4
+ uniform sampler2D u_image1;
5
+ varying vec2 v_pos0;
6
+ varying vec2 v_pos1;
7
+
8
+ uniform float u_brightness_low;
9
+ uniform float u_brightness_high;
10
+
11
+ uniform float u_saturation_factor;
12
+ uniform float u_contrast_factor;
13
+ uniform vec3 u_spin_weights;
14
+
15
+ void main() {
16
+
17
+ // read and cross-fade colors from the main and parent tiles
18
+ vec4 color0 = texture2D(u_image0, v_pos0);
19
+ vec4 color1 = texture2D(u_image1, v_pos1);
20
+ if (color0.a > 0.0) {
21
+ color0.rgb = color0.rgb / color0.a;
22
+ }
23
+ if (color1.a > 0.0) {
24
+ color1.rgb = color1.rgb / color1.a;
25
+ }
26
+ vec4 color = mix(color0, color1, u_fade_t);
27
+ color.a *= u_opacity;
28
+ vec3 rgb = color.rgb;
29
+
30
+ // spin
31
+ rgb = vec3(
32
+ dot(rgb, u_spin_weights.xyz),
33
+ dot(rgb, u_spin_weights.zxy),
34
+ dot(rgb, u_spin_weights.yzx));
35
+
36
+ // saturation
37
+ float average = (color.r + color.g + color.b) / 3.0;
38
+ rgb += (average - rgb) * u_saturation_factor;
39
+
40
+ // contrast
41
+ rgb = (rgb - 0.5) * u_contrast_factor + 0.5;
42
+
43
+ // brightness
44
+ vec3 u_high_vec = vec3(u_brightness_low, u_brightness_low, u_brightness_low);
45
+ vec3 u_low_vec = vec3(u_brightness_high, u_brightness_high, u_brightness_high);
46
+
47
+ gl_FragColor = vec4(mix(u_high_vec, u_low_vec, rgb) * color.a, color.a);
48
+
49
+ #ifdef OVERDRAW_INSPECTOR
50
+ gl_FragColor = vec4(1.0);
51
+ #endif
52
+ }
@@ -0,0 +1,21 @@
1
+ uniform mat4 u_matrix;
2
+ uniform vec2 u_tl_parent;
3
+ uniform float u_scale_parent;
4
+ uniform float u_buffer_scale;
5
+
6
+ attribute vec2 a_pos;
7
+ attribute vec2 a_texture_pos;
8
+
9
+ varying vec2 v_pos0;
10
+ varying vec2 v_pos1;
11
+
12
+ void main() {
13
+ gl_Position = u_matrix * vec4(a_pos, 0, 1);
14
+ // We are using Int16 for texture position coordinates to give us enough precision for
15
+ // fractional coordinates. We use 8192 to scale the texture coordinates in the buffer
16
+ // as an arbitrarily high number to preserve adequate precision when rendering.
17
+ // This is also the same value as the EXTENT we are using for our tile buffer pos coordinates,
18
+ // so math for modifying either is consistent.
19
+ v_pos0 = (((a_texture_pos / 8192.0) - 0.5) / u_buffer_scale ) + 0.5;
20
+ v_pos1 = (v_pos0 * u_scale_parent) + u_tl_parent;
21
+ }