From 2073d7858262ab78684804ce5245407946526d61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 13 Nov 2013 09:02:59 +0100 Subject: [PATCH] Fire precompose events from layers --- src/ol/render/renderevent.js | 3 +- src/ol/renderer/canvas/canvaslayerrenderer.js | 49 +++++++++++++++---- 2 files changed, 41 insertions(+), 11 deletions(-) diff --git a/src/ol/render/renderevent.js b/src/ol/render/renderevent.js index 1de0f9bc18..28552986f8 100644 --- a/src/ol/render/renderevent.js +++ b/src/ol/render/renderevent.js @@ -9,7 +9,8 @@ goog.require('ol.render.IRender'); * @enum {string} */ ol.render.EventType = { - POSTCOMPOSE: 'postcompose' + POSTCOMPOSE: 'postcompose', + PRECOMPOSE: 'precompose' }; diff --git a/src/ol/renderer/canvas/canvaslayerrenderer.js b/src/ol/renderer/canvas/canvaslayerrenderer.js index 92077c1ac4..de3ef3a961 100644 --- a/src/ol/renderer/canvas/canvaslayerrenderer.js +++ b/src/ol/renderer/canvas/canvaslayerrenderer.js @@ -37,6 +37,8 @@ goog.inherits(ol.renderer.canvas.Layer, ol.renderer.Layer); ol.renderer.canvas.Layer.prototype.composeFrame = function(frameState, layerState, context) { + this.dispatchPreComposeEvent(context, frameState); + var image = this.getImage(); if (!goog.isNull(image)) { 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 {ol.FrameState} frameState Frame state. @@ -77,16 +101,21 @@ ol.renderer.canvas.Layer.prototype.composeFrame = */ ol.renderer.canvas.Layer.prototype.dispatchPostComposeEvent = function(context, frameState, opt_transform) { - var layer = this.getLayer(); - if (layer.hasListener(ol.render.EventType.POSTCOMPOSE)) { - 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, - layer, render, frameState, context, null); - layer.dispatchEvent(postComposeEvent); - } + this.dispatchComposeEvent_(ol.render.EventType.POSTCOMPOSE, context, + frameState, opt_transform); +}; + + +/** + * @param {CanvasRenderingContext2D} context Context. + * @param {ol.FrameState} frameState Frame state. + * @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); };