From 9db0d763225b6067b3cafb9d220c436860e4ac42 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Wed, 8 Jan 2020 11:41:38 +0300 Subject: [PATCH] gdi32/tests: Remove some workarounds in font tests. Signed-off-by: Nikolay Sivov Signed-off-by: Alexandre Julliard --- dlls/gdi32/tests/font.c | 91 +++++++++++++++-------------------------- 1 file changed, 34 insertions(+), 57 deletions(-) diff --git a/dlls/gdi32/tests/font.c b/dlls/gdi32/tests/font.c index ccae09edc19..ea1bb960df6 100644 --- a/dlls/gdi32/tests/font.c +++ b/dlls/gdi32/tests/font.c @@ -42,15 +42,10 @@ static inline BOOL match_off_by_n(int a, int b, unsigned int n) static LONG (WINAPI *pGdiGetCharDimensions)(HDC hdc, LPTEXTMETRICW lptm, LONG *height); static DWORD (WINAPI *pGdiGetCodePage)(HDC hdc); -static BOOL (WINAPI *pGetCharABCWidthsI)(HDC hdc, UINT first, UINT count, LPWORD glyphs, LPABC abc); -static BOOL (WINAPI *pGetCharABCWidthsA)(HDC hdc, UINT first, UINT last, LPABC abc); -static BOOL (WINAPI *pGetCharABCWidthsW)(HDC hdc, UINT first, UINT last, LPABC abc); static BOOL (WINAPI *pGetCharABCWidthsFloatW)(HDC hdc, UINT first, UINT last, LPABCFLOAT abc); -static BOOL (WINAPI *pGetCharWidth32A)(HDC hdc, UINT first, UINT last, LPINT buffer); static BOOL (WINAPI *pGetCharWidth32W)(HDC hdc, UINT first, UINT last, LPINT buffer); static BOOL (WINAPI *pGetCharWidthInfo)(HDC hdc, void *); static DWORD (WINAPI *pGetFontUnicodeRanges)(HDC hdc, LPGLYPHSET lpgs); -static DWORD (WINAPI *pGetGlyphIndicesA)(HDC hdc, LPCSTR lpstr, INT count, LPWORD pgi, DWORD flags); static DWORD (WINAPI *pGetGlyphIndicesW)(HDC hdc, LPCWSTR lpstr, INT count, LPWORD pgi, DWORD flags); static BOOL (WINAPI *pGetTextExtentExPointI)(HDC hdc, const WORD *indices, INT count, INT max_ext, LPINT nfit, LPINT dxs, LPSIZE size ); @@ -89,15 +84,10 @@ static void init(void) pGdiGetCharDimensions = (void *)GetProcAddress(hgdi32, "GdiGetCharDimensions"); pGdiGetCodePage = (void *) GetProcAddress(hgdi32,"GdiGetCodePage"); - pGetCharABCWidthsI = (void *)GetProcAddress(hgdi32, "GetCharABCWidthsI"); - pGetCharABCWidthsA = (void *)GetProcAddress(hgdi32, "GetCharABCWidthsA"); - pGetCharABCWidthsW = (void *)GetProcAddress(hgdi32, "GetCharABCWidthsW"); pGetCharABCWidthsFloatW = (void *)GetProcAddress(hgdi32, "GetCharABCWidthsFloatW"); - pGetCharWidth32A = (void *)GetProcAddress(hgdi32, "GetCharWidth32A"); pGetCharWidth32W = (void *)GetProcAddress(hgdi32, "GetCharWidth32W"); pGetCharWidthInfo = (void *)GetProcAddress(hgdi32, "GetCharWidthInfo"); pGetFontUnicodeRanges = (void *)GetProcAddress(hgdi32, "GetFontUnicodeRanges"); - pGetGlyphIndicesA = (void *)GetProcAddress(hgdi32, "GetGlyphIndicesA"); pGetGlyphIndicesW = (void *)GetProcAddress(hgdi32, "GetGlyphIndicesW"); pGetTextExtentExPointI = (void *)GetProcAddress(hgdi32, "GetTextExtentExPointI"); pGdiRealizationInfo = (void *)GetProcAddress(hgdi32, "GdiRealizationInfo"); @@ -1137,13 +1127,13 @@ static void ABCWidths_helper(const char* description, HDC hdc, WORD *glyphs, con ABCFLOAT abcf[1]; BOOL ret = FALSE; - ret = pGetCharABCWidthsI(hdc, 0, 1, glyphs, abc); + ret = GetCharABCWidthsI(hdc, 0, 1, glyphs, abc); ok(ret, "%s: GetCharABCWidthsI should have succeeded\n", description); ok ((INT)abc->abcB > 0, "%s: abcB should be positive\n", description); ok(abc->abcA * base_abci->abcA >= 0, "%s: abcA's sign should be unchanged\n", description); ok(abc->abcC * base_abci->abcC >= 0, "%s: abcC's sign should be unchanged\n", description); - ret = pGetCharABCWidthsW(hdc, 'i', 'i', abc); + ret = GetCharABCWidthsW(hdc, 'i', 'i', abc); ok(ret, "%s: GetCharABCWidthsW should have succeeded\n", description); ok ((INT)abc->abcB > 0, "%s: abcB should be positive\n", description); ok(abc->abcA * base_abcw->abcA >= 0, "%s: abcA's sign should be unchanged\n", description); @@ -1209,9 +1199,9 @@ static void test_GetCharABCWidths(void) }; UINT i; - if (!pGetCharABCWidthsA || !pGetCharABCWidthsW || !pGetCharABCWidthsFloatW || !pGetCharABCWidthsI) + if (!pGetCharABCWidthsFloatW) { - win_skip("GetCharABCWidthsA/W/I not available on this platform\n"); + win_skip("GetCharABCWidthsFloatW is not available on this platform\n"); return; } @@ -1226,22 +1216,22 @@ static void test_GetCharABCWidths(void) nb = pGetGlyphIndicesW(hdc, str, 1, glyphs, 0); ok(nb == 1, "GetGlyphIndicesW should have returned 1\n"); - ret = pGetCharABCWidthsI(NULL, 0, 1, glyphs, abc); + ret = GetCharABCWidthsI(NULL, 0, 1, glyphs, abc); ok(!ret, "GetCharABCWidthsI should have failed\n"); - ret = pGetCharABCWidthsI(hdc, 0, 1, glyphs, NULL); + ret = GetCharABCWidthsI(hdc, 0, 1, glyphs, NULL); ok(!ret, "GetCharABCWidthsI should have failed\n"); - ret = pGetCharABCWidthsI(hdc, 0, 1, glyphs, abc); + ret = GetCharABCWidthsI(hdc, 0, 1, glyphs, abc); ok(ret, "GetCharABCWidthsI should have succeeded\n"); - ret = pGetCharABCWidthsW(NULL, 'a', 'a', abc); + ret = GetCharABCWidthsW(NULL, 'a', 'a', abc); ok(!ret, "GetCharABCWidthsW should have failed\n"); - ret = pGetCharABCWidthsW(hdc, 'a', 'a', NULL); + ret = GetCharABCWidthsW(hdc, 'a', 'a', NULL); ok(!ret, "GetCharABCWidthsW should have failed\n"); - ret = pGetCharABCWidthsW(hdc, 'a', 'a', abc); + ret = GetCharABCWidthsW(hdc, 'a', 'a', abc); ok(!ret, "GetCharABCWidthsW should have failed\n"); ret = pGetCharABCWidthsFloatW(NULL, 'a', 'a', abcf); @@ -1274,16 +1264,15 @@ static void test_GetCharABCWidths(void) memset(a, 0, sizeof a); memset(w, 0, sizeof w); hfont = SelectObject(hdc, hfont); - ok(pGetCharABCWidthsA(hdc, c[i].a, c[i].a + 1, a) && - pGetCharABCWidthsW(hdc, c[i].w, c[i].w + 1, w) && - memcmp(a, w, sizeof a) == 0, - "GetCharABCWidthsA and GetCharABCWidthsW should return same widths. charset = %u\n", c[i].cs); + ok(GetCharABCWidthsA(hdc, c[i].a, c[i].a + 1, a) && GetCharABCWidthsW(hdc, c[i].w, c[i].w + 1, w) + && !memcmp(a, w, sizeof(a)), + "GetCharABCWidthsA and GetCharABCWidthsW should return same widths. charset = %u\n", c[i].cs); memset(a, 0xbb, sizeof a); - ret = pGetCharABCWidthsA(hdc, code, code, a); + ret = GetCharABCWidthsA(hdc, code, code, a); ok(ret, "GetCharABCWidthsA should have succeeded\n"); memset(full, 0xcc, sizeof full); - ret = pGetCharABCWidthsA(hdc, 0x00, code, full); + ret = GetCharABCWidthsA(hdc, 0x00, code, full); ok(ret, "GetCharABCWidthsA should have succeeded\n"); ok(memcmp(&a[0], &full[code], sizeof(ABC)) == 0, "GetCharABCWidthsA info should match. codepage = %u\n", c[i].cs); @@ -1291,13 +1280,13 @@ static void test_GetCharABCWidths(void) for (j = 0; j < ARRAY_SIZE(range); ++j) { memset(full, 0xdd, sizeof full); - ret = pGetCharABCWidthsA(hdc, range[j].first, range[j].last, full); + ret = GetCharABCWidthsA(hdc, range[j].first, range[j].last, full); ok(ret == c[i].r[j], "GetCharABCWidthsA %x - %x should have %s\n", range[j].first, range[j].last, c[i].r[j] ? "succeeded" : "failed"); if (ret) { UINT last = range[j].last - range[j].first; - ret = pGetCharABCWidthsA(hdc, range[j].last, range[j].last, a); + ret = GetCharABCWidthsA(hdc, range[j].last, range[j].last, a); ok(ret && memcmp(&full[last], &a[0], sizeof(ABC)) == 0, "GetCharABCWidthsA %x should match. codepage = %u\n", range[j].last, c[i].cs); @@ -1318,12 +1307,12 @@ static void test_GetCharABCWidths(void) ret = pGetCharABCWidthsFloatW(hdc, ' ', ' ', abcf); ok(ret, "GetCharABCWidthsFloatW should have succeeded\n"); ok(abcf[0].abcfB == 1.0, "got %f\n", abcf[0].abcfB); - ret = pGetCharABCWidthsW(hdc, ' ', ' ', abcw); + ret = GetCharABCWidthsW(hdc, ' ', ' ', abcw); ok(ret, "GetCharABCWidthsW should have succeeded\n"); ok(abcw[0].abcB == 1, "got %u\n", abcw[0].abcB); /* 1) prepare unrotated font metrics */ - ret = pGetCharABCWidthsW(hdc, 'a', 'a', abcw); + ret = GetCharABCWidthsW(hdc, 'a', 'a', abcw); ok(ret, "GetCharABCWidthsW should have succeeded\n"); DeleteObject(SelectObject(hdc, hfont)); @@ -1331,7 +1320,7 @@ static void test_GetCharABCWidths(void) lf.lfEscapement = lf.lfOrientation = 900; hfont = CreateFontIndirectA(&lf); hfont = SelectObject(hdc, hfont); - ret = pGetCharABCWidthsW(hdc, 'a', 'a', abc); + ret = GetCharABCWidthsW(hdc, 'a', 'a', abc); ok(ret, "GetCharABCWidthsW should have succeeded\n"); /* 3) compare ABC results */ @@ -1409,9 +1398,9 @@ static void test_GetCharABCWidths(void) nb = pGetGlyphIndicesW(hdc, str, 1, glyphs, 0); ok(nb == 1, "GetGlyphIndicesW should have returned 1\n"); - ret = pGetCharABCWidthsI(hdc, 0, 1, glyphs, abc); + ret = GetCharABCWidthsI(hdc, 0, 1, glyphs, abc); ok(ret, "GetCharABCWidthsI should have succeeded\n"); - ret = pGetCharABCWidthsW(hdc, 'i', 'i', abcw); + ret = GetCharABCWidthsW(hdc, 'i', 'i', abcw); ok(ret, "GetCharABCWidthsW should have succeeded\n"); ret = pGetCharABCWidthsFloatW(hdc, 'i', 'i', abcf); ok(ret, "GetCharABCWidthsFloatW should have succeeded\n"); @@ -2423,8 +2412,8 @@ static void test_SetTextJustification(void) testJustification(hdc, testText, &clientArea); - if (!pGetGlyphIndicesA || !pGetTextExtentExPointI) goto done; - pGetGlyphIndicesA( hdc, "A ", 2, indices, 0 ); + if (!pGetTextExtentExPointI) goto done; + GetGlyphIndicesA( hdc, "A ", 2, indices, 0 ); SetTextJustification(hdc, 0, 0); GetTextExtentPoint32A(hdc, " ", 1, &expect); @@ -2576,7 +2565,7 @@ static BOOL get_glyph_indices(INT charset, UINT code_page, WORD *idx, UINT count for (i = 0; i < count; i++) ansi_buf[i] = (BYTE)(i + 128); SetLastError(0xdeadbeef); - ret = pGetGlyphIndicesA(hdc, ansi_buf, count, idx, 0); + ret = GetGlyphIndicesA(hdc, ansi_buf, count, idx, 0); ok(ret == count, "GetGlyphIndicesA expected %d got %d, error %u\n", count, ret, GetLastError()); } @@ -2604,7 +2593,7 @@ static void test_font_charset(void) }; int i; - if (!pGetGlyphIndicesA || !pGetGlyphIndicesW) + if (!pGetGlyphIndicesW) { win_skip("Skipping the font charset test on a Win9x platform\n"); return; @@ -3231,9 +3220,6 @@ static void test_negative_width(HDC hdc, const LOGFONTA *lf) LOGFONTA lf2 = *lf; WORD idx; - if(!pGetGlyphIndicesA) - return; - /* negative widths are handled just as positive ones */ lf2.lfWidth = -lf->lfWidth; @@ -3244,7 +3230,7 @@ static void test_negative_width(HDC hdc, const LOGFONTA *lf) hfont_prev = SelectObject(hdc, hfont); - ret = pGetGlyphIndicesA(hdc, "x", 1, &idx, GGI_MARK_NONEXISTING_GLYPHS); + ret = GetGlyphIndicesA(hdc, "x", 1, &idx, GGI_MARK_NONEXISTING_GLYPHS); if (ret == GDI_ERROR || idx == 0xffff) { SelectObject(hdc, hfont_prev); @@ -4049,10 +4035,6 @@ static void test_GetTextMetrics(void) HDC hdc; INT enumed; - /* Report only once */ - if(!pGetGlyphIndicesA) - win_skip("GetGlyphIndicesA is unavailable, negative width will not be checked\n"); - hdc = GetDC(0); memset(&lf, 0, sizeof(lf)); @@ -6560,9 +6542,9 @@ static void test_GetCharWidth32(void) INT bufferW; HWND hwnd; - if (!pGetCharWidth32A || !pGetCharWidth32W) + if (!pGetCharWidth32W) { - win_skip("GetCharWidth32A/W not available on this platform\n"); + win_skip("GetCharWidth32W not available on this platform\n"); return; } @@ -6576,7 +6558,7 @@ static void test_GetCharWidth32(void) ret = pGetCharWidth32W(hdc, 'a', 'a', &bufferW); ok(ret, "GetCharWidth32W should have succeeded\n"); - ret = pGetCharWidth32A(hdc, 'a', 'a', &bufferA); + ret = GetCharWidth32A(hdc, 'a', 'a', &bufferA); ok(ret, "GetCharWidth32A should have succeeded\n"); ok (bufferA == bufferW, "Widths should be the same\n"); ok (bufferA > 0," Width should be greater than zero\n"); @@ -6669,11 +6651,6 @@ static void test_fake_bold_font(void) int i; DWORD r; - if (!pGetCharWidth32A || !pGetCharABCWidthsA) { - win_skip("GetCharWidth32A/GetCharABCWidthA is not available on this platform\n"); - return; - } - /* Test outline font */ memset(&lf, 0, sizeof(lf)); strcpy(lf.lfFaceName, "Wingdings"); @@ -6691,7 +6668,7 @@ static void test_fake_bold_font(void) ret = GetTextMetricsA(hdc, &data[i].tm); ok(ret, "got %d\n", ret); - ret = pGetCharABCWidthsA(hdc, 0x76, 0x76, &data[i].abc); + ret = GetCharABCWidthsA(hdc, 0x76, 0x76, &data[i].abc); ok(ret, "got %d\n", ret); data[i].w = data[i].abc.abcA + data[i].abc.abcB + data[i].abc.abcC; r = GetGlyphOutlineA(hdc, 0x76, GGO_METRICS, &data[i].gm, 0, NULL, &x2_mat); @@ -6742,7 +6719,7 @@ static void test_fake_bold_font(void) ret = GetTextMetricsA(hdc, &data[i].tm); ok(ret, "got %d\n", ret); - ret = pGetCharWidth32A(hdc, 0x76, 0x76, &data[i].w); + ret = GetCharWidth32A(hdc, 0x76, 0x76, &data[i].w); ok(ret, "got %d\n", ret); SelectObject(hdc, hfont_old); @@ -6804,7 +6781,7 @@ static void test_bitmap_font_glyph_index(void) CHARSETINFO ci; BYTE chr = '\xA9'; - if (!pGetGlyphIndicesW || !pGetGlyphIndicesA) { + if (!pGetGlyphIndicesW) { win_skip("GetGlyphIndices is unavailable\n"); return; } @@ -6889,7 +6866,7 @@ static void test_bitmap_font_glyph_index(void) ret = ExtTextOutA(hdc, 100, 0, 0, NULL, (LPCSTR)&chr, 1, NULL); break; case 1: - ret = pGetGlyphIndicesA(hdc, (LPCSTR)&chr, 1, &code, 0); + ret = GetGlyphIndicesA(hdc, (LPCSTR)&chr, 1, &code, 0); ok(ret, "GetGlyphIndices failed\n"); ok(code == chr, "expected %02x, got %02x (%s:%d)\n", chr, code, lf.lfFaceName, tm.tmCharSet); ret = ExtTextOutA(hdc, 100, 0, ETO_GLYPH_INDEX, NULL, (LPCSTR)&code, 1, NULL);