From b880ab80ee5c3175572fa0f54b04ce98593e5eb9 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Thu, 17 Jan 2013 11:51:38 +0100 Subject: [PATCH] Factor out updateTileUsage --- src/ol/renderer/dom/domtilelayerrenderer.js | 17 ++---------- src/ol/renderer/layerrenderer.js | 26 +++++++++++++++++++ .../renderer/webgl/webgltilelayerrenderer.js | 18 ++----------- 3 files changed, 30 insertions(+), 31 deletions(-) diff --git a/src/ol/renderer/dom/domtilelayerrenderer.js b/src/ol/renderer/dom/domtilelayerrenderer.js index f80ca05e04..58a55295f7 100644 --- a/src/ol/renderer/dom/domtilelayerrenderer.js +++ b/src/ol/renderer/dom/domtilelayerrenderer.js @@ -89,21 +89,6 @@ ol.renderer.dom.TileLayer.prototype.renderFrame = var tileRange = tileGrid.getTileRangeForExtentAndResolution( frameState.extent, tileResolution); - // FIXME should also consider interim tiles - var tileUsage = frameState.tileUsage; - var tileSourceKey = goog.getUid(tileSource).toString(); - var zKey = z.toString(); - if (tileSourceKey in tileUsage) { - if (z in tileUsage[tileSourceKey]) { - tileUsage[tileSourceKey][zKey].extend(tileRange); - } else { - tileUsage[tileSourceKey][zKey] = tileRange; - } - } else { - tileUsage[tileSourceKey] = {}; - tileUsage[tileSourceKey][zKey] = tileRange; - } - /** @type {Object.>} */ var tilesToDrawByZ = {}; tilesToDrawByZ[z] = {}; @@ -251,6 +236,8 @@ ol.renderer.dom.TileLayer.prototype.renderFrame = frameState.animate = true; } + this.updateTileUsage(frameState.tileUsage, tileSource, z, tileRange); + }; diff --git a/src/ol/renderer/layerrenderer.js b/src/ol/renderer/layerrenderer.js index b2078f4c94..b2003467ab 100644 --- a/src/ol/renderer/layerrenderer.js +++ b/src/ol/renderer/layerrenderer.js @@ -3,6 +3,7 @@ goog.provide('ol.renderer.Layer'); goog.require('goog.events'); goog.require('goog.events.EventType'); goog.require('ol.Object'); +goog.require('ol.TileRange'); goog.require('ol.layer.Layer'); goog.require('ol.layer.LayerProperty'); @@ -125,3 +126,28 @@ ol.renderer.Layer.prototype.handleLayerSaturationChange = goog.nullFunction; * @protected */ ol.renderer.Layer.prototype.handleLayerVisibleChange = goog.nullFunction; + + +/** + * @protected + * @param {Object.>} tileUsage Tile usage. + * @param {ol.source.Source} source Source. + * @param {number} z Z. + * @param {ol.TileRange} tileRange Tile range. + */ +ol.renderer.Layer.prototype.updateTileUsage = + function(tileUsage, source, z, tileRange) { + // FIXME should we use tilesToDrawByZ instead? + var sourceKey = goog.getUid(source).toString(); + var zKey = z.toString(); + if (sourceKey in tileUsage) { + if (z in tileUsage[sourceKey]) { + tileUsage[sourceKey][zKey].extend(tileRange); + } else { + tileUsage[sourceKey][zKey] = tileRange; + } + } else { + tileUsage[sourceKey] = {}; + tileUsage[sourceKey][zKey] = tileRange; + } +}; diff --git a/src/ol/renderer/webgl/webgltilelayerrenderer.js b/src/ol/renderer/webgl/webgltilelayerrenderer.js index e9ddb277b3..de1f18e1e2 100644 --- a/src/ol/renderer/webgl/webgltilelayerrenderer.js +++ b/src/ol/renderer/webgl/webgltilelayerrenderer.js @@ -276,23 +276,7 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame = var tileRange = tileGrid.getTileRangeForExtentAndResolution( frameState.extent, tileResolution); - // FIXME should also consider interim tiles - var tileUsage = frameState.tileUsage; - var tileSourceKey = goog.getUid(tileSource).toString(); - var zKey = z.toString(); - if (tileSourceKey in tileUsage) { - if (z in tileUsage[tileSourceKey]) { - tileUsage[tileSourceKey][zKey].extend(tileRange); - } else { - tileUsage[tileSourceKey][zKey] = tileRange; - } - } else { - tileUsage[tileSourceKey] = {}; - tileUsage[tileSourceKey][zKey] = tileRange; - } - var framebufferExtent; - if (!goog.isNull(this.renderedTileRange_) && this.renderedTileRange_.equals(tileRange)) { framebufferExtent = this.renderedFramebufferExtent_; @@ -475,6 +459,8 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame = } + this.updateTileUsage(frameState.tileUsage, tileSource, z, tileRange); + goog.vec.Mat4.makeIdentity(this.matrix_); goog.vec.Mat4.translate(this.matrix_, (view2DState.center.x - framebufferExtent.minX) /