From af8a22d34d66a3567e243a8fa47969e923cfa0c5 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Tue, 22 Jan 2019 12:47:34 +0100 Subject: [PATCH 1/2] Keep two digits for the opacity value in layer state --- src/ol/layer/Base.js | 2 +- src/ol/layer/Layer.js | 2 +- test/spec/ol/layer/layer.test.js | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ol/layer/Base.js b/src/ol/layer/Base.js index e601b7a3a7..0921af2c2b 100644 --- a/src/ol/layer/Base.js +++ b/src/ol/layer/Base.js @@ -91,7 +91,7 @@ class BaseLayer extends BaseObject { layer: this, managed: true }); - state.opacity = clamp(this.getOpacity(), 0, 1); + state.opacity = clamp(Math.round(this.getOpacity() * 100) / 100, 0, 1); state.sourceState = this.getSourceState(); state.visible = this.getVisible(); state.extent = this.getExtent(); diff --git a/src/ol/layer/Layer.js b/src/ol/layer/Layer.js index d735a4eeef..fccecf809e 100644 --- a/src/ol/layer/Layer.js +++ b/src/ol/layer/Layer.js @@ -35,7 +35,7 @@ import SourceState from '../source/State.js'; /** * @typedef {Object} State * @property {import("./Base.js").default} layer - * @property {number} opacity + * @property {number} opacity Opacity, the value is rounded to two digits to appear after the decimal point. * @property {SourceState} sourceState * @property {boolean} visible * @property {boolean} managed diff --git a/test/spec/ol/layer/layer.test.js b/test/spec/ol/layer/layer.test.js index e077455ac1..dba518a47a 100644 --- a/test/spec/ol/layer/layer.test.js +++ b/test/spec/ol/layer/layer.test.js @@ -162,14 +162,14 @@ describe('ol.layer.Layer', function() { }); it('returns a layerState from the properties values', function() { - layer.setOpacity(0.3); + layer.setOpacity(1 / 3); layer.setVisible(false); layer.setMaxResolution(500); layer.setMinResolution(0.25); layer.setZIndex(10); expect(layer.getLayerState()).to.eql({ layer: layer, - opacity: 0.3, + opacity: 0.33, visible: false, managed: true, sourceState: 'ready', From 8dbe8bc34e563729eba4d92ac773287726c24ea9 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Tue, 22 Jan 2019 12:48:14 +0100 Subject: [PATCH 2/2] Parse the opacity from style as float --- src/ol/renderer/canvas/ImageLayer.js | 2 +- src/ol/renderer/canvas/TileLayer.js | 2 +- src/ol/renderer/canvas/VectorLayer.js | 2 +- src/ol/renderer/canvas/VectorTileLayer.js | 2 +- src/ol/renderer/webgl/PointsLayer.js | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/ol/renderer/canvas/ImageLayer.js b/src/ol/renderer/canvas/ImageLayer.js index f0522114eb..72cbaaeb10 100644 --- a/src/ol/renderer/canvas/ImageLayer.js +++ b/src/ol/renderer/canvas/ImageLayer.js @@ -149,7 +149,7 @@ class CanvasImageLayerRenderer extends CanvasLayerRenderer { } const opacity = layerState.opacity; - if (opacity !== canvas.style.opacity) { + if (opacity !== parseFloat(canvas.style.opacity)) { canvas.style.opacity = opacity; } diff --git a/src/ol/renderer/canvas/TileLayer.js b/src/ol/renderer/canvas/TileLayer.js index 42c51e60e6..43dcfba9cc 100644 --- a/src/ol/renderer/canvas/TileLayer.js +++ b/src/ol/renderer/canvas/TileLayer.js @@ -303,7 +303,7 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer { } const opacity = layerState.opacity; - if (opacity !== canvas.style.opacity) { + if (opacity !== parseFloat(canvas.style.opacity)) { canvas.style.opacity = opacity; } diff --git a/src/ol/renderer/canvas/VectorLayer.js b/src/ol/renderer/canvas/VectorLayer.js index af800f4228..6afdf753dc 100644 --- a/src/ol/renderer/canvas/VectorLayer.js +++ b/src/ol/renderer/canvas/VectorLayer.js @@ -180,7 +180,7 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer { this.postRender(context, frameState); const opacity = layerState.opacity; - if (opacity !== canvas.style.opacity) { + if (opacity !== parseFloat(canvas.style.opacity)) { canvas.style.opacity = opacity; } diff --git a/src/ol/renderer/canvas/VectorTileLayer.js b/src/ol/renderer/canvas/VectorTileLayer.js index b9dd43c86c..1c7952c7d7 100644 --- a/src/ol/renderer/canvas/VectorTileLayer.js +++ b/src/ol/renderer/canvas/VectorTileLayer.js @@ -508,7 +508,7 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer { } const opacity = layerState.opacity; - if (opacity !== canvas.style.opacity) { + if (opacity !== parseFloat(canvas.style.opacity)) { canvas.style.opacity = opacity; } diff --git a/src/ol/renderer/webgl/PointsLayer.js b/src/ol/renderer/webgl/PointsLayer.js index 7c299a43af..9cd2935c3f 100644 --- a/src/ol/renderer/webgl/PointsLayer.js +++ b/src/ol/renderer/webgl/PointsLayer.js @@ -252,7 +252,7 @@ class WebGLPointsLayerRenderer extends LayerRenderer { const canvas = this.helper_.getCanvas(); const opacity = layerState.opacity; - if (opacity !== canvas.style.opacity) { + if (opacity !== parseFloat(canvas.style.opacity)) { canvas.style.opacity = opacity; }