Make layer renderers more stupid

Layer renderers should not be responsible for listening to layer
properties change and triggering a render.
Layer change events are now forwarded to the map which will trigger a render.
This commit is contained in:
Bruno Binet
2013-08-07 15:55:54 +02:00
parent a13d4bdded
commit 46ea218d0f
4 changed files with 34 additions and 140 deletions

View File

@@ -1,3 +1,5 @@
goog.require('goog.events');
goog.require('goog.events.EventType');
goog.provide('ol.layer.LayerBase');
goog.provide('ol.layer.LayerProperty');
goog.provide('ol.layer.LayerState');
@@ -59,10 +61,29 @@ ol.layer.LayerBase = function(options) {
this.setValues(values);
goog.events.listen(this, [
ol.Object.getChangeEventType(ol.layer.LayerProperty.BRIGHTNESS),
ol.Object.getChangeEventType(ol.layer.LayerProperty.CONTRAST),
ol.Object.getChangeEventType(ol.layer.LayerProperty.HUE),
ol.Object.getChangeEventType(ol.layer.LayerProperty.OPACITY),
ol.Object.getChangeEventType(ol.layer.LayerProperty.SATURATION),
ol.Object.getChangeEventType(ol.layer.LayerProperty.VISIBLE),
goog.events.EventType.LOAD
],
this.handleLayerChange, false, this);
};
goog.inherits(ol.layer.LayerBase, ol.Object);
/**
* @protected
*/
ol.layer.LayerBase.prototype.dispatchChangeEvent = function() {
this.dispatchEvent(goog.events.EventType.CHANGE);
};
/**
* @return {number} Brightness.
*/
@@ -179,6 +200,14 @@ goog.exportProperty(
ol.layer.LayerBase.prototype.getVisible);
/**
* @protected
*/
ol.layer.LayerBase.prototype.handleLayerChange = function() {
this.dispatchChangeEvent();
};
/**
* @return {boolean} Is ready.
*/