diff options
author | nyamatongwe <unknown> | 2011-06-04 21:51:47 +1000 |
---|---|---|
committer | nyamatongwe <unknown> | 2011-06-04 21:51:47 +1000 |
commit | be133968b94c77ea9e4bdcea16175f96f7481bae (patch) | |
tree | 380902c4a899bd045aa6e3bf1290a6c2459bcb9f | |
parent | c53e82e6002f1edce443260d48e45688fbbca85c (diff) | |
download | scintilla-mirror-be133968b94c77ea9e4bdcea16175f96f7481bae.tar.gz |
Added EncodingFromCharacterSet for ScintillaCocoa case folding.
-rw-r--r-- | cocoa/PlatCocoa.h | 3 | ||||
-rw-r--r-- | cocoa/PlatCocoa.mm | 62 |
2 files changed, 62 insertions, 3 deletions
diff --git a/cocoa/PlatCocoa.h b/cocoa/PlatCocoa.h index 250d94ad6..a9ff87b0e 100644 --- a/cocoa/PlatCocoa.h +++ b/cocoa/PlatCocoa.h @@ -23,6 +23,7 @@ NSRect PRectangleToNSRect(Scintilla::PRectangle& rc); Scintilla::PRectangle NSRectToPRectangle(NSRect& rc); +CFStringEncoding EncodingFromCharacterSet(bool unicode, int characterSet); @interface ScintillaContextMenu : NSMenu { @@ -111,7 +112,7 @@ public: void FlushCachedState(); void SetUnicodeMode(bool unicodeMode_); - void SetDBCSMode(int codePage); + void SetDBCSMode(int codePage_); }; // SurfaceImpl class } // Scintilla namespace 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() |