Factor out getTransform

This commit is contained in:
Tom Payne
2013-11-11 09:32:20 +01:00
parent a83b0768b2
commit 36f85f9afd
2 changed files with 32 additions and 26 deletions

View File

@@ -16,7 +16,15 @@ goog.require('ol.renderer.Layer');
* @param {ol.layer.Layer} layer Layer. * @param {ol.layer.Layer} layer Layer.
*/ */
ol.renderer.canvas.Layer = function(mapRenderer, layer) { ol.renderer.canvas.Layer = function(mapRenderer, layer) {
goog.base(this, mapRenderer, layer); goog.base(this, mapRenderer, layer);
/**
* @private
* @type {!goog.vec.Mat4.Number}
*/
this.transform_ = goog.vec.Mat4.createNumber();
}; };
goog.inherits(ol.renderer.canvas.Layer, ol.renderer.Layer); goog.inherits(ol.renderer.canvas.Layer, ol.renderer.Layer);
@@ -87,3 +95,24 @@ ol.renderer.canvas.Layer.prototype.getImage = goog.abstractMethod;
* @return {!goog.vec.Mat4.Number} Image transform. * @return {!goog.vec.Mat4.Number} Image transform.
*/ */
ol.renderer.canvas.Layer.prototype.getImageTransform = goog.abstractMethod; ol.renderer.canvas.Layer.prototype.getImageTransform = goog.abstractMethod;
/**
* @param {ol.FrameState} frameState Frame state.
* @protected
* @return {!goog.vec.Mat4.Number} Transform.
*/
ol.renderer.canvas.Layer.prototype.getTransform = function(frameState) {
var view2DState = frameState.view2DState;
var center = view2DState.center;
var resolution = view2DState.resolution;
var rotation = view2DState.rotation;
var size = frameState.size;
var transform = this.transform_;
goog.vec.Mat4.makeIdentity(transform);
goog.vec.Mat4.translate(transform, size[0] / 2, size[1] / 2, 0);
goog.vec.Mat4.scale(transform, 1 / resolution, -1 / resolution, 1);
goog.vec.Mat4.rotateZ(transform, -rotation);
goog.vec.Mat4.translate(transform, -center[0], -center[1], 0);
return transform;
};

View File

@@ -20,12 +20,6 @@ ol.renderer.canvas.VectorLayer = function(mapRenderer, vectorLayer) {
goog.base(this, mapRenderer, vectorLayer); goog.base(this, mapRenderer, vectorLayer);
/**
* @private
* @type {!goog.vec.Mat4.Number}
*/
this.transform_ = goog.vec.Mat4.createNumber();
/** /**
* @private * @private
* @type {number} * @type {number}
@@ -60,26 +54,9 @@ goog.inherits(ol.renderer.canvas.VectorLayer, ol.renderer.canvas.Layer);
ol.renderer.canvas.VectorLayer.prototype.composeFrame = ol.renderer.canvas.VectorLayer.prototype.composeFrame =
function(frameState, layerState, context) { function(frameState, layerState, context) {
var view2DState = frameState.view2DState; // FIXME should be able to avoid call to getTransform here if no postcompose
var viewCenter = view2DState.center; // FIXME listeners or replay group
var viewResolution = view2DState.resolution; var transform = this.getTransform(frameState);
var viewRotation = view2DState.rotation;
var transform = this.transform_;
goog.vec.Mat4.makeIdentity(transform);
goog.vec.Mat4.translate(transform,
frameState.size[0] / 2,
frameState.size[1] / 2,
0);
goog.vec.Mat4.scale(transform,
1 / viewResolution,
-1 / viewResolution,
1);
goog.vec.Mat4.rotateZ(transform, -viewRotation);
goog.vec.Mat4.translate(transform,
-viewCenter[0],
-viewCenter[1],
0);
var replayGroup = this.replayGroup_; var replayGroup = this.replayGroup_;
if (!goog.isNull(replayGroup)) { if (!goog.isNull(replayGroup)) {