Add image rotation and scaling to ol.render.canvas.Immediate
This commit is contained in:
@@ -5,11 +5,13 @@
|
||||
goog.provide('ol.render.canvas.Immediate');
|
||||
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.vec.Mat4');
|
||||
goog.require('ol.color');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.render.IRender');
|
||||
goog.require('ol.render.canvas');
|
||||
goog.require('ol.style.Text');
|
||||
goog.require('ol.vec.Mat4');
|
||||
|
||||
|
||||
|
||||
@@ -106,6 +108,12 @@ ol.render.canvas.Immediate = function(context, pixelRatio, extent, transform) {
|
||||
*/
|
||||
this.pixelCoordinates_ = [];
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {!goog.vec.Mat4.Number}
|
||||
*/
|
||||
this.tmpLocalTransform_ = goog.vec.Mat4.createNumber();
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -126,6 +134,7 @@ ol.render.canvas.Immediate.prototype.drawImages_ = function(geometry) {
|
||||
goog.asserts.assert(goog.isDef(state.width));
|
||||
var pixelCoordinates = ol.geom.transformSimpleGeometry2D(
|
||||
geometry, this.transform_, this.pixelCoordinates_);
|
||||
var localTransform = this.tmpLocalTransform_;
|
||||
var i, ii;
|
||||
for (i = 0, ii = pixelCoordinates.length; i < ii; i += 2) {
|
||||
var x = pixelCoordinates[i] - state.anchorX;
|
||||
@@ -134,8 +143,22 @@ ol.render.canvas.Immediate.prototype.drawImages_ = function(geometry) {
|
||||
x = (x + 0.5) | 0;
|
||||
y = (y + 0.5) | 0;
|
||||
}
|
||||
if (state.scale != 1 || state.rotation !== 0) {
|
||||
ol.vec.Mat4.makeTransform2D(localTransform,
|
||||
x, y, state.scale, state.scale, state.rotation, -x, -y);
|
||||
context.setTransform(
|
||||
goog.vec.Mat4.getElement(localTransform, 0, 0),
|
||||
goog.vec.Mat4.getElement(localTransform, 1, 0),
|
||||
goog.vec.Mat4.getElement(localTransform, 0, 1),
|
||||
goog.vec.Mat4.getElement(localTransform, 1, 1),
|
||||
goog.vec.Mat4.getElement(localTransform, 0, 3),
|
||||
goog.vec.Mat4.getElement(localTransform, 1, 3));
|
||||
}
|
||||
context.drawImage(state.image, x, y, state.width, state.height);
|
||||
}
|
||||
if (state.scale != 1 || state.rotation !== 0) {
|
||||
context.setTransform(1, 0, 0, 1, 0, 0);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user