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