// font encodings
// Author: Vaclav Slavik
// Copyright: (c) 1999 Vaclav Slavik
-// Licence: wxWindows Licence
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#include <stdlib.h>
// conversion tables, generated by scripts in $(WXWIN)/misc/unictabl:
-#ifdef __BORLANDC__
-#include "../common/unictabl.inc"
+#if defined( __BORLANDC__ ) || defined(__DARWIN__)
+ #include "../common/unictabl.inc"
#else
-#include "unictabl.inc"
+ #include "unictabl.inc"
#endif
#if wxUSE_WCHAR_T
-typedef wchar_t tchar;
+ typedef wchar_t tchar;
#else
-typedef char tchar;
-#endif
-
-#ifdef __WXWINCE__
-#undef LINKAGEMODE
-#define LINKAGEMODE __cdecl
+ typedef char tchar;
#endif
#ifdef __WXMAC__
+ #include <ATSUnicode.h>
+ #include <TextCommon.h>
+ #include <TextEncodingConverter.h>
-#include "ATSUnicode.h"
-#include "TextCommon.h"
-#include "TextEncodingConverter.h"
-
-#include "wx/mac/private.h" // includes mac headers
-
-typedef struct {
- wxFontEncoding enc ;
- TextEncodingBase mac ;
-} MacCP ;
+ #include "wx/fontutil.h"
+ #include "wx/mac/private.h" // includes mac headers
-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
+#ifdef __WXWINCE__
+ #include "wx/msw/wince/missing.h" // for bsearch()
#endif
-static wxUint16* LINKAGEMODE GetEncTable(wxFontEncoding enc)
+static wxUint16* 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( unsigned 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
wxUint8 c;
} CharsetItem;
-extern "C" int LINKAGEMODE CompareCharsetItems(const void *i1, const void *i2)
+extern "C" int wxCMPFUNC_CONV
+CompareCharsetItems(const void *i1, const void *i2)
{
return ( ((CharsetItem*)i1) -> u - ((CharsetItem*)i2) -> u );
}
-static CharsetItem* LINKAGEMODE BuildReverseTable(wxUint16 *tbl)
+static CharsetItem* BuildReverseTable(wxUint16 *tbl)
{
CharsetItem *rev = new CharsetItem[128];
for (i = 0; i < 128; i++) m_Table[128 + i] = (tchar)in_tbl[i];
return TRUE;
}
- // FIXME: write a substitute for bsearch
-#ifndef __WXWINCE__
else // output !Unicode
{
CharsetItem *rev = BuildReverseTable(out_tbl);
delete[] rev;
}
-#endif // !__WXWINCE__
}
return TRUE;
// Cyrillic
{
- /* unix */ {wxFONTENCODING_KOI8, wxFONTENCODING_ISO8859_5, STOP},
+ /* unix */ {wxFONTENCODING_KOI8, wxFONTENCODING_KOI8_U, wxFONTENCODING_ISO8859_5, STOP},
/* windows */ {wxFONTENCODING_CP1251, STOP},
/* os2 */ {STOP},
/* mac */ {wxFONTENCODING_MACCYRILLIC, STOP}