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,750 @@
1
+ /**
2
+ * @module ol/renderer/webgl/TileLayerBase
3
+ */
4
+ import LRUCache from '../../structs/LRUCache.js';
5
+ import ReprojDataTile from '../../reproj/DataTile.js';
6
+ import ReprojTile from '../../reproj/Tile.js';
7
+ import TileRange from '../../TileRange.js';
8
+ import TileState from '../../TileState.js';
9
+ import WebGLLayerRenderer from './Layer.js';
10
+ import {abstract, getUid} from '../../util.js';
11
+ import {ascending} from '../../array.js';
12
+ import {create as createMat4} from '../../vec/mat4.js';
13
+ import {
14
+ createOrUpdate as createTileCoord,
15
+ getKey as getTileCoordKey,
16
+ } from '../../tilecoord.js';
17
+ import {
18
+ create as createTransform,
19
+ reset as resetTransform,
20
+ rotate as rotateTransform,
21
+ scale as scaleTransform,
22
+ translate as translateTransform,
23
+ } from '../../transform.js';
24
+ import {fromUserExtent} from '../../proj.js';
25
+ import {getIntersection, isEmpty} from '../../extent.js';
26
+ import {toSize} from '../../size.js';
27
+
28
+ export const Uniforms = {
29
+ TILE_TRANSFORM: 'u_tileTransform',
30
+ TRANSITION_ALPHA: 'u_transitionAlpha',
31
+ DEPTH: 'u_depth',
32
+ RENDER_EXTENT: 'u_renderExtent', // intersection of layer, source, and view extent
33
+ RESOLUTION: 'u_resolution',
34
+ ZOOM: 'u_zoom',
35
+ GLOBAL_ALPHA: 'u_globalAlpha',
36
+ PROJECTION_MATRIX: 'u_projectionMatrix',
37
+ SCREEN_TO_WORLD_MATRIX: 'u_screenToWorldMatrix',
38
+ };
39
+
40
+ /**
41
+ * @type {Object<string, boolean>}
42
+ */
43
+ const empty = {};
44
+
45
+ /**
46
+ * Transform a zoom level into a depth value ranging from -1 to 1.
47
+ * @param {number} z A zoom level.
48
+ * @return {number} A depth value.
49
+ */
50
+ function depthForZ(z) {
51
+ return 2 * (1 - 1 / (z + 1)) - 1;
52
+ }
53
+
54
+ /**
55
+ * @typedef {import("../../webgl/BaseTileRepresentation.js").default<import("../../Tile.js").default>} AbstractTileRepresentation
56
+ */
57
+ /**
58
+ * @typedef {Object} TileRepresentationLookup
59
+ * @property {Set<string>} tileIds The set of tile ids in the lookup.
60
+ * @property {Object<number, Set<AbstractTileRepresentation>>} representationsByZ Tile representations by zoom level.
61
+ */
62
+
63
+ /**
64
+ * @return {TileRepresentationLookup} A new tile representation lookup.
65
+ */
66
+ export function newTileRepresentationLookup() {
67
+ return {tileIds: new Set(), representationsByZ: {}};
68
+ }
69
+
70
+ /**
71
+ * Check if a tile is already in the tile representation lookup.
72
+ * @param {TileRepresentationLookup} tileRepresentationLookup Lookup of tile representations by zoom level.
73
+ * @param {import("../../Tile.js").default} tile A tile.
74
+ * @return {boolean} The tile is already in the lookup.
75
+ */
76
+ function lookupHasTile(tileRepresentationLookup, tile) {
77
+ return tileRepresentationLookup.tileIds.has(getUid(tile));
78
+ }
79
+
80
+ /**
81
+ * Add a tile representation to the lookup.
82
+ * @param {TileRepresentationLookup} tileRepresentationLookup Lookup of tile representations by zoom level.
83
+ * @param {AbstractTileRepresentation} tileRepresentation A tile representation.
84
+ * @param {number} z The zoom level.
85
+ */
86
+ function addTileRepresentationToLookup(
87
+ tileRepresentationLookup,
88
+ tileRepresentation,
89
+ z
90
+ ) {
91
+ const representationsByZ = tileRepresentationLookup.representationsByZ;
92
+ if (!(z in representationsByZ)) {
93
+ representationsByZ[z] = new Set();
94
+ }
95
+ representationsByZ[z].add(tileRepresentation);
96
+ tileRepresentationLookup.tileIds.add(getUid(tileRepresentation.tile));
97
+ }
98
+
99
+ /**
100
+ * @param {import("../../Map.js").FrameState} frameState Frame state.
101
+ * @param {import("../../extent.js").Extent} extent The frame extent.
102
+ * @return {import("../../extent.js").Extent} Frame extent intersected with layer extents.
103
+ */
104
+ function getRenderExtent(frameState, extent) {
105
+ const layerState = frameState.layerStatesArray[frameState.layerIndex];
106
+ if (layerState.extent) {
107
+ extent = getIntersection(
108
+ extent,
109
+ fromUserExtent(layerState.extent, frameState.viewState.projection)
110
+ );
111
+ }
112
+ const source = /** @type {import("../../source/Tile.js").default} */ (
113
+ layerState.layer.getRenderSource()
114
+ );
115
+ if (!source.getWrapX()) {
116
+ const gridExtent = source
117
+ .getTileGridForProjection(frameState.viewState.projection)
118
+ .getExtent();
119
+ if (gridExtent) {
120
+ extent = getIntersection(extent, gridExtent);
121
+ }
122
+ }
123
+ return extent;
124
+ }
125
+
126
+ export function getCacheKey(source, tileCoord) {
127
+ return `${source.getKey()},${getTileCoordKey(tileCoord)}`;
128
+ }
129
+
130
+ /**
131
+ * @typedef {Object} Options
132
+ * @property {Object<string, import("../../webgl/Helper").UniformValue>} [uniforms] Additional uniforms
133
+ * made available to shaders.
134
+ * @property {number} [cacheSize=512] The tile representation cache size.
135
+ * @property {Array<import('./Layer.js').PostProcessesOptions>} [postProcesses] Post-processes definitions.
136
+ */
137
+
138
+ /**
139
+ * @typedef {import("../../layer/BaseTile.js").default} BaseLayerType
140
+ */
141
+
142
+ /**
143
+ * @classdesc
144
+ * Base WebGL renderer for tile layers.
145
+ * @template {BaseLayerType} LayerType
146
+ * @template {import("../../Tile.js").default} TileType
147
+ * @template {import("../../webgl/BaseTileRepresentation.js").default<TileType>} TileRepresentation
148
+ * @extends {WebGLLayerRenderer<LayerType>}
149
+ */
150
+ class WebGLBaseTileLayerRenderer extends WebGLLayerRenderer {
151
+ /**
152
+ * @param {LayerType} tileLayer Tile layer.
153
+ * @param {Options} options Options.
154
+ */
155
+ constructor(tileLayer, options) {
156
+ super(tileLayer, {
157
+ uniforms: options.uniforms,
158
+ postProcesses: options.postProcesses,
159
+ });
160
+
161
+ /**
162
+ * The last call to `renderFrame` was completed with all tiles loaded
163
+ * @type {boolean}
164
+ */
165
+ this.renderComplete = false;
166
+
167
+ /**
168
+ * This transform converts representation coordinates to screen coordinates.
169
+ * @type {import("../../transform.js").Transform}
170
+ * @private
171
+ */
172
+ this.tileTransform_ = createTransform();
173
+
174
+ /**
175
+ * @type {Array<number>}
176
+ * @protected
177
+ */
178
+ this.tempMat4 = createMat4();
179
+
180
+ /**
181
+ * @type {import("../../TileRange.js").default}
182
+ * @private
183
+ */
184
+ this.tempTileRange_ = new TileRange(0, 0, 0, 0);
185
+
186
+ /**
187
+ * @type {import("../../tilecoord.js").TileCoord}
188
+ * @private
189
+ */
190
+ this.tempTileCoord_ = createTileCoord(0, 0, 0);
191
+
192
+ /**
193
+ * @type {import("../../size.js").Size}
194
+ * @private
195
+ */
196
+ this.tempSize_ = [0, 0];
197
+
198
+ const cacheSize = options.cacheSize !== undefined ? options.cacheSize : 512;
199
+ /**
200
+ * @type {import("../../structs/LRUCache.js").default<TileRepresentation>}
201
+ * @protected
202
+ */
203
+ this.tileRepresentationCache = new LRUCache(cacheSize);
204
+
205
+ /**
206
+ * @protected
207
+ * @type {import("../../Map.js").FrameState|null}
208
+ */
209
+ this.frameState = null;
210
+
211
+ /**
212
+ * @private
213
+ * @type {import("../../proj/Projection.js").default}
214
+ */
215
+ this.projection_ = undefined;
216
+ }
217
+
218
+ /**
219
+ * @param {Options} options Options.
220
+ */
221
+ reset(options) {
222
+ super.reset({
223
+ uniforms: options.uniforms,
224
+ });
225
+ }
226
+
227
+ /**
228
+ * @param {TileType} tile Tile.
229
+ * @return {boolean} Tile is drawable.
230
+ * @private
231
+ */
232
+ isDrawableTile_(tile) {
233
+ const tileLayer = this.getLayer();
234
+ const tileState = tile.getState();
235
+ const useInterimTilesOnError = tileLayer.getUseInterimTilesOnError();
236
+ return (
237
+ tileState == TileState.LOADED ||
238
+ tileState == TileState.EMPTY ||
239
+ (tileState == TileState.ERROR && !useInterimTilesOnError)
240
+ );
241
+ }
242
+
243
+ /**
244
+ * Determine whether renderFrame should be called.
245
+ * @param {import("../../Map.js").FrameState} frameState Frame state.
246
+ * @return {boolean} Layer is ready to be rendered.
247
+ */
248
+ prepareFrameInternal(frameState) {
249
+ if (!this.projection_) {
250
+ this.projection_ = frameState.viewState.projection;
251
+ } else if (frameState.viewState.projection !== this.projection_) {
252
+ this.clearCache();
253
+ this.projection_ = frameState.viewState.projection;
254
+ }
255
+
256
+ const layer = this.getLayer();
257
+ const source = layer.getRenderSource();
258
+ if (!source) {
259
+ return false;
260
+ }
261
+
262
+ if (isEmpty(getRenderExtent(frameState, frameState.extent))) {
263
+ return false;
264
+ }
265
+ return source.getState() === 'ready';
266
+ }
267
+
268
+ /**
269
+ * @abstract
270
+ * @param {import("../../webgl/BaseTileRepresentation.js").TileRepresentationOptions<TileType>} options tile representation options
271
+ * @return {TileRepresentation} A new tile representation
272
+ * @protected
273
+ */
274
+ createTileRepresentation(options) {
275
+ return abstract();
276
+ }
277
+
278
+ /**
279
+ * @param {import("../../Map.js").FrameState} frameState Frame state.
280
+ * @param {import("../../extent.js").Extent} extent The extent to be rendered.
281
+ * @param {number} initialZ The zoom level.
282
+ * @param {TileRepresentationLookup} tileRepresentationLookup The zoom level.
283
+ * @param {number} preload Number of additional levels to load.
284
+ */
285
+ enqueueTiles(
286
+ frameState,
287
+ extent,
288
+ initialZ,
289
+ tileRepresentationLookup,
290
+ preload
291
+ ) {
292
+ const viewState = frameState.viewState;
293
+ const tileLayer = this.getLayer();
294
+ const tileSource = tileLayer.getRenderSource();
295
+ const tileGrid = tileSource.getTileGridForProjection(viewState.projection);
296
+ const gutter = tileSource.getGutterForProjection(viewState.projection);
297
+
298
+ const tileSourceKey = getUid(tileSource);
299
+ if (!(tileSourceKey in frameState.wantedTiles)) {
300
+ frameState.wantedTiles[tileSourceKey] = {};
301
+ }
302
+
303
+ const wantedTiles = frameState.wantedTiles[tileSourceKey];
304
+ const tileRepresentationCache = this.tileRepresentationCache;
305
+
306
+ const map = tileLayer.getMapInternal();
307
+ const minZ = Math.max(
308
+ initialZ - preload,
309
+ tileGrid.getMinZoom(),
310
+ tileGrid.getZForResolution(
311
+ Math.min(
312
+ tileLayer.getMaxResolution(),
313
+ map
314
+ ? map
315
+ .getView()
316
+ .getResolutionForZoom(Math.max(tileLayer.getMinZoom(), 0))
317
+ : tileGrid.getResolution(0)
318
+ ),
319
+ tileSource.zDirection
320
+ )
321
+ );
322
+ for (let z = initialZ; z >= minZ; --z) {
323
+ const tileRange = tileGrid.getTileRangeForExtentAndZ(
324
+ extent,
325
+ z,
326
+ this.tempTileRange_
327
+ );
328
+
329
+ const tileResolution = tileGrid.getResolution(z);
330
+
331
+ for (let x = tileRange.minX; x <= tileRange.maxX; ++x) {
332
+ for (let y = tileRange.minY; y <= tileRange.maxY; ++y) {
333
+ const tileCoord = createTileCoord(z, x, y, this.tempTileCoord_);
334
+ const cacheKey = getCacheKey(tileSource, tileCoord);
335
+
336
+ /** @type {TileRepresentation} */
337
+ let tileRepresentation;
338
+
339
+ /** @type {TileType} */
340
+ let tile;
341
+
342
+ if (tileRepresentationCache.containsKey(cacheKey)) {
343
+ tileRepresentation = tileRepresentationCache.get(cacheKey);
344
+ tile = tileRepresentation.tile;
345
+ }
346
+ if (
347
+ !tileRepresentation ||
348
+ tileRepresentation.tile.key !== tileSource.getKey()
349
+ ) {
350
+ tile = tileSource.getTile(
351
+ z,
352
+ x,
353
+ y,
354
+ frameState.pixelRatio,
355
+ viewState.projection
356
+ );
357
+ }
358
+
359
+ if (lookupHasTile(tileRepresentationLookup, tile)) {
360
+ continue;
361
+ }
362
+
363
+ if (!tileRepresentation) {
364
+ tileRepresentation = this.createTileRepresentation({
365
+ tile: tile,
366
+ grid: tileGrid,
367
+ helper: this.helper,
368
+ gutter: gutter,
369
+ });
370
+ tileRepresentationCache.set(cacheKey, tileRepresentation);
371
+ } else {
372
+ if (this.isDrawableTile_(tile)) {
373
+ tileRepresentation.setTile(tile);
374
+ } else {
375
+ const interimTile = /** @type {TileType} */ (
376
+ tile.getInterimTile()
377
+ );
378
+ tileRepresentation.setTile(interimTile);
379
+ }
380
+ }
381
+
382
+ addTileRepresentationToLookup(
383
+ tileRepresentationLookup,
384
+ tileRepresentation,
385
+ z
386
+ );
387
+
388
+ const tileQueueKey = tile.getKey();
389
+ wantedTiles[tileQueueKey] = true;
390
+
391
+ if (tile.getState() === TileState.IDLE) {
392
+ if (!frameState.tileQueue.isKeyQueued(tileQueueKey)) {
393
+ frameState.tileQueue.enqueue([
394
+ tile,
395
+ tileSourceKey,
396
+ tileGrid.getTileCoordCenter(tileCoord),
397
+ tileResolution,
398
+ ]);
399
+ }
400
+ }
401
+ }
402
+ }
403
+ }
404
+ }
405
+
406
+ /**
407
+ * @param {import("../../Map.js").FrameState} frameState Frame state.
408
+ * @param {boolean} tilesWithAlpha True if at least one of the rendered tiles has alpha
409
+ * @protected
410
+ */
411
+ beforeTilesRender(frameState, tilesWithAlpha) {
412
+ this.helper.prepareDraw(this.frameState, !tilesWithAlpha);
413
+ }
414
+
415
+ /**
416
+ * @param {TileRepresentation} tileRepresentation Tile representation
417
+ * @param {import("../../transform.js").Transform} tileTransform Tile transform
418
+ * @param {import("../../Map.js").FrameState} frameState Frame state
419
+ * @param {import("../../extent.js").Extent} renderExtent Render extent
420
+ * @param {number} tileResolution Tile resolution
421
+ * @param {import("../../size.js").Size} tileSize Tile size
422
+ * @param {import("../../coordinate.js").Coordinate} tileOrigin Tile origin
423
+ * @param {import("../../extent.js").Extent} tileExtent tile Extent
424
+ * @param {number} depth Depth
425
+ * @param {number} gutter Gutter
426
+ * @param {number} alpha Alpha
427
+ * @protected
428
+ */
429
+ renderTile(
430
+ tileRepresentation,
431
+ tileTransform,
432
+ frameState,
433
+ renderExtent,
434
+ tileResolution,
435
+ tileSize,
436
+ tileOrigin,
437
+ tileExtent,
438
+ depth,
439
+ gutter,
440
+ alpha
441
+ ) {}
442
+
443
+ /**
444
+ * Render the layer.
445
+ * @param {import("../../Map.js").FrameState} frameState Frame state.
446
+ * @return {HTMLElement} The rendered element.
447
+ */
448
+ renderFrame(frameState) {
449
+ this.frameState = frameState;
450
+ this.renderComplete = true;
451
+ const gl = this.helper.getGL();
452
+ this.preRender(gl, frameState);
453
+
454
+ const viewState = frameState.viewState;
455
+ const tileLayer = this.getLayer();
456
+ const tileSource = tileLayer.getRenderSource();
457
+ const tileGrid = tileSource.getTileGridForProjection(viewState.projection);
458
+ const gutter = tileSource.getGutterForProjection(viewState.projection);
459
+ const extent = getRenderExtent(frameState, frameState.extent);
460
+ const z = tileGrid.getZForResolution(
461
+ viewState.resolution,
462
+ tileSource.zDirection
463
+ );
464
+
465
+ /**
466
+ * @type {TileRepresentationLookup}
467
+ */
468
+ const tileRepresentationLookup = newTileRepresentationLookup();
469
+
470
+ const preload = tileLayer.getPreload();
471
+ if (frameState.nextExtent) {
472
+ const targetZ = tileGrid.getZForResolution(
473
+ viewState.nextResolution,
474
+ tileSource.zDirection
475
+ );
476
+ const nextExtent = getRenderExtent(frameState, frameState.nextExtent);
477
+ this.enqueueTiles(
478
+ frameState,
479
+ nextExtent,
480
+ targetZ,
481
+ tileRepresentationLookup,
482
+ preload
483
+ );
484
+ }
485
+
486
+ this.enqueueTiles(frameState, extent, z, tileRepresentationLookup, 0);
487
+ if (preload > 0) {
488
+ setTimeout(() => {
489
+ this.enqueueTiles(
490
+ frameState,
491
+ extent,
492
+ z - 1,
493
+ tileRepresentationLookup,
494
+ preload - 1
495
+ );
496
+ }, 0);
497
+ }
498
+
499
+ /**
500
+ * A lookup of alpha values for tiles at the target rendering resolution
501
+ * for tiles that are in transition. If a tile coord key is absent from
502
+ * this lookup, the tile should be rendered at alpha 1.
503
+ * @type {Object<string, number>}
504
+ */
505
+ const alphaLookup = {};
506
+
507
+ const uid = getUid(this);
508
+ const time = frameState.time;
509
+ let blend = false;
510
+
511
+ // look for cached tiles to use if a target tile is not ready
512
+ for (const tileRepresentation of tileRepresentationLookup
513
+ .representationsByZ[z]) {
514
+ const tile = tileRepresentation.tile;
515
+ if (
516
+ (tile instanceof ReprojTile || tile instanceof ReprojDataTile) &&
517
+ tile.getState() === TileState.EMPTY
518
+ ) {
519
+ continue;
520
+ }
521
+ const tileCoord = tile.tileCoord;
522
+
523
+ if (tileRepresentation.loaded) {
524
+ const alpha = tile.getAlpha(uid, time);
525
+ if (alpha === 1) {
526
+ // no need to look for alt tiles
527
+ tile.endTransition(uid);
528
+ continue;
529
+ }
530
+ blend = true;
531
+ const tileCoordKey = getTileCoordKey(tileCoord);
532
+ alphaLookup[tileCoordKey] = alpha;
533
+ }
534
+ this.renderComplete = false;
535
+
536
+ // first look for child tiles (at z + 1)
537
+ const coveredByChildren = this.findAltTiles_(
538
+ tileGrid,
539
+ tileCoord,
540
+ z + 1,
541
+ tileRepresentationLookup
542
+ );
543
+
544
+ if (coveredByChildren) {
545
+ continue;
546
+ }
547
+
548
+ // next look for parent tiles
549
+ const minZoom = tileGrid.getMinZoom();
550
+ for (let parentZ = z - 1; parentZ >= minZoom; --parentZ) {
551
+ const coveredByParent = this.findAltTiles_(
552
+ tileGrid,
553
+ tileCoord,
554
+ parentZ,
555
+ tileRepresentationLookup
556
+ );
557
+
558
+ if (coveredByParent) {
559
+ break;
560
+ }
561
+ }
562
+ }
563
+
564
+ this.beforeTilesRender(frameState, blend);
565
+
566
+ const representationsByZ = tileRepresentationLookup.representationsByZ;
567
+ const zs = Object.keys(representationsByZ).map(Number).sort(ascending);
568
+
569
+ for (let j = 0, jj = zs.length; j < jj; ++j) {
570
+ const tileZ = zs[j];
571
+ for (const tileRepresentation of representationsByZ[tileZ]) {
572
+ if (!tileRepresentation.loaded) {
573
+ continue;
574
+ }
575
+ const tile = tileRepresentation.tile;
576
+ const tileCoord = tile.tileCoord;
577
+ const tileCoordKey = getTileCoordKey(tileCoord);
578
+ const alpha =
579
+ tileCoordKey in alphaLookup ? alphaLookup[tileCoordKey] : 1;
580
+
581
+ if (alpha < 1) {
582
+ frameState.animate = true;
583
+ }
584
+
585
+ const tileResolution = tileGrid.getResolution(tileZ);
586
+ const tileSize = toSize(tileGrid.getTileSize(tileZ), this.tempSize_);
587
+ const tileOrigin = tileGrid.getOrigin(tileZ);
588
+ const tileExtent = tileGrid.getTileCoordExtent(tileCoord);
589
+ const depth = depthForZ(tileZ);
590
+
591
+ const viewState = frameState.viewState;
592
+ const centerX = viewState.center[0];
593
+ const centerY = viewState.center[1];
594
+
595
+ const tileWidthWithGutter = tileSize[0] + 2 * gutter;
596
+ const tileHeightWithGutter = tileSize[1] + 2 * gutter;
597
+
598
+ const aspectRatio = tileWidthWithGutter / tileHeightWithGutter;
599
+
600
+ const centerI =
601
+ (centerX - tileOrigin[0]) / (tileSize[0] * tileResolution);
602
+ const centerJ =
603
+ (tileOrigin[1] - centerY) / (tileSize[1] * tileResolution);
604
+
605
+ const tileScale = viewState.resolution / tileResolution;
606
+
607
+ const tileCenterI = tileCoord[1];
608
+ const tileCenterJ = tileCoord[2];
609
+
610
+ resetTransform(this.tileTransform_);
611
+ scaleTransform(
612
+ this.tileTransform_,
613
+ 2 / ((frameState.size[0] * tileScale) / tileWidthWithGutter),
614
+ -2 / ((frameState.size[1] * tileScale) / tileWidthWithGutter)
615
+ );
616
+ rotateTransform(this.tileTransform_, viewState.rotation);
617
+ scaleTransform(this.tileTransform_, 1, 1 / aspectRatio);
618
+ translateTransform(
619
+ this.tileTransform_,
620
+ (tileSize[0] * (tileCenterI - centerI) - gutter) /
621
+ tileWidthWithGutter,
622
+ (tileSize[1] * (tileCenterJ - centerJ) - gutter) /
623
+ tileHeightWithGutter
624
+ );
625
+
626
+ this.renderTile(
627
+ /** @type {TileRepresentation} */ (tileRepresentation),
628
+ this.tileTransform_,
629
+ frameState,
630
+ extent,
631
+ tileResolution,
632
+ tileSize,
633
+ tileOrigin,
634
+ tileExtent,
635
+ depth,
636
+ gutter,
637
+ alpha
638
+ );
639
+ }
640
+ }
641
+
642
+ this.helper.finalizeDraw(
643
+ frameState,
644
+ this.dispatchPreComposeEvent,
645
+ this.dispatchPostComposeEvent
646
+ );
647
+
648
+ const canvas = this.helper.getCanvas();
649
+
650
+ const tileRepresentationCache = this.tileRepresentationCache;
651
+ while (tileRepresentationCache.canExpireCache()) {
652
+ const tileRepresentation = tileRepresentationCache.pop();
653
+ tileRepresentation.dispose();
654
+ }
655
+
656
+ // TODO: let the renderers manage their own cache instead of managing the source cache
657
+ /**
658
+ * Here we unconditionally expire the source cache since the renderer maintains
659
+ * its own cache.
660
+ * @param {import("../../Map.js").default} map Map.
661
+ * @param {import("../../Map.js").FrameState} frameState Frame state.
662
+ */
663
+ const postRenderFunction = function (map, frameState) {
664
+ tileSource.updateCacheSize(0.1, frameState.viewState.projection);
665
+ tileSource.expireCache(frameState.viewState.projection, empty);
666
+ };
667
+
668
+ frameState.postRenderFunctions.push(postRenderFunction);
669
+
670
+ this.postRender(gl, frameState);
671
+ return canvas;
672
+ }
673
+
674
+ /**
675
+ * Look for tiles covering the provided tile coordinate at an alternate
676
+ * zoom level. Loaded tiles will be added to the provided tile representation lookup.
677
+ * @param {import("../../tilegrid/TileGrid.js").default} tileGrid The tile grid.
678
+ * @param {import("../../tilecoord.js").TileCoord} tileCoord The target tile coordinate.
679
+ * @param {number} altZ The alternate zoom level.
680
+ * @param {TileRepresentationLookup} tileRepresentationLookup Lookup of
681
+ * tile representations by zoom level.
682
+ * @return {boolean} The tile coordinate is covered by loaded tiles at the alternate zoom level.
683
+ * @private
684
+ */
685
+ findAltTiles_(tileGrid, tileCoord, altZ, tileRepresentationLookup) {
686
+ const tileRange = tileGrid.getTileRangeForTileCoordAndZ(
687
+ tileCoord,
688
+ altZ,
689
+ this.tempTileRange_
690
+ );
691
+
692
+ if (!tileRange) {
693
+ return false;
694
+ }
695
+
696
+ let covered = true;
697
+ const tileRepresentationCache = this.tileRepresentationCache;
698
+ const source = this.getLayer().getRenderSource();
699
+ for (let x = tileRange.minX; x <= tileRange.maxX; ++x) {
700
+ for (let y = tileRange.minY; y <= tileRange.maxY; ++y) {
701
+ const cacheKey = getCacheKey(source, [altZ, x, y]);
702
+ let loaded = false;
703
+ if (tileRepresentationCache.containsKey(cacheKey)) {
704
+ const tileRepresentation = tileRepresentationCache.get(cacheKey);
705
+ if (
706
+ tileRepresentation.loaded &&
707
+ !lookupHasTile(tileRepresentationLookup, tileRepresentation.tile)
708
+ ) {
709
+ addTileRepresentationToLookup(
710
+ tileRepresentationLookup,
711
+ tileRepresentation,
712
+ altZ
713
+ );
714
+ loaded = true;
715
+ }
716
+ }
717
+ if (!loaded) {
718
+ covered = false;
719
+ }
720
+ }
721
+ }
722
+ return covered;
723
+ }
724
+
725
+ clearCache() {
726
+ const tileRepresentationCache = this.tileRepresentationCache;
727
+ tileRepresentationCache.forEach((tileRepresentation) =>
728
+ tileRepresentation.dispose()
729
+ );
730
+ tileRepresentationCache.clear();
731
+ }
732
+
733
+ removeHelper() {
734
+ if (this.helper) {
735
+ this.clearCache();
736
+ }
737
+
738
+ super.removeHelper();
739
+ }
740
+
741
+ /**
742
+ * Clean up.
743
+ */
744
+ disposeInternal() {
745
+ super.disposeInternal();
746
+ delete this.frameState;
747
+ }
748
+ }
749
+
750
+ export default WebGLBaseTileLayerRenderer;