| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: encconv.h
- // Purpose: interface of wxEncodingConverter
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /**
- @class wxEncodingConverter
- This class is capable of converting strings between two 8-bit encodings/charsets.
- It can also convert from/to Unicode.
- Only a limited subset of encodings is supported by wxEncodingConverter:
- @c wxFONTENCODING_ISO8859_1..15, @c wxFONTENCODING_CP1250..1257 and
- @c wxFONTENCODING_KOI8.
- @note
- Please use wxMBConv classes instead if possible. wxCSConv has much better
- support for various encodings than wxEncodingConverter.
- wxEncodingConverter is useful only if you rely on wxCONVERT_SUBSTITUTE mode
- of operation (see wxEncodingConverter::Init()).
- @library{wxbase}
- @category{conv}
- @see wxFontMapper, wxMBConv, @ref overview_nonenglish
- */
- class wxEncodingConverter : public wxObject
- {
- public:
- /**
- Constructor.
- */
- wxEncodingConverter();
- /**
- Return @true if (any text in) multibyte encoding @a encIn can be converted to
- another one (@a encOut) losslessly.
- Do not call this method with @c wxFONTENCODING_UNICODE as either parameter,
- 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);
- /**
- @name Conversion functions
- @{
- */
- /**
- Convert input string according to settings passed to Init() and writes
- the result to output.
- All the Convert() function overloads return @true if the conversion was
- lossless and @false if at least one of the characters couldn't be converted
- was and replaced with '?' in the output.
- Note that if @c wxCONVERT_SUBSTITUTE was passed to Init(), substitution is
- considered a lossless operation.
- @note You must call Init() before using this method!
- */
- bool Convert(const char* input, char* output) const;
- bool Convert(const wchar_t* input, wchar_t* output) const;
- bool Convert(const char* input, wchar_t* output) const;
- bool Convert(const wchar_t* input, char* output) const;
- /**
- Convert input string according to settings passed to Init() in-place.
- With this overload, the conversion result is written to the same memory
- area from which the input is read.
- See the Convert(const char*,char*) const overload for more info.
- */
- bool Convert(char* str) const;
- /**
- Convert input string according to settings passed to Init() in-place.
- With this overload, the conversion result is written to the same memory
- area from which the input is read.
- See the Convert(const wchar_t*,wchar_t*) const overload for more info.
- */
- bool Convert(wchar_t* str) const;
- /**
- Convert a wxString and return a new wxString object.
- See the Convert(const char*,char*) const overload for more info.
- */
- wxString Convert(const wxString& input) const;
- //@}
- /**
- Similar to GetPlatformEquivalents(), but this one will return ALL
- equivalent encodings, regardless of the platform, and including itself.
- This platform's encodings are before others in the array.
- And again, if @a enc is in the array, it is the very first item in it.
- */
- static wxFontEncodingArray GetAllEquivalents(wxFontEncoding enc);
- /**
- Return equivalents for given font that are used under given platform.
- Supported platforms:
- @li wxPLATFORM_UNIX
- @li wxPLATFORM_WINDOWS
- @li wxPLATFORM_OS2
- @li wxPLATFORM_MAC
- @li wxPLATFORM_CURRENT
- wxPLATFORM_CURRENT means the platform this binary was compiled for.
- Examples:
- @verbatim
- current platform enc returned value
- ----------------------------------------------
- unix CP1250 {ISO8859_2}
- unix ISO8859_2 {ISO8859_2}
- windows ISO8859_2 {CP1250}
- unix CP1252 {ISO8859_1,ISO8859_15}
- @endverbatim
- Equivalence is defined in terms of convertibility: two encodings are
- equivalent if you can convert text between 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).
- Remember that this function does @b NOT check for presence of
- fonts in system. It only tells you what are most suitable
- encodings. (It usually returns only one encoding.)
- @note Note that argument enc itself may be present in the returned array,
- so that you can, as a side-effect, detect whether the encoding is
- native for this platform or not.
- @note Convert() is not limited to converting between equivalent encodings,
- it can convert between two arbitrary encodings.
- @note If @a enc is present in the returned array, then it is always the first
- item of it.
- @note Please note that the returned array may contain no items at all.
- */
- static wxFontEncodingArray GetPlatformEquivalents(wxFontEncoding enc,
- int platform = wxPLATFORM_CURRENT);
- /**
- Initialize the conversion.
- Both output or input encoding may be wxFONTENCODING_UNICODE, but only
- if wxUSE_ENCODING is set to 1.
- All subsequent calls to Convert() will interpret its argument
- as a string in @a input_enc encoding and will output string in
- @a output_enc encoding.
- You must call this method before calling Convert. You may call
- it more than once in order to switch to another conversion.
- @a method affects behaviour of Convert() in case input character
- cannot be converted because it does not exist in output encoding:
- @li @b wxCONVERT_STRICT: follow behaviour of GNU Recode - just copy
- unconvertible characters to output and don't change them
- (its integer value will stay the same)
- @li @b wxCONVERT_SUBSTITUTE: try some (lossy) substitutions - e.g.
- replace unconvertible latin capitals with acute by ordinary
- capitals, replace en-dash or em-dash by '-' etc.
- Both modes guarantee that output string will have same length
- as input string.
- @return @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 wxWidgets or if input
- or output encoding is not supported).
- */
- bool Init(wxFontEncoding input_enc, wxFontEncoding output_enc,
- int method = wxCONVERT_STRICT);
- };
|