[core] Remove casts in buckets

This commit is contained in:
Alexander Shalamov
2018-10-31 11:47:40 +02:00
parent eb170b250a
commit 20c471669c
7 changed files with 18 additions and 24 deletions

View File

@@ -104,12 +104,7 @@ static float get(const RenderCircleLayer& layer, const std::map<std::string, Cir
}
float CircleBucket::getQueryRadius(const RenderLayer& layer) const {
if (!layer.is<RenderCircleLayer>()) {
return 0;
}
auto circleLayer = layer.as<RenderCircleLayer>();
const RenderCircleLayer* circleLayer = toRenderCircleLayer(&layer);
float radius = get<CircleRadius>(*circleLayer, paintPropertyBinders);
float stroke = get<CircleStrokeWidth>(*circleLayer, paintPropertyBinders);
auto translate = circleLayer->evaluated.get<CircleTranslate>();

View File

@@ -137,13 +137,9 @@ bool FillBucket::hasData() const {
}
float FillBucket::getQueryRadius(const RenderLayer& layer) const {
if (!layer.is<RenderFillLayer>()) {
return 0;
}
const std::array<float, 2>& translate = layer.as<RenderFillLayer>()->evaluated.get<FillTranslate>();
const RenderFillLayer* fillLayer = toRenderFillLayer(&layer);
const std::array<float, 2>& translate = fillLayer->evaluated.get<FillTranslate>();
return util::length(translate[0], translate[1]);
}
} // namespace mbgl

View File

@@ -181,11 +181,8 @@ bool FillExtrusionBucket::hasData() const {
}
float FillExtrusionBucket::getQueryRadius(const RenderLayer& layer) const {
if (!layer.is<RenderFillExtrusionLayer>()) {
return 0;
}
const std::array<float, 2>& translate = layer.as<RenderFillExtrusionLayer>()->evaluated.get<FillExtrusionTranslate>();
const RenderFillExtrusionLayer* fillExtrusionLayer = toRenderFillExtrusionLayer(&layer);
const std::array<float, 2>& translate = fillExtrusionLayer->evaluated.get<FillExtrusionTranslate>();
return util::length(translate[0], translate[1]);
}

View File

@@ -545,16 +545,10 @@ float LineBucket::getLineWidth(const RenderLineLayer& layer) const {
}
float LineBucket::getQueryRadius(const RenderLayer& layer) const {
if (!layer.is<RenderLineLayer>()) {
return 0;
}
auto lineLayer = layer.as<RenderLineLayer>();
const RenderLineLayer* lineLayer = toRenderLineLayer(&layer);
const std::array<float, 2>& translate = lineLayer->evaluated.get<LineTranslate>();
float offset = get<LineOffset>(*lineLayer, paintPropertyBinders);
return getLineWidth(*lineLayer) / 2.0 + std::abs(offset) + util::length(translate[0], translate[1]);
}
} // namespace mbgl

View File

@@ -56,4 +56,8 @@ inline bool RenderLayer::is<RenderFillExtrusionLayer>() const {
return type == style::LayerType::FillExtrusion;
}
inline const RenderFillExtrusionLayer* toRenderFillExtrusionLayer(const RenderLayer* layer) {
return static_cast<const RenderFillExtrusionLayer*>(layer);
}
} // namespace mbgl

View File

@@ -51,4 +51,8 @@ inline bool RenderLayer::is<RenderFillLayer>() const {
return type == style::LayerType::Fill;
}
inline const RenderFillLayer* toRenderFillLayer(const RenderLayer* layer) {
return static_cast<const RenderFillLayer*>(layer);
}
} // namespace mbgl

View File

@@ -71,4 +71,8 @@ inline bool RenderLayer::is<RenderLineLayer>() const {
return type == style::LayerType::Line;
}
inline const RenderLineLayer* toRenderLineLayer(const RenderLayer* layer) {
return static_cast<const RenderLineLayer*>(layer);
}
} // namespace mbgl