aboutsummaryrefslogtreecommitdiffhomepage
path: root/cocoa/ScintillaCocoa.mm
diff options
context:
space:
mode:
Diffstat (limited to 'cocoa/ScintillaCocoa.mm')
-rw-r--r--cocoa/ScintillaCocoa.mm32
1 files changed, 32 insertions, 0 deletions
diff --git a/cocoa/ScintillaCocoa.mm b/cocoa/ScintillaCocoa.mm
index 657651908..e1b11c16a 100644
--- a/cocoa/ScintillaCocoa.mm
+++ b/cocoa/ScintillaCocoa.mm
@@ -1195,6 +1195,38 @@ NSPoint ScintillaCocoa::GetCaretPosition() {
// -------------------------------------------------------------------------------------------------
+std::string ScintillaCocoa::UTF8FromEncoded(std::string_view encoded) const {
+ if (IsUnicodeMode()) {
+ return std::string(encoded);
+ } else {
+ CFStringEncoding encoding = EncodingFromCharacterSet(IsUnicodeMode(),
+ vs.styles[STYLE_DEFAULT].characterSet);
+ CFStringRef cfsVal = CFStringFromString(encoded.data(), encoded.length(), encoding);
+ std::string utf = EncodedBytesString(cfsVal, kCFStringEncodingUTF8);
+ if (cfsVal)
+ CFRelease(cfsVal);
+ return utf;
+ }
+}
+
+// -------------------------------------------------------------------------------------------------
+
+std::string ScintillaCocoa::EncodedFromUTF8(std::string_view utf8) const {
+ if (IsUnicodeMode()) {
+ return std::string(utf8);
+ } else {
+ CFStringEncoding encoding = EncodingFromCharacterSet(IsUnicodeMode(),
+ vs.styles[STYLE_DEFAULT].characterSet);
+ CFStringRef cfsVal = CFStringFromString(utf8.data(), utf8.length(), kCFStringEncodingUTF8);
+ const std::string sEncoded = EncodedBytesString(cfsVal, encoding);
+ if (cfsVal)
+ CFRelease(cfsVal);
+ return sEncoded;
+ }
+}
+
+// -------------------------------------------------------------------------------------------------
+
#pragma mark Drag
/**