From c599c649abc37900623289304b40c4a032671f33 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Fri, 20 Dec 2013 13:12:35 -0700 Subject: [PATCH 1/2] Translate to image anchor point, scale, rotate, translate back --- src/ol/render/canvas/canvasreplay.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ol/render/canvas/canvasreplay.js b/src/ol/render/canvas/canvasreplay.js index 9a63c29df4..14108be165 100644 --- a/src/ol/render/canvas/canvasreplay.js +++ b/src/ol/render/canvas/canvasreplay.js @@ -227,8 +227,11 @@ ol.render.canvas.Replay.prototype.replay_ = y = (y + 0.5) | 0; } if (scale != 1 || rotation !== 0) { + var centerX = x + anchorX; + var centerY = y + anchorY; ol.vec.Mat4.makeTransform2D( - localTransform, x, y, scale, scale, rotation, -x, -y); + localTransform, centerX, centerY, scale, scale, + rotation, -centerX, -centerY); context.setTransform( goog.vec.Mat4.getElement(localTransform, 0, 0), goog.vec.Mat4.getElement(localTransform, 1, 0), From f5b9687479377f17f637661351ef5d57c5a89cb7 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Fri, 20 Dec 2013 13:16:04 -0700 Subject: [PATCH 2/2] Translate to image center before scale and rotation Same treatment here as with the canvas replay. --- src/ol/render/canvas/canvasimmediate.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ol/render/canvas/canvasimmediate.js b/src/ol/render/canvas/canvasimmediate.js index 0f86efa3fa..d3c96591bf 100644 --- a/src/ol/render/canvas/canvasimmediate.js +++ b/src/ol/render/canvas/canvasimmediate.js @@ -144,8 +144,11 @@ ol.render.canvas.Immediate.prototype.drawImages_ = function(geometry) { y = (y + 0.5) | 0; } if (state.scale != 1 || state.rotation !== 0) { + var centerX = x + state.anchorX; + var centerY = y + state.anchorY; ol.vec.Mat4.makeTransform2D(localTransform, - x, y, state.scale, state.scale, state.rotation, -x, -y); + centerX, centerY, state.scale, state.scale, + state.rotation, -centerX, -centerY); context.setTransform( goog.vec.Mat4.getElement(localTransform, 0, 0), goog.vec.Mat4.getElement(localTransform, 1, 0),