[core] Remove casts where expected type is part of the contract

This commit is contained in:
Alexander Shalamov
2018-10-30 15:59:47 +02:00
parent 767745e8b8
commit 05d5edfa74
7 changed files with 21 additions and 9 deletions

View File

@@ -37,14 +37,14 @@ public:
hasPattern(false) {
using PatternLayer = typename B::RenderLayerType;
const auto renderLayer = layers.at(0)->as<PatternLayer>();
const auto renderLayer = static_cast<const PatternLayer*>(layers.at(0));
const typename PatternLayer::StyleLayerImpl& leader = renderLayer->impl();
layout = leader.layout.evaluate(PropertyEvaluationParameters(zoom));
sourceLayerID = leader.sourceLayer;
groupID = renderLayer->getID();
for (const auto& layer : layers) {
const typename B::PossiblyEvaluatedPaintProperties evaluatedProps = layer->as<PatternLayer>()->paintProperties();
const typename B::PossiblyEvaluatedPaintProperties evaluatedProps = static_cast<const PatternLayer*>(layer)->paintProperties();
layerPaintProperties.emplace(layer->getID(), std::move(evaluatedProps));
const auto patternProperty = evaluatedProps.template get<typename PatternLayer::PatternProperty>();
const auto constantPattern = patternProperty.constantOr(Faded<std::basic_string<char> >{ "", ""});

View File

@@ -50,11 +50,11 @@ SymbolLayout::SymbolLayout(const BucketParameters& parameters,
pixelRatio(parameters.pixelRatio),
tileSize(util::tileSize * overscaling),
tilePixelRatio(float(util::EXTENT) / tileSize),
textSize(layers.at(0)->as<RenderSymbolLayer>()->impl().layout.get<TextSize>()),
iconSize(layers.at(0)->as<RenderSymbolLayer>()->impl().layout.get<IconSize>())
textSize(toRenderSymbolLayer(layers.at(0))->impl().layout.get<TextSize>()),
iconSize(toRenderSymbolLayer(layers.at(0))->impl().layout.get<IconSize>())
{
const SymbolLayer::Impl& leader = layers.at(0)->as<RenderSymbolLayer>()->impl();
const SymbolLayer::Impl& leader = toRenderSymbolLayer(layers.at(0))->impl();
layout = leader.layout.evaluate(PropertyEvaluationParameters(zoom));
@@ -91,8 +91,8 @@ SymbolLayout::SymbolLayout(const BucketParameters& parameters,
for (const auto& layer : layers) {
layerPaintProperties.emplace(layer->getID(), std::make_pair(
layer->as<RenderSymbolLayer>()->iconPaintProperties(),
layer->as<RenderSymbolLayer>()->textPaintProperties()
toRenderSymbolLayer(layer)->iconPaintProperties(),
toRenderSymbolLayer(layer)->textPaintProperties()
));
}

View File

@@ -18,7 +18,7 @@ CircleBucket::CircleBucket(const BucketParameters& parameters, const std::vector
std::piecewise_construct,
std::forward_as_tuple(layer->getID()),
std::forward_as_tuple(
layer->as<RenderCircleLayer>()->evaluated,
toRenderCircleLayer(layer)->evaluated,
parameters.tileID.overscaledZ));
}
}

View File

@@ -18,7 +18,7 @@ HeatmapBucket::HeatmapBucket(const BucketParameters& parameters, const std::vect
std::piecewise_construct,
std::forward_as_tuple(layer->getID()),
std::forward_as_tuple(
layer->as<RenderHeatmapLayer>()->evaluated,
toRenderHeatmapLayer(layer)->evaluated,
parameters.tileID.overscaledZ));
}
}

View File

@@ -39,4 +39,8 @@ inline bool RenderLayer::is<RenderCircleLayer>() const {
return type == style::LayerType::Circle;
}
inline const RenderCircleLayer* toRenderCircleLayer(const RenderLayer* layer) {
return static_cast<const RenderCircleLayer*>(layer);
}
} // namespace mbgl

View File

@@ -49,4 +49,8 @@ inline bool RenderLayer::is<RenderHeatmapLayer>() const {
return type == style::LayerType::Heatmap;
}
inline const RenderHeatmapLayer* toRenderHeatmapLayer(const RenderLayer* layer) {
return static_cast<const RenderHeatmapLayer*>(layer);
}
} // namespace mbgl

View File

@@ -99,4 +99,8 @@ inline bool RenderLayer::is<RenderSymbolLayer>() const {
return type == style::LayerType::Symbol;
}
inline const RenderSymbolLayer* toRenderSymbolLayer(const RenderLayer* layer) {
return static_cast<const RenderSymbolLayer*>(layer);
}
} // namespace mbgl