diff options
Diffstat (limited to 'cocoa')
| -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() | 
