diff --git a/src/ol/renderer/canvas/canvaslayerrenderer.js b/src/ol/renderer/canvas/canvaslayerrenderer.js index 78ed9d6665..f63048d8e3 100644 --- a/src/ol/renderer/canvas/canvaslayerrenderer.js +++ b/src/ol/renderer/canvas/canvaslayerrenderer.js @@ -1,7 +1,5 @@ goog.provide('ol.renderer.canvas.Layer'); -goog.require('ol.FrameState'); -goog.require('ol.layer.LayerState'); goog.require('ol.renderer.Layer'); @@ -28,10 +26,3 @@ ol.renderer.canvas.Layer.prototype.getImage = goog.abstractMethod; * @return {!goog.vec.Mat4.Number} Transform. */ ol.renderer.canvas.Layer.prototype.getTransform = goog.abstractMethod; - - -/** - * @param {ol.FrameState} frameState Frame state. - * @param {ol.layer.LayerState} layerState Layer state. - */ -ol.renderer.canvas.Layer.prototype.renderFrame = goog.abstractMethod; diff --git a/src/ol/renderer/dom/domlayerrenderer.js b/src/ol/renderer/dom/domlayerrenderer.js index 261c24948f..5a39813363 100644 --- a/src/ol/renderer/dom/domlayerrenderer.js +++ b/src/ol/renderer/dom/domlayerrenderer.js @@ -1,9 +1,7 @@ goog.provide('ol.renderer.dom.Layer'); goog.require('ol.Coordinate'); -goog.require('ol.FrameState'); goog.require('ol.layer.Layer'); -goog.require('ol.layer.LayerState'); goog.require('ol.renderer.Layer'); @@ -44,34 +42,3 @@ ol.renderer.dom.Layer.prototype.disposeInternal = function() { ol.renderer.dom.Layer.prototype.getTarget = function() { return this.target; }; - - -/** - * @inheritDoc - */ -ol.renderer.dom.Layer.prototype.handleLayerLoad = function() { - this.getMap().render(); -}; - - -/** - * @inheritDoc - */ -ol.renderer.dom.Layer.prototype.handleLayerOpacityChange = function() { - this.getMap().render(); -}; - - -/** - * @inheritDoc - */ -ol.renderer.dom.Layer.prototype.handleLayerVisibleChange = function() { - this.getMap().render(); -}; - - -/** - * @param {ol.FrameState} frameState Frame state. - * @param {ol.layer.LayerState} layerState Layer state. - */ -ol.renderer.dom.Layer.prototype.renderFrame = goog.abstractMethod; diff --git a/src/ol/renderer/layerrenderer.js b/src/ol/renderer/layerrenderer.js index b3243519e9..e3f2b01635 100644 --- a/src/ol/renderer/layerrenderer.js +++ b/src/ol/renderer/layerrenderer.js @@ -7,6 +7,7 @@ goog.require('ol.Object'); goog.require('ol.TileRange'); goog.require('ol.layer.Layer'); goog.require('ol.layer.LayerProperty'); +goog.require('ol.layer.LayerState'); goog.require('ol.source.TileSource'); @@ -64,6 +65,14 @@ ol.renderer.Layer = function(mapRenderer, layer) { goog.inherits(ol.renderer.Layer, ol.Object); +/** + * @protected + */ +ol.renderer.Layer.prototype.dispatchChangeEvent = function() { + this.dispatchEvent(goog.events.EventType.CHANGE); +}; + + /** * @return {ol.layer.Layer} Layer. */ @@ -109,13 +118,17 @@ ol.renderer.Layer.prototype.handleLayerHueChange = goog.nullFunction; /** * @protected */ -ol.renderer.Layer.prototype.handleLayerLoad = goog.nullFunction; +ol.renderer.Layer.prototype.handleLayerLoad = function() { + this.dispatchChangeEvent(); +}; /** * @protected */ -ol.renderer.Layer.prototype.handleLayerOpacityChange = goog.nullFunction; +ol.renderer.Layer.prototype.handleLayerOpacityChange = function() { + this.dispatchChangeEvent(); +}; /** @@ -127,7 +140,16 @@ ol.renderer.Layer.prototype.handleLayerSaturationChange = goog.nullFunction; /** * @protected */ -ol.renderer.Layer.prototype.handleLayerVisibleChange = goog.nullFunction; +ol.renderer.Layer.prototype.handleLayerVisibleChange = function() { + this.dispatchChangeEvent(); +}; + + +/** + * @param {ol.FrameState} frameState Frame state. + * @param {ol.layer.LayerState} layerState Layer state. + */ +ol.renderer.Layer.prototype.renderFrame = goog.abstractMethod; /** diff --git a/src/ol/renderer/maprenderer.js b/src/ol/renderer/maprenderer.js index 01313a98b3..fbd45224bf 100644 --- a/src/ol/renderer/maprenderer.js +++ b/src/ol/renderer/maprenderer.js @@ -59,6 +59,12 @@ ol.renderer.Map = function(container, map) { */ this.layersListenerKeys_ = null; + /** + * @private + * @type {Object.} + */ + this.layerRendererChangeListenKeys_ = {}; + }; goog.inherits(ol.renderer.Map, goog.Disposable); @@ -140,8 +146,8 @@ ol.renderer.Map.prototype.getCanvas = goog.functions.NULL; * @return {ol.renderer.Layer} Layer renderer. */ ol.renderer.Map.prototype.getLayerRenderer = function(layer) { - var key = goog.getUid(layer); - var layerRenderer = this.layerRenderers[key]; + var layerKey = goog.getUid(layer); + var layerRenderer = this.layerRenderers[layerKey]; goog.asserts.assert(goog.isDef(layerRenderer)); return layerRenderer; }; @@ -155,6 +161,15 @@ ol.renderer.Map.prototype.getMap = function() { }; +/** + * @param {goog.events.Event} event Event. + * @protected + */ +ol.renderer.Map.prototype.handleLayerRendererChange = function(event) { + this.getMap().render(); +}; + + /** * @param {ol.CollectionEvent} collectionEvent Collection event. * @protected @@ -213,10 +228,12 @@ ol.renderer.Map.prototype.removeLayer = function(layer) { * @protected */ ol.renderer.Map.prototype.removeLayerRenderer = function(layer) { - var key = goog.getUid(layer); - if (key in this.layerRenderers) { - var layerRenderer = this.layerRenderers[key]; - delete this.layerRenderers[key]; + var layerKey = goog.getUid(layer); + if (layerKey in this.layerRenderers) { + var layerRenderer = this.layerRenderers[layerKey]; + delete this.layerRenderers[layerKey]; + goog.events.unlistenByKey(this.layerRendererChangeListenKeys_[layerKey]); + delete this.layerRendererChangeListenKeys_[layerKey]; return layerRenderer; } else { return null; @@ -237,7 +254,11 @@ ol.renderer.Map.prototype.renderFrame = goog.nullFunction; * @protected */ ol.renderer.Map.prototype.setLayerRenderer = function(layer, layerRenderer) { - var key = goog.getUid(layer); - goog.asserts.assert(!(key in this.layerRenderers)); - this.layerRenderers[key] = layerRenderer; + var layerKey = goog.getUid(layer); + goog.asserts.assert(!(layerKey in this.layerRenderers)); + this.layerRenderers[layerKey] = layerRenderer; + goog.asserts.assert(!(layerKey in this.layerRendererChangeListenKeys_)); + this.layerRendererChangeListenKeys_[layerKey] = goog.events.listen( + layerRenderer, goog.events.EventType.CHANGE, + this.handleLayerRendererChange, false, this); }; diff --git a/src/ol/renderer/webgl/webgllayerrenderer.js b/src/ol/renderer/webgl/webgllayerrenderer.js index 7fce8f5256..3f8f3c2d17 100644 --- a/src/ol/renderer/webgl/webgllayerrenderer.js +++ b/src/ol/renderer/webgl/webgllayerrenderer.js @@ -3,9 +3,7 @@ goog.provide('ol.renderer.webgl.Layer'); goog.require('goog.vec.Mat4'); -goog.require('ol.FrameState'); goog.require('ol.layer.Layer'); -goog.require('ol.layer.LayerState'); goog.require('ol.renderer.Layer'); goog.require('ol.vec.Mat4'); @@ -66,14 +64,6 @@ ol.renderer.webgl.Layer = function(mapRenderer, layer) { goog.inherits(ol.renderer.webgl.Layer, ol.renderer.Layer); -/** - * @protected - */ -ol.renderer.webgl.Layer.prototype.dispatchChangeEvent = function() { - this.dispatchEvent(goog.events.EventType.CHANGE); -}; - - /** * @return {!goog.vec.Mat4.Float32} Color matrix. */ @@ -140,22 +130,6 @@ ol.renderer.webgl.Layer.prototype.handleLayerHueChange = function() { }; -/** - * @inheritDoc - */ -ol.renderer.webgl.Layer.prototype.handleLayerLoad = function() { - this.dispatchChangeEvent(); -}; - - -/** - * @inheritDoc - */ -ol.renderer.webgl.Layer.prototype.handleLayerOpacityChange = function() { - this.dispatchChangeEvent(); -}; - - /** * @inheritDoc */ @@ -167,28 +141,12 @@ ol.renderer.webgl.Layer.prototype.handleLayerSaturationChange = function() { }; -/** - * @inheritDoc - */ -ol.renderer.webgl.Layer.prototype.handleLayerVisibleChange = function() { - this.dispatchChangeEvent(); -}; - - /** * Handle webglcontextlost. */ ol.renderer.webgl.Layer.prototype.handleWebGLContextLost = goog.nullFunction; -/** - * Render. - * @param {ol.FrameState} frameState Frame state. - * @param {ol.layer.LayerState} layerState Layer state. - */ -ol.renderer.webgl.Layer.prototype.renderFrame = goog.abstractMethod; - - /** * @private */ diff --git a/src/ol/renderer/webgl/webglmaprenderer.js b/src/ol/renderer/webgl/webglmaprenderer.js index 6a62129e67..6c657fb0f5 100644 --- a/src/ol/renderer/webgl/webglmaprenderer.js +++ b/src/ol/renderer/webgl/webglmaprenderer.js @@ -206,12 +206,6 @@ ol.renderer.webgl.Map = function(container, map) { */ this.vertexShader_ = ol.renderer.webgl.map.shader.Vertex.getInstance(); - /** - * @private - * @type {Object.} - */ - this.layerRendererChangeListenKeys_ = {}; - this.initializeGL_(); }; @@ -409,15 +403,6 @@ ol.renderer.webgl.Map.prototype.getShader = function(shaderObject) { }; -/** - * @param {goog.events.Event} event Event. - * @protected - */ -ol.renderer.webgl.Map.prototype.handleLayerRendererChange = function(event) { - this.getMap().render(); -}; - - /** * @param {goog.events.Event} event Event. * @protected @@ -484,20 +469,6 @@ ol.renderer.webgl.Map.prototype.removeLayer = function(layer) { }; -/** - * @inheritDoc - */ -ol.renderer.webgl.Map.prototype.removeLayerRenderer = function(layer) { - var layerRenderer = goog.base(this, 'removeLayerRenderer', layer); - if (!goog.isNull(layerRenderer)) { - var layerKey = goog.getUid(layer); - goog.events.unlistenByKey(this.layerRendererChangeListenKeys_[layerKey]); - delete this.layerRendererChangeListenKeys_[layerKey]; - } - return layerRenderer; -}; - - /** * @inheritDoc */ @@ -604,16 +575,3 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) { } }; - - -/** - * @inheritDoc - */ -ol.renderer.webgl.Map.prototype.setLayerRenderer = function( - layer, layerRenderer) { - goog.base(this, 'setLayerRenderer', layer, layerRenderer); - var layerKey = goog.getUid(layer); - this.layerRendererChangeListenKeys_[layerKey] = goog.events.listen( - layerRenderer, goog.events.EventType.CHANGE, - this.handleLayerRendererChange, false, this); -};