diff options
Diffstat (limited to 'win32')
| -rw-r--r-- | win32/ScintillaWin.cxx | 23 | 
1 files changed, 23 insertions, 0 deletions
| diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx index d96199170..bde9ef66b 100644 --- a/win32/ScintillaWin.cxx +++ b/win32/ScintillaWin.cxx @@ -403,6 +403,9 @@ class ScintillaWin :  	UINT CodePageOfDocument() const noexcept;  	bool ValidCodePage(int codePage) const override; +	std::string UTF8FromEncoded(std::string_view encoded) const override; +	std::string EncodedFromUTF8(std::string_view utf8) const override; +  	std::string EncodeWString(std::wstring_view wsv);  	sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) override;  	void IdleWork() override; @@ -2053,6 +2056,26 @@ bool ScintillaWin::ValidCodePage(int codePage) const {  	       codePage == 950 || codePage == 1361;  } +std::string ScintillaWin::UTF8FromEncoded(std::string_view encoded) const { +	if (IsUnicodeMode()) { +		return std::string(encoded); +	} else { +		// Pivot through wide string +		std::wstring ws = StringDecode(encoded, CodePageOfDocument()); +		return StringEncode(ws, SC_CP_UTF8); +	} +} + +std::string ScintillaWin::EncodedFromUTF8(std::string_view utf8) const { +	if (IsUnicodeMode()) { +		return std::string(utf8); +	} else { +		// Pivot through wide string +		std::wstring ws = StringDecode(utf8, SC_CP_UTF8); +		return StringEncode(ws, CodePageOfDocument()); +	} +} +  sptr_t ScintillaWin::DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {  	return ::DefWindowProc(MainHWND(), iMessage, wParam, lParam);  } | 
