diff --git a/src/ol/layer/layerbase.js b/src/ol/layer/layerbase.js index 1b7d0abdcd..1d154fd40a 100644 --- a/src/ol/layer/layerbase.js +++ b/src/ol/layer/layerbase.js @@ -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. */ diff --git a/src/ol/layer/layergroup.js b/src/ol/layer/layergroup.js index 85dd6c85bd..163500305f 100644 --- a/src/ol/layer/layergroup.js +++ b/src/ol/layer/layergroup.js @@ -92,11 +92,11 @@ ol.layer.LayerGroup.prototype.handleLayersChanged_ = function(event) { layer = layersArray[i]; this.listenerKeys_[goog.getUid(layer).toString()] = goog.events.listen(layer, goog.events.EventType.CHANGE, - this.handleLayerChange_, false, this); + this.handleLayerChange, false, this); } } - this.dispatchChangeEvent_(); + this.dispatchChangeEvent(); }; @@ -107,9 +107,9 @@ ol.layer.LayerGroup.prototype.handleLayersChanged_ = function(event) { ol.layer.LayerGroup.prototype.handleLayersAdd_ = function(collectionEvent) { var layer = /** @type {ol.layer.LayerBase} */ (collectionEvent.elem); this.listenerKeys_[goog.getUid(layer).toString()] = goog.events.listen( - layer, goog.events.EventType.CHANGE, this.handleLayerChange_, false, + layer, goog.events.EventType.CHANGE, this.handleLayerChange, false, this); - this.dispatchChangeEvent_(); + this.dispatchChangeEvent(); }; @@ -122,23 +122,7 @@ ol.layer.LayerGroup.prototype.handleLayersRemove_ = function(collectionEvent) { var key = goog.getUid(layer).toString(); goog.events.unlistenByKey(this.listenerKeys_[key]); delete this.listenerKeys_[key]; - this.dispatchChangeEvent_(); -}; - - -/** - * @private - */ -ol.layer.LayerGroup.prototype.handleLayerChange_ = function() { - this.dispatchChangeEvent_(); -}; - - -/** - * @private - */ -ol.layer.LayerGroup.prototype.dispatchChangeEvent_ = function() { - this.dispatchEvent(goog.events.EventType.CHANGE); + this.dispatchChangeEvent(); }; diff --git a/src/ol/renderer/layerrenderer.js b/src/ol/renderer/layerrenderer.js index 0eff0ddd05..94605f5c3d 100644 --- a/src/ol/renderer/layerrenderer.js +++ b/src/ol/renderer/layerrenderer.js @@ -1,19 +1,13 @@ goog.provide('ol.renderer.Layer'); goog.require('goog.Disposable'); -goog.require('goog.events'); -goog.require('goog.events.EventType'); -goog.require('ol.Attribution'); -goog.require('ol.Coordinate'); goog.require('ol.FrameState'); goog.require('ol.Image'); goog.require('ol.ImageState'); -goog.require('ol.Object'); goog.require('ol.Tile'); goog.require('ol.TileRange'); goog.require('ol.TileState'); goog.require('ol.layer.Layer'); -goog.require('ol.layer.LayerProperty'); goog.require('ol.layer.LayerState'); goog.require('ol.source.Source'); goog.require('ol.source.TileSource'); @@ -42,32 +36,6 @@ ol.renderer.Layer = function(mapRenderer, layer) { */ this.layer_ = layer; - goog.events.listen(this.layer_, - ol.Object.getChangeEventType(ol.layer.LayerProperty.BRIGHTNESS), - this.handleLayerBrightnessChange, false, this); - - goog.events.listen(this.layer_, - ol.Object.getChangeEventType(ol.layer.LayerProperty.CONTRAST), - this.handleLayerContrastChange, false, this); - - goog.events.listen(this.layer_, - ol.Object.getChangeEventType(ol.layer.LayerProperty.HUE), - this.handleLayerHueChange, false, this); - - goog.events.listen(this.layer_, goog.events.EventType.LOAD, - this.handleLayerLoad, false, this); - - goog.events.listen(this.layer_, - ol.Object.getChangeEventType(ol.layer.LayerProperty.OPACITY), - this.handleLayerOpacityChange, false, this); - - goog.events.listen(this.layer_, - ol.Object.getChangeEventType(ol.layer.LayerProperty.SATURATION), - this.handleLayerSaturationChange, false, this); - - goog.events.listen(this.layer_, - ol.Object.getChangeEventType(ol.layer.LayerProperty.VISIBLE), - this.handleLayerVisibleChange, false, this); }; goog.inherits(ol.renderer.Layer, goog.Disposable); @@ -120,24 +88,6 @@ ol.renderer.Layer.prototype.getMapRenderer = function() { }; -/** - * @protected - */ -ol.renderer.Layer.prototype.handleLayerBrightnessChange = goog.nullFunction; - - -/** - * @protected - */ -ol.renderer.Layer.prototype.handleLayerContrastChange = goog.nullFunction; - - -/** - * @protected - */ -ol.renderer.Layer.prototype.handleLayerHueChange = goog.nullFunction; - - /** * Handle changes in image state. * @param {goog.events.Event} event Image change event. @@ -151,39 +101,6 @@ ol.renderer.Layer.prototype.handleImageChange = function(event) { }; -/** - * @protected - */ -ol.renderer.Layer.prototype.handleLayerLoad = function() { - this.renderIfReadyAndVisible(); -}; - - -/** - * @protected - */ -ol.renderer.Layer.prototype.handleLayerOpacityChange = function() { - this.renderIfReadyAndVisible(); -}; - - -/** - * @protected - */ -ol.renderer.Layer.prototype.handleLayerSaturationChange = goog.nullFunction; - - -/** - * @protected - */ -ol.renderer.Layer.prototype.handleLayerVisibleChange = function() { - var layer = this.getLayer(); - if (layer.isReady()) { - this.getMap().render(); - } -}; - - /** * @param {ol.FrameState} frameState Frame state. * @param {ol.layer.LayerState} layerState Layer state. diff --git a/src/ol/renderer/webgl/webgllayerrenderer.js b/src/ol/renderer/webgl/webgllayerrenderer.js index 9b9d1e944a..578985681f 100644 --- a/src/ol/renderer/webgl/webgllayerrenderer.js +++ b/src/ol/renderer/webgl/webgllayerrenderer.js @@ -187,42 +187,6 @@ ol.renderer.webgl.Layer.prototype.getProjectionMatrix = function() { }; -/** - * @inheritDoc - */ -ol.renderer.webgl.Layer.prototype.handleLayerBrightnessChange = function() { - this.updateBrightnessMatrix_(); - this.renderIfReadyAndVisible(); -}; - - -/** - * @inheritDoc - */ -ol.renderer.webgl.Layer.prototype.handleLayerContrastChange = function() { - this.updateContrastMatrix_(); - this.renderIfReadyAndVisible(); -}; - - -/** - * @inheritDoc - */ -ol.renderer.webgl.Layer.prototype.handleLayerHueChange = function() { - this.updateHueMatrix_(); - this.renderIfReadyAndVisible(); -}; - - -/** - * @inheritDoc - */ -ol.renderer.webgl.Layer.prototype.handleLayerSaturationChange = function() { - this.updateSaturationMatrix_(); - this.renderIfReadyAndVisible(); -}; - - /** * Handle webglcontextlost. */