[core] Remove casts in buckets
This commit is contained in:
@@ -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>();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user