Fire precompose events from layers
This commit is contained in:
@@ -9,7 +9,8 @@ goog.require('ol.render.IRender');
|
|||||||
* @enum {string}
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
ol.render.EventType = {
|
ol.render.EventType = {
|
||||||
POSTCOMPOSE: 'postcompose'
|
POSTCOMPOSE: 'postcompose',
|
||||||
|
PRECOMPOSE: 'precompose'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,8 @@ goog.inherits(ol.renderer.canvas.Layer, ol.renderer.Layer);
|
|||||||
ol.renderer.canvas.Layer.prototype.composeFrame =
|
ol.renderer.canvas.Layer.prototype.composeFrame =
|
||||||
function(frameState, layerState, context) {
|
function(frameState, layerState, context) {
|
||||||
|
|
||||||
|
this.dispatchPreComposeEvent(context, frameState);
|
||||||
|
|
||||||
var image = this.getImage();
|
var image = this.getImage();
|
||||||
if (!goog.isNull(image)) {
|
if (!goog.isNull(image)) {
|
||||||
var imageTransform = this.getImageTransform();
|
var imageTransform = this.getImageTransform();
|
||||||
@@ -69,6 +71,28 @@ ol.renderer.canvas.Layer.prototype.composeFrame =
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {ol.render.EventType} type Event type.
|
||||||
|
* @param {CanvasRenderingContext2D} context Context.
|
||||||
|
* @param {ol.FrameState} frameState Frame state.
|
||||||
|
* @param {goog.vec.Mat4.AnyType=} opt_transform Transform.
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
ol.renderer.canvas.Layer.prototype.dispatchComposeEvent_ =
|
||||||
|
function(type, context, frameState, opt_transform) {
|
||||||
|
var layer = this.getLayer();
|
||||||
|
if (layer.hasListener(type)) {
|
||||||
|
var transform = goog.isDef(opt_transform) ?
|
||||||
|
opt_transform : this.getTransform(frameState);
|
||||||
|
var render = new ol.render.canvas.Immediate(context, frameState.extent,
|
||||||
|
transform);
|
||||||
|
var composeEvent = new ol.render.Event(type, layer, render, frameState,
|
||||||
|
context, null);
|
||||||
|
layer.dispatchEvent(composeEvent);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {CanvasRenderingContext2D} context Context.
|
* @param {CanvasRenderingContext2D} context Context.
|
||||||
* @param {ol.FrameState} frameState Frame state.
|
* @param {ol.FrameState} frameState Frame state.
|
||||||
@@ -77,16 +101,21 @@ ol.renderer.canvas.Layer.prototype.composeFrame =
|
|||||||
*/
|
*/
|
||||||
ol.renderer.canvas.Layer.prototype.dispatchPostComposeEvent =
|
ol.renderer.canvas.Layer.prototype.dispatchPostComposeEvent =
|
||||||
function(context, frameState, opt_transform) {
|
function(context, frameState, opt_transform) {
|
||||||
var layer = this.getLayer();
|
this.dispatchComposeEvent_(ol.render.EventType.POSTCOMPOSE, context,
|
||||||
if (layer.hasListener(ol.render.EventType.POSTCOMPOSE)) {
|
frameState, opt_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.Event(ol.render.EventType.POSTCOMPOSE,
|
* @param {CanvasRenderingContext2D} context Context.
|
||||||
layer, render, frameState, context, null);
|
* @param {ol.FrameState} frameState Frame state.
|
||||||
layer.dispatchEvent(postComposeEvent);
|
* @param {goog.vec.Mat4.AnyType=} opt_transform Transform.
|
||||||
}
|
* @protected
|
||||||
|
*/
|
||||||
|
ol.renderer.canvas.Layer.prototype.dispatchPreComposeEvent =
|
||||||
|
function(context, frameState, opt_transform) {
|
||||||
|
this.dispatchComposeEvent_(ol.render.EventType.PRECOMPOSE, context,
|
||||||
|
frameState, opt_transform);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user