From 0d4f625951d11ea156a90ff7d32068ae3ca222c0 Mon Sep 17 00:00:00 2001 From: artemp Date: Tue, 28 Oct 2014 14:50:44 -0400 Subject: [PATCH] fix 'flip' logic to take into account rotation_alignment and keep_upright (#470) --- src/renderer/painter_symbol.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/renderer/painter_symbol.cpp b/src/renderer/painter_symbol.cpp index 415dead70..2992199b3 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 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;