From a80a536d4c9f151d9272f558616bdebc38a0a200 Mon Sep 17 00:00:00 2001 From: Kevin Ring Date: Thu, 17 Jul 2014 20:51:48 -0400 Subject: [PATCH 1/2] Show terrain and imagery (not per-tile) credits. Fixes #1932. --- Source/Scene/GlobeSurfaceTileProvider.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Source/Scene/GlobeSurfaceTileProvider.js b/Source/Scene/GlobeSurfaceTileProvider.js index f0bcf4835874..a28af122e514 100644 --- a/Source/Scene/GlobeSurfaceTileProvider.js +++ b/Source/Scene/GlobeSurfaceTileProvider.js @@ -245,8 +245,11 @@ define([ }); } + var i; + var len; + var tilesToRenderByTextureCount = this._tilesToRenderByTextureCount; - for (var i = 0, len = tilesToRenderByTextureCount.length; i < len; ++i) { + for (i = 0, len = tilesToRenderByTextureCount.length; i < len; ++i) { var tiles = tilesToRenderByTextureCount[i]; if (defined(tiles)) { tiles.length = 0; @@ -254,6 +257,21 @@ define([ } this._usedDrawCommands = 0; + + // Add credits for terrain and imagery providers. + var creditDisplay = frameState.creditDisplay; + + if (this._terrainProvider.ready && defined(this._terrainProvider.credit)) { + creditDisplay.addCredit(this._terrainProvider.credit); + } + + var imageryLayers = this._imageryLayers; + for (i = 0, len = imageryLayers.length; i < len; ++i) { + var imageryProvider = imageryLayers.get(i).imageryProvider; + if (imageryProvider.ready && defined(imageryProvider.credit)) { + creditDisplay.addCredit(imageryProvider.credit); + } + } }; /** From f8344cf48f429d3499579551955782076beb7829 Mon Sep 17 00:00:00 2001 From: Kevin Ring Date: Thu, 17 Jul 2014 21:11:33 -0400 Subject: [PATCH 2/2] Add test for terrain/imagery credits. --- Specs/Scene/GlobeSurfaceTileProviderSpec.js | 29 +++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/Specs/Scene/GlobeSurfaceTileProviderSpec.js b/Specs/Scene/GlobeSurfaceTileProviderSpec.js index 5813eea21c7c..84766bff9e4b 100644 --- a/Specs/Scene/GlobeSurfaceTileProviderSpec.js +++ b/Specs/Scene/GlobeSurfaceTileProviderSpec.js @@ -2,6 +2,8 @@ defineSuite([ 'Scene/GlobeSurfaceTileProvider', 'Core/Cartesian3', + 'Core/CesiumTerrainProvider', + 'Core/Credit', 'Core/defined', 'Core/Ellipsoid', 'Core/EllipsoidTerrainProvider', @@ -27,6 +29,8 @@ defineSuite([ ], function( GlobeSurfaceTileProvider, Cartesian3, + CesiumTerrainProvider, + Credit, defined, Ellipsoid, EllipsoidTerrainProvider, @@ -576,6 +580,31 @@ defineSuite([ }); }); + it('adds terrain and imagery credits to the CreditDisplay', function() { + var layerCollection = globe.imageryLayers; + layerCollection.removeAll(); + + var imageryCredit = new Credit('imagery credit'); + layerCollection.addImageryProvider(new SingleTileImageryProvider({ + url : 'Data/Images/Red16x16.png', + credit : imageryCredit + })); + + var terrainCredit = new Credit('terrain credit'); + globe.terrainProvider = new CesiumTerrainProvider({ + url : 'http://cesiumjs.org/stk-terrain/tilesets/world/tiles', + credit : terrainCredit + }); + + updateUntilDone(globe); + + runs(function() { + var creditDisplay = frameState.creditDisplay; + expect(creditDisplay._currentFrameCredits.textCredits).toContain(imageryCredit); + expect(creditDisplay._currentFrameCredits.textCredits).toContain(terrainCredit); + }); + }); + describe('switching terrain providers', function() { it('clears the replacement queue', function() { updateUntilDone(globe);