From b034e114d65066ad80c15a61d99f287ca45dfc75 Mon Sep 17 00:00:00 2001 From: Antoine Abt Date: Wed, 20 Aug 2014 15:34:48 +0200 Subject: [PATCH] Restore opacity after drawing vector layers --- src/ol/renderer/canvas/canvasvectorlayerrenderer.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ol/renderer/canvas/canvasvectorlayerrenderer.js b/src/ol/renderer/canvas/canvasvectorlayerrenderer.js index f54f5fbf6e..a3756b7609 100644 --- a/src/ol/renderer/canvas/canvasvectorlayerrenderer.js +++ b/src/ol/renderer/canvas/canvasvectorlayerrenderer.js @@ -93,6 +93,10 @@ ol.renderer.canvas.VectorLayer.prototype.composeFrame = } else { replayContext = context; } + // 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 = replayContext.globalAlpha; replayContext.globalAlpha = layerState.opacity; replayGroup.replay( replayContext, frameState.extent, frameState.pixelRatio, transform, @@ -102,6 +106,7 @@ ol.renderer.canvas.VectorLayer.prototype.composeFrame = this.dispatchRenderEvent(replayContext, frameState, transform); context.drawImage(replayContext.canvas, 0, 0); } + replayContext.globalAlpha = alpha; } this.dispatchPostComposeEvent(context, frameState, transform);