X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1c193821a999730fbf6a9bea83763f37daae68f1..fc5414a1c6c55fcf9fd7f5bffb09b9b9eaf1d4bf:/src/common/fmapbase.cpp?ds=sidebyside diff --git a/src/common/fmapbase.cpp b/src/common/fmapbase.cpp index fa6dcd0d65..e9b303613c 100644 --- a/src/common/fmapbase.cpp +++ b/src/common/fmapbase.cpp @@ -43,7 +43,8 @@ #include "wx/apptrait.h" #include "wx/module.h" -#if wxUSE_CONFIG +// wxMemoryConfig uses wxFileConfig +#if wxUSE_CONFIG && wxUSE_FILECONFIG #include "wx/config.h" #include "wx/memconf.h" #endif @@ -86,6 +87,12 @@ static wxFontEncoding gs_encodings[] = wxFONTENCODING_CP437, wxFONTENCODING_UTF7, wxFONTENCODING_UTF8, + wxFONTENCODING_UTF16, + wxFONTENCODING_UTF16BE, + wxFONTENCODING_UTF16LE, + wxFONTENCODING_UTF32, + wxFONTENCODING_UTF32BE, + wxFONTENCODING_UTF32LE, wxFONTENCODING_EUC_JP, }; @@ -123,6 +130,12 @@ static const wxChar* gs_encodingDescs[] = wxTRANSLATE( "Windows/DOS OEM (CP 437)" ), wxTRANSLATE( "Unicode 7 bit (UTF-7)" ), wxTRANSLATE( "Unicode 8 bit (UTF-8)" ), + wxTRANSLATE( "Unicode 16 bit (UTF-16)" ), + wxTRANSLATE( "Unicode 16 bit Big Endian (UTF-16BE)" ), + wxTRANSLATE( "Unicode 16 bit Little Endian (UTF-16LE)" ), + wxTRANSLATE( "Unicode 32 bit (UTF-32)" ), + wxTRANSLATE( "Unicode 32 bit Big Endian (UTF-32BE)" ), + wxTRANSLATE( "Unicode 32 bit Little Endian (UTF-32LE)" ), wxTRANSLATE( "Extended Unix Codepage for Japanese (EUC-JP)" ), }; @@ -160,6 +173,12 @@ static const wxChar* gs_encodingNames[] = 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" ), }; @@ -197,7 +216,7 @@ wxFontMapper *wxFontMapperBase::sm_instance = NULL; wxFontMapperBase::wxFontMapperBase() { -#if wxUSE_CONFIG +#if wxUSE_CONFIG && wxUSE_FILECONFIG m_config = NULL; m_configIsDummy = FALSE; #endif // wxUSE_CONFIG @@ -205,7 +224,7 @@ wxFontMapperBase::wxFontMapperBase() wxFontMapperBase::~wxFontMapperBase() { -#if wxUSE_CONFIG +#if wxUSE_CONFIG && wxUSE_FILECONFIG if ( m_configIsDummy ) delete m_config; #endif // wxUSE_CONFIG @@ -244,7 +263,7 @@ wxFontMapper *wxFontMapperBase::Set(wxFontMapper *mapper) return old; } -#if wxUSE_CONFIG +#if wxUSE_CONFIG && wxUSE_FILECONFIG // ---------------------------------------------------------------------------- // config usage customisation @@ -352,6 +371,8 @@ void wxFontMapperBase::RestorePath(const wxString& pathOld) GetConfig()->SetPath(pathOld); } +#endif + // ---------------------------------------------------------------------------- // charset/encoding correspondence // ---------------------------------------------------------------------------- @@ -359,13 +380,27 @@ void wxFontMapperBase::RestorePath(const wxString& pathOld) wxFontEncoding wxFontMapperBase::CharsetToEncoding(const wxString& charset, bool WXUNUSED(interactive)) +{ + int enc = NonInteractiveCharsetToEncoding(charset); + if ( enc == wxFONTENCODING_UNKNOWN ) + { + // we should return wxFONTENCODING_SYSTEM from here for unknown + // encodings + enc = wxFONTENCODING_SYSTEM; + } + + return (wxFontEncoding)enc; +} + +int +wxFontMapperBase::NonInteractiveCharsetToEncoding(const wxString& charset) { wxFontEncoding encoding = wxFONTENCODING_SYSTEM; // we're going to modify it, make a copy wxString cs = charset; -#if wxUSE_CONFIG +#if wxUSE_CONFIG && wxUSE_FILECONFIG // first try the user-defined settings wxFontMapperPathChanger path(this, FONTMAPPER_CHARSET_PATH); if ( path.IsOk() ) @@ -379,7 +414,7 @@ wxFontMapperBase::CharsetToEncoding(const wxString& charset, if ( value == wxFONTENCODING_UNKNOWN ) { // don't try to find it, in particular don't ask the user - return wxFONTENCODING_SYSTEM; + return value; } if ( value >= 0 && value <= wxFONTENCODING_MAX ) @@ -438,6 +473,30 @@ wxFontMapperBase::CharsetToEncoding(const wxString& charset, { 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; @@ -641,7 +700,5 @@ wxString wxFontMapperBase::GetEncodingName(wxFontEncoding encoding) return str; } -#endif // wxUSE_CONFIG - #endif // wxUSE_FONTMAP