Tidy up qtextengine: use char16_t more

Change-Id: Idae892b7a6fa9d58ba154f9729e1d26ab1f6ea5e
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
This commit is contained in:
Anton Kudryavtsev 2023-09-04 16:57:17 +03:00
parent b6462bbd5c
commit f74fd727e1

View File

@ -2955,11 +2955,11 @@ static inline bool prevCharJoins(const QString &string, int pos)
return joining == QChar::Joining_Dual || joining == QChar::Joining_Causing; return joining == QChar::Joining_Dual || joining == QChar::Joining_Causing;
} }
static inline bool isRetainableControlCode(QChar c) static constexpr bool isRetainableControlCode(char16_t c) noexcept
{ {
return (c.unicode() >= 0x202a && c.unicode() <= 0x202e) // LRE, RLE, PDF, LRO, RLO return (c >= 0x202a && c <= 0x202e) // LRE, RLE, PDF, LRO, RLO
|| (c.unicode() >= 0x200e && c.unicode() <= 0x200f) // LRM, RLM || (c >= 0x200e && c <= 0x200f) // LRM, RLM
|| (c.unicode() >= 0x2066 && c.unicode() <= 0x2069); // LRI, RLI, FSI, PDI || (c >= 0x2066 && c <= 0x2069); // LRI, RLI, FSI, PDI
} }
static QString stringMidRetainingBidiCC(const QString &string, static QString stringMidRetainingBidiCC(const QString &string,
@ -2972,14 +2972,14 @@ static QString stringMidRetainingBidiCC(const QString &string,
{ {
QString prefix; QString prefix;
for (int i=subStringFrom; i<midStart; ++i) { for (int i=subStringFrom; i<midStart; ++i) {
QChar c = string.at(i); char16_t c = string.at(i).unicode();
if (isRetainableControlCode(c)) if (isRetainableControlCode(c))
prefix += c; prefix += c;
} }
QString suffix; QString suffix;
for (int i=midStart + midLength; i<subStringTo; ++i) { for (int i=midStart + midLength; i<subStringTo; ++i) {
QChar c = string.at(i); char16_t c = string.at(i).unicode();
if (isRetainableControlCode(c)) if (isRetainableControlCode(c))
suffix += c; suffix += c;
} }
@ -3036,7 +3036,7 @@ QString QTextEngine::elidedText(Qt::TextElideMode mode, QFixed width, int flags,
{ {
QFontEngine *engine = fnt.d->engineForScript(QChar::Script_Common); QFontEngine *engine = fnt.d->engineForScript(QChar::Script_Common);
QChar ellipsisChar = u'\x2026'; constexpr char16_t ellipsisChar = u'\x2026';
// We only want to use the ellipsis character if it is from the main // We only want to use the ellipsis character if it is from the main
// font (not one of the fallbacks), since using a fallback font // font (not one of the fallbacks), since using a fallback font
@ -3048,7 +3048,7 @@ QString QTextEngine::elidedText(Qt::TextElideMode mode, QFixed width, int flags,
engine = multiEngine->engine(0); engine = multiEngine->engine(0);
} }
glyph_t glyph = engine->glyphIndex(ellipsisChar.unicode()); glyph_t glyph = engine->glyphIndex(ellipsisChar);
QGlyphLayout glyphs; QGlyphLayout glyphs;
glyphs.numGlyphs = 1; glyphs.numGlyphs = 1;
@ -3068,7 +3068,7 @@ QString QTextEngine::elidedText(Qt::TextElideMode mode, QFixed width, int flags,
ellipsisText = QStringLiteral("..."); ellipsisText = QStringLiteral("...");
} else { } else {
engine = fnt.d->engineForScript(QChar::Script_Common); engine = fnt.d->engineForScript(QChar::Script_Common);
glyph = engine->glyphIndex(ellipsisChar.unicode()); glyph = engine->glyphIndex(ellipsisChar);
engine->recalcAdvances(&glyphs, { }); engine->recalcAdvances(&glyphs, { });
ellipsisText = ellipsisChar; ellipsisText = ellipsisChar;
} }