X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b8f72dedd302da4378b59ff8f3cc5b72f5cb42af..82eda5ecd0f9e37acc8ed27451000ae58152226d:/include/wx/encconv.h diff --git a/include/wx/encconv.h b/include/wx/encconv.h index ca991709e0..d99eaea5e2 100644 --- a/include/wx/encconv.h +++ b/include/wx/encconv.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: encconv.h +// Name: wx/encconv.h // Purpose: wxEncodingConverter class for converting between different // font encodings // Author: Vaclav Slavik @@ -7,26 +7,34 @@ // Licence: wxWindows Licence ///////////////////////////////////////////////////////////////////////////// -#ifndef __ENCCONV_H__ -#define __ENCCONV_H__ +#ifndef _WX_ENCCONV_H_ +#define _WX_ENCCONV_H_ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "encconv.h" #endif #include "wx/defs.h" -#include "wx/font.h" -#include "wx/dynarray.h" +#if wxUSE_FONTMAP + +#include "wx/object.h" +#include "wx/fontenc.h" +#include "wx/dynarray.h" +// ---------------------------------------------------------------------------- +// constants +// ---------------------------------------------------------------------------- -enum { +enum +{ wxCONVERT_STRICT, wxCONVERT_SUBSTITUTE }; -enum { +enum +{ wxPLATFORM_CURRENT = -1, wxPLATFORM_UNIX = 0, @@ -35,8 +43,11 @@ enum { wxPLATFORM_MAC }; -WX_DEFINE_ARRAY(wxFontEncoding, wxFontEncodingArray); +// ---------------------------------------------------------------------------- +// types +// ---------------------------------------------------------------------------- +WX_DEFINE_ARRAY_INT(wxFontEncoding, wxFontEncodingArray); //-------------------------------------------------------------------------------- // wxEncodingConverter @@ -44,15 +55,15 @@ WX_DEFINE_ARRAY(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; } - // Initialize convertion. Both output or input encoding may - // be wxFONTENCODING_UNICODE, but only if wxUSE_UNICODE is set to 1. + // Initialize conversion. Both output or input encoding may + // be wxFONTENCODING_UNICODE, but only if wxUSE_WCHAR_T is set to 1. // // All subsequent calls to Convert() will interpret it's argument // as a string in input_enc encoding and will output string in @@ -82,15 +93,15 @@ class WXDLLEXPORT wxEncodingConverter : public wxObject // Convert input string according to settings passed to Init. // Note that you must call Init before using Convert! - void Convert(const wxChar* input, wxChar* output); - void Convert(wxChar* str) { Convert(str, str); } - wxString Convert(const wxString& input); - -#if wxUSE_UNICODE // otherwise wxChar === char - void Convert(const char* input, wxChar* output); - void Convert(const wxChar* input, char* output); - void Convert(const char* input, char* output); - void Convert(char* str) { Convert(str, str); } + void Convert(const char* input, char* output) const; + void Convert(char* str) const { Convert(str, str); } + wxString Convert(const wxString& input) const; + +#if wxUSE_WCHAR_T + void Convert(const char* input, wchar_t* output) const; + void Convert(const wchar_t* input, char* output) const; + void Convert(const wchar_t* input, wchar_t* output) const; + void Convert(wchar_t* str) const { Convert(str, str); } #endif // Return equivalent(s) for given font that are used // under given platform. wxPLATFORM_CURRENT means the plaform @@ -127,30 +138,30 @@ class WXDLLEXPORT wxEncodingConverter : public wxObject // equivalent encodings, regardless the platform, including itself. static wxFontEncodingArray GetAllEquivalents(wxFontEncoding enc); + // 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; + } + private: - wxChar *m_Table; +#if wxUSE_WCHAR_T + wchar_t *m_Table; +#else + char *m_Table; +#endif bool m_UnicodeInput, m_UnicodeOutput; bool m_JustCopy; + DECLARE_NO_COPY_CLASS(wxEncodingConverter) }; +#endif // wxUSE_FONTMAP -#endif // __ENCCONV_H__ - - - - - - - - - - - - - - - - - +#endif // _WX_ENCCONV_H_