gdi32/tests: Add some tests for overlapping blits.

This commit is contained in:
Alexandre Julliard 2011-09-22 13:14:08 +02:00
parent 7bcd8fa20e
commit 0e91f9990e
1 changed files with 146 additions and 0 deletions

View File

@ -103,6 +103,15 @@ static const char *sha1_graphics_a8r8g8b8[] =
"7da9dd3d40d44d92deb9883fb7110443c2d5769a",
"e358efb1c11172e40855de620bdb8a8e545cd790",
"9e0c2596c6ecb4f1bc97b18ec3ca493d37626608",
"58806549380c964e7a53ad54821d2eb86fa5b9ce",
"7fc30d3058c235ce39088de0a598b8c7fe7ca61f",
"52a6c769c227f2bb1949097c4c87fed5ee0cbcb1",
"8a010d4c5af51fcc34d51be3197878782bdf63e7",
"c84c2c33e22eb7e5c4a2faad3b3b99a359d77528",
"41bcc1f57c60bdec3c4d1e749084a12867f91224",
"94645300d6eb51020a7ef8261dee2941cd51b5df",
"c56f5bdc9cac4f0bc81c33295d9aed8eaf4cb1f2",
"21cdfde38ac7edbb241ec83d82f31286e90c4629",
NULL
};
@ -135,6 +144,15 @@ static const char *sha1_graphics_a8b8g8r8[] =
"abdf003699364fe45fab7dc61e67c606d0063b40",
"89abaadff4e68c738cf9251c51e3609564843381",
"f6aa3f907f620b9f3493f03cb3b4b292df3a9545",
"77d0ad32938147aa4038c1eced232b7b5a5f88f3",
"43d36e57b702ce56eb250bf53f1ecc4680990cfe",
"fd6e0ebb52710ebcdd8dd69931165c83c4930b41",
"71b9756fdfeedce1e6db201176d21a981b881662",
"5319528d9af750c172ae62ee85ddb2eaef73b193",
"b7ce8aa3c328eedaed7306234ed9bae67708e627",
"19b32a0daa91201725b5e13820c343d0a84ff698",
"abca6a80a99b05722d2d87ce2a8b94ef1ae549e1",
"2ba70994d0b4ce87fdf6fbc33ada11252178061e",
NULL
};
@ -167,6 +185,15 @@ static const char *sha1_graphics_24[] =
"e649e00efe7fea1eb8b17f7867fe089e5270c44b",
"a0bffbbfb0adf6f188479c88da04e25d76ab4822",
"92a1ab214dd8027c407814420449119466c92840",
"b58f19c1800344a2b8e017eb784705bdb2bd8450",
"5747a6d5c6ce79731c55e8cf33f7da3025cd35fd",
"955390669afed2369b15b32fa519f2f921cdf1a0",
"201906f7d763b930a98c97f8eeab417f2b65e723",
"5313357d50c40c05a3b3a83d0d2013a138c955a1",
"701c5af1d0c28294ce7d804b5697643c430d22a0",
"b0a959745b2db1d9f449e68e4479a4f36301879c",
"63f764b9bd2f4876ab1ee0f3c0eb55b5a7de5212",
"e171f6ec77bca91d6b8559911bce296c0bac469e",
NULL
};
@ -199,6 +226,14 @@ static const char *sha1_graphics_r5g5b5[] =
"ecc2991277d7314f55b00e0f284ae3703aeef81e",
"656bf3b7121bcd620a0a3ad488f0d66604824577",
"d7d8493b5fa7a3a8323d6ac84245093a79f052c1",
"df5dafe96e528c2cc7fd11e4934e298f53cec34b",
"a49530722328ae88fd765792ac0c657efbcce75d",
"aa46aa2226e3121eaefa9d0836418e0b69262d69",
"333f3f2cf3ff15736d59f92a33c45323d3987d6d",
"a6fd83542c3826132e88d3f5e304d604c0056fad",
"a8d6a5285a927ba3a3be34b06a06c70a20d4c1b3",
"e428d213ad02651287894f093413949dcb369208",
"7df915bedcc5951a1b6f828490f7dbb93212e835",
NULL
};
@ -231,6 +266,14 @@ static const char *sha1_graphics_r4g4b4[] =
"f14d9a4bd8a365b7c8f068a0dad481b6eb2b178b",
"8933450132bf949ba4bc28626968425b5ed2867d",
"9928a8f28a66c00069a124f7171b248817005763",
"e4a9dcc3e565cd3a6b7087dd1433f3898bb9cdb2",
"eca4f9b16b3bddfd0735fdd792e0ccaadfb9ba49",
"233e588cf660e2c9b552cf02065cf63fa6655864",
"0740ff74dcd259d9a644ba51ad77ff0d40348951",
"a3345acaf272f2e288626906e3056cd0ced70499",
"957a86fbe8a96dd068db65e4e624a52bcc84af46",
"13b0f240054dc57ba0e2dfde74048496304a2c7f",
"51ef267eb9c15487c9430f505e8a6c929eb2170c",
NULL
};
@ -263,6 +306,14 @@ static const char *sha1_graphics_8[] =
"4e5e7d5fd64818b2b3d3e793c88f603b699d2f0f",
"c4efce8f7ed2d380ea5dc6fe1ef8448a27827532",
"bdc0a354635b879871077c5b712570e469863c99",
"d599bf210423fe3adbb4f1de87d9360de97827d0",
"bae7c8b789e4e9b336c03c4daee3bce63fe039d9",
"cc01f17928f7780cefd423ea653b072eea723a1b",
"c005662a47f14c2f1b7c7fb3b0ef0fc390c6ea6a",
"675cde16a6ad2bcd8d7e72780b07a0ccd8d0393a",
"ea39ac62ca2f815a1d029340c6465994b6f03cb0",
"9a603513cd81acf70cf8b27b0d544e7f672e9d40",
"f4a334e69535de74ee5ed54be93a75120a66e54a",
NULL
};
@ -295,6 +346,14 @@ static const char *sha1_graphics_4[] =
"1bcc54eaf8e3c2b7c59ecccb23c240181d7ba8b8",
"4f827ca6927f15191588456f985bf29d2a3b3c24",
"e7de769c3d12ea9dd223bef4881c578823bec67e",
"6fb102d020e5554116feefc8482104f3ae2036d2",
"ae546ffd30b837afc7dfcb5c9ce4f01d15b35ddc",
"20c9eb3276c08fdce35755e349bec94b04929812",
"628d837163a25c6520f19c0602383176dbad528e",
"b5a12cff7100290ad43f5ed17a321b42de048893",
"b672afbeeafb44194a821f0def81a8892872937e",
"db0124045882b598feea192186cf7eb7a0387866",
"602d91471378fe24a2d0248bd8a92b624f099fea",
NULL
};
@ -340,6 +399,16 @@ static const char *sha1_graphics_1[] =
"4afb0649488f6e6f7d3a2b8bf438d82f2c88f4d1",
"f2fe295317e795a88edd0b2c52618b8cb0e7f2ce",
"ffc78c075d4be66806f6c59180772d5eed963dc0",
"c86eeaeed09871dee4b43722ba512d2d3af7f4d0",
"24b1a6241c81dbb950cfbe5da6798fd59eb36266",
"1007d3b531b4bc3553d4547bc88443fc1f497cf6",
"b71ca46be287598f716bb04fac0a52ad139c70db",
"6589e48498e30ab036fbfe94d73427b2b1238a69",
"4dce919117d2e41df9f5d4d0de14f97ae650046d",
"22c2e078f69d73b7a5cb3f7dcbb8fbaa007ef3ac",
"be36cda370650e6d5fb0570aeb8ced491d0c2b1c",
"4c34cb8e47f9ff4b4348aa2d40cce7cb54d65cb0",
"18f4497e43903e8df5b27da4ceebf62b15550a87",
NULL
};
@ -1001,6 +1070,83 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
compare_hash_broken_todo(bmi, bits, sha1, "hatch brushes", 1, FALSE); /* nt4 is different */
memset(bits, 0xcc, dib_size);
/* overlapping blits */
orig_brush = SelectObject(hdc, solid_brush);
Rectangle(hdc, 10, 10, 100, 100);
Rectangle(hdc, 20, 15, 30, 40);
Rectangle(hdc, 15, 15, 20, 20);
Rectangle(hdc, 15, 20, 50, 45);
BitBlt( hdc, 20, 20, 100, 100, hdc, 10, 10, SRCCOPY );
compare_hash(bmi, bits, sha1, "overlapping BitBlt SRCCOPY +x, +y");
memset(bits, 0xcc, dib_size);
Rectangle(hdc, 10, 10, 100, 100);
Rectangle(hdc, 20, 15, 30, 40);
Rectangle(hdc, 15, 15, 20, 20);
Rectangle(hdc, 15, 20, 50, 45);
BitBlt( hdc, 10, 10, 100, 100, hdc, 20, 20, SRCCOPY );
if (bmi->bmiHeader.biBitCount == 1) /* Windows gets this one wrong */
compare_hash_broken_todo(bmi, bits, sha1, "overlapping BitBlt SRCCOPY -x, -y",1, FALSE);
else
compare_hash(bmi, bits, sha1, "overlapping BitBlt SRCCOPY -x, -y");
memset(bits, 0xcc, dib_size);
Rectangle(hdc, 10, 10, 100, 100);
Rectangle(hdc, 20, 15, 30, 40);
Rectangle(hdc, 15, 15, 20, 20);
Rectangle(hdc, 15, 20, 50, 45);
BitBlt( hdc, 20, 10, 100, 100, hdc, 10, 20, SRCCOPY );
compare_hash(bmi, bits, sha1, "overlapping BitBlt SRCCOPY +x, -y");
memset(bits, 0xcc, dib_size);
Rectangle(hdc, 10, 10, 100, 100);
Rectangle(hdc, 20, 15, 30, 40);
Rectangle(hdc, 15, 15, 20, 20);
Rectangle(hdc, 15, 20, 50, 45);
BitBlt( hdc, 10, 20, 100, 100, hdc, 20, 10, SRCCOPY );
if (bmi->bmiHeader.biBitCount == 1) /* Windows gets this one wrong */
compare_hash_broken_todo(bmi, bits, sha1, "overlapping BitBlt SRCCOPY -x, +y", 1, FALSE );
else
compare_hash(bmi, bits, sha1, "overlapping BitBlt SRCCOPY -x, +y" );
memset(bits, 0xcc, dib_size);
Rectangle(hdc, 10, 10, 100, 100);
Rectangle(hdc, 20, 15, 30, 40);
Rectangle(hdc, 15, 15, 20, 20);
Rectangle(hdc, 15, 20, 50, 45);
BitBlt( hdc, 20, 20, 100, 100, hdc, 10, 10, PATPAINT );
compare_hash(bmi, bits, sha1, "overlapping BitBlt PATPAINT +x, +y");
memset(bits, 0xcc, dib_size);
Rectangle(hdc, 10, 10, 100, 100);
Rectangle(hdc, 20, 15, 30, 40);
Rectangle(hdc, 15, 15, 20, 20);
Rectangle(hdc, 15, 20, 50, 45);
BitBlt( hdc, 10, 10, 100, 100, hdc, 20, 20, PATPAINT );
compare_hash(bmi, bits, sha1, "overlapping BitBlt PATPAINT -x, -y");
memset(bits, 0xcc, dib_size);
Rectangle(hdc, 10, 10, 100, 100);
Rectangle(hdc, 20, 15, 30, 40);
Rectangle(hdc, 15, 15, 20, 20);
Rectangle(hdc, 15, 20, 50, 45);
BitBlt( hdc, 20, 10, 100, 100, hdc, 10, 20, PATPAINT );
if (bmi->bmiHeader.biBitCount >= 24) /* Windows gets this one wrong */
compare_hash_broken_todo(bmi, bits, sha1, "overlapping BitBlt PATPAINT +x, -y", 1, FALSE);
else
compare_hash(bmi, bits, sha1, "overlapping BitBlt PATPAINT +x, -y");
memset(bits, 0xcc, dib_size);
Rectangle(hdc, 10, 10, 100, 100);
Rectangle(hdc, 20, 15, 30, 40);
Rectangle(hdc, 15, 15, 20, 20);
Rectangle(hdc, 15, 20, 50, 45);
BitBlt( hdc, 10, 20, 100, 100, hdc, 20, 10, PATPAINT );
compare_hash(bmi, bits, sha1, "overlapping BitBlt PATPAINT -x, +y" );
memset(bits, 0xcc, dib_size);
SelectObject(hdc, orig_brush);
SelectObject(hdc, orig_pen);
DeleteObject(hrgn);