Factor out updateTileUsage

This commit is contained in:
Tom Payne
2013-01-17 11:51:38 +01:00
parent 9fbabc3696
commit b880ab80ee
3 changed files with 30 additions and 31 deletions

View File

@@ -89,21 +89,6 @@ ol.renderer.dom.TileLayer.prototype.renderFrame =
var tileRange = tileGrid.getTileRangeForExtentAndResolution( var tileRange = tileGrid.getTileRangeForExtentAndResolution(
frameState.extent, tileResolution); 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.<number, Object.<string, ol.Tile>>} */ /** @type {Object.<number, Object.<string, ol.Tile>>} */
var tilesToDrawByZ = {}; var tilesToDrawByZ = {};
tilesToDrawByZ[z] = {}; tilesToDrawByZ[z] = {};
@@ -251,6 +236,8 @@ ol.renderer.dom.TileLayer.prototype.renderFrame =
frameState.animate = true; frameState.animate = true;
} }
this.updateTileUsage(frameState.tileUsage, tileSource, z, tileRange);
}; };

View File

@@ -3,6 +3,7 @@ goog.provide('ol.renderer.Layer');
goog.require('goog.events'); goog.require('goog.events');
goog.require('goog.events.EventType'); goog.require('goog.events.EventType');
goog.require('ol.Object'); goog.require('ol.Object');
goog.require('ol.TileRange');
goog.require('ol.layer.Layer'); goog.require('ol.layer.Layer');
goog.require('ol.layer.LayerProperty'); goog.require('ol.layer.LayerProperty');
@@ -125,3 +126,28 @@ ol.renderer.Layer.prototype.handleLayerSaturationChange = goog.nullFunction;
* @protected * @protected
*/ */
ol.renderer.Layer.prototype.handleLayerVisibleChange = goog.nullFunction; ol.renderer.Layer.prototype.handleLayerVisibleChange = goog.nullFunction;
/**
* @protected
* @param {Object.<string, Object.<string, ol.TileRange>>} 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;
}
};

View File

@@ -276,23 +276,7 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
var tileRange = tileGrid.getTileRangeForExtentAndResolution( var tileRange = tileGrid.getTileRangeForExtentAndResolution(
frameState.extent, tileResolution); 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; var framebufferExtent;
if (!goog.isNull(this.renderedTileRange_) && if (!goog.isNull(this.renderedTileRange_) &&
this.renderedTileRange_.equals(tileRange)) { this.renderedTileRange_.equals(tileRange)) {
framebufferExtent = this.renderedFramebufferExtent_; 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.makeIdentity(this.matrix_);
goog.vec.Mat4.translate(this.matrix_, goog.vec.Mat4.translate(this.matrix_,
(view2DState.center.x - framebufferExtent.minX) / (view2DState.center.x - framebufferExtent.minX) /