[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