From fdae2e8e00a292b3f31b2b0dc3f1c84e140bcae8 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Fri, 14 Oct 2016 13:59:26 +0200 Subject: [PATCH] Set one-off transform instead of transforming back and forth --- src/ol/render/canvas/replay.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/ol/render/canvas/replay.js b/src/ol/render/canvas/replay.js index 59c2e03968..f5993bb782 100644 --- a/src/ol/render/canvas/replay.js +++ b/src/ol/render/canvas/replay.js @@ -116,7 +116,7 @@ ol.render.canvas.Replay = function(tolerance, maxExtent, resolution, overlaps) { * @private * @type {ol.Transform} */ - this.tmpLocalTransformInv_ = ol.transform.create(); + this.resetTransform_ = ol.transform.create(); }; ol.inherits(ol.render.canvas.Replay, ol.render.VectorContext); @@ -247,7 +247,7 @@ ol.render.canvas.Replay.prototype.replay_ = function( var d = 0; // data index var dd; // end of per-instruction data var localTransform = this.tmpLocalTransform_; - var localTransformInv = this.tmpLocalTransformInv_; + var resetTransform = this.resetTransform_; var prevX, prevY, roundX, roundY; var pendingFill = 0; var pendingStroke = 0; @@ -342,7 +342,7 @@ ol.render.canvas.Replay.prototype.replay_ = function( var centerY = y + anchorY; ol.transform.compose(localTransform, centerX, centerY, scale, scale, rotation, -centerX, -centerY); - context.transform.apply(context, localTransform); + context.setTransform.apply(context, localTransform); } var alpha = context.globalAlpha; if (opacity != 1) { @@ -359,8 +359,7 @@ ol.render.canvas.Replay.prototype.replay_ = function( context.globalAlpha = alpha; } if (scale != 1 || rotation !== 0) { - ol.transform.invert(ol.transform.setFromArray(localTransformInv, localTransform)); - context.transform.apply(context, localTransformInv); + context.setTransform.apply(context, resetTransform); } } ++i; @@ -402,7 +401,7 @@ ol.render.canvas.Replay.prototype.replay_ = function( y = pixelCoordinates[d + 1] + offsetY; if (scale != 1 || rotation !== 0) { ol.transform.compose(localTransform, x, y, scale, scale, rotation, -x, -y); - context.transform.apply(context, localTransform); + context.setTransform.apply(context, localTransform); } // Support multiple lines separated by \n @@ -433,8 +432,7 @@ ol.render.canvas.Replay.prototype.replay_ = function( } if (scale != 1 || rotation !== 0) { - ol.transform.invert(ol.transform.setFromArray(localTransformInv, localTransform)); - context.transform.apply(context, localTransformInv); + context.setTransform.apply(context, resetTransform); } } ++i;