summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2019-12-09 14:03:06 +0100
committerAlexander Shalamov <alexander.shalamov@mapbox.com>2020-01-15 15:02:11 +0200
commitd8d336160c49fcda3e2ace93393176d53440532b (patch)
tree0b6058d9ba523bfb003146b5066c60aea129aee1
parentf82d4e685715e3b752cfd53626036b33f0ad0b70 (diff)
downloadqtlocation-mapboxgl-d8d336160c49fcda3e2ace93393176d53440532b.tar.gz
[core] add pixelOffset and minFontScale to SymbolQuads
-rw-r--r--src/mbgl/layout/symbol_layout.cpp6
-rw-r--r--src/mbgl/text/quads.cpp34
-rw-r--r--src/mbgl/text/quads.hpp15
3 files changed, 46 insertions, 9 deletions
diff --git a/src/mbgl/layout/symbol_layout.cpp b/src/mbgl/layout/symbol_layout.cpp
index 506e300b1b..8fea0858e4 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 480bcd79a9..747a208ee1 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 29f798ba0d..c61c85f14c 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>;