From 20c471669c102d1740558c2c7d1ea77bb9ef8530 Mon Sep 17 00:00:00 2001 From: Alexander Shalamov Date: Wed, 31 Oct 2018 11:47:40 +0200 Subject: [PATCH] [core] Remove casts in buckets --- src/mbgl/renderer/buckets/circle_bucket.cpp | 7 +------ src/mbgl/renderer/buckets/fill_bucket.cpp | 8 ++------ src/mbgl/renderer/buckets/fill_extrusion_bucket.cpp | 7 ++----- src/mbgl/renderer/buckets/line_bucket.cpp | 8 +------- src/mbgl/renderer/layers/render_fill_extrusion_layer.hpp | 4 ++++ src/mbgl/renderer/layers/render_fill_layer.hpp | 4 ++++ src/mbgl/renderer/layers/render_line_layer.hpp | 4 ++++ 7 files changed, 18 insertions(+), 24 deletions(-) diff --git a/src/mbgl/renderer/buckets/circle_bucket.cpp b/src/mbgl/renderer/buckets/circle_bucket.cpp index 7e08b3c96..51da3eb89 100644 --- a/src/mbgl/renderer/buckets/circle_bucket.cpp +++ b/src/mbgl/renderer/buckets/circle_bucket.cpp @@ -104,12 +104,7 @@ static float get(const RenderCircleLayer& layer, const std::map()) { - return 0; - } - - auto circleLayer = layer.as(); - + const RenderCircleLayer* circleLayer = toRenderCircleLayer(&layer); float radius = get(*circleLayer, paintPropertyBinders); float stroke = get(*circleLayer, paintPropertyBinders); auto translate = circleLayer->evaluated.get(); diff --git a/src/mbgl/renderer/buckets/fill_bucket.cpp b/src/mbgl/renderer/buckets/fill_bucket.cpp index 3b1b7ec00..043882f13 100644 --- a/src/mbgl/renderer/buckets/fill_bucket.cpp +++ b/src/mbgl/renderer/buckets/fill_bucket.cpp @@ -137,13 +137,9 @@ bool FillBucket::hasData() const { } float FillBucket::getQueryRadius(const RenderLayer& layer) const { - if (!layer.is()) { - return 0; - } - - const std::array& translate = layer.as()->evaluated.get(); + const RenderFillLayer* fillLayer = toRenderFillLayer(&layer); + const std::array& translate = fillLayer->evaluated.get(); return util::length(translate[0], translate[1]); - } } // namespace mbgl diff --git a/src/mbgl/renderer/buckets/fill_extrusion_bucket.cpp b/src/mbgl/renderer/buckets/fill_extrusion_bucket.cpp index fb491e0db..177c6e0c2 100644 --- a/src/mbgl/renderer/buckets/fill_extrusion_bucket.cpp +++ b/src/mbgl/renderer/buckets/fill_extrusion_bucket.cpp @@ -181,11 +181,8 @@ bool FillExtrusionBucket::hasData() const { } float FillExtrusionBucket::getQueryRadius(const RenderLayer& layer) const { - if (!layer.is()) { - return 0; - } - - const std::array& translate = layer.as()->evaluated.get(); + const RenderFillExtrusionLayer* fillExtrusionLayer = toRenderFillExtrusionLayer(&layer); + const std::array& translate = fillExtrusionLayer->evaluated.get(); return util::length(translate[0], translate[1]); } diff --git a/src/mbgl/renderer/buckets/line_bucket.cpp b/src/mbgl/renderer/buckets/line_bucket.cpp index 2efb60c9a..ace6c8bfa 100644 --- a/src/mbgl/renderer/buckets/line_bucket.cpp +++ b/src/mbgl/renderer/buckets/line_bucket.cpp @@ -545,16 +545,10 @@ float LineBucket::getLineWidth(const RenderLineLayer& layer) const { } float LineBucket::getQueryRadius(const RenderLayer& layer) const { - if (!layer.is()) { - return 0; - } - - auto lineLayer = layer.as(); - + const RenderLineLayer* lineLayer = toRenderLineLayer(&layer); const std::array& translate = lineLayer->evaluated.get(); float offset = get(*lineLayer, paintPropertyBinders); return getLineWidth(*lineLayer) / 2.0 + std::abs(offset) + util::length(translate[0], translate[1]); } - } // namespace mbgl diff --git a/src/mbgl/renderer/layers/render_fill_extrusion_layer.hpp b/src/mbgl/renderer/layers/render_fill_extrusion_layer.hpp index b9684b73f..a7d128dc0 100644 --- a/src/mbgl/renderer/layers/render_fill_extrusion_layer.hpp +++ b/src/mbgl/renderer/layers/render_fill_extrusion_layer.hpp @@ -56,4 +56,8 @@ inline bool RenderLayer::is() const { return type == style::LayerType::FillExtrusion; } +inline const RenderFillExtrusionLayer* toRenderFillExtrusionLayer(const RenderLayer* layer) { + return static_cast(layer); +} + } // namespace mbgl diff --git a/src/mbgl/renderer/layers/render_fill_layer.hpp b/src/mbgl/renderer/layers/render_fill_layer.hpp index 41926e130..48168a623 100644 --- a/src/mbgl/renderer/layers/render_fill_layer.hpp +++ b/src/mbgl/renderer/layers/render_fill_layer.hpp @@ -51,4 +51,8 @@ inline bool RenderLayer::is() const { return type == style::LayerType::Fill; } +inline const RenderFillLayer* toRenderFillLayer(const RenderLayer* layer) { + return static_cast(layer); +} + } // namespace mbgl diff --git a/src/mbgl/renderer/layers/render_line_layer.hpp b/src/mbgl/renderer/layers/render_line_layer.hpp index 1b2641923..737aa2e5b 100644 --- a/src/mbgl/renderer/layers/render_line_layer.hpp +++ b/src/mbgl/renderer/layers/render_line_layer.hpp @@ -71,4 +71,8 @@ inline bool RenderLayer::is() const { return type == style::LayerType::Line; } +inline const RenderLineLayer* toRenderLineLayer(const RenderLayer* layer) { + return static_cast(layer); +} + } // namespace mbgl