From 2eaea4c7a9cb8e6a841a05c957ba4583544eaaec Mon Sep 17 00:00:00 2001 From: Erik Broberg Date: Thu, 2 Jun 2016 12:57:02 -0400 Subject: [PATCH] Make TileProviderManager manage abstract TileProviders --- .../globebrowsing/globes/renderableglobe.cpp | 4 ++-- .../other/TileProviderManager.cpp | 12 +++++----- .../globebrowsing/other/TileProviderManager.h | 10 ++++---- modules/globebrowsing/other/tileprovider.h | 23 ++++++++++++------- 4 files changed, 28 insertions(+), 21 deletions(-) diff --git a/modules/globebrowsing/globes/renderableglobe.cpp b/modules/globebrowsing/globes/renderableglobe.cpp index 6a39539e6a..8df8a6adca 100644 --- a/modules/globebrowsing/globes/renderableglobe.cpp +++ b/modules/globebrowsing/globes/renderableglobe.cpp @@ -127,7 +127,7 @@ namespace openspace { std::shared_ptr tileReader = std::shared_ptr( new AsyncTileDataProvider(tileDataset, threadPool)); - std::shared_ptr colorTextureProvider = std::shared_ptr( + std::shared_ptr colorTextureProvider = std::shared_ptr( new CachingTileProvider(tileReader, cacheSize, frameUntilFlushRequestQueue)); _tileProviderManager->addColorTexture(name, colorTextureProvider, true); @@ -159,7 +159,7 @@ namespace openspace { std::shared_ptr tileReader = std::shared_ptr( new AsyncTileDataProvider(tileDataset, threadPool)); - std::shared_ptr heightMapProvider = std::shared_ptr( + std::shared_ptr heightMapProvider = std::shared_ptr( new CachingTileProvider(tileReader, cacheSize, frameUntilFlushRequestQueue)); diff --git a/modules/globebrowsing/other/TileProviderManager.cpp b/modules/globebrowsing/other/TileProviderManager.cpp index d7195257cb..b4afd69e77 100644 --- a/modules/globebrowsing/other/TileProviderManager.cpp +++ b/modules/globebrowsing/other/TileProviderManager.cpp @@ -44,7 +44,7 @@ namespace openspace { void TileProviderManager::addHeightMap( std::string name, - std::shared_ptr tileProvider, + std::shared_ptr tileProvider, bool isActive) { _heightMapProviders.push_back({ name , tileProvider, isActive}); @@ -52,7 +52,7 @@ namespace openspace { void TileProviderManager::addColorTexture( std::string name, - std::shared_ptr tileProvider, + std::shared_ptr tileProvider, bool isActive) { _colorTextureProviders.push_back({ name , tileProvider, isActive }); @@ -70,10 +70,10 @@ namespace openspace { return _colorTextureProviders; } - const std::vector > + const std::vector > TileProviderManager::getActiveHeightMapProviders() { - std::vector > tileProviders; + std::vector > tileProviders; for (auto it = _heightMapProviders.begin(); it != _heightMapProviders.end(); it++) { if (it->isActive) { @@ -83,10 +83,10 @@ namespace openspace { return tileProviders; } - const std::vector > + const std::vector > TileProviderManager::getActiveColorTextureProviders() { - std::vector > tileProviders; + std::vector > tileProviders; for (auto it = _colorTextureProviders.begin(); it != _colorTextureProviders.end(); it++) { if (it->isActive) { diff --git a/modules/globebrowsing/other/TileProviderManager.h b/modules/globebrowsing/other/TileProviderManager.h index 779c5b40c9..202b7e25b8 100644 --- a/modules/globebrowsing/other/TileProviderManager.h +++ b/modules/globebrowsing/other/TileProviderManager.h @@ -39,7 +39,7 @@ namespace openspace { public: struct TileProviderWithName { std::string name; - std::shared_ptr tileProvider; + std::shared_ptr tileProvider; bool isActive; }; @@ -50,18 +50,18 @@ namespace openspace { void addHeightMap( std::string name, - std::shared_ptr tileProvider, + std::shared_ptr tileProvider, bool isActive); void addColorTexture( std::string name, - std::shared_ptr tileProvider, + std::shared_ptr tileProvider, bool isActive); /* std::shared_ptr getHeightMap(std::string name); std::shared_ptr getColorTexture(std::string name); */ - const std::vector > getActiveHeightMapProviders(); - const std::vector > getActiveColorTextureProviders(); + const std::vector > getActiveHeightMapProviders(); + const std::vector > getActiveColorTextureProviders(); std::vector& heightMapProviders(); std::vector& colorTextureProviders(); diff --git a/modules/globebrowsing/other/tileprovider.h b/modules/globebrowsing/other/tileprovider.h index c84fc948dd..7a3698fa49 100644 --- a/modules/globebrowsing/other/tileprovider.h +++ b/modules/globebrowsing/other/tileprovider.h @@ -65,26 +65,33 @@ namespace openspace { + class TileProvider { + public: + virtual ~TileProvider() { } + + virtual Tile getHighestResolutionTile(ChunkIndex chunkIndex, int parents = 0) = 0; + virtual TileDepthTransform depthTransform() = 0; + virtual void prerender() = 0; + }; + + /** Provides tiles through GDAL datasets which can be defined with xml files for example for wms. */ - class CachingTileProvider { + class CachingTileProvider : public TileProvider { public: CachingTileProvider(std::shared_ptr tileReader, int tileCacheSize, int framesUntilFlushRequestQueue); - ~CachingTileProvider(); - + virtual ~CachingTileProvider(); - Tile getHighestResolutionTile(ChunkIndex chunkIndex, int parents = 0); - - TileDepthTransform depthTransform(); - - void prerender(); + virtual Tile getHighestResolutionTile(ChunkIndex chunkIndex, int parents = 0); + virtual TileDepthTransform depthTransform(); + virtual void prerender(); private: