X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3c1866e88fb77fc7e0b349cc15f6cebf0f727a9d..695237bccd652c60deba347117ba5ab32067880c:/include/wx/fontmap.h diff --git a/include/wx/fontmap.h b/include/wx/fontmap.h index 7c2ee4ba85..ba5403b81d 100644 --- a/include/wx/fontmap.h +++ b/include/wx/fontmap.h @@ -20,11 +20,11 @@ // headers // ---------------------------------------------------------------------------- -#include "wx/defs.h" // for wxDEFAULT &c - -#include "wx/font.h" // for wxFontEncoding +#include "wx/font.h" // for wxFont and wxFontEncoding +#include "wx/fontutil.h" // for wxNativeEncodingInfo class WXDLLEXPORT wxConfigBase; +class WXDLLEXPORT wxWindow; // ---------------------------------------------------------------------------- // wxFontMapper manages user-definable correspondence between logical font @@ -49,14 +49,51 @@ public: // virtual dtor for a base class virtual ~wxFontMapper(); + // find an alternative for the given encoding (which is supposed to not be + // available on this system). If successful, return TRUE and fill info + // structure with the parameters required to create the font, otherwise + // return FALSE + virtual bool GetAltForEncoding(wxFontEncoding encoding, + wxNativeEncodingInfo *info, + const wxString& facename = wxEmptyString, + bool interactive = TRUE); + + // version better suitable for 'public' use. Returns wxFontEcoding + // that can be used it wxFont ctor + bool GetAltForEncoding(wxFontEncoding encoding, + wxFontEncoding *alt_encoding, + const wxString& facename = wxEmptyString, + bool interactive = TRUE); + + // checks whether given encoding is available in given face or not. + // If no facename is given, + virtual 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 virtual wxFontEncoding CharsetToEncoding(const wxString& charset, bool interactive = TRUE); + // encoding names + // -------------- + + // 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); + // configure the appearance of the dialogs we may popup // ---------------------------------------------------- + // the parent window for modal dialogs + void SetDialogParent(wxWindow *parent) { m_windowParent = parent; } + + // the title for the dialogs (note that default is quite reasonable) void SetDialogTitle(const wxString& title) { m_titleDialog = title; } // functions which allow to configure the config object used: by default, @@ -94,6 +131,17 @@ protected: // restore the config path after use void RestorePath(const wxString& pathOld); + // GetAltForEncoding() helper: tests for the existence of the given + // encoding and saves the result in config if ok - this results in the + // following (desired) behaviour: when an unknown/unavailable encoding is + // requested for the first time, the user is asked about a replacement, + // but if he doesn't choose any and the default logic finds one, it will + // be saved in the config so that the user won't be asked about it any + // more + bool TestAltEncoding(const wxString& configEntry, + wxFontEncoding encReplacement, + wxNativeEncodingInfo *info); + // config object and path (in it) to use wxConfigBase *m_config; wxString m_configRootPath; @@ -103,6 +151,15 @@ protected: // the parent window for our dialogs wxWindow *m_windowParent; + + friend class wxFontMapperPathChanger; }; +// ---------------------------------------------------------------------------- +// global variables +// ---------------------------------------------------------------------------- + +// the default font mapper for wxWindows programs +WXDLLEXPORT_DATA(extern wxFontMapper *) wxTheFontMapper; + #endif // _WX_FONTMAPPER_H_