mirror of
https://github.com/reactos/reactos.git
synced 2025-04-20 12:29:56 +00:00
[USP10_WINETEST] Sync with Wine Staging 4.18. CORE-16441
This commit is contained in:
parent
29ff85ba5d
commit
573d40fbaa
1 changed files with 63 additions and 1 deletions
|
@ -2091,6 +2091,7 @@ static void test_ScriptShape(HDC hdc)
|
||||||
static void test_ScriptPlace(HDC hdc)
|
static void test_ScriptPlace(HDC hdc)
|
||||||
{
|
{
|
||||||
static const WCHAR test1[] = {'t', 'e', 's', 't',0};
|
static const WCHAR test1[] = {'t', 'e', 's', 't',0};
|
||||||
|
static const WCHAR test2[] = {0x3044, 0x308d, 0x306f,0}; /* Hiragana, Iroha */
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
SCRIPT_CACHE sc = NULL;
|
SCRIPT_CACHE sc = NULL;
|
||||||
|
@ -2101,6 +2102,9 @@ static void test_ScriptPlace(HDC hdc)
|
||||||
int nb, widths[4];
|
int nb, widths[4];
|
||||||
GOFFSET offset[4];
|
GOFFSET offset[4];
|
||||||
ABC abc[4];
|
ABC abc[4];
|
||||||
|
HFONT hfont, prev_hfont;
|
||||||
|
LOGFONTA lf;
|
||||||
|
TEXTMETRICW tm;
|
||||||
|
|
||||||
hr = ScriptItemize(test1, 4, 2, NULL, NULL, items, NULL);
|
hr = ScriptItemize(test1, 4, 2, NULL, NULL, items, NULL);
|
||||||
ok(hr == S_OK, "ScriptItemize should return S_OK not %08x\n", hr);
|
ok(hr == S_OK, "ScriptItemize should return S_OK not %08x\n", hr);
|
||||||
|
@ -2154,6 +2158,62 @@ static void test_ScriptPlace(HDC hdc)
|
||||||
ok(ret, "ExtTextOutW should return TRUE\n");
|
ok(ret, "ExtTextOutW should return TRUE\n");
|
||||||
|
|
||||||
ScriptFreeCache(&sc);
|
ScriptFreeCache(&sc);
|
||||||
|
|
||||||
|
/* test CJK bitmap font which has associated font */
|
||||||
|
memset(&lf, 0, sizeof(lf));
|
||||||
|
strcpy(lf.lfFaceName, "Fixedsys");
|
||||||
|
lf.lfCharSet = DEFAULT_CHARSET;
|
||||||
|
hfont = CreateFontIndirectA(&lf);
|
||||||
|
prev_hfont = SelectObject(hdc, hfont);
|
||||||
|
ret = GetTextMetricsW(hdc, &tm);
|
||||||
|
ok(ret, "GetTextMetrics failed\n");
|
||||||
|
|
||||||
|
switch(tm.tmCharSet) {
|
||||||
|
case SHIFTJIS_CHARSET:
|
||||||
|
case HANGUL_CHARSET:
|
||||||
|
case GB2312_CHARSET:
|
||||||
|
case CHINESEBIG5_CHARSET:
|
||||||
|
{
|
||||||
|
SIZE sz;
|
||||||
|
DWORD len = lstrlenW(test2), i, total;
|
||||||
|
ret = GetTextExtentExPointW(hdc, test2, len, 0, NULL, NULL, &sz);
|
||||||
|
ok(ret, "GetTextExtentExPoint failed\n");
|
||||||
|
|
||||||
|
if (sz.cx > len * tm.tmAveCharWidth)
|
||||||
|
{
|
||||||
|
hr = ScriptItemize(test2, len, 2, NULL, NULL, items, NULL);
|
||||||
|
ok(hr == S_OK, "ScriptItemize should return S_OK not %08x\n", hr);
|
||||||
|
ok(items[0].a.fNoGlyphIndex == FALSE, "fNoGlyphIndex TRUE\n");
|
||||||
|
|
||||||
|
items[0].a.fNoGlyphIndex = TRUE;
|
||||||
|
memset(glyphs, 'a', sizeof(glyphs));
|
||||||
|
hr = ScriptShape(hdc, &sc, test2, len, ARRAY_SIZE(glyphs), &items[0].a, glyphs, logclust, attrs, &nb);
|
||||||
|
ok(hr == S_OK, "ScriptShape should return S_OK not %08x\n", hr);
|
||||||
|
|
||||||
|
memset(offset, 'a', sizeof(offset));
|
||||||
|
memset(widths, 'a', sizeof(widths));
|
||||||
|
hr = ScriptPlace(hdc, &sc, glyphs, ARRAY_SIZE(widths), attrs, &items[0].a, widths, offset, NULL);
|
||||||
|
ok(hr == S_OK, "ScriptPlace should return S_OK not %08x\n", hr);
|
||||||
|
|
||||||
|
for (total = 0, i = 0; i < nb; i++)
|
||||||
|
{
|
||||||
|
ok(offset[i].du == 0, "[%d] expected 0, got %d\n", i, offset[i].du);
|
||||||
|
ok(offset[i].dv == 0, "[%d] expected 0, got %d\n", i, offset[i].dv);
|
||||||
|
ok(widths[i] > tm.tmAveCharWidth, "[%d] expected greater than %d, got %d\n",
|
||||||
|
i, tm.tmAveCharWidth, widths[i]);
|
||||||
|
total += widths[i];
|
||||||
|
}
|
||||||
|
ok(total == sz.cx, "expected %d, got %d\n", sz.cx, total);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
skip("Associated font is unavailable\n");
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
skip("Non-CJK locale\n");
|
||||||
|
}
|
||||||
|
SelectObject(hdc, prev_hfont);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_ScriptItemIzeShapePlace(HDC hdc, unsigned short pwOutGlyphs[256])
|
static void test_ScriptItemIzeShapePlace(HDC hdc, unsigned short pwOutGlyphs[256])
|
||||||
|
@ -2345,7 +2405,7 @@ static void test_ScriptGetCMap(HDC hdc, unsigned short pwOutGlyphs[256])
|
||||||
hr = ScriptGetCMap(hdc, &psc, TestItem1, cInChars, 0, pwOutGlyphs3);
|
hr = ScriptGetCMap(hdc, &psc, TestItem1, cInChars, 0, pwOutGlyphs3);
|
||||||
ok( hr == S_OK, "ScriptGetCMap(NULL,&psc,NULL,0,0,NULL), expected S_OK, "
|
ok( hr == S_OK, "ScriptGetCMap(NULL,&psc,NULL,0,0,NULL), expected S_OK, "
|
||||||
"got %08x\n", hr);
|
"got %08x\n", hr);
|
||||||
ok( psc != NULL, "ScritpGetCMap expected psc to be not NULL\n");
|
ok( psc != NULL, "ScriptGetCMap expected psc to be not NULL\n");
|
||||||
ScriptFreeCache( &psc);
|
ScriptFreeCache( &psc);
|
||||||
|
|
||||||
/* Set psc to NULL, to be able to check if a pointer is returned in psc */
|
/* Set psc to NULL, to be able to check if a pointer is returned in psc */
|
||||||
|
@ -3019,6 +3079,7 @@ static void test_ScriptXtoX(void)
|
||||||
WORD clust = 0;
|
WORD clust = 0;
|
||||||
INT advance = 16;
|
INT advance = 16;
|
||||||
hr = ScriptXtoCP(iX, 1, 1, &clust, psva, &advance, &sa, &piCP, &piTrailing);
|
hr = ScriptXtoCP(iX, 1, 1, &clust, psva, &advance, &sa, &piCP, &piTrailing);
|
||||||
|
ok(hr == S_OK, "ScriptXtoCP failed, hr %#x.\n", hr);
|
||||||
ok(piCP==0 && piTrailing==0,"%i should return 0(%i) and 0(%i)\n",iX, piCP,piTrailing);
|
ok(piCP==0 && piTrailing==0,"%i should return 0(%i) and 0(%i)\n",iX, piCP,piTrailing);
|
||||||
}
|
}
|
||||||
for (iX = 8; iX < 16; iX++)
|
for (iX = 8; iX < 16; iX++)
|
||||||
|
@ -3026,6 +3087,7 @@ static void test_ScriptXtoX(void)
|
||||||
WORD clust = 0;
|
WORD clust = 0;
|
||||||
INT advance = 16;
|
INT advance = 16;
|
||||||
hr = ScriptXtoCP(iX, 1, 1, &clust, psva, &advance, &sa, &piCP, &piTrailing);
|
hr = ScriptXtoCP(iX, 1, 1, &clust, psva, &advance, &sa, &piCP, &piTrailing);
|
||||||
|
ok(hr == S_OK, "ScriptXtoCP failed, hr %#x.\n", hr);
|
||||||
ok(piCP==0 && piTrailing==1,"%i should return 0(%i) and 1(%i)\n",iX, piCP,piTrailing);
|
ok(piCP==0 && piTrailing==1,"%i should return 0(%i) and 1(%i)\n",iX, piCP,piTrailing);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue