diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-07-03 12:09:28 +0300 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-07-04 16:56:43 +0300 |
commit | 8b78398190a5a7957d507c33b41af841e112a91b (patch) | |
tree | ef549563154e35e6fdcd980edc0cd557a5c58cc0 /src/mbgl | |
parent | 115512153064276d23bb865d1947e669eb022b50 (diff) | |
download | qtlocation-mapboxgl-8b78398190a5a7957d507c33b41af841e112a91b.tar.gz |
[core] Remove down-casting of render sources
Diffstat (limited to 'src/mbgl')
10 files changed, 10 insertions, 54 deletions
diff --git a/src/mbgl/annotation/render_annotation_source.hpp b/src/mbgl/annotation/render_annotation_source.hpp index e5d5130446..948a0b0d8d 100644 --- a/src/mbgl/annotation/render_annotation_source.hpp +++ b/src/mbgl/annotation/render_annotation_source.hpp @@ -29,9 +29,4 @@ private: const AnnotationSource::Impl& impl() const; }; -template <> -inline bool RenderSource::is<RenderAnnotationSource>() const { - return baseImpl->type == style::SourceType::Annotations; -} - } // namespace mbgl diff --git a/src/mbgl/renderer/layers/render_hillshade_layer.cpp b/src/mbgl/renderer/layers/render_hillshade_layer.cpp index aa34814036..2cbb77f24b 100644 --- a/src/mbgl/renderer/layers/render_hillshade_layer.cpp +++ b/src/mbgl/renderer/layers/render_hillshade_layer.cpp @@ -67,9 +67,7 @@ bool RenderHillshadeLayer::hasCrossfade() const { void RenderHillshadeLayer::prepare(const LayerPrepareParameters& params) { RenderLayer::prepare(params); - if (auto* demsrc = params.source->as<RenderRasterDEMSource>()) { - maxzoom = demsrc->getMaxZoom(); - } + maxzoom = params.source->getMaxZoom(); } void RenderHillshadeLayer::render(PaintParameters& parameters) { diff --git a/src/mbgl/renderer/render_source.cpp b/src/mbgl/renderer/render_source.cpp index d0f5689a9e..7b47602cd1 100644 --- a/src/mbgl/renderer/render_source.cpp +++ b/src/mbgl/renderer/render_source.cpp @@ -11,6 +11,7 @@ #include <mbgl/tile/tile.hpp> #include <mbgl/layermanager/layer_manager.hpp> +#include <mbgl/util/constants.hpp> #include <utility> namespace mbgl { @@ -73,4 +74,9 @@ bool RenderSource::isEnabled() const { return enabled; } +uint8_t RenderSource::getMaxZoom() const { + assert(false); + return util::TERRAIN_RGB_MAXZOOM; +} + } // namespace mbgl diff --git a/src/mbgl/renderer/render_source.hpp b/src/mbgl/renderer/render_source.hpp index 2603aa1273..d9af901664 100644 --- a/src/mbgl/renderer/render_source.hpp +++ b/src/mbgl/renderer/render_source.hpp @@ -47,21 +47,6 @@ public: static std::unique_ptr<RenderSource> create(Immutable<style::Source::Impl>); virtual ~RenderSource(); - // Check whether this source is of the given subtype. - template <class T> - bool is() const; - - // Dynamically cast this source to the given subtype. - template <class T> - T* as() { - return is<T>() ? reinterpret_cast<T*>(this) : nullptr; - } - - template <class T> - const T* as() const { - return is<T>() ? reinterpret_cast<const T*>(this) : nullptr; - } - bool isEnabled() const; virtual bool isLoaded() const = 0; @@ -103,6 +88,8 @@ public: virtual void dumpDebugLogs() const = 0; + virtual uint8_t getMaxZoom() const; + void setObserver(RenderSourceObserver*); Immutable<style::Source::Impl> baseImpl; diff --git a/src/mbgl/renderer/sources/render_custom_geometry_source.hpp b/src/mbgl/renderer/sources/render_custom_geometry_source.hpp index 331ae455e7..e94af0473f 100644 --- a/src/mbgl/renderer/sources/render_custom_geometry_source.hpp +++ b/src/mbgl/renderer/sources/render_custom_geometry_source.hpp @@ -19,9 +19,4 @@ private: const style::CustomGeometrySource::Impl& impl() const; }; -template <> -inline bool RenderSource::is<RenderCustomGeometrySource>() const { - return baseImpl->type == style::SourceType::CustomVector; -} - } // namespace mbgl diff --git a/src/mbgl/renderer/sources/render_geojson_source.hpp b/src/mbgl/renderer/sources/render_geojson_source.hpp index 3896457806..8e923362b9 100644 --- a/src/mbgl/renderer/sources/render_geojson_source.hpp +++ b/src/mbgl/renderer/sources/render_geojson_source.hpp @@ -32,9 +32,4 @@ private: std::weak_ptr<style::GeoJSONData> data; }; -template <> -inline bool RenderSource::is<RenderGeoJSONSource>() const { - return baseImpl->type == style::SourceType::GeoJSON; -} - } // namespace mbgl diff --git a/src/mbgl/renderer/sources/render_image_source.hpp b/src/mbgl/renderer/sources/render_image_source.hpp index ac9bdbecb7..804daeef87 100644 --- a/src/mbgl/renderer/sources/render_image_source.hpp +++ b/src/mbgl/renderer/sources/render_image_source.hpp @@ -68,9 +68,4 @@ private: std::vector<UnwrappedTileID> tileIds; }; -template <> -inline bool RenderSource::is<RenderImageSource>() const { - return baseImpl->type == style::SourceType::Image; -} - } // namespace mbgl diff --git a/src/mbgl/renderer/sources/render_raster_dem_source.hpp b/src/mbgl/renderer/sources/render_raster_dem_source.hpp index d1e7f03e10..e49ad1d1d4 100644 --- a/src/mbgl/renderer/sources/render_raster_dem_source.hpp +++ b/src/mbgl/renderer/sources/render_raster_dem_source.hpp @@ -26,7 +26,7 @@ public: std::vector<Feature> querySourceFeatures(const SourceQueryOptions&) const override; - uint8_t getMaxZoom() const { return maxzoom; } + uint8_t getMaxZoom() const override { return maxzoom; } private: const style::RasterSource::Impl& impl() const; @@ -37,9 +37,4 @@ private: void onTileChanged(Tile&) override; }; -template <> -inline bool RenderSource::is<RenderRasterDEMSource>() const { - return baseImpl->type == style::SourceType::RasterDEM; -} - } // namespace mbgl diff --git a/src/mbgl/renderer/sources/render_raster_source.hpp b/src/mbgl/renderer/sources/render_raster_source.hpp index ec6d7f2474..dc80630add 100644 --- a/src/mbgl/renderer/sources/render_raster_source.hpp +++ b/src/mbgl/renderer/sources/render_raster_source.hpp @@ -31,9 +31,4 @@ private: optional<Tileset> tileset; }; -template <> -inline bool RenderSource::is<RenderRasterSource>() const { - return baseImpl->type == style::SourceType::Raster; -} - } // namespace mbgl diff --git a/src/mbgl/renderer/sources/render_vector_source.hpp b/src/mbgl/renderer/sources/render_vector_source.hpp index c1ffdd207c..d5ac443e1c 100644 --- a/src/mbgl/renderer/sources/render_vector_source.hpp +++ b/src/mbgl/renderer/sources/render_vector_source.hpp @@ -20,9 +20,4 @@ private: optional<Tileset> tileset; }; -template <> -inline bool RenderSource::is<RenderVectorSource>() const { - return baseImpl->type == style::SourceType::Vector; -} - } // namespace mbgl |