From 8b78398190a5a7957d507c33b41af841e112a91b Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Wed, 3 Jul 2019 12:09:28 +0300 Subject: [core] Remove down-casting of render sources --- src/mbgl/annotation/render_annotation_source.hpp | 5 ----- src/mbgl/renderer/layers/render_hillshade_layer.cpp | 4 +--- src/mbgl/renderer/render_source.cpp | 6 ++++++ src/mbgl/renderer/render_source.hpp | 17 ++--------------- .../renderer/sources/render_custom_geometry_source.hpp | 5 ----- src/mbgl/renderer/sources/render_geojson_source.hpp | 5 ----- src/mbgl/renderer/sources/render_image_source.hpp | 5 ----- src/mbgl/renderer/sources/render_raster_dem_source.hpp | 7 +------ src/mbgl/renderer/sources/render_raster_source.hpp | 5 ----- src/mbgl/renderer/sources/render_vector_source.hpp | 5 ----- 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() 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()) { - 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 #include +#include #include 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 create(Immutable); virtual ~RenderSource(); - // Check whether this source is of the given subtype. - template - bool is() const; - - // Dynamically cast this source to the given subtype. - template - T* as() { - return is() ? reinterpret_cast(this) : nullptr; - } - - template - const T* as() const { - return is() ? reinterpret_cast(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 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() 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 data; }; -template <> -inline bool RenderSource::is() 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 tileIds; }; -template <> -inline bool RenderSource::is() 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 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() 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; }; -template <> -inline bool RenderSource::is() 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; }; -template <> -inline bool RenderSource::is() const { - return baseImpl->type == style::SourceType::Vector; -} - } // namespace mbgl -- cgit v1.2.1