2 * PROJECT: ReactOS api tests
3 * LICENSE: GPL - See COPYING in the top level directory
4 * PURPOSE: Test for SetDIBitsToDevice
5 * PROGRAMMERS: Timo Kreuzer
14 Test_SetDIBitsToDevice_Params()
16 UCHAR ajBmiBuffer
[sizeof(BITMAPINFO
) + 4];
17 PBITMAPINFO pbmi
= (PBITMAPINFO
)ajBmiBuffer
;
21 /* Setup the bitmap info */
22 pbmi
->bmiHeader
.biSize
= sizeof(BITMAPINFOHEADER
);
23 pbmi
->bmiHeader
.biWidth
= 2;
24 pbmi
->bmiHeader
.biHeight
= -2;
25 pbmi
->bmiHeader
.biPlanes
= 1;
26 pbmi
->bmiHeader
.biBitCount
= 32;
27 pbmi
->bmiHeader
.biCompression
= BI_RGB
;
28 pbmi
->bmiHeader
.biSizeImage
= 0;
29 pbmi
->bmiHeader
.biXPelsPerMeter
= 0;
30 pbmi
->bmiHeader
.biYPelsPerMeter
= 0;
31 pbmi
->bmiHeader
.biClrUsed
= 0;
32 pbmi
->bmiHeader
.biClrImportant
= 0;
34 SetLastError(0xdeadc0de);
35 ret
= SetDIBitsToDevice(ghdcDIB32
,
50 SetLastError(0xdeadc0de);
51 ret
= SetDIBitsToDevice(ghdcDIB32
,
66 /* test unaligned buffer */
67 SetLastError(0xdeadc0de);
68 ret
= SetDIBitsToDevice(ghdcDIB32
,
77 (BYTE
*)aulBits
+ 1, // lpvBits,
83 /* test unaligned and huge scanline buffer */
84 SetLastError(0xdeadc0de);
85 ret
= SetDIBitsToDevice(ghdcDIB32
,
93 2000000, // cScanLines,
94 (BYTE
*)aulBits
+ 1, // lpvBits,
100 /* test unaligned illegal buffer */
101 SetLastError(0xdeadc0de);
102 ret
= SetDIBitsToDevice(ghdcDIB32
,
111 (BYTE
*)0x7fffffff, // lpvBits,
117 SetLastError(0xdeadc0de);
118 ret
= SetDIBitsToDevice(ghdcDIB32
,
133 SetLastError(0xdeadc0de);
134 ret
= SetDIBitsToDevice(ghdcDIB32
,
149 SetLastError(0xdeadc0de);
150 ret
= SetDIBitsToDevice(ghdcDIB32
,
165 SetLastError(0xdeadc0de);
166 ret
= SetDIBitsToDevice(ghdcDIB32
,
181 SetLastError(0xdeadc0de);
182 ret
= SetDIBitsToDevice(ghdcDIB32
,
197 SetLastError(0xdeadc0de);
198 ret
= SetDIBitsToDevice(ghdcDIB32
,
213 SetLastError(0xdeadc0de);
214 ret
= SetDIBitsToDevice(ghdcDIB32
,
229 /* Test pbmi == NULL */
230 SetLastError(0xdeadc0de);
231 ret
= SetDIBitsToDevice(ghdcDIB32
,
246 /* Test illegal bitmap info */
247 pbmi
->bmiHeader
.biSize
= 0;
248 SetLastError(0xdeadc0de);
249 ret
= SetDIBitsToDevice(ghdcDIB32
,
268 Test_SetDIBitsToDevice()
270 UCHAR ajBmiBuffer
[sizeof(BITMAPINFO
) + 4];
271 PBITMAPINFO pbmi
= (PBITMAPINFO
)ajBmiBuffer
;
275 /* Setup the bitmap info */
276 pbmi
->bmiHeader
.biSize
= sizeof(BITMAPINFOHEADER
);
277 pbmi
->bmiHeader
.biWidth
= 2;
278 pbmi
->bmiHeader
.biHeight
= -2;
279 pbmi
->bmiHeader
.biPlanes
= 1;
280 pbmi
->bmiHeader
.biBitCount
= 32;
281 pbmi
->bmiHeader
.biCompression
= BI_RGB
;
282 pbmi
->bmiHeader
.biSizeImage
= 0;
283 pbmi
->bmiHeader
.biXPelsPerMeter
= 0;
284 pbmi
->bmiHeader
.biYPelsPerMeter
= 0;
285 pbmi
->bmiHeader
.biClrUsed
= 0;
286 pbmi
->bmiHeader
.biClrImportant
= 0;
289 aulBits
[0] = 0x11000000;
290 aulBits
[1] = 0x00000011;
291 aulBits
[2] = 0xFF000000;
292 aulBits
[3] = 0x000000FF;
295 memset(pulDIB32Bits
, 0, 4 * 4 * sizeof(ULONG
));
296 ret
= SetDIBitsToDevice(ghdcDIB32
,
310 ok_hex(pulDIB32Bits
[0], 0x11000000);
311 ok_hex(pulDIB32Bits
[1], 0x00000011);
312 ok_hex(pulDIB32Bits
[2], 0x00000000);
313 ok_hex(pulDIB32Bits
[3], 0x00000000);
314 ok_hex(pulDIB32Bits
[4], 0xFF000000);
315 ok_hex(pulDIB32Bits
[5], 0x000000FF);
316 ok_hex(pulDIB32Bits
[6], 0x00000000);
317 ok_hex(pulDIB32Bits
[7], 0x00000000);
319 memset(pulDIB32Bits
, 0, 4 * 4 * sizeof(ULONG
));
320 ret
= SetDIBitsToDevice(ghdcDIB32
,
334 ok_hex(pulDIB32Bits
[0], 0x00000000);
335 ok_hex(pulDIB32Bits
[1], 0x00000000);
336 ok_hex(pulDIB32Bits
[2], 0x00000000);
337 ok_hex(pulDIB32Bits
[3], 0x00000000);
338 ok_hex(pulDIB32Bits
[4], 0x11000000);
339 ok_hex(pulDIB32Bits
[5], 0x00000011);
340 ok_hex(pulDIB32Bits
[6], 0x00000000);
341 ok_hex(pulDIB32Bits
[7], 0x00000000);
342 ok_hex(pulDIB32Bits
[8], 0xFF000000);
343 ok_hex(pulDIB32Bits
[9], 0x000000FF);
344 ok_hex(pulDIB32Bits
[10], 0x00000000);
345 ok_hex(pulDIB32Bits
[11], 0x00000000);
347 memset(pulDIB32Bits
, 0, 4 * 4 * sizeof(ULONG
));
348 ret
= SetDIBitsToDevice(ghdcDIB32
,
362 ok_hex(pulDIB32Bits
[0], 0x00000000);
363 ok_hex(pulDIB32Bits
[1], 0x00000000);
364 ok_hex(pulDIB32Bits
[2], 0x00000000);
365 ok_hex(pulDIB32Bits
[3], 0x00000000);
366 ok_hex(pulDIB32Bits
[4], 0x11000000);
367 ok_hex(pulDIB32Bits
[5], 0x00000011);
368 ok_hex(pulDIB32Bits
[6], 0x00000000);
369 ok_hex(pulDIB32Bits
[7], 0x00000000);
372 memset(pulDIB32Bits
, 0, 4 * 4 * sizeof(ULONG
));
373 ret
= SetDIBitsToDevice(ghdcDIB32
,
387 ok_hex(pulDIB32Bits
[0], 0x11000000);
388 ok_hex(pulDIB32Bits
[1], 0x00000011);
389 ok_hex(pulDIB32Bits
[2], 0x00000000);
390 ok_hex(pulDIB32Bits
[3], 0x00000000);
391 ok_hex(pulDIB32Bits
[4], 0x00000000);
392 ok_hex(pulDIB32Bits
[5], 0x00000000);
393 ok_hex(pulDIB32Bits
[6], 0x00000000);
394 ok_hex(pulDIB32Bits
[7], 0x00000000);
398 /* Use bottom-up bitmap */
399 pbmi
->bmiHeader
.biHeight
= 2;
401 memset(pulDIB32Bits
, 0, 4 * 4 * sizeof(ULONG
));
402 ret
= SetDIBitsToDevice(ghdcDIB32
,
416 ok_hex(pulDIB32Bits
[0], 0xFF000000);
417 ok_hex(pulDIB32Bits
[1], 0x000000FF);
418 ok_hex(pulDIB32Bits
[2], 0x00000000);
419 ok_hex(pulDIB32Bits
[3], 0x00000000);
420 ok_hex(pulDIB32Bits
[4], 0x11000000);
421 ok_hex(pulDIB32Bits
[5], 0x00000011);
422 ok_hex(pulDIB32Bits
[6], 0x00000000);
423 ok_hex(pulDIB32Bits
[7], 0x00000000);
425 memset(pulDIB32Bits
, 0, 4 * 4 * sizeof(ULONG
));
426 ret
= SetDIBitsToDevice(ghdcDIB32
,
440 ok_hex(pulDIB32Bits
[0], 0x00000000);
441 ok_hex(pulDIB32Bits
[1], 0x00000000);
442 ok_hex(pulDIB32Bits
[2], 0x00000000);
443 ok_hex(pulDIB32Bits
[3], 0x00000000);
444 ok_hex(pulDIB32Bits
[4], 0xFF000000);
445 ok_hex(pulDIB32Bits
[5], 0x000000FF);
446 ok_hex(pulDIB32Bits
[6], 0x00000000);
447 ok_hex(pulDIB32Bits
[7], 0x00000000);
448 ok_hex(pulDIB32Bits
[8], 0x11000000);
449 ok_hex(pulDIB32Bits
[9], 0x00000011);
450 ok_hex(pulDIB32Bits
[10], 0x00000000);
451 ok_hex(pulDIB32Bits
[11], 0x00000000);
453 memset(pulDIB32Bits
, 0, 4 * 4 * sizeof(ULONG
));
454 ret
= SetDIBitsToDevice(ghdcDIB32
,
468 ok_hex(pulDIB32Bits
[0], 0x00000000);
469 ok_hex(pulDIB32Bits
[1], 0x00000000);
470 ok_hex(pulDIB32Bits
[2], 0x00000000);
471 ok_hex(pulDIB32Bits
[3], 0x00000000);
472 ok_hex(pulDIB32Bits
[4], 0x11000000);
473 ok_hex(pulDIB32Bits
[5], 0x00000011);
474 ok_hex(pulDIB32Bits
[6], 0x00000000);
475 ok_hex(pulDIB32Bits
[7], 0x00000000);
478 memset(pulDIB32Bits
, 0, 4 * 4 * sizeof(ULONG
));
479 ret
= SetDIBitsToDevice(ghdcDIB32
,
493 ok_hex(pulDIB32Bits
[0], 0x11000000);
494 ok_hex(pulDIB32Bits
[1], 0x00000011);
495 ok_hex(pulDIB32Bits
[2], 0x00000000);
496 ok_hex(pulDIB32Bits
[3], 0x00000000);
497 ok_hex(pulDIB32Bits
[4], 0x00000000);
498 ok_hex(pulDIB32Bits
[5], 0x00000000);
499 ok_hex(pulDIB32Bits
[6], 0x00000000);
500 ok_hex(pulDIB32Bits
[7], 0x00000000);
505 START_TEST(SetDIBitsToDevice
)
509 Test_SetDIBitsToDevice_Params();
510 Test_SetDIBitsToDevice();