Factor out getTransform
This commit is contained in:
@@ -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;
|
||||||
|
};
|
||||||
|
|||||||
@@ -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)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user