summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/layers/render_fill_layer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/layers/render_fill_layer.cpp')
-rw-r--r--src/mbgl/renderer/layers/render_fill_layer.cpp30
1 files changed, 16 insertions, 14 deletions
diff --git a/src/mbgl/renderer/layers/render_fill_layer.cpp b/src/mbgl/renderer/layers/render_fill_layer.cpp
index 5b0f020290..85ae12b9d9 100644
--- a/src/mbgl/renderer/layers/render_fill_layer.cpp
+++ b/src/mbgl/renderer/layers/render_fill_layer.cpp
@@ -68,19 +68,18 @@ bool RenderFillLayer::hasTransition() const {
}
bool RenderFillLayer::hasCrossfade() const {
- return static_cast<const FillLayerProperties&>(*evaluatedProperties).crossfade.t != 1;
+ return getCrossfade<FillLayerProperties>(evaluatedProperties).t != 1;
}
void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
- const auto& evaluated = static_cast<const FillLayerProperties&>(*evaluatedProperties).evaluated;
- const auto& crossfade = static_cast<const FillLayerProperties&>(*evaluatedProperties).crossfade;
if (unevaluated.get<FillPattern>().isUndefined()) {
for (const RenderTile& tile : renderTiles) {
- auto bucket_ = tile.tile.getBucket<FillBucket>(*baseImpl);
- if (!bucket_) {
+ const LayerRenderData* renderData = tile.tile.getLayerRenderData(*baseImpl);
+ if (!renderData) {
continue;
}
- FillBucket& bucket = *bucket_;
+ auto& bucket = static_cast<FillBucket&>(*renderData->bucket);
+ const auto& evaluated = getEvaluated<FillLayerProperties>(renderData->layerProperties);
auto draw = [&] (auto& programInstance,
const auto& drawMode,
@@ -157,18 +156,21 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
if (parameters.pass != RenderPass::Translucent) {
return;
}
- const auto fillPatternValue = evaluated.get<FillPattern>().constantOr(Faded<std::basic_string<char>>{"", ""});
+
for (const RenderTile& tile : renderTiles) {
+ const LayerRenderData* renderData = tile.tile.getLayerRenderData(*baseImpl);
+ if (!renderData) {
+ continue;
+ }
+ auto& bucket = static_cast<FillBucket&>(*renderData->bucket);
+ const auto& evaluated = getEvaluated<FillLayerProperties>(renderData->layerProperties);
+ const auto& crossfade = getCrossfade<FillLayerProperties>(renderData->layerProperties);
+
+ const auto& fillPatternValue = evaluated.get<FillPattern>().constantOr(Faded<std::basic_string<char>>{"", ""});
auto& geometryTile = static_cast<GeometryTile&>(tile.tile);
optional<ImagePosition> patternPosA = geometryTile.getPattern(fillPatternValue.from);
optional<ImagePosition> patternPosB = geometryTile.getPattern(fillPatternValue.to);
- auto bucket_ = tile.tile.getBucket<FillBucket>(*baseImpl);
- if (!bucket_) {
- continue;
- }
- FillBucket& bucket = *bucket_;
-
auto draw = [&] (auto& programInstance,
const auto& drawMode,
const auto& depthMode,
@@ -249,7 +251,7 @@ bool RenderFillLayer::queryIntersectsFeature(
const TransformState& transformState,
const float pixelsToTileUnits,
const mat4&) const {
- const auto& evaluated = static_cast<const FillLayerProperties&>(*evaluatedProperties).evaluated;
+ const auto& evaluated = getEvaluated<FillLayerProperties>(evaluatedProperties);
auto translatedQueryGeometry = FeatureIndex::translateQueryGeometry(
queryGeometry,
evaluated.get<style::FillTranslate>(),