+
+// wxNativeFontInfo is platform-specific font representation: this struct
+// should be considered as opaque font description only used by the native
+// functions, the user code can only get the objects of this type from
+// somewhere and pass it somewhere else (possibly save them somewhere using
+// ToString() and restore them using FromString())
+struct wxNativeFontInfo
+{
+#ifdef __WXGTK__
+ // init the elements from an XLFD, return TRUE if ok
+ bool FromXFontName(const wxString& xFontName);
+
+ // return false if we were never initialized with a valid XLFD
+ bool IsDefault() const;
+
+ // generate an XLFD using the fontElements
+ wxString GetXFontName() const;
+
+ // set the XFLD
+ void SetXFontName(const wxString& xFontName);
+#endif
+
+ wxNativeFontInfo() { Init(); }
+
+ // reset to the default state
+ void Init();
+
+#ifndef __WXGTK__
+ // accessors and modifiers for the font elements
+ int GetPointSize() const;
+ wxFontStyle GetStyle() const;
+ wxFontWeight GetWeight() const;
+ bool GetUnderlined() const;
+ wxString GetFaceName() const;
+ wxFontFamily GetFamily() const;
+ wxFontEncoding GetEncoding() const;
+
+ void SetPointSize(int pointsize);
+ void SetStyle(wxFontStyle style);
+ void SetWeight(wxFontWeight weight);
+ void SetUnderlined(bool underlined);
+ void SetFaceName(wxString facename);
+ void SetFamily(wxFontFamily family);
+ void SetEncoding(wxFontEncoding encoding);
+#endif
+
+ // it is important to be able to serialize wxNativeFontInfo objects to be
+ // able to store them (in config file, for example)
+ bool FromString(const wxString& s);
+ wxString ToString() const;
+
+ %addmethods {
+ wxString __str__() {
+ return self->ToString();
+ }
+ }
+
+ // we also want to present the native font descriptions to the user in some
+ // human-readable form (it is not platform independent neither, but can
+ // hopefully be understood by the user)
+ bool FromUserString(const wxString& s);
+ wxString ToUserString() const;
+};
+
+
+// wxFontMapper manages user-definable correspondence between logical font
+// names and the fonts present on the machine.
+//
+// The default implementations of all functions will ask the user if they are
+// not capable of finding the answer themselves and store the answer in a
+// config file (configurable via SetConfigXXX functions). This behaviour may
+// be disabled by giving the value of FALSE to "interactive" parameter.
+// However, the functions will always consult the config file to allow the
+// user-defined values override the default logic and there is no way to
+// disable this - which shouldn't be ever needed because if "interactive" was
+// never TRUE, the config file is never created anyhow.
+class wxFontMapper
+{
+public:
+ wxFontMapper();
+ ~wxFontMapper();
+
+
+ // find an alternative for the given encoding (which is supposed to not be
+ // available on this system). If successful, return TRUE and rwxFontEcoding
+ // that can be used it wxFont ctor otherwise return FALSE
+ //bool GetAltForEncoding(wxFontEncoding encoding,
+ // wxFontEncoding *alt_encoding,
+ // const wxString& facename = wxEmptyString,
+ // bool interactive = TRUE);
+
+
+ // Find an alternative for the given encoding (which is supposed to not be
+ // available on this system). If successful, returns the encoding otherwise
+ // returns None.
+ %addmethods {
+ PyObject* GetAltForEncoding(wxFontEncoding encoding,
+ const wxString& facename = wxEmptyString,
+ bool interactive = TRUE) {
+ wxFontEncoding alt_enc;
+ if (self->GetAltForEncoding(encoding, &alt_enc, facename, interactive))
+ return PyInt_FromLong(alt_enc);
+ else {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+ }
+ }
+
+
+ // checks whether given encoding is available in given face or not.
+ // If no facename is given,
+ bool IsEncodingAvailable(wxFontEncoding encoding,
+ const wxString& facename = wxEmptyString);
+
+ // returns the encoding for the given charset (in the form of RFC 2046) or
+ // wxFONTENCODING_SYSTEM if couldn't decode it
+ wxFontEncoding CharsetToEncoding(const wxString& charset,
+ bool interactive = TRUE);
+
+ // return internal string identifier for the encoding (see also
+ // GetEncodingDescription())
+ static wxString GetEncodingName(wxFontEncoding encoding);
+
+ // return user-readable string describing the given encoding
+ //
+ // NB: hard-coded now, but might change later (read it from config?)
+ static wxString GetEncodingDescription(wxFontEncoding encoding);
+
+ // the parent window for modal dialogs
+ void SetDialogParent(wxWindow *parent);
+
+ // the title for the dialogs (note that default is quite reasonable)
+ void SetDialogTitle(const wxString& title);
+
+ // functions which allow to configure the config object used: by default,
+ // the global one (from wxConfigBase::Get() will be used) and the default
+ // root path for the config settings is the string returned by
+ // GetDefaultConfigPath()
+
+
+ // set the config object to use (may be NULL to use default)
+ void SetConfig(wxConfigBase *config);
+
+ // set the root config path to use (should be an absolute path)
+ void SetConfigPath(const wxString& prefix);
+
+ // return default config path
+ static const wxChar *GetDefaultConfigPath();
+};
+
+
+
+
+class wxFont : public wxGDIObject {