gdi32/tests: Add more tests for various palette formats as destination.

This commit is contained in:
Alexandre Julliard 2011-10-13 23:14:48 +02:00
parent 5500e97d19
commit deb195869c
1 changed files with 249 additions and 6 deletions

View File

@ -422,6 +422,120 @@ static const char *sha1_graphics_r4g4b4[] =
NULL
};
static const char *sha1_graphics_8_color[] =
{
"41728d7ff2bb425b5fc06521adeabf6cc73136f3",
"e313bb57f699587b0bae2f17f5da5d977e6f2a61",
"49024d6cbdf1614327dfda9eda17675e76805f7e",
"63ba8ab7e7996857d52d4c2b995cfcd304daf25f",
"92295ae66712df050cfd6cc9fd2fd4101784c5fc",
"84d85009d35ae10abbc435f3913422544105cea2",
"eae349c2a481d6e8bfdf9a7f4f49384a14716a5f",
"6c51068ca1db36d948eaa34aed4a44d2cd1e8b32",
"f3aa8d89430748178952de56643069d80b40aad6",
"bd5fed74e2f1b097ef4c20bd30edfc6ee11eeccd",
"0546b87bf5fbe1b8168eed5d4a20649be92734a1",
"52b1363e821bf604d9df260bfa97e26d428c33fd",
"108732d9909ee5f3542a9b90b3ad96ec82446ab9",
"06c76c53dcf3ba5e213d483e27d841404c9aa90a",
"ae8fcdbdd44ba58e9bd46a4c56eb54f37483913c",
"89711289be6d5c55734878410e4923d5cca9aca9",
"8355caf57d51ad4e14275943088392e37dc75d33",
"5992b2e331a0e0f752598cc8d083cbecb5f4dde6",
"6f0570da9dea7f043f678088f8362ee458cd79fa",
"940db409d4c3e5640275724f9e5f7c1a0d2e21b2",
"242ce86967ea62fa69c1e6f597ccbcf2f0b1602c",
"5092b22af85a08f10a2899888bb9d552f25f828e",
"e91973be2651eeef568700463652838d8cbba976",
"1df851515ecf46df5c2d3279535c1763f72353dd",
"b68922915ebc2797d58deecf983f7d0cf9a5efbd",
"359bd76088a965bb0cee7c44800bc46b2638807e",
"e14e5734b33057b890368f3e9d482d9e5a0358c5",
"64205ccaa277e64eeea0c20e99900ac79858ca2c",
"2cdee35d43d62da09b4ddfddbd0948ddbb9fc48e",
"91f988f575338505ba8a40727865a8d3f2298624",
"d2b4557492ebb2e0f640a0a2f6fc3bdc8d8f36f9",
"421e8b608378e4f17774dd32ea6446fa0fa16f91",
"3b7488731da48635d86be551ab7c8c0f91c78219",
"4fd49cb49853ef950fd0b7e2e35718a71c8374c7",
"e15a355fc09bfd22267917898e2266168ff410e3",
"b9688566bddf18586787c00e68724e51e97dfb72",
"5e38e03310f1c66f2052af2a745d8c60515707c5",
"ea10eac72830dcae19bcb16a076c2b21d844b5b6",
"6376234f542467e5887adfece62f753e998dc19d",
"add949d009217ef2b847e34772ba363e4be7b1b8",
"28fcf9f7d098c05de632ae38b2fe33b9635ad445",
"0b58666deb3615e912896a764e5c6475989e95e4",
"bf460cc44c0edee851d72587c8425c3f06a62c55",
"5ac22e1a33b0204fdc7a68d54ee94648e96079a0",
"284abed096637c80bb50844e393da9dd4b3f19ac",
"9dc776c5ab8256b1301c7d1da60544a9410e6715",
"a433c41c05b6db008a4cb2c52a321d027c6be1fe",
"46f772c2832b3aad584674db666bd63e48b4f338",
"f3dc739da41fb299637c8660e8c46917ddcf87a8",
"eae47bf865d932f22a6e59b6fe8d041f220e1fbc",
NULL
};
static const char *sha1_graphics_8_grayscale[] =
{
"41728d7ff2bb425b5fc06521adeabf6cc73136f3",
"df35491dd5038187c05bac06921402ba6d7773a8",
"c8cd6d34e011d5f9ca4b1190eec3b416e5e68e53",
"66a686ac22cd0ec326f2c97ef473781cabe9690b",
"9bddef7b97b8b03569f07011e66ddd67fe82d787",
"2a4cea20974bcfb92cf40b05746fc7eb465c4b0f",
"0a87689ca33f888f05dbfa21ddec11c069990d8b",
"8d0a92e6333e1b99591962e2def9bc9121111cf5",
"409c9f29f6fa2e312c8e0b4b3c59acb4d84d8717",
"1fbc234c28a8140965ad0fe30b4b799f6681e864",
"1fc709d5d3e55d5f96c451c209cd73c59dbfe733",
"96b6a32e057d5faeae57086cbb62a8e7b3e6e86f",
"aa66ea7c9b7214339858b9fc9bd4720d05e8c843",
"114bb377b4e78a1978e1ac09388c48861b5223a3",
"8d0a92e6333e1b99591962e2def9bc9121111cf5",
"9dc511d6947fe816185cdff93bf0cfe0349b72b4",
"eb4c14ee66b012187f5fe6a2ec28b6be956567c8",
"216388ddf6b563dd2058a9df65b40b6f72df1715",
"ad11e4b6979cf055e3bf1868112a7bef207385a4",
"47f72be971bd2d3399dabd018201f4f5075e96fe",
"de09d41c9ae4338fbfcfe9f8ed71d343537a6f3d",
"f39ab890a2b99d0c31e6e047f2315244972f5ffd",
"6e7baf7d328bc2c55366e32967a0db4d2f43ab82",
"15b991814d84d6aa252696dd0c6150ef88a8db3f",
"1cb52f2a4d17b9b0d8375d016aa8cf0677fcd29a",
"9a6cfd68523e40ea1d52847d7747da912cfe2ca9",
"82e641ebe47d9f8cc229b82b8315e69e52f812b1",
"15db343049e3a9b31addc5d2ffebc3fe91b39c51",
"a895daf1f20371d4d1c3f93c070124cc13e341c3",
"3ddc872384ed8f9eaef472aa14a1d79a2c3f3b04",
"0000000000000000000000000000000000000000",
"bd7d8c1cb4b2adc31cf8c7d39a4fa1e3ac7f2545",
"33fc8618ce62f5cdd9e06ad61e296f718a99899e",
"dcaa7fe030ae4d3029e38ca584047eeb2d17fe10",
"6d41e6168662e75baacf74d911d7419d54c8d73c",
"2404952157ba1519094a2da6bfbf2b0f1356432d",
"24caede65b40815a60b83c4edfa06bdc542388cd",
"650a51bedd1af92469d2950eb95220db35f95c6e",
"3f43aa11e6fccb747cc13224583fb2f951fee08c",
"04cea9753b575ecce8e55357eddfcec10ddfbbea",
"6b6f4b97f05e015eb37a5f6aff637235feacd030",
"85425940daf119125deb52421b2057acebe6d1cf",
"a3db92382cf0a4c7cafe52c27b1f41520aaa677d",
"9869b6f088822fb423996f9968e5a931301fc2c3",
"cdf63ab4ab32c2e8e27527a9588d0fb525f1c945",
"a7f81cf3326fa3608acc13cfce2f573912e9d745",
"f2ea92f523f8918b1d514a2d9555dcb4750273b4",
"84a4bc0c2c5d36d016da4df95a5d8d6c8ce3ba6f",
"f543efc84e638afbaa456e629100f0274de1a35b",
"1bd2587399006eed0d46beff397d32081f6bc58e",
"f8a571de89ed82ffb9cbc041ce1eacb064be2853",
"640a49455acabca6954a7fbb6af4e872af342d11",
"a1a941fa270cda48c648553ed4b427e16e96f8e0",
"f30a8d9f73ca043c5bfc18d9595e299fc0a39eec",
NULL
};
static const char *sha1_graphics_8[] =
{
"41728d7ff2bb425b5fc06521adeabf6cc73136f3",
@ -524,6 +638,55 @@ static const char *sha1_graphics_4[] =
NULL
};
static const char *sha1_graphics_4_grayscale[] =
{
"fa867e2976a549ecd3b1fa67df54963232fcef8c",
"6611ea6cb24bcf34c5f3688d57e2874aecb39c24",
"5ab1d3f8f5938c5d20a2fa3237e319077b21e716",
"1c201d149c0bd886ff8a427ad513f15a70991174",
"44646e67842a4d055bea1fad0434e6e4a0eb5465",
"315189097a02024d2eae61d524c4de07a396aee7",
"73ac786015dea36ac466a6524dba757d5d238ece",
"6e328cc4d53627f034b23706d8bf26afe18512ae",
"3c5b90cfeafdc1c99c8c62317d07276fdf66803e",
"95e6f509bb1cf9981efc47a0878ab0bd983eb349",
"2e1bc3b00e4ecc62b03785533dc0faeeda38d53f",
"6448226859cab61a61c95d3ed5ed5f216b1bb120",
"7f1cb06597b14edbea03b860aec3cebc4ebc3d62",
"ec3879342b5a44f6de6efe946243ae5ade00980d",
"6e328cc4d53627f034b23706d8bf26afe18512ae",
"51b50968a3a0570d5ed690fe44ba1a78a4d62ce2",
"d5bab61f78ac3355aa2e0776b2d5d9d71d61e77b",
"fa47c5195405f6a0eefba3e3a60ad463c7ee94c7",
"b2bda683edef912957845a33edc055902a801fed",
"b067f0421cb2c83b218b8ab6edbede2ff5723b57",
"c8de76f9c0900e5f86c7584fe94d5749376b7b49",
"43ee3e187dda14b86aef12371041ae70313b5a65",
"d4930552a7845111ffd9db57260be1ab97967c06",
"afdf41fca7951c6dd6193320de1295f2c68fe52a",
"f2f1f331fe6b1b31d7c9ddd37793b375fc01d3d4",
"f0af0f1edcb837bdf1535c1f5e9988c21ae9bfd1",
"0000000000000000000000000000000000000000",
"71c4577baaf35f12f6707b1e2f78a1e8c0d41d0b",
"9b7d6b12385bb9e1cd881758aff342bd5427432b",
"6fdd5aa022da2a8af6f1d02b6072ebc068b4b600",
"643fab30f1a59dc37f1e0f1a6006076fbf90a5fe",
"6edbc0b95e9ae3348ce7d12c44f9c8082b5f2aa9",
"9c0da52c4ceaa8fdfcff7351328dd520bb57e985",
"f8224430462f6a93f85ef33b8aa7299525990708",
"1cf93cecc942b41ab8fae21ea18418a6d64873e5",
"d58b8760ef01c12e691651c932d683c66fde3654",
"94ad53c578f6034dfc5c666e363203cdfb00f2cc",
"8cd7b0ba8426db344b4cb8820890603020ed65e9",
"ad96132f25ca14e1aeb17c86f8d187febf6401c9",
"3f131e855ba1611d8fb0f16a6979f8f56aacc7f3",
"ae64d1dc52dcfa8c644f953c4601fa2fbefec37b",
"2f3fb1bd8f416198d70e06f6d519571cd5eb4ef4",
"5eeb56afea8040a8fb18c11f29931b836474126d",
"a3405c085fc2f2184bcd0d1edcdcc66927e33659",
NULL
};
static const char *sha1_graphics_1[] =
{
"23366004515f3bc46796ea505d748f8d0f97fbe1",
@ -992,7 +1155,10 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
y += 25;
}
}
compare_hash_broken_todo(bmi, bits, sha1, "top-down 8888 dib brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp);
if (bmi->bmiHeader.biBitCount == 8 && bmi->bmiHeader.biClrUsed == 256) /* 8-bpp grayscale broken on NT4 */
compare_hash_broken_todo(bmi, bits, sha1, "top-down 8888 dib brush patblt", 1, FALSE);
else
compare_hash_broken_todo(bmi, bits, sha1, "top-down 8888 dib brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp);
memset(bits, 0xcc, dib_size);
SelectObject(hdc, orig_brush);
@ -1020,7 +1186,10 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
y += 25;
}
}
compare_hash_broken_todo(bmi, bits, sha1, "bottom-up 8888 dib brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp);
if (bmi->bmiHeader.biBitCount == 8 && bmi->bmiHeader.biClrUsed == 256) /* 8-bpp grayscale broken on NT4 */
compare_hash_broken_todo(bmi, bits, sha1, "bottom-up 8888 dib brush patblt", 1, FALSE);
else
compare_hash_broken_todo(bmi, bits, sha1, "bottom-up 8888 dib brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp);
memset(bits, 0xcc, dib_size);
SelectObject(hdc, orig_brush);
@ -1048,7 +1217,10 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
y += 25;
}
}
compare_hash_broken_todo(bmi, bits, sha1, "top-down 24 bpp brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp);
if (bmi->bmiHeader.biBitCount == 8 && bmi->bmiHeader.biClrUsed == 256) /* 8-bpp grayscale broken on NT4 */
compare_hash_broken_todo(bmi, bits, sha1, "top-down 24 bpp brush patblt", 1, FALSE);
else
compare_hash_broken_todo(bmi, bits, sha1, "top-down 24 bpp brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp);
memset(bits, 0xcc, dib_size);
SelectObject(hdc, orig_brush);
@ -1076,7 +1248,10 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
y += 25;
}
}
compare_hash_broken_todo(bmi, bits, sha1, "top-down 555 dib brush patblt", dib_is_1bpp ? 1 : 0, dib_is_1bpp);
if (bmi->bmiHeader.biBitCount == 8 && bmi->bmiHeader.biClrUsed == 256) /* 8-bpp grayscale broken on NT4 */
compare_hash_broken_todo(bmi, bits, sha1, "top-down 555 dib brush patblt", 1, FALSE);
else
compare_hash_broken_todo(bmi, bits, sha1, "top-down 555 dib brush patblt", dib_is_1bpp ? 1 : 0, dib_is_1bpp);
memset(bits, 0xcc, dib_size);
SelectObject(hdc, orig_brush);
@ -1422,7 +1597,10 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
((WORD *)src_bits)[y * 256 + x] = x | x << 4 | x << 8 | y << 3 | y << 7;
BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY );
compare_hash(bmi, bits, sha1, "BitBlt src 16-bpp SRCCOPY" );
if (bmi->bmiHeader.biBitCount == 8 && bmi->bmiHeader.biClrUsed > 5) /* broken on NT4 */
compare_hash_broken_todo(bmi, bits, sha1, "BitBlt src 16-bpp SRCCOPY", 1, FALSE );
else
compare_hash(bmi, bits, sha1, "BitBlt src 16-bpp SRCCOPY" );
memset(bits, 0xcc, dib_size);
/* blitting with 16-bpp b4g4r4 source */
@ -1439,7 +1617,10 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
((WORD *)src_bits)[y * 256 + x] = x | x << 4 | x << 8 | y << 3 | y << 7;
BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY );
compare_hash(bmi, bits, sha1, "BitBlt src 16-bpp b4g4r4 SRCCOPY" );
if (bmi->bmiHeader.biBitCount == 8 && bmi->bmiHeader.biClrUsed > 5) /* broken on NT4 */
compare_hash_broken_todo(bmi, bits, sha1, "BitBlt src 16-bpp b4g4r4 SRCCOPY", 1, FALSE );
else
compare_hash(bmi, bits, sha1, "BitBlt src 16-bpp b4g4r4 SRCCOPY" );
memset(bits, 0xcc, dib_size);
/* blitting with 8-bpp source */
@ -1509,6 +1690,7 @@ static void test_simple_graphics(void)
HBITMAP dib, orig_bm;
const char **sha1;
DIBSECTION ds;
int i;
mem_dc = CreateCompatibleDC(NULL);
@ -1703,6 +1885,49 @@ static void test_simple_graphics(void)
SelectObject(mem_dc, orig_bm);
DeleteObject(dib);
/* 8 color */
trace("8 color\n");
bmi->bmiHeader.biBitCount = 8;
bmi->bmiHeader.biCompression = BI_RGB;
bmi->bmiHeader.biClrUsed = 236;
for (i = 0; i < 236; i++)
{
bmi->bmiColors[i].rgbRed = (i & 0x07) << 5;
bmi->bmiColors[i].rgbGreen = (i & 0x38) << 2;
bmi->bmiColors[i].rgbBlue = i & 0xc0;
}
dib = CreateDIBSection(0, bmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0);
ok(dib != NULL, "ret NULL\n");
orig_bm = SelectObject(mem_dc, dib);
dst_format = "8 color";
sha1 = sha1_graphics_8_color;
draw_graphics(mem_dc, bmi, bits, &sha1);
SelectObject(mem_dc, orig_bm);
DeleteObject(dib);
/* 8 grayscale */
trace("8 grayscale\n");
bmi->bmiHeader.biBitCount = 8;
bmi->bmiHeader.biCompression = BI_RGB;
bmi->bmiHeader.biClrUsed = 256;
for (i = 0; i < 256; i++)
bmi->bmiColors[i].rgbRed = bmi->bmiColors[i].rgbGreen = bmi->bmiColors[i].rgbBlue = i;
dib = CreateDIBSection(0, bmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0);
ok(dib != NULL, "ret NULL\n");
orig_bm = SelectObject(mem_dc, dib);
dst_format = "8 grayscale";
sha1 = sha1_graphics_8_grayscale;
draw_graphics(mem_dc, bmi, bits, &sha1);
SelectObject(mem_dc, orig_bm);
DeleteObject(dib);
/* 8 */
trace("8\n");
bmi->bmiHeader.biBitCount = 8;
@ -1752,6 +1977,24 @@ static void test_simple_graphics(void)
SelectObject(mem_dc, orig_bm);
DeleteObject(dib);
/* 4 grayscale */
trace("4 grayscale\n");
bmi->bmiHeader.biClrUsed = 16;
for (i = 0; i < 16; i++)
bmi->bmiColors[i].rgbRed = bmi->bmiColors[i].rgbGreen = bmi->bmiColors[i].rgbBlue = i * 17;
dib = CreateDIBSection(0, bmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0);
ok(dib != NULL, "ret NULL\n");
orig_bm = SelectObject(mem_dc, dib);
dst_format = "4 grayscale";
sha1 = sha1_graphics_4_grayscale;
draw_graphics(mem_dc, bmi, bits, &sha1);
SelectObject(mem_dc, orig_bm);
DeleteObject(dib);
/* 1 */
trace("1\n");
bmi->bmiHeader.biBitCount = 1;