From 9e4d80b459e1ff9a6c3d5ef2f71783ea81e41b23 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Thu, 11 Aug 2016 22:58:32 -0600 Subject: [PATCH] Move State to ol.Tile --- externs/olx.js | 12 +++---- src/ol/featureloader.js | 4 +-- src/ol/imagetile.js | 17 +++++----- src/ol/index.js | 2 +- src/ol/renderer/canvas/tilelayer.js | 10 +++--- src/ol/renderer/dom/tilelayer.js | 14 ++++---- src/ol/renderer/layer.js | 4 +-- src/ol/renderer/webgl/tilelayer.js | 16 +++++----- src/ol/reproj/tile.js | 37 +++++++++++----------- src/ol/source/tile.js | 4 +-- src/ol/source/tiledebug.js | 3 +- src/ol/source/tileimage.js | 14 ++++---- src/ol/source/tileutfgrid.js | 15 ++++----- src/ol/source/urltile.js | 8 ++--- src/ol/source/vectortile.js | 6 ++-- src/ol/source/zoomify.js | 6 ++-- src/ol/tile.js | 34 ++++++++++---------- src/ol/tilequeue.js | 8 ++--- src/ol/vectortile.js | 11 +++---- test/spec/ol/imagetile.test.js | 24 +++++++------- test/spec/ol/source/tile.test.js | 2 +- test_rendering/spec/ol/reproj/tile.test.js | 6 ++-- 22 files changed, 126 insertions(+), 131 deletions(-) diff --git a/externs/olx.js b/externs/olx.js index f8b12340f0..9d4134119e 100644 --- a/externs/olx.js +++ b/externs/olx.js @@ -4190,7 +4190,7 @@ olx.source.TileUTFGridOptions.prototype.url; * reprojectionErrorThreshold: (number|undefined), * state: (ol.source.State|undefined), * tileClass: (function(new: ol.ImageTile, ol.TileCoord, - * ol.TileState, string, ?string, + * ol.Tile.State, string, ?string, * ol.TileLoadFunctionType)|undefined), * tileGrid: (ol.tilegrid.TileGrid|undefined), * tileLoadFunction: (ol.TileLoadFunctionType|undefined), @@ -4275,7 +4275,7 @@ olx.source.TileImageOptions.prototype.state; /** * Class used to instantiate image tiles. Default is {@link ol.ImageTile}. * @type {function(new: ol.ImageTile, ol.TileCoord, - * ol.TileState, string, ?string, + * ol.Tile.State, string, ?string, * ol.TileLoadFunctionType)|undefined} * @api */ @@ -4359,7 +4359,7 @@ olx.source.TileImageOptions.prototype.wrapX; * projection: ol.ProjectionLike, * state: (ol.source.State|undefined), * tileClass: (function(new: ol.VectorTile, ol.TileCoord, - * ol.TileState, string, ol.format.Feature, + * ol.Tile.State, string, ol.format.Feature, * ol.TileLoadFunctionType)|undefined), * tileGrid: (ol.tilegrid.TileGrid|undefined), * tileLoadFunction: (ol.TileLoadFunctionType|undefined), @@ -4424,7 +4424,7 @@ olx.source.VectorTileOptions.prototype.state; /** * Class used to instantiate image tiles. Default is {@link ol.VectorTile}. * @type {function(new: ol.VectorTile, ol.TileCoord, - * ol.TileState, string, ol.format.Feature, + * ol.Tile.State, string, ol.format.Feature, * ol.TileLoadFunctionType)|undefined} * @api */ @@ -5922,7 +5922,7 @@ olx.source.VectorOptions.prototype.wrapX; * tileLoadFunction: (ol.TileLoadFunctionType|undefined), * urls: (Array.|undefined), * tileClass: (function(new: ol.ImageTile, ol.TileCoord, - * ol.TileState, string, ?string, + * ol.Tile.State, string, ?string, * ol.TileLoadFunctionType)|undefined), * wrapX: (boolean|undefined)}} */ @@ -6017,7 +6017,7 @@ olx.source.WMTSOptions.prototype.style; /** * Class used to instantiate image tiles. Default is {@link ol.ImageTile}. * @type {function(new: ol.ImageTile, ol.TileCoord, - * ol.TileState, string, ?string, + * ol.Tile.State, string, ?string, * ol.TileLoadFunctionType)|undefined} * @api */ diff --git a/src/ol/featureloader.js b/src/ol/featureloader.js index 26c42432b9..1e1cf46bd5 100644 --- a/src/ol/featureloader.js +++ b/src/ol/featureloader.js @@ -1,6 +1,6 @@ goog.provide('ol.featureloader'); -goog.require('ol.TileState'); +goog.require('ol.Tile'); goog.require('ol.format.FormatType'); goog.require('ol.xml'); @@ -93,7 +93,7 @@ ol.featureloader.tile = function(url, format) { * @this {ol.VectorTile} */ function() { - this.setState(ol.TileState.ERROR); + this.setState(ol.Tile.State.ERROR); }); }; diff --git a/src/ol/imagetile.js b/src/ol/imagetile.js index 3fc9072891..27420d9573 100644 --- a/src/ol/imagetile.js +++ b/src/ol/imagetile.js @@ -1,7 +1,6 @@ goog.provide('ol.ImageTile'); goog.require('ol.Tile'); -goog.require('ol.TileState'); goog.require('ol.events'); goog.require('ol.events.EventType'); goog.require('ol.obj'); @@ -11,7 +10,7 @@ goog.require('ol.obj'); * @constructor * @extends {ol.Tile} * @param {ol.TileCoord} tileCoord Tile coordinate. - * @param {ol.TileState} state State. + * @param {ol.Tile.State} state State. * @param {string} src Image source URI. * @param {?string} crossOrigin Cross origin. * @param {ol.TileLoadFunctionType} tileLoadFunction Tile load function. @@ -63,13 +62,13 @@ ol.inherits(ol.ImageTile, ol.Tile); * @inheritDoc */ ol.ImageTile.prototype.disposeInternal = function() { - if (this.state == ol.TileState.LOADING) { + if (this.state == ol.Tile.State.LOADING) { this.unlistenImage_(); } if (this.interimTile) { this.interimTile.dispose(); } - this.state = ol.TileState.ABORT; + this.state = ol.Tile.State.ABORT; this.changed(); ol.Tile.prototype.disposeInternal.call(this); }; @@ -113,7 +112,7 @@ ol.ImageTile.prototype.getKey = function() { * @private */ ol.ImageTile.prototype.handleImageError_ = function() { - this.state = ol.TileState.ERROR; + this.state = ol.Tile.State.ERROR; this.unlistenImage_(); this.changed(); }; @@ -126,9 +125,9 @@ ol.ImageTile.prototype.handleImageError_ = function() { */ ol.ImageTile.prototype.handleImageLoad_ = function() { if (this.image_.naturalWidth && this.image_.naturalHeight) { - this.state = ol.TileState.LOADED; + this.state = ol.Tile.State.LOADED; } else { - this.state = ol.TileState.EMPTY; + this.state = ol.Tile.State.EMPTY; } this.unlistenImage_(); this.changed(); @@ -142,8 +141,8 @@ ol.ImageTile.prototype.handleImageLoad_ = function() { * @api */ ol.ImageTile.prototype.load = function() { - if (this.state == ol.TileState.IDLE || this.state == ol.TileState.ERROR) { - this.state = ol.TileState.LOADING; + if (this.state == ol.Tile.State.IDLE || this.state == ol.Tile.State.ERROR) { + this.state = ol.Tile.State.LOADING; this.changed(); goog.DEBUG && console.assert(!this.imageListenerKeys_, 'this.imageListenerKeys_ should be null'); diff --git a/src/ol/index.js b/src/ol/index.js index 9004ffdbf0..9f5f0422f4 100644 --- a/src/ol/index.js +++ b/src/ol/index.js @@ -173,7 +173,7 @@ ol.OVERVIEWMAP_MIN_RATIO = 0.1; * This can happen if the developer defines projections improperly and/or * with unlimited extents. * If too many tiles are required, no tiles are loaded and - * `ol.TileState.ERROR` state is set. Default is `100`. + * `ol.Tile.State.ERROR` state is set. Default is `100`. */ ol.RASTER_REPROJECTION_MAX_SOURCE_TILES = 100; diff --git a/src/ol/renderer/canvas/tilelayer.js b/src/ol/renderer/canvas/tilelayer.js index 225ad34650..9d65c2580e 100644 --- a/src/ol/renderer/canvas/tilelayer.js +++ b/src/ol/renderer/canvas/tilelayer.js @@ -4,7 +4,7 @@ goog.provide('ol.renderer.canvas.TileLayer'); goog.require('ol.transform'); goog.require('ol.TileRange'); -goog.require('ol.TileState'); +goog.require('ol.Tile'); goog.require('ol.array'); goog.require('ol.dom'); goog.require('ol.extent'); @@ -131,9 +131,9 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame = function( */ function(tile) { var tileState = tile.getState(); - return tileState == ol.TileState.LOADED || - tileState == ol.TileState.EMPTY || - tileState == ol.TileState.ERROR && !useInterimTilesOnError; + return tileState == ol.Tile.State.LOADED || + tileState == ol.Tile.State.EMPTY || + tileState == ol.Tile.State.ERROR && !useInterimTilesOnError; }); for (x = tileRange.minX; x <= tileRange.maxX; ++x) { for (y = tileRange.minY; y <= tileRange.maxY; ++y) { @@ -168,7 +168,7 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame = function( tilesToDraw = tilesToDrawByZ[currentZ]; for (tileCoordKey in tilesToDraw) { tile = tilesToDraw[tileCoordKey]; - if (tile.getState() == ol.TileState.LOADED) { + if (tile.getState() == ol.Tile.State.LOADED) { renderables.push(tile); } } diff --git a/src/ol/renderer/dom/tilelayer.js b/src/ol/renderer/dom/tilelayer.js index 3bd2762f41..81a26aa59c 100644 --- a/src/ol/renderer/dom/tilelayer.js +++ b/src/ol/renderer/dom/tilelayer.js @@ -6,7 +6,7 @@ goog.provide('ol.renderer.dom.TileLayer'); goog.require('ol.transform'); goog.require('ol'); goog.require('ol.TileRange'); -goog.require('ol.TileState'); +goog.require('ol.Tile'); goog.require('ol.ViewHint'); goog.require('ol.array'); goog.require('ol.dom'); @@ -120,18 +120,18 @@ ol.renderer.dom.TileLayer.prototype.prepareFrame = function(frameState, layerSta for (y = tileRange.minY; y <= tileRange.maxY; ++y) { tile = tileSource.getTile(z, x, y, pixelRatio, projection); tileState = tile.getState(); - drawable = tileState == ol.TileState.LOADED || - tileState == ol.TileState.EMPTY || - tileState == ol.TileState.ERROR && !useInterimTilesOnError; + drawable = tileState == ol.Tile.State.LOADED || + tileState == ol.Tile.State.EMPTY || + tileState == ol.Tile.State.ERROR && !useInterimTilesOnError; if (!drawable && tile.interimTile) { tile = tile.interimTile; } tileState = tile.getState(); - if (tileState == ol.TileState.LOADED) { + if (tileState == ol.Tile.State.LOADED) { tilesToDrawByZ[z][tile.tileCoord.toString()] = tile; continue; - } else if (tileState == ol.TileState.EMPTY || - (tileState == ol.TileState.ERROR && + } else if (tileState == ol.Tile.State.EMPTY || + (tileState == ol.Tile.State.ERROR && !useInterimTilesOnError)) { continue; } diff --git a/src/ol/renderer/layer.js b/src/ol/renderer/layer.js index 15ff460287..29855af6cf 100644 --- a/src/ol/renderer/layer.js +++ b/src/ol/renderer/layer.js @@ -6,7 +6,7 @@ goog.require('ol'); goog.require('ol.functions'); goog.require('ol.ImageState'); goog.require('ol.Observable'); -goog.require('ol.TileState'); +goog.require('ol.Tile'); goog.require('ol.transform'); goog.require('ol.source.State'); @@ -306,7 +306,7 @@ ol.renderer.Layer.prototype.manageTilePyramid = function( for (y = tileRange.minY; y <= tileRange.maxY; ++y) { if (currentZ - z <= preload) { tile = tileSource.getTile(z, x, y, pixelRatio, projection); - if (tile.getState() == ol.TileState.IDLE) { + if (tile.getState() == ol.Tile.State.IDLE) { wantedTiles[tile.getKey()] = true; if (!tileQueue.isKeyQueued(tile.getKey())) { tileQueue.enqueue([tile, tileSourceKey, diff --git a/src/ol/renderer/webgl/tilelayer.js b/src/ol/renderer/webgl/tilelayer.js index 130cf94feb..eba5a20aec 100644 --- a/src/ol/renderer/webgl/tilelayer.js +++ b/src/ol/renderer/webgl/tilelayer.js @@ -5,7 +5,7 @@ goog.provide('ol.renderer.webgl.TileLayer'); goog.require('ol.transform'); goog.require('ol.TileRange'); -goog.require('ol.TileState'); +goog.require('ol.Tile'); goog.require('ol.array'); goog.require('ol.extent'); goog.require('ol.math'); @@ -248,20 +248,20 @@ ol.renderer.webgl.TileLayer.prototype.prepareFrame = function(frameState, layerS } } tileState = tile.getState(); - drawable = tileState == ol.TileState.LOADED || - tileState == ol.TileState.EMPTY || - tileState == ol.TileState.ERROR && !useInterimTilesOnError; + drawable = tileState == ol.Tile.State.LOADED || + tileState == ol.Tile.State.EMPTY || + tileState == ol.Tile.State.ERROR && !useInterimTilesOnError; if (!drawable && tile.interimTile) { tile = tile.interimTile; } tileState = tile.getState(); - if (tileState == ol.TileState.LOADED) { + if (tileState == ol.Tile.State.LOADED) { if (mapRenderer.isTileTextureLoaded(tile)) { tilesToDrawByZ[z][tile.tileCoord.toString()] = tile; continue; } - } else if (tileState == ol.TileState.EMPTY || - (tileState == ol.TileState.ERROR && + } else if (tileState == ol.Tile.State.EMPTY || + (tileState == ol.Tile.State.ERROR && !useInterimTilesOnError)) { continue; } @@ -328,7 +328,7 @@ ol.renderer.webgl.TileLayer.prototype.prepareFrame = function(frameState, layerS * @param {ol.Tile} tile Tile. */ function(tile) { - if (tile.getState() == ol.TileState.LOADED && + if (tile.getState() == ol.Tile.State.LOADED && !mapRenderer.isTileTextureLoaded(tile) && !tileTextureQueue.isKeyQueued(tile.getKey())) { tileTextureQueue.enqueue([ diff --git a/src/ol/reproj/tile.js b/src/ol/reproj/tile.js index 9eeae35b25..60844e840f 100644 --- a/src/ol/reproj/tile.js +++ b/src/ol/reproj/tile.js @@ -1,7 +1,6 @@ goog.provide('ol.reproj.Tile'); goog.require('ol.Tile'); -goog.require('ol.TileState'); goog.require('ol.events'); goog.require('ol.events.EventType'); goog.require('ol.extent'); @@ -36,7 +35,7 @@ ol.reproj.Tile = function(sourceProj, sourceTileGrid, pixelRatio, gutter, getTileFunction, opt_errorThreshold, opt_renderEdges) { - ol.Tile.call(this, tileCoord, ol.TileState.IDLE); + ol.Tile.call(this, tileCoord, ol.Tile.State.IDLE); /** * @private @@ -114,7 +113,7 @@ ol.reproj.Tile = function(sourceProj, sourceTileGrid, if (ol.extent.getArea(limitedTargetExtent) === 0) { // Tile is completely outside range -> EMPTY // TODO: is it actually correct that the source even creates the tile ? - this.state = ol.TileState.EMPTY; + this.state = ol.Tile.State.EMPTY; return; } @@ -138,7 +137,7 @@ ol.reproj.Tile = function(sourceProj, sourceTileGrid, if (!isFinite(sourceResolution) || sourceResolution <= 0) { // invalid sourceResolution -> EMPTY // probably edges of the projections when no extent is defined - this.state = ol.TileState.EMPTY; + this.state = ol.Tile.State.EMPTY; return; } @@ -155,7 +154,7 @@ ol.reproj.Tile = function(sourceProj, sourceTileGrid, if (this.triangulation_.getTriangles().length === 0) { // no valid triangles -> EMPTY - this.state = ol.TileState.EMPTY; + this.state = ol.Tile.State.EMPTY; return; } @@ -174,7 +173,7 @@ ol.reproj.Tile = function(sourceProj, sourceTileGrid, } if (!ol.extent.getArea(sourceExtent)) { - this.state = ol.TileState.EMPTY; + this.state = ol.Tile.State.EMPTY; } else { var sourceRange = sourceTileGrid.getTileRangeForExtentAndZ( sourceExtent, this.sourceZ_); @@ -182,7 +181,7 @@ ol.reproj.Tile = function(sourceProj, sourceTileGrid, var tilesRequired = sourceRange.getWidth() * sourceRange.getHeight(); if (goog.DEBUG && !(tilesRequired < ol.RASTER_REPROJECTION_MAX_SOURCE_TILES)) { console.assert(false, 'reasonable number of tiles is required'); - this.state = ol.TileState.ERROR; + this.state = ol.Tile.State.ERROR; return; } for (var srcX = sourceRange.minX; srcX <= sourceRange.maxX; srcX++) { @@ -195,7 +194,7 @@ ol.reproj.Tile = function(sourceProj, sourceTileGrid, } if (this.sourceTiles_.length === 0) { - this.state = ol.TileState.EMPTY; + this.state = ol.Tile.State.EMPTY; } } }; @@ -206,7 +205,7 @@ ol.inherits(ol.reproj.Tile, ol.Tile); * @inheritDoc */ ol.reproj.Tile.prototype.disposeInternal = function() { - if (this.state == ol.TileState.LOADING) { + if (this.state == ol.Tile.State.LOADING) { this.unlistenSources_(); } ol.Tile.prototype.disposeInternal.call(this); @@ -241,7 +240,7 @@ ol.reproj.Tile.prototype.getImage = function(opt_context) { ol.reproj.Tile.prototype.reproject_ = function() { var sources = []; this.sourceTiles_.forEach(function(tile, i, arr) { - if (tile && tile.getState() == ol.TileState.LOADED) { + if (tile && tile.getState() == ol.Tile.State.LOADED) { sources.push({ extent: this.sourceTileGrid_.getTileCoordExtent(tile.tileCoord), image: tile.getImage() @@ -251,7 +250,7 @@ ol.reproj.Tile.prototype.reproject_ = function() { this.sourceTiles_.length = 0; if (sources.length === 0) { - this.state = ol.TileState.ERROR; + this.state = ol.Tile.State.ERROR; } else { var z = this.wrappedTileCoord_[0]; var size = this.targetTileGrid_.getTileSize(z); @@ -267,7 +266,7 @@ ol.reproj.Tile.prototype.reproject_ = function() { targetResolution, targetExtent, this.triangulation_, sources, this.gutter_, this.renderEdges_); - this.state = ol.TileState.LOADED; + this.state = ol.Tile.State.LOADED; } this.changed(); }; @@ -277,8 +276,8 @@ ol.reproj.Tile.prototype.reproject_ = function() { * @inheritDoc */ ol.reproj.Tile.prototype.load = function() { - if (this.state == ol.TileState.IDLE) { - this.state = ol.TileState.LOADING; + if (this.state == ol.Tile.State.IDLE) { + this.state = ol.Tile.State.LOADING; this.changed(); var leftToLoad = 0; @@ -289,16 +288,16 @@ ol.reproj.Tile.prototype.load = function() { this.sourcesListenerKeys_ = []; this.sourceTiles_.forEach(function(tile, i, arr) { var state = tile.getState(); - if (state == ol.TileState.IDLE || state == ol.TileState.LOADING) { + if (state == ol.Tile.State.IDLE || state == ol.Tile.State.LOADING) { leftToLoad++; var sourceListenKey; sourceListenKey = ol.events.listen(tile, ol.events.EventType.CHANGE, function(e) { var state = tile.getState(); - if (state == ol.TileState.LOADED || - state == ol.TileState.ERROR || - state == ol.TileState.EMPTY) { + if (state == ol.Tile.State.LOADED || + state == ol.Tile.State.ERROR || + state == ol.Tile.State.EMPTY) { ol.events.unlistenByKey(sourceListenKey); leftToLoad--; goog.DEBUG && console.assert(leftToLoad >= 0, @@ -315,7 +314,7 @@ ol.reproj.Tile.prototype.load = function() { this.sourceTiles_.forEach(function(tile, i, arr) { var state = tile.getState(); - if (state == ol.TileState.IDLE) { + if (state == ol.Tile.State.IDLE) { tile.load(); } }); diff --git a/src/ol/source/tile.js b/src/ol/source/tile.js index ccb6a2909c..85c01333e8 100644 --- a/src/ol/source/tile.js +++ b/src/ol/source/tile.js @@ -2,8 +2,8 @@ goog.provide('ol.source.Tile'); goog.provide('ol.source.TileEvent'); goog.require('ol'); +goog.require('ol.Tile'); goog.require('ol.TileCache'); -goog.require('ol.TileState'); goog.require('ol.events.Event'); goog.require('ol.proj'); goog.require('ol.size'); @@ -118,7 +118,7 @@ ol.source.Tile.prototype.forEachLoadedTile = function(projection, z, tileRange, loaded = false; if (tileCache.containsKey(tileCoordKey)) { tile = /** @type {!ol.Tile} */ (tileCache.get(tileCoordKey)); - loaded = tile.getState() === ol.TileState.LOADED; + loaded = tile.getState() === ol.Tile.State.LOADED; if (loaded) { loaded = (callback(tile) !== false); } diff --git a/src/ol/source/tiledebug.js b/src/ol/source/tiledebug.js index 83269bbc0f..072ae2d4b8 100644 --- a/src/ol/source/tiledebug.js +++ b/src/ol/source/tiledebug.js @@ -1,7 +1,6 @@ goog.provide('ol.source.TileDebug'); goog.require('ol.Tile'); -goog.require('ol.TileState'); goog.require('ol.dom'); goog.require('ol.size'); goog.require('ol.source.Tile'); @@ -17,7 +16,7 @@ goog.require('ol.source.Tile'); */ ol.DebugTile_ = function(tileCoord, tileSize, text) { - ol.Tile.call(this, tileCoord, ol.TileState.LOADED); + ol.Tile.call(this, tileCoord, ol.Tile.State.LOADED); /** * @private diff --git a/src/ol/source/tileimage.js b/src/ol/source/tileimage.js index a5c6ff44cf..2872b1ed77 100644 --- a/src/ol/source/tileimage.js +++ b/src/ol/source/tileimage.js @@ -2,8 +2,8 @@ goog.provide('ol.source.TileImage'); goog.require('ol'); goog.require('ol.ImageTile'); +goog.require('ol.Tile'); goog.require('ol.TileCache'); -goog.require('ol.TileState'); goog.require('ol.events'); goog.require('ol.events.EventType'); goog.require('ol.proj'); @@ -51,7 +51,7 @@ ol.source.TileImage = function(options) { /** * @protected - * @type {function(new: ol.ImageTile, ol.TileCoord, ol.TileState, string, + * @type {function(new: ol.ImageTile, ol.TileCoord, ol.Tile.State, string, * ?string, ol.TileLoadFunctionType)} */ this.tileClass = options.tileClass !== undefined ? @@ -219,7 +219,7 @@ ol.source.TileImage.prototype.createTile_ = function(z, x, y, pixelRatio, projec this.tileUrlFunction(urlTileCoord, pixelRatio, projection) : undefined; var tile = new this.tileClass( tileCoord, - tileUrl !== undefined ? ol.TileState.IDLE : ol.TileState.EMPTY, + tileUrl !== undefined ? ol.Tile.State.IDLE : ol.Tile.State.EMPTY, tileUrl !== undefined ? tileUrl : '', this.crossOrigin, this.tileLoadFunction); @@ -303,18 +303,18 @@ ol.source.TileImage.prototype.getTileInternal = function(z, x, y, pixelRatio, pr // cases we attempt to assign an interim tile to the new tile. var /** @type {ol.Tile} */ interimTile = tile; if (tile.interimTile && tile.interimTile.key == key) { - goog.DEBUG && console.assert(tile.interimTile.getState() == ol.TileState.LOADED); + goog.DEBUG && console.assert(tile.interimTile.getState() == ol.Tile.State.LOADED); goog.DEBUG && console.assert(tile.interimTile.interimTile === null); tile = tile.interimTile; - if (interimTile.getState() == ol.TileState.LOADED) { + if (interimTile.getState() == ol.Tile.State.LOADED) { tile.interimTile = interimTile; } } else { tile = this.createTile_(z, x, y, pixelRatio, projection, key); - if (interimTile.getState() == ol.TileState.LOADED) { + if (interimTile.getState() == ol.Tile.State.LOADED) { tile.interimTile = interimTile; } else if (interimTile.interimTile && - interimTile.interimTile.getState() == ol.TileState.LOADED) { + interimTile.interimTile.getState() == ol.Tile.State.LOADED) { tile.interimTile = interimTile.interimTile; interimTile.interimTile = null; } diff --git a/src/ol/source/tileutfgrid.js b/src/ol/source/tileutfgrid.js index 7111861fdd..72b2f9431d 100644 --- a/src/ol/source/tileutfgrid.js +++ b/src/ol/source/tileutfgrid.js @@ -3,7 +3,6 @@ goog.provide('ol.source.TileUTFGrid'); goog.require('goog.async.nextTick'); goog.require('ol.Attribution'); goog.require('ol.Tile'); -goog.require('ol.TileState'); goog.require('ol.TileUrlFunction'); goog.require('ol.events'); goog.require('ol.events.EventType'); @@ -236,7 +235,7 @@ ol.source.TileUTFGrid.prototype.getTile = function(z, x, y, pixelRatio, projecti var tileUrl = this.tileUrlFunction_(urlTileCoord, pixelRatio, projection); var tile = new ol.source.TileUTFGridTile_( tileCoord, - tileUrl !== undefined ? ol.TileState.IDLE : ol.TileState.EMPTY, + tileUrl !== undefined ? ol.Tile.State.IDLE : ol.Tile.State.EMPTY, tileUrl !== undefined ? tileUrl : '', this.tileGrid.getTileCoordExtent(tileCoord), this.preemptive_, @@ -262,7 +261,7 @@ ol.source.TileUTFGrid.prototype.useTile = function(z, x, y) { * @constructor * @extends {ol.Tile} * @param {ol.TileCoord} tileCoord Tile coordinate. - * @param {ol.TileState} state State. + * @param {ol.Tile.State} state State. * @param {string} src Image source URI. * @param {ol.Extent} extent Extent of the tile. * @param {boolean} preemptive Load the tile when visible (before it's needed). @@ -384,7 +383,7 @@ ol.source.TileUTFGridTile_.prototype.getData = function(coordinate) { * @template T */ ol.source.TileUTFGridTile_.prototype.forDataAtCoordinate = function(coordinate, callback, opt_this, opt_request) { - if (this.state == ol.TileState.IDLE && opt_request === true) { + if (this.state == ol.Tile.State.IDLE && opt_request === true) { ol.events.listenOnce(this, ol.events.EventType.CHANGE, function(e) { callback.call(opt_this, this.getData(coordinate)); }, this); @@ -413,7 +412,7 @@ ol.source.TileUTFGridTile_.prototype.getKey = function() { * @private */ ol.source.TileUTFGridTile_.prototype.handleError_ = function() { - this.state = ol.TileState.ERROR; + this.state = ol.Tile.State.ERROR; this.changed(); }; @@ -427,7 +426,7 @@ ol.source.TileUTFGridTile_.prototype.handleLoad_ = function(json) { this.keys_ = json.keys; this.data_ = json.data; - this.state = ol.TileState.EMPTY; + this.state = ol.Tile.State.EMPTY; this.changed(); }; @@ -436,8 +435,8 @@ ol.source.TileUTFGridTile_.prototype.handleLoad_ = function(json) { * @private */ ol.source.TileUTFGridTile_.prototype.loadInternal_ = function() { - if (this.state == ol.TileState.IDLE) { - this.state = ol.TileState.LOADING; + if (this.state == ol.Tile.State.IDLE) { + this.state = ol.Tile.State.LOADING; if (this.jsonp_) { ol.net.jsonp(this.src_, this.handleLoad_.bind(this), this.handleError_.bind(this)); diff --git a/src/ol/source/urltile.js b/src/ol/source/urltile.js index 33b8071e5a..c2962b1eaf 100644 --- a/src/ol/source/urltile.js +++ b/src/ol/source/urltile.js @@ -1,6 +1,6 @@ goog.provide('ol.source.UrlTile'); -goog.require('ol.TileState'); +goog.require('ol.Tile'); goog.require('ol.TileUrlFunction'); goog.require('ol.source.Tile'); goog.require('ol.source.TileEvent'); @@ -109,15 +109,15 @@ ol.source.UrlTile.prototype.getUrls = function() { ol.source.UrlTile.prototype.handleTileChange = function(event) { var tile = /** @type {ol.Tile} */ (event.target); switch (tile.getState()) { - case ol.TileState.LOADING: + case ol.Tile.State.LOADING: this.dispatchEvent( new ol.source.TileEvent(ol.source.TileEventType.TILELOADSTART, tile)); break; - case ol.TileState.LOADED: + case ol.Tile.State.LOADED: this.dispatchEvent( new ol.source.TileEvent(ol.source.TileEventType.TILELOADEND, tile)); break; - case ol.TileState.ERROR: + case ol.Tile.State.ERROR: this.dispatchEvent( new ol.source.TileEvent(ol.source.TileEventType.TILELOADERROR, tile)); break; diff --git a/src/ol/source/vectortile.js b/src/ol/source/vectortile.js index b3fc3b5ee3..2ce0a19c53 100644 --- a/src/ol/source/vectortile.js +++ b/src/ol/source/vectortile.js @@ -1,6 +1,6 @@ goog.provide('ol.source.VectorTile'); -goog.require('ol.TileState'); +goog.require('ol.Tile'); goog.require('ol.VectorTile'); goog.require('ol.events'); goog.require('ol.events.EventType'); @@ -53,7 +53,7 @@ ol.source.VectorTile = function(options) { /** * @protected - * @type {function(new: ol.VectorTile, ol.TileCoord, ol.TileState, string, + * @type {function(new: ol.VectorTile, ol.TileCoord, ol.Tile.State, string, * ol.format.Feature, ol.TileLoadFunctionType)} */ this.tileClass = options.tileClass ? options.tileClass : ol.VectorTile; @@ -77,7 +77,7 @@ ol.source.VectorTile.prototype.getTile = function(z, x, y, pixelRatio, projectio this.tileUrlFunction(urlTileCoord, pixelRatio, projection) : undefined; var tile = new this.tileClass( tileCoord, - tileUrl !== undefined ? ol.TileState.IDLE : ol.TileState.EMPTY, + tileUrl !== undefined ? ol.Tile.State.IDLE : ol.Tile.State.EMPTY, tileUrl !== undefined ? tileUrl : '', this.format_, this.tileLoadFunction); ol.events.listen(tile, ol.events.EventType.CHANGE, diff --git a/src/ol/source/zoomify.js b/src/ol/source/zoomify.js index e2311082ce..b4474029d4 100644 --- a/src/ol/source/zoomify.js +++ b/src/ol/source/zoomify.js @@ -2,7 +2,7 @@ goog.provide('ol.source.Zoomify'); goog.require('ol'); goog.require('ol.ImageTile'); -goog.require('ol.TileState'); +goog.require('ol.Tile'); goog.require('ol.dom'); goog.require('ol.extent'); goog.require('ol.source.TileImage'); @@ -135,7 +135,7 @@ ol.inherits(ol.source.Zoomify, ol.source.TileImage); * @constructor * @extends {ol.ImageTile} * @param {ol.TileCoord} tileCoord Tile coordinate. - * @param {ol.TileState} state State. + * @param {ol.Tile.State} state State. * @param {string} src Image source URI. * @param {?string} crossOrigin Cross origin. * @param {ol.TileLoadFunctionType} tileLoadFunction Tile load function. @@ -168,7 +168,7 @@ ol.source.ZoomifyTile_.prototype.getImage = function(opt_context) { return this.zoomifyImageByContext_[key]; } else { var image = ol.ImageTile.prototype.getImage.call(this, opt_context); - if (this.state == ol.TileState.LOADED) { + if (this.state == ol.Tile.State.LOADED) { if (image.width == tileSize && image.height == tileSize) { this.zoomifyImageByContext_[key] = image; return image; diff --git a/src/ol/tile.js b/src/ol/tile.js index 706e2087ed..6f7bf34084 100644 --- a/src/ol/tile.js +++ b/src/ol/tile.js @@ -1,23 +1,10 @@ goog.provide('ol.Tile'); -goog.provide('ol.TileState'); +goog.require('ol'); goog.require('ol.events.EventTarget'); goog.require('ol.events.EventType'); -/** - * @enum {number} - */ -ol.TileState = { - IDLE: 0, - LOADING: 1, - LOADED: 2, - ERROR: 3, - EMPTY: 4, - ABORT: 5 -}; - - /** * @classdesc * Base class for tiles. @@ -25,7 +12,7 @@ ol.TileState = { * @constructor * @extends {ol.events.EventTarget} * @param {ol.TileCoord} tileCoord Tile coordinate. - * @param {ol.TileState} state State. + * @param {ol.Tile.State} state State. */ ol.Tile = function(tileCoord, state) { @@ -38,7 +25,7 @@ ol.Tile = function(tileCoord, state) { /** * @protected - * @type {ol.TileState} + * @type {ol.Tile.State} */ this.state = state; @@ -98,7 +85,7 @@ ol.Tile.prototype.getTileCoord = function() { /** - * @return {ol.TileState} State. + * @return {ol.Tile.State} State. */ ol.Tile.prototype.getState = function() { return this.state; @@ -113,3 +100,16 @@ ol.Tile.prototype.getState = function() { * @api */ ol.Tile.prototype.load = function() {}; + + +/** + * @enum {number} + */ +ol.Tile.State = { + IDLE: 0, + LOADING: 1, + LOADED: 2, + ERROR: 3, + EMPTY: 4, + ABORT: 5 +}; diff --git a/src/ol/tilequeue.js b/src/ol/tilequeue.js index 5590672411..8da00bb94a 100644 --- a/src/ol/tilequeue.js +++ b/src/ol/tilequeue.js @@ -1,9 +1,9 @@ goog.provide('ol.TileQueue'); goog.require('ol'); +goog.require('ol.Tile'); goog.require('ol.events'); goog.require('ol.events.EventType'); -goog.require('ol.TileState'); goog.require('ol.structs.PriorityQueue'); @@ -86,8 +86,8 @@ ol.TileQueue.prototype.getTilesLoading = function() { ol.TileQueue.prototype.handleTileChange = function(event) { var tile = /** @type {ol.Tile} */ (event.target); var state = tile.getState(); - if (state === ol.TileState.LOADED || state === ol.TileState.ERROR || - state === ol.TileState.EMPTY || state === ol.TileState.ABORT) { + if (state === ol.Tile.State.LOADED || state === ol.Tile.State.ERROR || + state === ol.Tile.State.EMPTY || state === ol.Tile.State.ABORT) { ol.events.unlisten(tile, ol.events.EventType.CHANGE, this.handleTileChange, this); var tileKey = tile.getKey(); @@ -112,7 +112,7 @@ ol.TileQueue.prototype.loadMoreTiles = function(maxTotalLoading, maxNewLoads) { this.getCount() > 0) { tile = /** @type {ol.Tile} */ (this.dequeue()[0]); tileKey = tile.getKey(); - if (tile.getState() === ol.TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) { + if (tile.getState() === ol.Tile.State.IDLE && !(tileKey in this.tilesLoadingKeys_)) { this.tilesLoadingKeys_[tileKey] = true; ++this.tilesLoading_; ++newLoads; diff --git a/src/ol/vectortile.js b/src/ol/vectortile.js index a50ad80221..eef32d7778 100644 --- a/src/ol/vectortile.js +++ b/src/ol/vectortile.js @@ -2,7 +2,6 @@ goog.provide('ol.VectorTile'); goog.require('ol'); goog.require('ol.Tile'); -goog.require('ol.TileState'); goog.require('ol.dom'); @@ -10,7 +9,7 @@ goog.require('ol.dom'); * @constructor * @extends {ol.Tile} * @param {ol.TileCoord} tileCoord Tile coordinate. - * @param {ol.TileState} state State. + * @param {ol.Tile.State} state State. * @param {string} src Data source url. * @param {ol.format.Feature} format Feature format. * @param {ol.TileLoadFunctionType} tileLoadFunction Tile load function. @@ -142,8 +141,8 @@ ol.VectorTile.prototype.getProjection = function() { * Load the tile. */ ol.VectorTile.prototype.load = function() { - if (this.state == ol.TileState.IDLE) { - this.setState(ol.TileState.LOADING); + if (this.state == ol.Tile.State.IDLE) { + this.setState(ol.Tile.State.LOADING); this.tileLoadFunction_(this, this.url_); this.loader_(null, NaN, null); } @@ -156,7 +155,7 @@ ol.VectorTile.prototype.load = function() { */ ol.VectorTile.prototype.setFeatures = function(features) { this.features_ = features; - this.setState(ol.TileState.LOADED); + this.setState(ol.Tile.State.LOADED); }; @@ -171,7 +170,7 @@ ol.VectorTile.prototype.setProjection = function(projection) { /** - * @param {ol.TileState} tileState Tile state. + * @param {ol.Tile.State} tileState Tile state. */ ol.VectorTile.prototype.setState = function(tileState) { this.state = tileState; diff --git a/test/spec/ol/imagetile.test.js b/test/spec/ol/imagetile.test.js index 3ab8c35f64..3986c7c4ff 100644 --- a/test/spec/ol/imagetile.test.js +++ b/test/spec/ol/imagetile.test.js @@ -1,10 +1,10 @@ goog.provide('ol.test.ImageTile'); +goog.require('ol.ImageTile'); +goog.require('ol.Tile'); goog.require('ol.events'); goog.require('ol.events.EventType'); goog.require('ol.source.Image'); -goog.require('ol.ImageTile'); -goog.require('ol.TileState'); describe('ol.ImageTile', function() { @@ -13,7 +13,7 @@ describe('ol.ImageTile', function() { it('can load idle tile', function(done) { var tileCoord = [0, 0, 0]; - var state = ol.TileState.IDLE; + var state = ol.Tile.State.IDLE; var src = 'spec/ol/data/osm-0-0-0.png'; var tileLoadFunction = ol.source.Image.defaultImageLoadFunction; var tile = new ol.ImageTile(tileCoord, state, src, null, tileLoadFunction); @@ -22,10 +22,10 @@ describe('ol.ImageTile', function() { ol.events.listen(tile, ol.events.EventType.CHANGE, function(event) { var state = tile.getState(); - if (previousState == ol.TileState.IDLE) { - expect(state).to.be(ol.TileState.LOADING); - } else if (previousState == ol.TileState.LOADING) { - expect(state).to.be(ol.TileState.LOADED); + if (previousState == ol.Tile.State.IDLE) { + expect(state).to.be(ol.Tile.State.LOADING); + } else if (previousState == ol.Tile.State.LOADING) { + expect(state).to.be(ol.Tile.State.LOADED); done(); } else { expect().fail(); @@ -38,7 +38,7 @@ describe('ol.ImageTile', function() { it('can load error tile', function(done) { var tileCoord = [0, 0, 0]; - var state = ol.TileState.ERROR; + var state = ol.Tile.State.ERROR; var src = 'spec/ol/data/osm-0-0-0.png'; var tileLoadFunction = ol.source.Image.defaultImageLoadFunction; var tile = new ol.ImageTile(tileCoord, state, src, null, tileLoadFunction); @@ -47,10 +47,10 @@ describe('ol.ImageTile', function() { ol.events.listen(tile, ol.events.EventType.CHANGE, function(event) { var state = tile.getState(); - if (previousState == ol.TileState.ERROR) { - expect(state).to.be(ol.TileState.LOADING); - } else if (previousState == ol.TileState.LOADING) { - expect(state).to.be(ol.TileState.LOADED); + if (previousState == ol.Tile.State.ERROR) { + expect(state).to.be(ol.Tile.State.LOADING); + } else if (previousState == ol.Tile.State.LOADING) { + expect(state).to.be(ol.Tile.State.LOADED); done(); } else { expect().fail(); diff --git a/test/spec/ol/source/tile.test.js b/test/spec/ol/source/tile.test.js index 0eaa0d6fd9..845b5a7268 100644 --- a/test/spec/ol/source/tile.test.js +++ b/test/spec/ol/source/tile.test.js @@ -248,7 +248,7 @@ describe('ol.source.Tile', function() { * * @constructor * @extends {ol.source.Tile} - * @param {Object.} tileStates Lookup of tile key to + * @param {Object.} tileStates Lookup of tile key to * tile state. */ ol.test.source.TileMock = function(tileStates) { diff --git a/test_rendering/spec/ol/reproj/tile.test.js b/test_rendering/spec/ol/reproj/tile.test.js index cce2b29035..cae2c4abd4 100644 --- a/test_rendering/spec/ol/reproj/tile.test.js +++ b/test_rendering/spec/ol/reproj/tile.test.js @@ -1,6 +1,6 @@ goog.provide('ol.test.rendering.reproj.Tile'); -goog.require('ol.TileState'); +goog.require('ol.Tile'); goog.require('ol.events'); goog.require('ol.proj'); goog.require('ol.reproj.Tile'); @@ -24,9 +24,9 @@ describe('ol.rendering.reproj.Tile', function() { tilesRequested++; return source.getTile(z, x, y, pixelRatio, sourceProjection); }); - if (tile.getState() == ol.TileState.IDLE) { + if (tile.getState() == ol.Tile.State.IDLE) { ol.events.listen(tile, 'change', function(e) { - if (tile.getState() == ol.TileState.LOADED) { + if (tile.getState() == ol.Tile.State.LOADED) { expect(tilesRequested).to.be(expectedRequests); resembleCanvas(tile.getImage(), expectedUrl, 7.5, done); }