summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2016-06-14 12:36:46 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2016-06-15 11:28:34 -0700
commit87edff4047ddaf5a49b31c060bfae55d74d6c0cb (patch)
tree099ec42890a4449b538dfd70666e3f27044a0a40 /platform
parenta56f65a4d81b2ee7e1b76816b125c3a7516ceb2a (diff)
downloadqtlocation-mapboxgl-87edff4047ddaf5a49b31c060bfae55d74d6c0cb.tar.gz
[core] Use variant<std::string, Tileset> in TileSource
A tile source can either specify a URL to TileJSON, or inline TileJSON.
Diffstat (limited to 'platform')
-rw-r--r--platform/default/mbgl/storage/offline_download.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/platform/default/mbgl/storage/offline_download.cpp b/platform/default/mbgl/storage/offline_download.cpp
index 8a156dd649..3d0ebaa68f 100644
--- a/platform/default/mbgl/storage/offline_download.cpp
+++ b/platform/default/mbgl/storage/offline_download.cpp
@@ -107,14 +107,17 @@ OfflineRegionStatus OfflineDownload::getStatus() const {
case SourceType::Vector:
case SourceType::Raster: {
style::TileSource* tileSource = static_cast<style::TileSource*>(source.get());
- if (tileSource->getTileset()) {
- result.requiredResourceCount += tileResources(source->type, tileSource->getTileSize(), *tileSource->getTileset()).size();
+ const variant<std::string, Tileset>& urlOrTileset = tileSource->getURLOrTileset();
+
+ if (urlOrTileset.is<Tileset>()) {
+ result.requiredResourceCount += tileResources(source->type, tileSource->getTileSize(), urlOrTileset.get<Tileset>()).size();
} else {
result.requiredResourceCount += 1;
- optional<Response> sourceResponse = offlineDatabase.get(Resource::source(tileSource->getURL()));
+ const std::string& url = urlOrTileset.get<std::string>();
+ optional<Response> sourceResponse = offlineDatabase.get(Resource::source(url));
if (sourceResponse) {
result.requiredResourceCount += tileResources(source->type, tileSource->getTileSize(),
- *style::parseTileJSON(*sourceResponse->data, tileSource->getURL(), source->type, tileSource->getTileSize())).size();
+ style::TileSource::parseTileJSON(*sourceResponse->data, url, source->type, tileSource->getTileSize())).size();
} else {
result.requiredResourceCountIsPrecise = false;
}
@@ -161,16 +164,18 @@ void OfflineDownload::activateDownload() {
case SourceType::Vector:
case SourceType::Raster: {
const style::TileSource* tileSource = static_cast<style::TileSource*>(source.get());
+ const variant<std::string, Tileset>& urlOrTileset = tileSource->getURLOrTileset();
const uint16_t tileSize = tileSource->getTileSize();
- if (tileSource->getTileset()) {
- ensureTiles(type, tileSize, *tileSource->getTileset());
+
+ if (urlOrTileset.is<Tileset>()) {
+ ensureTiles(type, tileSize, urlOrTileset.get<Tileset>());
} else {
- std::string url = tileSource->getURL();
+ const std::string& url = urlOrTileset.get<std::string>();
status.requiredResourceCountIsPrecise = false;
requiredSourceURLs.insert(url);
ensureResource(Resource::source(url), [=] (Response sourceResponse) {
- ensureTiles(type, tileSize, *style::parseTileJSON(*sourceResponse.data, url, type, tileSize));
+ ensureTiles(type, tileSize, style::TileSource::parseTileJSON(*sourceResponse.data, url, type, tileSize));
requiredSourceURLs.erase(url);
if (requiredSourceURLs.empty()) {