]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/fontenum.cpp
optimized default GUI font loading
[wxWidgets.git] / src / msw / fontenum.cpp
index 1747efcaaf281aae971e88e2141e360f724c71bf..1f7305a937362fefff47bf6bf7450f8fd5d53391 100644 (file)
   #pragma hdrstop
 #endif
 
+#if wxUSE_FONTMAP
+
 #ifndef WX_PRECOMP
   #include "wx/font.h"
 #endif
 
+#include "wx/fontutil.h"
 #include "wx/fontenum.h"
 #include "wx/fontmap.h"
 
@@ -90,8 +93,10 @@ private:
 // private functions
 // ----------------------------------------------------------------------------
 
+#ifndef __WXMICROWIN__
 int CALLBACK wxFontEnumeratorProc(LPLOGFONT lplf, LPTEXTMETRIC lptm,
                                   DWORD dwStyle, LONG lParam);
+#endif
 
 // ============================================================================
 // implementation
@@ -104,7 +109,7 @@ int CALLBACK wxFontEnumeratorProc(LPLOGFONT lplf, LPTEXTMETRIC lptm,
 wxFontEnumeratorHelper::wxFontEnumeratorHelper(wxFontEnumerator *fontEnum)
 {
     m_fontEnum = fontEnum;
-    m_charset = -1;
+    m_charset = DEFAULT_CHARSET;
     m_fixedOnly = FALSE;
     m_enumEncodings = FALSE;
 }
@@ -132,9 +137,9 @@ bool wxFontEnumeratorHelper::SetEncoding(wxFontEncoding encoding)
     return TRUE;
 }
 
-#if defined(__GNUWIN32__)
+#if defined(__GNUWIN32__) && !defined(__CYGWIN10__)
     #if wxUSE_NORLANDER_HEADERS
-        #define wxFONTENUMPROC int(*)(const LOGFONTA *, const TEXTMETRICA *, long unsigned int, LPARAM)
+        #define wxFONTENUMPROC int(*)(const LOGFONT *, const TEXTMETRIC *, long unsigned int, LPARAM)
     #else
         #define wxFONTENUMPROC int(*)(ENUMLOGFONTEX *, NEWTEXTMETRICEX*, int, LPARAM)
     #endif
@@ -144,6 +149,7 @@ bool wxFontEnumeratorHelper::SetEncoding(wxFontEncoding encoding)
 
 void wxFontEnumeratorHelper::DoEnumerate()
 {
+#ifndef __WXMICROWIN__
     HDC hDC = ::GetDC(NULL);
 
 #ifdef __WIN32__
@@ -164,6 +170,7 @@ void wxFontEnumeratorHelper::DoEnumerate()
 #endif // Win32/16
 
     ::ReleaseDC(NULL, hDC);
+#endif
 }
 
 bool wxFontEnumeratorHelper::OnFont(const LPLOGFONT lf,
@@ -178,7 +185,7 @@ bool wxFontEnumeratorHelper::OnFont(const LPLOGFONT lf,
             wxConstCast(this, wxFontEnumeratorHelper)->m_charsets.Add(cs);
 
             wxFontEncoding enc = wxGetFontEncFromCharSet(cs);
-            return m_fontEnum->OnFontEncoding(m_family,
+            return m_fontEnum->OnFontEncoding(lf->lfFaceName,
                                               wxFontMapper::GetEncodingName(enc));
         }
         else
@@ -243,6 +250,7 @@ bool wxFontEnumerator::EnumerateEncodings(const wxString& family)
 // Windows callbacks
 // ----------------------------------------------------------------------------
 
+#ifndef __WXMICROWIN__
 int CALLBACK wxFontEnumeratorProc(LPLOGFONT lplf, LPTEXTMETRIC lptm,
                                   DWORD dwStyle, LONG lParam)
 {
@@ -257,4 +265,6 @@ int CALLBACK wxFontEnumeratorProc(LPLOGFONT lplf, LPTEXTMETRIC lptm,
 
     return fontEnum->OnFont(lplf, lptm);
 }
+#endif
 
+#endif // wxUSE_FONTMAP