From 83113f5612d87bb968933950024263dff313d072 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava Date: Wed, 17 Nov 2021 00:32:20 +0100 Subject: [PATCH] Move isSameScript to Character --- src/characters/Character.h | 11 +++++++++++ src/terminalDisplay/TerminalPainter.cpp | 10 +--------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/characters/Character.h b/src/characters/Character.h index ee5cf0c4..56dfa6f8 100644 --- a/src/characters/Character.h +++ b/src/characters/Character.h @@ -174,6 +174,17 @@ public: } return character; } + + inline bool isSameScript(const Character &lhs) const + { + const QChar::Script script = QChar::script(lhs.baseCodePoint()); + const QChar::Script currentScript = QChar::script(baseCodePoint()); + if (currentScript == QChar::Script_Common || script == QChar::Script_Common || currentScript == QChar::Script_Inherited + || script == QChar::Script_Inherited) { + return true; + } + return currentScript == script; + }; }; constexpr bool operator==(const Character &a, const Character &b) diff --git a/src/terminalDisplay/TerminalPainter.cpp b/src/terminalDisplay/TerminalPainter.cpp index b25968a3..f0c5163f 100644 --- a/src/terminalDisplay/TerminalPainter.cpp +++ b/src/terminalDisplay/TerminalPainter.cpp @@ -119,14 +119,6 @@ void TerminalPainter::drawContents(Character *image, const auto hasSameLineDrawStatus = [&](int column) { return LineBlockCharacters::canDraw(image[display->loc(column, y)].character) == lineDraw; }; - const auto isSameScript = [&](const Character &c) { - const QChar::Script script = QChar::script(c.baseCodePoint()); - if (currentScript == QChar::Script_Common || script == QChar::Script_Common || currentScript == QChar::Script_Inherited - || script == QChar::Script_Inherited) { - return true; - } - return currentScript == script; - }; const Character &char_value = image[display->loc(x, y)]; @@ -135,7 +127,7 @@ void TerminalPainter::drawContents(Character *image, Character next_char = image[display->loc(x + len, y)]; if (!hasSameColors(x + len) || !hasSameRendition(x + len) || !hasSameWidth(x + len) || !hasSameLineDrawStatus(x + len) - || !isSameScript(next_char) || !next_char.canBeGrouped(bidiEnabled, doubleWidth)) { + || !char_value.isSameScript(next_char) || !next_char.canBeGrouped(bidiEnabled, doubleWidth)) { break; }