Make TileProviderManager manage abstract TileProviders

This commit is contained in:
Erik Broberg
2016-06-02 12:57:02 -04:00
parent 76b4cceb3c
commit 2eaea4c7a9
4 changed files with 28 additions and 21 deletions

View File

@@ -127,7 +127,7 @@ namespace openspace {
std::shared_ptr<AsyncTileDataProvider> tileReader = std::shared_ptr<AsyncTileDataProvider>(
new AsyncTileDataProvider(tileDataset, threadPool));
std::shared_ptr<CachingTileProvider> colorTextureProvider = std::shared_ptr<CachingTileProvider>(
std::shared_ptr<TileProvider> colorTextureProvider = std::shared_ptr<TileProvider>(
new CachingTileProvider(tileReader, cacheSize, frameUntilFlushRequestQueue));
_tileProviderManager->addColorTexture(name, colorTextureProvider, true);
@@ -159,7 +159,7 @@ namespace openspace {
std::shared_ptr<AsyncTileDataProvider> tileReader = std::shared_ptr<AsyncTileDataProvider>(
new AsyncTileDataProvider(tileDataset, threadPool));
std::shared_ptr<CachingTileProvider> heightMapProvider = std::shared_ptr<CachingTileProvider>(
std::shared_ptr<TileProvider> heightMapProvider = std::shared_ptr<TileProvider>(
new CachingTileProvider(tileReader, cacheSize, frameUntilFlushRequestQueue));

View File

@@ -44,7 +44,7 @@ namespace openspace {
void TileProviderManager::addHeightMap(
std::string name,
std::shared_ptr<CachingTileProvider> tileProvider,
std::shared_ptr<TileProvider> tileProvider,
bool isActive)
{
_heightMapProviders.push_back({ name , tileProvider, isActive});
@@ -52,7 +52,7 @@ namespace openspace {
void TileProviderManager::addColorTexture(
std::string name,
std::shared_ptr<CachingTileProvider> tileProvider,
std::shared_ptr<TileProvider> tileProvider,
bool isActive)
{
_colorTextureProviders.push_back({ name , tileProvider, isActive });
@@ -70,10 +70,10 @@ namespace openspace {
return _colorTextureProviders;
}
const std::vector<std::shared_ptr<CachingTileProvider> >
const std::vector<std::shared_ptr<TileProvider> >
TileProviderManager::getActiveHeightMapProviders()
{
std::vector<std::shared_ptr<CachingTileProvider> > tileProviders;
std::vector<std::shared_ptr<TileProvider> > tileProviders;
for (auto it = _heightMapProviders.begin(); it != _heightMapProviders.end(); it++)
{
if (it->isActive) {
@@ -83,10 +83,10 @@ namespace openspace {
return tileProviders;
}
const std::vector<std::shared_ptr<CachingTileProvider> >
const std::vector<std::shared_ptr<TileProvider> >
TileProviderManager::getActiveColorTextureProviders()
{
std::vector<std::shared_ptr<CachingTileProvider> > tileProviders;
std::vector<std::shared_ptr<TileProvider> > tileProviders;
for (auto it = _colorTextureProviders.begin(); it != _colorTextureProviders.end(); it++)
{
if (it->isActive) {

View File

@@ -39,7 +39,7 @@ namespace openspace {
public:
struct TileProviderWithName {
std::string name;
std::shared_ptr<CachingTileProvider> tileProvider;
std::shared_ptr<TileProvider> tileProvider;
bool isActive;
};
@@ -50,18 +50,18 @@ namespace openspace {
void addHeightMap(
std::string name,
std::shared_ptr<CachingTileProvider> tileProvider,
std::shared_ptr<TileProvider> tileProvider,
bool isActive);
void addColorTexture(
std::string name,
std::shared_ptr<CachingTileProvider> tileProvider,
std::shared_ptr<TileProvider> tileProvider,
bool isActive);
/*
std::shared_ptr<CachingTileProvider> getHeightMap(std::string name);
std::shared_ptr<CachingTileProvider> getColorTexture(std::string name);
*/
const std::vector<std::shared_ptr<CachingTileProvider> > getActiveHeightMapProviders();
const std::vector<std::shared_ptr<CachingTileProvider> > getActiveColorTextureProviders();
const std::vector<std::shared_ptr<TileProvider> > getActiveHeightMapProviders();
const std::vector<std::shared_ptr<TileProvider> > getActiveColorTextureProviders();
std::vector<TileProviderWithName>& heightMapProviders();
std::vector<TileProviderWithName>& colorTextureProviders();

View File

@@ -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<AsyncTileDataProvider> 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: