wxWidgets/interface/encconv.h

123 lines
4.6 KiB
C
Raw Normal View History

/////////////////////////////////////////////////////////////////////////////
// Name: encconv.h
// Purpose: interface of wxEncodingConverter
// Author: wxWidgets team
// RCS-ID: $Id$
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
/**
@class wxEncodingConverter
@wxheader{encconv.h}
This class is capable of converting strings between two
8-bit encodings/charsets. It can also convert from/to Unicode (but only
if you compiled wxWidgets with wxUSE_WCHAR_T set to 1). Only a limited subset
of encodings is supported by wxEncodingConverter:
@c wxFONTENCODING_ISO8859_1..15, @c wxFONTENCODING_CP1250..1257 and
@c wxFONTENCODING_KOI8.
@library{wxbase}
@category{misc}
@see wxFontMapper, wxMBConv, @ref overview_nonenglishoverview "Writing
non-English applications"
*/
class wxEncodingConverter : public wxObject
{
public:
/**
Constructor.
*/
wxEncodingConverter();
/**
Return @true if (any text in) multibyte encoding @a encIn can be converted to
another one (@e 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);
//@{
/**
Convert wxString and return new wxString object.
*/
bool Convert(const char* input, char* output) const;
const bool Convert(const wchar_t* input, wchar_t* output) const;
const bool Convert(const char* input, wchar_t* output) const;
const bool Convert(const wchar_t* input, char* output) const;
const bool Convert(char* str) const;
const bool Convert(wchar_t* str) const;
const 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:
wxPLATFORM_UNIX
wxPLATFORM_WINDOWS
wxPLATFORM_OS2
wxPLATFORM_MAC
wxPLATFORM_CURRENT
wxPLATFORM_CURRENT means the platform this binary was compiled for.
Examples:
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.)
*/
static wxFontEncodingArray GetPlatformEquivalents(wxFontEncoding enc,
int platform = wxPLATFORM_CURRENT);
/**
Initialize 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.
@e Method affects behaviour of Convert() in case input character
cannot be converted because it does not exist in output encoding:
@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)
@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.
*/
bool Init(wxFontEncoding input_enc, wxFontEncoding output_enc,
int method = wxCONVERT_STRICT);
};