summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorartemp <artem@mapnik.org>2014-10-28 14:50:44 -0400
committerartemp <artem@mapnik.org>2014-10-28 14:50:44 -0400
commit0d4f625951d11ea156a90ff7d32068ae3ca222c0 (patch)
treeef1ffe6f588d666766bc98ae18225fecbdbe46c4 /src
parenta9470feb2380c63c66cfbf44782d9a390018e5e1 (diff)
downloadqtlocation-mapboxgl-0d4f625951d11ea156a90ff7d32068ae3ca222c0.tar.gz
fix 'flip' logic to take into account rotation_alignment and keep_upright (#470)
Diffstat (limited to 'src')
-rw-r--r--src/renderer/painter_symbol.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/renderer/painter_symbol.cpp b/src/renderer/painter_symbol.cpp
index 415dead70e..2992199b3c 100644
--- a/src/renderer/painter_symbol.cpp
+++ b/src/renderer/painter_symbol.cpp
@@ -24,11 +24,8 @@ void Painter::renderSDF(SymbolBucket &bucket,
mat4 exMatrix;
matrix::copy(exMatrix, projMatrix);
-
- const float angleOffset =
- bucketProperties.rotation_alignment == RotationAlignmentType::Map
- ? map.getState().getAngle()
- : 0;
+ bool aligned_with_map = (bucketProperties.rotation_alignment == RotationAlignmentType::Map);
+ const float angleOffset = aligned_with_map ? map.getState().getAngle() : 0;
if (angleOffset) {
matrix::rotate_z(exMatrix, exMatrix, angleOffset);
@@ -50,8 +47,8 @@ void Painter::renderSDF(SymbolBucket &bucket,
// adjust min/max zooms for variable font sies
float zoomAdjust = std::log(fontSize / bucketProperties.max_size) / std::log(2);
+ sdfShader.u_flip = (aligned_with_map && bucketProperties.keep_upright) ? 1 : 0;
sdfShader.u_angle = (int32_t)(angle + 256) % 256;
- sdfShader.u_flip = (bucket.properties.placement == PlacementType::Line ? 1 : 0);
sdfShader.u_zoom = (map.getState().getNormalizedZoom() - zoomAdjust) * 10; // current zoom level
FadeProperties f = frameHistory.getFadeProperties(300_milliseconds);
@@ -191,7 +188,10 @@ void Painter::renderSymbol(SymbolBucket &bucket, util::ptr<StyleLayer> layer_des
float zoomAdjust = std::log(fontSize / bucket.properties.icon.max_size) / std::log(2);
iconShader->u_angle = (int32_t)(angle + 256) % 256;
- iconShader->u_flip = bucket.properties.placement == PlacementType::Line ? 1 : 0;
+
+ bool flip = (bucket.properties.icon.rotation_alignment == RotationAlignmentType::Map)
+ && bucket.properties.icon.keep_upright;
+ iconShader->u_flip = flip ? 1 : 0;
iconShader->u_zoom = (map.getState().getNormalizedZoom() - zoomAdjust) * 10; // current zoom level
iconShader->u_fadedist = 0 * 10;