[PATCH v3 7/7] gdi32/tests: Test changing system default font smoothing.
Paul Gofman
pgofman at codeweavers.com
Thu Dec 3 04:54:34 CST 2020
Signed-off-by: Paul Gofman <pgofman at codeweavers.com>
---
dlls/gdi32/tests/dib.c | 45 ++++++++++++++++++++++++++++++++++--------
1 file changed, 37 insertions(+), 8 deletions(-)
diff --git a/dlls/gdi32/tests/dib.c b/dlls/gdi32/tests/dib.c
index d16cb0df5c0..8cd054f7183 100644
--- a/dlls/gdi32/tests/dib.c
+++ b/dlls/gdi32/tests/dib.c
@@ -3007,7 +3007,7 @@ static inline COLORREF aa_colorref( COLORREF dst, COLORREF text, BYTE glyph )
static const BYTE masks[8] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01};
-static void draw_text_2( HDC hdc, const BITMAPINFO *bmi, BYTE *bits, BOOL aa )
+static void draw_text_2( HDC hdc, const BITMAPINFO *bmi, BYTE *bits, BYTE quality, BOOL expected_aa )
{
DWORD dib_size = get_dib_size(bmi), ret;
LOGFONTA lf;
@@ -3029,7 +3029,7 @@ static void draw_text_2( HDC hdc, const BITMAPINFO *bmi, BYTE *bits, BOOL aa )
memset( &lf, 0, sizeof(lf) );
strcpy( lf.lfFaceName, "Tahoma" );
lf.lfHeight = 24;
- lf.lfQuality = aa ? ANTIALIASED_QUALITY : NONANTIALIASED_QUALITY;
+ lf.lfQuality = quality;
font = CreateFontIndirectA( &lf );
font = SelectObject( hdc, font );
@@ -3054,12 +3054,12 @@ static void draw_text_2( HDC hdc, const BITMAPINFO *bmi, BYTE *bits, BOOL aa )
for(i = 0; i < dib_size; i++)
bits[i] = vals[i % 4];
- if (bmi->bmiHeader.biBitCount <= 8) aa = FALSE;
+ if (bmi->bmiHeader.biBitCount <= 8) expected_aa = FALSE;
text_color = GetTextColor( hdc );
for (i = 0; i < strlen(str); i++)
{
- DWORD ggo_flags = aa ? GGO_GRAY4_BITMAP : GGO_BITMAP;
+ DWORD ggo_flags = expected_aa ? GGO_GRAY4_BITMAP : GGO_BITMAP;
ret = GetGlyphOutlineA( hdc, str[i], ggo_flags, &gm, 0, NULL, &identity );
@@ -3075,7 +3075,7 @@ static void draw_text_2( HDC hdc, const BITMAPINFO *bmi, BYTE *bits, BOOL aa )
if (!ret) continue;
- if (aa)
+ if (expected_aa)
{
stride = (gm.gmBlackBoxX + 3) & ~3;
@@ -3114,7 +3114,7 @@ static void draw_text_2( HDC hdc, const BITMAPINFO *bmi, BYTE *bits, BOOL aa )
}
diy_hash = hash_dib( hdc, bmi, bits );
- ok( !strcmp( eto_hash, diy_hash ), "hash mismatch - aa %d\n", aa );
+ ok( !strcmp( eto_hash, diy_hash ), "hash mismatch - quality %#x, expected_aa %d\n", quality, expected_aa );
HeapFree( GetProcessHeap(), 0, diy_hash );
HeapFree( GetProcessHeap(), 0, eto_hash );
@@ -3125,14 +3125,43 @@ static void draw_text_2( HDC hdc, const BITMAPINFO *bmi, BYTE *bits, BOOL aa )
static void draw_text( HDC hdc, const BITMAPINFO *bmi, BYTE *bits )
{
- draw_text_2( hdc, bmi, bits, FALSE );
+ UINT smoothing, type;
+ BOOL ret;
+
+ draw_text_2( hdc, bmi, bits, NONANTIALIASED_QUALITY, FALSE );
+
+ ret = SystemParametersInfoA(SPI_GETFONTSMOOTHING, 0, &smoothing, 0);
+ ok(ret, "SystemParametersInfoA failed, GetLastError() %u.\n", GetLastError());
+
+ ret = SystemParametersInfoA(SPI_SETFONTSMOOTHING, 0, NULL, 0);
+ ok(ret, "SystemParametersInfoA failed, GetLastError() %u.\n", GetLastError());
+ draw_text_2( hdc, bmi, bits, DEFAULT_QUALITY, FALSE );
/* Rounding errors make these cases hard to test */
if ((bmi->bmiHeader.biCompression == BI_BITFIELDS && ((DWORD*)bmi->bmiColors)[0] == 0x3f000) ||
(bmi->bmiHeader.biBitCount == 16))
+ {
+ ret = SystemParametersInfoA(SPI_SETFONTSMOOTHING, smoothing, NULL, 0);
+ ok(ret, "SystemParametersInfoA failed, GetLastError() %u.\n", GetLastError());
return;
+ }
+
+ ret = SystemParametersInfoA(SPI_SETFONTSMOOTHING, 1, NULL, 0);
+ ok(ret, "SystemParametersInfoA failed, GetLastError() %u.\n", GetLastError());
+ ret = SystemParametersInfoA(SPI_GETFONTSMOOTHINGTYPE, 0, &type, 0);
+ ok(ret, "SystemParametersInfoA failed, GetLastError() %u.\n", GetLastError());
+ ret = SystemParametersInfoA(SPI_SETFONTSMOOTHINGTYPE, 0, (void *)FE_FONTSMOOTHINGSTANDARD, 0);
+ ok(ret, "SystemParametersInfoA failed, GetLastError() %u.\n", GetLastError());
+
+ draw_text_2( hdc, bmi, bits, DEFAULT_QUALITY, TRUE );
+
+ ret = SystemParametersInfoA(SPI_SETFONTSMOOTHINGTYPE, 0, (void *)(ULONG_PTR)type, 0);
+ ok(ret, "SystemParametersInfoA failed, GetLastError() %u.\n", GetLastError());
+
+ ret = SystemParametersInfoA(SPI_SETFONTSMOOTHING, smoothing, NULL, 0);
+ ok(ret, "SystemParametersInfoA failed, GetLastError() %u.\n", GetLastError());
- draw_text_2( hdc, bmi, bits, TRUE );
+ draw_text_2( hdc, bmi, bits, ANTIALIASED_QUALITY, TRUE );
}
static void test_simple_graphics(void)
--
2.28.0
More information about the wine-devel
mailing list