summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2016-06-14 10:55:58 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2016-06-14 11:25:45 -0700
commit9dfcb95e4fe333922306eadd4df5cbde2f03a6c1 (patch)
tree61c7fb9d3dede6097bda1fd35806131cb21ab957
parent755cc80edfc53a680030a88a661afe1d9edd1f75 (diff)
downloadqtlocation-mapboxgl-9dfcb95e4fe333922306eadd4df5cbde2f03a6c1.tar.gz
[core] Push Source::tileset down to TileSource
-rw-r--r--platform/default/mbgl/storage/offline_download.cpp18
-rw-r--r--src/mbgl/annotation/annotation_source.cpp2
-rw-r--r--src/mbgl/style/parser.cpp1
-rw-r--r--src/mbgl/style/parser.hpp3
-rw-r--r--src/mbgl/style/source.cpp4
-rw-r--r--src/mbgl/style/source.hpp10
-rw-r--r--src/mbgl/style/sources/geojson_source.cpp10
-rw-r--r--src/mbgl/style/sources/geojson_source.hpp1
-rw-r--r--src/mbgl/style/tile_source.cpp4
-rw-r--r--src/mbgl/style/tile_source.hpp6
-rw-r--r--test/style/source.cpp1
-rw-r--r--test/style/style_parser.cpp1
12 files changed, 32 insertions, 29 deletions
diff --git a/platform/default/mbgl/storage/offline_download.cpp b/platform/default/mbgl/storage/offline_download.cpp
index 820e1cd223..932b8f3777 100644
--- a/platform/default/mbgl/storage/offline_download.cpp
+++ b/platform/default/mbgl/storage/offline_download.cpp
@@ -4,10 +4,12 @@
#include <mbgl/storage/resource.hpp>
#include <mbgl/storage/response.hpp>
#include <mbgl/style/parser.hpp>
+#include <mbgl/style/tile_source.hpp>
#include <mbgl/text/glyph.hpp>
#include <mbgl/util/tile_cover.hpp>
#include <mbgl/util/mapbox.hpp>
#include <mbgl/util/run_loop.hpp>
+#include <mbgl/util/tileset.hpp>
#include <set>
@@ -102,9 +104,10 @@ OfflineRegionStatus OfflineDownload::getStatus() const {
for (const auto& source : parser.sources) {
switch (source->type) {
case SourceType::Vector:
- case SourceType::Raster:
- if (source->getTileset()) {
- result.requiredResourceCount += tileResources(source->type, source->tileSize, *source->getTileset()).size();
+ case SourceType::Raster: {
+ style::TileSource* tileSource = static_cast<style::TileSource*>(source.get());
+ if (tileSource->getTileset()) {
+ result.requiredResourceCount += tileResources(source->type, source->tileSize, *tileSource->getTileset()).size();
} else {
result.requiredResourceCount += 1;
optional<Response> sourceResponse = offlineDatabase.get(Resource::source(source->url));
@@ -116,6 +119,7 @@ OfflineRegionStatus OfflineDownload::getStatus() const {
}
}
break;
+ }
case SourceType::GeoJSON:
if (!source->url.empty()) {
@@ -154,9 +158,10 @@ void OfflineDownload::activateDownload() {
switch (type) {
case SourceType::Vector:
- case SourceType::Raster:
- if (source->getTileset()) {
- ensureTiles(type, tileSize, *source->getTileset());
+ case SourceType::Raster: {
+ style::TileSource* tileSource = static_cast<style::TileSource*>(source.get());
+ if (tileSource->getTileset()) {
+ ensureTiles(type, tileSize, *tileSource->getTileset());
} else {
status.requiredResourceCountIsPrecise = false;
requiredSourceURLs.insert(url);
@@ -171,6 +176,7 @@ void OfflineDownload::activateDownload() {
});
}
break;
+ }
case SourceType::GeoJSON:
if (!source->url.empty()) {
diff --git a/src/mbgl/annotation/annotation_source.cpp b/src/mbgl/annotation/annotation_source.cpp
index f246d7aed8..55e6fc82a3 100644
--- a/src/mbgl/annotation/annotation_source.cpp
+++ b/src/mbgl/annotation/annotation_source.cpp
@@ -5,7 +5,7 @@
namespace mbgl {
AnnotationSource::AnnotationSource()
- : Source(SourceType::Annotations, AnnotationManager::SourceID, "", util::tileSize, std::make_unique<Tileset>()) {
+ : Source(SourceType::Annotations, AnnotationManager::SourceID, "", util::tileSize) {
}
Range<uint8_t> AnnotationSource::getZoomRange() {
diff --git a/src/mbgl/style/parser.cpp b/src/mbgl/style/parser.cpp
index 1ca090643d..07db3f0091 100644
--- a/src/mbgl/style/parser.cpp
+++ b/src/mbgl/style/parser.cpp
@@ -15,6 +15,7 @@
#include <mbgl/tile/geometry_tile_data.hpp>
#include <mbgl/util/mapbox.hpp>
#include <mbgl/util/enum.hpp>
+#include <mbgl/util/tileset.hpp>
#include <rapidjson/document.h>
#include <rapidjson/error/en.h>
diff --git a/src/mbgl/style/parser.hpp b/src/mbgl/style/parser.hpp
index e60a33b93f..a04f73bde4 100644
--- a/src/mbgl/style/parser.hpp
+++ b/src/mbgl/style/parser.hpp
@@ -14,6 +14,9 @@
#include <forward_list>
namespace mbgl {
+
+class Tileset;
+
namespace style {
std::unique_ptr<Tileset> parseTileJSON(const std::string& json, const std::string& sourceURL, SourceType, uint16_t tileSize);
diff --git a/src/mbgl/style/source.cpp b/src/mbgl/style/source.cpp
index 086e0b745c..3c5690e980 100644
--- a/src/mbgl/style/source.cpp
+++ b/src/mbgl/style/source.cpp
@@ -35,13 +35,11 @@ static SourceObserver nullObserver;
Source::Source(SourceType type_,
std::string id_,
std::string url_,
- uint16_t tileSize_,
- std::unique_ptr<Tileset>&& tileset_)
+ uint16_t tileSize_)
: type(type_),
id(std::move(id_)),
url(std::move(url_)),
tileSize(tileSize_),
- tileset(std::move(tileset_)),
observer(&nullObserver) {
}
diff --git a/src/mbgl/style/source.hpp b/src/mbgl/style/source.hpp
index 862ee52068..36e6570fb5 100644
--- a/src/mbgl/style/source.hpp
+++ b/src/mbgl/style/source.hpp
@@ -10,9 +10,8 @@
#include <mbgl/util/mat4.hpp>
#include <mbgl/util/rapidjson.hpp>
#include <mbgl/util/feature.hpp>
-#include <mbgl/util/tileset.hpp>
+#include <mbgl/util/range.hpp>
-#include <forward_list>
#include <vector>
#include <map>
@@ -36,16 +35,13 @@ public:
Source(SourceType,
std::string id,
std::string url,
- uint16_t tileSize,
- std::unique_ptr<Tileset>&&);
+ uint16_t tileSize);
~Source() override;
bool loaded = false;
virtual void load(FileSource&) = 0;
bool isLoaded() const;
- const Tileset* getTileset() const { return tileset.get(); }
-
// Request or parse all the tiles relevant for the "TransformState". This method
// will return true if all the tiles were scheduled for updating of false if
// they were not. shouldReparsePartialTiles must be set to "true" if there is
@@ -91,8 +87,6 @@ private:
protected:
void invalidateTiles();
- std::unique_ptr<const Tileset> tileset;
-
SourceObserver* observer = nullptr;
private:
diff --git a/src/mbgl/style/sources/geojson_source.cpp b/src/mbgl/style/sources/geojson_source.cpp
index dbcef95344..6e1068dadb 100644
--- a/src/mbgl/style/sources/geojson_source.cpp
+++ b/src/mbgl/style/sources/geojson_source.cpp
@@ -34,7 +34,6 @@ std::unique_ptr<mapbox::geojsonvt::GeoJSONVT> parseGeoJSON(const JSValue& value)
std::unique_ptr<GeoJSONSource> GeoJSONSource::parse(const std::string& id,
const JSValue& value) {
- auto tileset = std::make_unique<Tileset>();
std::unique_ptr<mapbox::geojsonvt::GeoJSONVT> geojsonvt;
std::string url;
@@ -58,14 +57,13 @@ std::unique_ptr<GeoJSONSource> GeoJSONSource::parse(const std::string& id,
return nullptr;
}
- return std::make_unique<GeoJSONSource>(id, url, std::move(tileset), std::move(geojsonvt));
+ return std::make_unique<GeoJSONSource>(id, url, std::move(geojsonvt));
}
GeoJSONSource::GeoJSONSource(std::string id_,
std::string url_,
- std::unique_ptr<Tileset>&& tileset_,
std::unique_ptr<mapbox::geojsonvt::GeoJSONVT>&& geojsonvt_)
- : Source(SourceType::GeoJSON, std::move(id_), std::move(url_), util::tileSize, std::move(tileset_)),
+ : Source(SourceType::GeoJSON, std::move(id_), std::move(url_), util::tileSize),
geojsonvt(std::move(geojsonvt_)) {
}
@@ -94,8 +92,6 @@ void GeoJSONSource::load(FileSource& fileSource) {
} else if (res.noContent) {
observer->onSourceError(*this, std::make_exception_ptr(std::runtime_error("unexpectedly empty GeoJSON")));
} else {
- std::unique_ptr<Tileset> newTileset = std::make_unique<Tileset>();
-
rapidjson::GenericDocument<rapidjson::UTF8<>, rapidjson::CrtAllocator> d;
d.Parse<0>(res.data->c_str());
@@ -107,11 +103,9 @@ void GeoJSONSource::load(FileSource& fileSource) {
}
geojsonvt = style::parseGeoJSON(d);
- newTileset->zoomRange.max = geojsonvt->options.maxZoom;
invalidateTiles();
- tileset = std::move(newTileset);
loaded = true;
observer->onSourceLoaded(*this);
}
diff --git a/src/mbgl/style/sources/geojson_source.hpp b/src/mbgl/style/sources/geojson_source.hpp
index 83f5290873..7022d387e9 100644
--- a/src/mbgl/style/sources/geojson_source.hpp
+++ b/src/mbgl/style/sources/geojson_source.hpp
@@ -23,7 +23,6 @@ public:
GeoJSONSource(std::string id,
std::string url,
- std::unique_ptr<Tileset>&&,
std::unique_ptr<mapbox::geojsonvt::GeoJSONVT>&&);
~GeoJSONSource() final;
diff --git a/src/mbgl/style/tile_source.cpp b/src/mbgl/style/tile_source.cpp
index ef58d87eb5..12c62f07a5 100644
--- a/src/mbgl/style/tile_source.cpp
+++ b/src/mbgl/style/tile_source.cpp
@@ -1,6 +1,7 @@
#include <mbgl/style/tile_source.hpp>
#include <mbgl/style/source_observer.hpp>
#include <mbgl/style/parser.hpp>
+#include <mbgl/util/tileset.hpp>
#include <mbgl/storage/file_source.hpp>
namespace mbgl {
@@ -11,7 +12,8 @@ TileSource::TileSource(SourceType type_,
std::string url_,
uint16_t tileSize_,
std::unique_ptr<Tileset>&& tileset_)
- : Source(type_, std::move(id_), std::move(url_), tileSize_, std::move(tileset_)) {
+ : Source(type_, std::move(id_), std::move(url_), tileSize_),
+ tileset(std::move(tileset_)) {
}
TileSource::~TileSource() = default;
diff --git a/src/mbgl/style/tile_source.hpp b/src/mbgl/style/tile_source.hpp
index 7fa2f8157e..c0dc0da8c7 100644
--- a/src/mbgl/style/tile_source.hpp
+++ b/src/mbgl/style/tile_source.hpp
@@ -4,6 +4,7 @@
namespace mbgl {
+class Tileset;
class AsyncRequest;
namespace style {
@@ -23,9 +24,12 @@ public:
void load(FileSource&) final;
-private:
+ const Tileset* getTileset() const { return tileset.get(); }
+
+protected:
Range<uint8_t> getZoomRange() final;
+ std::unique_ptr<const Tileset> tileset;
std::unique_ptr<AsyncRequest> req;
};
diff --git a/test/style/source.cpp b/test/style/source.cpp
index 4348dbc7e7..7a574e9e51 100644
--- a/test/style/source.cpp
+++ b/test/style/source.cpp
@@ -9,6 +9,7 @@
#include <mbgl/util/run_loop.hpp>
#include <mbgl/util/string.hpp>
#include <mbgl/util/io.hpp>
+#include <mbgl/util/tileset.hpp>
#include <mbgl/platform/log.hpp>
#include <mbgl/map/transform.hpp>
diff --git a/test/style/style_parser.cpp b/test/style/style_parser.cpp
index 02a4077ab9..f3fef24352 100644
--- a/test/style/style_parser.cpp
+++ b/test/style/style_parser.cpp
@@ -4,6 +4,7 @@
#include <mbgl/style/parser.hpp>
#include <mbgl/util/io.hpp>
#include <mbgl/util/enum.hpp>
+#include <mbgl/util/tileset.hpp>
#include <rapidjson/document.h>