diff options
author | Anton Kudryavtsev <[email protected]> | 2023-09-10 16:16:31 +0300 |
---|---|---|
committer | Anton Kudryavtsev <[email protected]> | 2023-09-13 17:06:32 +0300 |
commit | e26e6d6725cdaacc981fd2501f69eb4180529551 (patch) | |
tree | fd0ed85b7e81df6e9d7f6538d4fb3512180a632b | |
parent | 60113056bc4c328f62808d1c0fa2a1abec481f78 (diff) |
qtextlist::itemText: reduce allocations
Don't create tmp QBA, just append to QString directly
Change-Id: Ib7c469ef7b9b459fbc2df662adbe613c8d74d88a
Reviewed-by: Edward Welbourne <[email protected]>
-rw-r--r-- | src/gui/text/qtextlist.cpp | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/gui/text/qtextlist.cpp b/src/gui/text/qtextlist.cpp index 90a6cf88674..7ec8b6215e1 100644 --- a/src/gui/text/qtextlist.cpp +++ b/src/gui/text/qtextlist.cpp @@ -186,16 +186,14 @@ QString QTextList::itemText(const QTextBlock &blockIt) const if (itemNumber < 1) { result = QString::number(itemNumber); } else if (itemNumber < 5000) { - QByteArray romanNumeral; + QString romanNumeral; // works for up to 4999 items - static const char romanSymbolsLower[] = "iiivixxxlxcccdcmmmm"; - static const char romanSymbolsUpper[] = "IIIVIXXXLXCCCDCMMMM"; - QByteArray romanSymbols; // wrap to have "mid" + QLatin1StringView romanSymbols; if (style == QTextListFormat::ListLowerRoman) - romanSymbols = QByteArray::fromRawData(romanSymbolsLower, sizeof(romanSymbolsLower)); + romanSymbols = "iiivixxxlxcccdcmmmm"_L1; else - romanSymbols = QByteArray::fromRawData(romanSymbolsUpper, sizeof(romanSymbolsUpper)); + romanSymbols = "IIIVIXXXLXCCCDCMMMM"_L1; int c[] = { 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000 }; int n = itemNumber; @@ -220,10 +218,10 @@ QString QTextList::itemText(const QTextBlock &blockIt) const numDigits = q; } - romanNumeral.append(romanSymbols.mid(startDigit, numDigits)); + romanNumeral.append(romanSymbols.sliced(startDigit, numDigits)); } } - result = QString::fromLatin1(romanNumeral); + result = std::move(romanNumeral); } else { result = u"?"_s; } |