summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/symbol_bucket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/symbol_bucket.cpp')
-rw-r--r--src/mbgl/renderer/symbol_bucket.cpp24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/mbgl/renderer/symbol_bucket.cpp b/src/mbgl/renderer/symbol_bucket.cpp
index d85dbaf858..281888d9c5 100644
--- a/src/mbgl/renderer/symbol_bucket.cpp
+++ b/src/mbgl/renderer/symbol_bucket.cpp
@@ -382,8 +382,8 @@ void SymbolBucket::placeFeatures(CollisionTile& collisionTile, bool swapImmediat
// Don't sort symbols that won't overlap because it isn't necessary and
// because it causes more labels to pop in and out when rotating.
if (mayOverlap) {
- float sin = std::sin(collisionTile.angle);
- float cos = std::cos(collisionTile.angle);
+ const float sin = std::sin(collisionTile.config.angle);
+ const float cos = std::cos(collisionTile.config.angle);
std::sort(symbolInstances.begin(), symbolInstances.end(), [sin, cos](SymbolInstance &a, SymbolInstance &b) {
const float aRotated = sin * a.x + cos * a.y;
@@ -426,8 +426,9 @@ void SymbolBucket::placeFeatures(CollisionTile& collisionTile, bool swapImmediat
collisionTile.insertFeature(symbolInstance.textCollisionFeature, glyphScale);
}
if (glyphScale < collisionTile.maxScale) {
- addSymbols<SymbolRenderData::TextBuffer, TextElementGroup>(renderDataInProgress->text,
- symbolInstance.glyphQuads, glyphScale, layout.text.keep_upright, textAlongLine, collisionTile.angle);
+ addSymbols<SymbolRenderData::TextBuffer, TextElementGroup>(
+ renderDataInProgress->text, symbolInstance.glyphQuads, glyphScale,
+ layout.text.keep_upright, textAlongLine, collisionTile.config.angle);
}
}
@@ -436,13 +437,16 @@ void SymbolBucket::placeFeatures(CollisionTile& collisionTile, bool swapImmediat
collisionTile.insertFeature(symbolInstance.iconCollisionFeature, iconScale);
}
if (iconScale < collisionTile.maxScale) {
- addSymbols<SymbolRenderData::IconBuffer, IconElementGroup>(renderDataInProgress->icon,
- symbolInstance.iconQuads, iconScale, layout.icon.keep_upright, iconAlongLine, collisionTile.angle);
+ addSymbols<SymbolRenderData::IconBuffer, IconElementGroup>(
+ renderDataInProgress->icon, symbolInstance.iconQuads, iconScale,
+ layout.icon.keep_upright, iconAlongLine, collisionTile.config.angle);
}
}
}
- if (collisionTile.getDebug()) addToDebugBuffers(collisionTile);
+ if (collisionTile.config.debug) {
+ addToDebugBuffers(collisionTile);
+ }
if (swapImmediately) swapRenderData();
}
@@ -513,7 +517,7 @@ void SymbolBucket::addSymbols(Buffer &buffer, const SymbolQuads &symbols, float
void SymbolBucket::addToDebugBuffers(CollisionTile &collisionTile) {
const float yStretch = collisionTile.yStretch;
- const float angle = collisionTile.angle;
+ const float angle = collisionTile.config.angle;
float angle_sin = std::sin(-angle);
float angle_cos = std::cos(-angle);
std::array<float, 4> matrix = {{angle_cos, -angle_sin, angle_sin, angle_cos}};
@@ -562,7 +566,9 @@ void SymbolBucket::addToDebugBuffers(CollisionTile &collisionTile) {
}
void SymbolBucket::swapRenderData() {
- renderData = std::move(renderDataInProgress);
+ if (renderDataInProgress) {
+ renderData = std::move(renderDataInProgress);
+ }
}
void SymbolBucket::drawGlyphs(SDFShader &shader) {