diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2019-12-09 14:03:06 +0100 |
---|---|---|
committer | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2020-01-15 15:02:11 +0200 |
commit | d8d336160c49fcda3e2ace93393176d53440532b (patch) | |
tree | 0b6058d9ba523bfb003146b5066c60aea129aee1 | |
parent | f82d4e685715e3b752cfd53626036b33f0ad0b70 (diff) |
[core] add pixelOffset and minFontScale to SymbolQuads
-rw-r--r-- | src/mbgl/layout/symbol_layout.cpp | 6 | ||||
-rw-r--r-- | src/mbgl/text/quads.cpp | 34 | ||||
-rw-r--r-- | src/mbgl/text/quads.hpp | 15 |
3 files changed, 46 insertions, 9 deletions
diff --git a/src/mbgl/layout/symbol_layout.cpp b/src/mbgl/layout/symbol_layout.cpp index 506e300b1..8fea0858e 100644 --- a/src/mbgl/layout/symbol_layout.cpp +++ b/src/mbgl/layout/symbol_layout.cpp @@ -879,9 +879,9 @@ size_t SymbolLayout::addSymbol(SymbolBucket::Buffer& buffer, const auto &bl = symbol.bl; const auto &br = symbol.br; const auto &tex = symbol.tex; - const Point<float> pixelOffsetTL{0, 0}; - const Point<float> pixelOffsetBR{0, 0}; - const Point<float> minFontScale{0, 0}; + const auto& pixelOffsetTL = symbol.pixelOffsetTL; + const auto& pixelOffsetBR = symbol.pixelOffsetBR; + const auto& minFontScale = symbol.minFontScale; if (buffer.segments.empty() || buffer.segments.back().vertexLength + vertexLength > std::numeric_limits<uint16_t>::max() || diff --git a/src/mbgl/text/quads.cpp b/src/mbgl/text/quads.cpp index 480bcd79a..747a208ee 100644 --- a/src/mbgl/text/quads.cpp +++ b/src/mbgl/text/quads.cpp @@ -70,7 +70,21 @@ SymbolQuad getIconQuad(const PositionedIcon& shapedIcon, WritingModeType writing static_cast<uint16_t>(image.textureRect.h + border * 2) }; - return SymbolQuad{tl, tr, bl, br, textureRect, writingMode, {0.0f, 0.0f}, iconType == SymbolContent::IconSDF}; + Point<float> pixelOffsetTL; + Point<float> pixelOffsetBR; + Point<float> minFontScale; + + return SymbolQuad{tl, + tr, + bl, + br, + textureRect, + writingMode, + {0.0f, 0.0f}, + iconType == SymbolContent::IconSDF, + pixelOffsetTL, + pixelOffsetBR, + minFontScale}; } SymbolQuads getGlyphQuads(const Shaping& shapedText, @@ -181,8 +195,22 @@ SymbolQuads getGlyphQuads(const Shaping& shapedText, br = util::matrixMultiply(matrix, br); } - quads.emplace_back( - tl, tr, bl, br, rect, shapedText.writingMode, glyphOffset, isSDF, positionedGlyph.sectionIndex); + Point<float> pixelOffsetTL; + Point<float> pixelOffsetBR; + Point<float> minFontScale; + + quads.emplace_back(tl, + tr, + bl, + br, + rect, + shapedText.writingMode, + glyphOffset, + isSDF, + pixelOffsetTL, + pixelOffsetBR, + minFontScale, + positionedGlyph.sectionIndex); } } diff --git a/src/mbgl/text/quads.hpp b/src/mbgl/text/quads.hpp index 29f798ba0..c61c85f14 100644 --- a/src/mbgl/text/quads.hpp +++ b/src/mbgl/text/quads.hpp @@ -24,26 +24,35 @@ public: WritingModeType writingMode_, Point<float> glyphOffset_, bool isSDF_, + Point<float> pixelOffsetTL_, + Point<float> pixelOffsetBR_, + Point<float> minFontScale_, size_t sectionIndex_ = 0) : tl(tl_), tr(tr_), bl(bl_), br(br_), tex(tex_), - writingMode(writingMode_), + pixelOffsetTL(pixelOffsetTL_), + pixelOffsetBR(pixelOffsetBR_), glyphOffset(glyphOffset_), + writingMode(writingMode_), isSDF(isSDF_), - sectionIndex(sectionIndex_) {} + sectionIndex(sectionIndex_), + minFontScale(minFontScale_) {} Point<float> tl; Point<float> tr; Point<float> bl; Point<float> br; Rect<uint16_t> tex; - WritingModeType writingMode; + Point<float> pixelOffsetTL; + Point<float> pixelOffsetBR; Point<float> glyphOffset; + WritingModeType writingMode; bool isSDF; size_t sectionIndex; + Point<float> minFontScale; }; using SymbolQuads = std::vector<SymbolQuad>; |