Fire pre and postcompose events from webgl layers

This commit is contained in:
Éric Lemoine
2013-11-18 16:05:30 +01:00
committed by Tom Payne
parent 478f8c43ca
commit 8d191ca4b8

View File

@@ -5,6 +5,8 @@ goog.require('goog.webgl');
goog.require('ol.FrameState');
goog.require('ol.color.Matrix');
goog.require('ol.layer.Layer');
goog.require('ol.render.Event');
goog.require('ol.render.EventType');
goog.require('ol.renderer.Layer');
goog.require('ol.renderer.webgl.map.shader.Color');
goog.require('ol.renderer.webgl.map.shader.Default');
@@ -135,6 +137,9 @@ ol.renderer.webgl.Layer.prototype.bindFramebuffer =
ol.renderer.webgl.Layer.prototype.composeFrame =
function(frameState, layerState, context) {
this.dispatchComposeEvent_(
ol.render.EventType.PRECOMPOSE, context, frameState);
var gl = context.getGL();
var useColor =
@@ -202,6 +207,26 @@ ol.renderer.webgl.Layer.prototype.composeFrame =
gl.bindTexture(goog.webgl.TEXTURE_2D, this.getTexture());
gl.drawArrays(goog.webgl.TRIANGLE_STRIP, 0, 4);
this.dispatchComposeEvent_(
ol.render.EventType.POSTCOMPOSE, context, frameState);
};
/**
* @param {ol.render.EventType} type Event type.
* @param {ol.webgl.Context} context WebGL context.
* @param {ol.FrameState} frameState Frame state.
* @private
*/
ol.renderer.webgl.Layer.prototype.dispatchComposeEvent_ =
function(type, context, frameState) {
var layer = this.getLayer();
if (layer.hasListener(type)) {
var composeEvent = new ol.render.Event(
type, layer, null, frameState, null, context);
layer.dispatchEvent(composeEvent);
}
};