3f9f35da04c3d048a838677ee630f11560ef498d
2 * PROJECT: ReactOS api tests
3 * LICENSE: GPL - See COPYING in the top level directory
4 * PURPOSE: Test for GetDIBits
5 * PROGRAMMERS: Timo Kreuzer
12 #define TEST(x) ok(x, #x"\n")
13 #define RTEST(x) ok(x, #x"\n")
22 hDCScreen
= GetDC(NULL
);
23 ok(hDCScreen
!= 0, "GetDC failed, skipping tests\n");
24 if (hDCScreen
== NULL
) return;
26 hBitmap
= CreateCompatibleBitmap(hDCScreen
, 16, 16);
27 RTEST(hBitmap
!= NULL
);
30 SetLastError(ERROR_SUCCESS
);
31 RTEST(GetDIBits(0, 0, 0, 0, NULL
, NULL
, 0) == 0);
32 RTEST(GetLastError() == ERROR_INVALID_PARAMETER
);
34 SetLastError(ERROR_SUCCESS
);
35 RTEST(GetDIBits((HDC
)2345, 0, 0, 0, NULL
, NULL
, 0) == 0);
36 RTEST(GetLastError() == ERROR_INVALID_PARAMETER
);
38 SetLastError(ERROR_SUCCESS
);
39 RTEST(GetDIBits((HDC
)2345, hBitmap
, 0, 0, NULL
, NULL
, 0) == 0);
40 RTEST(GetLastError() == ERROR_INVALID_PARAMETER
);
42 SetLastError(ERROR_SUCCESS
);
43 RTEST(GetDIBits((HDC
)2345, hBitmap
, 0, 15, NULL
, &bi
, 0) == 0);
44 RTEST(GetLastError() == ERROR_INVALID_PARAMETER
);
49 SetLastError(ERROR_SUCCESS
);
50 ZeroMemory(&bi
, sizeof(BITMAPINFO
));
51 bi
.bmiHeader
.biSize
= sizeof(BITMAPINFOHEADER
);
52 RTEST(GetDIBits(NULL
, hBitmap
, 0, 15, NULL
, &bi
, DIB_RGB_COLORS
) == 0);
53 RTEST(GetLastError() == ERROR_INVALID_PARAMETER
);
56 SetLastError(ERROR_SUCCESS
);
57 ZeroMemory(&bi
, sizeof(BITMAPINFO
));
58 bi
.bmiHeader
.biSize
= sizeof(BITMAPINFOHEADER
);
59 RTEST(GetDIBits(hDCScreen
, NULL
, 0, 15, NULL
, &bi
, DIB_RGB_COLORS
) == 0);
60 RTEST(GetLastError() == ERROR_SUCCESS
);
63 SetLastError(ERROR_SUCCESS
);
64 ZeroMemory(&bi
, sizeof(BITMAPINFO
));
65 bi
.bmiHeader
.biSize
= sizeof(BITMAPINFOHEADER
);
66 RTEST(GetDIBits(hDCScreen
, hBitmap
, 0, 0, NULL
, &bi
, DIB_RGB_COLORS
) > 0);
67 RTEST(GetLastError() == ERROR_SUCCESS
);
69 /* null bitmap info - crashes XP*/
70 //SetLastError(ERROR_SUCCESS);
71 //RTEST(GetDIBits(hDCScreen, NULL, 0, 15, NULL, NULL, DIB_RGB_COLORS) == 0);
72 //RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
74 /* bad bmi colours (uUsage) */
75 SetLastError(ERROR_SUCCESS
);
76 ZeroMemory(&bi
, sizeof(BITMAPINFO
));
77 bi
.bmiHeader
.biSize
= sizeof(BITMAPINFOHEADER
);
78 RTEST(GetDIBits(hDCScreen
, hBitmap
, 0, 15, NULL
, &bi
, 100) == 0);
79 RTEST(GetLastError() == ERROR_SUCCESS
);
80 RTEST(bi
.bmiHeader
.biWidth
== 0);
81 RTEST(bi
.bmiHeader
.biHeight
== 0);
82 RTEST(bi
.bmiHeader
.biBitCount
== 0);
83 RTEST(bi
.bmiHeader
.biSizeImage
== 0);
86 SetLastError(ERROR_SUCCESS
);
87 ZeroMemory(&bi
, sizeof(BITMAPINFO
));
88 bi
.bmiHeader
.biSize
= sizeof(BITMAPINFOHEADER
);
89 RTEST(GetDIBits(hDCScreen
, hBitmap
, 0, 15, NULL
, &bi
, DIB_RGB_COLORS
) > 0);
90 RTEST(GetLastError() == ERROR_SUCCESS
);
91 ScreenBpp
= GetDeviceCaps(hDCScreen
, BITSPIXEL
);
92 RTEST(bi
.bmiHeader
.biWidth
== 16);
93 RTEST(bi
.bmiHeader
.biHeight
== 16);
94 RTEST(bi
.bmiHeader
.biBitCount
== ScreenBpp
);
95 RTEST(bi
.bmiHeader
.biSizeImage
== (16 * 16) * (ScreenBpp
/ 8));
97 DeleteObject(hBitmap
);
98 ReleaseDC(NULL
, hDCScreen
);
101 START_TEST(GetDIBits
)