From 614000256b709ff9d566740534f68c4cb795e0f2 Mon Sep 17 00:00:00 2001 From: Alexander Shalamov Date: Tue, 19 Nov 2019 11:50:55 +0200 Subject: [core] Shape images in labels at bucket zoom level --- src/mbgl/layout/symbol_layout.cpp | 2 ++ src/mbgl/text/shaping.cpp | 3 ++- src/mbgl/text/shaping.hpp | 1 + test/text/shaping.test.cpp | 5 ++++- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/mbgl/layout/symbol_layout.cpp b/src/mbgl/layout/symbol_layout.cpp index 4c5836df21..ca61844417 100644 --- a/src/mbgl/layout/symbol_layout.cpp +++ b/src/mbgl/layout/symbol_layout.cpp @@ -355,6 +355,7 @@ void SymbolLayout::prepareSymbols(const GlyphMap& glyphMap, optional shapedIcon; std::array textOffset{{0.0f, 0.0f}}; const float layoutTextSize = layout->evaluate(zoom + 1, feature); + const float layoutTextSizeAtBucketZoomLevel = layout->evaluate(zoom, feature); const float layoutIconSize = layout->evaluate(zoom + 1, feature); // if feature has text, shape the text @@ -381,6 +382,7 @@ void SymbolLayout::prepareSymbols(const GlyphMap& glyphMap, /* glyphs */ glyphPositions, /* images */ imagePositions, layoutTextSize, + layoutTextSizeAtBucketZoomLevel, allowVerticalPlacement); return result; diff --git a/src/mbgl/text/shaping.cpp b/src/mbgl/text/shaping.cpp index b977112d1f..fb1aa04346 100644 --- a/src/mbgl/text/shaping.cpp +++ b/src/mbgl/text/shaping.cpp @@ -532,6 +532,7 @@ const Shaping getShaping(const TaggedString& formattedString, const GlyphPositions& glyphPositions, const ImagePositions& imagePositions, float layoutTextSize, + float layoutTextSizeAtBucketZoomLevel, bool allowVerticalPlacement) { assert(layoutTextSize); std::vector reorderedLines; @@ -561,7 +562,7 @@ const Shaping getShaping(const TaggedString& formattedString, glyphMap, glyphPositions, imagePositions, - layoutTextSize, + layoutTextSizeAtBucketZoomLevel, allowVerticalPlacement); return shaping; diff --git a/src/mbgl/text/shaping.hpp b/src/mbgl/text/shaping.hpp index c170642e82..1f62f38521 100644 --- a/src/mbgl/text/shaping.hpp +++ b/src/mbgl/text/shaping.hpp @@ -73,6 +73,7 @@ const Shaping getShaping(const TaggedString& string, const GlyphPositions& glyphPositions, const ImagePositions& imagePositions, float layoutTextSize, + float layoutTextSizeAtBucketZoomLevel, bool allowVerticalPlacement); } // namespace mbgl diff --git a/test/text/shaping.test.cpp b/test/text/shaping.test.cpp index 53f8505393..d86bf30eb9 100644 --- a/test/text/shaping.test.cpp +++ b/test/text/shaping.test.cpp @@ -25,6 +25,8 @@ TEST(Shaping, ZWSP) { auto immutableGlyph = Immutable(makeMutable(std::move(glyph))); const std::vector fontStack{{"font-stack"}}; const SectionOptions sectionOptions(1.0f, fontStack); + const float layoutTextSize = 16.0f; + const float layoutTextSizeAtBucketZoomLevel = 16.0f; GlyphMap glyphs = { { FontStackHasher()(fontStack), {{u'δΈ­', std::move(immutableGlyph)}} } }; @@ -44,7 +46,8 @@ TEST(Shaping, ZWSP) { glyphs, glyphPositions, imagePositions, - 16.0, + layoutTextSize, + layoutTextSizeAtBucketZoomLevel, /*allowVerticalPlacement*/ false); }; -- cgit v1.2.1