From 3af5821cf964398265547e23341e50cb6f55c081 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Thu, 22 Jan 2004 18:40:04 +0000 Subject: [PATCH] mac encodings support git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25312 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/encconv.cpp | 63 +++++++++++++++--------------------------- 1 file changed, 23 insertions(+), 40 deletions(-) diff --git a/src/common/encconv.cpp b/src/common/encconv.cpp index e6b921e027..e3327c909a 100644 --- a/src/common/encconv.cpp +++ b/src/common/encconv.cpp @@ -48,56 +48,39 @@ typedef char tchar; #include "TextCommon.h" #include "TextEncodingConverter.h" -#include "wx/mac/private.h" // includes mac headers +#include "wx/fontutil.h" +#include "wx/mac/private.h" // includes mac headers -typedef struct { - wxFontEncoding enc ; - TextEncodingBase mac ; -} MacCP ; - -MacCP gMacCodePages[] = -{ - wxFONTENCODING_MACROMAN, kTextEncodingMacRoman, - wxFONTENCODING_MACCENTRALEUR, kTextEncodingMacCentralEurRoman, - wxFONTENCODING_MACHEBREW, kTextEncodingMacHebrew, - wxFONTENCODING_MACGREEK, kTextEncodingMacGreek, - wxFONTENCODING_MACARABIC, kTextEncodingMacArabic, - wxFONTENCODING_MACTURKISH, kTextEncodingMacTurkish, - wxFONTENCODING_MACCYRILLIC, kTextEncodingMacCyrillic, -} ; - -wxUint16 gMacEncodings[WXSIZEOF(gMacCodePages)][128] ; -bool gMacEncodingsInited[WXSIZEOF(gMacCodePages)] ; +wxUint16 gMacEncodings[wxFONTENCODING_MACMAX-wxFONTENCODING_MACMIN+1][128] ; +bool gMacEncodingsInited[wxFONTENCODING_MACMAX-wxFONTENCODING_MACMIN+1] ; #endif static wxUint16* LINKAGEMODE GetEncTable(wxFontEncoding enc) { #ifdef __WXMAC__ - for (int i = 0 ; i < WXSIZEOF(gMacCodePages) ; ++i ) + if( enc >= wxFONTENCODING_MACMIN && enc <= wxFONTENCODING_MACMAX ) { - if ( gMacCodePages[i].enc == enc ) + int i = enc-wxFONTENCODING_MACMIN ; + if ( gMacEncodingsInited[i] == false ) { - if ( gMacEncodingsInited[i] == false ) - { - TECObjectRef converter ; - TextEncodingBase code = gMacCodePages[i].mac ; - TextEncodingBase unicode = CreateTextEncoding(kTextEncodingUnicodeDefault,0,kUnicode16BitFormat) ; - OSStatus status = TECCreateConverter(&converter,code,unicode); - char s[2] ; - s[1] = 0 ; - ByteCount byteInLen, byteOutLen ; - for( char c = 255 ; c >= 128 ; --c ) - { - s[0] = c ; - status = TECConvertText(converter, (ConstTextPtr) &s , 1, &byteInLen, - (TextPtr) &gMacEncodings[i][c-128] , 2, &byteOutLen); - } - status = TECDisposeConverter(converter); - gMacEncodingsInited[i]=true; - } - return gMacEncodings[i] ; + TECObjectRef converter ; + TextEncodingBase code = wxMacGetSystemEncFromFontEnc( enc ) ; + TextEncodingBase unicode = CreateTextEncoding(kTextEncodingUnicodeDefault,0,kUnicode16BitFormat) ; + OSStatus status = TECCreateConverter(&converter,code,unicode); + char s[2] ; + s[1] = 0 ; + ByteCount byteInLen, byteOutLen ; + for( char c = 255 ; c >= 128 ; --c ) + { + s[0] = c ; + status = TECConvertText(converter, (ConstTextPtr) &s , 1, &byteInLen, + (TextPtr) &gMacEncodings[i][c-128] , 2, &byteOutLen); + } + status = TECDisposeConverter(converter); + gMacEncodingsInited[i]=true; } + return gMacEncodings[i] ; } #endif -- 2.47.2