diff options
author | Molly Lloyd <molly@mapbox.com> | 2018-01-17 17:05:21 -0800 |
---|---|---|
committer | Molly Lloyd <molly@mapbox.com> | 2018-01-17 18:17:32 -0800 |
commit | f88bb0d2cc9326b3cab15ba72a9a5ddb67e2ea66 (patch) | |
tree | ceeffb4ff1df3f4b738edb603bc82fff0cbcdec8 | |
parent | 0bc33c9573fdf1f5c861f6bd55d691b517e1727f (diff) | |
download | qtlocation-mapboxgl-upstream/dedup-raster-hillshade.tar.gz |
make RasterDEMSource inherit from RasterSourceupstream/dedup-raster-hillshade
-rw-r--r-- | cmake/core-files.cmake | 2 | ||||
-rw-r--r-- | include/mbgl/style/sources/raster_dem_source.hpp | 18 | ||||
-rw-r--r-- | include/mbgl/style/sources/raster_source.hpp | 4 | ||||
-rw-r--r-- | src/mbgl/renderer/render_source.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/sources/render_raster_dem_source.cpp | 6 | ||||
-rw-r--r-- | src/mbgl/renderer/sources/render_raster_dem_source.hpp | 6 | ||||
-rw-r--r-- | src/mbgl/style/sources/raster_dem_source.cpp | 67 | ||||
-rw-r--r-- | src/mbgl/style/sources/raster_dem_source_impl.cpp | 33 | ||||
-rw-r--r-- | src/mbgl/style/sources/raster_dem_source_impl.hpp | 25 | ||||
-rw-r--r-- | src/mbgl/style/sources/raster_source.cpp | 4 | ||||
-rw-r--r-- | src/mbgl/style/sources/raster_source_impl.cpp | 4 | ||||
-rw-r--r-- | src/mbgl/style/sources/raster_source_impl.hpp | 2 |
12 files changed, 18 insertions, 155 deletions
diff --git a/cmake/core-files.cmake b/cmake/core-files.cmake index 987c0bf391..8148fcdc88 100644 --- a/cmake/core-files.cmake +++ b/cmake/core-files.cmake @@ -560,8 +560,6 @@ set(MBGL_CORE_FILES src/mbgl/style/sources/image_source_impl.cpp src/mbgl/style/sources/image_source_impl.hpp src/mbgl/style/sources/raster_dem_source.cpp - src/mbgl/style/sources/raster_dem_source_impl.cpp - src/mbgl/style/sources/raster_dem_source_impl.hpp src/mbgl/style/sources/raster_source.cpp src/mbgl/style/sources/raster_source_impl.cpp src/mbgl/style/sources/raster_source_impl.hpp diff --git a/include/mbgl/style/sources/raster_dem_source.hpp b/include/mbgl/style/sources/raster_dem_source.hpp index ffa86cae3a..82588613bc 100644 --- a/include/mbgl/style/sources/raster_dem_source.hpp +++ b/include/mbgl/style/sources/raster_dem_source.hpp @@ -1,6 +1,6 @@ #pragma once -#include <mbgl/style/source.hpp> +#include <mbgl/style/sources/raster_source.hpp> #include <mbgl/util/tileset.hpp> #include <mbgl/util/variant.hpp> @@ -10,24 +10,10 @@ class AsyncRequest; namespace style { -class RasterDEMSource : public Source { +class RasterDEMSource : public RasterSource { public: RasterDEMSource(std::string id, variant<std::string, Tileset> urlOrTileset, uint16_t tileSize); - ~RasterDEMSource() final; - const variant<std::string, Tileset>& getURLOrTileset() const; - optional<std::string> getURL() const; - - uint16_t getTileSize() const; - - class Impl; - const Impl& impl() const; - - void loadDescription(FileSource&) final; - -private: - const variant<std::string, Tileset> urlOrTileset; - std::unique_ptr<AsyncRequest> req; }; template <> diff --git a/include/mbgl/style/sources/raster_source.hpp b/include/mbgl/style/sources/raster_source.hpp index 7f23a7ca4b..5aa81aa979 100644 --- a/include/mbgl/style/sources/raster_source.hpp +++ b/include/mbgl/style/sources/raster_source.hpp @@ -12,8 +12,8 @@ namespace style { class RasterSource : public Source { public: - RasterSource(std::string id, variant<std::string, Tileset> urlOrTileset, uint16_t tileSize); - ~RasterSource() final; + RasterSource(std::string id, variant<std::string, Tileset> urlOrTileset, uint16_t tileSize, SourceType sourceType = SourceType::Raster); + ~RasterSource() override; const variant<std::string, Tileset>& getURLOrTileset() const; optional<std::string> getURL() const; diff --git a/src/mbgl/renderer/render_source.cpp b/src/mbgl/renderer/render_source.cpp index f75ae5a18b..d160eb16e3 100644 --- a/src/mbgl/renderer/render_source.cpp +++ b/src/mbgl/renderer/render_source.cpp @@ -21,7 +21,7 @@ std::unique_ptr<RenderSource> RenderSource::create(Immutable<Source::Impl> impl) case SourceType::Raster: return std::make_unique<RenderRasterSource>(staticImmutableCast<RasterSource::Impl>(impl)); case SourceType::RasterDEM: - return std::make_unique<RenderRasterDEMSource>(staticImmutableCast<RasterDEMSource::Impl>(impl)); + return std::make_unique<RenderRasterDEMSource>(staticImmutableCast<RasterSource::Impl>(impl)); case SourceType::GeoJSON: return std::make_unique<RenderGeoJSONSource>(staticImmutableCast<GeoJSONSource::Impl>(impl)); case SourceType::Video: diff --git a/src/mbgl/renderer/sources/render_raster_dem_source.cpp b/src/mbgl/renderer/sources/render_raster_dem_source.cpp index ff394bac8e..b8bb2ce1cd 100644 --- a/src/mbgl/renderer/sources/render_raster_dem_source.cpp +++ b/src/mbgl/renderer/sources/render_raster_dem_source.cpp @@ -10,13 +10,13 @@ namespace mbgl { using namespace style; -RenderRasterDEMSource::RenderRasterDEMSource(Immutable<style::RasterDEMSource::Impl> impl_) +RenderRasterDEMSource::RenderRasterDEMSource(Immutable<style::RasterSource::Impl> impl_) : RenderSource(impl_) { tilePyramid.setObserver(this); } -const style::RasterDEMSource::Impl& RenderRasterDEMSource::impl() const { - return static_cast<const style::RasterDEMSource::Impl&>(*baseImpl); +const style::RasterSource::Impl& RenderRasterDEMSource::impl() const { + return static_cast<const style::RasterSource::Impl&>(*baseImpl); } bool RenderRasterDEMSource::isLoaded() const { diff --git a/src/mbgl/renderer/sources/render_raster_dem_source.hpp b/src/mbgl/renderer/sources/render_raster_dem_source.hpp index b32d3705cb..b6b8bf977c 100644 --- a/src/mbgl/renderer/sources/render_raster_dem_source.hpp +++ b/src/mbgl/renderer/sources/render_raster_dem_source.hpp @@ -2,13 +2,13 @@ #include <mbgl/renderer/render_source.hpp> #include <mbgl/renderer/tile_pyramid.hpp> -#include <mbgl/style/sources/raster_dem_source_impl.hpp> +#include <mbgl/style/sources/raster_source_impl.hpp> namespace mbgl { class RenderRasterDEMSource : public RenderSource { public: - RenderRasterDEMSource(Immutable<style::RasterDEMSource::Impl>); + RenderRasterDEMSource(Immutable<style::RasterSource::Impl>); bool isLoaded() const final; @@ -37,7 +37,7 @@ public: void dumpDebugLogs() const final; private: - const style::RasterDEMSource::Impl& impl() const; + const style::RasterSource::Impl& impl() const; TilePyramid tilePyramid; optional<std::vector<std::string>> tileURLTemplates; diff --git a/src/mbgl/style/sources/raster_dem_source.cpp b/src/mbgl/style/sources/raster_dem_source.cpp index 9a270297fc..dc9feb8eeb 100644 --- a/src/mbgl/style/sources/raster_dem_source.cpp +++ b/src/mbgl/style/sources/raster_dem_source.cpp @@ -1,5 +1,5 @@ #include <mbgl/style/sources/raster_dem_source.hpp> -#include <mbgl/style/sources/raster_dem_source_impl.hpp> +#include <mbgl/style/sources/raster_source_impl.hpp> #include <mbgl/style/source_observer.hpp> #include <mbgl/style/conversion/json.hpp> #include <mbgl/style/conversion/tileset.hpp> @@ -10,73 +10,10 @@ namespace mbgl { namespace style { RasterDEMSource::RasterDEMSource(std::string id, variant<std::string, Tileset> urlOrTileset_, uint16_t tileSize) - : Source(makeMutable<Impl>(std::move(id), tileSize)), - urlOrTileset(std::move(urlOrTileset_)) { + : RasterSource(std::move(id), urlOrTileset_, tileSize, SourceType::RasterDEM){ } -RasterDEMSource::~RasterDEMSource() = default; -const RasterDEMSource::Impl& RasterDEMSource::impl() const { - return static_cast<const Impl&>(*baseImpl); -} - -const variant<std::string, Tileset>& RasterDEMSource::getURLOrTileset() const { - return urlOrTileset; -} - -optional<std::string> RasterDEMSource::getURL() const { - if (urlOrTileset.is<Tileset>()) { - return {}; - } - - return urlOrTileset.get<std::string>(); -} - -uint16_t RasterDEMSource::getTileSize() const { - return impl().getTileSize(); -} - -void RasterDEMSource::loadDescription(FileSource& fileSource) { - if (urlOrTileset.is<Tileset>()) { - baseImpl = makeMutable<Impl>(impl(), urlOrTileset.get<Tileset>()); - loaded = true; - return; - } - - if (req) { - return; - } - - const std::string& url = urlOrTileset.get<std::string>(); - req = fileSource.request(Resource::source(url), [this, url](Response res) { - if (res.error) { - observer->onSourceError(*this, std::make_exception_ptr(std::runtime_error(res.error->message))); - } else if (res.notModified) { - return; - } else if (res.noContent) { - observer->onSourceError(*this, std::make_exception_ptr(std::runtime_error("unexpectedly empty TileJSON"))); - } else { - conversion::Error error; - optional<Tileset> tileset = conversion::convertJSON<Tileset>(*res.data, error); - if (!tileset) { - observer->onSourceError(*this, std::make_exception_ptr(std::runtime_error(error.message))); - return; - } - - util::mapbox::canonicalizeTileset(*tileset, url, getType(), getTileSize()); - bool changed = impl().getTileset() != *tileset; - - baseImpl = makeMutable<Impl>(impl(), *tileset); - loaded = true; - - observer->onSourceLoaded(*this); - - if (changed) { - observer->onSourceChanged(*this); - } - } - }); -} } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/sources/raster_dem_source_impl.cpp b/src/mbgl/style/sources/raster_dem_source_impl.cpp deleted file mode 100644 index 92ddcd14cb..0000000000 --- a/src/mbgl/style/sources/raster_dem_source_impl.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include <mbgl/style/sources/raster_dem_source_impl.hpp> - -namespace mbgl { -namespace style { - -RasterDEMSource::Impl::Impl(std::string id_, uint16_t tileSize_) - : Source::Impl(SourceType::RasterDEM, std::move(id_)), - tileSize(tileSize_) { -} - -RasterDEMSource::Impl::Impl(const Impl& other, Tileset tileset_) - : Source::Impl(other), - tileSize(other.tileSize), - tileset(std::move(tileset_)) { -} - -uint16_t RasterDEMSource::Impl::getTileSize() const { - return tileSize; -} - -optional<Tileset> RasterDEMSource::Impl::getTileset() const { - return tileset; -} - -optional<std::string> RasterDEMSource::Impl::getAttribution() const { - if (!tileset) { - return {}; - } - return tileset->attribution; -} - -} // namespace style -} // namespace mbgl diff --git a/src/mbgl/style/sources/raster_dem_source_impl.hpp b/src/mbgl/style/sources/raster_dem_source_impl.hpp deleted file mode 100644 index 78175ebfc4..0000000000 --- a/src/mbgl/style/sources/raster_dem_source_impl.hpp +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include <mbgl/style/sources/raster_dem_source.hpp> -#include <mbgl/style/source_impl.hpp> - -namespace mbgl { -namespace style { - -class RasterDEMSource::Impl : public Source::Impl { -public: - Impl(std::string id, uint16_t tileSize); - Impl(const Impl&, Tileset); - - optional<Tileset> getTileset() const; - uint16_t getTileSize() const; - - optional<std::string> getAttribution() const final; - -private: - uint16_t tileSize; - optional<Tileset> tileset; -}; - -} // namespace style -} // namespace mbgl diff --git a/src/mbgl/style/sources/raster_source.cpp b/src/mbgl/style/sources/raster_source.cpp index 0a0412a4ed..53f29d660b 100644 --- a/src/mbgl/style/sources/raster_source.cpp +++ b/src/mbgl/style/sources/raster_source.cpp @@ -9,8 +9,8 @@ namespace mbgl { namespace style { -RasterSource::RasterSource(std::string id, variant<std::string, Tileset> urlOrTileset_, uint16_t tileSize) - : Source(makeMutable<Impl>(std::move(id), tileSize)), +RasterSource::RasterSource(std::string id, variant<std::string, Tileset> urlOrTileset_, uint16_t tileSize, SourceType sourceType) + : Source(makeMutable<Impl>(sourceType, std::move(id), tileSize)), urlOrTileset(std::move(urlOrTileset_)) { } diff --git a/src/mbgl/style/sources/raster_source_impl.cpp b/src/mbgl/style/sources/raster_source_impl.cpp index 50dae1f07e..4db25aafd1 100644 --- a/src/mbgl/style/sources/raster_source_impl.cpp +++ b/src/mbgl/style/sources/raster_source_impl.cpp @@ -3,8 +3,8 @@ namespace mbgl { namespace style { -RasterSource::Impl::Impl(std::string id_, uint16_t tileSize_) - : Source::Impl(SourceType::Raster, std::move(id_)), +RasterSource::Impl::Impl(SourceType sourceType, std::string id_, uint16_t tileSize_) + : Source::Impl(sourceType, std::move(id_)), tileSize(tileSize_) { } diff --git a/src/mbgl/style/sources/raster_source_impl.hpp b/src/mbgl/style/sources/raster_source_impl.hpp index c41d5485b2..96f59a2159 100644 --- a/src/mbgl/style/sources/raster_source_impl.hpp +++ b/src/mbgl/style/sources/raster_source_impl.hpp @@ -8,7 +8,7 @@ namespace style { class RasterSource::Impl : public Source::Impl { public: - Impl(std::string id, uint16_t tileSize); + Impl(SourceType sourceType, std::string id, uint16_t tileSize); Impl(const Impl&, Tileset); optional<Tileset> getTileset() const; |