aboutsummaryrefslogtreecommitdiffhomepage
path: root/cocoa/PlatCocoa.mm
diff options
context:
space:
mode:
authornyamatongwe <devnull@localhost>2011-06-04 21:51:47 +1000
committernyamatongwe <devnull@localhost>2011-06-04 21:51:47 +1000
commitcb02808f900636815746b26fe55eccaf36ffe0f6 (patch)
tree8194d1fec0d30fad00507e78f75e1aa2976c2a9c /cocoa/PlatCocoa.mm
parentacf1ed336f5e61a7f08294509798c1c643b55d76 (diff)
downloadscintilla-mirror-cb02808f900636815746b26fe55eccaf36ffe0f6.tar.gz
Added EncodingFromCharacterSet for ScintillaCocoa case folding.
Diffstat (limited to 'cocoa/PlatCocoa.mm')
-rw-r--r--cocoa/PlatCocoa.mm62
1 files changed, 60 insertions, 2 deletions
diff --git a/cocoa/PlatCocoa.mm b/cocoa/PlatCocoa.mm
index e87ccdd41..f7db513c6 100644
--- a/cocoa/PlatCocoa.mm
+++ b/cocoa/PlatCocoa.mm
@@ -764,6 +764,63 @@ void SurfaceImpl::DrawTextClipped(PRectangle rc, Font &font_, int ybase, const c
//--------------------------------------------------------------------------------------------------
+CFStringEncoding EncodingFromCharacterSet(bool unicode, int characterSet)
+{
+ if (unicode)
+ return kCFStringEncodingUTF8;
+
+ // Unsupported -> Latin1 as reasonably safe
+ enum { notSupported = kCFStringEncodingISOLatin1};
+
+ switch (characterSet)
+ {
+ case SC_CHARSET_ANSI:
+ return kCFStringEncodingISOLatin1;
+ case SC_CHARSET_DEFAULT:
+ return kCFStringEncodingISOLatin1;
+ case SC_CHARSET_BALTIC:
+ return kCFStringEncodingWindowsBalticRim;
+ case SC_CHARSET_CHINESEBIG5:
+ return kCFStringEncodingBig5;
+ case SC_CHARSET_EASTEUROPE:
+ return kCFStringEncodingWindowsLatin2;
+ case SC_CHARSET_GB2312:
+ return kCFStringEncodingGB_18030_2000;
+ case SC_CHARSET_GREEK:
+ return kCFStringEncodingWindowsGreek;
+ case SC_CHARSET_HANGUL:
+ return kCFStringEncodingEUC_KR;
+ case SC_CHARSET_MAC:
+ return kCFStringEncodingMacRoman;
+ case SC_CHARSET_OEM:
+ return kCFStringEncodingISOLatin1;
+ case SC_CHARSET_RUSSIAN:
+ return kCFStringEncodingKOI8_R;
+ case SC_CHARSET_CYRILLIC:
+ return kCFStringEncodingWindowsCyrillic;
+ case SC_CHARSET_SHIFTJIS:
+ return kCFStringEncodingShiftJIS;
+ case SC_CHARSET_SYMBOL:
+ return kCFStringEncodingMacSymbol;
+ case SC_CHARSET_TURKISH:
+ return kCFStringEncodingWindowsLatin5;
+ case SC_CHARSET_JOHAB:
+ return kCFStringEncodingWindowsKoreanJohab;
+ case SC_CHARSET_HEBREW:
+ return kCFStringEncodingWindowsHebrew;
+ case SC_CHARSET_ARABIC:
+ return kCFStringEncodingWindowsArabic;
+ case SC_CHARSET_VIETNAMESE:
+ return kCFStringEncodingWindowsVietnamese;
+ case SC_CHARSET_THAI:
+ return kCFStringEncodingISOLatinThai;
+ case SC_CHARSET_8859_15:
+ return kCFStringEncodingISOLatin1;
+ default:
+ return notSupported;
+ }
+}
+
void SurfaceImpl::DrawTextTransparent(PRectangle rc, Font &font_, int ybase, const char *s, int len,
ColourAllocated fore)
{
@@ -905,8 +962,9 @@ void SurfaceImpl::SetUnicodeMode(bool unicodeMode_) {
unicodeMode = unicodeMode_;
}
-void SurfaceImpl::SetDBCSMode(int codePage) {
- // TODO: Implement this for code pages != UTF-8
+void SurfaceImpl::SetDBCSMode(int codePage_) {
+ if (codePage_ && (codePage_ != SC_CP_UTF8))
+ codePage = codePage_;
}
Surface *Surface::Allocate()