From 542b77eef89d389c36aa566cce02a33ec4bfc6d5 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Sat, 25 Jan 2020 20:53:50 +0100 Subject: [PATCH] Save and restore before rendering labels --- src/ol/render/canvas.js | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/src/ol/render/canvas.js b/src/ol/render/canvas.js index d4c7498451..726870e053 100644 --- a/src/ol/render/canvas.js +++ b/src/ol/render/canvas.js @@ -401,30 +401,21 @@ export const resetTransform = createTransform(); */ export function drawImageOrLabel(context, transform, opacity, labelOrImage, originX, originY, w, h, x, y, scale) { - let alpha; - if (opacity != 1) { - alpha = context.globalAlpha; - context.globalAlpha = alpha * opacity; - } + context.save(); + if (transform) { context.setTransform.apply(context, transform); } - const isLabel = !!(/** @type {*} */ (labelOrImage).contextInstructions); - - if (isLabel) { + if ((/** @type {*} */ (labelOrImage).contextInstructions)) { + // label context.translate(x, y); context.scale(scale, scale); executeLabelInstructions(/** @type {import("./canvas/Executor.js").Label} */ (labelOrImage), context); } else { + // image context.drawImage(/** @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} */ (labelOrImage), originX, originY, w, h, x, y, w * scale, h * scale); } - if (opacity != 1) { - context.globalAlpha = alpha; - } - - if (transform || isLabel) { - context.setTransform.apply(context, resetTransform); - } + context.restore(); }