diff options
author | Neil <nyamatongwe@gmail.com> | 2020-06-24 15:00:50 +1000 |
---|---|---|
committer | Neil <nyamatongwe@gmail.com> | 2020-06-24 15:00:50 +1000 |
commit | 69d678787645b2dd7d0cd40db4aa5c538ab13f9b (patch) | |
tree | 2058ecc0057a30473b082e2cd08a5f766e4eba79 /gtk | |
parent | b047c81396af14e5497d969b37b1df9d67d09d17 (diff) | |
download | scintilla-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 'gtk')
-rwxr-xr-x | gtk/ScintillaGTK.cxx | 18 | ||||
-rwxr-xr-x | gtk/ScintillaGTK.h | 2 |
2 files changed, 20 insertions, 0 deletions
diff --git a/gtk/ScintillaGTK.cxx b/gtk/ScintillaGTK.cxx index 61ce04ad0..e3148e9a8 100755 --- a/gtk/ScintillaGTK.cxx +++ b/gtk/ScintillaGTK.cxx @@ -816,6 +816,24 @@ bool ScintillaGTK::ValidCodePage(int codePage) const { || codePage == 1361; } +std::string ScintillaGTK::UTF8FromEncoded(std::string_view encoded) const { + if (IsUnicodeMode()) { + return std::string(encoded); + } else { + const char *charSetBuffer = CharacterSetID(); + return ConvertText(encoded.data(), encoded.length(), "UTF-8", charSetBuffer, true); + } +} + +std::string ScintillaGTK::EncodedFromUTF8(std::string_view utf8) const { + if (IsUnicodeMode()) { + return std::string(utf8); + } else { + const char *charSetBuffer = CharacterSetID(); + return ConvertText(utf8.data(), utf8.length(), charSetBuffer, "UTF-8", true); + } +} + sptr_t ScintillaGTK::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { try { switch (iMessage) { diff --git a/gtk/ScintillaGTK.h b/gtk/ScintillaGTK.h index a671f5b7a..100abd56b 100755 --- a/gtk/ScintillaGTK.h +++ b/gtk/ScintillaGTK.h @@ -92,6 +92,8 @@ private: Sci::Position TargetAsUTF8(char *text) const; Sci::Position EncodedFromUTF8(const char *utf8, char *encoded) const; bool ValidCodePage(int codePage) const override; + std::string UTF8FromEncoded(std::string_view encoded) const override; + std::string EncodedFromUTF8(std::string_view utf8) const override; public: // Public for scintilla_send_message sptr_t WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) override; private: |