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