Factor out getTransform
This commit is contained in:
@@ -16,7 +16,15 @@ goog.require('ol.renderer.Layer');
|
||||
* @param {ol.layer.Layer} layer Layer.
|
||||
*/
|
||||
ol.renderer.canvas.Layer = function(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);
|
||||
|
||||
@@ -87,3 +95,24 @@ ol.renderer.canvas.Layer.prototype.getImage = goog.abstractMethod;
|
||||
* @return {!goog.vec.Mat4.Number} Image transform.
|
||||
*/
|
||||
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;
|
||||
};
|
||||
|
||||
@@ -20,12 +20,6 @@ ol.renderer.canvas.VectorLayer = function(mapRenderer, vectorLayer) {
|
||||
|
||||
goog.base(this, mapRenderer, vectorLayer);
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {!goog.vec.Mat4.Number}
|
||||
*/
|
||||
this.transform_ = goog.vec.Mat4.createNumber();
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {number}
|
||||
@@ -60,26 +54,9 @@ goog.inherits(ol.renderer.canvas.VectorLayer, ol.renderer.canvas.Layer);
|
||||
ol.renderer.canvas.VectorLayer.prototype.composeFrame =
|
||||
function(frameState, layerState, context) {
|
||||
|
||||
var view2DState = frameState.view2DState;
|
||||
var viewCenter = view2DState.center;
|
||||
var viewResolution = view2DState.resolution;
|
||||
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);
|
||||
// FIXME should be able to avoid call to getTransform here if no postcompose
|
||||
// FIXME listeners or replay group
|
||||
var transform = this.getTransform(frameState);
|
||||
|
||||
var replayGroup = this.replayGroup_;
|
||||
if (!goog.isNull(replayGroup)) {
|
||||
|
||||
Reference in New Issue
Block a user