1 /*
2 * PROJECT: ReactOS api tests
3 * LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
4 * PURPOSE: Test for NtGdiTransformPoints
5 * COPYRIGHT: Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
6 */
7
8 #include "../win32nt.h"
9
START_TEST(NtGdiTransformPoints)10 START_TEST(NtGdiTransformPoints)
11 {
12 HDC hDC;
13 POINT apt1[3], apt2[3];
14 BOOL ret;
15 SIZE siz;
16
17 /* NULL HDC */
18
19 SetLastError(0xDEADBEEF);
20 ret = NtGdiTransformPoints(NULL, NULL, NULL, 0, GdiDpToLp);
21 ok_int(ret, TRUE);
22 ok_err(0xDEADBEEF);
23
24 SetLastError(0xDEADBEEF);
25 ret = NtGdiTransformPoints(NULL, NULL, NULL, 1, GdiDpToLp);
26 ok_int(ret, FALSE);
27 ok_err(0xDEADBEEF);
28
29 SetLastError(0xDEADBEEF);
30 ret = NtGdiTransformPoints(NULL, apt1, NULL, 1, GdiDpToLp);
31 ok_int(ret, FALSE);
32 ok_err(0xDEADBEEF);
33
34 SetLastError(0xDEADBEEF);
35 ret = NtGdiTransformPoints(NULL, NULL, apt2, 1, GdiDpToLp);
36 ok_int(ret, FALSE);
37 ok_err(0xDEADBEEF);
38
39 SetLastError(0xDEADBEEF);
40 ret = NtGdiTransformPoints(NULL, apt1, apt1, 0, GdiDpToLp);
41 ok_int(ret, TRUE);
42 ok_err(0xDEADBEEF);
43
44 SetLastError(0xDEADBEEF);
45 ret = NtGdiTransformPoints(NULL, apt1, apt2, 0, GdiDpToLp);
46 ok_int(ret, TRUE);
47 ok_err(0xDEADBEEF);
48
49 SetLastError(0xDEADBEEF);
50 ret = NtGdiTransformPoints(NULL, apt1, apt2, 1, GdiDpToLp);
51 ok_int(ret, FALSE);
52 ok_err(0xDEADBEEF);
53
54 /* (HDC)1 */
55
56 SetLastError(0xDEADBEEF);
57 ret = NtGdiTransformPoints((HDC)1, NULL, NULL, 0, GdiDpToLp);
58 ok_int(ret, TRUE);
59 ok_err(0xDEADBEEF);
60
61 SetLastError(0xDEADBEEF);
62 ret = NtGdiTransformPoints((HDC)1, NULL, NULL, 1, GdiDpToLp);
63 ok_int(ret, FALSE);
64 ok_err(0xDEADBEEF);
65
66 SetLastError(0xDEADBEEF);
67 ret = NtGdiTransformPoints((HDC)1, apt1, NULL, 1, GdiDpToLp);
68 ok_int(ret, FALSE);
69 ok_err(0xDEADBEEF);
70
71 SetLastError(0xDEADBEEF);
72 ret = NtGdiTransformPoints((HDC)1, NULL, apt2, 1, GdiDpToLp);
73 ok_int(ret, FALSE);
74 ok_err(0xDEADBEEF);
75
76 SetLastError(0xDEADBEEF);
77 ret = NtGdiTransformPoints((HDC)1, apt1, apt1, 0, GdiDpToLp);
78 ok_int(ret, TRUE);
79 ok_err(0xDEADBEEF);
80
81 SetLastError(0xDEADBEEF);
82 ret = NtGdiTransformPoints((HDC)1, apt1, apt2, 0, GdiDpToLp);
83 ok_int(ret, TRUE);
84 ok_err(0xDEADBEEF);
85
86 SetLastError(0xDEADBEEF);
87 ret = NtGdiTransformPoints((HDC)1, apt1, apt2, 1, GdiDpToLp);
88 ok_int(ret, FALSE);
89 ok_err(0xDEADBEEF);
90
91 /* hDC */
92
93 hDC = CreateCompatibleDC(NULL);
94 ok(hDC != NULL, "hDC was NULL\n");
95
96 SetMapMode(hDC, MM_TEXT);
97
98 SetLastError(0xDEADBEEF);
99 ret = NtGdiTransformPoints(hDC, NULL, NULL, 0, GdiDpToLp);
100 ok_int(ret, TRUE);
101 ok_err(0xDEADBEEF);
102
103 SetLastError(0xDEADBEEF);
104 ret = NtGdiTransformPoints(hDC, NULL, NULL, 1, GdiDpToLp);
105 ok_int(ret, FALSE);
106 ok_err(0xDEADBEEF);
107
108 SetLastError(0xDEADBEEF);
109 ret = NtGdiTransformPoints(hDC, apt1, NULL, 1, GdiDpToLp);
110 ok_int(ret, FALSE);
111 ok_err(0xDEADBEEF);
112
113 SetLastError(0xDEADBEEF);
114 ret = NtGdiTransformPoints(hDC, NULL, apt2, 1, GdiDpToLp);
115 ok_int(ret, FALSE);
116 ok_err(0xDEADBEEF);
117
118 SetLastError(0xDEADBEEF);
119 ret = NtGdiTransformPoints(hDC, apt1, apt1, 0, GdiDpToLp);
120 ok_int(ret, TRUE);
121 ok_err(0xDEADBEEF);
122
123 SetLastError(0xDEADBEEF);
124 ret = NtGdiTransformPoints(hDC, apt1, apt2, 0, GdiDpToLp);
125 ok_int(ret, TRUE);
126 ok_err(0xDEADBEEF);
127
128 SetLastError(0xDEADBEEF);
129 apt1[0].x = apt1[0].y = 256;
130 ret = NtGdiTransformPoints(hDC, apt1, apt1, 1, GdiDpToLp);
131 ok_int(ret, TRUE);
132 ok_err(0xDEADBEEF);
133 ok_long(apt1[0].x, 256);
134 ok_long(apt1[0].y, 256);
135
136 SetLastError(0xDEADBEEF);
137 apt1[0].x = apt1[0].y = 256;
138 apt2[0].x = apt2[0].y = 0xBEEFDEAD;
139 ret = NtGdiTransformPoints(hDC, apt1, apt2, 0, GdiDpToLp);
140 ok_int(ret, TRUE);
141 ok_err(0xDEADBEEF);
142 ok_long(apt1[0].x, 256);
143 ok_long(apt1[0].y, 256);
144 ok_long(apt2[0].x, 0xBEEFDEAD);
145 ok_long(apt2[0].x, 0xBEEFDEAD);
146
147 SetLastError(0xDEADBEEF);
148 apt1[0].x = apt1[0].y = 256;
149 apt2[0].x = apt2[0].y = 0xBEEFDEAD;
150 ret = NtGdiTransformPoints(hDC, apt1, apt2, 1, GdiDpToLp);
151 ok_int(ret, TRUE);
152 ok_err(0xDEADBEEF);
153 ok_long(apt1[0].x, 256);
154 ok_long(apt1[0].y, 256);
155 ok_long(apt2[0].x, 256);
156 ok_long(apt2[0].x, 256);
157
158 /* MM_ISOTROPIC */
159
160 SetMapMode(hDC, MM_ISOTROPIC);
161 ok_int(SetWindowExtEx(hDC, 10, 10, NULL), TRUE);
162 ok_int(GetWindowExtEx(hDC, &siz), TRUE);
163 ok_long(siz.cx, 10);
164 ok_long(siz.cy, 10);
165 ok_int(SetViewportExtEx(hDC, 100, 100, NULL), TRUE);
166 ok_int(GetViewportExtEx(hDC, &siz), TRUE);
167 ok_long(siz.cx, 100);
168 ok_long(siz.cy, 100);
169 SetLastError(0xDEADBEEF);
170 apt1[0].x = apt1[0].y = 256;
171 apt2[0].x = apt2[0].y = 0xBEEFDEAD;
172 ret = NtGdiTransformPoints(hDC, apt1, apt2, 1, GdiDpToLp);
173 ok_int(ret, TRUE);
174 ok_err(0xDEADBEEF);
175 ok_long(apt1[0].x, 256);
176 ok_long(apt1[0].y, 256);
177 ok_long(apt2[0].x, 26);
178 ok_long(apt2[0].x, 26);
179
180 SetMapMode(hDC, MM_ISOTROPIC);
181 ok_int(SetWindowExtEx(hDC, 10, 10, NULL), TRUE);
182 ok_int(GetWindowExtEx(hDC, &siz), TRUE);
183 ok_long(siz.cx, 10);
184 ok_long(siz.cy, 10);
185 ok_int(SetViewportExtEx(hDC, 20, 100, NULL), TRUE);
186 ok_int(GetViewportExtEx(hDC, &siz), TRUE);
187 ok_long(siz.cx, 20);
188 ok_long(siz.cy, 20);
189 SetLastError(0xDEADBEEF);
190 apt1[0].x = apt1[0].y = 256;
191 apt2[0].x = apt2[0].y = 0xBEEFDEAD;
192 ret = NtGdiTransformPoints(hDC, apt1, apt2, 1, GdiDpToLp);
193 ok_int(ret, TRUE);
194 ok_err(0xDEADBEEF);
195 ok_long(apt1[0].x, 256);
196 ok_long(apt1[0].y, 256);
197 ok_long(apt2[0].x, 128);
198 ok_long(apt2[0].x, 128);
199
200 SetMapMode(hDC, MM_ISOTROPIC);
201 ok_int(SetWindowExtEx(hDC, 10, 10, NULL), TRUE);
202 ok_int(GetWindowExtEx(hDC, &siz), TRUE);
203 ok_long(siz.cx, 10);
204 ok_long(siz.cy, 10);
205 ok_int(SetViewportExtEx(hDC, 100, 0, NULL), TRUE);
206 ok_int(GetViewportExtEx(hDC, &siz), TRUE);
207 ok_long(siz.cx, 20);
208 ok_long(siz.cy, 20);
209 SetLastError(0xDEADBEEF);
210 apt1[0].x = apt1[0].y = 256;
211 apt2[0].x = apt2[0].y = 0xBEEFDEAD;
212 ret = NtGdiTransformPoints(hDC, apt1, apt2, 1, GdiDpToLp);
213 ok_int(ret, TRUE);
214 ok_err(0xDEADBEEF);
215 ok_long(apt1[0].x, 256);
216 ok_long(apt1[0].y, 256);
217 ok_long(apt2[0].x, 128);
218 ok_long(apt2[0].x, 128);
219
220 SetMapMode(hDC, MM_ISOTROPIC);
221 ok_int(SetWindowExtEx(hDC, 10, 10, NULL), TRUE);
222 ok_int(GetWindowExtEx(hDC, &siz), TRUE);
223 ok_long(siz.cx, 10);
224 ok_long(siz.cy, 10);
225 ok_int(SetViewportExtEx(hDC, 0, 100, NULL), TRUE);
226 ok_int(GetViewportExtEx(hDC, &siz), TRUE);
227 ok_long(siz.cx, 20);
228 ok_long(siz.cy, 20);
229 SetLastError(0xDEADBEEF);
230 apt1[0].x = apt1[0].y = 256;
231 apt2[0].x = apt2[0].y = 0xBEEFDEAD;
232 ret = NtGdiTransformPoints(hDC, apt1, apt2, 1, GdiDpToLp);
233 ok_int(ret, TRUE);
234 ok_err(0xDEADBEEF);
235 ok_long(apt1[0].x, 256);
236 ok_long(apt1[0].y, 256);
237 ok_long(apt2[0].x, 128);
238 ok_long(apt2[0].x, 128);
239
240 SetMapMode(hDC, MM_ISOTROPIC);
241 ok_int(SetWindowExtEx(hDC, 10, 10, NULL), TRUE);
242 ok_int(GetWindowExtEx(hDC, &siz), TRUE);
243 ok_long(siz.cx, 10);
244 ok_long(siz.cy, 10);
245 ok_int(SetViewportExtEx(hDC, 0, 0, NULL), TRUE);
246 ok_int(GetViewportExtEx(hDC, &siz), TRUE);
247 ok_long(siz.cx, 20);
248 ok_long(siz.cy, 20);
249 SetLastError(0xDEADBEEF);
250 apt1[0].x = apt1[0].y = 256;
251 apt2[0].x = apt2[0].y = 0xBEEFDEAD;
252 ret = NtGdiTransformPoints(hDC, apt1, apt2, 1, GdiDpToLp);
253 ok_int(ret, TRUE);
254 ok_err(0xDEADBEEF);
255 ok_long(apt1[0].x, 256);
256 ok_long(apt1[0].y, 256);
257 ok_long(apt2[0].x, 128);
258 ok_long(apt2[0].x, 128);
259
260 /* MM_ANISOTROPIC */
261
262 SetMapMode(hDC, MM_ANISOTROPIC);
263 ok_int(SetWindowExtEx(hDC, 10, 10, NULL), TRUE);
264 ok_int(GetWindowExtEx(hDC, &siz), TRUE);
265 ok_long(siz.cx, 10);
266 ok_long(siz.cy, 10);
267 ok_int(SetViewportExtEx(hDC, 100, 100, NULL), TRUE);
268 ok_int(GetViewportExtEx(hDC, &siz), TRUE);
269 ok_long(siz.cx, 100);
270 ok_long(siz.cy, 100);
271 SetLastError(0xDEADBEEF);
272 apt1[0].x = apt1[0].y = 256;
273 apt2[0].x = apt2[0].y = 0xBEEFDEAD;
274 ret = NtGdiTransformPoints(hDC, apt1, apt2, 1, GdiDpToLp);
275 ok_int(ret, TRUE);
276 ok_err(0xDEADBEEF);
277 ok_long(apt1[0].x, 256);
278 ok_long(apt1[0].y, 256);
279 ok_long(apt2[0].x, 26);
280 ok_long(apt2[0].x, 26);
281
282 SetMapMode(hDC, MM_ANISOTROPIC);
283 ok_int(SetWindowExtEx(hDC, 10, 10, NULL), TRUE);
284 ok_int(GetWindowExtEx(hDC, &siz), TRUE);
285 ok_long(siz.cx, 10);
286 ok_long(siz.cy, 10);
287 ok_int(SetViewportExtEx(hDC, 20, 100, NULL), TRUE);
288 ok_int(GetViewportExtEx(hDC, &siz), TRUE);
289 ok_long(siz.cx, 20);
290 ok_long(siz.cy, 100);
291 SetLastError(0xDEADBEEF);
292 apt1[0].x = apt1[0].y = 256;
293 apt2[0].x = apt2[0].y = 0xBEEFDEAD;
294 ret = NtGdiTransformPoints(hDC, apt1, apt2, 1, GdiDpToLp);
295 ok_int(ret, TRUE);
296 ok_err(0xDEADBEEF);
297 ok_long(apt1[0].x, 256);
298 ok_long(apt1[0].y, 256);
299 ok_long(apt2[0].x, 128);
300 ok_long(apt2[0].x, 128);
301
302 SetMapMode(hDC, MM_ANISOTROPIC);
303 ok_int(SetWindowExtEx(hDC, 10, 10, NULL), TRUE);
304 ok_int(GetWindowExtEx(hDC, &siz), TRUE);
305 ok_long(siz.cx, 10);
306 ok_long(siz.cy, 10);
307 ok_int(SetViewportExtEx(hDC, 100, 0, NULL), TRUE);
308 ok_int(GetViewportExtEx(hDC, &siz), TRUE);
309 ok_long(siz.cx, 20);
310 ok_long(siz.cy, 100);
311 SetLastError(0xDEADBEEF);
312 apt1[0].x = apt1[0].y = 256;
313 apt2[0].x = apt2[0].y = 0xBEEFDEAD;
314 ret = NtGdiTransformPoints(hDC, apt1, apt2, 1, GdiDpToLp);
315 ok_int(ret, TRUE);
316 ok_err(0xDEADBEEF);
317 ok_long(apt1[0].x, 256);
318 ok_long(apt1[0].y, 256);
319 ok_long(apt2[0].x, 128);
320 ok_long(apt2[0].x, 128);
321
322 SetMapMode(hDC, MM_ANISOTROPIC);
323 ok_int(SetWindowExtEx(hDC, 10, 10, NULL), TRUE);
324 ok_int(GetWindowExtEx(hDC, &siz), TRUE);
325 ok_long(siz.cx, 10);
326 ok_long(siz.cy, 10);
327 ok_int(SetViewportExtEx(hDC, 0, 100, NULL), TRUE);
328 ok_int(GetViewportExtEx(hDC, &siz), TRUE);
329 ok_long(siz.cx, 20);
330 ok_long(siz.cy, 100);
331 SetLastError(0xDEADBEEF);
332 apt1[0].x = apt1[0].y = 256;
333 apt2[0].x = apt2[0].y = 0xBEEFDEAD;
334 ret = NtGdiTransformPoints(hDC, apt1, apt2, 1, GdiDpToLp);
335 ok_int(ret, TRUE);
336 ok_err(0xDEADBEEF);
337 ok_long(apt1[0].x, 256);
338 ok_long(apt1[0].y, 256);
339 ok_long(apt2[0].x, 128);
340 ok_long(apt2[0].x, 128);
341
342 SetMapMode(hDC, MM_ANISOTROPIC);
343 ok_int(SetWindowExtEx(hDC, 10, 10, NULL), TRUE);
344 ok_int(GetWindowExtEx(hDC, &siz), TRUE);
345 ok_long(siz.cx, 10);
346 ok_long(siz.cy, 10);
347 ok_int(SetViewportExtEx(hDC, 0, 0, NULL), TRUE);
348 ok_int(GetViewportExtEx(hDC, &siz), TRUE);
349 ok_long(siz.cx, 20);
350 ok_long(siz.cy, 100);
351 SetLastError(0xDEADBEEF);
352 apt1[0].x = apt1[0].y = 256;
353 apt2[0].x = apt2[0].y = 0xBEEFDEAD;
354 ret = NtGdiTransformPoints(hDC, apt1, apt2, 1, GdiDpToLp);
355 ok_int(ret, TRUE);
356 ok_err(0xDEADBEEF);
357 ok_long(apt1[0].x, 256);
358 ok_long(apt1[0].y, 256);
359 ok_long(apt2[0].x, 128);
360 ok_long(apt2[0].x, 128);
361
362 ret = DeleteDC(hDC);
363 ok_int(ret, TRUE);
364 }
365