ReactOS 0.4.17-dev-482-g1b46029
GetGlyphOutline.c
Go to the documentation of this file.
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#include "undocgdi.h"
10
11typedef struct TEST_ENTRY
12{
13 INT line;
25
26static const MAT2 s_mat = { {0,1}, {0,0}, {0,0}, {0,1} };
27
28static BYTE s_ab[512];
29
30#define WCH0 0
31#define WCH1 0xFFFF
32#define WCH2 L'A'
33#define WCH3 L'T'
34#define WCH4 L'g'
35#define WCH5 L'.'
36
37static const TEST_ENTRY s_entries[] =
38{
39 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 } },
40 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 } },
41 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 } },
42 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 } },
43 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 } },
44 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 } },
45 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
46 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
47 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
48 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
49 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
50 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
51 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
52 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
53 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
54 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
55 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
56 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
57 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, },
58 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, },
59 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, },
60 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, },
61 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, },
62 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, },
63 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
64 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
65 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
66 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
67 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
68 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
69 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
70 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
71 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
72 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
73 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
74 { __LINE__, L"Tahoma", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
75
76 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 } },
77 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 } },
78 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 } },
79 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 } },
80 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 } },
81 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 } },
82 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
83 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
84 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
85 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
86 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
87 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
88 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
89 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
90 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
91 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
92 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
93 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
94 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, },
95 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, },
96 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, },
97 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, },
98 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, },
99 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, },
100 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
101 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
102 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
103 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
104 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
105 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
106 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
107 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
108 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
109 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
110 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
111 { __LINE__, L"Tahoma", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
112
113 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 9, 9, { 2, 9 }, 12, 0 }, },
114 { __LINE__, L"Tahoma", -12, 28, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 7, 9, { 0, 9 }, 8, 0 }, },
115 { __LINE__, L"Tahoma", -12, 28, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 7, 9, { 0, 9 }, 8, 0 }, },
116 { __LINE__, L"Tahoma", -12, 28, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 6, 9, { 0, 7 }, 7, 0 }, },
117 { __LINE__, L"Tahoma", -12, 20, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 1, 2, { 1, 2 }, 4, 0 }, },
118 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 9, 9, { 2, 9 }, 12, 0 }, 1, s_ab },
119 { __LINE__, L"Tahoma", -12, 28, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 7, 9, { 0, 9 }, 8, 0 }, 1, s_ab },
120 { __LINE__, L"Tahoma", -12, 28, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 7, 9, { 0, 9 }, 8, 0 }, 1, s_ab },
121 { __LINE__, L"Tahoma", -12, 28, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 6, 9, { 0, 7 }, 7, 0 }, 1, s_ab },
122 { __LINE__, L"Tahoma", -12, 20, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 1, 2, { 1, 2 }, 4, 0 }, 1, s_ab },
123 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 9, 9, { 2, 9 }, 12, 0 }, 512, s_ab },
124 { __LINE__, L"Tahoma", -12, 28, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 7, 9, { 0, 9 }, 8, 0 }, 512, s_ab },
125 { __LINE__, L"Tahoma", -12, 28, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 7, 9, { 0, 9 }, 8, 0 }, 512, s_ab },
126 { __LINE__, L"Tahoma", -12, 28, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 6, 9, { 0, 7 }, 7, 0 }, 512, s_ab },
127 { __LINE__, L"Tahoma", -12, 20, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 1, 2, { 1, 2 }, 4, 0 }, 512, s_ab },
128 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH1, GGO_BITMAP, TRUE, { 9, 9, { 2, 9 }, 12, 0 }, },
129 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH2, GGO_BITMAP, TRUE, { 7, 9, { 0, 9 }, 8, 0 }, },
130 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH3, GGO_BITMAP, TRUE, { 7, 9, { 0, 9 }, 8, 0 }, },
131 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH4, GGO_BITMAP, TRUE, { 6, 9, { 0, 7 }, 7, 0 }, },
132 { __LINE__, L"Tahoma", -12, 8, 0xDEADBEEF, WCH5, GGO_BITMAP, TRUE, { 1, 2, { 1, 2 }, 4, 0 }, },
133 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH1, GGO_BITMAP, TRUE, { 9, 9, { 2, 9 }, 12, 0 }, 512, s_ab },
134 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH2, GGO_BITMAP, TRUE, { 7, 9, { 0, 9 }, 8, 0 }, 512, s_ab },
135 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH3, GGO_BITMAP, TRUE, { 7, 9, { 0, 9 }, 8, 0 }, 512, s_ab },
136 { __LINE__, L"Tahoma", -12, 36, 0xDEADBEEF, WCH4, GGO_BITMAP, TRUE, { 6, 9, { 0, 7 }, 7, 0 }, 512, s_ab },
137 { __LINE__, L"Tahoma", -12, 8, 0xDEADBEEF, WCH5, GGO_BITMAP, TRUE, { 1, 2, { 1, 2 }, 4, 0 }, 512, s_ab },
138
139 { __LINE__, L"Tahoma", -14, 40, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 11, 11, { 2, 11 }, 14, 0 }, },
140 { __LINE__, L"Tahoma", -14, 28, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 7, 10, { 0, 10 }, 8, 0 }, },
141 { __LINE__, L"Tahoma", -14, 36, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 9, 10, { -1, 10 }, 8, 0 }, },
142 { __LINE__, L"Tahoma", -14, 28, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 7, 11, { 0, 8 }, 8, 0 }, },
143 { __LINE__, L"Tahoma", -14, 20, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 1, 2, { 1, 2 }, 4, 0 }, },
144 { __LINE__, L"Tahoma", -14, 40, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 11, 11, { 2, 11 }, 14, 0 }, 1, s_ab },
145 { __LINE__, L"Tahoma", -14, 28, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 7, 10, { 0, 10 }, 8, 0 }, 1, s_ab },
146 { __LINE__, L"Tahoma", -14, 36, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 9, 10, { -1, 10 }, 8, 0 }, 1, s_ab },
147 { __LINE__, L"Tahoma", -14, 28, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 7, 11, { 0, 8 }, 8, 0 }, 1, s_ab },
148 { __LINE__, L"Tahoma", -14, 20, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 1, 2, { 1, 2 }, 4, 0 }, 1, s_ab },
149 { __LINE__, L"Tahoma", -14, 40, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 11, 11, { 2, 11 }, 14, 0 }, 512, s_ab },
150 { __LINE__, L"Tahoma", -14, 28, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 7, 10, { 0, 10 }, 8, 0 }, 512, s_ab },
151 { __LINE__, L"Tahoma", -14, 36, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 9, 10, { -1, 10 }, 8, 0 }, 512, s_ab },
152 { __LINE__, L"Tahoma", -14, 28, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 7, 11, { 0, 8 }, 8, 0 }, 512, s_ab },
153 { __LINE__, L"Tahoma", -14, 20, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 1, 2, { 1, 2 }, 4, 0 }, 512, s_ab },
154 { __LINE__, L"Tahoma", -14, 44, 0xDEADBEEF, WCH1, GGO_BITMAP, TRUE, { 11, 11, { 2, 11 }, 14, 0 }, },
155 { __LINE__, L"Tahoma", -14, 40, 0xDEADBEEF, WCH2, GGO_BITMAP, TRUE, { 7, 10, { 0, 10 }, 8, 0 }, },
156 { __LINE__, L"Tahoma", -14, 40, 0xDEADBEEF, WCH3, GGO_BITMAP, TRUE, { 9, 10, { -1, 10 }, 8, 0 }, },
157 { __LINE__, L"Tahoma", -14, 0x2C, 0xDEADBEEF, WCH4, GGO_BITMAP, TRUE, { 7, 11, { 0, 8 }, 8, 0 }, },
158 { __LINE__, L"Tahoma", -14, 0x8, 0xDEADBEEF, WCH5, GGO_BITMAP, TRUE, { 1, 2, { 1, 2 }, 4, 0 }, },
159 { __LINE__, L"Tahoma", -14, 44, 0xDEADBEEF, WCH1, GGO_BITMAP, TRUE, { 11, 11, { 2, 11 }, 14, 0 }, 512, s_ab },
160 { __LINE__, L"Tahoma", -14, 40, 0xDEADBEEF, WCH2, GGO_BITMAP, TRUE, { 7, 10, { 0, 10 }, 8, 0 }, 512, s_ab },
161 { __LINE__, L"Tahoma", -14, 40, 0xDEADBEEF, WCH3, GGO_BITMAP, TRUE, { 9, 10, { -1, 10 }, 8, 0 }, 512, s_ab },
162 { __LINE__, L"Tahoma", -14, 0x2C, 0xDEADBEEF, WCH4, GGO_BITMAP, TRUE, { 7, 11, { 0, 8 }, 8, 0 }, 512, s_ab },
163 { __LINE__, L"Tahoma", -14, 0x8, 0xDEADBEEF, WCH5, GGO_BITMAP, TRUE, { 1, 2, { 1, 2 }, 4, 0 }, 512, s_ab },
164
165 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 }, },
166 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 }, },
167 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 }, },
168 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 }, },
169 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 }, },
170 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 }, },
171 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
172 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
173 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
174 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
175 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
176 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
177 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
178 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
179 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
180 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
181 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
182 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
183 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, },
184 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, },
185 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, },
186 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, },
187 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, },
188 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, },
189 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
190 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
191 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
192 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
193 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
194 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
195 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
196 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
197 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
198 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
199 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
200 { __LINE__, L"Marlett", -12, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
201
202 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 }, },
203 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 }, },
204 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 }, },
205 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 }, },
206 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 }, },
207 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 }, },
208 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
209 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
210 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
211 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
212 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
213 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 }, 1, s_ab },
214 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
215 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
216 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
217 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
218 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
219 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_METRICS, FALSE, { 0 }, 512, s_ab },
220 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, },
221 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, },
222 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, },
223 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, },
224 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, },
225 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, },
226 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
227 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
228 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
229 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
230 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
231 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, 1, s_ab },
232 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH0, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
233 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH1, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
234 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH2, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
235 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH3, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
236 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH4, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
237 { __LINE__, L"Marlett", -14, GDI_ERROR, 0xDEADBEEF, WCH5, GGO_BITMAP, FALSE, { 0 }, 512, s_ab },
238
239 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH0, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, },
240 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, },
241 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, },
242 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, },
243 { __LINE__, L"Marlett", -12, 28, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 8, 9, { 2, 11 }, 12, 0 }, },
244 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, },
245 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH0, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 1, s_ab },
246 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 1, s_ab },
247 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 1, s_ab },
248 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 1, s_ab },
249 { __LINE__, L"Marlett", -12, 28, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 8, 9, { 2, 11 }, 12, 0 }, 1, s_ab },
250 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 1, s_ab },
251 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH0, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 512, s_ab },
252 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 512, s_ab },
253 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 512, s_ab },
254 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 512, s_ab },
255 { __LINE__, L"Marlett", -12, 28, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 8, 9, { 2, 11 }, 12, 0 }, 512, s_ab },
256 { __LINE__, L"Marlett", -12, 24, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 512, s_ab },
257 { __LINE__, L"Marlett", -12, 32, 0xDEADBEEF, WCH0, GGO_BITMAP, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, },
258 { __LINE__, L"Marlett", -12, 32, 0xDEADBEEF, WCH1, GGO_BITMAP, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, },
259 { __LINE__, L"Marlett", -12, 32, 0xDEADBEEF, WCH2, GGO_BITMAP, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, },
260 { __LINE__, L"Marlett", -12, 32, 0xDEADBEEF, WCH3, GGO_BITMAP, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, },
261 { __LINE__, L"Marlett", -12, 36, 0xDEADBEEF, WCH4, GGO_BITMAP, TRUE, { 8, 9, { 2, 11 }, 12, 0 }, },
262 { __LINE__, L"Marlett", -12, 32, 0xDEADBEEF, WCH5, GGO_BITMAP, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, },
263 { __LINE__, L"Marlett", -12, 32, 0xDEADBEEF, WCH0, GGO_BITMAP, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 512, s_ab },
264 { __LINE__, L"Marlett", -12, 32, 0xDEADBEEF, WCH1, GGO_BITMAP, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 512, s_ab },
265 { __LINE__, L"Marlett", -12, 32, 0xDEADBEEF, WCH2, GGO_BITMAP, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 512, s_ab },
266 { __LINE__, L"Marlett", -12, 32, 0xDEADBEEF, WCH3, GGO_BITMAP, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 512, s_ab },
267 { __LINE__, L"Marlett", -12, 36, 0xDEADBEEF, WCH4, GGO_BITMAP, TRUE, { 8, 9, { 2, 11 }, 12, 0 }, 512, s_ab },
268 { __LINE__, L"Marlett", -12, 32, 0xDEADBEEF, WCH5, GGO_BITMAP, TRUE, { 5, 8, { 0, 8 }, 6, 0 }, 512, s_ab },
269
270 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH0, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, },
271 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, },
272 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, },
273 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, },
274 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 10, 10, { 2, 12 }, 14, 0 }, },
275 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, },
276 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH0, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 1, s_ab },
277 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 1, s_ab },
278 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 1, s_ab },
279 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 1, s_ab },
280 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 10, 10, { 2, 12 }, 14, 0 }, 1, s_ab },
281 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 1, s_ab },
282 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH0, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 512, s_ab },
283 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH1, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 512, s_ab },
284 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH2, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 512, s_ab },
285 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH3, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 512, s_ab },
286 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH4, GGO_METRICS, TRUE, { 10, 10, { 2, 12 }, 14, 0 }, 512, s_ab },
287 { __LINE__, L"Marlett", -14, 28, 0xDEADBEEF, WCH5, GGO_METRICS, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 512, s_ab },
288 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH0, GGO_BITMAP, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, },
289 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH1, GGO_BITMAP, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, },
290 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH2, GGO_BITMAP, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, },
291 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH3, GGO_BITMAP, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, },
292 { __LINE__, L"Marlett", -14, 40, 0xDEADBEEF, WCH4, GGO_BITMAP, TRUE, { 10, 10, { 2, 12 }, 14, 0 }, },
293 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH5, GGO_BITMAP, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, },
294 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH0, GGO_BITMAP, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 512, s_ab },
295 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH1, GGO_BITMAP, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 512, s_ab },
296 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH2, GGO_BITMAP, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 512, s_ab },
297 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH3, GGO_BITMAP, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 512, s_ab },
298 { __LINE__, L"Marlett", -14, 40, 0xDEADBEEF, WCH4, GGO_BITMAP, TRUE, { 10, 10, { 2, 12 }, 14, 0 }, 512, s_ab },
299 { __LINE__, L"Marlett", -14, 36, 0xDEADBEEF, WCH5, GGO_BITMAP, TRUE, { 6, 9, { 0, 9 }, 7, 0 }, 512, s_ab },
300};
301
302static void DoEntryW(HDC hDC, const TEST_ENTRY *pEntry)
303{
304 LOGFONTW lf;
305 HFONT hFont;
306 HGDIOBJ hFontOld;
307
308 ZeroMemory(&lf, sizeof(lf));
309
310 lf.lfHeight = pEntry->lfHeight;
312 lstrcpyW(lf.lfFaceName, pEntry->lfFaceName);
313
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 hFontOld = SelectObject(hDC, hFont);
323 ok(hFontOld != NULL, "SelectObject failed\n");
324 if (hFontOld == NULL)
325 {
326 skip("Line %d: skipped because SelectObject failed\n", pEntry->line);
327 }
328 else
329 {
330 DWORD dwRet, dwError;
331 GLYPHMETRICS gm;
332
333 SetLastError(0xDEADBEEF);
334
335 if (pEntry->bMetrics)
336 {
337 FillMemory(&gm, sizeof(gm), 0xCD);
338 dwRet = GetGlyphOutlineW(hDC, pEntry->wch, pEntry->uFormat, &gm, pEntry->cbBuffer, pEntry->lpvBuffer, &s_mat);
339 }
340 else
341 {
342 dwRet = GetGlyphOutlineW(hDC, pEntry->wch, pEntry->uFormat, NULL, pEntry->cbBuffer, pEntry->lpvBuffer, &s_mat);
343 }
344 dwError = GetLastError();
345
346 ok(dwRet == pEntry->dwRet, "Line %d: dwRet expected 0x%lX, was 0x%lX\n", pEntry->line, pEntry->dwRet, dwRet);
347 ok(dwError == pEntry->dwError, "Line %d: dwError expected 0x%lX, was 0x%lX\n", pEntry->line, pEntry->dwError, dwError);
348
349 if (pEntry->bMetrics)
350 {
351 ok(gm.gmBlackBoxX == pEntry->gm.gmBlackBoxX, "Line %d: gm.gmBlackBoxX expected 0x%X, was 0x%X\n", pEntry->line, pEntry->gm.gmBlackBoxX, gm.gmBlackBoxX);
352 ok(gm.gmBlackBoxY == pEntry->gm.gmBlackBoxY, "Line %d: gm.gmBlackBoxY expected 0x%X, was 0x%X\n", pEntry->line, pEntry->gm.gmBlackBoxY, gm.gmBlackBoxY);
353 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);
354 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);
355 ok(gm.gmCellIncX == pEntry->gm.gmCellIncX, "Line %d: gm.gmCellIncX expected %d, was %d\n", pEntry->line, pEntry->gm.gmCellIncX, gm.gmCellIncX);
356 ok(gm.gmCellIncY == pEntry->gm.gmCellIncY, "Line %d: gm.gmCellIncY expected %d, was %d\n", pEntry->line, pEntry->gm.gmCellIncY, gm.gmCellIncY);
357 }
358 SelectObject(hDC, hFontOld);
359 }
360
362}
363
365{
367 for (i = 0; i < count; ++i)
368 {
370 }
371}
372
374{
375 LOGFONTW lf;
376 ZeroMemory(&lf, sizeof(lf));
377 lf.lfHeight = 100;
379 lstrcpynW(lf.lfFaceName, L"Arial", _countof(lf.lfFaceName));
380 HFONT hFont = CreateFontIndirectW(&lf);
381 ok(hFont != NULL, "hFont was NULL\n");
382
383 HGDIOBJ hFontOld = SelectObject(hDC, hFont);
384
385 GLYPHMETRICS gm;
386 ZeroMemory(&gm, sizeof(gm));
387
388 DWORD ret;
389
390 ret = GetGlyphOutlineA(hDC, 'A', GGO_NATIVE, &gm, 0, NULL, &s_mat);
391 ok(ret != GDI_ERROR && ret != 0, "ret was 0x%lX\n", ret);
392
393 ret = GetGlyphOutlineA(hDC, 'A', GGO_BITMAP, &gm, 0, NULL, &s_mat);
394 ok(ret != GDI_ERROR && ret != 0, "ret was 0x%lX\n", ret);
395
396 ret = GetGlyphOutlineA(hDC, 'A', GGO_METRICS, &gm, 0, NULL, &s_mat);
397 ok(ret != GDI_ERROR, "ret was 0x%lX\n", ret);
398
399 SelectObject(hDC, hFontOld);
401}
402
404
406{
407 HINSTANCE hGDI32 = GetModuleHandleA("gdi32");
408 FN_GetGlyphOutlineWow fnGetGlyphOutlineWow =
409 (FN_GetGlyphOutlineWow)GetProcAddress(hGDI32, "GetGlyphOutlineWow");
410 if (!fnGetGlyphOutlineWow)
411 {
412 skip("GetGlyphOutlineWow not found\n");
413 return;
414 }
415
416 LOGFONTW lf;
417 ZeroMemory(&lf, sizeof(lf));
418 lf.lfHeight = 100;
420 lstrcpynW(lf.lfFaceName, L"Arial", _countof(lf.lfFaceName));
421 HFONT hFont = CreateFontIndirectW(&lf);
422 ok(hFont != NULL, "hFont was NULL\n");
423
424 HGDIOBJ hFontOld = SelectObject(hDC, hFont);
425
426 GLYPHMETRICS gm;
427 ZeroMemory(&gm, sizeof(gm));
428
429 DWORD ret;
430
431 ret = fnGetGlyphOutlineWow(hDC, 'A', GGO_NATIVE, &gm, 0, NULL, &s_mat);
432 ok(ret != GDI_ERROR && ret != 0, "ret was 0x%lX\n", ret);
433
434 ret = fnGetGlyphOutlineWow(hDC, 'A', GGO_BITMAP, &gm, 0, NULL, &s_mat);
435 ok(ret != GDI_ERROR && ret != 0, "ret was 0x%lX\n", ret);
436
437 ret = fnGetGlyphOutlineWow(hDC, 'A', GGO_METRICS, &gm, 0, NULL, &s_mat);
438 ok(ret != GDI_ERROR, "ret was 0x%lX\n", ret);
439
440 SelectObject(hDC, hFontOld);
442}
443
445{
450 DeleteDC(hDC);
451}
static HDC hDC
Definition: 3dtext.c:33
static const MAT2 s_mat
static const TEST_ENTRY s_entries[]
static void TEST_GetGlyphOutlineW(HDC hDC)
#define WCH2
DWORD(WINAPI * FN_GetGlyphOutlineWow)(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, LPVOID, CONST MAT2 *)
#define WCH5
static void TEST_GetGlyphOutlineA(HDC hDC)
static BYTE s_ab[512]
#define WCH0
struct TEST_ENTRY TEST_ENTRY
#define WCH4
#define WCH1
static void DoEntryW(HDC hDC, const TEST_ENTRY *pEntry)
#define WCH3
static void TEST_GetGlyphOutlineWow(HDC hDC)
#define ok(value,...)
Definition: atltest.h:57
#define skip(...)
Definition: atltest.h:64
#define START_TEST(x)
Definition: atltest.h:75
HFONT hFont
Definition: main.c:53
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define ARRAYSIZE(array)
Definition: filtermapper.c:47
#define SetLastError(x)
Definition: compat.h:752
#define GetProcAddress(x, y)
Definition: compat.h:753
#define lstrcpyW
Definition: compat.h:749
#define lstrcpynW
Definition: compat.h:738
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
Definition: loader.c:812
return ret
Definition: mutex.c:146
#define L(x)
Definition: resources.c:13
#define FillMemory(BUF, SIZ, MASK)
Definition: strucsup.c:31
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
PLIST_ENTRY pEntry
Definition: fxioqueue.cpp:4484
pKey DeleteObject()
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned int UINT
Definition: sysinfo.c:13
#define ZeroMemory
Definition: minwinbase.h:31
static HDC
Definition: imagelist.c:88
#define LPVOID
Definition: nt_native.h:45
#define DWORD
Definition: nt_native.h:44
#define CONST
Definition: pedump.c:81
short WCHAR
Definition: pedump.c:58
long LONG
Definition: pedump.c:60
#define _countof(array)
Definition: sndvol32.h:70
LONG lfHeight
Definition: dimm.idl:59
WCHAR lfFaceName[LF_FACESIZE]
Definition: dimm.idl:72
BYTE lfCharSet
Definition: dimm.idl:67
Definition: cmd.c:13
INT line
Definition: cmd.c:14
DWORD dwError
BOOL bMetrics
UINT uFormat
LPVOID lpvBuffer
WCHAR wch
DWORD cbBuffer
DWORD dwRet
LONG lfHeight
GLYPHMETRICS gm
LPCWSTR lfFaceName
short gmCellIncX
Definition: wingdi.h:2891
UINT gmBlackBoxY
Definition: wingdi.h:2889
UINT gmBlackBoxX
Definition: wingdi.h:2888
short gmCellIncY
Definition: wingdi.h:2892
POINT gmptGlyphOrigin
Definition: wingdi.h:2890
Definition: wingdi.h:2918
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
const uint16_t * LPCWSTR
Definition: typedefs.h:57
ULONG_PTR SIZE_T
Definition: typedefs.h:80
int32_t INT
Definition: typedefs.h:58
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define WINAPI
Definition: msvc.h:6
#define GetGlyphOutline
Definition: wingdi.h:4909
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1546
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
struct _GLYPHMETRICS * LPGLYPHMETRICS
#define DEFAULT_CHARSET
Definition: wingdi.h:384
#define GDI_ERROR
Definition: wingdi.h:1309
#define GGO_BITMAP
Definition: wingdi.h:849
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
BOOL WINAPI DeleteDC(_In_ HDC)
#define GGO_NATIVE
Definition: wingdi.h:850
#define GGO_METRICS
Definition: wingdi.h:848
DWORD WINAPI GetGlyphOutlineW(_In_ HDC hdc, _In_ UINT uChar, _In_ UINT fuFormat, _Out_ LPGLYPHMETRICS lpgm, _In_ DWORD cjBuffer, _Out_writes_bytes_opt_(cjBuffer) LPVOID pvBuffer, _In_ CONST MAT2 *lpmat2)
DWORD WINAPI GetGlyphOutlineA(_In_ HDC hdc, _In_ UINT uChar, _In_ UINT fuFormat, _Out_ LPGLYPHMETRICS lpgm, _In_ DWORD cjBuffer, _Out_writes_bytes_opt_(cjBuffer) LPVOID pvBuffer, _In_ CONST MAT2 *lpmat2)
unsigned char BYTE
Definition: xxhash.c:193