diff options
Diffstat (limited to 'cocoa')
| -rw-r--r-- | cocoa/ScintillaCocoa.h | 3 | ||||
| -rw-r--r-- | cocoa/ScintillaCocoa.mm | 32 | 
2 files changed, 35 insertions, 0 deletions
| diff --git a/cocoa/ScintillaCocoa.h b/cocoa/ScintillaCocoa.h index b94a30aa2..e75efffef 100644 --- a/cocoa/ScintillaCocoa.h +++ b/cocoa/ScintillaCocoa.h @@ -182,6 +182,9 @@ public:  	NSPoint GetCaretPosition(); +	std::string UTF8FromEncoded(std::string_view encoded) const override; +	std::string EncodedFromUTF8(std::string_view utf8) const override; +  	static sptr_t DirectFunction(sptr_t ptr, unsigned int iMessage, uptr_t wParam, sptr_t lParam);  	NSTimer *timers[tickPlatform+1]; 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  /** | 
