Promote handleLayerRendererChange from ol.renderer.webgl.Map to ol.renderer.Map

This commit is contained in:
Tom Payne
2013-01-28 19:39:54 +01:00
parent 49734de240
commit 5558d6108c
2 changed files with 30 additions and 51 deletions
+30 -9
View File
@@ -59,6 +59,12 @@ ol.renderer.Map = function(container, map) {
*/ */
this.layersListenerKeys_ = null; this.layersListenerKeys_ = null;
/**
* @private
* @type {Object.<number, ?number>}
*/
this.layerRendererChangeListenKeys_ = {};
}; };
goog.inherits(ol.renderer.Map, goog.Disposable); 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. * @return {ol.renderer.Layer} Layer renderer.
*/ */
ol.renderer.Map.prototype.getLayerRenderer = function(layer) { ol.renderer.Map.prototype.getLayerRenderer = function(layer) {
var key = goog.getUid(layer); var layerKey = goog.getUid(layer);
var layerRenderer = this.layerRenderers[key]; var layerRenderer = this.layerRenderers[layerKey];
goog.asserts.assert(goog.isDef(layerRenderer)); goog.asserts.assert(goog.isDef(layerRenderer));
return 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. * @param {ol.CollectionEvent} collectionEvent Collection event.
* @protected * @protected
@@ -213,10 +228,12 @@ ol.renderer.Map.prototype.removeLayer = function(layer) {
* @protected * @protected
*/ */
ol.renderer.Map.prototype.removeLayerRenderer = function(layer) { ol.renderer.Map.prototype.removeLayerRenderer = function(layer) {
var key = goog.getUid(layer); var layerKey = goog.getUid(layer);
if (key in this.layerRenderers) { if (layerKey in this.layerRenderers) {
var layerRenderer = this.layerRenderers[key]; var layerRenderer = this.layerRenderers[layerKey];
delete this.layerRenderers[key]; delete this.layerRenderers[layerKey];
goog.events.unlistenByKey(this.layerRendererChangeListenKeys_[layerKey]);
delete this.layerRendererChangeListenKeys_[layerKey];
return layerRenderer; return layerRenderer;
} else { } else {
return null; return null;
@@ -237,7 +254,11 @@ ol.renderer.Map.prototype.renderFrame = goog.nullFunction;
* @protected * @protected
*/ */
ol.renderer.Map.prototype.setLayerRenderer = function(layer, layerRenderer) { ol.renderer.Map.prototype.setLayerRenderer = function(layer, layerRenderer) {
var key = goog.getUid(layer); var layerKey = goog.getUid(layer);
goog.asserts.assert(!(key in this.layerRenderers)); goog.asserts.assert(!(layerKey in this.layerRenderers));
this.layerRenderers[key] = layerRenderer; 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);
}; };
-42
View File
@@ -206,12 +206,6 @@ ol.renderer.webgl.Map = function(container, map) {
*/ */
this.vertexShader_ = ol.renderer.webgl.map.shader.Vertex.getInstance(); this.vertexShader_ = ol.renderer.webgl.map.shader.Vertex.getInstance();
/**
* @private
* @type {Object.<number, null|number>}
*/
this.layerRendererChangeListenKeys_ = {};
this.initializeGL_(); 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. * @param {goog.events.Event} event Event.
* @protected * @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 * @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);
};