56#define RIFF_FOURCC( c0, c1, c2, c3 ) \
57 ( (DWORD)(BYTE)(c0) | ( (DWORD)(BYTE)(c1) << 8 ) | \
58 ( (DWORD)(BYTE)(c2) << 16 ) | ( (DWORD)(BYTE)(c3) << 24 ) )
60#define ANI_RIFF_ID RIFF_FOURCC('R', 'I', 'F', 'F')
61#define ANI_LIST_ID RIFF_FOURCC('L', 'I', 'S', 'T')
62#define ANI_ACON_ID RIFF_FOURCC('A', 'C', 'O', 'N')
63#define ANI_anih_ID RIFF_FOURCC('a', 'n', 'i', 'h')
64#define ANI_seq__ID RIFF_FOURCC('s', 'e', 'q', ' ')
65#define ANI_fram_ID RIFF_FOURCC('f', 'r', 'a', 'm')
66#define ANI_icon_ID RIFF_FOURCC('i', 'c', 'o', 'n')
67#define ANI_rate_ID RIFF_FOURCC('r', 'a', 't', 'e')
69#define ANI_FLAG_ICON 0x1
70#define ANI_FLAG_SEQUENCE 0x2
154#define EMPTY_ICON32 \
157 sizeof(ani_frame32x32x32), \
171 sizeof(ani_data32x32x32), \
172 sizeof(CURSORICONFILEDIR) \
177 sizeof(BITMAPINFOHEADER), \
280 { 0xc0de, 0xcafe, 0xbabe}
302#define PROC_INIT (WM_USER+1)
333 ok(!
ret ||
broken(
ret) ,
"DestroyCursor on the active cursor succeeded.\n");
336 "Last error: %u\n",
error);
367 class.cbClsExtra = 0;
368 class.cbWndExtra = 0;
371 class.hCursor =
NULL;
372 class.hbrBackground =
NULL;
373 class.lpszMenuName =
NULL;
374 class.lpszClassName =
"cursor_child";
382 0, 0, 200, 200, 0, 0, 0,
NULL);
409 class.cbClsExtra = 0;
410 class.cbWndExtra = 0;
413 class.hCursor =
NULL;
414 class.hbrBackground =
NULL;
415 class.lpszMenuName =
NULL;
416 class.lpszClassName =
"cursor_parent";
424 0, 0, 200, 200, 0, 0, 0,
NULL);
434 ok(
CreateProcessA(
NULL,
path_name,
NULL,
NULL,
FALSE, 0
L,
NULL,
NULL, &
startup, &
info),
"CreateProcess failed.\n");
455 static const BYTE bmp_bits[4096];
486 return (
a & 0x00F8F8F8) == (
b & 0x00F8F8F8);
490 INT expectedWidth,
INT expectedHeight,
WORD expectedDepth,
BOOL dibExpected)
504 orig_is_dib = (origBitmap.bmBits !=
NULL);
505 copy_is_dib = (copyBitmap.bmBits !=
NULL);
507 if (copy_is_dib && dibExpected
508 && copyBitmap.bmBitsPixel == 24
509 && (expectedDepth == 16 || expectedDepth == 32))
525 expectedDepth = origBitmap.bmBitsPixel;
528 ok((!(dibExpected ^ copy_is_dib)
529 && (copyBitmap.bmWidth == expectedWidth)
530 && (copyBitmap.bmHeight == expectedHeight)
531 && (copyBitmap.bmBitsPixel == expectedDepth)),
532 "CopyImage ((%s, %dx%d, %u bpp), %d, %d, %#x): Expected (%s, %dx%d, %u bpp), got (%s, %dx%d, %u bpp)\n",
533 orig_is_dib ?
"DIB" :
"DDB", origBitmap.bmWidth, origBitmap.bmHeight, origBitmap.bmBitsPixel,
534 copyWidth, copyHeight,
flags,
535 dibExpected ?
"DIB" :
"DDB", expectedWidth, expectedHeight, expectedDepth,
536 copy_is_dib ?
"DIB" :
"DDB", copyBitmap.bmWidth, copyBitmap.bmHeight, copyBitmap.bmBitsPixel);
553 info->bmiHeader.biSize =
sizeof(
info->bmiHeader);
554 info->bmiHeader.biWidth = 2;
555 info->bmiHeader.biHeight = 2;
556 info->bmiHeader.biPlanes = 1;
560 for (
i=0;
i < 256;
i++)
562 info->bmiColors[
i].rgbRed =
i;
563 info->bmiColors[
i].rgbGreen =
i;
564 info->bmiColors[
i].rgbBlue = 255 -
i;
565 info->bmiColors[
i].rgbReserved = 0;
645 info->bmiHeader.biBitCount = 1;
646 info->bmiColors[0].rgbRed = 0xFF;
647 info->bmiColors[0].rgbGreen = 0;
648 info->bmiColors[0].rgbBlue = 0;
649 info->bmiColors[1].rgbRed = 0;
650 info->bmiColors[1].rgbGreen = 0xFF;
651 info->bmiColors[1].rgbBlue = 0;
660 info->bmiHeader.biBitCount = 1;
661 info->bmiColors[0].rgbRed = 0;
662 info->bmiColors[0].rgbGreen = 0;
663 info->bmiColors[0].rgbBlue = 0;
664 info->bmiColors[1].rgbRed = 0xFF;
665 info->bmiColors[1].rgbGreen = 0xFF;
666 info->bmiColors[1].rgbBlue = 0xFF;
675 info->bmiHeader.biBitCount = 1;
676 info->bmiColors[0].rgbRed = 0xFF;
677 info->bmiColors[0].rgbGreen = 0xFF;
678 info->bmiColors[0].rgbBlue = 0xFF;
679 info->bmiColors[1].rgbRed = 0;
680 info->bmiColors[1].rgbGreen = 0;
681 info->bmiColors[1].rgbBlue = 0;
706 ok(
cursor == cursor2,
"cursor (%p) is not IDC_WAIT (%p).\n",
cursor, cursor2);
719 ok_(__FILE__,
line)(
ret,
"GetIconInfo failed\n");
722 ok_(__FILE__,
line)(
info.xHotspot == exp_cx/2,
"info.xHotspot = %u\n",
info.xHotspot);
723 ok_(__FILE__,
line)(
info.yHotspot == exp_cy/2,
"info.yHotspot = %u\n",
info.yHotspot);
724 ok_(__FILE__,
line)(
info.hbmMask != 0,
"info.hbmMask is NULL\n");
727 ok_(__FILE__,
line)(
ret ==
sizeof(bmMask),
"GetObject(info.hbmMask) failed, ret %u\n",
ret);
730 ok_(__FILE__,
line)(
info.hbmColor == 0,
"info.hbmColor should be NULL\n");
742 ok_(__FILE__,
line)(
ret ==
sizeof(bmColor),
"GetObject(info.hbmColor) failed, ret %u\n",
ret);
744 ok_(__FILE__,
line)(bmColor.bmBitsPixel == display_bpp ||
745 bmColor.bmBitsPixel == exp_bpp ,
746 "bmColor.bmBitsPixel = %d\n", bmColor.bmBitsPixel);
747 ok_(__FILE__,
line)(bmColor.bmWidth == exp_cx,
"bmColor.bmWidth = %d\n", bmColor.bmWidth);
748 ok_(__FILE__,
line)(bmColor.bmHeight == exp_cy,
"bmColor.bmHeight = %d\n", bmColor.bmHeight);
750 ok_(__FILE__,
line)(bmMask.bmBitsPixel == 1,
"bmMask.bmBitsPixel = %d\n", bmMask.bmBitsPixel);
751 ok_(__FILE__,
line)(bmMask.bmWidth == exp_cx,
"bmMask.bmWidth = %d\n", bmMask.bmWidth);
752 ok_(__FILE__,
line)(bmMask.bmHeight == exp_mask_cy,
"bmMask.bmHeight = %d\n", bmMask.bmHeight);
756 ok_(__FILE__,
line)(bmMask.bmBitsPixel == 1,
"bmMask.bmBitsPixel = %d\n", bmMask.bmBitsPixel);
757 ok_(__FILE__,
line)(bmMask.bmWidth == exp_cx,
"bmMask.bmWidth = %d\n", bmMask.bmWidth);
758 ok_(__FILE__,
line)(bmMask.bmHeight == exp_mask_cy,
"bmMask.bmHeight = %d\n", bmMask.bmHeight);
764 memset( &infoex, 0xcc,
sizeof(infoex) );
766 infoex.
cbSize =
sizeof(infoex) - 1;
767 ret = pGetIconInfoExA(
hIcon, &infoex );
768 ok_(__FILE__,
line)(!
ret,
"GetIconInfoEx succeeded\n");
772 infoex.
cbSize =
sizeof(infoex) + 1;
773 ret = pGetIconInfoExA(
hIcon, &infoex );
774 ok_(__FILE__,
line)(!
ret,
"GetIconInfoEx succeeded\n");
778 infoex.
cbSize =
sizeof(infoex);
779 ret = pGetIconInfoExA( (
HICON)0xdeadbabe, &infoex );
780 ok_(__FILE__,
line)(!
ret,
"GetIconInfoEx succeeded\n");
784 infoex.
cbSize =
sizeof(infoex);
785 ret = pGetIconInfoExA(
hIcon, &infoex );
793#define test_icon_info(a,b,c,d,e) test_icon_info_dbg((a),(b),(c),(d),(e),__LINE__)
797 static const BYTE bmp_bits[1024];
816 ok(
hIcon != 0,
"CreateIcon failed\n");
821 ok(
hIcon != 0,
"CreateIcon failed\n");
826 ok(hbmMask != 0,
"CreateBitmap failed\n");
827 hbmColor =
CreateBitmap(16, 16, 1, display_bpp, bmp_bits);
828 ok(hbmColor != 0,
"CreateBitmap failed\n");
837 ok(!
hIcon,
"CreateIconIndirect should fail\n");
844 info.hbmColor = hbmColor;
847 ok(!
hIcon,
"CreateIconIndirect should fail\n");
853 info.hbmMask = hbmMask;
854 info.hbmColor = hbmColor;
856 ok(
hIcon != 0,
"CreateIconIndirect failed\n");
864 ok(hbmMask != 0,
"CreateBitmap failed\n");
869 info.hbmMask = hbmMask;
873 ok(
hIcon != 0,
"CreateIconIndirect failed\n");
878 for (
i = 0;
i <= 4;
i++)
881 ok(hbmMask != 0,
"CreateBitmap failed\n");
886 info.hbmMask = hbmMask;
890 ok(
hIcon != 0,
"CreateIconIndirect failed\n");
906 ok(hbmColor !=
NULL,
"Expected a handle to the DIB\n");
911 ok(hbmMask !=
NULL,
"Expected a handle to the DIB\n");
918 info.hbmMask = hbmColor;
919 info.hbmColor = hbmMask;
922 ok(
hIcon != 0,
"CreateIconIndirect failed\n");
929 ok(hbmColor !=
NULL,
"Expected a handle to the DIB\n");
936 info.hbmMask = hbmColor;
937 info.hbmColor = hbmMask;
940 ok(
hIcon != 0,
"CreateIconIndirect failed\n");
947 ok(hbmColor !=
NULL,
"Expected a handle to the DIB\n");
954 info.hbmMask = hbmColor;
955 info.hbmColor = hbmMask;
958 ok(
hIcon != 0,
"CreateIconIndirect failed\n");
9720x47,0x49,0x46,0x38,0x37,0x61,0x01,0x00,0x01,0x00,0x80,0x00,0x00,0xff,0xff,0xff,
9730xff,0xff,0xff,0x2c,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x02,0x02,0x44,
9790xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x01,0x2c,
9800x01,0x2c,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x05,0x03,0x04,0x04,0x04,0x03,0x05,
9810x04,0x04,0x04,0x05,0x05,0x05,0x06,0x07,0x0c,0x08,0x07,0x07,0x07,0x07,0x0f,0x0b,
9820x0b,0x09,0x0c,0x11,0x0f,0x12,0x12,0x11,0x0f,0x11,0x11,0x13,0x16,0x1c,0x17,0x13,
9830x14,0x1a,0x15,0x11,0x11,0x18,0x21,0x18,0x1a,0x1d,0x1d,0x1f,0x1f,0x1f,0x13,0x17,
9840x22,0x24,0x22,0x1e,0x24,0x1c,0x1e,0x1f,0x1e,0xff,0xdb,0x00,0x43,0x01,0x05,0x05,
9850x05,0x07,0x06,0x07,0x0e,0x08,0x08,0x0e,0x1e,0x14,0x11,0x14,0x1e,0x1e,0x1e,0x1e,
9860x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
9870x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
9880x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0xff,0xc0,
9890x00,0x11,0x08,0x00,0x01,0x00,0x01,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
9900x01,0xff,0xc4,0x00,0x15,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
9910x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xff,0xc4,0x00,0x14,0x10,0x01,0x00,0x00,
9920x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xc4,
9930x00,0x14,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
9940x00,0x00,0x00,0x00,0xff,0xc4,0x00,0x14,0x11,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
9950x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xda,0x00,0x0c,0x03,0x01,
9960x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xb2,0xc0,0x07,0xff,0xd9
10010x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,
10020x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x08,0x02,0x00,0x00,0x00,0x90,0x77,0x53,
10030xde,0x00,0x00,0x00,0x09,0x70,0x48,0x59,0x73,0x00,0x00,0x0b,0x13,0x00,0x00,0x0b,
10040x13,0x01,0x00,0x9a,0x9c,0x18,0x00,0x00,0x00,0x07,0x74,0x49,0x4d,0x45,0x07,0xd5,
10050x06,0x03,0x0f,0x07,0x2d,0x12,0x10,0xf0,0xfd,0x00,0x00,0x00,0x0c,0x49,0x44,0x41,
10060x54,0x08,0xd7,0x63,0xf8,0xff,0xff,0x3f,0x00,0x05,0xfe,0x02,0xfe,0xdc,0xcc,0x59,
10070xe7,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
10130x42,0x4d,0x46,0x00,0x00,0x00,0xDE,0xAD,0xBE,0xEF,0x42,0x00,0x00,0x00,0x28,0x00,
10140x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,
10150x00,0x00,0x04,0x00,0x00,0x00,0x12,0x0b,0x00,0x00,0x12,0x0b,0x00,0x00,0x02,0x00,
10160x00,0x00,0x02,0x00,0x00,0x00,0xff,0xff,0xff,0x00,0x55,0x55,0x55,0x00,0xFF,0xFF,
10170xFF,0xFF,0x00,0x00,0x00,0x00
10220x42,0x4d,0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x0c,0x00,
10230x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xff,0xff,0xff,0x00,0x55,0x55,
10240x55,0x00,0x00,0x00,0x00,0x00
10290x47,0x49,0x46,0x38,0x37,0x61,0x02,0x00,0x02,0x00,0xa1,0x00,0x00,0x00,0x00,0x00,
10300x39,0x62,0xfc,0xff,0x1a,0xe5,0xff,0xff,0xff,0x2c,0x00,0x00,0x00,0x00,0x02,0x00,
10310x02,0x00,0x00,0x02,0x03,0x14,0x16,0x05,0x00,0x3b
1036 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1037 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00
1048 sizeof(BITMAPV5HEADER) - 1,
1049 sizeof(BITMAPV5HEADER) + 1,
1064 ok(
ret ==
sizeof(bm),
"GetObject returned %d\n",
ret);
1066 memset(&bmi, 0,
sizeof(bmi));
1074 ok(
ret == bm.bmHeight,
"%s: %d lines were converted, not %d\n", test_desc,
ret, bm.bmHeight);
1076 ok(
color_match(pixel, 0x00ffffff),
"%s: Pixel is 0x%08x\n", test_desc, pixel);
1097 ok(
ret && bytes_written ==
image_size,
"test file created improperly.\n");
1103 ok(
handle ==
NULL,
"%s: IMAGE_CURSOR succeeded incorrectly.\n", test_desc);
1108 "Last error: %u\n",
error);
1114 ok(
handle ==
NULL,
"%s: IMAGE_ICON succeeded incorrectly.\n", test_desc);
1119 "Last error: %u\n",
error);
1127 error == 0xdeadbeef,
1128 "Last error: %u\n",
error);
1130 if (expect_success) {
1131 ok(
handle !=
NULL,
"%s: IMAGE_BITMAP failed.\n", test_desc);
1134 else ok(
handle ==
NULL,
"%s: IMAGE_BITMAP succeeded incorrectly.\n", test_desc);
1152 DWORD bytes_written;
1158 const unsigned icon_bpp = 32;
1161 for(
i=0;
i<entry_cnt;
i++)
1167 dir->idReserved = 0;
1169 dir->idCount = entry_cnt;
1172 for(
i=0;
i<entry_cnt;
i++) {
1173 icon_entry =
dir->idEntries+
i;
1200 ok(
ret && bytes_written ==
icon_size,
"icon.ico created improperly.\n");
1208 unsigned int clr_used, bmi_size, bits_size,
stride;
1211 DWORD bytes_written;
1215 clr_used =
h->biBitCount <= 8 ? 1u <<
h->biBitCount : 0;
1216 stride = ((
h->biBitCount *
h->biWidth + 7) / 8 + 3) & ~3;
1217 bits_size =
h->biHeight *
stride;
1218 bmi_size =
h->biSize + clr_used *
sizeof(
RGBQUAD);
1220 hdr.bfType = 0x4d42;
1222 hdr.bfSize =
hdr.bfOffBits + bits_size;
1223 hdr.bfReserved1 = 0;
1224 hdr.bfReserved2 = 0;
1229 ok(
ret && bytes_written ==
sizeof(
hdr),
"Unexpected WriteFile() result, ret %#x, bytes_written %u.\n",
1230 ret, bytes_written);
1232 ok(
ret && bytes_written == bmi_size,
"Unexpected WriteFile() result, ret %#x, bytes_written %u.\n",
1233 ret, bytes_written);
1235 ok(
ret && bytes_written == bits_size,
"Unexpected WriteFile() result, ret %#x, bytes_written %u.\n",
1236 ret, bytes_written);
1242 DWORD bytes_written;
1258 ok(
ret && bytes_written ==
sizeof(
bmpimage),
"run %s: Test file created improperly.\n",
path);
1289 char old_PATH[10000];
1290 char new_PATH[10000];
1296 strcat(temp_dir_current,
"wine-test-dir-current\\");
1298 strcat(temp_dir_PATH,
"wine-test-dir-path\\");
1301 pos_slash =
strrchr(executable_path,
'\\') - executable_path;
1302 executable_path[pos_slash + 1] = 0;
1310 sprintf(new_PATH,
"%s;%s", old_PATH, temp_dir_PATH);
1335#define ICON_WIDTH 32
1336#define ICON_HEIGHT 32
1337#define ICON_AND_SIZE (ICON_WIDTH*ICON_HEIGHT/8)
1340 (sizeof(CURSORICONFILEDIR) + sizeof(BITMAPINFOHEADER) \
1341 + ICON_AND_SIZE + ICON_AND_SIZE*ICON_BPP)
1355 "Last error: %u\n",
error);
1360 ok(
ret,
"GetIconInfo() failed.\n");
1374 if (pGetIconInfoExA)
1377 infoex.
cbSize =
sizeof(infoex);
1378 ret = pGetIconInfoExA(
handle, &infoex );
1380 ok( infoex.
wResID == 0,
"GetIconInfoEx wrong resid %x\n", infoex.
wResID );
1384 else win_skip(
"GetIconInfoEx not available\n" );
1389 ok(
ret,
"DestroyCursor() failed.\n");
1398 if (pGetIconInfoExA)
1402 infoexA.
cbSize =
sizeof(infoexA);
1403 ret = pGetIconInfoExA(
handle, &infoexA );
1408 trace(
"GetIconInfoExA broken on Win64\n" );
1411 "GetIconInfoEx wrong module %s\n", infoexA.
szModName );
1413 infoexW.
cbSize =
sizeof(infoexW);
1414 ret = pGetIconInfoExW(
handle, &infoexW );
1438 bitmap_header->
biWidth = 65536;
1463#define ICON_RES_WIDTH 32
1464#define ICON_RES_HEIGHT 32
1465#define ICON_RES_AND_SIZE (ICON_WIDTH*ICON_HEIGHT/8)
1466#define ICON_RES_BPP 32
1467#define ICON_RES_SIZE \
1468 (sizeof(BITMAPINFOHEADER) + ICON_AND_SIZE + ICON_AND_SIZE*ICON_BPP)
1469#define CRSR_RES_SIZE (2*sizeof(INT16) + ICON_RES_SIZE)
1494 ok(
ret,
"GetIconInfo() failed.\n");
1508 if (pGetIconInfoExA)
1511 infoex.
cbSize =
sizeof(infoex);
1512 ret = pGetIconInfoExA(
handle, &infoex );
1514 ok( infoex.
wResID == 0,
"GetIconInfoEx wrong resid %x\n", infoex.
wResID );
1522 ok(
ret,
"DestroyCursor() failed.\n");
1535 ok(
ret,
"GetIconInfo() failed.\n");
1552 ok(
ret,
"DestroyCursor() failed.\n");
1573 ok(
ret,
"GetIconInfo() failed.\n");
1590 ok(
ret,
"DestroyCursor() failed.\n");
1604 ok(
ret,
"GetIconInfo() failed\n");
1609 if (!
info)
return 0;
1612 info->bmiHeader.biWidth = 32;
1613 info->bmiHeader.biHeight = 32;
1614 info->bmiHeader.biPlanes = 1;
1615 info->bmiHeader.biBitCount = 32;
1617 info->bmiHeader.biSizeImage = 32 * 32 * 4;
1618 info->bmiHeader.biXPelsPerMeter = 0;
1619 info->bmiHeader.biYPelsPerMeter = 0;
1620 info->bmiHeader.biClrUsed = 0;
1621 info->bmiHeader.biClrImportant = 0;
1626 ok(
ret,
"GetDIBits() failed\n");
1641 DWORD frame_identifier[] = { 0x10Ad, 0xc001, 0x1c05 };
1653 if (!pGetCursorFrameInfo)
1655 win_skip(
"GetCursorFrameInfo not supported, skipping tests.\n" );
1660 ok(
hdc != 0,
"CreateCompatibleDC(0) failed to return a valid DC\n");
1664 memset(&bitmapInfo, 0,
sizeof(bitmapInfo));
1673 ok (
bmp &&
bits,
"CreateDIBSection failed to return a valid bitmap and buffer\n");
1678#define ICON_RES_WIDTH 32
1679#define ICON_RES_HEIGHT 32
1680#define ICON_RES_AND_SIZE (ICON_WIDTH*ICON_HEIGHT/8)
1681#define ICON_RES_BPP 32
1682#define ICON_RES_SIZE \
1683 (sizeof(BITMAPINFOHEADER) + ICON_AND_SIZE + ICON_AND_SIZE*ICON_BPP)
1684#define CRSR_RES_SIZE (2*sizeof(INT16) + ICON_RES_SIZE)
1708 h2 = pGetCursorFrameInfo(h1, 0xdead, 0xdead, &
rate, &
steps);
1709 ok(h1 == h2,
"GetCursorFrameInfo() failed: (%p != %p).\n", h1, h2);
1710 ok(
rate == 0,
"GetCursorFrameInfo() unexpected param 4 value (0x%x != 0x0).\n",
rate);
1711 ok(
steps == 1,
"GetCursorFrameInfo() unexpected param 5 value (%d != 1).\n",
steps);
1729 h2 = pGetCursorFrameInfo(h1, 0xdead, 0, &
rate, &
steps);
1730 ok(h1 == h2,
"GetCursorFrameInfo() failed: (%p != %p).\n", h1, h2);
1732 ok(
ret,
"GetCursorFrameInfo() returned wrong cursor data for frame 0.\n");
1733 ok(
rate == 0x0,
"GetCursorFrameInfo() unexpected param 4 value (0x%x != 0x0).\n",
rate);
1735 "GetCursorFrameInfo() unexpected param 5 value (%d != 1).\n",
steps);
1759 "Unexpected number of steps in cursor (%d != %d)\n",
1766 h2 = pGetCursorFrameInfo(h1, 0xdead,
i, &
rate, &
steps);
1767 ok(h1 != h2 && h2 != 0,
"GetCursorFrameInfo() failed for cursor %p: (%p, %p).\n", h1, h1, h2);
1769 ok(
ret,
"GetCursorFrameInfo() returned wrong cursor data for frame %d.\n",
i);
1771 "GetCursorFrameInfo() unexpected param 4 value (0x%x != 0x%x).\n",
1774 "GetCursorFrameInfo() unexpected param 5 value (%d != %d).\n",
1780 h2 = pGetCursorFrameInfo(h1, 0xdead, 3, &
rate, &
steps);
1781 ok(h2 == 0,
"GetCursorFrameInfo() failed for cursor %p: (%p != 0).\n", h1, h2);
1784 "GetCursorFrameInfo() unexpected param 4 value (0x%x != 0xdead).\n",
rate);
1787 "GetCursorFrameInfo() unexpected param 5 value (0x%x != 0xdead).\n",
steps);
1805 "Unexpected number of steps in cursor (%d != %d)\n",
1810 h2 = pGetCursorFrameInfo(h1, 0xdead, 0, &
rate, &
steps);
1811 ok(h1 != h2 && h2 != 0,
"GetCursorFrameInfo() failed for cursor %p: (%p, %p).\n", h1, h1, h2);
1813 ok(
ret,
"GetCursorFrameInfo() returned wrong cursor data for frame 0.\n");
1815 "GetCursorFrameInfo() unexpected param 4 value (0x%x != 0x%x).\n",
1818 "GetCursorFrameInfo() unexpected param 5 value (%d != ~0).\n",
steps);
1822 h2 = pGetCursorFrameInfo(h1, 0xdead, 1, &
rate, &
steps);
1823 ok(h2 == 0,
"GetCursorFrameInfo() failed for cursor %p: (%p != 0).\n", h1, h2);
1826 "GetCursorFrameInfo() unexpected param 4 value (0x%x != 0xdead).\n",
rate);
1829 "GetCursorFrameInfo() unexpected param 5 value (%d != 0xdead).\n",
steps);
1853 "Unexpected number of steps in cursor (%d != %d)\n",
1862 h2 = pGetCursorFrameInfo(h1, 0xdead,
i, &
rate, &
steps);
1863 ok(h1 != h2 && h2 != 0,
"GetCursorFrameInfo() failed for cursor %p: (%p, %p).\n", h1, h1, h2);
1865 ok(
ret,
"GetCursorFrameInfo() returned wrong cursor data for frame %d.\n",
i);
1867 "GetCursorFrameInfo() unexpected param 4 value (0x%x != 0x%x).\n",
1870 "GetCursorFrameInfo() unexpected param 5 value (%d != %d).\n",
1892 UINT32 mask = maskvalue ? 0xFFFFFFFF : 0x00000000;
1894 memset(&bitmapInfo, 0,
sizeof(bitmapInfo));
1928 color[0] = 0x00A0B0C0;
1930 modern_expected =
alpha ? 0x00FFFFFF : 0x00C0B0A0;
1931 legacy_expected = 0x00C0B0A0;
1946 "%s. Expected a close match to %06X (modern) or %06X (legacy) with %s. "
1947 "Got %06X from line %d\n",
1948 alpha ?
"Alpha blending" :
"Not alpha blending", modern_expected, legacy_expected,
1949 drawiconex ?
"DrawIconEx" :
"DrawIcon",
result,
line);
1966 "Overlaying Mask %d on Color %06X with DrawIcon. "
1967 "Expected a close match to %06X (modern), or %06X (legacy). Got %06X from line %d\n",
1974 "Overlaying Mask %d on Color %06X with DrawIcon. "
1975 "Expected a close match to %06X (modern), or %06X (legacy). Got %06X from line %d\n",
1981 "Overlaying Mask %d on Color %06X with DrawIcon. "
1982 "Expected unchanged background color %06X. Got %06X from line %d\n",
1995 ok(
hdcDst != 0,
"CreateCompatibleDC(0) failed to return a valid DC\n");
2001 skip(
"Windows will distort DrawIcon colors at 8-bpp and less due to palettizing.\n");
2005 memset(&bitmapInfo, 0,
sizeof(bitmapInfo));
2015 ok (bmpDst &&
bits,
"CreateDIBSection failed to return a valid bitmap and buffer\n");
2016 if (!bmpDst || !
bits)
2065 "Overlaying Mask %d on Color %06X with DrawIconEx flags %08X. "
2066 "Expected a close match to %06X (modern) or %06X (legacy). Got %06X from line %d\n",
2079 ok(
hdcDst != 0,
"CreateCompatibleDC(0) failed to return a valid DC\n");
2085 skip(
"Windows will distort DrawIconEx colors at 8-bpp and less due to palettizing.\n");
2089 memset(&bitmapInfo, 0,
sizeof(bitmapInfo));
2098 ok (bmpDst &&
bits,
"CreateDIBSection failed to return a valid bitmap and buffer\n");
2099 if (!bmpDst || !
bits)
2151 background = 0x00FFFFFF;
2178 if(!passed[0]&&!passed[1])
2180 "DrawState failed to draw a 1x1 Icon in the correct size, independent of the "
2181 "width and height settings passed to it, for Icon with: Overlaying Mask %d on "
2182 "Color %06X with flags %08X. Line %d\n",
2186 "DrawState failed to draw a 1x1 Icon in the correct size, if the width and height "
2187 "parameters passed to it are bigger than the real Icon size, for Icon with: Overlaying "
2188 "Mask %d on Color %06X with flags %08X. Line %d\n",
2192 "DrawState failed to draw a 1x1 Icon in the correct size, if the width and height "
2193 "parameters passed to it are 0, for Icon with: Overlaying Mask %d on "
2194 "Color %06X with flags %08X. Line %d\n",
2214 "DrawState drawing Icon with Overlaying Mask %d on Color %06X with flags %08X. "
2215 "Expected a close match to %06X (modern) or %06X (legacy). Got %06X from line %d\n",
2228 ok(
hdcDst != 0,
"CreateCompatibleDC(0) failed to return a valid DC\n");
2234 skip(
"Windows will distort DrawIconEx colors at 8-bpp and less due to palettizing.\n");
2238 memset(&bitmapInfo, 0,
sizeof(bitmapInfo));
2247 ok (bmpDst &&
bits,
"CreateDIBSection failed to return a valid bitmap and buffer\n");
2248 if (!bmpDst || !
bits)
2280 ok(
ret,
"AttachThreadInput failed\n" );
2289 static const BYTE bmp_bits[4096];
2302 if (!pGetCursorInfo( &
info ))
2304 win_skip(
"GetCursorInfo not working\n" );
2305 pGetCursorInfo =
NULL;
2307 else global_cursor =
info.hCursor;
2332 ok( pGetCursorInfo( &
info ),
"GetCursorInfo failed\n" );
2335 "wrong info cursor %p/%p\n",
info.hCursor, global_cursor );
2365 ok( pGetCursorInfo( &
info ),
"GetCursorInfo failed\n" );
2367 "wrong info cursor %p/%p\n",
info.hCursor, global_cursor );
2377 "wrong error %u\n",
error );
2382 ok( pGetCursorInfo( &
info ),
"GetCursorInfo failed\n" );
2384 "wrong info cursor %p/%p\n",
info.hCursor, global_cursor );
2399 ok(
ret,
"AttachThreadInput failed\n" );
2419 ok( pGetCursorInfo( &
info ),
"GetCursorInfo failed\n" );
2442 ok( pGetCursorInfo( &
info ),
"GetCursorInfo failed\n" );
2496 ok( pGetCursorInfo( &
info ),
"GetCursorInfo failed\n" );
2508 ok( pGetCursorInfo( &
info ),
"GetCursorInfo failed\n" );
2516 static const BYTE bmp_bits[4096];
2543 ok(!
ret ||
broken(
ret) ,
"DestroyCursor on the active cursor succeeded\n");
2549 ok(new_cursor !=
cursor,
"GetCursor returned %p/%p\n", new_cursor,
cursor);
2551 ok(new_cursor ==
cursor,
"GetCursor returned %p/%p\n", new_cursor,
cursor);
2567 ok( !
ret,
"DestroyCursor succeeded\n" );
2573 ok( cursor2 ==
cursor,
"SetCursor returned %p/%p\n", cursor2,
cursor);
2581 ok(!cursor2,
"CopyCursor succeeded\n" );
2588 if (new_cursor !=
cursor)
2589 ok(
ret,
"DestroyCursor succeeded\n" );
2591 ok( !
ret,
"DestroyCursor succeeded\n" );
2597 ok(!cursor2,
"SetCursor returned %p/%p\n", cursor2,
cursor);
2603 ok(cursor2 == new_cursor,
"GetCursor returned %p/%p\n", cursor2, new_cursor);
2607 if (new_cursor !=
cursor)
2608 ok(cursor2 == new_cursor,
"SetCursor returned %p/%p\n", cursor2,
cursor);
2610 ok(!cursor2,
"SetCursor returned %p/%p\n", cursor2,
cursor);
2614 ok(!cursor2,
"GetCursor returned %p/%p\n", cursor2,
cursor);
2618 if (new_cursor !=
cursor)
2619 ok(
ret,
"DestroyCursor succeeded\n" );
2621 ok( !
ret,
"DestroyCursor succeeded\n" );
2633 ok(
ret ||
broken(!
ret) ,
"DestroyCursor on the active cursor failed.\n");
2635 ok(
error == 0xdeadbeef,
"Last error: 0x%08x\n",
error);
2641 ok(
error == 0xdeadbeef,
"Last error: 0x%08x\n",
error);
2645 ok(cursor2 ==
cursor,
"cursor == %p, cursor2 == %p\n",
cursor, cursor2);
2649 ok(cursor2 !=
cursor,
"cursor == %p, cursor2 == %p\n",
cursor, cursor2);
2657 static const test_icon_entries_t icon_desc[] = {{0,0,
TRUE}, {16,16,
TRUE}, {32,32}, {64,64,
TRUE}};
2662 ok(
ret == 1,
"PrivateExtractIconsA returned %u\n",
ret);
2663 ok(icon !=
NULL,
"icon == NULL\n");
2675 DWORD bytes_written;
2682 BOOL monochrome, use_core_info;
2687 for (monochrome =
FALSE; monochrome <=
TRUE; monochrome++)
2688 for (use_core_info =
FALSE; use_core_info <=
TRUE; use_core_info++)
2691 monochrome ?
"monochrome" :
"colored",
2692 use_core_info ?
"core info" :
"bitmap info");
2750 ok(
ret && bytes_written ==
icon_size,
"icon.ico created improperly.\n");
2759 skip(
"Icon failed to load: %s, %s\n",
2760 monochrome ?
"monochrome" :
"colored",
2761 use_core_info ?
"core info" :
"bitmap info");
2793 const unsigned char *
data;
2797 stride = ((
h->biBitCount *
h->biWidth + 7) / 8 + 3) & ~3;
2799 if (
h->biBitCount >= 24)
2802 if (
h->biBitCount == 16)
2805 return RGB(((color16 >> 10) & 0x1f) << 3, ((color16 >> 5) & 0x1f) << 3,
2806 (color16 & 0x1f) << 3);
2809 mask = ~(~0
u <<
h->biBitCount);
2814#define compare_bitmap_bits(a, b, c, d, e, f, g) compare_bitmap_bits_(__LINE__, a, b, c, d, e, f, g)
2816 size_t result_bits_size,
const unsigned char *expected_bits,
unsigned int test_index,
BOOL todo)
2818 unsigned char *result_bits;
2837 "got 0x%06x, expected 0x%06x, test_index %u, row %u, column %u.\n",
2845 static const unsigned char test_bits_24[] =
2847 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00,
2848 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00,
2849 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00,
2850 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00,
2852 static const unsigned char expected_bits_24[] =
2854 0x3f, 0xff, 0x00, 0x3f, 0xff, 0x3f, 0x00, 0x00,
2855 0x3f, 0xff, 0x7f, 0x00, 0xff, 0x3f, 0x00, 0x00,
2857#define rgb16(r, g, b) ((WORD)(((r >> 3) << 10) | ((g >> 3) << 5) | (b >> 3)))
2858 static const WORD test_bits_16[] =
2860 rgb16(0x00, 0x20, 0x00),
rgb16(0x00, 0x40, 0x00),
rgb16(0x00, 0x40, 0xff),
rgb16(0x00, 0x20, 0x00),
2861 rgb16(0x00, 0x60, 0x00),
rgb16(0xff, 0x80, 0x00),
rgb16(0xff, 0x60, 0x00),
rgb16(0x00, 0x80, 0x00),
2862 rgb16(0x00, 0x20, 0xff),
rgb16(0x00, 0x40, 0x00),
rgb16(0x00, 0x40, 0xff),
rgb16(0x00, 0x20, 0x00),
2863 rgb16(0xff, 0x80, 0x00),
rgb16(0x00, 0x60, 0xff),
rgb16(0x00, 0x80, 0x00),
rgb16(0x00, 0x60, 0x00),
2865 static const WORD expected_bits_16[] =
2867 rgb16(0x00, 0x40, 0x00),
rgb16(0x00, 0x20, 0x00),
2868 rgb16(0x00, 0x40, 0x00),
rgb16(0x00, 0x20, 0x00),
2871 static const unsigned char test_bits_8[] =
2873 0x00, 0xff, 0x00, 0xff,
2874 0x00, 0x00, 0x00, 0x00,
2875 0xff, 0x55, 0x00, 0xff,
2876 0x00, 0xff, 0xff, 0x00,
2878 static const unsigned char expected_bits_8[] =
2880 0xff, 0xff, 0x00, 0x00,
2881 0x55, 0xff, 0x00, 0x00,
2883 static const unsigned char test_bits_1[] =
2885 0x30, 0x0, 0x0, 0x0,
2886 0x30, 0x0, 0x0, 0x0,
2887 0x40, 0x0, 0x0, 0x0,
2888 0xc0, 0x0, 0x0, 0x0,
2890 static const unsigned char expected_bits_1[] =
2892 0x40, 0x0, 0x0, 0x0,
2895 static const RGBQUAD colors_bits_1[] =
2900 static RGBQUAD colors_bits_8[256];
2906 const unsigned char *test_bits, *expected_bits;
2907 size_t test_bits_size, result_bits_size;
2909 size_t bmi_colors_size;
2914 {4, 4, 2, 2, 24, test_bits_24, expected_bits_24,
2915 sizeof(test_bits_24),
sizeof(expected_bits_24),
NULL, 0,
TRUE},
2916 {4, 4, 2, 2, 1, test_bits_1, expected_bits_1,
2917 sizeof(test_bits_1),
sizeof(expected_bits_1), colors_bits_1,
2918 sizeof(colors_bits_1),
FALSE},
2919 {4, 4, 2, 2, 8, test_bits_8, expected_bits_8,
2920 sizeof(test_bits_8),
sizeof(expected_bits_8), colors_bits_8,
2921 sizeof(colors_bits_8),
FALSE},
2922 {4, 4, 2, 2, 16, (
const unsigned char *)test_bits_16, (
const unsigned char *)expected_bits_16,
2923 sizeof(test_bits_16),
sizeof(expected_bits_16),
NULL, 0,
FALSE},
2925 static const char filename[] =
"test.bmp";
2928 unsigned int test_index;
2929 unsigned char *
bits;
2941 for (
i = 0;
i < 256; ++
i)
2942 colors_bits_8[
i].rgbRed = colors_bits_8[
i].rgbGreen = colors_bits_8[
i].rgbBlue =
i;
2948 if (
tests[test_index].bmi_colors)
2956 memcpy(bmi_output, bmi, bmi_size);
2966 ok(!!bitmap_copy,
"CopyImage() failed, result %u.\n",
GetLastError());
2969 tests[test_index].expected_bits, test_index,
tests[test_index].
todo);
2979 tests[test_index].expected_bits, test_index,
tests[test_index].
todo);
char * strcat(char *DstString, const char *SrcString)
char * strcpy(char *DstString, const char *SrcString)
static void startup(void)
INT copy(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], INT append, DWORD lpdwFlags, BOOL bTouch)
DWORD GetPixel(LPDIRECTDRAWSURFACE7 Surface, UINT x, UINT y)
#define ERROR_INVALID_PARAMETER
#define GetProcAddress(x, y)
#define INVALID_HANDLE_VALUE
#define CreateFileA(a, b, c, d, e, f, g)
#define HeapFree(x, y, z)
#define FILE_ATTRIBUTE_NORMAL
#define GetEnvironmentVariableA(x, y, z)
static const WCHAR *const ext[]
static void cleanup(void)
BOOL WINAPI DECLSPEC_HOTPATCH SetEnvironmentVariableA(IN LPCSTR lpName, IN LPCSTR lpValue)
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
BOOL WINAPI RemoveDirectoryA(IN LPCSTR lpPathName)
BOOL WINAPI CreateDirectoryA(IN LPCSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
DWORD WINAPI GetModuleFileNameA(HINSTANCE hModule, LPSTR lpFilename, DWORD nSize)
DWORD WINAPI GetCurrentDirectoryA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
BOOL WINAPI SetCurrentDirectoryA(IN LPCSTR lpPathName)
DWORD WINAPI GetTempPathA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
VOID WINAPI ExitProcess(IN UINT uExitCode)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA(LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
BOOL WINAPI GetExitCodeThread(IN HANDLE hThread, OUT LPDWORD lpExitCode)
struct png_info_def *typedef unsigned char **typedef struct png_info_def *typedef struct png_info_def *typedef struct png_info_def *typedef unsigned char ** row
static char * path_name(DOS_FILE *file)
GLint GLint GLsizei GLsizei GLsizei depth
GLclampf GLclampf GLclampf alpha
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
GLboolean GLboolean GLboolean b
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * bits
GLuint GLsizei GLsizei * length
GLuint GLdouble GLdouble GLint GLint order
GLboolean GLboolean GLboolean GLboolean a
GLfloat GLfloat GLfloat GLfloat h
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
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 * u
_Check_return_ _CRTIMP int __cdecl sscanf(_In_z_ const char *_Src, _In_z_ _Scanf_format_string_ const char *_Format,...)
static GLint image_size(GLint width, GLint height, GLenum format, GLenum type)
#define memcpy(s1, s2, n)
static struct test_info tests[]
#define sprintf(buf, format,...)
#define todo_wine_if(is_todo)
static void test_SetCursor(void)
#define ANI_FLAG_SEQUENCE
static LRESULT CALLBACK callback_parent(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
static DWORD DWORD DWORD DWORD * steps
static void test_CopyImage_Check(HBITMAP bitmap, UINT flags, INT copyWidth, INT copyHeight, INT expectedWidth, INT expectedHeight, WORD expectedDepth, BOOL dibExpected)
riff_cursor3_t empty_anicursor3
static DWORD DWORD DWORD * rate
static void do_child(void)
static void test_icon_info_dbg(HICON hIcon, UINT exp_cx, UINT exp_cy, UINT exp_mask_cy, UINT exp_bpp, int line)
static void check_DrawState_Color(HDC hdc, BOOL maskvalue, UINT32 color, int bpp, HBRUSH hbr, UINT flags, COLORREF background, COLORREF modern_expected, COLORREF legacy_expected, int line)
static void test_GetCursorFrameInfo(void)
static void finish_child_process(void)
static void test_ShowCursor(void)
static void test_DrawIcon(void)
static HANDLE event_start
static void test_initial_cursor(void)
static const unsigned char bmpcoreimage[38]
static void test_LoadImage(void)
#define compare_bitmap_bits(a, b, c, d, e, f, g)
static DWORD CALLBACK set_cursor_thread(void *arg)
static void check_alpha_draw(HDC hdc, BOOL drawiconex, BOOL alpha, int bpp, int line)
static void test_child_process(void)
static const unsigned char gifimage[35]
static unsigned char bmpimage[70]
static BOOL color_match(COLORREF a, COLORREF b)
static HICON create_test_icon(HDC hdc, int width, int height, int bpp, BOOL maskvalue, UINT32 *color, int colorSize)
static void test_LoadImageBitmap(const char *test_desc, HBITMAP hbm)
riff_cursor1_t empty_anicursor
static HANDLE child_process
static void compare_bitmap_bits_(unsigned int line, HDC hdc, HBITMAP bitmap, BITMAPINFO *bmi, size_t result_bits_size, const unsigned char *expected_bits, unsigned int test_index, BOOL todo)
#define test_icon_info(a, b, c, d, e)
static void create_ico_file(const char *filename, const test_icon_entries_t *test_icon_entries, unsigned entry_cnt)
riff_cursor3_seq_t empty_anicursor3_seq
static ICONINFOEXA *static ICONINFOEXW *static const BOOL is_win64
static void test_DrawIconEx(void)
static void test_monochrome_icon(void)
static void test_CopyImage_Bitmap(int depth)
static void test_LoadImageFile(const char *test_desc, const unsigned char *image_data, unsigned int image_size, const char *ext, BOOL expect_success)
static void test_DrawState(void)
static void test_LoadImage_working_directory(void)
static void test_LoadImage_working_directory_run(char *path)
static void create_bitmap_file(const char *filename, const BITMAPINFO *bmi, const unsigned char *bits)
static void test_DestroyCursor(void)
static void test_CreateIcon(void)
static void check_DrawIcon(HDC hdc, BOOL maskvalue, UINT32 color, int bpp, COLORREF background, COLORREF modern_expected, COLORREF legacy_expected, int line)
static void test_CreateIconFromResource(void)
static DWORD CALLBACK show_cursor_thread(void *arg)
static int check_cursor_data(HDC hdc, HCURSOR hCursor, void *data, int length)
static void test_PrivateExtractIcons(void)