]> git.saurik.com Git - wxWidgets.git/commitdiff
antialiasing now disabled for small fonts
authorVáclav Slavík <vslavik@fastmail.fm>
Sun, 14 Oct 2001 22:17:33 +0000 (22:17 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Sun, 14 Oct 2001 22:17:33 +0000 (22:17 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11996 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mgl/font.cpp
src/mgl/fontutil.cpp

index 4deda242cf47a7bab3ebb2026e4aa4734943a126..85e934c02cd75e6a9f9d040c4afb8afab74358e9 100644 (file)
@@ -177,7 +177,6 @@ bool wxFont::Create(int pointSize,
 
 struct font_t *wxFont::GetMGLfont_t(float scale, bool antialiased)
 {
-    // FIXME_MGL -- no antialiasing for fonts smaller than certain treshold!
     if ( !M_FONTDATA->m_valid )
     {
         wxMGLFontLibrary *old = M_FONTDATA->m_library;
index 7e262908627bede47d0eef736c7037f38c51ad6e..3fcbc396d81d5c5077ee3816b495ab46354b21d1 100644 (file)
@@ -30,6 +30,7 @@
 
 
 #include "wx/listimpl.cpp"
+#include "wx/sysopt.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)
 {
@@ -235,10 +238,28 @@ wxMGLFontInstance *wxMGLFontLibrary::GetFontInstance(wxFont *font,
 
     wxString facename;
     bool slant;
-    bool antialiased = 
-        (m_fontLib->fontLibType == MGL_BITMAPFONT_LIB) ? FALSE : aa;
+    bool antialiased;
     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));