From 9dfcb95e4fe333922306eadd4df5cbde2f03a6c1 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Tue, 14 Jun 2016 10:55:58 -0700 Subject: [core] Push Source::tileset down to TileSource --- src/mbgl/style/parser.cpp | 1 + src/mbgl/style/parser.hpp | 3 +++ src/mbgl/style/source.cpp | 4 +--- src/mbgl/style/source.hpp | 10 ++-------- src/mbgl/style/sources/geojson_source.cpp | 10 ++-------- src/mbgl/style/sources/geojson_source.hpp | 1 - src/mbgl/style/tile_source.cpp | 4 +++- src/mbgl/style/tile_source.hpp | 6 +++++- 8 files changed, 17 insertions(+), 22 deletions(-) (limited to 'src/mbgl/style') 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 #include #include +#include #include #include 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 namespace mbgl { + +class Tileset; + namespace style { std::unique_ptr 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_) + 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 #include #include -#include +#include -#include #include #include @@ -36,16 +35,13 @@ public: Source(SourceType, std::string id, std::string url, - uint16_t tileSize, - std::unique_ptr&&); + 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 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 parseGeoJSON(const JSValue& value) std::unique_ptr GeoJSONSource::parse(const std::string& id, const JSValue& value) { - auto tileset = std::make_unique(); std::unique_ptr geojsonvt; std::string url; @@ -58,14 +57,13 @@ std::unique_ptr GeoJSONSource::parse(const std::string& id, return nullptr; } - return std::make_unique(id, url, std::move(tileset), std::move(geojsonvt)); + return std::make_unique(id, url, std::move(geojsonvt)); } GeoJSONSource::GeoJSONSource(std::string id_, std::string url_, - std::unique_ptr&& tileset_, std::unique_ptr&& 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 newTileset = std::make_unique(); - rapidjson::GenericDocument, 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&&, std::unique_ptr&&); ~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 #include #include +#include #include namespace mbgl { @@ -11,7 +12,8 @@ TileSource::TileSource(SourceType type_, std::string url_, uint16_t tileSize_, std::unique_ptr&& 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 getZoomRange() final; + std::unique_ptr tileset; std::unique_ptr req; }; -- cgit v1.2.1