wxFONTENCODING_ISO8859_15,
wxFONTENCODING_KOI8,
wxFONTENCODING_KOI8_U,
+ wxFONTENCODING_CP874,
wxFONTENCODING_CP932,
wxFONTENCODING_CP936,
wxFONTENCODING_CP949,
wxFONTENCODING_UTF32BE,
wxFONTENCODING_UTF32LE,
wxFONTENCODING_EUC_JP,
+ wxFONTENCODING_DEFAULT,
+ wxFONTENCODING_BIG5,
+ wxFONTENCODING_SHIFT_JIS,
+ wxFONTENCODING_GB2312,
};
// the descriptions for them
wxTRANSLATE( "Western European with Euro (ISO-8859-15)" ),
wxTRANSLATE( "KOI8-R" ),
wxTRANSLATE( "KOI8-U" ),
+ wxTRANSLATE( "Windows Thai (CP 874)" ),
wxTRANSLATE( "Windows Japanese (CP 932)" ),
wxTRANSLATE( "Windows Chinese Simplified (CP 936)" ),
wxTRANSLATE( "Windows Korean (CP 949)" ),
wxTRANSLATE( "Unicode 32 bit Big Endian (UTF-32BE)" ),
wxTRANSLATE( "Unicode 32 bit Little Endian (UTF-32LE)" ),
wxTRANSLATE( "Extended Unix Codepage for Japanese (EUC-JP)" ),
+ wxTRANSLATE( "US-ASCII" ),
+ wxTRANSLATE( "BIG5" ),
+ wxTRANSLATE( "SHIFT-JIS" ),
+ wxTRANSLATE( "GB-2312" ),
};
// and the internal names (these are not translated on purpose!)
-static const wxChar* gs_encodingNames[] =
+static const wxChar* gs_encodingNames[WXSIZEOF(gs_encodingDescs)][10] =
{
- wxT( "iso-8859-1" ),
- wxT( "iso-8859-2" ),
- wxT( "iso-8859-3" ),
- wxT( "iso-8859-4" ),
- wxT( "iso-8859-5" ),
- wxT( "iso-8859-6" ),
- wxT( "iso-8859-7" ),
- wxT( "iso-8859-8" ),
- wxT( "iso-8859-9" ),
- wxT( "iso-8859-10" ),
- wxT( "iso-8859-11" ),
- wxT( "iso-8859-12" ),
- wxT( "iso-8859-13" ),
- wxT( "iso-8859-14" ),
- wxT( "iso-8859-15" ),
- wxT( "koi8-r" ),
- wxT( "koi8-u" ),
- wxT( "windows-932" ),
- wxT( "windows-936" ),
- wxT( "windows-949" ),
- wxT( "windows-950" ),
- wxT( "windows-1250" ),
- wxT( "windows-1251" ),
- wxT( "windows-1252" ),
- wxT( "windows-1253" ),
- wxT( "windows-1254" ),
- wxT( "windows-1255" ),
- wxT( "windows-1256" ),
- wxT( "windows-1257" ),
- wxT( "windows-437" ),
- wxT( "utf-7" ),
- wxT( "utf-8" ),
- wxT( "utf-16" ),
- wxT( "utf-16be" ),
- wxT( "utf-16le" ),
- wxT( "utf-32" ),
- wxT( "utf-32be" ),
- wxT( "utf-32le" ),
- wxT( "euc-jp" ),
+ // names from the columns correspond to these OS:
+ // Linux Solaris and IRIX HP-UX AIX
+ { _T("ISO-8859-1"), _T("ISO8859-1"), _T("iso88591"), _T("8859-1"), wxT("iso_8859_1"), NULL },
+ { _T("ISO-8859-2"), _T("ISO8859-2"), _T("iso88592"), _T("8859-2"), NULL },
+ { _T("ISO-8859-3"), _T("ISO8859-3"), _T("iso88593"), _T("8859-3"), NULL },
+ { _T("ISO-8859-4"), _T("ISO8859-4"), _T("iso88594"), _T("8859-4"), NULL },
+ { _T("ISO-8859-5"), _T("ISO8859-5"), _T("iso88595"), _T("8859-5"), NULL },
+ { _T("ISO-8859-6"), _T("ISO8859-6"), _T("iso88596"), _T("8859-6"), NULL },
+ { _T("ISO-8859-7"), _T("ISO8859-7"), _T("iso88597"), _T("8859-7"), NULL },
+ { _T("ISO-8859-8"), _T("ISO8859-8"), _T("iso88598"), _T("8859-8"), NULL },
+ { _T("ISO-8859-9"), _T("ISO8859-9"), _T("iso88599"), _T("8859-9"), NULL },
+ { _T("ISO-8859-10"), _T("ISO8859-10"), _T("iso885910"), _T("8859-10"), NULL },
+ { _T("ISO-8859-11"), _T("ISO8859-11"), _T("iso885911"), _T("8859-11"), NULL },
+ { _T("ISO-8859-12"), _T("ISO8859-12"), _T("iso885912"), _T("8859-12"), NULL },
+ { _T("ISO-8859-13"), _T("ISO8859-13"), _T("iso885913"), _T("8859-13"), NULL },
+ { _T("ISO-8859-14"), _T("ISO8859-14"), _T("iso885914"), _T("8859-14"), NULL },
+ { _T("ISO-8859-15"), _T("ISO8859-15"), _T("iso885915"), _T("8859-15"), NULL },
+
+ // although koi8-ru is not strictly speaking the same as koi8-r,
+ // they are similar enough to make mapping it to koi8 better than
+ // not recognizing it at all
+ { wxT( "KOI8-R" ), wxT( "KOI8-RU" ), NULL },
+ { wxT( "KOI8-U" ), NULL },
+
+ { wxT( "WINDOWS-874" ), wxT( "CP-874" ), NULL },
+ { wxT( "WINDOWS-932" ), wxT( "CP-932" ), NULL },
+ { wxT( "WINDOWS-936" ), wxT( "CP-936" ), NULL },
+ { wxT( "WINDOWS-949" ), wxT( "CP-949" ), wxT( "EUC-KR" ), wxT( "eucKR" ), wxT( "euc_kr" ), NULL },
+ { wxT( "WINDOWS-950" ), wxT( "CP-950" ), NULL },
+ { wxT( "WINDOWS-1250" ),wxT( "CP-1250" ), NULL },
+ { wxT( "WINDOWS-1251" ),wxT( "CP-1251" ), NULL },
+ { wxT( "WINDOWS-1252" ),wxT( "CP-1252" ), wxT("IBM-1252"), NULL },
+ { wxT( "WINDOWS-1253" ),wxT( "CP-1253" ), NULL },
+ { wxT( "WINDOWS-1254" ),wxT( "CP-1254" ), NULL },
+ { wxT( "WINDOWS-1255" ),wxT( "CP-1255" ), NULL },
+ { wxT( "WINDOWS-1256" ),wxT( "CP-1256" ), NULL },
+ { wxT( "WINDOWS-1257" ),wxT( "CP-1257" ), NULL },
+ { wxT( "WINDOWS-437" ), wxT( "CP-437" ), NULL },
+
+ { wxT( "UTF-7" ), wxT("utf7"), NULL },
+ { wxT( "UTF-8" ), wxT("utf8"), NULL },
+ { wxT( "UTF-16" ), wxT("UCS-2"), wxT("UCS2"), NULL },
+ { wxT( "UTF-16BE" ), wxT("UCS-2BE"), NULL },
+ { wxT( "UTF-16LE" ), wxT("UCS-2LE"), NULL },
+ { wxT( "UTF-32" ), wxT( "UCS-4" ), wxT("UCS4"), NULL },
+ { wxT( "UTF-32BE" ), wxT( "UCS-4BE" ), NULL },
+ { wxT( "UTF-32LE" ), wxT( "UCS-4LE" ), NULL },
+
+ { wxT( "EUC-JP" ), wxT( "eucJP" ), wxT( "euc_jp" ), wxT( "IBM-eucJP" ), NULL },
+
+ // 646 is for Solaris, roman8 -- for HP-UX
+ { wxT( "US-ASCII" ), wxT( "ASCII" ), wxT("C"), wxT("POSIX"), wxT("ANSI_X3.4-1968"),
+ wxT("646"), wxT("roman8"), wxT( "" ), NULL },
+
+ { wxT( "BIG5" ), wxT("big5"), NULL },
+ { wxT( "SJIS" ), wxT( "SHIFT-JIS" ), wxT( "SHIFT_JIS" ), NULL },
+ { wxT( "GB2312" ), NULL },
};
-wxCOMPILE_TIME_ASSERT( WXSIZEOF(gs_encodingDescs) == WXSIZEOF(gs_encodings) &&
- WXSIZEOF(gs_encodingNames) == WXSIZEOF(gs_encodings),
- EncodingsArraysNotInSync );
+wxCOMPILE_TIME_ASSERT( WXSIZEOF(gs_encodingDescs) == WXSIZEOF(gs_encodings), EncodingsArraysNotInSync );
+wxCOMPILE_TIME_ASSERT( WXSIZEOF(gs_encodingNames) == WXSIZEOF(gs_encodings), EncodingsArraysNotInSync );
// ----------------------------------------------------------------------------
// private classes
public:
wxFontMapperModule() : wxModule() { }
virtual bool OnInit() { return true; }
- virtual void OnExit() { delete wxFontMapper::Set(NULL); }
+ virtual void OnExit() { delete (wxFontMapperBase*)wxFontMapperBase::Set(NULL); }
DECLARE_DYNAMIC_CLASS(wxFontMapperModule)
};
#endif // wxUSE_CONFIG
}
+bool wxFontMapperBase::IsWxFontMapper()
+{ return false; }
+
/* static */
-wxFontMapper *wxFontMapperBase::Get()
+wxFontMapperBase *wxFontMapperBase::Get()
{
if ( !sm_instance )
{
}
}
- return sm_instance;
+ return (wxFontMapperBase*)sm_instance;
}
/* static */
}
}
- cs.MakeUpper();
-
- if ( cs.empty() || cs == _T("US-ASCII") )
- {
- encoding = wxFONTENCODING_DEFAULT;
- }
- else if ( cs == wxT("UTF-7") )
- {
- encoding = wxFONTENCODING_UTF7;
- }
- else if ( cs == wxT("UTF-8") )
- {
- encoding = wxFONTENCODING_UTF8;
- }
- else if ( cs == wxT("UTF-16") )
- {
- encoding = wxFONTENCODING_UTF16;
- }
- else if ( cs == wxT("UTF-16BE") )
- {
- encoding = wxFONTENCODING_UTF16BE;
- }
- else if ( cs == wxT("UTF-16LE") )
- {
- encoding = wxFONTENCODING_UTF16LE;
- }
- else if ( cs == wxT("UTF-32") || cs == wxT("UCS-4") )
- {
- encoding = wxFONTENCODING_UTF32;
- }
- else if ( cs == wxT("UTF-32BE") || cs == wxT("UCS-4BE") )
- {
- encoding = wxFONTENCODING_UTF32BE;
- }
- else if ( cs == wxT("UTF-32LE") || cs == wxT("UCS-4LE") )
- {
- encoding = wxFONTENCODING_UTF32LE;
- }
- else if ( cs == wxT("GB2312") )
- {
- encoding = wxFONTENCODING_GB2312;
- }
- else if ( cs == wxT("BIG5") )
- {
- encoding = wxFONTENCODING_BIG5;
- }
- else if ( cs == wxT("SJIS") ||
- cs == wxT("SHIFT_JIS") ||
- cs == wxT("SHIFT-JIS") )
- {
- encoding = wxFONTENCODING_SHIFT_JIS;
- }
- else if ( cs == wxT("EUC-JP") ||
- cs == wxT("EUC_JP") )
- {
- encoding = wxFONTENCODING_EUC_JP;
- }
- else if ( cs == wxT("EUC-KR") ||
- cs == wxT("EUC_KR") )
- {
- encoding = wxFONTENCODING_CP949;
- }
- else if ( cs == wxT("KOI8-R") ||
- cs == wxT("KOI8-RU") )
+ for ( size_t i = 0; i < WXSIZEOF(gs_encodingNames); ++i )
{
- // although koi8-ru is not strictly speaking the same as koi8-r,
- // they are similar enough to make mapping it to koi8 better than
- // not recognizing it at all
- encoding = wxFONTENCODING_KOI8;
- }
- else if ( cs == wxT("KOI8-U") )
- {
- encoding = wxFONTENCODING_KOI8_U;
+ for ( const wxChar** encName = gs_encodingNames[i]; *encName; ++encName )
+ {
+ if ( cs.CmpNoCase(*encName) == 0 )
+ return gs_encodings[i];
+ }
}
- else if ( cs.Left(3) == wxT("ISO") )
+
+ cs.MakeUpper();
+
+ if ( cs.Left(3) == wxT("ISO") )
{
// the dash is optional (or, to be exact, it is not, but
// several brokenmails "forget" it)
if ( *p == wxT('-') )
p++;
- int value;
+ unsigned int value;
if ( wxSscanf(p, wxT("%u"), &value) == 1 )
{
if ( value >= 1250 )
switch ( value )
{
+ case 874:
+ encoding = wxFONTENCODING_CP874;
+ break;
+
case 932:
encoding = wxFONTENCODING_CP932;
break;
{
if ( gs_encodings[i] == encoding )
{
- return gs_encodingNames[i];
+ return gs_encodingNames[i][0];
}
}
}
/* static */
-wxFontEncoding wxFontMapperBase::GetEncodingFromName(const wxString& name)
+const wxChar** wxFontMapperBase::GetAllEncodingNames(wxFontEncoding encoding)
{
- const size_t count = WXSIZEOF(gs_encodingNames);
+ static const wxChar* dummy[] = { NULL };
- for ( size_t i = 0; i < count; i++ )
+ for ( size_t i = 0; i < WXSIZEOF(gs_encodingNames); i++ )
{
- if ( gs_encodingNames[i] == name )
+ if ( gs_encodings[i] == encoding )
{
- return gs_encodings[i];
+ return gs_encodingNames[i];
}
}
- if ( name == _("default") )
+ return dummy;
+}
+
+/* static */
+wxFontEncoding wxFontMapperBase::GetEncodingFromName(const wxString& name)
+{
+ const size_t count = WXSIZEOF(gs_encodingNames);
+
+ for ( size_t i = 0; i < count; i++ )
{
- return wxFONTENCODING_DEFAULT;
+ for ( const wxChar** encName = gs_encodingNames[i]; *encName; ++encName )
+ {
+ if ( name.CmpNoCase(*encName) == 0 )
+ return gs_encodings[i];
+ }
}
return wxFONTENCODING_MAX;