| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/encconv.h
 
- // Purpose:     wxEncodingConverter class for converting between different
 
- //              font encodings
 
- // Author:      Vaclav Slavik
 
- // Copyright:   (c) 1999 Vaclav Slavik
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_ENCCONV_H_
 
- #define _WX_ENCCONV_H_
 
- #include "wx/defs.h"
 
- #include "wx/object.h"
 
- #include "wx/fontenc.h"
 
- #include "wx/dynarray.h"
 
- // ----------------------------------------------------------------------------
 
- // constants
 
- // ----------------------------------------------------------------------------
 
- enum
 
- {
 
-     wxCONVERT_STRICT,
 
-     wxCONVERT_SUBSTITUTE
 
- };
 
- enum
 
- {
 
-     wxPLATFORM_CURRENT = -1,
 
-     wxPLATFORM_UNIX = 0,
 
-     wxPLATFORM_WINDOWS,
 
-     wxPLATFORM_OS2,
 
-     wxPLATFORM_MAC
 
- };
 
- // ----------------------------------------------------------------------------
 
- // types
 
- // ----------------------------------------------------------------------------
 
- WX_DEFINE_ARRAY_INT(wxFontEncoding, wxFontEncodingArray);
 
- //--------------------------------------------------------------------------------
 
- // wxEncodingConverter
 
- //                  This class is capable of converting strings between any two
 
- //                  8bit encodings/charsets. It can also convert from/to Unicode
 
- //--------------------------------------------------------------------------------
 
- class WXDLLIMPEXP_BASE wxEncodingConverter : public wxObject
 
- {
 
-     public:
 
-             wxEncodingConverter();
 
-             virtual ~wxEncodingConverter() { if (m_Table) delete[] m_Table; }
 
-             // Initialize conversion. Both output or input encoding may
 
-             // 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
 
-             // 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
 
-             //
 
-             // Method affects behaviour of Convert() in case input character
 
-             // cannot be converted because it does not exist in output encoding:
 
-             //     wxCONVERT_STRICT --
 
-             //              follow behaviour of GNU Recode - just copy unconvertable
 
-             //              characters to output and don't change them (it's integer
 
-             //              value will stay the same)
 
-             //     wxCONVERT_SUBSTITUTE --
 
-             //              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 guarantee that output string will have same length
 
-             //     as input string
 
-             //
 
-             // 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 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!
 
-             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
 
-             //
 
-             // Examples:
 
-             //     current platform          enc    returned value
 
-             // -----------------------------------------------------
 
-             //     unix                   CP1250         {ISO8859_2}
 
-             //     unix                ISO8859_2                  {}
 
-             //     windows             ISO8859_2            {CP1250}
 
-             //
 
-             // Equivalence is defined in terms of convertibility:
 
-             // 2 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).
 
-             //
 
-             // Convert() method is not limited to converting between
 
-             // equivalent encodings, it can convert between arbitrary
 
-             // two encodings!
 
-             //
 
-             // Remember that this function does _NOT_ check for presence of
 
-             // fonts in system. It only tells you what are most suitable
 
-             // encodings. (It usually returns only one encoding)
 
-             //
 
-             // Note that argument enc itself may be present in returned array!
 
-             // (so that you can -- as a side effect -- detect whether the
 
-             // encoding is native for this platform or not)
 
-             static wxFontEncodingArray GetPlatformEquivalents(wxFontEncoding enc, int platform = wxPLATFORM_CURRENT);
 
-             // Similar to GetPlatformEquivalent, but this one will return ALL
 
-             // 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:
 
-             wchar_t *m_Table;
 
-             bool m_UnicodeInput, m_UnicodeOutput;
 
-             bool m_JustCopy;
 
-     wxDECLARE_NO_COPY_CLASS(wxEncodingConverter);
 
- };
 
- #endif  // _WX_ENCCONV_H_
 
 
  |