gdi32/tests: Add tests for DC bounds to the DIB graphics tests.
This commit is contained in:
parent
514e952827
commit
399ab6f1f2
|
@ -1124,6 +1124,75 @@ static const char *sha1_graphics_1[] =
|
|||
NULL
|
||||
};
|
||||
|
||||
static const RECT graphics_bounds[] =
|
||||
{
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 10, 3, 219, 101 },
|
||||
{ 100, 100, 301, 301 },
|
||||
{ 0, 0, 201, 201 },
|
||||
{ 10, 10, 110, 320 },
|
||||
{ 10, 99, 300, 200 },
|
||||
{ 99, 12, 201, 200 },
|
||||
{ 90, 110, 300, 200 },
|
||||
{ 90, 90, 210, 200 },
|
||||
{ 10, 99, 300, 200 },
|
||||
{ 10, 99, 300, 200 },
|
||||
{ 99, 12, 201, 200 },
|
||||
{ 99, 11, 201, 200 },
|
||||
{ 90, 110, 300, 200 },
|
||||
{ 90, 110, 300, 200 },
|
||||
{ 10, 10, 365, 405 },
|
||||
{ 10, 10, 365, 405 },
|
||||
{ 10, 10, 365, 405 },
|
||||
{ 10, 10, 365, 405 },
|
||||
{ 10, 10, 365, 405 },
|
||||
{ 10, 10, 365, 405 },
|
||||
{ 10, 10, 365, 405 },
|
||||
{ 10, 10, 365, 405 },
|
||||
{ 10, 10, 350, 251 },
|
||||
{ 10, 10, 300, 200 },
|
||||
{ 300, 10, 9, 260 },
|
||||
{ 10, 10, 435, 405 },
|
||||
{ 10, 10, 120, 120 },
|
||||
{ 10, 10, 110, 110 },
|
||||
{ 10, 10, 120, 110 },
|
||||
{ 10, 10, 110, 120 },
|
||||
{ 10, 10, 120, 120 },
|
||||
{ 10, 10, 110, 110 },
|
||||
{ 10, 10, 120, 110 },
|
||||
{ 10, 10, 110, 120 },
|
||||
{ 100, 100, 356, 356 },
|
||||
{ 100, 100, 356, 356 },
|
||||
{ 50, 50, 306, 306 },
|
||||
{ 100, 100, 356, 356 },
|
||||
{ 100, 100, 356, 356 },
|
||||
{ 100, 100, 356, 356 },
|
||||
{ 100, 100, 356, 356 },
|
||||
{ 100, 100, 356, 356 },
|
||||
{ 100, 100, 356, 356 },
|
||||
{ 100, 100, 356, 356 },
|
||||
{ 100, 100, 356, 356 },
|
||||
{ 100, 100, 356, 356 },
|
||||
{ 100, 100, 356, 356 },
|
||||
{ 100, 100, 356, 356 },
|
||||
{ 10, 10, 416, 26 },
|
||||
{ 10, 8, 60, 104 },
|
||||
{ 0, 10, 511, 306 },
|
||||
{ 0, 10, 512, 306 },
|
||||
{ 1, 1, 300, 512 },
|
||||
{ 0, 0, 500, 512 },
|
||||
{ 5, 5, 206, 206 },
|
||||
{ 45, 45, 256, 256 },
|
||||
{ 86, 86, 215, 215 },
|
||||
{ 8, 0, 392, 231 },
|
||||
{ 8, 0, 392, 231 },
|
||||
{ 0, 0, 60, 20 },
|
||||
{ 0, 0, 512, 512 },
|
||||
{ -1, -1, -1, -1 } /* the end */
|
||||
};
|
||||
|
||||
static const char **current_sha1;
|
||||
static const RECT *current_bounds;
|
||||
static const char *dst_format;
|
||||
|
||||
static inline DWORD get_stride(BITMAPINFO *bmi)
|
||||
|
@ -1170,7 +1239,49 @@ static char *hash_dib(BITMAPINFO *bmi, void *bits)
|
|||
return buf;
|
||||
}
|
||||
|
||||
static void compare_hash_broken_todo(BITMAPINFO *bmi, BYTE *bits, const char ***sha1, const char *info, int num_broken, BOOL todo)
|
||||
static void reset_bounds( HDC hdc )
|
||||
{
|
||||
current_bounds = graphics_bounds;
|
||||
SetBoundsRect( hdc, NULL, DCB_RESET | DCB_ENABLE );
|
||||
}
|
||||
|
||||
static void compare_bounds( HDC hdc, const char *info )
|
||||
{
|
||||
RECT rect;
|
||||
|
||||
GetBoundsRect( hdc, &rect, DCB_RESET );
|
||||
|
||||
if (current_bounds->left == -1 &&
|
||||
current_bounds->top == -1 &&
|
||||
current_bounds->right == -1 &&
|
||||
current_bounds->bottom == -1)
|
||||
{
|
||||
ok( 0, "missing bounds, got { %d, %d, %d, %d },\n", rect.left, rect.top, rect.right, rect.bottom );
|
||||
return;
|
||||
}
|
||||
|
||||
if (current_bounds->left == 0 && current_bounds->top == 0 &&
|
||||
current_bounds->right == 0 && current_bounds->bottom == 0)
|
||||
ok( !memcmp( current_bounds, &rect, sizeof(RECT) ),
|
||||
"%s: %s: expected bounds %d,%d,%d,%d got %d,%d,%d,%d\n", dst_format, info,
|
||||
current_bounds->left, current_bounds->top, current_bounds->right, current_bounds->bottom,
|
||||
rect.left, rect.top, rect.right, rect.bottom );
|
||||
else
|
||||
todo_wine
|
||||
ok( !memcmp( current_bounds, &rect, sizeof(RECT) ),
|
||||
"%s: %s: expected bounds %d,%d,%d,%d got %d,%d,%d,%d\n", dst_format, info,
|
||||
current_bounds->left, current_bounds->top, current_bounds->right, current_bounds->bottom,
|
||||
rect.left, rect.top, rect.right, rect.bottom );
|
||||
current_bounds++;
|
||||
}
|
||||
|
||||
static void skip_compare( int count )
|
||||
{
|
||||
current_sha1 += count;
|
||||
current_bounds++;
|
||||
}
|
||||
|
||||
static void compare_hash_broken_todo(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char *info, int num_broken, BOOL todo)
|
||||
{
|
||||
char *hash = hash_dib(bmi, bits);
|
||||
BOOL ok_cond;
|
||||
|
@ -1187,33 +1298,35 @@ static void compare_hash_broken_todo(BITMAPINFO *bmi, BYTE *bits, const char ***
|
|||
|
||||
for(i = 0; i <= num_broken; i++)
|
||||
{
|
||||
if((*sha1)[i] == NULL)
|
||||
if(current_sha1[i] == NULL)
|
||||
{
|
||||
ok((*sha1)[i] != NULL, "missing hash, got \"%s\",\n", hash);
|
||||
ok(current_sha1[i] != NULL, "missing hash, got \"%s\",\n", hash);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
ok_cond = !strcmp(hash, **sha1);
|
||||
ok_cond = !strcmp(hash, *current_sha1);
|
||||
|
||||
for(i = 1; i <= num_broken; i++)
|
||||
ok_cond = ok_cond || broken( !strcmp(hash, (*sha1)[i]) );
|
||||
ok_cond = ok_cond || broken( !strcmp(hash, current_sha1[i]) );
|
||||
|
||||
if(todo)
|
||||
todo_wine ok( ok_cond, "%s: %s: expected hash %s got %s\n",
|
||||
dst_format, info, **sha1, hash );
|
||||
dst_format, info, *current_sha1, hash );
|
||||
else
|
||||
ok( ok_cond, "%s: %s: expected hash %s got %s\n",
|
||||
dst_format, info, **sha1, hash );
|
||||
dst_format, info, *current_sha1, hash );
|
||||
|
||||
*sha1 += num_broken + 1;
|
||||
current_sha1 += num_broken + 1;
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, hash);
|
||||
|
||||
compare_bounds( hdc, info );
|
||||
}
|
||||
|
||||
static void compare_hash(BITMAPINFO *bmi, BYTE *bits, const char ***sha1, const char *info)
|
||||
static void compare_hash(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char *info)
|
||||
{
|
||||
compare_hash_broken_todo(bmi, bits, sha1, info, 0, FALSE);
|
||||
compare_hash_broken_todo(hdc, bmi, bits, info, 0, FALSE);
|
||||
}
|
||||
|
||||
static const RECT bias_check[] =
|
||||
|
@ -1361,7 +1474,7 @@ static inline void solid_patblt( HDC hdc, int x, int y, int width, int height, C
|
|||
DeleteObject( SelectObject( hdc, brush ) );
|
||||
}
|
||||
|
||||
static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sha1)
|
||||
static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits)
|
||||
{
|
||||
char pal_buffer[sizeof(LOGPALETTE) + 255 * sizeof(PALETTEENTRY)];
|
||||
LOGPALETTE *pal = (LOGPALETTE *)pal_buffer;
|
||||
|
@ -1388,8 +1501,10 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
blend.BlendOp = AC_SRC_OVER;
|
||||
blend.BlendFlags = 0;
|
||||
|
||||
reset_bounds( hdc );
|
||||
|
||||
memset(bits, 0xcc, get_dib_size(bmi));
|
||||
compare_hash(bmi, bits, sha1, "empty");
|
||||
compare_hash(hdc, bmi, bits, "empty");
|
||||
|
||||
src_dc = CreateCompatibleDC( 0 );
|
||||
solid_pen = CreatePen(PS_SOLID, 1, RGB(0, 0, 0xff));
|
||||
|
@ -1409,7 +1524,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
MoveToEx(hdc, 170 + i * 3, 100, NULL);
|
||||
LineTo(hdc, 170 + i * 3, 10); /* b -> t */
|
||||
}
|
||||
compare_hash(bmi, bits, sha1, "h and v solid lines");
|
||||
compare_hash(hdc, bmi, bits, "h and v solid lines");
|
||||
|
||||
/* diagonal lines */
|
||||
SetROP2(hdc, R2_COPYPEN);
|
||||
|
@ -1421,14 +1536,14 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
MoveToEx(hdc, 200.5 + 10 * c, 200.5 + 10 * s, NULL);
|
||||
LineTo(hdc, 200.5 + 100 * c, 200.5 + 100 * s);
|
||||
}
|
||||
compare_hash(bmi, bits, sha1, "diagonal solid lines");
|
||||
compare_hash(hdc, bmi, bits, "diagonal solid lines");
|
||||
|
||||
for(i = 0; i < sizeof(bias_check) / sizeof(bias_check[0]); i++)
|
||||
{
|
||||
MoveToEx(hdc, bias_check[i].left, bias_check[i].top, NULL);
|
||||
LineTo(hdc, bias_check[i].right, bias_check[i].bottom);
|
||||
}
|
||||
compare_hash(bmi, bits, sha1, "more diagonal solid lines");
|
||||
compare_hash(hdc, bmi, bits, "more diagonal solid lines");
|
||||
|
||||
/* solid brush PatBlt */
|
||||
solid_brush = CreateSolidBrush(RGB(0x33, 0xaa, 0xff));
|
||||
|
@ -1447,7 +1562,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
}
|
||||
|
||||
}
|
||||
compare_hash(bmi, bits, sha1, "solid patblt");
|
||||
compare_hash(hdc, bmi, bits, "solid patblt");
|
||||
|
||||
/* clipped lines */
|
||||
hrgn = CreateRectRgn(10, 10, 200, 20);
|
||||
|
@ -1463,21 +1578,21 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
MoveToEx(hdc, hline_clips[i].left, hline_clips[i].top, NULL);
|
||||
LineTo(hdc, hline_clips[i].right, hline_clips[i].bottom);
|
||||
}
|
||||
compare_hash(bmi, bits, sha1, "clipped solid hlines");
|
||||
compare_hash(hdc, bmi, bits, "clipped solid hlines");
|
||||
|
||||
for(i = 0; i < sizeof(vline_clips)/sizeof(vline_clips[0]); i++)
|
||||
{
|
||||
MoveToEx(hdc, vline_clips[i].left, vline_clips[i].top, NULL);
|
||||
LineTo(hdc, vline_clips[i].right, vline_clips[i].bottom);
|
||||
}
|
||||
compare_hash(bmi, bits, sha1, "clipped solid vlines");
|
||||
compare_hash(hdc, bmi, bits, "clipped solid vlines");
|
||||
|
||||
for(i = 0; i < sizeof(line_clips)/sizeof(line_clips[0]); i++)
|
||||
{
|
||||
MoveToEx(hdc, line_clips[i].left, line_clips[i].top, NULL);
|
||||
LineTo(hdc, line_clips[i].right, line_clips[i].bottom);
|
||||
}
|
||||
compare_hash(bmi, bits, sha1, "clipped solid diagonal lines");
|
||||
compare_hash(hdc, bmi, bits, "clipped solid diagonal lines");
|
||||
|
||||
/* clipped PatBlt */
|
||||
for(i = 0; i < sizeof(patblt_clips) / sizeof(patblt_clips[0]); i++)
|
||||
|
@ -1486,7 +1601,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
patblt_clips[i].right - patblt_clips[i].left,
|
||||
patblt_clips[i].bottom - patblt_clips[i].top, PATCOPY);
|
||||
}
|
||||
compare_hash(bmi, bits, sha1, "clipped patblt");
|
||||
compare_hash(hdc, bmi, bits, "clipped patblt");
|
||||
|
||||
/* clipped dashed lines */
|
||||
dashed_pen = CreatePen(PS_DASH, 1, RGB(0xff, 0, 0));
|
||||
|
@ -1499,35 +1614,35 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
MoveToEx(hdc, hline_clips[i].left, hline_clips[i].top, NULL);
|
||||
LineTo(hdc, hline_clips[i].right, hline_clips[i].bottom);
|
||||
}
|
||||
compare_hash(bmi, bits, sha1, "clipped dashed hlines");
|
||||
compare_hash(hdc, bmi, bits, "clipped dashed hlines");
|
||||
|
||||
for(i = 0; i < sizeof(hline_clips)/sizeof(hline_clips[0]); i++)
|
||||
{
|
||||
MoveToEx(hdc, hline_clips[i].right - 1, hline_clips[i].bottom, NULL);
|
||||
LineTo(hdc, hline_clips[i].left - 1, hline_clips[i].top);
|
||||
}
|
||||
compare_hash(bmi, bits, sha1, "clipped dashed hlines r -> l");
|
||||
compare_hash(hdc, bmi, bits, "clipped dashed hlines r -> l");
|
||||
|
||||
for(i = 0; i < sizeof(vline_clips)/sizeof(vline_clips[0]); i++)
|
||||
{
|
||||
MoveToEx(hdc, vline_clips[i].left, vline_clips[i].top, NULL);
|
||||
LineTo(hdc, vline_clips[i].right, vline_clips[i].bottom);
|
||||
}
|
||||
compare_hash(bmi, bits, sha1, "clipped dashed vlines");
|
||||
compare_hash(hdc, bmi, bits, "clipped dashed vlines");
|
||||
|
||||
for(i = 0; i < sizeof(vline_clips)/sizeof(vline_clips[0]); i++)
|
||||
{
|
||||
MoveToEx(hdc, vline_clips[i].right, vline_clips[i].bottom - 1, NULL);
|
||||
LineTo(hdc, vline_clips[i].left, vline_clips[i].top - 1);
|
||||
}
|
||||
compare_hash(bmi, bits, sha1, "clipped dashed vlines b -> t");
|
||||
compare_hash(hdc, bmi, bits, "clipped dashed vlines b -> t");
|
||||
|
||||
for(i = 0; i < sizeof(line_clips)/sizeof(line_clips[0]); i++)
|
||||
{
|
||||
MoveToEx(hdc, line_clips[i].left, line_clips[i].top, NULL);
|
||||
LineTo(hdc, line_clips[i].right, line_clips[i].bottom);
|
||||
}
|
||||
compare_hash(bmi, bits, sha1, "clipped dashed diagonal lines");
|
||||
compare_hash(hdc, bmi, bits, "clipped dashed diagonal lines");
|
||||
|
||||
SetBkMode(hdc, OPAQUE);
|
||||
|
||||
|
@ -1536,7 +1651,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
MoveToEx(hdc, line_clips[i].left, line_clips[i].top, NULL);
|
||||
LineTo(hdc, line_clips[i].right, line_clips[i].bottom);
|
||||
}
|
||||
compare_hash(bmi, bits, sha1, "clipped opaque dashed diagonal lines");
|
||||
compare_hash(hdc, bmi, bits, "clipped opaque dashed diagonal lines");
|
||||
|
||||
ExtSelectClipRgn(hdc, NULL, RGN_COPY);
|
||||
|
||||
|
@ -1567,9 +1682,9 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
}
|
||||
}
|
||||
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);
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "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);
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "top-down 8888 dib brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp);
|
||||
|
||||
SelectObject(hdc, orig_brush);
|
||||
DeleteObject(dib_brush);
|
||||
|
@ -1597,9 +1712,9 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
}
|
||||
}
|
||||
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);
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "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);
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "bottom-up 8888 dib brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp);
|
||||
|
||||
SelectObject(hdc, orig_brush);
|
||||
DeleteObject(dib_brush);
|
||||
|
@ -1627,9 +1742,9 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
}
|
||||
}
|
||||
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);
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "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);
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "top-down 24 bpp brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp);
|
||||
|
||||
SelectObject(hdc, orig_brush);
|
||||
DeleteObject(dib_brush);
|
||||
|
@ -1657,9 +1772,9 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
}
|
||||
}
|
||||
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);
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "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);
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "top-down 555 dib brush patblt", dib_is_1bpp ? 1 : 0, dib_is_1bpp);
|
||||
|
||||
SelectObject(hdc, orig_brush);
|
||||
DeleteObject(dib_brush);
|
||||
|
@ -1696,7 +1811,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
y += 25;
|
||||
}
|
||||
}
|
||||
compare_hash_broken_todo(bmi, bits, sha1, "top-down 8 bpp dib brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp);
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "top-down 8 bpp dib brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp);
|
||||
|
||||
SelectObject(hdc, orig_brush);
|
||||
DeleteObject(dib_brush);
|
||||
|
@ -1718,7 +1833,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
y += 25;
|
||||
}
|
||||
}
|
||||
compare_hash_broken_todo(bmi, bits, sha1, "top-down 4 bpp dib brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp);
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "top-down 4 bpp dib brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp);
|
||||
|
||||
SelectObject(hdc, orig_brush);
|
||||
DeleteObject(dib_brush);
|
||||
|
@ -1744,7 +1859,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
}
|
||||
}
|
||||
|
||||
compare_hash_broken_todo(bmi, bits, sha1, "top-down 1 bpp dib brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp);
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "top-down 1 bpp dib brush patblt", dib_is_1bpp ? 2 : 0, dib_is_1bpp);
|
||||
|
||||
SelectObject(hdc, orig_brush);
|
||||
DeleteObject(dib_brush);
|
||||
|
@ -1768,7 +1883,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
}
|
||||
}
|
||||
|
||||
compare_hash_broken_todo(bmi, bits, sha1, "1 bpp ddb brush patblt", dib_is_1bpp ? 3 : 0, dib_is_1bpp);
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "1 bpp ddb brush patblt", dib_is_1bpp ? 3 : 0, dib_is_1bpp);
|
||||
|
||||
DeleteObject(bmp);
|
||||
SelectObject(hdc, orig_brush);
|
||||
|
@ -1792,20 +1907,20 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
Rectangle(hdc, rectangles[i].left, rectangles[i].top + 150, rectangles[i].right, rectangles[i].bottom + 150);
|
||||
}
|
||||
|
||||
compare_hash(bmi, bits, sha1, "rectangles");
|
||||
compare_hash(hdc, bmi, bits, "rectangles");
|
||||
SelectObject(hdc, solid_pen);
|
||||
|
||||
/* PaintRgn */
|
||||
|
||||
PaintRgn(hdc, hrgn);
|
||||
compare_hash(bmi, bits, sha1, "PaintRgn");
|
||||
compare_hash(hdc, bmi, bits, "PaintRgn");
|
||||
|
||||
/* RTL rectangles */
|
||||
|
||||
if( !pSetLayout )
|
||||
{
|
||||
win_skip("Don't have SetLayout\n");
|
||||
(*sha1)++;
|
||||
skip_compare(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1813,7 +1928,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
PaintRgn(hdc, hrgn);
|
||||
PatBlt(hdc, 10, 250, 10, 10, PATCOPY);
|
||||
Rectangle(hdc, 100, 250, 110, 260);
|
||||
compare_hash(bmi, bits, sha1, "rtl");
|
||||
compare_hash(hdc, bmi, bits, "rtl");
|
||||
|
||||
pSetLayout(hdc, LAYOUT_LTR);
|
||||
}
|
||||
|
@ -1836,7 +1951,7 @@ 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 */
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "hatch brushes", 1, FALSE); /* nt4 is different */
|
||||
|
||||
/* overlapping blits */
|
||||
|
||||
|
@ -1847,7 +1962,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
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");
|
||||
compare_hash(hdc, bmi, bits, "overlapping BitBlt SRCCOPY +x, +y");
|
||||
|
||||
Rectangle(hdc, 10, 10, 100, 100);
|
||||
Rectangle(hdc, 20, 15, 30, 40);
|
||||
|
@ -1855,16 +1970,16 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
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);
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "overlapping BitBlt SRCCOPY -x, -y",1, FALSE);
|
||||
else
|
||||
compare_hash(bmi, bits, sha1, "overlapping BitBlt SRCCOPY -x, -y");
|
||||
compare_hash(hdc, bmi, bits, "overlapping BitBlt SRCCOPY -x, -y");
|
||||
|
||||
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");
|
||||
compare_hash(hdc, bmi, bits, "overlapping BitBlt SRCCOPY +x, -y");
|
||||
|
||||
Rectangle(hdc, 10, 10, 100, 100);
|
||||
Rectangle(hdc, 20, 15, 30, 40);
|
||||
|
@ -1872,23 +1987,23 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
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 );
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "overlapping BitBlt SRCCOPY -x, +y", 1, FALSE );
|
||||
else
|
||||
compare_hash(bmi, bits, sha1, "overlapping BitBlt SRCCOPY -x, +y" );
|
||||
compare_hash(hdc, bmi, bits, "overlapping BitBlt SRCCOPY -x, +y" );
|
||||
|
||||
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");
|
||||
compare_hash(hdc, bmi, bits, "overlapping BitBlt PATPAINT +x, +y");
|
||||
|
||||
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");
|
||||
compare_hash(hdc, bmi, bits, "overlapping BitBlt PATPAINT -x, -y");
|
||||
|
||||
Rectangle(hdc, 10, 10, 100, 100);
|
||||
Rectangle(hdc, 20, 15, 30, 40);
|
||||
|
@ -1896,16 +2011,16 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
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);
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "overlapping BitBlt PATPAINT +x, -y", 1, FALSE);
|
||||
else
|
||||
compare_hash(bmi, bits, sha1, "overlapping BitBlt PATPAINT +x, -y");
|
||||
compare_hash(hdc, bmi, bits, "overlapping BitBlt PATPAINT +x, -y");
|
||||
|
||||
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" );
|
||||
compare_hash(hdc, bmi, bits, "overlapping BitBlt PATPAINT -x, +y" );
|
||||
|
||||
/* blitting with 32-bpp BI_RGB source */
|
||||
|
||||
|
@ -1930,22 +2045,22 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
|
||||
BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY );
|
||||
if (bmi->bmiHeader.biBitCount == 8) /* broken on NT4 */
|
||||
compare_hash_broken_todo(bmi, bits, sha1, "BitBlt src 32-bpp SRCCOPY", 1, FALSE );
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "BitBlt src 32-bpp SRCCOPY", 1, FALSE );
|
||||
else
|
||||
compare_hash(bmi, bits, sha1, "BitBlt src 32-bpp SRCCOPY" );
|
||||
compare_hash(hdc, bmi, bits, "BitBlt src 32-bpp SRCCOPY" );
|
||||
|
||||
blend.SourceConstantAlpha = 0xd0;
|
||||
blend.AlphaFormat = 0;
|
||||
if (pGdiAlphaBlend) pGdiAlphaBlend( hdc, 100, 100, 256, 256, src_dc, 0, 0, 256, 256, blend );
|
||||
if (bmi->bmiHeader.biBitCount == 16 && bmi->bmiHeader.biCompression == BI_RGB) /* 555 broken on w2k */
|
||||
{
|
||||
if (!pGdiAlphaBlend) (*sha1) += 2;
|
||||
else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 32-bpp no alpha", 1, FALSE );
|
||||
if (!pGdiAlphaBlend) skip_compare(2);
|
||||
else compare_hash_broken_todo(hdc, bmi, bits, "AlphaBlend src 32-bpp no alpha", 1, FALSE );
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!pGdiAlphaBlend) (*sha1)++;
|
||||
else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 32-bpp no alpha", 0, dib_is_1bpp );
|
||||
if (!pGdiAlphaBlend) skip_compare(1);
|
||||
else compare_hash_broken_todo(hdc, bmi, bits, "AlphaBlend src 32-bpp no alpha", 0, dib_is_1bpp );
|
||||
}
|
||||
|
||||
blend.SourceConstantAlpha = 0xb0;
|
||||
|
@ -1953,13 +2068,13 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
if (pGdiAlphaBlend) pGdiAlphaBlend( hdc, 50, 50, 256, 256, src_dc, 0, 0, 256, 256, blend );
|
||||
if (bmi->bmiHeader.biBitCount == 16 && bmi->bmiHeader.biCompression == BI_RGB) /* 555 broken on w2k */
|
||||
{
|
||||
if (!pGdiAlphaBlend) (*sha1) += 2;
|
||||
else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 32-bpp alpha", 1, FALSE );
|
||||
if (!pGdiAlphaBlend) skip_compare(2);
|
||||
else compare_hash_broken_todo(hdc, bmi, bits, "AlphaBlend src 32-bpp alpha", 1, FALSE );
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!pGdiAlphaBlend) (*sha1)++;
|
||||
else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 32-bpp alpha", 0, dib_is_1bpp );
|
||||
if (!pGdiAlphaBlend) skip_compare(1);
|
||||
else compare_hash_broken_todo(hdc, bmi, bits, "AlphaBlend src 32-bpp alpha", 0, dib_is_1bpp );
|
||||
}
|
||||
|
||||
/* blitting with 32-bpp r10g10b10 source */
|
||||
|
@ -1982,9 +2097,9 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
|
||||
BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY );
|
||||
if (bmi->bmiHeader.biBitCount == 8) /* broken on NT4 */
|
||||
compare_hash_broken_todo(bmi, bits, sha1, "BitBlt src 32-bpp r10g10b10 SRCCOPY", 1, FALSE );
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "BitBlt src 32-bpp r10g10b10 SRCCOPY", 1, FALSE );
|
||||
else
|
||||
compare_hash(bmi, bits, sha1, "BitBlt src 32-bpp r10g10b10 SRCCOPY" );
|
||||
compare_hash(hdc, bmi, bits, "BitBlt src 32-bpp r10g10b10 SRCCOPY" );
|
||||
|
||||
/* blitting with 32-bpp b6g6r6 source */
|
||||
|
||||
|
@ -2006,9 +2121,9 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
|
||||
BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY );
|
||||
if (bmi->bmiHeader.biBitCount == 8) /* broken on NT4 */
|
||||
compare_hash_broken_todo(bmi, bits, sha1, "BitBlt src 32-bpp b6g6r6 SRCCOPY", 1, FALSE );
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "BitBlt src 32-bpp b6g6r6 SRCCOPY", 1, FALSE );
|
||||
else
|
||||
compare_hash(bmi, bits, sha1, "BitBlt src 32-bpp b6g6r6 SRCCOPY" );
|
||||
compare_hash(hdc, bmi, bits, "BitBlt src 32-bpp b6g6r6 SRCCOPY" );
|
||||
|
||||
/* blitting with 24-bpp source */
|
||||
|
||||
|
@ -2026,22 +2141,22 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
|
||||
BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY );
|
||||
if (bmi->bmiHeader.biBitCount == 8) /* broken on NT4 */
|
||||
compare_hash_broken_todo(bmi, bits, sha1, "BitBlt src 24-bpp SRCCOPY", 1, FALSE );
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "BitBlt src 24-bpp SRCCOPY", 1, FALSE );
|
||||
else
|
||||
compare_hash(bmi, bits, sha1, "BitBlt src 24-bpp SRCCOPY" );
|
||||
compare_hash(hdc, bmi, bits, "BitBlt src 24-bpp SRCCOPY" );
|
||||
|
||||
blend.SourceConstantAlpha = 0xe0;
|
||||
blend.AlphaFormat = 0;
|
||||
if (pGdiAlphaBlend) pGdiAlphaBlend( hdc, 100, 100, 256, 256, src_dc, 0, 0, 256, 256, blend );
|
||||
if (bmi->bmiHeader.biBitCount == 16 && bmi->bmiHeader.biCompression == BI_RGB) /* 555 broken on w2k */
|
||||
{
|
||||
if (!pGdiAlphaBlend) (*sha1) += 2;
|
||||
else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 24-bpp", 1, FALSE );
|
||||
if (!pGdiAlphaBlend) skip_compare(2);
|
||||
else compare_hash_broken_todo(hdc, bmi, bits, "AlphaBlend src 24-bpp", 1, FALSE );
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!pGdiAlphaBlend) (*sha1)++;
|
||||
else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 24-bpp", 0, dib_is_1bpp );
|
||||
if (!pGdiAlphaBlend) skip_compare(1);
|
||||
else compare_hash_broken_todo(hdc, bmi, bits, "AlphaBlend src 24-bpp", 0, dib_is_1bpp );
|
||||
}
|
||||
|
||||
/* blitting with 16-bpp BI_RGB source */
|
||||
|
@ -2056,9 +2171,9 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
|
||||
BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, 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 );
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "BitBlt src 16-bpp SRCCOPY", 1, FALSE );
|
||||
else
|
||||
compare_hash(bmi, bits, sha1, "BitBlt src 16-bpp SRCCOPY" );
|
||||
compare_hash(hdc, bmi, bits, "BitBlt src 16-bpp SRCCOPY" );
|
||||
|
||||
/* blitting with 16-bpp b4g4r4 source */
|
||||
|
||||
|
@ -2075,9 +2190,9 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
|
||||
BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, 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 );
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "BitBlt src 16-bpp b4g4r4 SRCCOPY", 1, FALSE );
|
||||
else
|
||||
compare_hash(bmi, bits, sha1, "BitBlt src 16-bpp b4g4r4 SRCCOPY" );
|
||||
compare_hash(hdc, bmi, bits, "BitBlt src 16-bpp b4g4r4 SRCCOPY" );
|
||||
|
||||
/* blitting with 8-bpp source */
|
||||
|
||||
|
@ -2092,20 +2207,20 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
src_bits[y * 256 + x] = 3 * x + 5 * y;
|
||||
|
||||
BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY );
|
||||
compare_hash(bmi, bits, sha1, "BitBlt src 8-bpp SRCCOPY" );
|
||||
compare_hash(hdc, bmi, bits, "BitBlt src 8-bpp SRCCOPY" );
|
||||
|
||||
blend.SourceConstantAlpha = 0xd0;
|
||||
blend.AlphaFormat = 0;
|
||||
if (pGdiAlphaBlend) pGdiAlphaBlend( hdc, 100, 100, 256, 256, src_dc, 0, 0, 256, 256, blend );
|
||||
if (bmi->bmiHeader.biBitCount == 16 && bmi->bmiHeader.biCompression == BI_RGB) /* 555 broken on w2k */
|
||||
{
|
||||
if (!pGdiAlphaBlend) (*sha1) += 2;
|
||||
else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 8-bpp", 1, FALSE );
|
||||
if (!pGdiAlphaBlend) skip_compare(2);
|
||||
else compare_hash_broken_todo(hdc, bmi, bits, "AlphaBlend src 8-bpp", 1, FALSE );
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!pGdiAlphaBlend) (*sha1)++;
|
||||
else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 8-bpp", 0, dib_is_1bpp );
|
||||
if (!pGdiAlphaBlend) skip_compare(1);
|
||||
else compare_hash_broken_todo(hdc, bmi, bits, "AlphaBlend src 8-bpp", 0, dib_is_1bpp );
|
||||
}
|
||||
|
||||
/* blitting with 4-bpp source */
|
||||
|
@ -2120,7 +2235,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
src_bits[(y * 256 + x) / 2] = 7 * x + 3 * y;
|
||||
|
||||
BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY );
|
||||
compare_hash(bmi, bits, sha1, "BitBlt src 4-bpp SRCCOPY" );
|
||||
compare_hash(hdc, bmi, bits, "BitBlt src 4-bpp SRCCOPY" );
|
||||
|
||||
/* blitting with 1-bpp source */
|
||||
|
||||
|
@ -2134,20 +2249,20 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
src_bits[(y * 256 + x) / 8] = 7 * x + 3 * y;
|
||||
|
||||
BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY );
|
||||
compare_hash(bmi, bits, sha1, "BitBlt src 1-bpp SRCCOPY" );
|
||||
compare_hash(hdc, bmi, bits, "BitBlt src 1-bpp SRCCOPY" );
|
||||
|
||||
blend.SourceConstantAlpha = 0x90;
|
||||
blend.AlphaFormat = 0;
|
||||
if (pGdiAlphaBlend) pGdiAlphaBlend( hdc, 100, 100, 256, 256, src_dc, 0, 0, 256, 256, blend );
|
||||
if (bmi->bmiHeader.biBitCount == 16 && bmi->bmiHeader.biCompression == BI_RGB) /* 555 broken on w2k */
|
||||
{
|
||||
if (!pGdiAlphaBlend) (*sha1) += 2;
|
||||
else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 1-bpp", 1, FALSE );
|
||||
if (!pGdiAlphaBlend) skip_compare(2);
|
||||
else compare_hash_broken_todo(hdc, bmi, bits, "AlphaBlend src 1-bpp", 1, FALSE );
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!pGdiAlphaBlend) (*sha1)++;
|
||||
else compare_hash(bmi, bits, sha1, "AlphaBlend src 1-bpp" );
|
||||
if (!pGdiAlphaBlend) skip_compare(1);
|
||||
else compare_hash(hdc, bmi, bits, "AlphaBlend src 1-bpp" );
|
||||
}
|
||||
|
||||
DeleteDC( src_dc );
|
||||
|
@ -2176,7 +2291,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
StretchDIBits( hdc, 200, 10, 7, 7, 0, 1, 7, 7, rle8_data, src_bi, DIB_RGB_COLORS, SRCCOPY );
|
||||
StretchDIBits( hdc, 300, 10, 7, 7, 1, 0, 7, 7, rle8_data, src_bi, DIB_RGB_COLORS, SRCCOPY );
|
||||
StretchDIBits( hdc, 400, 10, 16, 16, 0, 0, 8, 8, rle8_data, src_bi, DIB_RGB_COLORS, SRCCOPY );
|
||||
compare_hash_broken_todo( bmi, bits, sha1, "rle stretchdibits", 0, dib_is_1bpp );
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "rle stretchdibits", 0, dib_is_1bpp );
|
||||
|
||||
/* 32 bpp StretchDIBits */
|
||||
|
||||
|
@ -2216,7 +2331,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
ret = StretchDIBits( hdc, 60, 100, -2, -2, 2, 3, -2, -2, four_by_four_data, src_bi, DIB_RGB_COLORS, SRCAND );
|
||||
ok(ret == -4, "got %d\n", ret);
|
||||
|
||||
compare_hash_broken_todo( bmi, bits, sha1, "stretchdibits", dib_is_8bpp_gray ? 1 : 0, dib_is_8bpp_gray );
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "stretchdibits", dib_is_8bpp_gray ? 1 : 0, dib_is_8bpp_gray );
|
||||
|
||||
/* Solid colors */
|
||||
for (i = 0; i < 256; i++)
|
||||
|
@ -2242,7 +2357,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
solid_patblt( hdc, 8, 50, 1, 1, RGB( 0xff, 0, 0 ) );
|
||||
solid_patblt( hdc, 10, 50, 1, 1, PALETTERGB( 0xff, 0, 0 ) );
|
||||
|
||||
compare_hash(bmi, bits, sha1, "Colors");
|
||||
compare_hash(hdc, bmi, bits, "Colors");
|
||||
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
|
@ -2275,7 +2390,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
}
|
||||
}
|
||||
|
||||
compare_hash(bmi, bits, sha1, "SetPixel");
|
||||
compare_hash(hdc, bmi, bits, "SetPixel");
|
||||
|
||||
/* gradients */
|
||||
|
||||
|
@ -2331,22 +2446,23 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
pGdiGradientFill( hdc, vrect, 4, rect, 2, GRADIENT_FILL_RECT_V );
|
||||
|
||||
if (bmi->bmiHeader.biBitCount <= 8) /* Wine's 8-bit dithering isn't identical to Windows */
|
||||
compare_hash_broken_todo( bmi, bits, sha1, "GdiGradientFill", 0, 1 );
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "GdiGradientFill", 0, 1 );
|
||||
else
|
||||
compare_hash(bmi, bits, sha1, "GdiGradientFill" );
|
||||
compare_hash(hdc, bmi, bits, "GdiGradientFill" );
|
||||
|
||||
pGdiGradientFill( hdc, vtri, 7*3, tri, 7, GRADIENT_FILL_TRIANGLE );
|
||||
for (i = 0; i < 7*3; i++) vtri[i].y += 100;
|
||||
pGdiGradientFill( hdc, vtri, 7*3, tri + 7, 7, GRADIENT_FILL_TRIANGLE );
|
||||
if (bmi->bmiHeader.biBitCount <= 8) /* Wine's 8-bit dithering isn't identical to Windows */
|
||||
compare_hash_broken_todo( bmi, bits, sha1, "GdiGradientFill", 0, 1 );
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "GdiGradientFill", 0, 1 );
|
||||
else
|
||||
compare_hash(bmi, bits, sha1, "GdiGradientFill" );
|
||||
compare_hash(hdc, bmi, bits, "GdiGradientFill" );
|
||||
}
|
||||
else
|
||||
{
|
||||
win_skip( "GdiGradientFill not supported\n" );
|
||||
*sha1 += 2;
|
||||
skip_compare(1);
|
||||
skip_compare(1);
|
||||
}
|
||||
|
||||
/* wide pen */
|
||||
|
@ -2360,7 +2476,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
LineTo( hdc, wide_lines[i].right, wide_lines[i].bottom );
|
||||
}
|
||||
|
||||
compare_hash(bmi, bits, sha1, "wide pen" );
|
||||
compare_hash(hdc, bmi, bits, "wide pen" );
|
||||
|
||||
SelectObject( hdc, orig_pen );
|
||||
DeleteObject( wide_pen );
|
||||
|
@ -2374,7 +2490,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
SelectObject( hdc, wide_pen );
|
||||
|
||||
Polyline( hdc, poly_lines, sizeof(poly_lines) / sizeof(poly_lines[0]) );
|
||||
compare_hash(bmi, bits, sha1, "wide pen - flat caps, mitred" );
|
||||
compare_hash(hdc, bmi, bits, "wide pen - flat caps, mitred" );
|
||||
|
||||
SelectObject( hdc, orig_pen );
|
||||
DeleteObject( wide_pen );
|
||||
|
@ -2384,7 +2500,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
SelectObject( hdc, wide_pen );
|
||||
|
||||
Polyline( hdc, poly_lines, sizeof(poly_lines) / sizeof(poly_lines[0]) );
|
||||
compare_hash(bmi, bits, sha1, "wide pen - square caps, bevelled" );
|
||||
compare_hash(hdc, bmi, bits, "wide pen - square caps, bevelled" );
|
||||
|
||||
SelectObject( hdc, orig_pen );
|
||||
DeleteObject( wide_pen );
|
||||
|
@ -2416,7 +2532,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
LineTo( hdc, 20 * i, 200 + i );
|
||||
}
|
||||
/* NT4 broken for all cases, W2K for 1 bpp only */
|
||||
compare_hash_broken_todo( bmi, bits, sha1, "wide brushed pen", 1 + dib_is_1bpp, dib_is_1bpp );
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "wide brushed pen", 1 + dib_is_1bpp, dib_is_1bpp );
|
||||
|
||||
for (i = 1; i < 20; i++)
|
||||
{
|
||||
|
@ -2430,7 +2546,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
LineTo( hdc, 20 * i, 200 + i );
|
||||
}
|
||||
/* NT4 broken for all cases, W2K for 1 bpp only */
|
||||
compare_hash_broken_todo( bmi, bits, sha1, "dashed wide brushed pen", 1 + dib_is_1bpp, dib_is_1bpp );
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "dashed wide brushed pen", 1 + dib_is_1bpp, dib_is_1bpp );
|
||||
|
||||
DeleteObject(bmp);
|
||||
SetTextColor(hdc, old_text);
|
||||
|
@ -2487,7 +2603,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
DeleteObject( hpal );
|
||||
|
||||
/* NT4 broken for all cases, W2K for 1 bpp only */
|
||||
compare_hash_broken_todo(bmi, bits, sha1, "PALETTEINDEX", 1 + dib_is_1bpp, dib_is_1bpp );
|
||||
compare_hash_broken_todo(hdc, bmi, bits, "PALETTEINDEX", 1 + dib_is_1bpp, dib_is_1bpp );
|
||||
|
||||
/* ExtFloodFill */
|
||||
|
||||
|
@ -2507,7 +2623,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
|
|||
|
||||
ret = ExtFloodFill( hdc, 100, 100, RGB( 0, 0xff, 0 ), FLOODFILLSURFACE );
|
||||
ok (!ret == !!dib_is_1bpp, "got ret %d\n", ret);
|
||||
compare_hash(bmi, bits, sha1, "flood fill" );
|
||||
compare_hash(hdc, bmi, bits, "flood fill" );
|
||||
|
||||
ExtSelectClipRgn( hdc, NULL, RGN_COPY );
|
||||
|
||||
|
@ -2710,7 +2826,6 @@ static void test_simple_graphics(void)
|
|||
HDC mem_dc;
|
||||
BYTE *bits;
|
||||
HBITMAP dib, orig_bm;
|
||||
const char **sha1;
|
||||
DIBSECTION ds;
|
||||
int i;
|
||||
|
||||
|
@ -2739,8 +2854,8 @@ static void test_simple_graphics(void)
|
|||
orig_bm = SelectObject(mem_dc, dib);
|
||||
|
||||
dst_format = "8888";
|
||||
sha1 = sha1_graphics_a8r8g8b8;
|
||||
draw_graphics(mem_dc, bmi, bits, &sha1);
|
||||
current_sha1 = sha1_graphics_a8r8g8b8;
|
||||
draw_graphics(mem_dc, bmi, bits);
|
||||
draw_text(mem_dc, bmi, bits);
|
||||
|
||||
SelectObject(mem_dc, orig_bm);
|
||||
|
@ -2765,8 +2880,8 @@ static void test_simple_graphics(void)
|
|||
orig_bm = SelectObject(mem_dc, dib);
|
||||
|
||||
dst_format = "8888 - bitfields";
|
||||
sha1 = sha1_graphics_a8r8g8b8_bitfields;
|
||||
draw_graphics(mem_dc, bmi, bits, &sha1);
|
||||
current_sha1 = sha1_graphics_a8r8g8b8_bitfields;
|
||||
draw_graphics(mem_dc, bmi, bits);
|
||||
draw_text(mem_dc, bmi, bits);
|
||||
|
||||
SelectObject(mem_dc, orig_bm);
|
||||
|
@ -2791,8 +2906,8 @@ static void test_simple_graphics(void)
|
|||
orig_bm = SelectObject(mem_dc, dib);
|
||||
|
||||
dst_format = "a8b8g8r8";
|
||||
sha1 = sha1_graphics_a8b8g8r8;
|
||||
draw_graphics(mem_dc, bmi, bits, &sha1);
|
||||
current_sha1 = sha1_graphics_a8b8g8r8;
|
||||
draw_graphics(mem_dc, bmi, bits);
|
||||
draw_text(mem_dc, bmi, bits);
|
||||
|
||||
SelectObject(mem_dc, orig_bm);
|
||||
|
@ -2817,8 +2932,8 @@ static void test_simple_graphics(void)
|
|||
orig_bm = SelectObject(mem_dc, dib);
|
||||
|
||||
dst_format = "r10g10b10";
|
||||
sha1 = sha1_graphics_r10g10b10;
|
||||
draw_graphics(mem_dc, bmi, bits, &sha1);
|
||||
current_sha1 = sha1_graphics_r10g10b10;
|
||||
draw_graphics(mem_dc, bmi, bits);
|
||||
draw_text(mem_dc, bmi, bits);
|
||||
|
||||
SelectObject(mem_dc, orig_bm);
|
||||
|
@ -2843,8 +2958,8 @@ static void test_simple_graphics(void)
|
|||
orig_bm = SelectObject(mem_dc, dib);
|
||||
|
||||
dst_format = "r6g6b6";
|
||||
sha1 = sha1_graphics_r6g6b6;
|
||||
draw_graphics(mem_dc, bmi, bits, &sha1);
|
||||
current_sha1 = sha1_graphics_r6g6b6;
|
||||
draw_graphics(mem_dc, bmi, bits);
|
||||
draw_text(mem_dc, bmi, bits);
|
||||
|
||||
SelectObject(mem_dc, orig_bm);
|
||||
|
@ -2860,8 +2975,8 @@ static void test_simple_graphics(void)
|
|||
orig_bm = SelectObject(mem_dc, dib);
|
||||
|
||||
dst_format = "24";
|
||||
sha1 = sha1_graphics_24;
|
||||
draw_graphics(mem_dc, bmi, bits, &sha1);
|
||||
current_sha1 = sha1_graphics_24;
|
||||
draw_graphics(mem_dc, bmi, bits);
|
||||
draw_text(mem_dc, bmi, bits);
|
||||
|
||||
SelectObject(mem_dc, orig_bm);
|
||||
|
@ -2883,8 +2998,8 @@ static void test_simple_graphics(void)
|
|||
orig_bm = SelectObject(mem_dc, dib);
|
||||
|
||||
dst_format = "r5g5b5";
|
||||
sha1 = sha1_graphics_r5g5b5;
|
||||
draw_graphics(mem_dc, bmi, bits, &sha1);
|
||||
current_sha1 = sha1_graphics_r5g5b5;
|
||||
draw_graphics(mem_dc, bmi, bits);
|
||||
draw_text(mem_dc, bmi, bits);
|
||||
|
||||
SelectObject(mem_dc, orig_bm);
|
||||
|
@ -2908,8 +3023,8 @@ static void test_simple_graphics(void)
|
|||
orig_bm = SelectObject(mem_dc, dib);
|
||||
|
||||
dst_format = "r4g4b4";
|
||||
sha1 = sha1_graphics_r4g4b4;
|
||||
draw_graphics(mem_dc, bmi, bits, &sha1);
|
||||
current_sha1 = sha1_graphics_r4g4b4;
|
||||
draw_graphics(mem_dc, bmi, bits);
|
||||
draw_text(mem_dc, bmi, bits);
|
||||
|
||||
SelectObject(mem_dc, orig_bm);
|
||||
|
@ -2932,8 +3047,8 @@ static void test_simple_graphics(void)
|
|||
orig_bm = SelectObject(mem_dc, dib);
|
||||
|
||||
dst_format = "8 color";
|
||||
sha1 = sha1_graphics_8_color;
|
||||
draw_graphics(mem_dc, bmi, bits, &sha1);
|
||||
current_sha1 = sha1_graphics_8_color;
|
||||
draw_graphics(mem_dc, bmi, bits);
|
||||
draw_text(mem_dc, bmi, bits);
|
||||
|
||||
SelectObject(mem_dc, orig_bm);
|
||||
|
@ -2952,8 +3067,8 @@ static void test_simple_graphics(void)
|
|||
orig_bm = SelectObject(mem_dc, dib);
|
||||
|
||||
dst_format = "8 grayscale";
|
||||
sha1 = sha1_graphics_8_grayscale;
|
||||
draw_graphics(mem_dc, bmi, bits, &sha1);
|
||||
current_sha1 = sha1_graphics_8_grayscale;
|
||||
draw_graphics(mem_dc, bmi, bits);
|
||||
draw_text(mem_dc, bmi, bits);
|
||||
|
||||
SelectObject(mem_dc, orig_bm);
|
||||
|
@ -2986,8 +3101,8 @@ static void test_simple_graphics(void)
|
|||
orig_bm = SelectObject(mem_dc, dib);
|
||||
|
||||
dst_format = "8";
|
||||
sha1 = sha1_graphics_8;
|
||||
draw_graphics(mem_dc, bmi, bits, &sha1);
|
||||
current_sha1 = sha1_graphics_8;
|
||||
draw_graphics(mem_dc, bmi, bits);
|
||||
draw_text(mem_dc, bmi, bits);
|
||||
|
||||
SelectObject(mem_dc, orig_bm);
|
||||
|
@ -3003,8 +3118,8 @@ static void test_simple_graphics(void)
|
|||
orig_bm = SelectObject(mem_dc, dib);
|
||||
|
||||
dst_format = "4";
|
||||
sha1 = sha1_graphics_4;
|
||||
draw_graphics(mem_dc, bmi, bits, &sha1);
|
||||
current_sha1 = sha1_graphics_4;
|
||||
draw_graphics(mem_dc, bmi, bits);
|
||||
draw_text(mem_dc, bmi, bits);
|
||||
|
||||
SelectObject(mem_dc, orig_bm);
|
||||
|
@ -3021,8 +3136,8 @@ static void test_simple_graphics(void)
|
|||
orig_bm = SelectObject(mem_dc, dib);
|
||||
|
||||
dst_format = "4 grayscale";
|
||||
sha1 = sha1_graphics_4_grayscale;
|
||||
draw_graphics(mem_dc, bmi, bits, &sha1);
|
||||
current_sha1 = sha1_graphics_4_grayscale;
|
||||
draw_graphics(mem_dc, bmi, bits);
|
||||
draw_text(mem_dc, bmi, bits);
|
||||
|
||||
SelectObject(mem_dc, orig_bm);
|
||||
|
@ -3046,8 +3161,8 @@ static void test_simple_graphics(void)
|
|||
orig_bm = SelectObject(mem_dc, dib);
|
||||
|
||||
dst_format = "1";
|
||||
sha1 = sha1_graphics_1;
|
||||
draw_graphics(mem_dc, bmi, bits, &sha1);
|
||||
current_sha1 = sha1_graphics_1;
|
||||
draw_graphics(mem_dc, bmi, bits);
|
||||
draw_text(mem_dc, bmi, bits);
|
||||
|
||||
SelectObject(mem_dc, orig_bm);
|
||||
|
|
Loading…
Reference in New Issue