1 /*
2 * PROJECT: ReactOS api tests
3 * LICENSE: GPL - See COPYING in the top level directory
4 * PURPOSE: Test for GetGlyphOutline
5 * PROGRAMMERS: Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
6 */
7
8 #include "precomp.h"
9
10 typedef struct TEST_ENTRY
11 {
12 INT line;
13 LPCWSTR lfFaceName;
14 LONG lfHeight;
15 DWORD dwRet;
16 DWORD dwError;
17 WCHAR wch;
18 UINT uFormat;
19 BOOL bMetrics;
20 GLYPHMETRICS gm;
21 DWORD cbBuffer;
22 LPVOID lpvBuffer;
23 } TEST_ENTRY;
24
25 static const MAT2 s_mat = { {0,1}, {0,0}, {0,0}, {0,1} };
26
27 static BYTE s_ab[512];
28
29 #define WCH0 0
30 #define WCH1 0xFFFF
31 #define WCH2 L'A'
32 #define WCH3 L'T'
33 #define WCH4 L'g'
34 #define WCH5 L'.'
35
36 static const TEST_ENTRY s_entries[] =
37 {
38 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 } },
39 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 } },
40 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 } },
41 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 } },
42 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 } },
43 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 } },
44 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
45 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
46 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
47 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
48 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
49 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
50 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
51 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
52 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
53 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
54 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
55 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
56 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, },
57 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, },
58 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, },
59 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, },
60 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, },
61 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, },
62 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
63 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
64 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
65 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
66 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
67 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
68 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
69 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
70 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
71 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
72 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
73 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
74
75 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 } },
76 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 } },
77 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 } },
78 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 } },
79 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 } },
80 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 } },
81 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
82 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
83 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
84 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
85 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
86 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
87 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
88 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
89 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
90 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
91 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
92 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
93 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, },
94 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, },
95 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, },
96 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, },
97 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, },
98 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, },
99 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
100 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
101 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
102 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
103 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
104 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
105 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
106 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
107 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
108 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
109 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
110 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
111
112 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 9, 9, { 2, 9 }, 12, 0 }, },
113 { __LINE__, L"Tahoma", -12, 28, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 7, 9, { 0, 9 }, 8, 0 }, },
114 { __LINE__, L"Tahoma", -12, 28, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 7, 9, { 0, 9 }, 8, 0 }, },
115 { __LINE__, L"Tahoma", -12, 28, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 6, 9, { 0, 7 }, 7, 0 }, },
116 { __LINE__, L"Tahoma", -12, 20, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 1, 2, { 1, 2 }, 4, 0 }, },
117 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 9, 9, { 2, 9 }, 12, 0 }, 1, s_ab },
118 { __LINE__, L"Tahoma", -12, 28, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 7, 9, { 0, 9 }, 8, 0 }, 1, s_ab },
119 { __LINE__, L"Tahoma", -12, 28, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 7, 9, { 0, 9 }, 8, 0 }, 1, s_ab },
120 { __LINE__, L"Tahoma", -12, 28, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 6, 9, { 0, 7 }, 7, 0 }, 1, s_ab },
121 { __LINE__, L"Tahoma", -12, 20, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 1, 2, { 1, 2 }, 4, 0 }, 1, s_ab },
122 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 9, 9, { 2, 9 }, 12, 0 }, 512, s_ab },
123 { __LINE__, L"Tahoma", -12, 28, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 7, 9, { 0, 9 }, 8, 0 }, 512, s_ab },
124 { __LINE__, L"Tahoma", -12, 28, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 7, 9, { 0, 9 }, 8, 0 }, 512, s_ab },
125 { __LINE__, L"Tahoma", -12, 28, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 6, 9, { 0, 7 }, 7, 0 }, 512, s_ab },
126 { __LINE__, L"Tahoma", -12, 20, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 1, 2, { 1, 2 }, 4, 0 }, 512, s_ab },
127 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH1, GGO_BITMAP, TRUE, { 9, 9, { 2, 9 }, 12, 0 }, },
128 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH2, GGO_BITMAP, TRUE, { 7, 9, { 0, 9 }, 8, 0 }, },
129 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH3, GGO_BITMAP, TRUE, { 7, 9, { 0, 9 }, 8, 0 }, },
130 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH4, GGO_BITMAP, TRUE, { 6, 9, { 0, 7 }, 7, 0 }, },
131 { __LINE__, L"Tahoma", -12, 8, 0xDEADBEEF, WCH5, GGO_BITMAP, TRUE, { 1, 2, { 1, 2 }, 4, 0 }, },
132 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH1, GGO_BITMAP, TRUE, { 9, 9, { 2, 9 }, 12, 0 }, 512, s_ab },
133 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH2, GGO_BITMAP, TRUE, { 7, 9, { 0, 9 }, 8, 0 }, 512, s_ab },
134 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH3, GGO_BITMAP, TRUE, { 7, 9, { 0, 9 }, 8, 0 }, 512, s_ab },
135 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH4, GGO_BITMAP, TRUE, { 6, 9, { 0, 7 }, 7, 0 }, 512, s_ab },
136 { __LINE__, L"Tahoma", -12, 8, 0xDEADBEEF, WCH5, GGO_BITMAP, TRUE, { 1, 2, { 1, 2 }, 4, 0 }, 512, s_ab },
137
138 { __LINE__, L"Tahoma", -14, 40, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 11, 11, { 2, 11 }, 14, 0 }, },
139 { __LINE__, L"Tahoma", -14, 28, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 7, 10, { 0, 10 }, 8, 0 }, },
140 { __LINE__, L"Tahoma", -14, 36, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 9, 10, { -1, 10 }, 8, 0 }, },
141 { __LINE__, L"Tahoma", -14, 28, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 7, 11, { 0, 8 }, 8, 0 }, },
142 { __LINE__, L"Tahoma", -14, 20, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 1, 2, { 1, 2 }, 4, 0 }, },
143 { __LINE__, L"Tahoma", -14, 40, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 11, 11, { 2, 11 }, 14, 0 }, 1, s_ab },
144 { __LINE__, L"Tahoma", -14, 28, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 7, 10, { 0, 10 }, 8, 0 }, 1, s_ab },
145 { __LINE__, L"Tahoma", -14, 36, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 9, 10, { -1, 10 }, 8, 0 }, 1, s_ab },
146 { __LINE__, L"Tahoma", -14, 28, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 7, 11, { 0, 8 }, 8, 0 }, 1, s_ab },
147 { __LINE__, L"Tahoma", -14, 20, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 1, 2, { 1, 2 }, 4, 0 }, 1, s_ab },
148 { __LINE__, L"Tahoma", -14, 40, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 11, 11, { 2, 11 }, 14, 0 }, 512, s_ab },
149 { __LINE__, L"Tahoma", -14, 28, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 7, 10, { 0, 10 }, 8, 0 }, 512, s_ab },
150 { __LINE__, L"Tahoma", -14, 36, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 9, 10, { -1, 10 }, 8, 0 }, 512, s_ab },
151 { __LINE__, L"Tahoma", -14, 28, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 7, 11, { 0, 8 }, 8, 0 }, 512, s_ab },
152 { __LINE__, L"Tahoma", -14, 20, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 1, 2, { 1, 2 }, 4, 0 }, 512, s_ab },
153 { __LINE__, L"Tahoma", -14, 44, 0xDEADBEEF, WCH1, GGO_BITMAP, TRUE, { 11, 11, { 2, 11 }, 14, 0 }, },
154 { __LINE__, L"Tahoma", -14, 40, 0xDEADBEEF, WCH2, GGO_BITMAP, TRUE, { 7, 10, { 0, 10 }, 8, 0 }, },
155 { __LINE__, L"Tahoma", -14, 40, 0xDEADBEEF, WCH3, GGO_BITMAP, TRUE, { 9, 10, { -1, 10 }, 8, 0 }, },
156 { __LINE__, L"Tahoma", -14, 0x2C, 0xDEADBEEF, WCH4, GGO_BITMAP, TRUE, { 7, 11, { 0, 8 }, 8, 0 }, },
157 { __LINE__, L"Tahoma", -14, 0x8, 0xDEADBEEF, WCH5, GGO_BITMAP, TRUE, { 1, 2, { 1, 2 }, 4, 0 }, },
158 { __LINE__, L"Tahoma", -14, 44, 0xDEADBEEF, WCH1, GGO_BITMAP, TRUE, { 11, 11, { 2, 11 }, 14, 0 }, 512, s_ab },
159 { __LINE__, L"Tahoma", -14, 40, 0xDEADBEEF, WCH2, GGO_BITMAP, TRUE, { 7, 10, { 0, 10 }, 8, 0 }, 512, s_ab },
160 { __LINE__, L"Tahoma", -14, 40, 0xDEADBEEF, WCH3, GGO_BITMAP, TRUE, { 9, 10, { -1, 10 }, 8, 0 }, 512, s_ab },
161 { __LINE__, L"Tahoma", -14, 0x2C, 0xDEADBEEF, WCH4, GGO_BITMAP, TRUE, { 7, 11, { 0, 8 }, 8, 0 }, 512, s_ab },
162 { __LINE__, L"Tahoma", -14, 0x8, 0xDEADBEEF, WCH5, GGO_BITMAP, TRUE, { 1, 2, { 1, 2 }, 4, 0 }, 512, s_ab },
163
164 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 }, },
165 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 }, },
166 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 }, },
167 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 }, },
168 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 }, },
169 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 }, },
170 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
171 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
172 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
173 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
174 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
175 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
176 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
177 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
178 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
179 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
180 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
181 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
182 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, },
183 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, },
184 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, },
185 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, },
186 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, },
187 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, },
188 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
189 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
190 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
191 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
192 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
193 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
194 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
195 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
196 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
197 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
198 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
199 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
200
201 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 }, },
202 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 }, },
203 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 }, },
204 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 }, },
205 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 }, },
206 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 }, },
207 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
208 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
209 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
210 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
211 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
212 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
213 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
214 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
215 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
216 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
217 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
218 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
219 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, },
220 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, },
221 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, },
222 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, },
223 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, },
224 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, },
225 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
226 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
227 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
228 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
229 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
230 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
231 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
232 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
233 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
234 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
235 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
236 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
237
238 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH0, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, },
239 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, },
240 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, },
241 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, },
242 { __LINE__, L"Marlett", -12, 28, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 8, 9, { 2, 11 }, 12, 0 }, },
243 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, },
244 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH0, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 1, s_ab },
245 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 1, s_ab },
246 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 1, s_ab },
247 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 1, s_ab },
248 { __LINE__, L"Marlett", -12, 28, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 8, 9, { 2, 11 }, 12, 0 }, 1, s_ab },
249 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 1, s_ab },
250 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH0, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 512, s_ab },
251 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 512, s_ab },
252 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 512, s_ab },
253 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 512, s_ab },
254 { __LINE__, L"Marlett", -12, 28, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 8, 9, { 2, 11 }, 12, 0 }, 512, s_ab },
255 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 512, s_ab },
256 { __LINE__, L"Marlett", -12, 32, 0xDEADBEEF, WCH0, GGO_BITMAP, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, },
257 { __LINE__, L"Marlett", -12, 32, 0xDEADBEEF, WCH1, GGO_BITMAP, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, },
258 { __LINE__, L"Marlett", -12, 32, 0xDEADBEEF, WCH2, GGO_BITMAP, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, },
259 { __LINE__, L"Marlett", -12, 32, 0xDEADBEEF, WCH3, GGO_BITMAP, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, },
260 { __LINE__, L"Marlett", -12, 36, 0xDEADBEEF, WCH4, GGO_BITMAP, TRUE, { 8, 9, { 2, 11 }, 12, 0 }, },
261 { __LINE__, L"Marlett", -12, 32, 0xDEADBEEF, WCH5, GGO_BITMAP, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, },
262 { __LINE__, L"Marlett", -12, 32, 0xDEADBEEF, WCH0, GGO_BITMAP, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 512, s_ab },
263 { __LINE__, L"Marlett", -12, 32, 0xDEADBEEF, WCH1, GGO_BITMAP, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 512, s_ab },
264 { __LINE__, L"Marlett", -12, 32, 0xDEADBEEF, WCH2, GGO_BITMAP, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 512, s_ab },
265 { __LINE__, L"Marlett", -12, 32, 0xDEADBEEF, WCH3, GGO_BITMAP, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 512, s_ab },
266 { __LINE__, L"Marlett", -12, 36, 0xDEADBEEF, WCH4, GGO_BITMAP, TRUE, { 8, 9, { 2, 11 }, 12, 0 }, 512, s_ab },
267 { __LINE__, L"Marlett", -12, 32, 0xDEADBEEF, WCH5, GGO_BITMAP, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 512, s_ab },
268
269 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH0, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, },
270 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, },
271 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, },
272 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, },
273 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 10, 10, { 2, 12 }, 14, 0 }, },
274 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, },
275 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH0, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 1, s_ab },
276 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 1, s_ab },
277 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 1, s_ab },
278 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 1, s_ab },
279 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 10, 10, { 2, 12 }, 14, 0 }, 1, s_ab },
280 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 1, s_ab },
281 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH0, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 512, s_ab },
282 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 512, s_ab },
283 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 512, s_ab },
284 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 512, s_ab },
285 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 10, 10, { 2, 12 }, 14, 0 }, 512, s_ab },
286 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 512, s_ab },
287 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH0, GGO_BITMAP, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, },
288 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH1, GGO_BITMAP, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, },
289 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH2, GGO_BITMAP, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, },
290 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH3, GGO_BITMAP, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, },
291 { __LINE__, L"Marlett", -14, 40, 0xDEADBEEF, WCH4, GGO_BITMAP, TRUE, { 10, 10, { 2, 12 }, 14, 0 }, },
292 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH5, GGO_BITMAP, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, },
293 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH0, GGO_BITMAP, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 512, s_ab },
294 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH1, GGO_BITMAP, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 512, s_ab },
295 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH2, GGO_BITMAP, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 512, s_ab },
296 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH3, GGO_BITMAP, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 512, s_ab },
297 { __LINE__, L"Marlett", -14, 40, 0xDEADBEEF, WCH4, GGO_BITMAP, TRUE, { 10, 10, { 2, 12 }, 14, 0 }, 512, s_ab },
298 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH5, GGO_BITMAP, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 512, s_ab },
299 };
300
DoEntry(const TEST_ENTRY * pEntry)301 void DoEntry(const TEST_ENTRY *pEntry)
302 {
303 LOGFONTW lf;
304 HFONT hFont;
305 HDC hDC;
306 HGDIOBJ hFontOld;
307
308 ZeroMemory(&lf, sizeof(lf));
309
310 lf.lfHeight = pEntry->lfHeight;
311 lf.lfCharSet = DEFAULT_CHARSET;
312 lstrcpyW(lf.lfFaceName, pEntry->lfFaceName);
313
314 hFont = CreateFontIndirectW(&lf);
315 ok(hFont != NULL, "hFont was NULL\n");
316 if (hFont == NULL)
317 {
318 skip("Line %d: skipped because hFont == NULL\n", pEntry->line);
319 return;
320 }
321
322 hDC = CreateCompatibleDC(NULL);
323 ok(hDC != NULL, "hDC was NULL\n");
324 if (hDC == NULL)
325 {
326 skip("Line %d: skipped because hDC == NULL\n", pEntry->line);
327 DeleteObject(hFont);
328 return;
329 }
330
331 hFontOld = SelectObject(hDC, hFont);
332 ok(hFontOld != NULL, "SelectObject failed\n");
333 if (hFontOld == NULL)
334 {
335 skip("Line %d: skipped because SelectObject failed\n", pEntry->line);
336 }
337 else
338 {
339 DWORD dwRet, dwError;
340 GLYPHMETRICS gm;
341
342 SetLastError(0xDEADBEEF);
343
344 if (pEntry->bMetrics)
345 {
346 FillMemory(&gm, sizeof(gm), 0xCD);
347 dwRet = GetGlyphOutlineW(hDC, pEntry->wch, pEntry->uFormat, &gm, pEntry->cbBuffer, pEntry->lpvBuffer, &s_mat);
348 }
349 else
350 {
351 dwRet = GetGlyphOutlineW(hDC, pEntry->wch, pEntry->uFormat, NULL, pEntry->cbBuffer, pEntry->lpvBuffer, &s_mat);
352 }
353 dwError = GetLastError();
354
355 ok(dwRet == pEntry->dwRet, "Line %d: dwRet expected 0x%lX, was 0x%lX\n", pEntry->line, pEntry->dwRet, dwRet);
356 ok(dwError == pEntry->dwError, "Line %d: dwError expected 0x%lX, was 0x%lX\n", pEntry->line, pEntry->dwError, dwError);
357
358 if (pEntry->bMetrics)
359 {
360 ok(gm.gmBlackBoxX == pEntry->gm.gmBlackBoxX, "Line %d: gm.gmBlackBoxX expected 0x%X, was 0x%X\n", pEntry->line, pEntry->gm.gmBlackBoxX, gm.gmBlackBoxX);
361 ok(gm.gmBlackBoxY == pEntry->gm.gmBlackBoxY, "Line %d: gm.gmBlackBoxY expected 0x%X, was 0x%X\n", pEntry->line, pEntry->gm.gmBlackBoxY, gm.gmBlackBoxY);
362 ok(gm.gmptGlyphOrigin.x == pEntry->gm.gmptGlyphOrigin.x, "Line %d: gm.gmptGlyphOrigin.x expected %ld, was %ld\n", pEntry->line, pEntry->gm.gmptGlyphOrigin.x, gm.gmptGlyphOrigin.x);
363 ok(gm.gmptGlyphOrigin.y == pEntry->gm.gmptGlyphOrigin.y, "Line %d: gm.gmptGlyphOrigin.y expected %ld, was %ld\n", pEntry->line, pEntry->gm.gmptGlyphOrigin.y, gm.gmptGlyphOrigin.y);
364 ok(gm.gmCellIncX == pEntry->gm.gmCellIncX, "Line %d: gm.gmCellIncX expected %d, was %d\n", pEntry->line, pEntry->gm.gmCellIncX, gm.gmCellIncX);
365 ok(gm.gmCellIncY == pEntry->gm.gmCellIncY, "Line %d: gm.gmCellIncY expected %d, was %d\n", pEntry->line, pEntry->gm.gmCellIncY, gm.gmCellIncY);
366 }
367 SelectObject(hDC, hFontOld);
368 }
369
370 DeleteObject(hFont);
371 DeleteDC(hDC);
372 }
373
START_TEST(GetGlyphOutline)374 START_TEST(GetGlyphOutline)
375 {
376 SIZE_T i, count = ARRAYSIZE(s_entries);
377 for (i = 0; i < count; ++i)
378 {
379 DoEntry(&s_entries[i]);
380 }
381 }
382