[PATCH v3 4/7] gdi32: Consolidate aa_flags estimation in font_SelectFont().

Paul Gofman pgofman at codeweavers.com
Thu Dec 3 04:54:31 CST 2020


Signed-off-by: Paul Gofman <pgofman at codeweavers.com>
---
v3:
    - added patch.

 dlls/gdi32/font.c | 32 +++++++++++++++-----------------
 1 file changed, 15 insertions(+), 17 deletions(-)

diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c
index c952495f7da..3ff6c6ef3f6 100644
--- a/dlls/gdi32/font.c
+++ b/dlls/gdi32/font.c
@@ -3713,16 +3713,6 @@ static HFONT CDECL font_SelectFont( PHYSDEV dev, HFONT hfont, UINT *aa_flags )
         BOOL can_use_bitmap = !!(GetDeviceCaps( dc->hSelf, TEXTCAPS ) & TC_RA_ABLE);
 
         GetObjectW( hfont, sizeof(lf), &lf );
-        switch (lf.lfQuality)
-        {
-        case NONANTIALIASED_QUALITY:
-            if (!*aa_flags) *aa_flags = GGO_BITMAP;
-            break;
-        case ANTIALIASED_QUALITY:
-            if (!*aa_flags) *aa_flags = GGO_GRAY4_BITMAP;
-            break;
-        }
-
         lf.lfWidth = abs(lf.lfWidth);
 
         TRACE( "%s, h=%d, it=%d, weight=%d, PandF=%02x, charset=%d orient %d escapement %d\n",
@@ -3763,15 +3753,23 @@ static HFONT CDECL font_SelectFont( PHYSDEV dev, HFONT hfont, UINT *aa_flags )
 
         if (font && !*aa_flags)
         {
-            *aa_flags = font->aa_flags;
-            if (!*aa_flags)
+            switch (lf.lfQuality)
             {
-                if (lf.lfQuality == CLEARTYPE_QUALITY || lf.lfQuality == CLEARTYPE_NATURAL_QUALITY)
-                    *aa_flags = subpixel_orientation;
-                else
-                    *aa_flags = font_smoothing;
+                case NONANTIALIASED_QUALITY:
+                    *aa_flags = GGO_BITMAP;
+                    break;
+                case ANTIALIASED_QUALITY:
+                    *aa_flags = GGO_GRAY4_BITMAP;
+                    break;
+                default:
+                    if (!(*aa_flags = font->aa_flags))
+                    {
+                        *aa_flags = lf.lfQuality == CLEARTYPE_QUALITY || lf.lfQuality == CLEARTYPE_NATURAL_QUALITY
+                                ? subpixel_orientation : font_smoothing;
+                    }
+                    *aa_flags = font_funcs->get_aa_flags( font, *aa_flags, antialias_fakes );
+                    break;
             }
-            *aa_flags = font_funcs->get_aa_flags( font, *aa_flags, antialias_fakes );
         }
         TRACE( "%p %s %d aa %x\n", hfont, debugstr_w(lf.lfFaceName), lf.lfHeight, *aa_flags );
         LeaveCriticalSection( &font_cs );
-- 
2.28.0




More information about the wine-devel mailing list