summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2020-03-14 12:29:48 +0100
committerLars Knoll <lars.knoll@qt.io>2020-03-17 01:42:52 +0100
commit76ced3f179f18f5f28416291140f5804c8a905b9 (patch)
treec396036f2f0998def8f89efaa435b252fd00f07f /src/gui
parent5af2016b7cf1f1a2de9b1d893fd25c8c24544ef3 (diff)
Change signature of initScripts to take out pointer to a QVLA<ScriptItem>
This avoids one additional copy of data that we've been doing before. Change-Id: I3fae0ebe0cded632b41fdcf7efc01d5c7f2dc181 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/text/qtextengine.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index f9c4a3949c..2deae6f4ba 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -2098,10 +2098,14 @@ void QTextEngine::itemize() const
layoutData->hasBidi = bidi.process();
{
- QVarLengthArray<uchar> scripts(length);
- QUnicodeTools::initScripts(string, length, scripts.data());
- for (int i = 0; i < length; ++i)
- analysis[i].script = scripts.at(i);
+ QUnicodeTools::ScriptItemArray scriptItems;
+ QUnicodeTools::initScripts(string, length, &scriptItems);
+ for (int i = 0; i < scriptItems.length(); ++i) {
+ const auto &item = scriptItems.at(i);
+ int end = i < scriptItems.length() - 1 ? scriptItems.at(i + 1).position : length;
+ for (int j = item.position; j < end; ++j)
+ analysis[j].script = item.script;
+ }
}
const ushort *uc = string;