From ae98ee8b4a27d35b37ddf5d405ee608f5dcc49c2 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Tue, 5 Aug 2014 14:59:32 +0200 Subject: [PATCH] Restore context opacity after drawing layers Closes #2455 --- src/ol/renderer/canvas/canvaslayerrenderer.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ol/renderer/canvas/canvaslayerrenderer.js b/src/ol/renderer/canvas/canvaslayerrenderer.js index 92c59a934a..65fa90866e 100644 --- a/src/ol/renderer/canvas/canvaslayerrenderer.js +++ b/src/ol/renderer/canvas/canvaslayerrenderer.js @@ -45,6 +45,10 @@ ol.renderer.canvas.Layer.prototype.composeFrame = var image = this.getImage(); if (!goog.isNull(image)) { var imageTransform = this.getImageTransform(); + // for performance reasons, context.save / context.restore is not used + // to save and restore the transformation matrix and the opacity. + // see http://jsperf.com/context-save-restore-versus-variable + var alpha = context.globalAlpha; context.globalAlpha = layerState.opacity; // for performance reasons, context.setTransform is only used @@ -67,6 +71,7 @@ ol.renderer.canvas.Layer.prototype.composeFrame = context.drawImage(image, 0, 0); context.setTransform(1, 0, 0, 1, 0, 0); } + context.globalAlpha = alpha; } this.dispatchPostComposeEvent(context, frameState);