ol 7.3.0 → 7.3.1-dev

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 (535) hide show
  1. package/Collection.d.ts +2 -2
  2. package/Collection.d.ts.map +1 -1
  3. package/DataTile.d.ts +1 -1
  4. package/DataTile.d.ts.map +1 -1
  5. package/DataTile.js +2 -1
  6. package/Feature.d.ts +1 -1
  7. package/Feature.d.ts.map +1 -1
  8. package/Geolocation.d.ts +2 -2
  9. package/Geolocation.d.ts.map +1 -1
  10. package/Image.d.ts +1 -1
  11. package/Image.d.ts.map +1 -1
  12. package/ImageBase.d.ts +1 -1
  13. package/ImageBase.d.ts.map +1 -1
  14. package/ImageCanvas.d.ts +1 -1
  15. package/ImageCanvas.d.ts.map +1 -1
  16. package/ImageTile.d.ts +1 -1
  17. package/ImageTile.d.ts.map +1 -1
  18. package/Map.d.ts +7 -7
  19. package/Map.d.ts.map +1 -1
  20. package/Map.js +2 -1
  21. package/MapBrowserEvent.d.ts +1 -1
  22. package/MapBrowserEvent.d.ts.map +1 -1
  23. package/MapBrowserEventHandler.d.ts +1 -1
  24. package/MapBrowserEventHandler.d.ts.map +1 -1
  25. package/MapEvent.d.ts +1 -1
  26. package/MapEvent.d.ts.map +1 -1
  27. package/Object.d.ts +2 -2
  28. package/Object.d.ts.map +1 -1
  29. package/Observable.d.ts +1 -1
  30. package/Observable.d.ts.map +1 -1
  31. package/Overlay.d.ts +1 -1
  32. package/Overlay.d.ts.map +1 -1
  33. package/Tile.d.ts +1 -1
  34. package/Tile.d.ts.map +1 -1
  35. package/TileCache.d.ts +1 -1
  36. package/TileCache.d.ts.map +1 -1
  37. package/TileQueue.d.ts +1 -1
  38. package/TileQueue.d.ts.map +1 -1
  39. package/VectorRenderTile.d.ts +1 -1
  40. package/VectorRenderTile.d.ts.map +1 -1
  41. package/VectorTile.d.ts +1 -1
  42. package/VectorTile.d.ts.map +1 -1
  43. package/View.d.ts +10 -6
  44. package/View.d.ts.map +1 -1
  45. package/View.js +9 -6
  46. package/array.d.ts.map +1 -1
  47. package/array.js +38 -20
  48. package/control/Attribution.d.ts +1 -1
  49. package/control/Attribution.d.ts.map +1 -1
  50. package/control/Control.d.ts +1 -1
  51. package/control/Control.d.ts.map +1 -1
  52. package/control/FullScreen.d.ts +1 -1
  53. package/control/FullScreen.d.ts.map +1 -1
  54. package/control/MousePosition.d.ts +1 -1
  55. package/control/MousePosition.d.ts.map +1 -1
  56. package/control/OverviewMap.d.ts +3 -3
  57. package/control/OverviewMap.d.ts.map +1 -1
  58. package/control/Rotate.d.ts +1 -1
  59. package/control/Rotate.d.ts.map +1 -1
  60. package/control/ScaleLine.d.ts +1 -1
  61. package/control/ScaleLine.d.ts.map +1 -1
  62. package/control/Zoom.d.ts +1 -1
  63. package/control/Zoom.d.ts.map +1 -1
  64. package/control/ZoomSlider.d.ts +1 -1
  65. package/control/ZoomSlider.d.ts.map +1 -1
  66. package/control/ZoomToExtent.d.ts +1 -1
  67. package/control/ZoomToExtent.d.ts.map +1 -1
  68. package/control/defaults.d.ts +1 -1
  69. package/control/defaults.d.ts.map +1 -1
  70. package/dist/ol.js +2 -2
  71. package/dist/ol.js.map +1 -1
  72. package/events/Key.d.ts +8 -0
  73. package/events/Key.d.ts.map +1 -0
  74. package/events/Key.js +14 -0
  75. package/events/Target.d.ts +1 -1
  76. package/events/Target.d.ts.map +1 -1
  77. package/events/condition.d.ts +2 -2
  78. package/events/condition.d.ts.map +1 -1
  79. package/extent.d.ts.map +1 -1
  80. package/extent.js +7 -2
  81. package/format/EsriJSON.d.ts +1 -1
  82. package/format/EsriJSON.d.ts.map +1 -1
  83. package/format/GML.d.ts +1 -1
  84. package/format/GML.d.ts.map +1 -1
  85. package/format/GML2.d.ts +1 -1
  86. package/format/GML2.d.ts.map +1 -1
  87. package/format/GML3.d.ts +5 -5
  88. package/format/GML3.d.ts.map +1 -1
  89. package/format/GML32.d.ts +1 -1
  90. package/format/GML32.d.ts.map +1 -1
  91. package/format/GMLBase.d.ts +9 -9
  92. package/format/GMLBase.d.ts.map +1 -1
  93. package/format/GPX.d.ts +2 -2
  94. package/format/GPX.d.ts.map +1 -1
  95. package/format/GeoJSON.d.ts +1 -1
  96. package/format/GeoJSON.d.ts.map +1 -1
  97. package/format/IGC.d.ts +1 -1
  98. package/format/IGC.d.ts.map +1 -1
  99. package/format/IIIFInfo.d.ts +8 -8
  100. package/format/IIIFInfo.d.ts.map +1 -1
  101. package/format/IIIFInfo.js +10 -9
  102. package/format/JSONFeature.d.ts +1 -1
  103. package/format/JSONFeature.d.ts.map +1 -1
  104. package/format/JSONFeature.js +2 -1
  105. package/format/KML.d.ts +121 -5
  106. package/format/KML.d.ts.map +1 -1
  107. package/format/KML.js +105 -7
  108. package/format/MVT.d.ts +2 -2
  109. package/format/MVT.d.ts.map +1 -1
  110. package/format/OSMXML.d.ts +1 -1
  111. package/format/OSMXML.d.ts.map +1 -1
  112. package/format/OSMXML.js +11 -4
  113. package/format/OWS.d.ts +1 -1
  114. package/format/OWS.d.ts.map +1 -1
  115. package/format/Polyline.d.ts +2 -2
  116. package/format/Polyline.d.ts.map +1 -1
  117. package/format/TextFeature.d.ts +1 -1
  118. package/format/TextFeature.d.ts.map +1 -1
  119. package/format/TopoJSON.d.ts +1 -1
  120. package/format/TopoJSON.d.ts.map +1 -1
  121. package/format/WFS.d.ts +2 -2
  122. package/format/WFS.d.ts.map +1 -1
  123. package/format/WFS.js +8 -4
  124. package/format/WKB.d.ts +1 -1
  125. package/format/WKB.d.ts.map +1 -1
  126. package/format/WKB.js +6 -4
  127. package/format/WKT.d.ts +1 -1
  128. package/format/WKT.d.ts.map +1 -1
  129. package/format/WMSCapabilities.d.ts +1 -1
  130. package/format/WMSCapabilities.d.ts.map +1 -1
  131. package/format/WMSGetFeatureInfo.d.ts +1 -1
  132. package/format/WMSGetFeatureInfo.d.ts.map +1 -1
  133. package/format/WMTSCapabilities.d.ts +1 -1
  134. package/format/WMTSCapabilities.d.ts.map +1 -1
  135. package/format/XML.d.ts.map +1 -1
  136. package/format/XML.js +4 -2
  137. package/format/XMLFeature.d.ts +1 -1
  138. package/format/XMLFeature.d.ts.map +1 -1
  139. package/format/XMLFeature.js +16 -8
  140. package/format/filter/And.d.ts +1 -1
  141. package/format/filter/And.d.ts.map +1 -1
  142. package/format/filter/Bbox.d.ts +1 -1
  143. package/format/filter/Bbox.d.ts.map +1 -1
  144. package/format/filter/Comparison.d.ts +1 -1
  145. package/format/filter/Comparison.d.ts.map +1 -1
  146. package/format/filter/ComparisonBinary.d.ts +1 -1
  147. package/format/filter/ComparisonBinary.d.ts.map +1 -1
  148. package/format/filter/Contains.d.ts +1 -1
  149. package/format/filter/Contains.d.ts.map +1 -1
  150. package/format/filter/DWithin.d.ts +1 -1
  151. package/format/filter/DWithin.d.ts.map +1 -1
  152. package/format/filter/Disjoint.d.ts +1 -1
  153. package/format/filter/Disjoint.d.ts.map +1 -1
  154. package/format/filter/During.d.ts +1 -1
  155. package/format/filter/During.d.ts.map +1 -1
  156. package/format/filter/EqualTo.d.ts +1 -1
  157. package/format/filter/EqualTo.d.ts.map +1 -1
  158. package/format/filter/GreaterThan.d.ts +1 -1
  159. package/format/filter/GreaterThan.d.ts.map +1 -1
  160. package/format/filter/GreaterThanOrEqualTo.d.ts +1 -1
  161. package/format/filter/GreaterThanOrEqualTo.d.ts.map +1 -1
  162. package/format/filter/Intersects.d.ts +1 -1
  163. package/format/filter/Intersects.d.ts.map +1 -1
  164. package/format/filter/IsBetween.d.ts +1 -1
  165. package/format/filter/IsBetween.d.ts.map +1 -1
  166. package/format/filter/IsLike.d.ts +1 -1
  167. package/format/filter/IsLike.d.ts.map +1 -1
  168. package/format/filter/IsNull.d.ts +1 -1
  169. package/format/filter/IsNull.d.ts.map +1 -1
  170. package/format/filter/LessThan.d.ts +1 -1
  171. package/format/filter/LessThan.d.ts.map +1 -1
  172. package/format/filter/LessThanOrEqualTo.d.ts +1 -1
  173. package/format/filter/LessThanOrEqualTo.d.ts.map +1 -1
  174. package/format/filter/LogicalNary.d.ts +1 -1
  175. package/format/filter/LogicalNary.d.ts.map +1 -1
  176. package/format/filter/Not.d.ts +1 -1
  177. package/format/filter/Not.d.ts.map +1 -1
  178. package/format/filter/NotEqualTo.d.ts +1 -1
  179. package/format/filter/NotEqualTo.d.ts.map +1 -1
  180. package/format/filter/Or.d.ts +2 -2
  181. package/format/filter/Or.d.ts.map +1 -1
  182. package/format/filter/Or.js +1 -1
  183. package/format/filter/ResourceId.d.ts +1 -1
  184. package/format/filter/ResourceId.d.ts.map +1 -1
  185. package/format/filter/Spatial.d.ts +1 -1
  186. package/format/filter/Spatial.d.ts.map +1 -1
  187. package/format/filter/Within.d.ts +1 -1
  188. package/format/filter/Within.d.ts.map +1 -1
  189. package/format/filter.d.ts +20 -20
  190. package/format/filter.d.ts.map +1 -1
  191. package/geom/Circle.d.ts +1 -1
  192. package/geom/Circle.d.ts.map +1 -1
  193. package/geom/Circle.js +1 -17
  194. package/geom/Geometry.d.ts +1 -1
  195. package/geom/Geometry.d.ts.map +1 -1
  196. package/geom/GeometryCollection.d.ts +1 -1
  197. package/geom/GeometryCollection.d.ts.map +1 -1
  198. package/geom/LineString.d.ts +1 -1
  199. package/geom/LineString.d.ts.map +1 -1
  200. package/geom/LinearRing.d.ts +1 -1
  201. package/geom/LinearRing.d.ts.map +1 -1
  202. package/geom/MultiLineString.d.ts +2 -2
  203. package/geom/MultiLineString.d.ts.map +1 -1
  204. package/geom/MultiPoint.d.ts +2 -2
  205. package/geom/MultiPoint.d.ts.map +1 -1
  206. package/geom/MultiPolygon.d.ts +3 -3
  207. package/geom/MultiPolygon.d.ts.map +1 -1
  208. package/geom/Point.d.ts +1 -1
  209. package/geom/Point.d.ts.map +1 -1
  210. package/geom/Polygon.d.ts +3 -3
  211. package/geom/Polygon.d.ts.map +1 -1
  212. package/geom/SimpleGeometry.d.ts +1 -1
  213. package/geom/SimpleGeometry.d.ts.map +1 -1
  214. package/geom/flat/interpolate.d.ts.map +1 -1
  215. package/geom/flat/interpolate.js +4 -2
  216. package/geom/flat/orient.d.ts +1 -1
  217. package/geom/flat/orient.js +1 -1
  218. package/interaction/DblClickDragZoom.d.ts +110 -0
  219. package/interaction/DblClickDragZoom.d.ts.map +1 -0
  220. package/interaction/DblClickDragZoom.js +251 -0
  221. package/interaction/DoubleClickZoom.d.ts +1 -1
  222. package/interaction/DoubleClickZoom.d.ts.map +1 -1
  223. package/interaction/DragAndDrop.d.ts +2 -2
  224. package/interaction/DragAndDrop.d.ts.map +1 -1
  225. package/interaction/DragBox.d.ts +2 -2
  226. package/interaction/DragBox.d.ts.map +1 -1
  227. package/interaction/DragPan.d.ts +1 -1
  228. package/interaction/DragPan.d.ts.map +1 -1
  229. package/interaction/DragRotate.d.ts +1 -1
  230. package/interaction/DragRotate.d.ts.map +1 -1
  231. package/interaction/DragRotateAndZoom.d.ts +1 -1
  232. package/interaction/DragRotateAndZoom.d.ts.map +1 -1
  233. package/interaction/DragZoom.d.ts +1 -1
  234. package/interaction/DragZoom.d.ts.map +1 -1
  235. package/interaction/Draw.d.ts +6 -6
  236. package/interaction/Draw.d.ts.map +1 -1
  237. package/interaction/Extent.d.ts +2 -2
  238. package/interaction/Extent.d.ts.map +1 -1
  239. package/interaction/Extent.js +2 -1
  240. package/interaction/Interaction.d.ts +1 -1
  241. package/interaction/Interaction.d.ts.map +1 -1
  242. package/interaction/KeyboardPan.d.ts +1 -1
  243. package/interaction/KeyboardPan.d.ts.map +1 -1
  244. package/interaction/KeyboardPan.js +9 -9
  245. package/interaction/KeyboardZoom.d.ts +1 -1
  246. package/interaction/KeyboardZoom.d.ts.map +1 -1
  247. package/interaction/Link.d.ts +1 -1
  248. package/interaction/Link.d.ts.map +1 -1
  249. package/interaction/Modify.d.ts +6 -6
  250. package/interaction/Modify.d.ts.map +1 -1
  251. package/interaction/Modify.js +6 -1
  252. package/interaction/MouseWheelZoom.d.ts +1 -1
  253. package/interaction/MouseWheelZoom.d.ts.map +1 -1
  254. package/interaction/PinchRotate.d.ts +1 -1
  255. package/interaction/PinchRotate.d.ts.map +1 -1
  256. package/interaction/PinchZoom.d.ts +1 -1
  257. package/interaction/PinchZoom.d.ts.map +1 -1
  258. package/interaction/Pointer.d.ts +1 -1
  259. package/interaction/Pointer.d.ts.map +1 -1
  260. package/interaction/Select.d.ts +5 -5
  261. package/interaction/Select.d.ts.map +1 -1
  262. package/interaction/Snap.d.ts +1 -1
  263. package/interaction/Snap.d.ts.map +1 -1
  264. package/interaction/Snap.js +10 -4
  265. package/interaction/Translate.d.ts +4 -4
  266. package/interaction/Translate.d.ts.map +1 -1
  267. package/interaction/Translate.js +18 -3
  268. package/interaction/defaults.d.ts +1 -1
  269. package/interaction/defaults.d.ts.map +1 -1
  270. package/interaction.d.ts +1 -0
  271. package/interaction.js +1 -0
  272. package/layer/Base.d.ts +4 -3
  273. package/layer/Base.d.ts.map +1 -1
  274. package/layer/Base.js +3 -2
  275. package/layer/BaseImage.d.ts +1 -1
  276. package/layer/BaseImage.d.ts.map +1 -1
  277. package/layer/BaseTile.d.ts +1 -1
  278. package/layer/BaseTile.d.ts.map +1 -1
  279. package/layer/BaseVector.d.ts +10 -4
  280. package/layer/BaseVector.d.ts.map +1 -1
  281. package/layer/BaseVector.js +9 -3
  282. package/layer/Graticule.d.ts +6 -6
  283. package/layer/Graticule.d.ts.map +1 -1
  284. package/layer/Group.d.ts +4 -4
  285. package/layer/Group.d.ts.map +1 -1
  286. package/layer/Heatmap.d.ts +2 -2
  287. package/layer/Heatmap.d.ts.map +1 -1
  288. package/layer/Image.d.ts +2 -2
  289. package/layer/Image.d.ts.map +1 -1
  290. package/layer/Layer.d.ts +14 -11
  291. package/layer/Layer.d.ts.map +1 -1
  292. package/layer/Layer.js +28 -8
  293. package/layer/MapboxVector.d.ts +1 -1
  294. package/layer/MapboxVector.d.ts.map +1 -1
  295. package/layer/Tile.d.ts +2 -2
  296. package/layer/Tile.d.ts.map +1 -1
  297. package/layer/Vector.d.ts +2 -2
  298. package/layer/Vector.d.ts.map +1 -1
  299. package/layer/VectorImage.d.ts +2 -2
  300. package/layer/VectorImage.d.ts.map +1 -1
  301. package/layer/VectorTile.d.ts +2 -2
  302. package/layer/VectorTile.d.ts.map +1 -1
  303. package/layer/WebGLPoints.d.ts +4 -4
  304. package/layer/WebGLPoints.d.ts.map +1 -1
  305. package/layer/WebGLPoints.js +13 -4
  306. package/layer/WebGLTile.d.ts +9 -2
  307. package/layer/WebGLTile.d.ts.map +1 -1
  308. package/layer/WebGLTile.js +6 -6
  309. package/package.json +2 -2
  310. package/proj/proj4.d.ts +2 -2
  311. package/proj/proj4.d.ts.map +1 -1
  312. package/proj/proj4.js +1 -1
  313. package/proj.d.ts +9 -9
  314. package/proj.d.ts.map +1 -1
  315. package/proj.js +9 -8
  316. package/render/Box.d.ts +1 -1
  317. package/render/Box.d.ts.map +1 -1
  318. package/render/Event.d.ts +1 -1
  319. package/render/Event.d.ts.map +1 -1
  320. package/render/Feature.d.ts +7 -7
  321. package/render/Feature.d.ts.map +1 -1
  322. package/render/canvas/Builder.d.ts +1 -1
  323. package/render/canvas/Builder.d.ts.map +1 -1
  324. package/render/canvas/ImageBuilder.d.ts +1 -1
  325. package/render/canvas/ImageBuilder.d.ts.map +1 -1
  326. package/render/canvas/Immediate.d.ts +1 -1
  327. package/render/canvas/Immediate.d.ts.map +1 -1
  328. package/render/canvas/Immediate.js +9 -1
  329. package/render/canvas/LineStringBuilder.d.ts +1 -1
  330. package/render/canvas/LineStringBuilder.d.ts.map +1 -1
  331. package/render/canvas/PolygonBuilder.d.ts +1 -1
  332. package/render/canvas/PolygonBuilder.d.ts.map +1 -1
  333. package/render/canvas/TextBuilder.d.ts +1 -1
  334. package/render/canvas/TextBuilder.d.ts.map +1 -1
  335. package/render/canvas.d.ts +1 -1
  336. package/render/canvas.d.ts.map +1 -1
  337. package/render/webgl/MixedGeometryBatch.d.ts +37 -131
  338. package/render/webgl/MixedGeometryBatch.d.ts.map +1 -1
  339. package/render/webgl/MixedGeometryBatch.js +230 -147
  340. package/render/webgl/VectorStyleRenderer.d.ts +256 -0
  341. package/render/webgl/VectorStyleRenderer.d.ts.map +1 -0
  342. package/render/webgl/VectorStyleRenderer.js +440 -0
  343. package/render/webgl/constants.d.ts +1 -1
  344. package/render/webgl/constants.js +1 -1
  345. package/render/webgl/renderinstructions.d.ts +36 -0
  346. package/render/webgl/renderinstructions.d.ts.map +1 -0
  347. package/render/webgl/renderinstructions.js +241 -0
  348. package/render/webgl/utils.d.ts +4 -4
  349. package/render/webgl/utils.d.ts.map +1 -1
  350. package/render/webgl/utils.js +9 -9
  351. package/render.d.ts +1 -1
  352. package/render.d.ts.map +1 -1
  353. package/renderer/Composite.d.ts +1 -1
  354. package/renderer/Composite.d.ts.map +1 -1
  355. package/renderer/Layer.d.ts +1 -1
  356. package/renderer/Layer.d.ts.map +1 -1
  357. package/renderer/Map.d.ts +1 -1
  358. package/renderer/Map.d.ts.map +1 -1
  359. package/renderer/canvas/ImageLayer.d.ts +1 -1
  360. package/renderer/canvas/ImageLayer.d.ts.map +1 -1
  361. package/renderer/canvas/Layer.d.ts +1 -1
  362. package/renderer/canvas/Layer.d.ts.map +1 -1
  363. package/renderer/canvas/TileLayer.d.ts +1 -1
  364. package/renderer/canvas/TileLayer.d.ts.map +1 -1
  365. package/renderer/canvas/VectorImageLayer.d.ts +1 -1
  366. package/renderer/canvas/VectorImageLayer.d.ts.map +1 -1
  367. package/renderer/canvas/VectorLayer.d.ts +3 -3
  368. package/renderer/canvas/VectorLayer.d.ts.map +1 -1
  369. package/renderer/canvas/VectorTileLayer.d.ts +2 -2
  370. package/renderer/canvas/VectorTileLayer.d.ts.map +1 -1
  371. package/renderer/webgl/Layer.d.ts +2 -2
  372. package/renderer/webgl/Layer.d.ts.map +1 -1
  373. package/renderer/webgl/PointsLayer.d.ts +3 -3
  374. package/renderer/webgl/PointsLayer.d.ts.map +1 -1
  375. package/renderer/webgl/PointsLayer.js +5 -8
  376. package/renderer/webgl/TileLayer.d.ts +32 -99
  377. package/renderer/webgl/TileLayer.d.ts.map +1 -1
  378. package/renderer/webgl/TileLayer.js +103 -644
  379. package/renderer/webgl/TileLayerBase.d.ts +194 -0
  380. package/renderer/webgl/TileLayerBase.d.ts.map +1 -0
  381. package/renderer/webgl/TileLayerBase.js +750 -0
  382. package/renderer/webgl/VectorLayer.d.ts +59 -60
  383. package/renderer/webgl/VectorLayer.d.ts.map +1 -1
  384. package/renderer/webgl/VectorLayer.js +118 -156
  385. package/renderer/webgl/VectorTileLayer.d.ts +87 -0
  386. package/renderer/webgl/VectorTileLayer.d.ts.map +1 -0
  387. package/renderer/webgl/VectorTileLayer.js +201 -0
  388. package/reproj/DataTile.d.ts +1 -1
  389. package/reproj/DataTile.d.ts.map +1 -1
  390. package/reproj/Image.d.ts +1 -1
  391. package/reproj/Image.d.ts.map +1 -1
  392. package/reproj/Image.js +22 -8
  393. package/reproj/Tile.d.ts +1 -1
  394. package/reproj/Tile.d.ts.map +1 -1
  395. package/reproj/Triangulation.js +2 -2
  396. package/source/BingMaps.d.ts +1 -1
  397. package/source/BingMaps.d.ts.map +1 -1
  398. package/source/CartoDB.d.ts +1 -1
  399. package/source/CartoDB.d.ts.map +1 -1
  400. package/source/Cluster.d.ts +3 -3
  401. package/source/Cluster.d.ts.map +1 -1
  402. package/source/DataTile.d.ts +4 -4
  403. package/source/DataTile.d.ts.map +1 -1
  404. package/source/DataTile.js +1 -1
  405. package/source/GeoTIFF.d.ts +1 -1
  406. package/source/GeoTIFF.d.ts.map +1 -1
  407. package/source/IIIF.d.ts +1 -1
  408. package/source/IIIF.d.ts.map +1 -1
  409. package/source/Image.d.ts +2 -2
  410. package/source/Image.d.ts.map +1 -1
  411. package/source/ImageArcGISRest.d.ts +1 -1
  412. package/source/ImageArcGISRest.d.ts.map +1 -1
  413. package/source/ImageCanvas.d.ts +1 -1
  414. package/source/ImageCanvas.d.ts.map +1 -1
  415. package/source/ImageMapGuide.d.ts +1 -1
  416. package/source/ImageMapGuide.d.ts.map +1 -1
  417. package/source/ImageStatic.d.ts +1 -1
  418. package/source/ImageStatic.d.ts.map +1 -1
  419. package/source/ImageWMS.d.ts +1 -1
  420. package/source/ImageWMS.d.ts.map +1 -1
  421. package/source/OGCMapTile.d.ts +1 -1
  422. package/source/OGCMapTile.d.ts.map +1 -1
  423. package/source/OGCVectorTile.d.ts +1 -1
  424. package/source/OGCVectorTile.d.ts.map +1 -1
  425. package/source/OSM.d.ts +1 -1
  426. package/source/OSM.d.ts.map +1 -1
  427. package/source/Raster.d.ts +3 -3
  428. package/source/Raster.d.ts.map +1 -1
  429. package/source/Source.d.ts +5 -5
  430. package/source/Source.d.ts.map +1 -1
  431. package/source/Source.js +2 -2
  432. package/source/Stamen.d.ts +1 -1
  433. package/source/Stamen.d.ts.map +1 -1
  434. package/source/Tile.d.ts +2 -2
  435. package/source/Tile.d.ts.map +1 -1
  436. package/source/TileArcGISRest.d.ts +1 -1
  437. package/source/TileArcGISRest.d.ts.map +1 -1
  438. package/source/TileDebug.d.ts +1 -1
  439. package/source/TileDebug.d.ts.map +1 -1
  440. package/source/TileImage.d.ts +4 -4
  441. package/source/TileImage.d.ts.map +1 -1
  442. package/source/TileJSON.d.ts +1 -1
  443. package/source/TileJSON.d.ts.map +1 -1
  444. package/source/TileWMS.d.ts +1 -1
  445. package/source/TileWMS.d.ts.map +1 -1
  446. package/source/UTFGrid.d.ts +2 -2
  447. package/source/UTFGrid.d.ts.map +1 -1
  448. package/source/UrlTile.d.ts +1 -1
  449. package/source/UrlTile.d.ts.map +1 -1
  450. package/source/Vector.d.ts +3 -3
  451. package/source/Vector.d.ts.map +1 -1
  452. package/source/Vector.js +6 -3
  453. package/source/VectorTile.d.ts +4 -4
  454. package/source/VectorTile.d.ts.map +1 -1
  455. package/source/WMTS.d.ts +1 -1
  456. package/source/WMTS.d.ts.map +1 -1
  457. package/source/XYZ.d.ts +1 -1
  458. package/source/XYZ.d.ts.map +1 -1
  459. package/source/Zoomify.d.ts +2 -2
  460. package/source/Zoomify.d.ts.map +1 -1
  461. package/structs/LRUCache.d.ts.map +1 -1
  462. package/structs/LRUCache.js +2 -1
  463. package/style/Circle.d.ts +1 -1
  464. package/style/Circle.d.ts.map +1 -1
  465. package/style/Icon.d.ts +4 -78
  466. package/style/Icon.d.ts.map +1 -1
  467. package/style/Icon.js +89 -86
  468. package/style/IconImage.d.ts +1 -1
  469. package/style/IconImage.d.ts.map +1 -1
  470. package/style/RegularShape.d.ts +1 -1
  471. package/style/RegularShape.d.ts.map +1 -1
  472. package/style/RegularShape.js +1 -1
  473. package/style/Style.d.ts +2 -2
  474. package/style/Style.d.ts.map +1 -1
  475. package/style/Text.d.ts +5 -5
  476. package/style/Text.d.ts.map +1 -1
  477. package/style/Text.js +2 -2
  478. package/style/expressions.d.ts +42 -17
  479. package/style/expressions.d.ts.map +1 -1
  480. package/style/expressions.js +258 -118
  481. package/style/flat.d.ts +14 -0
  482. package/style/flat.d.ts.map +1 -1
  483. package/style/flat.js +6 -0
  484. package/style/literal.d.ts +204 -3
  485. package/style/literal.d.ts.map +1 -1
  486. package/style/literal.js +106 -3
  487. package/tilegrid/TileGrid.d.ts +1 -9
  488. package/tilegrid/TileGrid.d.ts.map +1 -1
  489. package/tilegrid/TileGrid.js +0 -18
  490. package/tilegrid/WMTS.d.ts +1 -1
  491. package/tilegrid/WMTS.d.ts.map +1 -1
  492. package/tilegrid.d.ts +1 -1
  493. package/tilegrid.d.ts.map +1 -1
  494. package/util.d.ts.map +1 -1
  495. package/util.js +1 -1
  496. package/webgl/BaseTileRepresentation.d.ts +72 -0
  497. package/webgl/BaseTileRepresentation.d.ts.map +1 -0
  498. package/webgl/BaseTileRepresentation.js +108 -0
  499. package/webgl/Buffer.d.ts +9 -6
  500. package/webgl/Buffer.d.ts.map +1 -1
  501. package/webgl/Buffer.js +6 -0
  502. package/webgl/Helper.d.ts +19 -12
  503. package/webgl/Helper.d.ts.map +1 -1
  504. package/webgl/Helper.js +79 -71
  505. package/webgl/ShaderBuilder.d.ts +75 -65
  506. package/webgl/ShaderBuilder.d.ts.map +1 -1
  507. package/webgl/ShaderBuilder.js +382 -241
  508. package/webgl/TileGeometry.d.ts +29 -0
  509. package/webgl/TileGeometry.d.ts.map +1 -0
  510. package/webgl/TileGeometry.js +73 -0
  511. package/webgl/TileTexture.d.ts +8 -51
  512. package/webgl/TileTexture.d.ts.map +1 -1
  513. package/webgl/TileTexture.js +11 -62
  514. package/webgl/styleparser.d.ts +61 -0
  515. package/webgl/styleparser.d.ts.map +1 -0
  516. package/webgl/styleparser.js +406 -0
  517. package/worker/webgl.js +1 -1
  518. package/events/KeyCode.d.ts +0 -8
  519. package/events/KeyCode.d.ts.map +0 -1
  520. package/events/KeyCode.js +0 -14
  521. package/render/webgl/BatchRenderer.d.ts +0 -92
  522. package/render/webgl/BatchRenderer.d.ts.map +0 -1
  523. package/render/webgl/BatchRenderer.js +0 -200
  524. package/render/webgl/LineStringBatchRenderer.d.ts +0 -27
  525. package/render/webgl/LineStringBatchRenderer.d.ts.map +0 -1
  526. package/render/webgl/LineStringBatchRenderer.js +0 -114
  527. package/render/webgl/PointBatchRenderer.d.ts +0 -26
  528. package/render/webgl/PointBatchRenderer.d.ts.map +0 -1
  529. package/render/webgl/PointBatchRenderer.js +0 -95
  530. package/render/webgl/PolygonBatchRenderer.d.ts +0 -25
  531. package/render/webgl/PolygonBatchRenderer.d.ts.map +0 -1
  532. package/render/webgl/PolygonBatchRenderer.js +0 -115
  533. package/renderer/webgl/shaders.d.ts +0 -43
  534. package/renderer/webgl/shaders.d.ts.map +0 -1
  535. package/renderer/webgl/shaders.js +0 -198
@@ -0,0 +1,256 @@
1
+ /**
2
+ * Names of attributes made available to the vertex shader.
3
+ * Please note: changing these *will* break custom shaders!
4
+ */
5
+ export type Attributes = string;
6
+ export namespace Attributes {
7
+ const POSITION: string;
8
+ const INDEX: string;
9
+ const SEGMENT_START: string;
10
+ const SEGMENT_END: string;
11
+ const PARAMETERS: string;
12
+ }
13
+ export default VectorStyleRenderer;
14
+ /**
15
+ * A description of a custom attribute to be passed on to the GPU, with a value different
16
+ * for each feature.
17
+ */
18
+ export type AttributeDefinition = {
19
+ /**
20
+ * Amount of numerical values composing the attribute, either 1, 2, 3 or 4; in case size is > 1, the return value
21
+ * of the callback should be an array; if unspecified, assumed to be a single float value
22
+ */
23
+ size?: number | undefined;
24
+ /**
25
+ * This callback computes the numerical value of the
26
+ * attribute for a given feature.
27
+ */
28
+ callback: (arg0: import("../../Feature").FeatureLike) => number | Array<number>;
29
+ };
30
+ export type AttributeDefinitions = {
31
+ [x: string]: AttributeDefinition;
32
+ };
33
+ export type UniformDefinitions = {
34
+ [x: string]: import("../../webgl/Helper").UniformValue;
35
+ };
36
+ export type WebGLBuffers = {
37
+ /**
38
+ * Polygon indices buffer
39
+ */
40
+ polygonIndicesBuffer: WebGLArrayBuffer;
41
+ /**
42
+ * Polygon vertices buffer
43
+ */
44
+ polygonVerticesBuffer: WebGLArrayBuffer;
45
+ /**
46
+ * LineString indices buffer
47
+ */
48
+ lineStringIndicesBuffer: WebGLArrayBuffer;
49
+ /**
50
+ * LineString vertices buffer
51
+ */
52
+ lineStringVerticesBuffer: WebGLArrayBuffer;
53
+ /**
54
+ * Point indices buffer
55
+ */
56
+ pointIndicesBuffer: WebGLArrayBuffer;
57
+ /**
58
+ * Point vertices buffer
59
+ */
60
+ pointVerticesBuffer: WebGLArrayBuffer;
61
+ /**
62
+ * Inverse of the transform applied when generating buffers
63
+ */
64
+ invertVerticesTransform: import("../../transform.js").Transform;
65
+ };
66
+ export type RenderInstructions = {
67
+ /**
68
+ * Polygon instructions
69
+ */
70
+ polygonInstructions: Float32Array;
71
+ /**
72
+ * LineString instructions
73
+ */
74
+ lineStringInstructions: Float32Array;
75
+ /**
76
+ * Point instructions
77
+ */
78
+ pointInstructions: Float32Array;
79
+ };
80
+ /**
81
+ * An object containing both shaders (vertex and fragment)
82
+ */
83
+ export type ShaderProgram = {
84
+ /**
85
+ * Vertex shader source
86
+ */
87
+ vertex: string;
88
+ /**
89
+ * Fragment shader source
90
+ */
91
+ fragment: string;
92
+ };
93
+ export type StyleShaders = {
94
+ /**
95
+ * Shaders for filling polygons.
96
+ */
97
+ fill?: ShaderProgram | undefined;
98
+ /**
99
+ * Shaders for line strings and polygon strokes.
100
+ */
101
+ stroke?: ShaderProgram | undefined;
102
+ /**
103
+ * Shaders for symbols.
104
+ */
105
+ symbol?: ShaderProgram | undefined;
106
+ /**
107
+ * Custom attributes made available in the vertex shaders.
108
+ * Default shaders rely on the attributes in {@link Attributes }.
109
+ */
110
+ attributes?: {
111
+ [x: string]: AttributeDefinition;
112
+ } | undefined;
113
+ /**
114
+ * Additional uniforms usable in shaders.
115
+ */
116
+ uniforms?: {
117
+ [x: string]: import("../../webgl/Helper.js").UniformValue;
118
+ } | undefined;
119
+ };
120
+ export type VectorStyle = import('../../style/literal.js').LiteralStyle | StyleShaders;
121
+ /**
122
+ * @typedef {Object} AttributeDefinition A description of a custom attribute to be passed on to the GPU, with a value different
123
+ * for each feature.
124
+ * @property {number} [size] Amount of numerical values composing the attribute, either 1, 2, 3 or 4; in case size is > 1, the return value
125
+ * of the callback should be an array; if unspecified, assumed to be a single float value
126
+ * @property {function(import("../../Feature").FeatureLike):number|Array<number>} callback This callback computes the numerical value of the
127
+ * attribute for a given feature.
128
+ */
129
+ /**
130
+ * @typedef {Object<string, AttributeDefinition>} AttributeDefinitions
131
+ * @typedef {Object<string, import("../../webgl/Helper").UniformValue>} UniformDefinitions
132
+ */
133
+ /**
134
+ * @typedef {Object} WebGLBuffers
135
+ * @property {WebGLArrayBuffer} polygonIndicesBuffer Polygon indices buffer
136
+ * @property {WebGLArrayBuffer} polygonVerticesBuffer Polygon vertices buffer
137
+ * @property {WebGLArrayBuffer} lineStringIndicesBuffer LineString indices buffer
138
+ * @property {WebGLArrayBuffer} lineStringVerticesBuffer LineString vertices buffer
139
+ * @property {WebGLArrayBuffer} pointIndicesBuffer Point indices buffer
140
+ * @property {WebGLArrayBuffer} pointVerticesBuffer Point vertices buffer
141
+ * @property {import("../../transform.js").Transform} invertVerticesTransform Inverse of the transform applied when generating buffers
142
+ */
143
+ /**
144
+ * @typedef {Object} RenderInstructions
145
+ * @property {Float32Array} polygonInstructions Polygon instructions
146
+ * @property {Float32Array} lineStringInstructions LineString instructions
147
+ * @property {Float32Array} pointInstructions Point instructions
148
+ */
149
+ /**
150
+ * @typedef {Object} ShaderProgram An object containing both shaders (vertex and fragment)
151
+ * @property {string} vertex Vertex shader source
152
+ * @property {string} fragment Fragment shader source
153
+ */
154
+ /**
155
+ * @typedef {Object} StyleShaders
156
+ * @property {ShaderProgram} [fill] Shaders for filling polygons.
157
+ * @property {ShaderProgram} [stroke] Shaders for line strings and polygon strokes.
158
+ * @property {ShaderProgram} [symbol] Shaders for symbols.
159
+ * @property {AttributeDefinitions} [attributes] Custom attributes made available in the vertex shaders.
160
+ * Default shaders rely on the attributes in {@link Attributes}.
161
+ * @property {UniformDefinitions} [uniforms] Additional uniforms usable in shaders.
162
+ */
163
+ /**
164
+ * @typedef {import('../../style/literal.js').LiteralStyle|StyleShaders} VectorStyle
165
+ */
166
+ /**
167
+ * @classdesc This class is responsible for:
168
+ * 1. generate WebGL buffers according to a provided style, using a MixedGeometryBatch as input
169
+ * 2. rendering geometries contained in said buffers
170
+ *
171
+ * A layer renderer will typically maintain several of these in order to have several styles rendered separately.
172
+ *
173
+ * A VectorStyleRenderer instance can be created either from a literal style or from shaders using either
174
+ * `VectorStyleRenderer.fromStyle` or `VectorStyleRenderer.fromShaders`.
175
+ *
176
+ * The `generateBuffers` method returns a promise resolving to WebGL buffers that are intended to be rendered by the
177
+ * same renderer.
178
+ */
179
+ declare class VectorStyleRenderer {
180
+ /**
181
+ * @param {VectorStyle} styleOrShaders Literal style or custom shaders
182
+ * @param {import('../../webgl/Helper.js').default} helper Helper
183
+ */
184
+ constructor(styleOrShaders: VectorStyle, helper: import('../../webgl/Helper.js').default);
185
+ helper_: import("../../webgl/Helper.js").default;
186
+ fillVertexShader_: string | undefined;
187
+ fillFragmentShader_: string | undefined;
188
+ fillProgram_: WebGLProgram;
189
+ strokeVertexShader_: string | undefined;
190
+ strokeFragmentShader_: string | undefined;
191
+ strokeProgram_: WebGLProgram;
192
+ symbolVertexShader_: string | undefined;
193
+ symbolFragmentShader_: string | undefined;
194
+ symbolProgram_: WebGLProgram;
195
+ customAttributes_: {
196
+ [x: string]: AttributeDefinition;
197
+ } | undefined;
198
+ uniforms_: {
199
+ [x: string]: import("../../webgl/Helper.js").UniformValue;
200
+ } | undefined;
201
+ /**
202
+ * @type {Array<import('../../webgl/Helper.js').AttributeDescription>}
203
+ * @private
204
+ */
205
+ private polygonAttributesDesc_;
206
+ /**
207
+ * @type {Array<import('../../webgl/Helper.js').AttributeDescription>}
208
+ * @private
209
+ */
210
+ private lineStringAttributesDesc_;
211
+ /**
212
+ * @type {Array<import('../../webgl/Helper.js').AttributeDescription>}
213
+ * @private
214
+ */
215
+ private pointAttributesDesc_;
216
+ /**
217
+ * @param {import('./MixedGeometryBatch.js').default} geometryBatch Geometry batch
218
+ * @param {import("../../transform.js").Transform} transform Transform to apply to coordinates
219
+ * @return {Promise<WebGLBuffers>} A promise resolving to WebGL buffers
220
+ */
221
+ generateBuffers(geometryBatch: import('./MixedGeometryBatch.js').default, transform: import("../../transform.js").Transform): Promise<WebGLBuffers>;
222
+ /**
223
+ * @param {import('./MixedGeometryBatch.js').default} geometryBatch Geometry batch
224
+ * @param {import("../../transform.js").Transform} transform Transform to apply to coordinates
225
+ * @return {RenderInstructions} Render instructions
226
+ * @private
227
+ */
228
+ private generateRenderInstructions_;
229
+ /**
230
+ * @param {Float32Array} renderInstructions Render instructions
231
+ * @param {import("../../geom/Geometry.js").Type} geometryType Geometry type
232
+ * @param {import("../../transform.js").Transform} transform Transform to apply to coordinates
233
+ * @return {Promise<Array<WebGLArrayBuffer>>} Vertices buffer and indices buffer
234
+ * @private
235
+ */
236
+ private generateBuffersForType_;
237
+ /**
238
+ * Render the geometries in the given buffers.
239
+ * @param {WebGLBuffers} buffers WebGL Buffers to draw
240
+ * @param {import("../../Map.js").FrameState} frameState Frame state
241
+ * @param {function(): void} preRenderCallback This callback will be called right before drawing, and can be used to set uniforms
242
+ */
243
+ render(buffers: WebGLBuffers, frameState: import("../../Map.js").FrameState, preRenderCallback: () => void): void;
244
+ /**
245
+ * @param {WebGLArrayBuffer} indicesBuffer Indices buffer
246
+ * @param {WebGLArrayBuffer} verticesBuffer Vertices buffer
247
+ * @param {WebGLProgram} program Program
248
+ * @param {Array<import('../../webgl/Helper.js').AttributeDescription>} attributes Attribute descriptions
249
+ * @param {import("../../Map.js").FrameState} frameState Frame state.
250
+ * @param {function(): void} preRenderCallback This callback will be called right before drawing, and can be used to set uniforms
251
+ * @private
252
+ */
253
+ private renderInternal_;
254
+ }
255
+ import WebGLArrayBuffer from '../../webgl/Buffer.js';
256
+ //# sourceMappingURL=VectorStyleRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VectorStyleRenderer.d.ts","sourceRoot":"","sources":["VectorStyleRenderer.js"],"names":[],"mappings":";;;;yBA0BU,MAAM;;;;;;;;;;;;;;;;;;;;;;;qBAeO,OAAO,eAAe,EAAE,WAAW,KAAE,MAAM,GAAC,MAAM,MAAM,CAAC;;;QAK5D,MAAM,GAAE,mBAAmB;;;QAC3B,MAAM,GAAE,OAAO,oBAAoB,EAAE,YAAY;;;;;;0BAKvD,gBAAgB;;;;2BAChB,gBAAgB;;;;6BAChB,gBAAgB;;;;8BAChB,gBAAgB;;;;wBAChB,gBAAgB;;;;yBAChB,gBAAgB;;;;6BAChB,OAAO,oBAAoB,EAAE,SAAS;;;;;;yBAKtC,YAAY;;;;4BACZ,YAAY;;;;uBACZ,YAAY;;;;;;;;;YAKZ,MAAM;;;;cACN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAcP,OAAO,wBAAwB,EAAE,YAAY,GAAC,YAAY;AAjDvE;;;;;;;GAOG;AAEH;;;GAGG;AAEH;;;;;;;;;GASG;AAEH;;;;;GAKG;AAEH;;;;GAIG;AAEH;;;;;;;;GAQG;AAEH;;GAEG;AAEH;;;;;;;;;;;;GAYG;AACH;IACE;;;OAGG;IACH,4BAHW,WAAW,UACX,OAAO,uBAAuB,EAAE,OAAO,EAuHjD;IApHC,iDAAqB;IAkCrB,sCAA4D;IAC5D,wCAAgE;IAChE,2BAGC;IAED,wCAAkE;IAClE,0CAAsE;IACtE,6BAGC;IAED,wCAAkE;IAClE,0CAAsE;IACtE,6BAGC;IAED;;kBAA2C;IAC3C;;kBAAiC;IASjC;;;OAGG;IACH,+BAOC;IACD;;;OAGG;IACH,kCAiBC;IACD;;;OAGG;IACH,6BAYC;IAGH;;;;OAIG;IACH,+BAJW,OAAO,yBAAyB,EAAE,OAAO,aACzC,OAAO,oBAAoB,EAAE,SAAS,GACrC,QAAQ,YAAY,CAAC,CAwChC;IAED;;;;;OAKG;IACH,oCAyBC;IAED;;;;;;OAMG;IACH,gCAmEC;IAED;;;;;OAKG;IACH,gBAJW,YAAY,cACZ,OAAO,cAAc,EAAE,UAAU,2BACrB,IAAI,QA2B1B;IAED;;;;;;;;OAQG;IACH,wBAeC;CACF;6BAlb4B,uBAAuB"}
@@ -0,0 +1,440 @@
1
+ /**
2
+ * @module ol/render/webgl/VectorStyleRenderer
3
+ */
4
+ import WebGLArrayBuffer from '../../webgl/Buffer.js';
5
+ import {ARRAY_BUFFER, DYNAMIC_DRAW, ELEMENT_ARRAY_BUFFER} from '../../webgl.js';
6
+ import {AttributeType} from '../../webgl/Helper.js';
7
+ import {WebGLWorkerMessageType} from './constants.js';
8
+ import {
9
+ create as createTransform,
10
+ makeInverse as makeInverseTransform,
11
+ } from '../../transform.js';
12
+ import {create as createWebGLWorker} from '../../worker/webgl.js';
13
+ import {
14
+ generateLineStringRenderInstructions,
15
+ generatePointRenderInstructions,
16
+ generatePolygonRenderInstructions,
17
+ getCustomAttributesSize,
18
+ } from './renderinstructions.js';
19
+ import {parseLiteralStyle} from '../../webgl/styleparser.js';
20
+
21
+ const WEBGL_WORKER = createWebGLWorker();
22
+ let workerMessageCounter = 0;
23
+
24
+ /**
25
+ * Names of attributes made available to the vertex shader.
26
+ * Please note: changing these *will* break custom shaders!
27
+ * @enum {string}
28
+ */
29
+ export const Attributes = {
30
+ POSITION: 'a_position',
31
+ INDEX: 'a_index',
32
+ SEGMENT_START: 'a_segmentStart',
33
+ SEGMENT_END: 'a_segmentEnd',
34
+ PARAMETERS: 'a_parameters',
35
+ };
36
+
37
+ /**
38
+ * @typedef {Object} AttributeDefinition A description of a custom attribute to be passed on to the GPU, with a value different
39
+ * for each feature.
40
+ * @property {number} [size] Amount of numerical values composing the attribute, either 1, 2, 3 or 4; in case size is > 1, the return value
41
+ * of the callback should be an array; if unspecified, assumed to be a single float value
42
+ * @property {function(import("../../Feature").FeatureLike):number|Array<number>} callback This callback computes the numerical value of the
43
+ * attribute for a given feature.
44
+ */
45
+
46
+ /**
47
+ * @typedef {Object<string, AttributeDefinition>} AttributeDefinitions
48
+ * @typedef {Object<string, import("../../webgl/Helper").UniformValue>} UniformDefinitions
49
+ */
50
+
51
+ /**
52
+ * @typedef {Object} WebGLBuffers
53
+ * @property {WebGLArrayBuffer} polygonIndicesBuffer Polygon indices buffer
54
+ * @property {WebGLArrayBuffer} polygonVerticesBuffer Polygon vertices buffer
55
+ * @property {WebGLArrayBuffer} lineStringIndicesBuffer LineString indices buffer
56
+ * @property {WebGLArrayBuffer} lineStringVerticesBuffer LineString vertices buffer
57
+ * @property {WebGLArrayBuffer} pointIndicesBuffer Point indices buffer
58
+ * @property {WebGLArrayBuffer} pointVerticesBuffer Point vertices buffer
59
+ * @property {import("../../transform.js").Transform} invertVerticesTransform Inverse of the transform applied when generating buffers
60
+ */
61
+
62
+ /**
63
+ * @typedef {Object} RenderInstructions
64
+ * @property {Float32Array} polygonInstructions Polygon instructions
65
+ * @property {Float32Array} lineStringInstructions LineString instructions
66
+ * @property {Float32Array} pointInstructions Point instructions
67
+ */
68
+
69
+ /**
70
+ * @typedef {Object} ShaderProgram An object containing both shaders (vertex and fragment)
71
+ * @property {string} vertex Vertex shader source
72
+ * @property {string} fragment Fragment shader source
73
+ */
74
+
75
+ /**
76
+ * @typedef {Object} StyleShaders
77
+ * @property {ShaderProgram} [fill] Shaders for filling polygons.
78
+ * @property {ShaderProgram} [stroke] Shaders for line strings and polygon strokes.
79
+ * @property {ShaderProgram} [symbol] Shaders for symbols.
80
+ * @property {AttributeDefinitions} [attributes] Custom attributes made available in the vertex shaders.
81
+ * Default shaders rely on the attributes in {@link Attributes}.
82
+ * @property {UniformDefinitions} [uniforms] Additional uniforms usable in shaders.
83
+ */
84
+
85
+ /**
86
+ * @typedef {import('../../style/literal.js').LiteralStyle|StyleShaders} VectorStyle
87
+ */
88
+
89
+ /**
90
+ * @classdesc This class is responsible for:
91
+ * 1. generate WebGL buffers according to a provided style, using a MixedGeometryBatch as input
92
+ * 2. rendering geometries contained in said buffers
93
+ *
94
+ * A layer renderer will typically maintain several of these in order to have several styles rendered separately.
95
+ *
96
+ * A VectorStyleRenderer instance can be created either from a literal style or from shaders using either
97
+ * `VectorStyleRenderer.fromStyle` or `VectorStyleRenderer.fromShaders`.
98
+ *
99
+ * The `generateBuffers` method returns a promise resolving to WebGL buffers that are intended to be rendered by the
100
+ * same renderer.
101
+ */
102
+ class VectorStyleRenderer {
103
+ /**
104
+ * @param {VectorStyle} styleOrShaders Literal style or custom shaders
105
+ * @param {import('../../webgl/Helper.js').default} helper Helper
106
+ */
107
+ constructor(styleOrShaders, helper) {
108
+ this.helper_ = helper;
109
+
110
+ let shaders = /** @type {StyleShaders} */ (styleOrShaders);
111
+
112
+ // TODO: improve discrimination between shaders and style
113
+ if (
114
+ !('fill' in styleOrShaders || 'stroke' in styleOrShaders) ||
115
+ ('symbol' in styleOrShaders &&
116
+ 'symbolType' in styleOrShaders.symbol &&
117
+ 'size' in styleOrShaders.symbol)
118
+ ) {
119
+ const parseResult = parseLiteralStyle(
120
+ /** @type {import('../../style/literal.js').LiteralStyle} */ (
121
+ styleOrShaders
122
+ )
123
+ );
124
+ shaders = {
125
+ fill: {
126
+ vertex: parseResult.builder.getFillVertexShader(),
127
+ fragment: parseResult.builder.getFillFragmentShader(),
128
+ },
129
+ stroke: {
130
+ vertex: parseResult.builder.getStrokeVertexShader(),
131
+ fragment: parseResult.builder.getStrokeFragmentShader(),
132
+ },
133
+ symbol: {
134
+ vertex: parseResult.builder.getSymbolVertexShader(),
135
+ fragment: parseResult.builder.getSymbolFragmentShader(),
136
+ },
137
+ attributes: parseResult.attributes,
138
+ uniforms: parseResult.uniforms,
139
+ };
140
+ }
141
+
142
+ this.fillVertexShader_ = shaders.fill && shaders.fill.vertex;
143
+ this.fillFragmentShader_ = shaders.fill && shaders.fill.fragment;
144
+ this.fillProgram_ = this.helper_.getProgram(
145
+ this.fillFragmentShader_,
146
+ this.fillVertexShader_
147
+ );
148
+
149
+ this.strokeVertexShader_ = shaders.stroke && shaders.stroke.vertex;
150
+ this.strokeFragmentShader_ = shaders.stroke && shaders.stroke.fragment;
151
+ this.strokeProgram_ = this.helper_.getProgram(
152
+ this.strokeFragmentShader_,
153
+ this.strokeVertexShader_
154
+ );
155
+
156
+ this.symbolVertexShader_ = shaders.symbol && shaders.symbol.vertex;
157
+ this.symbolFragmentShader_ = shaders.symbol && shaders.symbol.fragment;
158
+ this.symbolProgram_ = this.helper_.getProgram(
159
+ this.symbolFragmentShader_,
160
+ this.symbolVertexShader_
161
+ );
162
+
163
+ this.customAttributes_ = shaders.attributes;
164
+ this.uniforms_ = shaders.uniforms;
165
+
166
+ const customAttributesDesc = Object.keys(this.customAttributes_).map(
167
+ (name) => ({
168
+ name: `a_${name}`,
169
+ size: this.customAttributes_[name].size || 1,
170
+ type: AttributeType.FLOAT,
171
+ })
172
+ );
173
+ /**
174
+ * @type {Array<import('../../webgl/Helper.js').AttributeDescription>}
175
+ * @private
176
+ */
177
+ this.polygonAttributesDesc_ = [
178
+ {
179
+ name: Attributes.POSITION,
180
+ size: 2,
181
+ type: AttributeType.FLOAT,
182
+ },
183
+ ...customAttributesDesc,
184
+ ];
185
+ /**
186
+ * @type {Array<import('../../webgl/Helper.js').AttributeDescription>}
187
+ * @private
188
+ */
189
+ this.lineStringAttributesDesc_ = [
190
+ {
191
+ name: Attributes.SEGMENT_START,
192
+ size: 2,
193
+ type: AttributeType.FLOAT,
194
+ },
195
+ {
196
+ name: Attributes.SEGMENT_END,
197
+ size: 2,
198
+ type: AttributeType.FLOAT,
199
+ },
200
+ {
201
+ name: Attributes.PARAMETERS,
202
+ size: 1,
203
+ type: AttributeType.FLOAT,
204
+ },
205
+ ...customAttributesDesc,
206
+ ];
207
+ /**
208
+ * @type {Array<import('../../webgl/Helper.js').AttributeDescription>}
209
+ * @private
210
+ */
211
+ this.pointAttributesDesc_ = [
212
+ {
213
+ name: Attributes.POSITION,
214
+ size: 2,
215
+ type: AttributeType.FLOAT,
216
+ },
217
+ {
218
+ name: Attributes.INDEX,
219
+ size: 1,
220
+ type: AttributeType.FLOAT,
221
+ },
222
+ ...customAttributesDesc,
223
+ ];
224
+ }
225
+
226
+ /**
227
+ * @param {import('./MixedGeometryBatch.js').default} geometryBatch Geometry batch
228
+ * @param {import("../../transform.js").Transform} transform Transform to apply to coordinates
229
+ * @return {Promise<WebGLBuffers>} A promise resolving to WebGL buffers
230
+ */
231
+ async generateBuffers(geometryBatch, transform) {
232
+ const renderInstructions = this.generateRenderInstructions_(
233
+ geometryBatch,
234
+ transform
235
+ );
236
+ const [polygonBuffers, lineStringBuffers, pointBuffers] = await Promise.all(
237
+ [
238
+ this.generateBuffersForType_(
239
+ renderInstructions.polygonInstructions,
240
+ 'Polygon',
241
+ transform
242
+ ),
243
+ this.generateBuffersForType_(
244
+ renderInstructions.lineStringInstructions,
245
+ 'LineString',
246
+ transform
247
+ ),
248
+ this.generateBuffersForType_(
249
+ renderInstructions.pointInstructions,
250
+ 'Point',
251
+ transform
252
+ ),
253
+ ]
254
+ );
255
+ // also return the inverse of the transform that was applied when generating buffers
256
+ const invertVerticesTransform = makeInverseTransform(
257
+ createTransform(),
258
+ transform
259
+ );
260
+ return {
261
+ polygonVerticesBuffer: polygonBuffers[0],
262
+ polygonIndicesBuffer: polygonBuffers[1],
263
+ lineStringVerticesBuffer: lineStringBuffers[0],
264
+ lineStringIndicesBuffer: lineStringBuffers[1],
265
+ pointVerticesBuffer: pointBuffers[0],
266
+ pointIndicesBuffer: pointBuffers[1],
267
+ invertVerticesTransform: invertVerticesTransform,
268
+ };
269
+ }
270
+
271
+ /**
272
+ * @param {import('./MixedGeometryBatch.js').default} geometryBatch Geometry batch
273
+ * @param {import("../../transform.js").Transform} transform Transform to apply to coordinates
274
+ * @return {RenderInstructions} Render instructions
275
+ * @private
276
+ */
277
+ generateRenderInstructions_(geometryBatch, transform) {
278
+ const polygonInstructions = generatePolygonRenderInstructions(
279
+ geometryBatch.polygonBatch,
280
+ new Float32Array(0),
281
+ this.customAttributes_,
282
+ transform
283
+ );
284
+ const lineStringInstructions = generateLineStringRenderInstructions(
285
+ geometryBatch.lineStringBatch,
286
+ new Float32Array(0),
287
+ this.customAttributes_,
288
+ transform
289
+ );
290
+ const pointInstructions = generatePointRenderInstructions(
291
+ geometryBatch.pointBatch,
292
+ new Float32Array(0),
293
+ this.customAttributes_,
294
+ transform
295
+ );
296
+
297
+ return {
298
+ polygonInstructions,
299
+ lineStringInstructions,
300
+ pointInstructions,
301
+ };
302
+ }
303
+
304
+ /**
305
+ * @param {Float32Array} renderInstructions Render instructions
306
+ * @param {import("../../geom/Geometry.js").Type} geometryType Geometry type
307
+ * @param {import("../../transform.js").Transform} transform Transform to apply to coordinates
308
+ * @return {Promise<Array<WebGLArrayBuffer>>} Vertices buffer and indices buffer
309
+ * @private
310
+ */
311
+ generateBuffersForType_(renderInstructions, geometryType, transform) {
312
+ const messageId = workerMessageCounter++;
313
+ let messageType;
314
+ switch (geometryType) {
315
+ case 'Polygon':
316
+ messageType = WebGLWorkerMessageType.GENERATE_POLYGON_BUFFERS;
317
+ break;
318
+ case 'LineString':
319
+ messageType = WebGLWorkerMessageType.GENERATE_LINE_STRING_BUFFERS;
320
+ break;
321
+ case 'Point':
322
+ messageType = WebGLWorkerMessageType.GENERATE_POINT_BUFFERS;
323
+ break;
324
+ default:
325
+ // pass
326
+ }
327
+
328
+ /** @type {import('./constants.js').WebGLWorkerGenerateBuffersMessage} */
329
+ const message = {
330
+ id: messageId,
331
+ type: messageType,
332
+ renderInstructions: renderInstructions.buffer,
333
+ renderInstructionsTransform: transform,
334
+ customAttributesSize: getCustomAttributesSize(this.customAttributes_),
335
+ };
336
+ WEBGL_WORKER.postMessage(message, [renderInstructions.buffer]);
337
+
338
+ // leave ownership of render instructions
339
+ renderInstructions = null;
340
+
341
+ return new Promise((resolve) => {
342
+ /**
343
+ * @param {*} event Event.
344
+ */
345
+ const handleMessage = (event) => {
346
+ const received = event.data;
347
+
348
+ // this is not the response to our request: skip
349
+ if (received.id !== messageId) {
350
+ return;
351
+ }
352
+
353
+ // we've received our response: stop listening
354
+ WEBGL_WORKER.removeEventListener('message', handleMessage);
355
+
356
+ // the helper has disposed in the meantime; the promise will not be resolved
357
+ if (!this.helper_.getGL()) {
358
+ return;
359
+ }
360
+
361
+ // copy & flush received buffers to GPU
362
+ const verticesBuffer = new WebGLArrayBuffer(
363
+ ARRAY_BUFFER,
364
+ DYNAMIC_DRAW
365
+ ).fromArrayBuffer(received.vertexBuffer);
366
+ const indicesBuffer = new WebGLArrayBuffer(
367
+ ELEMENT_ARRAY_BUFFER,
368
+ DYNAMIC_DRAW
369
+ ).fromArrayBuffer(received.indexBuffer);
370
+ this.helper_.flushBufferData(verticesBuffer);
371
+ this.helper_.flushBufferData(indicesBuffer);
372
+
373
+ resolve([verticesBuffer, indicesBuffer]);
374
+ };
375
+
376
+ WEBGL_WORKER.addEventListener('message', handleMessage);
377
+ });
378
+ }
379
+
380
+ /**
381
+ * Render the geometries in the given buffers.
382
+ * @param {WebGLBuffers} buffers WebGL Buffers to draw
383
+ * @param {import("../../Map.js").FrameState} frameState Frame state
384
+ * @param {function(): void} preRenderCallback This callback will be called right before drawing, and can be used to set uniforms
385
+ */
386
+ render(buffers, frameState, preRenderCallback) {
387
+ this.renderInternal_(
388
+ buffers.polygonIndicesBuffer,
389
+ buffers.polygonVerticesBuffer,
390
+ this.fillProgram_,
391
+ this.polygonAttributesDesc_,
392
+ frameState,
393
+ preRenderCallback
394
+ );
395
+ this.renderInternal_(
396
+ buffers.lineStringIndicesBuffer,
397
+ buffers.lineStringVerticesBuffer,
398
+ this.strokeProgram_,
399
+ this.lineStringAttributesDesc_,
400
+ frameState,
401
+ preRenderCallback
402
+ );
403
+ this.renderInternal_(
404
+ buffers.pointIndicesBuffer,
405
+ buffers.pointVerticesBuffer,
406
+ this.symbolProgram_,
407
+ this.pointAttributesDesc_,
408
+ frameState,
409
+ preRenderCallback
410
+ );
411
+ }
412
+
413
+ /**
414
+ * @param {WebGLArrayBuffer} indicesBuffer Indices buffer
415
+ * @param {WebGLArrayBuffer} verticesBuffer Vertices buffer
416
+ * @param {WebGLProgram} program Program
417
+ * @param {Array<import('../../webgl/Helper.js').AttributeDescription>} attributes Attribute descriptions
418
+ * @param {import("../../Map.js").FrameState} frameState Frame state.
419
+ * @param {function(): void} preRenderCallback This callback will be called right before drawing, and can be used to set uniforms
420
+ * @private
421
+ */
422
+ renderInternal_(
423
+ indicesBuffer,
424
+ verticesBuffer,
425
+ program,
426
+ attributes,
427
+ frameState,
428
+ preRenderCallback
429
+ ) {
430
+ this.helper_.useProgram(program, frameState);
431
+ this.helper_.bindBuffer(verticesBuffer);
432
+ this.helper_.bindBuffer(indicesBuffer);
433
+ this.helper_.enableAttributes(attributes);
434
+ preRenderCallback();
435
+ const renderCount = indicesBuffer.getSize();
436
+ this.helper_.drawElements(0, renderCount);
437
+ }
438
+ }
439
+
440
+ export default VectorStyleRenderer;