summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/layers/render_line_layer.cpp
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-06-12 12:29:28 +0300
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-06-25 12:53:52 +0300
commit23d8ae5e738741c2c31e82e9b33a8c05f21ea3d6 (patch)
tree8466fd1540d3c48ce400d4ce7df25b6a9e58ca32 /src/mbgl/renderer/layers/render_line_layer.cpp
parent290a9fcad57c92a01e2a401df07fea3d7dfacf08 (diff)
downloadqtlocation-mapboxgl-23d8ae5e738741c2c31e82e9b33a8c05f21ea3d6.tar.gz
[core] Simplify RenderLayer::upload()
Now `RenderLayer::upload()` accepts only `uploadPass`, similar to other uploadable objects. Few simplifications were made in the `LineLayer` prepare stage.
Diffstat (limited to 'src/mbgl/renderer/layers/render_line_layer.cpp')
-rw-r--r--src/mbgl/renderer/layers/render_line_layer.cpp39
1 files changed, 16 insertions, 23 deletions
diff --git a/src/mbgl/renderer/layers/render_line_layer.cpp b/src/mbgl/renderer/layers/render_line_layer.cpp
index 5b20e4667c..2fd48045e9 100644
--- a/src/mbgl/renderer/layers/render_line_layer.cpp
+++ b/src/mbgl/renderer/layers/render_line_layer.cpp
@@ -59,34 +59,27 @@ bool RenderLineLayer::hasCrossfade() const {
return getCrossfade<LineLayerProperties>(evaluatedProperties).t != 1;
}
-void RenderLineLayer::upload(gfx::UploadPass& uploadPass, UploadParameters& uploadParameters) {
+void RenderLineLayer::prepare(const LayerPrepareParameters& params) {
+ RenderLayer::prepare(params);
for (const RenderTile& tile : renderTiles) {
const LayerRenderData* renderData = tile.getLayerRenderData(*baseImpl);
- if (!renderData) {
- continue;
- }
- auto& bucket = static_cast<LineBucket&>(*renderData->bucket);
- const auto& evaluated = getEvaluated<LineLayerProperties>(renderData->layerProperties);
-
- if (!evaluated.get<LineDasharray>().from.empty()) {
- const LinePatternCap cap = bucket.layout.get<LineCap>() == LineCapType::Round
- ? LinePatternCap::Round : LinePatternCap::Square;
- // Ensures that the dash data gets added and uploaded to the atlas.
- uploadParameters.lineAtlas.getDashPosition(evaluated.get<LineDasharray>().from, cap);
- uploadParameters.lineAtlas.getDashPosition(evaluated.get<LineDasharray>().to, cap);
+ if (!renderData) continue;
- } else if (!unevaluated.get<LinePattern>().isUndefined()) {
- const auto& linePatternValue = evaluated.get<LinePattern>().constantOr(Faded<std::basic_string<char>>{ "", ""});
+ const auto& evaluated = getEvaluated<LineLayerProperties>(renderData->layerProperties);
+ if (evaluated.get<LineDasharray>().from.empty()) continue;
- // Ensures that the pattern gets added and uplodated to the atlas.
- tile.getPattern(linePatternValue.from);
- tile.getPattern(linePatternValue.to);
+ auto& bucket = static_cast<LineBucket&>(*renderData->bucket);
+ const LinePatternCap cap = bucket.layout.get<LineCap>() == LineCapType::Round
+ ? LinePatternCap::Round : LinePatternCap::Square;
+ // Ensures that the dash data gets added to the atlas.
+ params.lineAtlas.getDashPosition(evaluated.get<LineDasharray>().from, cap);
+ params.lineAtlas.getDashPosition(evaluated.get<LineDasharray>().to, cap);
+ }
+}
- } else if (!unevaluated.get<LineGradient>().getValue().isUndefined()) {
- if (!colorRampTexture) {
- colorRampTexture = uploadPass.createTexture(colorRamp);
- }
- }
+void RenderLineLayer::upload(gfx::UploadPass& uploadPass) {
+ if (!unevaluated.get<LineGradient>().getValue().isUndefined() && !colorRampTexture) {
+ colorRampTexture = uploadPass.createTexture(colorRamp);
}
}