]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/fontmap.h
attempt to fix first click problem
[wxWidgets.git] / include / wx / fontmap.h
index e5dc01d6e09305474042c8f50bafa8e2ab2e4796..af3e7b560370580598bfd7f62a4c71e018cfdc60 100644 (file)
@@ -6,13 +6,13 @@
 // Created:     04.11.99
 // RCS-ID:      $Id$
 // Copyright:   (c) Vadim Zeitlin
 // Created:     04.11.99
 // RCS-ID:      $Id$
 // Copyright:   (c) Vadim Zeitlin
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef _WX_FONTMAPPER_H_
 #define _WX_FONTMAPPER_H_
 
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef _WX_FONTMAPPER_H_
 #define _WX_FONTMAPPER_H_
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
     #pragma interface "fontmap.h"
 #endif
 
     #pragma interface "fontmap.h"
 #endif
 
 // headers
 // ----------------------------------------------------------------------------
 
 // headers
 // ----------------------------------------------------------------------------
 
-#include "wx/font.h"        // for wxFont and wxFontEncoding
-#include "wx/fontutil.h"    // for wxNativeEncodingInfo
+#if wxUSE_FONTMAP
 
 
-class WXDLLEXPORT wxConfigBase;
-class WXDLLEXPORT wxWindow;
+#include "wx/fontenc.h"         // for wxFontEncoding
+
+#if wxUSE_GUI
+    #include "wx/fontutil.h"    // for wxNativeEncodingInfo
+#endif // wxUSE_GUI
+
+#if wxUSE_CONFIG
+    class WXDLLEXPORT wxConfigBase;
+#endif // wxUSE_CONFIG
+
+#if wxUSE_GUI
+    class WXDLLEXPORT wxWindow;
+#endif // wxUSE_GUI
 
 // ----------------------------------------------------------------------------
 // wxFontMapper manages user-definable correspondence between logical font
 
 // ----------------------------------------------------------------------------
 // wxFontMapper manages user-definable correspondence between logical font
@@ -49,14 +59,34 @@ public:
     // virtual dtor for a base class
     virtual ~wxFontMapper();
 
     // virtual dtor for a base class
     virtual ~wxFontMapper();
 
+    // return instance of the wxFontMapper singleton
+    static wxFontMapper *Get();
+    // set the sigleton to 'mapper' instance and return previous one
+    static wxFontMapper *Set(wxFontMapper *mapper);
+
+#if wxUSE_GUI
     // 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,
     // 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);
 
                                    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);
+#endif // wxUSE_GUI
+
     // 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,
     // 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,
@@ -77,11 +107,13 @@ public:
     // configure the appearance of the dialogs we may popup
     // ----------------------------------------------------
 
     // configure the appearance of the dialogs we may popup
     // ----------------------------------------------------
 
+#if wxUSE_GUI
     // 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; }
     // 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; }
+#endif // wxUSE_GUI
 
     // functions which allow to configure the config object used: by default,
     // the global one (from wxConfigBase::Get() will be used) and the default
 
     // functions which allow to configure the config object used: by default,
     // the global one (from wxConfigBase::Get() will be used) and the default
@@ -89,6 +121,7 @@ public:
     // GetDefaultConfigPath()
     // ----------------------------------------------------------------------
 
     // GetDefaultConfigPath()
     // ----------------------------------------------------------------------
 
+#if wxUSE_CONFIG
     // set the config object to use (may be NULL to use default)
     void SetConfig(wxConfigBase *config) { m_config = config; }
 
     // set the config object to use (may be NULL to use default)
     void SetConfig(wxConfigBase *config) { m_config = config; }
 
@@ -97,8 +130,11 @@ public:
 
     // return default config path
     static const wxChar *GetDefaultConfigPath();
 
     // return default config path
     static const wxChar *GetDefaultConfigPath();
+#endif
 
 protected:
 
 protected:
+
+#if wxUSE_CONFIG
     // get the config object we're using - if it wasn't set explicitly, this
     // function will use wxConfig::Get() to get the global one
     wxConfigBase *GetConfig();
     // get the config object we're using - if it wasn't set explicitly, this
     // function will use wxConfig::Get() to get the global one
     wxConfigBase *GetConfig();
@@ -106,6 +142,7 @@ protected:
     // gets the root path for our settings - if itwasn't set explicitly, use
     // GetDefaultConfigPath()
     const wxString& GetConfigPath();
     // gets the root path for our settings - if itwasn't set explicitly, use
     // GetDefaultConfigPath()
     const wxString& GetConfigPath();
+#endif
 
     // change to the given (relative) path in the config, return TRUE if ok
     // (then GetConfig() will return something !NULL), FALSE if no config
 
     // change to the given (relative) path in the config, return TRUE if ok
     // (then GetConfig() will return something !NULL), FALSE if no config
@@ -118,6 +155,7 @@ protected:
     // restore the config path after use
     void RestorePath(const wxString& pathOld);
 
     // restore the config path after use
     void RestorePath(const wxString& pathOld);
 
+#if wxUSE_GUI
     // 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
     // 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
@@ -128,18 +166,30 @@ protected:
     bool TestAltEncoding(const wxString& configEntry,
                          wxFontEncoding encReplacement,
                          wxNativeEncodingInfo *info);
     bool TestAltEncoding(const wxString& configEntry,
                          wxFontEncoding encReplacement,
                          wxNativeEncodingInfo *info);
+#endif // wxUSE_GUI
 
 
+#if wxUSE_CONFIG
     // config object and path (in it) to use
     wxConfigBase *m_config;
     // config object and path (in it) to use
     wxConfigBase *m_config;
+    bool m_configIsDummy;
+#endif
+
     wxString  m_configRootPath;
 
     wxString  m_configRootPath;
 
+#if wxUSE_GUI
     // the title for our dialogs
     wxString m_titleDialog;
 
     // the parent window for our dialogs
     wxWindow *m_windowParent;
     // the title for our dialogs
     wxString m_titleDialog;
 
     // the parent window for our dialogs
     wxWindow *m_windowParent;
+#endif // wxUSE_GUI
 
     friend class wxFontMapperPathChanger;
 
     friend class wxFontMapperPathChanger;
+    
+private:
+    static wxFontMapper *sm_instance;
+
+    DECLARE_NO_COPY_CLASS(wxFontMapper)
 };
 
 // ----------------------------------------------------------------------------
 };
 
 // ----------------------------------------------------------------------------
@@ -147,6 +197,16 @@ protected:
 // ----------------------------------------------------------------------------
 
 // the default font mapper for wxWindows programs
 // ----------------------------------------------------------------------------
 
 // the default font mapper for wxWindows programs
-WXDLLEXPORT_DATA(extern wxFontMapper *) wxTheFontMapper;
+// do NOT use! This is for backward compatibility, use wxFontMapper::Get() instead
+#define wxTheFontMapper (wxFontMapper::Get())
+
+#else // !wxUSE_FONTMAP
+
+#if wxUSE_GUI
+    // wxEncodingToCodepage (utils.cpp) needs wxGetNativeFontEncoding
+    #include "wx/fontutil.h"
+#endif
+
+#endif // wxUSE_FONTMAP/!wxUSE_FONTMAP
 
 #endif // _WX_FONTMAPPER_H_
 
 #endif // _WX_FONTMAPPER_H_