19 ULONG cjSizeImage, cColors;
104 PBITMAPV5HEADER pbV5Header;
106 DWORD ajBits[100] = {0xff, 0x00, 0xcc, 0xf0, 0x0f};
110 bisize =
sizeof(BITMAPV5HEADER) + 256 *
sizeof(
DWORD);
116 ok(hdcScreen != 0,
"GetDC failed, skipping tests\n");
117 if (hdcScreen ==
NULL)
return;
120 ok(
hbmp !=
NULL,
"CreateCompatibleBitmap failed\n");
143 pbi->bmiHeader.biBitCount = 0;
194 ok(
pbi->bmiHeader.biWidth == 0,
"\n");
195 ok(
pbi->bmiHeader.biHeight == 0,
"\n");
196 ok(
pbi->bmiHeader.biBitCount == 0,
"\n");
197 ok(
pbi->bmiHeader.biSizeImage == 0,
"\n");
206 ok(
pbi->bmiHeader.biWidth == 16,
"\n");
207 ok(
pbi->bmiHeader.biHeight == 16,
"\n");
208 ok(
pbi->bmiHeader.biBitCount == ScreenBpp,
"\n");
209 ok(
pbi->bmiHeader.biSizeImage == (16 * 16) * (ScreenBpp / 8),
"\n");
239 pbi->bmiHeader.biSize =
sizeof(BITMAPV5HEADER);
243 pbi->bmiHeader.biSize =
sizeof(BITMAPV5HEADER) + 4;
245 ok_int(pbV5Header->bV5RedMask, 0);
246 ok_int(pbV5Header->bV5GreenMask, 0);
247 ok_int(pbV5Header->bV5BlueMask, 0);
248 ok_int(pbV5Header->bV5AlphaMask, 0);
249 ok_int(pbV5Header->bV5CSType, 0);
251 ok_int(pbV5Header->bV5GammaRed, 0);
252 ok_int(pbV5Header->bV5GammaGreen, 0);
253 ok_int(pbV5Header->bV5GammaBlue, 0);
254 ok_int(pbV5Header->bV5Intent, 0);
255 ok_int(pbV5Header->bV5ProfileData, 0);
256 ok_int(pbV5Header->bV5ProfileSize, 0);
257 ok_int(pbV5Header->bV5Reserved, 0);
267 ok(
hbmp != 0,
"failed to create bitmap\n");
277 pbi->bmiHeader.biSizeImage = 0;
282 pbi->bmiHeader.biWidth = 17;
283 pbi->bmiHeader.biHeight = 3;
284 pbi->bmiHeader.biSizeImage = 0;
291 pbi->bmiHeader.biBitCount = 4;
292 pbi->bmiHeader.biSizeImage = 1;
298 pbi->bmiHeader.biBitCount = 8;
299 pbi->bmiHeader.biSizeImage = 1000;
305 pbi->bmiHeader.biBitCount = 123;
306 pbi->bmiHeader.biSizeImage = -12;
316 ok_int(
pbi->bmiHeader.biXPelsPerMeter, 0);
317 ok_int(
pbi->bmiHeader.biYPelsPerMeter, 0);
322 pbi->bmiHeader.biWidth = 12;
329 pbi->bmiHeader.biSizeImage = 123;
340 pbi->bmiHeader.biBitCount = 5;
342 pbi->bmiHeader.biBitCount = 1;
344 pbi->bmiHeader.biBitCount = 8;
346 pbi->bmiHeader.biBitCount = 32;
357 pbi->bmiHeader.biWidth = 4;
358 pbi->bmiHeader.biHeight = 4;
359 pbi->bmiHeader.biPlanes = 3;
360 pbi->bmiHeader.biBitCount = 32;
365 pbi->bmiHeader.biWidth = 0;
367 pbi->bmiHeader.biWidth = 2;
370 pbi->bmiHeader.biWidth = -3;
372 pbi->bmiHeader.biWidth = 4;
373 pbi->bmiHeader.biHeight = 0;
375 pbi->bmiHeader.biHeight = -4;
377 pbi->bmiHeader.biBitCount = 31;
379 pbi->bmiHeader.biBitCount = 16;
380 pbi->bmiHeader.biPlanes = 23;
403 pbi->bmiHeader.biWidth = 4;
404 pbi->bmiHeader.biHeight = 4;
405 pbi->bmiHeader.biPlanes = 1;
406 pbi->bmiHeader.biBitCount = 32;
408 pbi->bmiHeader.biSizeImage = 0;
409 pbi->bmiHeader.biXPelsPerMeter = 0;
410 pbi->bmiHeader.biYPelsPerMeter = 0;
411 pbi->bmiHeader.biClrUsed = 0;
412 pbi->bmiHeader.biClrImportant = 0;
413 cjSizeImage = ((
pbi->bmiHeader.biWidth *
pbi->bmiHeader.biBitCount + 31) / 32) * 4 *
pbi->bmiHeader.biHeight;
423 ok_int(
pbi->bmiHeader.biXPelsPerMeter, 0);
424 ok_int(
pbi->bmiHeader.biYPelsPerMeter, 0);
426 ok_int(
pbi->bmiHeader.biClrImportant, 0);
429 pbi->bmiHeader.biBitCount = 0;
436 pbi->bmiHeader.biBitCount = 24;
437 pbi->bmiHeader.biWidth = 3;
441 pbi->bmiHeader.biBitCount = 24;
442 pbi->bmiHeader.biWidth = 3;
446 pbi->bmiHeader.biBitCount = 17;
452 pbi->bmiHeader.biBitCount = 5;
460 ok(
hbmp != 0,
"failed to create bitmap\n");
470 pbi->bmiHeader.biSizeImage = 0;
474 cjSizeImage = ((
pbi->bmiHeader.biWidth *
pbi->bmiHeader.biBitCount + 31) / 32) * 4 *
pbi->bmiHeader.biHeight;
480 ok(
hdcMem != 0,
"CreateCompatibleDC failed, skipping tests\n");
void Test_GetDIBits_BI_BITFIELDS()
void Test_GetDIBits_xBpp(ULONG cBitsPixel)
#define ok_eq_int(value, expected)
#define ok_int(expression, result)
#define UlongToHandle(ul)
#define ERROR_INVALID_PARAMETER
#define HeapFree(x, y, z)
_In_ HBITMAP _In_ UINT _In_ UINT _Inout_ LPBITMAPINFO pbmi
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
HDC WINAPI GetDC(_In_opt_ HWND)
BITMAPINFOHEADER bmiHeader
_Inout_ PERBANDINFO * pbi
HBITMAP WINAPI CreateBitmap(_In_ INT cx, _In_ INT cy, _In_ UINT cPlanes, _In_ UINT cBitsPerPel, _In_opt_ const VOID *pvBits)
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
int WINAPI GetDIBits(_In_ HDC hdc, _In_ HBITMAP hbm, _In_ UINT start, _In_ UINT cLines, _Out_opt_ LPVOID lpvBits, _At_((LPBITMAPINFOHEADER) lpbmi, _Inout_) LPBITMAPINFO lpbmi, _In_ UINT usage)
struct tagBITMAPCOREHEADER BITMAPCOREHEADER
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
HBITMAP WINAPI CreateCompatibleBitmap(_In_ HDC hdc, _In_ INT cx, _In_ INT cy)
struct tagBITMAPINFO * PBITMAPINFO
BOOL WINAPI DeleteDC(_In_ HDC)
BOOL WINAPI SetBitmapDimensionEx(_In_ HBITMAP, _In_ int, _In_ int, _Out_opt_ LPSIZE)