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,103 @@
1
+ // @flow
2
+
3
+ import {bgPatternUniformValues} from './pattern';
4
+ import {
5
+ Uniform1i,
6
+ Uniform1f,
7
+ Uniform2f,
8
+ UniformColor,
9
+ UniformMatrix4f
10
+ } from '../uniform_binding';
11
+ import {extend} from '../../util/util';
12
+
13
+ import type Painter from '../painter';
14
+ import type {UniformValues, UniformLocations} from '../uniform_binding';
15
+ import type Context from '../../gl/context';
16
+ import type Color from '../../style-spec/util/color';
17
+ import type {CrossFaded} from '../../style/properties';
18
+ import type {CrossfadeParameters} from '../../style/evaluation_parameters';
19
+ import type {OverscaledTileID} from '../../source/tile_id';
20
+ import type ResolvedImage from '../../style-spec/expression/types/resolved_image';
21
+
22
+ export type BackgroundUniformsType = {|
23
+ 'u_matrix': UniformMatrix4f,
24
+ 'u_opacity': Uniform1f,
25
+ 'u_color': UniformColor
26
+ |};
27
+
28
+ export type BackgroundPatternUniformsType = {|
29
+ 'u_matrix': UniformMatrix4f,
30
+ 'u_opacity': Uniform1f,
31
+ // pattern uniforms:
32
+ 'u_image': Uniform1i,
33
+ 'u_pattern_tl_a': Uniform2f,
34
+ 'u_pattern_br_a': Uniform2f,
35
+ 'u_pattern_tl_b': Uniform2f,
36
+ 'u_pattern_br_b': Uniform2f,
37
+ 'u_texsize': Uniform2f,
38
+ 'u_mix': Uniform1f,
39
+ 'u_pattern_size_a': Uniform2f,
40
+ 'u_pattern_size_b': Uniform2f,
41
+ 'u_scale_a': Uniform1f,
42
+ 'u_scale_b': Uniform1f,
43
+ 'u_pixel_coord_upper': Uniform2f,
44
+ 'u_pixel_coord_lower': Uniform2f,
45
+ 'u_tile_units_to_pixels': Uniform1f
46
+ |};
47
+
48
+ const backgroundUniforms = (context: Context, locations: UniformLocations): BackgroundUniformsType => ({
49
+ 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),
50
+ 'u_opacity': new Uniform1f(context, locations.u_opacity),
51
+ 'u_color': new UniformColor(context, locations.u_color)
52
+ });
53
+
54
+ const backgroundPatternUniforms = (context: Context, locations: UniformLocations): BackgroundPatternUniformsType => ({
55
+ 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),
56
+ 'u_opacity': new Uniform1f(context, locations.u_opacity),
57
+ 'u_image': new Uniform1i(context, locations.u_image),
58
+ 'u_pattern_tl_a': new Uniform2f(context, locations.u_pattern_tl_a),
59
+ 'u_pattern_br_a': new Uniform2f(context, locations.u_pattern_br_a),
60
+ 'u_pattern_tl_b': new Uniform2f(context, locations.u_pattern_tl_b),
61
+ 'u_pattern_br_b': new Uniform2f(context, locations.u_pattern_br_b),
62
+ 'u_texsize': new Uniform2f(context, locations.u_texsize),
63
+ 'u_mix': new Uniform1f(context, locations.u_mix),
64
+ 'u_pattern_size_a': new Uniform2f(context, locations.u_pattern_size_a),
65
+ 'u_pattern_size_b': new Uniform2f(context, locations.u_pattern_size_b),
66
+ 'u_scale_a': new Uniform1f(context, locations.u_scale_a),
67
+ 'u_scale_b': new Uniform1f(context, locations.u_scale_b),
68
+ 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper),
69
+ 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower),
70
+ 'u_tile_units_to_pixels': new Uniform1f(context, locations.u_tile_units_to_pixels)
71
+ });
72
+
73
+ const backgroundUniformValues = (
74
+ matrix: Float32Array,
75
+ opacity: number,
76
+ color: Color
77
+ ): UniformValues<BackgroundUniformsType> => ({
78
+ 'u_matrix': matrix,
79
+ 'u_opacity': opacity,
80
+ 'u_color': color
81
+ });
82
+
83
+ const backgroundPatternUniformValues = (
84
+ matrix: Float32Array,
85
+ opacity: number,
86
+ painter: Painter,
87
+ image: CrossFaded<ResolvedImage>,
88
+ tile: {tileID: OverscaledTileID, tileSize: number},
89
+ crossfade: CrossfadeParameters
90
+ ): UniformValues<BackgroundPatternUniformsType> => extend(
91
+ bgPatternUniformValues(image, crossfade, painter, tile),
92
+ {
93
+ 'u_matrix': matrix,
94
+ 'u_opacity': opacity
95
+ }
96
+ );
97
+
98
+ export {
99
+ backgroundUniforms,
100
+ backgroundPatternUniforms,
101
+ backgroundUniformValues,
102
+ backgroundPatternUniformValues
103
+ };
@@ -0,0 +1,69 @@
1
+ // @flow
2
+
3
+ import {
4
+ Uniform1i,
5
+ Uniform1f,
6
+ Uniform2f,
7
+ UniformMatrix4f
8
+ } from '../uniform_binding';
9
+ import pixelsToTileUnits from '../../source/pixels_to_tile_units';
10
+
11
+ import type Context from '../../gl/context';
12
+ import type {UniformValues, UniformLocations} from '../uniform_binding';
13
+ import type {OverscaledTileID} from '../../source/tile_id';
14
+ import type Tile from '../../source/tile';
15
+ import type CircleStyleLayer from '../../style/style_layer/circle_style_layer';
16
+ import type Painter from '../painter';
17
+ import browser from '../../util/browser';
18
+
19
+ export type CircleUniformsType = {|
20
+ 'u_camera_to_center_distance': Uniform1f,
21
+ 'u_scale_with_map': Uniform1i,
22
+ 'u_pitch_with_map': Uniform1i,
23
+ 'u_extrude_scale': Uniform2f,
24
+ 'u_device_pixel_ratio': Uniform1f,
25
+ 'u_matrix': UniformMatrix4f
26
+ |};
27
+
28
+ const circleUniforms = (context: Context, locations: UniformLocations): CircleUniformsType => ({
29
+ 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance),
30
+ 'u_scale_with_map': new Uniform1i(context, locations.u_scale_with_map),
31
+ 'u_pitch_with_map': new Uniform1i(context, locations.u_pitch_with_map),
32
+ 'u_extrude_scale': new Uniform2f(context, locations.u_extrude_scale),
33
+ 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio),
34
+ 'u_matrix': new UniformMatrix4f(context, locations.u_matrix)
35
+ });
36
+
37
+ const circleUniformValues = (
38
+ painter: Painter,
39
+ coord: OverscaledTileID,
40
+ tile: Tile,
41
+ layer: CircleStyleLayer
42
+ ): UniformValues<CircleUniformsType> => {
43
+ const transform = painter.transform;
44
+
45
+ let pitchWithMap: boolean, extrudeScale: [number, number];
46
+ if (layer.paint.get('circle-pitch-alignment') === 'map') {
47
+ const pixelRatio = pixelsToTileUnits(tile, 1, transform.zoom);
48
+ pitchWithMap = true;
49
+ extrudeScale = [pixelRatio, pixelRatio];
50
+ } else {
51
+ pitchWithMap = false;
52
+ extrudeScale = transform.pixelsToGLUnits;
53
+ }
54
+
55
+ return {
56
+ 'u_camera_to_center_distance': transform.cameraToCenterDistance,
57
+ 'u_scale_with_map': +(layer.paint.get('circle-pitch-scale') === 'map'),
58
+ 'u_matrix': painter.translatePosMatrix(
59
+ coord.posMatrix,
60
+ tile,
61
+ layer.paint.get('circle-translate'),
62
+ layer.paint.get('circle-translate-anchor')),
63
+ 'u_pitch_with_map': +(pitchWithMap),
64
+ 'u_device_pixel_ratio': browser.devicePixelRatio,
65
+ 'u_extrude_scale': extrudeScale
66
+ };
67
+ };
68
+
69
+ export {circleUniforms, circleUniformValues};
@@ -0,0 +1,20 @@
1
+ // @flow
2
+
3
+ import {UniformMatrix4f} from '../uniform_binding';
4
+
5
+ import type Context from '../../gl/context';
6
+ import type {UniformValues, UniformLocations} from '../uniform_binding';
7
+
8
+ export type ClippingMaskUniformsType = {|
9
+ 'u_matrix': UniformMatrix4f
10
+ |};
11
+
12
+ const clippingMaskUniforms = (context: Context, locations: UniformLocations): ClippingMaskUniformsType => ({
13
+ 'u_matrix': new UniformMatrix4f(context, locations.u_matrix)
14
+ });
15
+
16
+ const clippingMaskUniformValues = (matrix: Float32Array): UniformValues<ClippingMaskUniformsType> => ({
17
+ 'u_matrix': matrix
18
+ });
19
+
20
+ export {clippingMaskUniforms, clippingMaskUniformValues};
@@ -0,0 +1,76 @@
1
+ // @flow
2
+
3
+ import {
4
+ Uniform1f,
5
+ Uniform2f,
6
+ UniformMatrix4f
7
+ } from '../uniform_binding';
8
+ import pixelsToTileUnits from '../../source/pixels_to_tile_units';
9
+
10
+ import type Context from '../../gl/context';
11
+ import type {UniformValues, UniformLocations} from '../uniform_binding';
12
+ import type Transform from '../../geo/transform';
13
+ import type Tile from '../../source/tile';
14
+
15
+ export type CollisionUniformsType = {|
16
+ 'u_matrix': UniformMatrix4f,
17
+ 'u_camera_to_center_distance': Uniform1f,
18
+ 'u_pixels_to_tile_units': Uniform1f,
19
+ 'u_extrude_scale': Uniform2f,
20
+ 'u_overscale_factor': Uniform1f
21
+ |};
22
+
23
+ export type CollisionCircleUniformsType = {|
24
+ 'u_matrix': UniformMatrix4f,
25
+ 'u_inv_matrix': UniformMatrix4f,
26
+ 'u_camera_to_center_distance': Uniform1f,
27
+ 'u_viewport_size': Uniform2f
28
+ |};
29
+
30
+ const collisionUniforms = (context: Context, locations: UniformLocations): CollisionUniformsType => ({
31
+ 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),
32
+ 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance),
33
+ 'u_pixels_to_tile_units': new Uniform1f(context, locations.u_pixels_to_tile_units),
34
+ 'u_extrude_scale': new Uniform2f(context, locations.u_extrude_scale),
35
+ 'u_overscale_factor': new Uniform1f(context, locations.u_overscale_factor)
36
+ });
37
+
38
+ const collisionCircleUniforms = (context: Context, locations: UniformLocations): CollisionCircleUniformsType => ({
39
+ 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),
40
+ 'u_inv_matrix': new UniformMatrix4f(context, locations.u_inv_matrix),
41
+ 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance),
42
+ 'u_viewport_size': new Uniform2f(context, locations.u_viewport_size)
43
+ });
44
+
45
+ const collisionUniformValues = (
46
+ matrix: Float32Array,
47
+ transform: Transform,
48
+ tile: Tile
49
+ ): UniformValues<CollisionUniformsType> => {
50
+ const pixelRatio = pixelsToTileUnits(tile, 1, transform.zoom);
51
+ const scale = Math.pow(2, transform.zoom - tile.tileID.overscaledZ);
52
+ const overscaleFactor = tile.tileID.overscaleFactor();
53
+ return {
54
+ 'u_matrix': matrix,
55
+ 'u_camera_to_center_distance': transform.cameraToCenterDistance,
56
+ 'u_pixels_to_tile_units': pixelRatio,
57
+ 'u_extrude_scale': [transform.pixelsToGLUnits[0] / (pixelRatio * scale),
58
+ transform.pixelsToGLUnits[1] / (pixelRatio * scale)],
59
+ 'u_overscale_factor': overscaleFactor
60
+ };
61
+ };
62
+
63
+ const collisionCircleUniformValues = (
64
+ matrix: Float32Array,
65
+ invMatrix: Float32Array,
66
+ transform: Transform
67
+ ): UniformValues<CollisionCircleUniformsType> => {
68
+ return {
69
+ 'u_matrix': matrix,
70
+ 'u_inv_matrix': invMatrix,
71
+ 'u_camera_to_center_distance': transform.cameraToCenterDistance,
72
+ 'u_viewport_size': [transform.width, transform.height]
73
+ };
74
+ };
75
+
76
+ export {collisionUniforms, collisionUniformValues, collisionCircleUniforms, collisionCircleUniformValues};
@@ -0,0 +1,35 @@
1
+ // @flow
2
+
3
+ import {
4
+ UniformColor,
5
+ UniformMatrix4f,
6
+ Uniform1i,
7
+ Uniform1f
8
+ } from '../uniform_binding';
9
+
10
+ import type Context from '../../gl/context';
11
+ import type {UniformValues, UniformLocations} from '../uniform_binding';
12
+ import type Color from '../../style-spec/util/color';
13
+
14
+ export type DebugUniformsType = {|
15
+ 'u_color': UniformColor,
16
+ 'u_matrix': UniformMatrix4f,
17
+ 'u_overlay': Uniform1i,
18
+ 'u_overlay_scale': Uniform1f
19
+ |};
20
+
21
+ const debugUniforms = (context: Context, locations: UniformLocations): DebugUniformsType => ({
22
+ 'u_color': new UniformColor(context, locations.u_color),
23
+ 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),
24
+ 'u_overlay': new Uniform1i(context, locations.u_overlay),
25
+ 'u_overlay_scale': new Uniform1f(context, locations.u_overlay_scale),
26
+ });
27
+
28
+ const debugUniformValues = (matrix: Float32Array, color: Color, scaleRatio: number = 1): UniformValues<DebugUniformsType> => ({
29
+ 'u_matrix': matrix,
30
+ 'u_color': color,
31
+ 'u_overlay': 0,
32
+ 'u_overlay_scale': scaleRatio
33
+ });
34
+
35
+ export {debugUniforms, debugUniformValues};
@@ -0,0 +1,122 @@
1
+ // @flow
2
+
3
+ import {patternUniformValues} from './pattern';
4
+ import {
5
+ Uniform1i,
6
+ Uniform1f,
7
+ Uniform2f,
8
+ Uniform3f,
9
+ UniformMatrix4f
10
+ } from '../uniform_binding';
11
+
12
+ import {mat3, vec3} from 'gl-matrix';
13
+ import {extend} from '../../util/util';
14
+
15
+ import type Context from '../../gl/context';
16
+ import type Painter from '../painter';
17
+ import type {OverscaledTileID} from '../../source/tile_id';
18
+ import type {UniformValues, UniformLocations} from '../uniform_binding';
19
+ import type {CrossfadeParameters} from '../../style/evaluation_parameters';
20
+ import type Tile from '../../source/tile';
21
+
22
+ export type FillExtrusionUniformsType = {|
23
+ 'u_matrix': UniformMatrix4f,
24
+ 'u_lightpos': Uniform3f,
25
+ 'u_lightintensity': Uniform1f,
26
+ 'u_lightcolor': Uniform3f,
27
+ 'u_vertical_gradient': Uniform1f,
28
+ 'u_opacity': Uniform1f
29
+ |};
30
+
31
+ export type FillExtrusionPatternUniformsType = {|
32
+ 'u_matrix': UniformMatrix4f,
33
+ 'u_lightpos': Uniform3f,
34
+ 'u_lightintensity': Uniform1f,
35
+ 'u_lightcolor': Uniform3f,
36
+ 'u_height_factor': Uniform1f,
37
+ 'u_vertical_gradient': Uniform1f,
38
+ // pattern uniforms:
39
+ 'u_texsize': Uniform2f,
40
+ 'u_image': Uniform1i,
41
+ 'u_pixel_coord_upper': Uniform2f,
42
+ 'u_pixel_coord_lower': Uniform2f,
43
+ 'u_scale': Uniform3f,
44
+ 'u_fade': Uniform1f,
45
+ 'u_opacity': Uniform1f
46
+ |};
47
+
48
+ const fillExtrusionUniforms = (context: Context, locations: UniformLocations): FillExtrusionUniformsType => ({
49
+ 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),
50
+ 'u_lightpos': new Uniform3f(context, locations.u_lightpos),
51
+ 'u_lightintensity': new Uniform1f(context, locations.u_lightintensity),
52
+ 'u_lightcolor': new Uniform3f(context, locations.u_lightcolor),
53
+ 'u_vertical_gradient': new Uniform1f(context, locations.u_vertical_gradient),
54
+ 'u_opacity': new Uniform1f(context, locations.u_opacity)
55
+ });
56
+
57
+ const fillExtrusionPatternUniforms = (context: Context, locations: UniformLocations): FillExtrusionPatternUniformsType => ({
58
+ 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),
59
+ 'u_lightpos': new Uniform3f(context, locations.u_lightpos),
60
+ 'u_lightintensity': new Uniform1f(context, locations.u_lightintensity),
61
+ 'u_lightcolor': new Uniform3f(context, locations.u_lightcolor),
62
+ 'u_vertical_gradient': new Uniform1f(context, locations.u_vertical_gradient),
63
+ 'u_height_factor': new Uniform1f(context, locations.u_height_factor),
64
+ // pattern uniforms
65
+ 'u_image': new Uniform1i(context, locations.u_image),
66
+ 'u_texsize': new Uniform2f(context, locations.u_texsize),
67
+ 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper),
68
+ 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower),
69
+ 'u_scale': new Uniform3f(context, locations.u_scale),
70
+ 'u_fade': new Uniform1f(context, locations.u_fade),
71
+ 'u_opacity': new Uniform1f(context, locations.u_opacity)
72
+ });
73
+
74
+ const fillExtrusionUniformValues = (
75
+ matrix: Float32Array,
76
+ painter: Painter,
77
+ shouldUseVerticalGradient: boolean,
78
+ opacity: number
79
+ ): UniformValues<FillExtrusionUniformsType> => {
80
+ const light = painter.style.light;
81
+ const _lp = light.properties.get('position');
82
+ const lightPos = [_lp.x, _lp.y, _lp.z];
83
+ const lightMat = mat3.create();
84
+ if (light.properties.get('anchor') === 'viewport') {
85
+ mat3.fromRotation(lightMat, -painter.transform.angle);
86
+ }
87
+ vec3.transformMat3(lightPos, lightPos, lightMat);
88
+
89
+ const lightColor = light.properties.get('color');
90
+
91
+ return {
92
+ 'u_matrix': matrix,
93
+ 'u_lightpos': lightPos,
94
+ 'u_lightintensity': light.properties.get('intensity'),
95
+ 'u_lightcolor': [lightColor.r, lightColor.g, lightColor.b],
96
+ 'u_vertical_gradient': +shouldUseVerticalGradient,
97
+ 'u_opacity': opacity
98
+ };
99
+ };
100
+
101
+ const fillExtrusionPatternUniformValues = (
102
+ matrix: Float32Array,
103
+ painter: Painter,
104
+ shouldUseVerticalGradient: boolean,
105
+ opacity: number,
106
+ coord: OverscaledTileID,
107
+ crossfade: CrossfadeParameters,
108
+ tile: Tile
109
+ ): UniformValues<FillExtrusionPatternUniformsType> => {
110
+ return extend(fillExtrusionUniformValues(matrix, painter, shouldUseVerticalGradient, opacity),
111
+ patternUniformValues(crossfade, painter, tile),
112
+ {
113
+ 'u_height_factor': -Math.pow(2, coord.overscaledZ) / tile.tileSize / 8
114
+ });
115
+ };
116
+
117
+ export {
118
+ fillExtrusionUniforms,
119
+ fillExtrusionPatternUniforms,
120
+ fillExtrusionUniformValues,
121
+ fillExtrusionPatternUniformValues
122
+ };
@@ -0,0 +1,126 @@
1
+ // @flow
2
+
3
+ import {patternUniformValues} from './pattern';
4
+ import {
5
+ Uniform1i,
6
+ Uniform1f,
7
+ Uniform2f,
8
+ Uniform3f,
9
+ UniformMatrix4f
10
+ } from '../uniform_binding';
11
+ import {extend} from '../../util/util';
12
+
13
+ import type Painter from '../painter';
14
+ import type {UniformValues, UniformLocations} from '../uniform_binding';
15
+ import type Context from '../../gl/context';
16
+ import type {CrossfadeParameters} from '../../style/evaluation_parameters';
17
+ import type Tile from '../../source/tile';
18
+
19
+ export type FillUniformsType = {|
20
+ 'u_matrix': UniformMatrix4f
21
+ |};
22
+
23
+ export type FillOutlineUniformsType = {|
24
+ 'u_matrix': UniformMatrix4f,
25
+ 'u_world': Uniform2f
26
+ |};
27
+
28
+ export type FillPatternUniformsType = {|
29
+ 'u_matrix': UniformMatrix4f,
30
+ // pattern uniforms:
31
+ 'u_texsize': Uniform2f,
32
+ 'u_image': Uniform1i,
33
+ 'u_pixel_coord_upper': Uniform2f,
34
+ 'u_pixel_coord_lower': Uniform2f,
35
+ 'u_scale': Uniform3f,
36
+ 'u_fade': Uniform1f
37
+ |};
38
+
39
+ export type FillOutlinePatternUniformsType = {|
40
+ 'u_matrix': UniformMatrix4f,
41
+ 'u_world': Uniform2f,
42
+ // pattern uniforms:
43
+ 'u_texsize': Uniform2f,
44
+ 'u_image': Uniform1i,
45
+ 'u_pixel_coord_upper': Uniform2f,
46
+ 'u_pixel_coord_lower': Uniform2f,
47
+ 'u_scale': Uniform3f,
48
+ 'u_fade': Uniform1f
49
+ |};
50
+
51
+ const fillUniforms = (context: Context, locations: UniformLocations): FillUniformsType => ({
52
+ 'u_matrix': new UniformMatrix4f(context, locations.u_matrix)
53
+ });
54
+
55
+ const fillPatternUniforms = (context: Context, locations: UniformLocations): FillPatternUniformsType => ({
56
+ 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),
57
+ 'u_image': new Uniform1i(context, locations.u_image),
58
+ 'u_texsize': new Uniform2f(context, locations.u_texsize),
59
+ 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper),
60
+ 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower),
61
+ 'u_scale': new Uniform3f(context, locations.u_scale),
62
+ 'u_fade': new Uniform1f(context, locations.u_fade)
63
+
64
+ });
65
+
66
+ const fillOutlineUniforms = (context: Context, locations: UniformLocations): FillOutlineUniformsType => ({
67
+ 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),
68
+ 'u_world': new Uniform2f(context, locations.u_world)
69
+ });
70
+
71
+ const fillOutlinePatternUniforms = (context: Context, locations: UniformLocations): FillOutlinePatternUniformsType => ({
72
+ 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),
73
+ 'u_world': new Uniform2f(context, locations.u_world),
74
+ 'u_image': new Uniform1i(context, locations.u_image),
75
+ 'u_texsize': new Uniform2f(context, locations.u_texsize),
76
+ 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper),
77
+ 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower),
78
+ 'u_scale': new Uniform3f(context, locations.u_scale),
79
+ 'u_fade': new Uniform1f(context, locations.u_fade)
80
+ });
81
+
82
+ const fillUniformValues = (matrix: Float32Array): UniformValues<FillUniformsType> => ({
83
+ 'u_matrix': matrix
84
+ });
85
+
86
+ const fillPatternUniformValues = (
87
+ matrix: Float32Array,
88
+ painter: Painter,
89
+ crossfade: CrossfadeParameters,
90
+ tile: Tile
91
+ ): UniformValues<FillPatternUniformsType> => extend(
92
+ fillUniformValues(matrix),
93
+ patternUniformValues(crossfade, painter, tile)
94
+ );
95
+
96
+ const fillOutlineUniformValues = (
97
+ matrix: Float32Array,
98
+ drawingBufferSize: [number, number]
99
+ ): UniformValues<FillOutlineUniformsType> => ({
100
+ 'u_matrix': matrix,
101
+ 'u_world': drawingBufferSize
102
+ });
103
+
104
+ const fillOutlinePatternUniformValues = (
105
+ matrix: Float32Array,
106
+ painter: Painter,
107
+ crossfade: CrossfadeParameters,
108
+ tile: Tile,
109
+ drawingBufferSize: [number, number]
110
+ ): UniformValues<FillOutlinePatternUniformsType> => extend(
111
+ fillPatternUniformValues(matrix, painter, crossfade, tile),
112
+ {
113
+ 'u_world': drawingBufferSize
114
+ }
115
+ );
116
+
117
+ export {
118
+ fillUniforms,
119
+ fillPatternUniforms,
120
+ fillOutlineUniforms,
121
+ fillOutlinePatternUniforms,
122
+ fillUniformValues,
123
+ fillPatternUniformValues,
124
+ fillOutlineUniformValues,
125
+ fillOutlinePatternUniformValues
126
+ };
@@ -0,0 +1,83 @@
1
+ // @flow
2
+
3
+ import {mat4} from 'gl-matrix';
4
+
5
+ import {
6
+ Uniform1i,
7
+ Uniform1f,
8
+ Uniform2f,
9
+ UniformMatrix4f
10
+ } from '../uniform_binding';
11
+ import pixelsToTileUnits from '../../source/pixels_to_tile_units';
12
+
13
+ import type Context from '../../gl/context';
14
+ import type Tile from '../../source/tile';
15
+ import type {UniformValues, UniformLocations} from '../uniform_binding';
16
+ import type Painter from '../painter';
17
+ import type HeatmapStyleLayer from '../../style/style_layer/heatmap_style_layer';
18
+
19
+ export type HeatmapUniformsType = {|
20
+ 'u_extrude_scale': Uniform1f,
21
+ 'u_intensity': Uniform1f,
22
+ 'u_matrix': UniformMatrix4f
23
+ |};
24
+
25
+ export type HeatmapTextureUniformsType = {|
26
+ 'u_matrix': UniformMatrix4f,
27
+ 'u_world': Uniform2f,
28
+ 'u_image': Uniform1i,
29
+ 'u_color_ramp': Uniform1i,
30
+ 'u_opacity': Uniform1f
31
+ |};
32
+
33
+ const heatmapUniforms = (context: Context, locations: UniformLocations): HeatmapUniformsType => ({
34
+ 'u_extrude_scale': new Uniform1f(context, locations.u_extrude_scale),
35
+ 'u_intensity': new Uniform1f(context, locations.u_intensity),
36
+ 'u_matrix': new UniformMatrix4f(context, locations.u_matrix)
37
+ });
38
+
39
+ const heatmapTextureUniforms = (context: Context, locations: UniformLocations): HeatmapTextureUniformsType => ({
40
+ 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),
41
+ 'u_world': new Uniform2f(context, locations.u_world),
42
+ 'u_image': new Uniform1i(context, locations.u_image),
43
+ 'u_color_ramp': new Uniform1i(context, locations.u_color_ramp),
44
+ 'u_opacity': new Uniform1f(context, locations.u_opacity)
45
+ });
46
+
47
+ const heatmapUniformValues = (
48
+ matrix: Float32Array,
49
+ tile: Tile,
50
+ zoom: number,
51
+ intensity: number
52
+ ): UniformValues<HeatmapUniformsType> => ({
53
+ 'u_matrix': matrix,
54
+ 'u_extrude_scale': pixelsToTileUnits(tile, 1, zoom),
55
+ 'u_intensity': intensity
56
+ });
57
+
58
+ const heatmapTextureUniformValues = (
59
+ painter: Painter,
60
+ layer: HeatmapStyleLayer,
61
+ textureUnit: number,
62
+ colorRampUnit: number
63
+ ): UniformValues<HeatmapTextureUniformsType> => {
64
+ const matrix = mat4.create();
65
+ mat4.ortho(matrix, 0, painter.width, painter.height, 0, 0, 1);
66
+
67
+ const gl = painter.context.gl;
68
+
69
+ return {
70
+ 'u_matrix': matrix,
71
+ 'u_world': [gl.drawingBufferWidth, gl.drawingBufferHeight],
72
+ 'u_image': textureUnit,
73
+ 'u_color_ramp': colorRampUnit,
74
+ 'u_opacity': layer.paint.get('heatmap-opacity')
75
+ };
76
+ };
77
+
78
+ export {
79
+ heatmapUniforms,
80
+ heatmapTextureUniforms,
81
+ heatmapUniformValues,
82
+ heatmapTextureUniformValues
83
+ };