Add frameState to postcompose event and minimise calls to getTransform
This commit is contained in:
@@ -20,11 +20,12 @@ ol.render.RenderEventType = {
|
|||||||
* @param {ol.render.RenderEventType} type Type.
|
* @param {ol.render.RenderEventType} type Type.
|
||||||
* @param {Object=} opt_target Target.
|
* @param {Object=} opt_target Target.
|
||||||
* @param {ol.render.IRender=} opt_render Render.
|
* @param {ol.render.IRender=} opt_render Render.
|
||||||
|
* @param {ol.FrameState=} opt_frameState Frame state.
|
||||||
* @param {?CanvasRenderingContext2D=} opt_context Context.
|
* @param {?CanvasRenderingContext2D=} opt_context Context.
|
||||||
* @param {?WebGLRenderingContext=} opt_gl GL.
|
* @param {?WebGLRenderingContext=} opt_gl GL.
|
||||||
*/
|
*/
|
||||||
ol.render.RenderEvent =
|
ol.render.RenderEvent = function(
|
||||||
function(type, opt_target, opt_render, opt_context, opt_gl) {
|
type, opt_target, opt_render, opt_frameState, opt_context, opt_gl) {
|
||||||
|
|
||||||
goog.base(this, type, opt_target);
|
goog.base(this, type, opt_target);
|
||||||
|
|
||||||
@@ -34,6 +35,12 @@ ol.render.RenderEvent =
|
|||||||
*/
|
*/
|
||||||
this.render_ = opt_render;
|
this.render_ = opt_render;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {ol.FrameState|undefined}
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
this.frameState_ = opt_frameState;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {CanvasRenderingContext2D|null|undefined}
|
* @type {CanvasRenderingContext2D|null|undefined}
|
||||||
* @private
|
* @private
|
||||||
@@ -58,6 +65,14 @@ ol.render.RenderEvent.prototype.getContext = function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return {ol.FrameState|undefined} Frame state.
|
||||||
|
*/
|
||||||
|
ol.render.RenderEvent.prototype.getFrameState = function() {
|
||||||
|
return this.frameState_;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return {WebGLRenderingContext|null|undefined} GL.
|
* @return {WebGLRenderingContext|null|undefined} GL.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -64,27 +64,28 @@ ol.renderer.canvas.Layer.prototype.composeFrame =
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME should be able to avoid call to getTransform here if no postcompose
|
this.dispatchPostComposeEvent(context, frameState);
|
||||||
// FIXME listeners
|
|
||||||
var transform = this.getTransform(frameState);
|
|
||||||
this.dispatchPostComposeEvent(context, frameState.extent, transform);
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {CanvasRenderingContext2D} context Context.
|
* @param {CanvasRenderingContext2D} context Context.
|
||||||
* @param {ol.Extent} extent Extent.
|
* @param {ol.FrameState} frameState Frame state.
|
||||||
* @param {goog.vec.Mat4.AnyType} transform Transform.
|
* @param {goog.vec.Mat4.AnyType=} opt_transform Transform.
|
||||||
* @protected
|
* @protected
|
||||||
*/
|
*/
|
||||||
ol.renderer.canvas.Layer.prototype.dispatchPostComposeEvent =
|
ol.renderer.canvas.Layer.prototype.dispatchPostComposeEvent =
|
||||||
function(context, extent, transform) {
|
function(context, frameState, opt_transform) {
|
||||||
var layer = this.getLayer();
|
var layer = this.getLayer();
|
||||||
if (layer.hasListener(ol.render.RenderEventType.POSTCOMPOSE)) {
|
if (layer.hasListener(ol.render.RenderEventType.POSTCOMPOSE)) {
|
||||||
var render = new ol.render.canvas.Immediate(context, extent, transform);
|
var transform = goog.isDef(opt_transform) ?
|
||||||
|
opt_transform : this.getTransform(frameState);
|
||||||
|
var render = new ol.render.canvas.Immediate(context, frameState.extent,
|
||||||
|
transform);
|
||||||
var postComposeEvent = new ol.render.RenderEvent(
|
var postComposeEvent = new ol.render.RenderEvent(
|
||||||
ol.render.RenderEventType.POSTCOMPOSE, layer, render, context, null);
|
ol.render.RenderEventType.POSTCOMPOSE, layer, render, frameState,
|
||||||
|
context, null);
|
||||||
layer.dispatchEvent(postComposeEvent);
|
layer.dispatchEvent(postComposeEvent);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -130,7 +130,8 @@ ol.renderer.canvas.Map.prototype.renderFrame = function(frameState) {
|
|||||||
var render = new ol.render.canvas.Immediate(
|
var render = new ol.render.canvas.Immediate(
|
||||||
context, frameState.extent, frameState.coordinateToPixelMatrix);
|
context, frameState.extent, frameState.coordinateToPixelMatrix);
|
||||||
var postComposeEvent = new ol.render.RenderEvent(
|
var postComposeEvent = new ol.render.RenderEvent(
|
||||||
ol.render.RenderEventType.POSTCOMPOSE, map, render, context, null);
|
ol.render.RenderEventType.POSTCOMPOSE, map, render, frameState, context,
|
||||||
|
null);
|
||||||
map.dispatchEvent(postComposeEvent);
|
map.dispatchEvent(postComposeEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -54,17 +54,17 @@ 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) {
|
||||||
|
|
||||||
// FIXME should be able to avoid call to getTransform here if no postcompose
|
/** @type {goog.vec.Mat4.AnyType|undefined} */
|
||||||
// FIXME listeners or replay group
|
var transform;
|
||||||
var transform = this.getTransform(frameState);
|
|
||||||
|
|
||||||
var replayGroup = this.replayGroup_;
|
var replayGroup = this.replayGroup_;
|
||||||
if (!goog.isNull(replayGroup)) {
|
if (!goog.isNull(replayGroup)) {
|
||||||
|
transform = this.getTransform(frameState);
|
||||||
context.globalAlpha = layerState.opacity;
|
context.globalAlpha = layerState.opacity;
|
||||||
replayGroup.draw(context, frameState.extent, transform);
|
replayGroup.draw(context, frameState.extent, transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.dispatchPostComposeEvent(context, frameState.extent, transform);
|
this.dispatchPostComposeEvent(context, frameState, transform);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user