Commit 399ab6f1 authored by Alexandre Julliard's avatar Alexandre Julliard

gdi32/tests: Add tests for DC bounds to the DIB graphics tests.

parent 514e9528
...@@ -1124,6 +1124,75 @@ static const char *sha1_graphics_1[] = ...@@ -1124,6 +1124,75 @@ static const char *sha1_graphics_1[] =
NULL 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 const char *dst_format;
static inline DWORD get_stride(BITMAPINFO *bmi) static inline DWORD get_stride(BITMAPINFO *bmi)
...@@ -1170,7 +1239,49 @@ static char *hash_dib(BITMAPINFO *bmi, void *bits) ...@@ -1170,7 +1239,49 @@ static char *hash_dib(BITMAPINFO *bmi, void *bits)
return buf; 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); char *hash = hash_dib(bmi, bits);
BOOL ok_cond; BOOL ok_cond;
...@@ -1187,33 +1298,35 @@ static void compare_hash_broken_todo(BITMAPINFO *bmi, BYTE *bits, const char *** ...@@ -1187,33 +1298,35 @@ static void compare_hash_broken_todo(BITMAPINFO *bmi, BYTE *bits, const char ***
for(i = 0; i <= num_broken; i++) 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; return;
} }
} }
ok_cond = !strcmp(hash, **sha1); ok_cond = !strcmp(hash, *current_sha1);
for(i = 1; i <= num_broken; i++) 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) if(todo)
todo_wine ok( ok_cond, "%s: %s: expected hash %s got %s\n", 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 else
ok( ok_cond, "%s: %s: expected hash %s got %s\n", 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); 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[] = 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 ...@@ -1361,7 +1474,7 @@ static inline void solid_patblt( HDC hdc, int x, int y, int width, int height, C
DeleteObject( SelectObject( hdc, brush ) ); 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)]; char pal_buffer[sizeof(LOGPALETTE) + 255 * sizeof(PALETTEENTRY)];
LOGPALETTE *pal = (LOGPALETTE *)pal_buffer; LOGPALETTE *pal = (LOGPALETTE *)pal_buffer;
...@@ -1388,8 +1501,10 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -1388,8 +1501,10 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
blend.BlendOp = AC_SRC_OVER; blend.BlendOp = AC_SRC_OVER;
blend.BlendFlags = 0; blend.BlendFlags = 0;
reset_bounds( hdc );
memset(bits, 0xcc, get_dib_size(bmi)); memset(bits, 0xcc, get_dib_size(bmi));
compare_hash(bmi, bits, sha1, "empty"); compare_hash(hdc, bmi, bits, "empty");
src_dc = CreateCompatibleDC( 0 ); src_dc = CreateCompatibleDC( 0 );
solid_pen = CreatePen(PS_SOLID, 1, RGB(0, 0, 0xff)); 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 ...@@ -1409,7 +1524,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
MoveToEx(hdc, 170 + i * 3, 100, NULL); MoveToEx(hdc, 170 + i * 3, 100, NULL);
LineTo(hdc, 170 + i * 3, 10); /* b -> t */ 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 */ /* diagonal lines */
SetROP2(hdc, R2_COPYPEN); SetROP2(hdc, R2_COPYPEN);
...@@ -1421,14 +1536,14 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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); MoveToEx(hdc, 200.5 + 10 * c, 200.5 + 10 * s, NULL);
LineTo(hdc, 200.5 + 100 * c, 200.5 + 100 * s); 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++) for(i = 0; i < sizeof(bias_check) / sizeof(bias_check[0]); i++)
{ {
MoveToEx(hdc, bias_check[i].left, bias_check[i].top, NULL); MoveToEx(hdc, bias_check[i].left, bias_check[i].top, NULL);
LineTo(hdc, bias_check[i].right, bias_check[i].bottom); 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 PatBlt */
solid_brush = CreateSolidBrush(RGB(0x33, 0xaa, 0xff)); solid_brush = CreateSolidBrush(RGB(0x33, 0xaa, 0xff));
...@@ -1447,7 +1562,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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 */ /* clipped lines */
hrgn = CreateRectRgn(10, 10, 200, 20); hrgn = CreateRectRgn(10, 10, 200, 20);
...@@ -1463,21 +1578,21 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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); MoveToEx(hdc, hline_clips[i].left, hline_clips[i].top, NULL);
LineTo(hdc, hline_clips[i].right, hline_clips[i].bottom); 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++) for(i = 0; i < sizeof(vline_clips)/sizeof(vline_clips[0]); i++)
{ {
MoveToEx(hdc, vline_clips[i].left, vline_clips[i].top, NULL); MoveToEx(hdc, vline_clips[i].left, vline_clips[i].top, NULL);
LineTo(hdc, vline_clips[i].right, vline_clips[i].bottom); 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++) for(i = 0; i < sizeof(line_clips)/sizeof(line_clips[0]); i++)
{ {
MoveToEx(hdc, line_clips[i].left, line_clips[i].top, NULL); MoveToEx(hdc, line_clips[i].left, line_clips[i].top, NULL);
LineTo(hdc, line_clips[i].right, line_clips[i].bottom); 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 */ /* clipped PatBlt */
for(i = 0; i < sizeof(patblt_clips) / sizeof(patblt_clips[0]); i++) 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 ...@@ -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].right - patblt_clips[i].left,
patblt_clips[i].bottom - patblt_clips[i].top, PATCOPY); 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 */ /* clipped dashed lines */
dashed_pen = CreatePen(PS_DASH, 1, RGB(0xff, 0, 0)); 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 ...@@ -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); MoveToEx(hdc, hline_clips[i].left, hline_clips[i].top, NULL);
LineTo(hdc, hline_clips[i].right, hline_clips[i].bottom); 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++) for(i = 0; i < sizeof(hline_clips)/sizeof(hline_clips[0]); i++)
{ {
MoveToEx(hdc, hline_clips[i].right - 1, hline_clips[i].bottom, NULL); MoveToEx(hdc, hline_clips[i].right - 1, hline_clips[i].bottom, NULL);
LineTo(hdc, hline_clips[i].left - 1, hline_clips[i].top); 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++) for(i = 0; i < sizeof(vline_clips)/sizeof(vline_clips[0]); i++)
{ {
MoveToEx(hdc, vline_clips[i].left, vline_clips[i].top, NULL); MoveToEx(hdc, vline_clips[i].left, vline_clips[i].top, NULL);
LineTo(hdc, vline_clips[i].right, vline_clips[i].bottom); 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++) for(i = 0; i < sizeof(vline_clips)/sizeof(vline_clips[0]); i++)
{ {
MoveToEx(hdc, vline_clips[i].right, vline_clips[i].bottom - 1, NULL); MoveToEx(hdc, vline_clips[i].right, vline_clips[i].bottom - 1, NULL);
LineTo(hdc, vline_clips[i].left, vline_clips[i].top - 1); 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++) for(i = 0; i < sizeof(line_clips)/sizeof(line_clips[0]); i++)
{ {
MoveToEx(hdc, line_clips[i].left, line_clips[i].top, NULL); MoveToEx(hdc, line_clips[i].left, line_clips[i].top, NULL);
LineTo(hdc, line_clips[i].right, line_clips[i].bottom); 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); SetBkMode(hdc, OPAQUE);
...@@ -1536,7 +1651,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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); MoveToEx(hdc, line_clips[i].left, line_clips[i].top, NULL);
LineTo(hdc, line_clips[i].right, line_clips[i].bottom); 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); ExtSelectClipRgn(hdc, NULL, RGN_COPY);
...@@ -1567,9 +1682,9 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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 */ 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 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); SelectObject(hdc, orig_brush);
DeleteObject(dib_brush); DeleteObject(dib_brush);
...@@ -1597,9 +1712,9 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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 */ 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 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); SelectObject(hdc, orig_brush);
DeleteObject(dib_brush); DeleteObject(dib_brush);
...@@ -1627,9 +1742,9 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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 */ 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 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); SelectObject(hdc, orig_brush);
DeleteObject(dib_brush); DeleteObject(dib_brush);
...@@ -1657,9 +1772,9 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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 */ 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 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); SelectObject(hdc, orig_brush);
DeleteObject(dib_brush); DeleteObject(dib_brush);
...@@ -1696,7 +1811,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -1696,7 +1811,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
y += 25; 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); SelectObject(hdc, orig_brush);
DeleteObject(dib_brush); DeleteObject(dib_brush);
...@@ -1718,7 +1833,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -1718,7 +1833,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
y += 25; 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); SelectObject(hdc, orig_brush);
DeleteObject(dib_brush); DeleteObject(dib_brush);
...@@ -1744,7 +1859,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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); SelectObject(hdc, orig_brush);
DeleteObject(dib_brush); DeleteObject(dib_brush);
...@@ -1768,7 +1883,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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); DeleteObject(bmp);
SelectObject(hdc, orig_brush); SelectObject(hdc, orig_brush);
...@@ -1792,20 +1907,20 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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); 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); SelectObject(hdc, solid_pen);
/* PaintRgn */ /* PaintRgn */
PaintRgn(hdc, hrgn); PaintRgn(hdc, hrgn);
compare_hash(bmi, bits, sha1, "PaintRgn"); compare_hash(hdc, bmi, bits, "PaintRgn");
/* RTL rectangles */ /* RTL rectangles */
if( !pSetLayout ) if( !pSetLayout )
{ {
win_skip("Don't have SetLayout\n"); win_skip("Don't have SetLayout\n");
(*sha1)++; skip_compare(1);
} }
else else
{ {
...@@ -1813,7 +1928,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -1813,7 +1928,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
PaintRgn(hdc, hrgn); PaintRgn(hdc, hrgn);
PatBlt(hdc, 10, 250, 10, 10, PATCOPY); PatBlt(hdc, 10, 250, 10, 10, PATCOPY);
Rectangle(hdc, 100, 250, 110, 260); Rectangle(hdc, 100, 250, 110, 260);
compare_hash(bmi, bits, sha1, "rtl"); compare_hash(hdc, bmi, bits, "rtl");
pSetLayout(hdc, LAYOUT_LTR); pSetLayout(hdc, LAYOUT_LTR);
} }
...@@ -1836,7 +1951,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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 */ /* overlapping blits */
...@@ -1847,7 +1962,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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, 15, 20, 20);
Rectangle(hdc, 15, 20, 50, 45); Rectangle(hdc, 15, 20, 50, 45);
BitBlt( hdc, 20, 20, 100, 100, hdc, 10, 10, SRCCOPY ); 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, 10, 10, 100, 100);
Rectangle(hdc, 20, 15, 30, 40); Rectangle(hdc, 20, 15, 30, 40);
...@@ -1855,16 +1970,16 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -1855,16 +1970,16 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
Rectangle(hdc, 15, 20, 50, 45); Rectangle(hdc, 15, 20, 50, 45);
BitBlt( hdc, 10, 10, 100, 100, hdc, 20, 20, SRCCOPY ); BitBlt( hdc, 10, 10, 100, 100, hdc, 20, 20, SRCCOPY );
if (bmi->bmiHeader.biBitCount == 1) /* Windows gets this one wrong */ 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 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, 10, 10, 100, 100);
Rectangle(hdc, 20, 15, 30, 40); Rectangle(hdc, 20, 15, 30, 40);
Rectangle(hdc, 15, 15, 20, 20); Rectangle(hdc, 15, 15, 20, 20);
Rectangle(hdc, 15, 20, 50, 45); Rectangle(hdc, 15, 20, 50, 45);
BitBlt( hdc, 20, 10, 100, 100, hdc, 10, 20, SRCCOPY ); 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, 10, 10, 100, 100);
Rectangle(hdc, 20, 15, 30, 40); Rectangle(hdc, 20, 15, 30, 40);
...@@ -1872,23 +1987,23 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -1872,23 +1987,23 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
Rectangle(hdc, 15, 20, 50, 45); Rectangle(hdc, 15, 20, 50, 45);
BitBlt( hdc, 10, 20, 100, 100, hdc, 20, 10, SRCCOPY ); BitBlt( hdc, 10, 20, 100, 100, hdc, 20, 10, SRCCOPY );
if (bmi->bmiHeader.biBitCount == 1) /* Windows gets this one wrong */ 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 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, 10, 10, 100, 100);
Rectangle(hdc, 20, 15, 30, 40); Rectangle(hdc, 20, 15, 30, 40);
Rectangle(hdc, 15, 15, 20, 20); Rectangle(hdc, 15, 15, 20, 20);
Rectangle(hdc, 15, 20, 50, 45); Rectangle(hdc, 15, 20, 50, 45);
BitBlt( hdc, 20, 20, 100, 100, hdc, 10, 10, PATPAINT ); 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, 10, 10, 100, 100);
Rectangle(hdc, 20, 15, 30, 40); Rectangle(hdc, 20, 15, 30, 40);
Rectangle(hdc, 15, 15, 20, 20); Rectangle(hdc, 15, 15, 20, 20);
Rectangle(hdc, 15, 20, 50, 45); Rectangle(hdc, 15, 20, 50, 45);
BitBlt( hdc, 10, 10, 100, 100, hdc, 20, 20, PATPAINT ); 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, 10, 10, 100, 100);
Rectangle(hdc, 20, 15, 30, 40); Rectangle(hdc, 20, 15, 30, 40);
...@@ -1896,16 +2011,16 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -1896,16 +2011,16 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
Rectangle(hdc, 15, 20, 50, 45); Rectangle(hdc, 15, 20, 50, 45);
BitBlt( hdc, 20, 10, 100, 100, hdc, 10, 20, PATPAINT ); BitBlt( hdc, 20, 10, 100, 100, hdc, 10, 20, PATPAINT );
if (bmi->bmiHeader.biBitCount >= 24) /* Windows gets this one wrong */ 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 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, 10, 10, 100, 100);
Rectangle(hdc, 20, 15, 30, 40); Rectangle(hdc, 20, 15, 30, 40);
Rectangle(hdc, 15, 15, 20, 20); Rectangle(hdc, 15, 15, 20, 20);
Rectangle(hdc, 15, 20, 50, 45); Rectangle(hdc, 15, 20, 50, 45);
BitBlt( hdc, 10, 20, 100, 100, hdc, 20, 10, PATPAINT ); 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 */ /* blitting with 32-bpp BI_RGB source */
...@@ -1930,22 +2045,22 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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 ); BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY );
if (bmi->bmiHeader.biBitCount == 8) /* broken on NT4 */ 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 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.SourceConstantAlpha = 0xd0;
blend.AlphaFormat = 0; blend.AlphaFormat = 0;
if (pGdiAlphaBlend) pGdiAlphaBlend( hdc, 100, 100, 256, 256, src_dc, 0, 0, 256, 256, blend ); 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 (bmi->bmiHeader.biBitCount == 16 && bmi->bmiHeader.biCompression == BI_RGB) /* 555 broken on w2k */
{ {
if (!pGdiAlphaBlend) (*sha1) += 2; if (!pGdiAlphaBlend) skip_compare(2);
else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 32-bpp no alpha", 1, FALSE ); else compare_hash_broken_todo(hdc, bmi, bits, "AlphaBlend src 32-bpp no alpha", 1, FALSE );
} }
else else
{ {
if (!pGdiAlphaBlend) (*sha1)++; if (!pGdiAlphaBlend) skip_compare(1);
else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 32-bpp no alpha", 0, dib_is_1bpp ); else compare_hash_broken_todo(hdc, bmi, bits, "AlphaBlend src 32-bpp no alpha", 0, dib_is_1bpp );
} }
blend.SourceConstantAlpha = 0xb0; blend.SourceConstantAlpha = 0xb0;
...@@ -1953,13 +2068,13 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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 (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 (bmi->bmiHeader.biBitCount == 16 && bmi->bmiHeader.biCompression == BI_RGB) /* 555 broken on w2k */
{ {
if (!pGdiAlphaBlend) (*sha1) += 2; if (!pGdiAlphaBlend) skip_compare(2);
else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 32-bpp alpha", 1, FALSE ); else compare_hash_broken_todo(hdc, bmi, bits, "AlphaBlend src 32-bpp alpha", 1, FALSE );
} }
else else
{ {
if (!pGdiAlphaBlend) (*sha1)++; if (!pGdiAlphaBlend) skip_compare(1);
else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 32-bpp alpha", 0, dib_is_1bpp ); else compare_hash_broken_todo(hdc, bmi, bits, "AlphaBlend src 32-bpp alpha", 0, dib_is_1bpp );
} }
/* blitting with 32-bpp r10g10b10 source */ /* blitting with 32-bpp r10g10b10 source */
...@@ -1982,9 +2097,9 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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 ); BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY );
if (bmi->bmiHeader.biBitCount == 8) /* broken on NT4 */ 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 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 */ /* blitting with 32-bpp b6g6r6 source */
...@@ -2006,9 +2121,9 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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 ); BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY );
if (bmi->bmiHeader.biBitCount == 8) /* broken on NT4 */ 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 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 */ /* blitting with 24-bpp source */
...@@ -2026,22 +2141,22 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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 ); BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY );
if (bmi->bmiHeader.biBitCount == 8) /* broken on NT4 */ 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 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.SourceConstantAlpha = 0xe0;
blend.AlphaFormat = 0; blend.AlphaFormat = 0;
if (pGdiAlphaBlend) pGdiAlphaBlend( hdc, 100, 100, 256, 256, src_dc, 0, 0, 256, 256, blend ); 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 (bmi->bmiHeader.biBitCount == 16 && bmi->bmiHeader.biCompression == BI_RGB) /* 555 broken on w2k */
{ {
if (!pGdiAlphaBlend) (*sha1) += 2; if (!pGdiAlphaBlend) skip_compare(2);
else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 24-bpp", 1, FALSE ); else compare_hash_broken_todo(hdc, bmi, bits, "AlphaBlend src 24-bpp", 1, FALSE );
} }
else else
{ {
if (!pGdiAlphaBlend) (*sha1)++; if (!pGdiAlphaBlend) skip_compare(1);
else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 24-bpp", 0, dib_is_1bpp ); else compare_hash_broken_todo(hdc, bmi, bits, "AlphaBlend src 24-bpp", 0, dib_is_1bpp );
} }
/* blitting with 16-bpp BI_RGB source */ /* blitting with 16-bpp BI_RGB source */
...@@ -2056,9 +2171,9 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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 ); BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY );
if (bmi->bmiHeader.biBitCount == 8 && bmi->bmiHeader.biClrUsed > 5) /* broken on NT4 */ 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 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 */ /* blitting with 16-bpp b4g4r4 source */
...@@ -2075,9 +2190,9 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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 ); BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY );
if (bmi->bmiHeader.biBitCount == 8 && bmi->bmiHeader.biClrUsed > 5) /* broken on NT4 */ 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 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 */ /* blitting with 8-bpp source */
...@@ -2092,20 +2207,20 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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; src_bits[y * 256 + x] = 3 * x + 5 * y;
BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY ); 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.SourceConstantAlpha = 0xd0;
blend.AlphaFormat = 0; blend.AlphaFormat = 0;
if (pGdiAlphaBlend) pGdiAlphaBlend( hdc, 100, 100, 256, 256, src_dc, 0, 0, 256, 256, blend ); 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 (bmi->bmiHeader.biBitCount == 16 && bmi->bmiHeader.biCompression == BI_RGB) /* 555 broken on w2k */
{ {
if (!pGdiAlphaBlend) (*sha1) += 2; if (!pGdiAlphaBlend) skip_compare(2);
else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 8-bpp", 1, FALSE ); else compare_hash_broken_todo(hdc, bmi, bits, "AlphaBlend src 8-bpp", 1, FALSE );
} }
else else
{ {
if (!pGdiAlphaBlend) (*sha1)++; if (!pGdiAlphaBlend) skip_compare(1);
else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 8-bpp", 0, dib_is_1bpp ); else compare_hash_broken_todo(hdc, bmi, bits, "AlphaBlend src 8-bpp", 0, dib_is_1bpp );
} }
/* blitting with 4-bpp source */ /* blitting with 4-bpp source */
...@@ -2120,7 +2235,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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; src_bits[(y * 256 + x) / 2] = 7 * x + 3 * y;
BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY ); 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 */ /* blitting with 1-bpp source */
...@@ -2134,20 +2249,20 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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; src_bits[(y * 256 + x) / 8] = 7 * x + 3 * y;
BitBlt( hdc, 100, 100, 256, 256, src_dc, 0, 0, SRCCOPY ); 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.SourceConstantAlpha = 0x90;
blend.AlphaFormat = 0; blend.AlphaFormat = 0;
if (pGdiAlphaBlend) pGdiAlphaBlend( hdc, 100, 100, 256, 256, src_dc, 0, 0, 256, 256, blend ); 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 (bmi->bmiHeader.biBitCount == 16 && bmi->bmiHeader.biCompression == BI_RGB) /* 555 broken on w2k */
{ {
if (!pGdiAlphaBlend) (*sha1) += 2; if (!pGdiAlphaBlend) skip_compare(2);
else compare_hash_broken_todo(bmi, bits, sha1, "AlphaBlend src 1-bpp", 1, FALSE ); else compare_hash_broken_todo(hdc, bmi, bits, "AlphaBlend src 1-bpp", 1, FALSE );
} }
else else
{ {
if (!pGdiAlphaBlend) (*sha1)++; if (!pGdiAlphaBlend) skip_compare(1);
else compare_hash(bmi, bits, sha1, "AlphaBlend src 1-bpp" ); else compare_hash(hdc, bmi, bits, "AlphaBlend src 1-bpp" );
} }
DeleteDC( src_dc ); DeleteDC( src_dc );
...@@ -2176,7 +2291,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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, 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, 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 ); 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 */ /* 32 bpp StretchDIBits */
...@@ -2216,7 +2331,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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 ); 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); 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 */ /* Solid colors */
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
...@@ -2242,7 +2357,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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, 8, 50, 1, 1, RGB( 0xff, 0, 0 ) );
solid_patblt( hdc, 10, 50, 1, 1, PALETTERGB( 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++) for (i = 0; i < 256; i++)
{ {
...@@ -2275,7 +2390,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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 */ /* gradients */
...@@ -2331,22 +2446,23 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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 ); 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 */ 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 else
compare_hash(bmi, bits, sha1, "GdiGradientFill" ); compare_hash(hdc, bmi, bits, "GdiGradientFill" );
pGdiGradientFill( hdc, vtri, 7*3, tri, 7, GRADIENT_FILL_TRIANGLE ); pGdiGradientFill( hdc, vtri, 7*3, tri, 7, GRADIENT_FILL_TRIANGLE );
for (i = 0; i < 7*3; i++) vtri[i].y += 100; for (i = 0; i < 7*3; i++) vtri[i].y += 100;
pGdiGradientFill( hdc, vtri, 7*3, tri + 7, 7, GRADIENT_FILL_TRIANGLE ); 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 */ 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 else
compare_hash(bmi, bits, sha1, "GdiGradientFill" ); compare_hash(hdc, bmi, bits, "GdiGradientFill" );
} }
else else
{ {
win_skip( "GdiGradientFill not supported\n" ); win_skip( "GdiGradientFill not supported\n" );
*sha1 += 2; skip_compare(1);
skip_compare(1);
} }
/* wide pen */ /* wide pen */
...@@ -2360,7 +2476,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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 ); 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 ); SelectObject( hdc, orig_pen );
DeleteObject( wide_pen ); DeleteObject( wide_pen );
...@@ -2374,7 +2490,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -2374,7 +2490,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
SelectObject( hdc, wide_pen ); SelectObject( hdc, wide_pen );
Polyline( hdc, poly_lines, sizeof(poly_lines) / sizeof(poly_lines[0]) ); 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 ); SelectObject( hdc, orig_pen );
DeleteObject( wide_pen ); DeleteObject( wide_pen );
...@@ -2384,7 +2500,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -2384,7 +2500,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
SelectObject( hdc, wide_pen ); SelectObject( hdc, wide_pen );
Polyline( hdc, poly_lines, sizeof(poly_lines) / sizeof(poly_lines[0]) ); 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 ); SelectObject( hdc, orig_pen );
DeleteObject( wide_pen ); DeleteObject( wide_pen );
...@@ -2416,7 +2532,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -2416,7 +2532,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
LineTo( hdc, 20 * i, 200 + i ); LineTo( hdc, 20 * i, 200 + i );
} }
/* NT4 broken for all cases, W2K for 1 bpp only */ /* 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++) for (i = 1; i < 20; i++)
{ {
...@@ -2430,7 +2546,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -2430,7 +2546,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
LineTo( hdc, 20 * i, 200 + i ); LineTo( hdc, 20 * i, 200 + i );
} }
/* NT4 broken for all cases, W2K for 1 bpp only */ /* 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); DeleteObject(bmp);
SetTextColor(hdc, old_text); SetTextColor(hdc, old_text);
...@@ -2487,7 +2603,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -2487,7 +2603,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh
DeleteObject( hpal ); DeleteObject( hpal );
/* NT4 broken for all cases, W2K for 1 bpp only */ /* 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 */ /* ExtFloodFill */
...@@ -2507,7 +2623,7 @@ static void draw_graphics(HDC hdc, BITMAPINFO *bmi, BYTE *bits, const char ***sh ...@@ -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 ); ret = ExtFloodFill( hdc, 100, 100, RGB( 0, 0xff, 0 ), FLOODFILLSURFACE );
ok (!ret == !!dib_is_1bpp, "got ret %d\n", ret); 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 ); ExtSelectClipRgn( hdc, NULL, RGN_COPY );
...@@ -2710,7 +2826,6 @@ static void test_simple_graphics(void) ...@@ -2710,7 +2826,6 @@ static void test_simple_graphics(void)
HDC mem_dc; HDC mem_dc;
BYTE *bits; BYTE *bits;
HBITMAP dib, orig_bm; HBITMAP dib, orig_bm;
const char **sha1;
DIBSECTION ds; DIBSECTION ds;
int i; int i;
...@@ -2739,8 +2854,8 @@ static void test_simple_graphics(void) ...@@ -2739,8 +2854,8 @@ static void test_simple_graphics(void)
orig_bm = SelectObject(mem_dc, dib); orig_bm = SelectObject(mem_dc, dib);
dst_format = "8888"; dst_format = "8888";
sha1 = sha1_graphics_a8r8g8b8; current_sha1 = sha1_graphics_a8r8g8b8;
draw_graphics(mem_dc, bmi, bits, &sha1); draw_graphics(mem_dc, bmi, bits);
draw_text(mem_dc, bmi, bits); draw_text(mem_dc, bmi, bits);
SelectObject(mem_dc, orig_bm); SelectObject(mem_dc, orig_bm);
...@@ -2765,8 +2880,8 @@ static void test_simple_graphics(void) ...@@ -2765,8 +2880,8 @@ static void test_simple_graphics(void)
orig_bm = SelectObject(mem_dc, dib); orig_bm = SelectObject(mem_dc, dib);
dst_format = "8888 - bitfields"; dst_format = "8888 - bitfields";
sha1 = sha1_graphics_a8r8g8b8_bitfields; current_sha1 = sha1_graphics_a8r8g8b8_bitfields;
draw_graphics(mem_dc, bmi, bits, &sha1); draw_graphics(mem_dc, bmi, bits);
draw_text(mem_dc, bmi, bits); draw_text(mem_dc, bmi, bits);
SelectObject(mem_dc, orig_bm); SelectObject(mem_dc, orig_bm);
...@@ -2791,8 +2906,8 @@ static void test_simple_graphics(void) ...@@ -2791,8 +2906,8 @@ static void test_simple_graphics(void)
orig_bm = SelectObject(mem_dc, dib); orig_bm = SelectObject(mem_dc, dib);
dst_format = "a8b8g8r8"; dst_format = "a8b8g8r8";
sha1 = sha1_graphics_a8b8g8r8; current_sha1 = sha1_graphics_a8b8g8r8;
draw_graphics(mem_dc, bmi, bits, &sha1); draw_graphics(mem_dc, bmi, bits);
draw_text(mem_dc, bmi, bits); draw_text(mem_dc, bmi, bits);
SelectObject(mem_dc, orig_bm); SelectObject(mem_dc, orig_bm);
...@@ -2817,8 +2932,8 @@ static void test_simple_graphics(void) ...@@ -2817,8 +2932,8 @@ static void test_simple_graphics(void)
orig_bm = SelectObject(mem_dc, dib); orig_bm = SelectObject(mem_dc, dib);
dst_format = "r10g10b10"; dst_format = "r10g10b10";
sha1 = sha1_graphics_r10g10b10; current_sha1 = sha1_graphics_r10g10b10;
draw_graphics(mem_dc, bmi, bits, &sha1); draw_graphics(mem_dc, bmi, bits);
draw_text(mem_dc, bmi, bits); draw_text(mem_dc, bmi, bits);
SelectObject(mem_dc, orig_bm); SelectObject(mem_dc, orig_bm);
...@@ -2843,8 +2958,8 @@ static void test_simple_graphics(void) ...@@ -2843,8 +2958,8 @@ static void test_simple_graphics(void)
orig_bm = SelectObject(mem_dc, dib); orig_bm = SelectObject(mem_dc, dib);
dst_format = "r6g6b6"; dst_format = "r6g6b6";
sha1 = sha1_graphics_r6g6b6; current_sha1 = sha1_graphics_r6g6b6;
draw_graphics(mem_dc, bmi, bits, &sha1); draw_graphics(mem_dc, bmi, bits);
draw_text(mem_dc, bmi, bits); draw_text(mem_dc, bmi, bits);
SelectObject(mem_dc, orig_bm); SelectObject(mem_dc, orig_bm);
...@@ -2860,8 +2975,8 @@ static void test_simple_graphics(void) ...@@ -2860,8 +2975,8 @@ static void test_simple_graphics(void)
orig_bm = SelectObject(mem_dc, dib); orig_bm = SelectObject(mem_dc, dib);
dst_format = "24"; dst_format = "24";
sha1 = sha1_graphics_24; current_sha1 = sha1_graphics_24;
draw_graphics(mem_dc, bmi, bits, &sha1); draw_graphics(mem_dc, bmi, bits);
draw_text(mem_dc, bmi, bits); draw_text(mem_dc, bmi, bits);
SelectObject(mem_dc, orig_bm); SelectObject(mem_dc, orig_bm);
...@@ -2883,8 +2998,8 @@ static void test_simple_graphics(void) ...@@ -2883,8 +2998,8 @@ static void test_simple_graphics(void)
orig_bm = SelectObject(mem_dc, dib); orig_bm = SelectObject(mem_dc, dib);
dst_format = "r5g5b5"; dst_format = "r5g5b5";
sha1 = sha1_graphics_r5g5b5; current_sha1 = sha1_graphics_r5g5b5;
draw_graphics(mem_dc, bmi, bits, &sha1); draw_graphics(mem_dc, bmi, bits);
draw_text(mem_dc, bmi, bits); draw_text(mem_dc, bmi, bits);
SelectObject(mem_dc, orig_bm); SelectObject(mem_dc, orig_bm);
...@@ -2908,8 +3023,8 @@ static void test_simple_graphics(void) ...@@ -2908,8 +3023,8 @@ static void test_simple_graphics(void)
orig_bm = SelectObject(mem_dc, dib); orig_bm = SelectObject(mem_dc, dib);
dst_format = "r4g4b4"; dst_format = "r4g4b4";
sha1 = sha1_graphics_r4g4b4; current_sha1 = sha1_graphics_r4g4b4;
draw_graphics(mem_dc, bmi, bits, &sha1); draw_graphics(mem_dc, bmi, bits);
draw_text(mem_dc, bmi, bits); draw_text(mem_dc, bmi, bits);
SelectObject(mem_dc, orig_bm); SelectObject(mem_dc, orig_bm);
...@@ -2932,8 +3047,8 @@ static void test_simple_graphics(void) ...@@ -2932,8 +3047,8 @@ static void test_simple_graphics(void)
orig_bm = SelectObject(mem_dc, dib); orig_bm = SelectObject(mem_dc, dib);
dst_format = "8 color"; dst_format = "8 color";
sha1 = sha1_graphics_8_color; current_sha1 = sha1_graphics_8_color;
draw_graphics(mem_dc, bmi, bits, &sha1); draw_graphics(mem_dc, bmi, bits);
draw_text(mem_dc, bmi, bits); draw_text(mem_dc, bmi, bits);
SelectObject(mem_dc, orig_bm); SelectObject(mem_dc, orig_bm);
...@@ -2952,8 +3067,8 @@ static void test_simple_graphics(void) ...@@ -2952,8 +3067,8 @@ static void test_simple_graphics(void)
orig_bm = SelectObject(mem_dc, dib); orig_bm = SelectObject(mem_dc, dib);
dst_format = "8 grayscale"; dst_format = "8 grayscale";
sha1 = sha1_graphics_8_grayscale; current_sha1 = sha1_graphics_8_grayscale;
draw_graphics(mem_dc, bmi, bits, &sha1); draw_graphics(mem_dc, bmi, bits);
draw_text(mem_dc, bmi, bits); draw_text(mem_dc, bmi, bits);
SelectObject(mem_dc, orig_bm); SelectObject(mem_dc, orig_bm);
...@@ -2986,8 +3101,8 @@ static void test_simple_graphics(void) ...@@ -2986,8 +3101,8 @@ static void test_simple_graphics(void)
orig_bm = SelectObject(mem_dc, dib); orig_bm = SelectObject(mem_dc, dib);
dst_format = "8"; dst_format = "8";
sha1 = sha1_graphics_8; current_sha1 = sha1_graphics_8;
draw_graphics(mem_dc, bmi, bits, &sha1); draw_graphics(mem_dc, bmi, bits);
draw_text(mem_dc, bmi, bits); draw_text(mem_dc, bmi, bits);
SelectObject(mem_dc, orig_bm); SelectObject(mem_dc, orig_bm);
...@@ -3003,8 +3118,8 @@ static void test_simple_graphics(void) ...@@ -3003,8 +3118,8 @@ static void test_simple_graphics(void)
orig_bm = SelectObject(mem_dc, dib); orig_bm = SelectObject(mem_dc, dib);
dst_format = "4"; dst_format = "4";
sha1 = sha1_graphics_4; current_sha1 = sha1_graphics_4;
draw_graphics(mem_dc, bmi, bits, &sha1); draw_graphics(mem_dc, bmi, bits);
draw_text(mem_dc, bmi, bits); draw_text(mem_dc, bmi, bits);
SelectObject(mem_dc, orig_bm); SelectObject(mem_dc, orig_bm);
...@@ -3021,8 +3136,8 @@ static void test_simple_graphics(void) ...@@ -3021,8 +3136,8 @@ static void test_simple_graphics(void)
orig_bm = SelectObject(mem_dc, dib); orig_bm = SelectObject(mem_dc, dib);
dst_format = "4 grayscale"; dst_format = "4 grayscale";
sha1 = sha1_graphics_4_grayscale; current_sha1 = sha1_graphics_4_grayscale;
draw_graphics(mem_dc, bmi, bits, &sha1); draw_graphics(mem_dc, bmi, bits);
draw_text(mem_dc, bmi, bits); draw_text(mem_dc, bmi, bits);
SelectObject(mem_dc, orig_bm); SelectObject(mem_dc, orig_bm);
...@@ -3046,8 +3161,8 @@ static void test_simple_graphics(void) ...@@ -3046,8 +3161,8 @@ static void test_simple_graphics(void)
orig_bm = SelectObject(mem_dc, dib); orig_bm = SelectObject(mem_dc, dib);
dst_format = "1"; dst_format = "1";
sha1 = sha1_graphics_1; current_sha1 = sha1_graphics_1;
draw_graphics(mem_dc, bmi, bits, &sha1); draw_graphics(mem_dc, bmi, bits);
draw_text(mem_dc, bmi, bits); draw_text(mem_dc, bmi, bits);
SelectObject(mem_dc, orig_bm); SelectObject(mem_dc, orig_bm);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment