X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/22f3361e1cf25c52a2da8fdfc5cb081809e18fb9..438959cca892a7651634cc3a7aad4819ac49b23c:/include/wx/encconv.h diff --git a/include/wx/encconv.h b/include/wx/encconv.h index 71b4812e79..bc464785c8 100644 --- a/include/wx/encconv.h +++ b/include/wx/encconv.h @@ -4,20 +4,14 @@ // font encodings // Author: Vaclav Slavik // Copyright: (c) 1999 Vaclav Slavik -// Licence: wxWindows Licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_ENCCONV_H_ #define _WX_ENCCONV_H_ -#if defined(__GNUG__) && !defined(__APPLE__) -#pragma interface "encconv.h" -#endif - #include "wx/defs.h" -#if wxUSE_FONTMAP - #include "wx/object.h" #include "wx/fontenc.h" #include "wx/dynarray.h" @@ -55,15 +49,15 @@ WX_DEFINE_ARRAY_INT(wxFontEncoding, wxFontEncodingArray); // 8bit encodings/charsets. It can also convert from/to Unicode //-------------------------------------------------------------------------------- -class WXDLLEXPORT wxEncodingConverter : public wxObject +class WXDLLIMPEXP_BASE wxEncodingConverter : public wxObject { public: wxEncodingConverter(); - ~wxEncodingConverter() { if (m_Table) delete[] m_Table; } + virtual ~wxEncodingConverter() { if (m_Table) delete[] m_Table; } // Initialize conversion. Both output or input encoding may - // be wxFONTENCODING_UNICODE, but only if wxUSE_WCHAR_T is set to 1. + // be wxFONTENCODING_UNICODE. // // All subsequent calls to Convert() will interpret it's argument // as a string in input_enc encoding and will output string in @@ -82,27 +76,26 @@ class WXDLLEXPORT wxEncodingConverter : public wxObject // try some (lossy) substitutions - e.g. replace // unconvertable latin capitals with acute by ordinary // capitals, replace en-dash or em-dash by '-' etc. - // both modes gurantee that output string will have same length + // both modes guarantee that output string will have same length // as input string // - // Returns FALSE if given conversion is impossible, TRUE otherwise + // Returns false if given conversion is impossible, true otherwise // (conversion may be impossible either if you try to convert - // to Unicode with non-Unicode build of wxWindows or if input + // to Unicode with non-Unicode build of wxWidgets or if input // or output encoding is not supported.) bool Init(wxFontEncoding input_enc, wxFontEncoding output_enc, int method = wxCONVERT_STRICT); // Convert input string according to settings passed to Init. // Note that you must call Init before using Convert! - void Convert(const char* input, char* output); - void Convert(char* str) { Convert(str, str); } - wxString Convert(const wxString& input); - -#if wxUSE_WCHAR_T - void Convert(const char* input, wchar_t* output); - void Convert(const wchar_t* input, char* output); - void Convert(const wchar_t* input, wchar_t* output); - void Convert(wchar_t* str) { Convert(str, str); } -#endif + bool Convert(const char* input, char* output) const; + bool Convert(char* str) const { return Convert(str, str); } + wxString Convert(const wxString& input) const; + + bool Convert(const char* input, wchar_t* output) const; + bool Convert(const wchar_t* input, char* output) const; + bool Convert(const wchar_t* input, wchar_t* output) const; + bool Convert(wchar_t* str) const { return Convert(str, str); } + // Return equivalent(s) for given font that are used // under given platform. wxPLATFORM_CURRENT means the plaform // this binary was compiled for @@ -116,9 +109,9 @@ class WXDLLEXPORT wxEncodingConverter : public wxObject // // Equivalence is defined in terms of convertibility: // 2 encodings are equivalent if you can convert text between - // then without loosing information (it may - and will - happen - // that you loose special chars like quotation marks or em-dashes - // but you shouldn't loose any diacritics and language-specific + // then without losing information (it may - and will - happen + // that you lose special chars like quotation marks or em-dashes + // but you shouldn't lose any diacritics and language-specific // characters when converting between equivalent encodings). // // Convert() method is not limited to converting between @@ -138,19 +131,23 @@ class WXDLLEXPORT wxEncodingConverter : public wxObject // equivalent encodings, regardless the platform, including itself. static wxFontEncodingArray GetAllEquivalents(wxFontEncoding enc); - private: + // Return true if [any text in] one multibyte encoding can be + // converted to another one losslessly. + // + // Do not call this with wxFONTENCODING_UNICODE, it doesn't make + // sense (always works in one sense and always depends on the text + // to convert in the other) + static bool CanConvert(wxFontEncoding encIn, wxFontEncoding encOut) + { + return GetAllEquivalents(encIn).Index(encOut) != wxNOT_FOUND; + } -#if wxUSE_WCHAR_T + private: wchar_t *m_Table; -#else - char *m_Table; -#endif bool m_UnicodeInput, m_UnicodeOutput; bool m_JustCopy; - DECLARE_NO_COPY_CLASS(wxEncodingConverter) + wxDECLARE_NO_COPY_CLASS(wxEncodingConverter); }; -#endif // wxUSE_FONTMAP - #endif // _WX_ENCCONV_H_