aboutsummaryrefslogtreecommitdiffhomepage
path: root/qt/ScintillaEditBase/ScintillaQt.cpp
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2020-06-24 15:00:50 +1000
committerNeil <nyamatongwe@gmail.com>2020-06-24 15:00:50 +1000
commit69d678787645b2dd7d0cd40db4aa5c538ab13f9b (patch)
tree2058ecc0057a30473b082e2cd08a5f766e4eba79 /qt/ScintillaEditBase/ScintillaQt.cpp
parentb047c81396af14e5497d969b37b1df9d67d09d17 (diff)
downloadscintilla-mirror-69d678787645b2dd7d0cd40db4aa5c538ab13f9b.tar.gz
Converting between UTF-8 and current encoding.
Allows platform-independent code to be written just to handle Unicode.
Diffstat (limited to 'qt/ScintillaEditBase/ScintillaQt.cpp')
-rw-r--r--qt/ScintillaEditBase/ScintillaQt.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/qt/ScintillaEditBase/ScintillaQt.cpp b/qt/ScintillaEditBase/ScintillaQt.cpp
index 374027bd0..761ff78bb 100644
--- a/qt/ScintillaEditBase/ScintillaQt.cpp
+++ b/qt/ScintillaEditBase/ScintillaQt.cpp
@@ -250,6 +250,28 @@ bool ScintillaQt::ValidCodePage(int codePage) const
|| codePage == 1361;
}
+std::string ScintillaQt::UTF8FromEncoded(std::string_view encoded) const {
+ if (IsUnicodeMode()) {
+ return std::string(encoded);
+ } else {
+ QTextCodec *codec = QTextCodec::codecForName(
+ CharacterSetID(CharacterSetOfDocument()));
+ QString text = codec->toUnicode(encoded.data(), static_cast<int>(encoded.length()));
+ return text.toStdString();
+ }
+}
+
+std::string ScintillaQt::EncodedFromUTF8(std::string_view utf8) const {
+ if (IsUnicodeMode()) {
+ return std::string(utf8);
+ } else {
+ QString text = QString::fromUtf8(utf8.data(), static_cast<int>(utf8.length()));
+ QTextCodec *codec = QTextCodec::codecForName(
+ CharacterSetID(CharacterSetOfDocument()));
+ QByteArray ba = codec->fromUnicode(text);
+ return std::string(ba.data(), ba.length());
+ }
+}
void ScintillaQt::ScrollText(Sci::Line linesToMove)
{