From 621f7c87357abf3645f30ecad9e730bb69765287 Mon Sep 17 00:00:00 2001 From: Anton Kudryavtsev Date: Fri, 13 Oct 2023 15:39:08 +0300 Subject: [PATCH] qtextengine: replace qlist with qvla MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CoW is not required here Change-Id: Ia0d55dd1e82a225e089ca50f0d3c72bfb52d44f4 Reviewed-by: MÃ¥rten Nordheim --- src/gui/text/qtextengine.cpp | 19 +++++++++---------- src/gui/text/qtextengine_p.h | 3 ++- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 3ca932d34fa..17f0159da94 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -1434,8 +1434,7 @@ void QTextEngine::shapeText(int item) const // split up the item into parts that come from different font engines // k * 3 entries, array[k] == index in string, array[k + 1] == index in glyphs, array[k + 2] == engine index - QList itemBoundaries; - itemBoundaries.reserve(24); + QVarLengthArray itemBoundaries; QGlyphLayout initialGlyphs = availableGlyphs(&si); int nGlyphs = initialGlyphs.numGlyphs; @@ -1455,9 +1454,9 @@ void QTextEngine::shapeText(int item) const for (int i = 0, glyph_pos = 0; i < itemLength; ++i, ++glyph_pos) { const uint engineIdx = initialGlyphs.glyphs[glyph_pos] >> 24; if (lastEngine != engineIdx) { - itemBoundaries.append(i); - itemBoundaries.append(glyph_pos); - itemBoundaries.append(engineIdx); + itemBoundaries.push_back(i); + itemBoundaries.push_back(glyph_pos); + itemBoundaries.push_back(engineIdx); if (engineIdx != 0) { QFontEngine *actualFontEngine = static_cast(fontEngine)->engine(engineIdx); @@ -1473,9 +1472,9 @@ void QTextEngine::shapeText(int item) const ++i; } } else { - itemBoundaries.append(0); - itemBoundaries.append(0); - itemBoundaries.append(0); + itemBoundaries.push_back(0); + itemBoundaries.push_back(0); + itemBoundaries.push_back(0); } #if QT_CONFIG(harfbuzz) @@ -1597,7 +1596,7 @@ int QTextEngine::shapeTextWithHarfbuzzNG(const QScriptItem &si, const ushort *string, int itemLength, QFontEngine *fontEngine, - const QList &itemBoundaries, + QSpan itemBoundaries, bool kerningEnabled, bool hasLetterSpacing, const QHash &fontFeatures) const @@ -1619,7 +1618,7 @@ int QTextEngine::shapeTextWithHarfbuzzNG(const QScriptItem &si, // ### TODO get_default_for_script? props.language = hb_language_get_default(); // use default language from locale - for (int k = 0; k < itemBoundaries.size(); k += 3) { + for (qsizetype k = 0; k < itemBoundaries.size(); k += 3) { const uint item_pos = itemBoundaries[k]; const uint item_length = (k + 4 < itemBoundaries.size() ? itemBoundaries[k + 3] : itemLength) - item_pos; const uint engineIdx = itemBoundaries[k + 2]; diff --git a/src/gui/text/qtextengine_p.h b/src/gui/text/qtextengine_p.h index f2bfaee5a94..b041817d7c3 100644 --- a/src/gui/text/qtextengine_p.h +++ b/src/gui/text/qtextengine_p.h @@ -33,6 +33,7 @@ #include "private/qfont_p.h" #include "private/qtextformat_p.h" #include "private/qunicodetools_p.h" +#include "private/qspan_p.h" #ifndef QT_BUILD_COMPAT_LIB #include "private/qtextdocument_p.h" #endif @@ -625,7 +626,7 @@ private: const ushort *string, int itemLength, QFontEngine *fontEngine, - const QList &itemBoundaries, + QSpan itemBoundaries, bool kerningEnabled, bool hasLetterSpacing, const QHash &features) const;