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
package/webgl/ShaderBuilder.js
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Class for generating shaders from literal style objects
|
|
3
3
|
* @module ol/webgl/ShaderBuilder
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
const BASE_UNIFORMS = `uniform mat4 u_projectionMatrix;
|
|
7
|
+
uniform mat4 u_screenToWorldMatrix;
|
|
8
|
+
uniform vec2 u_viewportSizePx;
|
|
9
|
+
uniform float u_pixelRatio;
|
|
10
|
+
uniform float u_globalAlpha;
|
|
11
|
+
uniform float u_time;
|
|
12
|
+
uniform float u_zoom;
|
|
13
|
+
uniform float u_resolution;
|
|
14
|
+
uniform vec4 u_renderExtent;`;
|
|
12
15
|
|
|
13
16
|
/**
|
|
14
17
|
* @typedef {Object} VaryingDescription
|
|
@@ -28,7 +31,7 @@ import {
|
|
|
28
31
|
* .addVarying('v_width', 'float', 'a_width')
|
|
29
32
|
* .addUniform('u_time')
|
|
30
33
|
* .setColorExpression('...')
|
|
31
|
-
* .
|
|
34
|
+
* .setSymbolSizeExpression('...')
|
|
32
35
|
* .outputSymbolFragmentShader();
|
|
33
36
|
* ```
|
|
34
37
|
*/
|
|
@@ -39,63 +42,93 @@ export class ShaderBuilder {
|
|
|
39
42
|
* @type {Array<string>}
|
|
40
43
|
* @private
|
|
41
44
|
*/
|
|
42
|
-
this.
|
|
45
|
+
this.uniforms_ = [];
|
|
43
46
|
|
|
44
47
|
/**
|
|
45
48
|
* Attributes; these will be declared in the header (should include the type).
|
|
46
49
|
* @type {Array<string>}
|
|
47
50
|
* @private
|
|
48
51
|
*/
|
|
49
|
-
this.
|
|
52
|
+
this.attributes_ = [];
|
|
50
53
|
|
|
51
54
|
/**
|
|
52
55
|
* Varyings with a name, a type and an expression.
|
|
53
56
|
* @type {Array<VaryingDescription>}
|
|
54
57
|
* @private
|
|
55
58
|
*/
|
|
56
|
-
this.
|
|
59
|
+
this.varyings_ = [];
|
|
57
60
|
|
|
58
61
|
/**
|
|
59
62
|
* @type {string}
|
|
60
63
|
* @private
|
|
61
64
|
*/
|
|
62
|
-
this.
|
|
65
|
+
this.symbolSizeExpression_ = 'vec2(1.0)';
|
|
63
66
|
|
|
64
67
|
/**
|
|
65
68
|
* @type {string}
|
|
66
69
|
* @private
|
|
67
70
|
*/
|
|
68
|
-
this.
|
|
71
|
+
this.symbolRotationExpression_ = '0.0';
|
|
69
72
|
|
|
70
73
|
/**
|
|
71
74
|
* @type {string}
|
|
72
75
|
* @private
|
|
73
76
|
*/
|
|
74
|
-
this.
|
|
77
|
+
this.symbolOffsetExpression_ = 'vec2(0.0)';
|
|
75
78
|
|
|
76
79
|
/**
|
|
77
80
|
* @type {string}
|
|
78
81
|
* @private
|
|
79
82
|
*/
|
|
80
|
-
this.
|
|
83
|
+
this.symbolColorExpression_ = 'vec4(1.0)';
|
|
81
84
|
|
|
82
85
|
/**
|
|
83
86
|
* @type {string}
|
|
84
87
|
* @private
|
|
85
88
|
*/
|
|
86
|
-
this.
|
|
89
|
+
this.texCoordExpression_ = 'vec4(0.0, 0.0, 1.0, 1.0)';
|
|
87
90
|
|
|
88
91
|
/**
|
|
89
92
|
* @type {string}
|
|
90
93
|
* @private
|
|
91
94
|
*/
|
|
92
|
-
this.
|
|
95
|
+
this.discardExpression_ = 'false';
|
|
93
96
|
|
|
94
97
|
/**
|
|
95
98
|
* @type {boolean}
|
|
96
99
|
* @private
|
|
97
100
|
*/
|
|
98
|
-
this.
|
|
101
|
+
this.symbolRotateWithView_ = false;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* @type {string}
|
|
105
|
+
* @private
|
|
106
|
+
*/
|
|
107
|
+
this.strokeWidthExpression_ = '1.0';
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* @type {string}
|
|
111
|
+
* @private
|
|
112
|
+
*/
|
|
113
|
+
this.strokeColorExpression_ = 'vec4(1.0)';
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* @type {string}
|
|
117
|
+
* @private
|
|
118
|
+
*/
|
|
119
|
+
this.fillColorExpression_ = 'vec4(1.0)';
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* @type {Array<string>}
|
|
123
|
+
* @private
|
|
124
|
+
*/
|
|
125
|
+
this.vertexShaderFunctions_ = [];
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* @type {Array<string>}
|
|
129
|
+
* @private
|
|
130
|
+
*/
|
|
131
|
+
this.fragmentShaderFunctions_ = [];
|
|
99
132
|
}
|
|
100
133
|
|
|
101
134
|
/**
|
|
@@ -105,7 +138,7 @@ export class ShaderBuilder {
|
|
|
105
138
|
* @return {ShaderBuilder} the builder object
|
|
106
139
|
*/
|
|
107
140
|
addUniform(name) {
|
|
108
|
-
this.
|
|
141
|
+
this.uniforms_.push(name);
|
|
109
142
|
return this;
|
|
110
143
|
}
|
|
111
144
|
|
|
@@ -116,7 +149,7 @@ export class ShaderBuilder {
|
|
|
116
149
|
* @return {ShaderBuilder} the builder object
|
|
117
150
|
*/
|
|
118
151
|
addAttribute(name) {
|
|
119
|
-
this.
|
|
152
|
+
this.attributes_.push(name);
|
|
120
153
|
return this;
|
|
121
154
|
}
|
|
122
155
|
|
|
@@ -129,7 +162,7 @@ export class ShaderBuilder {
|
|
|
129
162
|
* @return {ShaderBuilder} the builder object
|
|
130
163
|
*/
|
|
131
164
|
addVarying(name, type, expression) {
|
|
132
|
-
this.
|
|
165
|
+
this.varyings_.push({
|
|
133
166
|
name: name,
|
|
134
167
|
type: type,
|
|
135
168
|
expression: expression,
|
|
@@ -144,8 +177,8 @@ export class ShaderBuilder {
|
|
|
144
177
|
* @param {string} expression Size expression
|
|
145
178
|
* @return {ShaderBuilder} the builder object
|
|
146
179
|
*/
|
|
147
|
-
|
|
148
|
-
this.
|
|
180
|
+
setSymbolSizeExpression(expression) {
|
|
181
|
+
this.symbolSizeExpression_ = expression;
|
|
149
182
|
return this;
|
|
150
183
|
}
|
|
151
184
|
|
|
@@ -156,8 +189,8 @@ export class ShaderBuilder {
|
|
|
156
189
|
* @param {string} expression Size expression
|
|
157
190
|
* @return {ShaderBuilder} the builder object
|
|
158
191
|
*/
|
|
159
|
-
|
|
160
|
-
this.
|
|
192
|
+
setSymbolRotationExpression(expression) {
|
|
193
|
+
this.symbolRotationExpression_ = expression;
|
|
161
194
|
return this;
|
|
162
195
|
}
|
|
163
196
|
|
|
@@ -170,7 +203,7 @@ export class ShaderBuilder {
|
|
|
170
203
|
* @return {ShaderBuilder} the builder object
|
|
171
204
|
*/
|
|
172
205
|
setSymbolOffsetExpression(expression) {
|
|
173
|
-
this.
|
|
206
|
+
this.symbolOffsetExpression_ = expression;
|
|
174
207
|
return this;
|
|
175
208
|
}
|
|
176
209
|
|
|
@@ -181,8 +214,8 @@ export class ShaderBuilder {
|
|
|
181
214
|
* @param {string} expression Color expression
|
|
182
215
|
* @return {ShaderBuilder} the builder object
|
|
183
216
|
*/
|
|
184
|
-
|
|
185
|
-
this.
|
|
217
|
+
setSymbolColorExpression(expression) {
|
|
218
|
+
this.symbolColorExpression_ = expression;
|
|
186
219
|
return this;
|
|
187
220
|
}
|
|
188
221
|
|
|
@@ -194,7 +227,7 @@ export class ShaderBuilder {
|
|
|
194
227
|
* @return {ShaderBuilder} the builder object
|
|
195
228
|
*/
|
|
196
229
|
setTextureCoordinateExpression(expression) {
|
|
197
|
-
this.
|
|
230
|
+
this.texCoordExpression_ = expression;
|
|
198
231
|
return this;
|
|
199
232
|
}
|
|
200
233
|
|
|
@@ -208,7 +241,7 @@ export class ShaderBuilder {
|
|
|
208
241
|
* @return {ShaderBuilder} the builder object
|
|
209
242
|
*/
|
|
210
243
|
setFragmentDiscardExpression(expression) {
|
|
211
|
-
this.
|
|
244
|
+
this.discardExpression_ = expression;
|
|
212
245
|
return this;
|
|
213
246
|
}
|
|
214
247
|
|
|
@@ -219,48 +252,44 @@ export class ShaderBuilder {
|
|
|
219
252
|
* @return {ShaderBuilder} the builder object
|
|
220
253
|
*/
|
|
221
254
|
setSymbolRotateWithView(rotateWithView) {
|
|
222
|
-
this.
|
|
255
|
+
this.symbolRotateWithView_ = rotateWithView;
|
|
223
256
|
return this;
|
|
224
257
|
}
|
|
225
258
|
|
|
226
259
|
/**
|
|
227
|
-
* @
|
|
260
|
+
* @param {string} expression Stroke width expression, returning value in pixels
|
|
261
|
+
* @return {ShaderBuilder} the builder object
|
|
228
262
|
*/
|
|
229
|
-
|
|
230
|
-
|
|
263
|
+
setStrokeWidthExpression(expression) {
|
|
264
|
+
this.strokeWidthExpression_ = expression;
|
|
265
|
+
return this;
|
|
231
266
|
}
|
|
232
267
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
getOffsetExpression() {
|
|
237
|
-
return this.offsetExpression;
|
|
268
|
+
setStrokeColorExpression(expression) {
|
|
269
|
+
this.strokeColorExpression_ = expression;
|
|
270
|
+
return this;
|
|
238
271
|
}
|
|
239
272
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
getColorExpression() {
|
|
244
|
-
return this.colorExpression;
|
|
273
|
+
setFillColorExpression(expression) {
|
|
274
|
+
this.fillColorExpression_ = expression;
|
|
275
|
+
return this;
|
|
245
276
|
}
|
|
246
277
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
278
|
+
addVertexShaderFunction(code) {
|
|
279
|
+
if (this.vertexShaderFunctions_.includes(code)) {
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
this.vertexShaderFunctions_.push(code);
|
|
252
283
|
}
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
return this.discardExpression;
|
|
284
|
+
addFragmentShaderFunction(code) {
|
|
285
|
+
if (this.fragmentShaderFunctions_.includes(code)) {
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
this.fragmentShaderFunctions_.push(code);
|
|
259
289
|
}
|
|
260
290
|
|
|
261
291
|
/**
|
|
262
|
-
* Generates a symbol vertex shader from the builder parameters
|
|
263
|
-
* intended to be used on point geometries.
|
|
292
|
+
* Generates a symbol vertex shader from the builder parameters
|
|
264
293
|
*
|
|
265
294
|
* Four uniforms are hardcoded in all shaders: `u_projectionMatrix`, `u_offsetScaleMatrix`,
|
|
266
295
|
* `u_offsetRotateMatrix`, `u_time`.
|
|
@@ -276,12 +305,12 @@ export class ShaderBuilder {
|
|
|
276
305
|
* @return {string} The full shader as a string.
|
|
277
306
|
*/
|
|
278
307
|
getSymbolVertexShader(forHitDetection) {
|
|
279
|
-
const offsetMatrix = this.
|
|
308
|
+
const offsetMatrix = this.symbolRotateWithView_
|
|
280
309
|
? 'u_offsetScaleMatrix * u_offsetRotateMatrix'
|
|
281
310
|
: 'u_offsetScaleMatrix';
|
|
282
311
|
|
|
283
|
-
let attributes = this.
|
|
284
|
-
let varyings = this.
|
|
312
|
+
let attributes = this.attributes_;
|
|
313
|
+
let varyings = this.varyings_;
|
|
285
314
|
|
|
286
315
|
if (forHitDetection) {
|
|
287
316
|
attributes = attributes.concat('vec4 a_hitColor');
|
|
@@ -299,7 +328,7 @@ uniform mat4 u_offsetRotateMatrix;
|
|
|
299
328
|
uniform float u_time;
|
|
300
329
|
uniform float u_zoom;
|
|
301
330
|
uniform float u_resolution;
|
|
302
|
-
${this.
|
|
331
|
+
${this.uniforms_
|
|
303
332
|
.map(function (uniform) {
|
|
304
333
|
return 'uniform ' + uniform + ';';
|
|
305
334
|
})
|
|
@@ -318,11 +347,12 @@ ${varyings
|
|
|
318
347
|
return 'varying ' + varying.type + ' ' + varying.name + ';';
|
|
319
348
|
})
|
|
320
349
|
.join('\n')}
|
|
350
|
+
${this.vertexShaderFunctions_.join('\n')}
|
|
321
351
|
void main(void) {
|
|
322
352
|
mat4 offsetMatrix = ${offsetMatrix};
|
|
323
|
-
vec2 halfSize = ${this.
|
|
324
|
-
vec2 offset = ${this.
|
|
325
|
-
float angle = ${this.
|
|
353
|
+
vec2 halfSize = ${this.symbolSizeExpression_} * 0.5;
|
|
354
|
+
vec2 offset = ${this.symbolOffsetExpression_};
|
|
355
|
+
float angle = ${this.symbolRotationExpression_};
|
|
326
356
|
float offsetX;
|
|
327
357
|
float offsetY;
|
|
328
358
|
if (a_index == 0.0) {
|
|
@@ -340,7 +370,7 @@ void main(void) {
|
|
|
340
370
|
}
|
|
341
371
|
vec4 offsets = offsetMatrix * vec4(offsetX, offsetY, 0.0, 0.0);
|
|
342
372
|
gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets;
|
|
343
|
-
vec4 texCoord = ${this.
|
|
373
|
+
vec4 texCoord = ${this.texCoordExpression_};
|
|
344
374
|
float u = a_index == 0.0 || a_index == 3.0 ? texCoord.s : texCoord.p;
|
|
345
375
|
float v = a_index == 2.0 || a_index == 3.0 ? texCoord.t : texCoord.q;
|
|
346
376
|
v_texCoord = vec2(u, v);
|
|
@@ -356,8 +386,7 @@ ${varyings
|
|
|
356
386
|
}
|
|
357
387
|
|
|
358
388
|
/**
|
|
359
|
-
* Generates a symbol fragment shader from the builder parameters
|
|
360
|
-
* intended to be used on point geometries.
|
|
389
|
+
* Generates a symbol fragment shader from the builder parameters
|
|
361
390
|
*
|
|
362
391
|
* Expects the following varyings to be transmitted by the vertex shader:
|
|
363
392
|
* `vec2 v_quadCoord`, `vec2 v_texCoord`
|
|
@@ -371,7 +400,7 @@ ${varyings
|
|
|
371
400
|
? ' if (gl_FragColor.a < 0.1) { discard; } gl_FragColor = v_hitColor;'
|
|
372
401
|
: '';
|
|
373
402
|
|
|
374
|
-
let varyings = this.
|
|
403
|
+
let varyings = this.varyings_;
|
|
375
404
|
|
|
376
405
|
if (forHitDetection) {
|
|
377
406
|
varyings = varyings.concat({
|
|
@@ -385,7 +414,7 @@ ${varyings
|
|
|
385
414
|
uniform float u_time;
|
|
386
415
|
uniform float u_zoom;
|
|
387
416
|
uniform float u_resolution;
|
|
388
|
-
${this.
|
|
417
|
+
${this.uniforms_
|
|
389
418
|
.map(function (uniform) {
|
|
390
419
|
return 'uniform ' + uniform + ';';
|
|
391
420
|
})
|
|
@@ -397,196 +426,308 @@ ${varyings
|
|
|
397
426
|
return 'varying ' + varying.type + ' ' + varying.name + ';';
|
|
398
427
|
})
|
|
399
428
|
.join('\n')}
|
|
429
|
+
${this.fragmentShaderFunctions_.join('\n')}
|
|
400
430
|
void main(void) {
|
|
401
|
-
if (${this.
|
|
402
|
-
gl_FragColor = ${this.
|
|
431
|
+
if (${this.discardExpression_}) { discard; }
|
|
432
|
+
gl_FragColor = ${this.symbolColorExpression_};
|
|
403
433
|
gl_FragColor.rgb *= gl_FragColor.a;
|
|
404
434
|
${hitDetectionBypass}
|
|
405
435
|
}`;
|
|
406
436
|
}
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* Generates a stroke vertex shader from the builder parameters
|
|
440
|
+
*
|
|
441
|
+
* @param {boolean} [forHitDetection] If true, the shader will be modified to include hit detection variables
|
|
442
|
+
* (namely, hit color with encoded feature id).
|
|
443
|
+
* @return {string} The full shader as a string.
|
|
444
|
+
*/
|
|
445
|
+
getStrokeVertexShader(forHitDetection) {
|
|
446
|
+
let attributes = this.attributes_;
|
|
447
|
+
let varyings = this.varyings_;
|
|
448
|
+
|
|
449
|
+
if (forHitDetection) {
|
|
450
|
+
attributes = attributes.concat('vec4 a_hitColor');
|
|
451
|
+
varyings = varyings.concat({
|
|
452
|
+
name: 'v_hitColor',
|
|
453
|
+
type: 'vec4',
|
|
454
|
+
expression: 'a_hitColor',
|
|
455
|
+
});
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
return `#ifdef GL_FRAGMENT_PRECISION_HIGH
|
|
459
|
+
precision highp float;
|
|
460
|
+
#else
|
|
461
|
+
precision mediump float;
|
|
462
|
+
#endif
|
|
463
|
+
${BASE_UNIFORMS}
|
|
464
|
+
${this.uniforms_
|
|
465
|
+
.map(function (uniform) {
|
|
466
|
+
return 'uniform ' + uniform + ';';
|
|
467
|
+
})
|
|
468
|
+
.join('\n')}
|
|
469
|
+
attribute vec2 a_position;
|
|
470
|
+
attribute float a_index;
|
|
471
|
+
attribute vec2 a_segmentStart;
|
|
472
|
+
attribute vec2 a_segmentEnd;
|
|
473
|
+
attribute float a_parameters;
|
|
474
|
+
${attributes
|
|
475
|
+
.map(function (attribute) {
|
|
476
|
+
return 'attribute ' + attribute + ';';
|
|
477
|
+
})
|
|
478
|
+
.join('\n')}
|
|
479
|
+
varying vec2 v_segmentStart;
|
|
480
|
+
varying vec2 v_segmentEnd;
|
|
481
|
+
varying float v_angleStart;
|
|
482
|
+
varying float v_angleEnd;
|
|
483
|
+
varying float v_width;
|
|
484
|
+
${varyings
|
|
485
|
+
.map(function (varying) {
|
|
486
|
+
return 'varying ' + varying.type + ' ' + varying.name + ';';
|
|
487
|
+
})
|
|
488
|
+
.join('\n')}
|
|
489
|
+
${this.vertexShaderFunctions_.join('\n')}
|
|
490
|
+
vec2 worldToPx(vec2 worldPos) {
|
|
491
|
+
vec4 screenPos = u_projectionMatrix * vec4(worldPos, 0.0, 1.0);
|
|
492
|
+
return (0.5 * screenPos.xy + 0.5) * u_viewportSizePx;
|
|
407
493
|
}
|
|
408
494
|
|
|
409
|
-
|
|
410
|
-
*
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
* @property {Array<import("../renderer/webgl/PointsLayer").CustomAttribute>} attributes Attribute descriptions.
|
|
414
|
-
*/
|
|
495
|
+
vec4 pxToScreen(vec2 pxPos) {
|
|
496
|
+
vec2 screenPos = pxPos * 4.0 / u_viewportSizePx;
|
|
497
|
+
return vec4(screenPos.xy, 0.0, 0.0);
|
|
498
|
+
}
|
|
415
499
|
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
*
|
|
421
|
-
*
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
*
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
500
|
+
vec2 getOffsetDirection(vec2 normalPx, vec2 tangentPx, float joinAngle) {
|
|
501
|
+
if (cos(joinAngle) > 0.93) return normalPx - tangentPx;
|
|
502
|
+
float halfAngle = joinAngle / 2.0;
|
|
503
|
+
vec2 angleBisectorNormal = vec2(
|
|
504
|
+
sin(halfAngle) * normalPx.x + cos(halfAngle) * normalPx.y,
|
|
505
|
+
-cos(halfAngle) * normalPx.x + sin(halfAngle) * normalPx.y
|
|
506
|
+
);
|
|
507
|
+
float length = 1.0 / sin(halfAngle);
|
|
508
|
+
return angleBisectorNormal * length;
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
void main(void) {
|
|
512
|
+
float lineWidth = ${this.strokeWidthExpression_};
|
|
513
|
+
float anglePrecision = 1500.0;
|
|
514
|
+
float paramShift = 10000.0;
|
|
515
|
+
v_angleStart = fract(a_parameters / paramShift) * paramShift / anglePrecision;
|
|
516
|
+
v_angleEnd = fract(floor(a_parameters / paramShift + 0.5) / paramShift) * paramShift / anglePrecision;
|
|
517
|
+
float vertexNumber = floor(a_parameters / paramShift / paramShift + 0.0001);
|
|
518
|
+
vec2 tangentPx = worldToPx(a_segmentEnd) - worldToPx(a_segmentStart);
|
|
519
|
+
tangentPx = normalize(tangentPx);
|
|
520
|
+
vec2 normalPx = vec2(-tangentPx.y, tangentPx.x);
|
|
521
|
+
float normalDir = vertexNumber < 0.5 || (vertexNumber > 1.5 && vertexNumber < 2.5) ? 1.0 : -1.0;
|
|
522
|
+
float tangentDir = vertexNumber < 1.5 ? 1.0 : -1.0;
|
|
523
|
+
float angle = vertexNumber < 1.5 ? v_angleStart : v_angleEnd;
|
|
524
|
+
vec2 offsetPx = getOffsetDirection(normalPx * normalDir, tangentDir * tangentPx, angle) * lineWidth * 0.5;
|
|
525
|
+
vec2 position = vertexNumber < 1.5 ? a_segmentStart : a_segmentEnd;
|
|
526
|
+
gl_Position = u_projectionMatrix * vec4(position, 0.0, 1.0) + pxToScreen(offsetPx);
|
|
527
|
+
v_segmentStart = worldToPx(a_segmentStart);
|
|
528
|
+
v_segmentEnd = worldToPx(a_segmentEnd);
|
|
529
|
+
v_width = lineWidth;
|
|
530
|
+
${varyings
|
|
531
|
+
.map(function (varying) {
|
|
532
|
+
return ' ' + varying.name + ' = ' + varying.expression + ';';
|
|
533
|
+
})
|
|
534
|
+
.join('\n')}
|
|
535
|
+
}`;
|
|
536
|
+
}
|
|
435
537
|
|
|
436
538
|
/**
|
|
437
|
-
*
|
|
539
|
+
* Generates a stroke fragment shader from the builder parameters
|
|
540
|
+
*
|
|
541
|
+
* @param {boolean} [forHitDetection] If true, the shader will be modified to include hit detection variables
|
|
542
|
+
* (namely, hit color with encoded feature id).
|
|
543
|
+
* @return {string} The full shader as a string.
|
|
438
544
|
*/
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
545
|
+
getStrokeFragmentShader(forHitDetection) {
|
|
546
|
+
const hitDetectionBypass = forHitDetection
|
|
547
|
+
? ' if (gl_FragColor.a < 0.1) { discard; } gl_FragColor = v_hitColor;'
|
|
548
|
+
: '';
|
|
549
|
+
|
|
550
|
+
let varyings = this.varyings_;
|
|
551
|
+
|
|
552
|
+
if (forHitDetection) {
|
|
553
|
+
varyings = varyings.concat({
|
|
554
|
+
name: 'v_hitColor',
|
|
555
|
+
type: 'vec4',
|
|
556
|
+
expression: 'a_hitColor',
|
|
557
|
+
});
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
return `#ifdef GL_FRAGMENT_PRECISION_HIGH
|
|
561
|
+
precision highp float;
|
|
562
|
+
#else
|
|
563
|
+
precision mediump float;
|
|
564
|
+
#endif
|
|
565
|
+
${BASE_UNIFORMS}
|
|
566
|
+
${this.uniforms_
|
|
567
|
+
.map(function (uniform) {
|
|
568
|
+
return 'uniform ' + uniform + ';';
|
|
569
|
+
})
|
|
570
|
+
.join('\n')}
|
|
571
|
+
varying vec2 v_segmentStart;
|
|
572
|
+
varying vec2 v_segmentEnd;
|
|
573
|
+
varying float v_angleStart;
|
|
574
|
+
varying float v_angleEnd;
|
|
575
|
+
varying float v_width;
|
|
576
|
+
${varyings
|
|
577
|
+
.map(function (varying) {
|
|
578
|
+
return 'varying ' + varying.type + ' ' + varying.name + ';';
|
|
579
|
+
})
|
|
580
|
+
.join('\n')}
|
|
581
|
+
${this.fragmentShaderFunctions_.join('\n')}
|
|
582
|
+
vec2 pxToWorld(vec2 pxPos) {
|
|
583
|
+
vec2 screenPos = 2.0 * pxPos / u_viewportSizePx - 1.0;
|
|
584
|
+
return (u_screenToWorldMatrix * vec4(screenPos, 0.0, 1.0)).xy;
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
float segmentDistanceField(vec2 point, vec2 start, vec2 end, float radius) {
|
|
588
|
+
vec2 startToPoint = point - start;
|
|
589
|
+
vec2 startToEnd = end - start;
|
|
590
|
+
float ratio = clamp(dot(startToPoint, startToEnd) / dot(startToEnd, startToEnd), 0.0, 1.0);
|
|
591
|
+
float dist = length(startToPoint - ratio * startToEnd);
|
|
592
|
+
return 1.0 - smoothstep(radius - 1.0, radius, dist);
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
void main(void) {
|
|
596
|
+
vec2 v_currentPoint = gl_FragCoord.xy / u_pixelRatio;
|
|
597
|
+
#ifdef GL_FRAGMENT_PRECISION_HIGH
|
|
598
|
+
vec2 v_worldPos = pxToWorld(v_currentPoint);
|
|
599
|
+
if (
|
|
600
|
+
abs(u_renderExtent[0] - u_renderExtent[2]) > 0.0 && (
|
|
601
|
+
v_worldPos[0] < u_renderExtent[0] ||
|
|
602
|
+
v_worldPos[1] < u_renderExtent[1] ||
|
|
603
|
+
v_worldPos[0] > u_renderExtent[2] ||
|
|
604
|
+
v_worldPos[1] > u_renderExtent[3]
|
|
605
|
+
)
|
|
606
|
+
) {
|
|
607
|
+
discard;
|
|
608
|
+
}
|
|
609
|
+
#endif
|
|
610
|
+
if (${this.discardExpression_}) { discard; }
|
|
611
|
+
gl_FragColor = ${this.strokeColorExpression_} * u_globalAlpha;
|
|
612
|
+
gl_FragColor *= segmentDistanceField(v_currentPoint, v_segmentStart, v_segmentEnd, v_width);
|
|
613
|
+
${hitDetectionBypass}
|
|
614
|
+
}`;
|
|
615
|
+
}
|
|
466
616
|
|
|
467
617
|
/**
|
|
468
|
-
*
|
|
618
|
+
* Generates a fill vertex shader from the builder parameters
|
|
619
|
+
*
|
|
620
|
+
* @param {boolean} [forHitDetection] If true, the shader will be modified to include hit detection variables
|
|
621
|
+
* (namely, hit color with encoded feature id).
|
|
622
|
+
* @return {string} The full shader as a string.
|
|
469
623
|
*/
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
attributes: [],
|
|
474
|
-
stringLiteralsMap: vertContext.stringLiteralsMap,
|
|
475
|
-
functions: {},
|
|
476
|
-
};
|
|
477
|
-
const parsedColor = expressionToGlsl(fragContext, color, ValueTypes.COLOR);
|
|
478
|
-
const parsedOpacity = expressionToGlsl(
|
|
479
|
-
fragContext,
|
|
480
|
-
opacity,
|
|
481
|
-
ValueTypes.NUMBER
|
|
482
|
-
);
|
|
624
|
+
getFillVertexShader(forHitDetection) {
|
|
625
|
+
let attributes = this.attributes_;
|
|
626
|
+
let varyings = this.varyings_;
|
|
483
627
|
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
break;
|
|
493
|
-
case 'image':
|
|
494
|
-
break;
|
|
495
|
-
// taken from https://thebookofshaders.com/07/
|
|
496
|
-
case 'circle':
|
|
497
|
-
opacityFilter = `(1.0-smoothstep(1.-4./${visibleSize},1.,dot(v_quadCoord-.5,v_quadCoord-.5)*4.))`;
|
|
498
|
-
break;
|
|
499
|
-
case 'triangle':
|
|
500
|
-
const st = '(v_quadCoord*2.-1.)';
|
|
501
|
-
const a = `(atan(${st}.x,${st}.y))`;
|
|
502
|
-
opacityFilter = `(1.0-smoothstep(.5-3./${visibleSize},.5,cos(floor(.5+${a}/2.094395102)*2.094395102-${a})*length(${st})))`;
|
|
503
|
-
break;
|
|
504
|
-
|
|
505
|
-
default:
|
|
506
|
-
throw new Error('Unexpected symbol type: ' + symbStyle.symbolType);
|
|
507
|
-
}
|
|
628
|
+
if (forHitDetection) {
|
|
629
|
+
attributes = attributes.concat('vec4 a_hitColor');
|
|
630
|
+
varyings = varyings.concat({
|
|
631
|
+
name: 'v_hitColor',
|
|
632
|
+
type: 'vec4',
|
|
633
|
+
expression: 'a_hitColor',
|
|
634
|
+
});
|
|
635
|
+
}
|
|
508
636
|
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
637
|
+
return `#ifdef GL_FRAGMENT_PRECISION_HIGH
|
|
638
|
+
precision highp float;
|
|
639
|
+
#else
|
|
640
|
+
precision mediump float;
|
|
641
|
+
#endif
|
|
642
|
+
${BASE_UNIFORMS}
|
|
643
|
+
${this.uniforms_
|
|
644
|
+
.map(function (uniform) {
|
|
645
|
+
return 'uniform ' + uniform + ';';
|
|
646
|
+
})
|
|
647
|
+
.join('\n')}
|
|
648
|
+
attribute vec2 a_position;
|
|
649
|
+
${attributes
|
|
650
|
+
.map(function (attribute) {
|
|
651
|
+
return 'attribute ' + attribute + ';';
|
|
652
|
+
})
|
|
653
|
+
.join('\n')}
|
|
654
|
+
${varyings
|
|
655
|
+
.map(function (varying) {
|
|
656
|
+
return 'varying ' + varying.type + ' ' + varying.name + ';';
|
|
657
|
+
})
|
|
658
|
+
.join('\n')}
|
|
659
|
+
${this.vertexShaderFunctions_.join('\n')}
|
|
660
|
+
void main(void) {
|
|
661
|
+
gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0);
|
|
662
|
+
${varyings
|
|
663
|
+
.map(function (varying) {
|
|
664
|
+
return ' ' + varying.name + ' = ' + varying.expression + ';';
|
|
665
|
+
})
|
|
666
|
+
.join('\n')}
|
|
667
|
+
}`;
|
|
526
668
|
}
|
|
527
669
|
|
|
528
|
-
/**
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
let value = style.variables[varName];
|
|
542
|
-
if (typeof value === 'string') {
|
|
543
|
-
value = getStringNumberEquivalent(vertContext, value);
|
|
544
|
-
}
|
|
545
|
-
return value !== undefined ? value : -9999999; // to avoid matching with the first string literal
|
|
546
|
-
};
|
|
547
|
-
});
|
|
548
|
-
|
|
549
|
-
if (symbStyle.symbolType === 'image' && symbStyle.src) {
|
|
550
|
-
const texture = new Image();
|
|
551
|
-
texture.crossOrigin =
|
|
552
|
-
symbStyle.crossOrigin === undefined ? 'anonymous' : symbStyle.crossOrigin;
|
|
553
|
-
texture.src = symbStyle.src;
|
|
554
|
-
builder
|
|
555
|
-
.addUniform('sampler2D u_texture')
|
|
556
|
-
.setColorExpression(
|
|
557
|
-
builder.getColorExpression() + ' * texture2D(u_texture, v_texCoord)'
|
|
558
|
-
);
|
|
559
|
-
uniforms['u_texture'] = texture;
|
|
560
|
-
}
|
|
670
|
+
/**
|
|
671
|
+
* Generates a fill fragment shader from the builder parameters
|
|
672
|
+
*
|
|
673
|
+
* @param {boolean} [forHitDetection] If true, the shader will be modified to include hit detection variables
|
|
674
|
+
* (namely, hit color with encoded feature id).
|
|
675
|
+
* @return {string} The full shader as a string.
|
|
676
|
+
*/
|
|
677
|
+
getFillFragmentShader(forHitDetection) {
|
|
678
|
+
const hitDetectionBypass = forHitDetection
|
|
679
|
+
? ' if (gl_FragColor.a < 0.1) { discard; } gl_FragColor = v_hitColor;'
|
|
680
|
+
: '';
|
|
681
|
+
|
|
682
|
+
let varyings = this.varyings_;
|
|
561
683
|
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
684
|
+
if (forHitDetection) {
|
|
685
|
+
varyings = varyings.concat({
|
|
686
|
+
name: 'v_hitColor',
|
|
687
|
+
type: 'vec4',
|
|
688
|
+
expression: 'a_hitColor',
|
|
689
|
+
});
|
|
567
690
|
}
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
691
|
+
|
|
692
|
+
return `#ifdef GL_FRAGMENT_PRECISION_HIGH
|
|
693
|
+
precision highp float;
|
|
694
|
+
#else
|
|
695
|
+
precision mediump float;
|
|
696
|
+
#endif
|
|
697
|
+
${BASE_UNIFORMS}
|
|
698
|
+
${this.uniforms_
|
|
699
|
+
.map(function (uniform) {
|
|
700
|
+
return 'uniform ' + uniform + ';';
|
|
701
|
+
})
|
|
702
|
+
.join('\n')}
|
|
703
|
+
${varyings
|
|
704
|
+
.map(function (varying) {
|
|
705
|
+
return 'varying ' + varying.type + ' ' + varying.name + ';';
|
|
706
|
+
})
|
|
707
|
+
.join('\n')}
|
|
708
|
+
${this.fragmentShaderFunctions_.join('\n')}
|
|
709
|
+
vec2 pxToWorld(vec2 pxPos) {
|
|
710
|
+
vec2 screenPos = 2.0 * pxPos / u_viewportSizePx - 1.0;
|
|
711
|
+
return (u_screenToWorldMatrix * vec4(screenPos, 0.0, 1.0)).xy;
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
void main(void) {
|
|
715
|
+
#ifdef GL_FRAGMENT_PRECISION_HIGH
|
|
716
|
+
vec2 v_worldPos = pxToWorld(gl_FragCoord.xy / u_pixelRatio);
|
|
717
|
+
if (
|
|
718
|
+
abs(u_renderExtent[0] - u_renderExtent[2]) > 0.0 && (
|
|
719
|
+
v_worldPos[0] < u_renderExtent[0] ||
|
|
720
|
+
v_worldPos[1] < u_renderExtent[1] ||
|
|
721
|
+
v_worldPos[0] > u_renderExtent[2] ||
|
|
722
|
+
v_worldPos[1] > u_renderExtent[3]
|
|
723
|
+
)
|
|
724
|
+
) {
|
|
725
|
+
discard;
|
|
726
|
+
}
|
|
727
|
+
#endif
|
|
728
|
+
if (${this.discardExpression_}) { discard; }
|
|
729
|
+
gl_FragColor = ${this.fillColorExpression_} * u_globalAlpha;
|
|
730
|
+
${hitDetectionBypass}
|
|
731
|
+
}`;
|
|
732
|
+
}
|
|
592
733
|
}
|