[core] add pixelOffset and minFontScale to SymbolQuads

This commit is contained in:
Konstantin Käfer
2019-12-09 14:03:06 +01:00
committed by Alexander Shalamov
parent f82d4e6857
commit d8d336160c
3 changed files with 46 additions and 9 deletions

View File

@@ -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() ||

View File

@@ -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);
}
}

View File

@@ -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>;