Piotr Caban : gdi32: Added GetGlyphOutlineW tests on glyph that contains empty contour.

Alexandre Julliard julliard at winehq.org
Tue Nov 13 13:46:05 CST 2012


Module: wine
Branch: master
Commit: 4f07c49547cc110323b9201c51514d4f10c11b7c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4f07c49547cc110323b9201c51514d4f10c11b7c

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Tue Nov 13 16:51:51 2012 +0100

gdi32: Added GetGlyphOutlineW tests on glyph that contains empty contour.

---

 dlls/gdi32/tests/font.c        |   42 ++++++++++++++++++++++++++++++++++++++++
 dlls/gdi32/tests/wine_test.sfd |   29 +++++++++++++++++++++++++-
 dlls/gdi32/tests/wine_test.ttf |  Bin 1552 -> 1652 bytes
 3 files changed, 69 insertions(+), 2 deletions(-)

diff --git a/dlls/gdi32/tests/font.c b/dlls/gdi32/tests/font.c
index 4d41388..1064ce2 100644
--- a/dlls/gdi32/tests/font.c
+++ b/dlls/gdi32/tests/font.c
@@ -4277,6 +4277,46 @@ static BOOL write_ttf_file(const char *fontname, char *tmp_name)
     return ret;
 }
 
+static void test_GetGlyphOutline_empty_contour(void)
+{
+    HDC hdc;
+    LOGFONTA lf;
+    HFONT hfont, hfont_prev;
+    TTPOLYGONHEADER *header;
+    GLYPHMETRICS gm;
+    char buf[1024];
+    DWORD ret;
+
+    memset(&lf, 0, sizeof(lf));
+    lf.lfHeight = 72;
+    lstrcpyA(lf.lfFaceName, "wine_test");
+
+    hfont = CreateFontIndirectA(&lf);
+    ok(hfont != 0, "CreateFontIndirectA error %u\n", GetLastError());
+
+    hdc = GetDC(NULL);
+
+    hfont_prev = SelectObject(hdc, hfont);
+    ok(hfont_prev != NULL, "SelectObject failed\n");
+
+    ret = GetGlyphOutlineW(hdc, 0xa8, GGO_NATIVE, &gm, 0, NULL, &mat);
+    ok(ret == 228, "GetGlyphOutline returned %d, expected 228\n", ret);
+
+    header = (TTPOLYGONHEADER*)buf;
+    ret = GetGlyphOutlineW(hdc, 0xa8, GGO_NATIVE, &gm, sizeof(buf), buf, &mat);
+    ok(ret == 228, "GetGlyphOutline returned %d, expected 228\n", ret);
+    ok(header->cb == 36, "header->cb = %d, expected 36\n", header->cb);
+    ok(header->dwType == TT_POLYGON_TYPE, "header->dwType = %d, expected TT_POLYGON_TYPE\n", header->dwType);
+    header = (TTPOLYGONHEADER*)((char*)header+header->cb);
+    ok(header->cb == 96, "header->cb = %d, expected 96\n", header->cb);
+    header = (TTPOLYGONHEADER*)((char*)header+header->cb);
+    ok(header->cb == 96, "header->cb = %d, expected 96\n", header->cb);
+
+    SelectObject(hdc, hfont_prev);
+    DeleteObject(hfont);
+    ReleaseDC(NULL, hdc);
+}
+
 static void test_CreateScalableFontResource(void)
 {
     char ttf_name[MAX_PATH];
@@ -4358,6 +4398,8 @@ todo_wine
     ret = is_truetype_font_installed("wine_test");
     ok(ret, "font wine_test should be enumerated\n");
 
+    test_GetGlyphOutline_empty_contour();
+
     ret = pRemoveFontResourceExA(fot_name, FR_PRIVATE, 0);
 todo_wine
     ok(!ret, "RemoveFontResourceEx() with not matching flags should fail\n");
diff --git a/dlls/gdi32/tests/wine_test.sfd b/dlls/gdi32/tests/wine_test.sfd
index 5b73545..5adf7cf 100644
--- a/dlls/gdi32/tests/wine_test.sfd
+++ b/dlls/gdi32/tests/wine_test.sfd
@@ -20,7 +20,7 @@ OS2Version: 2
 OS2_WeightWidthSlopeOnly: 0
 OS2_UseTypoMetrics: 1
 CreationTime: 1288336343
-ModificationTime: 1288336873
+ModificationTime: 1352483620
 PfmFamily: 17
 TTFWeight: 500
 TTFWidth: 5
@@ -86,7 +86,7 @@ DisplaySize: -24
 AntiAlias: 1
 FitToEm: 1
 WinInfo: 65 65 19
-BeginChars: 65539 4
+BeginChars: 65539 5
 
 StartChar: .notdef
 Encoding: 65536 -1 0
@@ -176,5 +176,30 @@ Width: 0
 Flags: W
 LayerCount: 2
 EndChar
+
+StartChar: dieresis
+Encoding: 168 168 0
+Width: 1000
+VWidth: 0
+Flags: HW
+LayerCount: 2
+Fore
+SplineSet
+620.215 824.429 m 1,0,1
+ 760.84 777.554 760.84 777.554 713.965 636.929 c 1,2,-1
+ 620.215 824.429 l 1,0,1
+154.883 324.971 m 0,3,-1
+254.492 773.213 m 1,4,5
+ 310.707 834.805 310.707 834.805 374.609 767.354 c 1,6,7
+ 410.471 728.672 410.471 728.672 374.609 691.182 c 0,8,9
+ 308.375 621.934 308.375 621.934 254.492 688.252 c 0,10,11
+ 216.406 735.127 216.406 735.127 254.492 773.213 c 1,4,5
+254.492 773.213 m 1,12,13
+ 216.406 735.127 216.406 735.127 254.492 688.252 c 0,14,15
+ 308.375 621.934 308.375 621.934 374.609 691.182 c 0,16,17
+ 410.471 728.672 410.471 728.672 374.609 767.354 c 1,18,19
+ 310.707 834.805 310.707 834.805 254.492 773.213 c 1,12,13
+EndSplineSet
+EndChar
 EndChars
 EndSplineFont
diff --git a/dlls/gdi32/tests/wine_test.ttf b/dlls/gdi32/tests/wine_test.ttf
index badef18..1e546eb 100644
Binary files a/dlls/gdi32/tests/wine_test.ttf and b/dlls/gdi32/tests/wine_test.ttf differ




More information about the wine-cvs mailing list