]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mgl/fontutil.cpp
Tries to fix wxListBox focus problems.
[wxWidgets.git] / src / mgl / fontutil.cpp
index 7e262908627bede47d0eef736c7037f38c51ad6e..3fcbc396d81d5c5077ee3816b495ab46354b21d1 100644 (file)
@@ -30,6 +30,7 @@
 
 
 #include "wx/listimpl.cpp"
 
 
 #include "wx/listimpl.cpp"
+#include "wx/sysopt.h"
 #include "wx/mgl/private.h"
 
 #include <mgraph.h>
 #include "wx/mgl/private.h"
 
 #include <mgraph.h>
@@ -228,6 +229,8 @@ void wxMGLFontLibrary::DecRef()
     }
 }
 
     }
 }
 
+static int gs_antialiasingThreshold = -1;
+
 wxMGLFontInstance *wxMGLFontLibrary::GetFontInstance(wxFont *font, 
                                                      float scale, bool aa)
 {
 wxMGLFontInstance *wxMGLFontLibrary::GetFontInstance(wxFont *font, 
                                                      float scale, bool aa)
 {
@@ -235,10 +238,28 @@ wxMGLFontInstance *wxMGLFontLibrary::GetFontInstance(wxFont *font,
 
     wxString facename;
     bool slant;
 
     wxString facename;
     bool slant;
-    bool antialiased = 
-        (m_fontLib->fontLibType == MGL_BITMAPFONT_LIB) ? FALSE : aa;
+    bool antialiased;
     float pt = (float)font->GetPointSize() * scale;
 
     float pt = (float)font->GetPointSize() * scale;
 
+    if ( gs_antialiasingThreshold == -1 )
+    {
+        gs_antialiasingThreshold = 10;
+#if wxUSE_SYSTEM_OPTIONS
+        if ( wxSystemOptions::HasOption(wxT("mgl.aa-threshold") )
+            gs_antialiasingThreshold = 
+                wxSystemOptions::GetOptionInt(wxT("mgl.aa-threshold"));
+        wxLogTrace("mgl_font", "AA threshold set to %i", gs_antialiasingThreshold);
+#endif
+    }
+
+    // Small characters don't look good when antialiased with the algorithm
+    // that FreeType uses (mere 2x2 supersampling), so lets disable it AA
+    // completely for small fonts.
+    if ( pt <= gs_antialiasingThreshold )
+        antialiased = FALSE;
+    else
+        antialiased = (m_fontLib->fontLibType == MGL_BITMAPFONT_LIB) ? FALSE : aa;
+
     slant = (((m_type & wxFONTFACE_ITALIC) == 0) &&
              (font->GetStyle() == wxSLANT || font->GetStyle() == wxITALIC));
 
     slant = (((m_type & wxFONTFACE_ITALIC) == 0) &&
              (font->GetStyle() == wxSLANT || font->GetStyle() == wxITALIC));