gdi32/tests: Test BitBlt() to an enhanced metafile.
This commit is contained in:
parent
b6f841eaca
commit
3f1281cc44
|
@ -1030,6 +1030,63 @@ static const unsigned char EMF_LINETO_MM_TEXT_BITS[] = {
|
||||||
0x14, 0x00, 0x00, 0x00
|
0x14, 0x00, 0x00, 0x00
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const unsigned char EMF_BITBLT[] =
|
||||||
|
{
|
||||||
|
0x01, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x6a, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00,
|
||||||
|
0x20, 0x45, 0x4d, 0x46, 0x00, 0x00, 0x01, 0x00,
|
||||||
|
0xa0, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
|
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x23, 0x04, 0x00, 0x00, 0x3b, 0x02, 0x00, 0x00,
|
||||||
|
0x75, 0x01, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x08, 0xb1, 0x05, 0x00,
|
||||||
|
0x28, 0x11, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00,
|
||||||
|
0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
|
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
|
0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0xcc, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x64, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
||||||
|
0x8c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
|
||||||
|
0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
|
0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x4c, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
|
0x62, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
|
||||||
|
0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x10, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/* For debugging or dumping the raw metafiles produced by
|
/* For debugging or dumping the raw metafiles produced by
|
||||||
* new test functions.
|
* new test functions.
|
||||||
*/
|
*/
|
||||||
|
@ -1382,6 +1439,70 @@ static int compare_emf_bits(const HENHMETAFILE mf, const unsigned char *bits,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* tests blitting to an EMF */
|
||||||
|
static void test_emf_BitBlt(void)
|
||||||
|
{
|
||||||
|
HDC hdcDisplay, hdcMetafile, hdcBitmap;
|
||||||
|
HBITMAP hBitmap, hOldBitmap;
|
||||||
|
HENHMETAFILE hMetafile;
|
||||||
|
#define BMP_DIM 4
|
||||||
|
BITMAPINFOHEADER bmih =
|
||||||
|
{
|
||||||
|
sizeof(BITMAPINFOHEADER),
|
||||||
|
BMP_DIM,/* biWidth */
|
||||||
|
BMP_DIM,/* biHeight */
|
||||||
|
1, /* biPlanes */
|
||||||
|
24, /* biBitCount */
|
||||||
|
BI_RGB, /* biCompression */
|
||||||
|
0, /* biXPelsPerMeter */
|
||||||
|
0, /* biYPelsPerMeter */
|
||||||
|
0, /* biClrUsed */
|
||||||
|
0, /* biClrImportant */
|
||||||
|
};
|
||||||
|
void *bits;
|
||||||
|
BOOL ret;
|
||||||
|
|
||||||
|
hdcDisplay = CreateDCA("DISPLAY", NULL, NULL, NULL);
|
||||||
|
ok( hdcDisplay != 0, "CreateDCA error %d\n", GetLastError() );
|
||||||
|
|
||||||
|
hdcBitmap = CreateCompatibleDC(hdcDisplay);
|
||||||
|
ok( hdcBitmap != 0, "CreateCompatibleDC failed\n" );
|
||||||
|
bmih.biXPelsPerMeter = MulDiv(GetDeviceCaps(hdcDisplay, LOGPIXELSX), 100, 3937);
|
||||||
|
bmih.biYPelsPerMeter = MulDiv(GetDeviceCaps(hdcDisplay, LOGPIXELSY), 100, 3937);
|
||||||
|
hBitmap = CreateDIBSection(hdcDisplay, (const BITMAPINFO *)&bmih,
|
||||||
|
DIB_RGB_COLORS, &bits, NULL, 0);
|
||||||
|
hOldBitmap = SelectObject(hdcBitmap, hBitmap);
|
||||||
|
|
||||||
|
hdcMetafile = CreateEnhMetaFileA(hdcBitmap, NULL, NULL, NULL);
|
||||||
|
ok( hdcMetafile != 0, "CreateEnhMetaFileA failed\n" );
|
||||||
|
|
||||||
|
/* First fill the bitmap DC with something recognizable, like BLACKNESS */
|
||||||
|
ret = BitBlt(hdcBitmap, 0, 0, BMP_DIM, BMP_DIM, 0, 0, 0, BLACKNESS);
|
||||||
|
ok( ret, "BitBlt(BLACKNESS) failed\n" );
|
||||||
|
|
||||||
|
ret = BitBlt(hdcMetafile, 0, 0, BMP_DIM, BMP_DIM, hdcBitmap, 0, 0, SRCCOPY);
|
||||||
|
ok( ret, "BitBlt(SRCCOPY) failed\n" );
|
||||||
|
ret = BitBlt(hdcMetafile, 0, 0, BMP_DIM, BMP_DIM, 0, 0, 0, WHITENESS);
|
||||||
|
ok( ret, "BitBlt(WHITENESS) failed\n" );
|
||||||
|
|
||||||
|
hMetafile = CloseEnhMetaFile(hdcMetafile);
|
||||||
|
ok( hMetafile != 0, "CloseEnhMetaFile failed\n" );
|
||||||
|
|
||||||
|
if(compare_emf_bits(hMetafile, EMF_BITBLT, sizeof(EMF_BITBLT),
|
||||||
|
"emf_BitBlt", FALSE) != 0)
|
||||||
|
{
|
||||||
|
dump_emf_bits(hMetafile, "emf_BitBlt");
|
||||||
|
dump_emf_records(hMetafile, "emf_BitBlt");
|
||||||
|
}
|
||||||
|
|
||||||
|
SelectObject(hdcBitmap, hOldBitmap);
|
||||||
|
DeleteObject(hBitmap);
|
||||||
|
DeleteDC(hdcBitmap);
|
||||||
|
DeleteDC(hdcDisplay);
|
||||||
|
#undef BMP_DIM
|
||||||
|
}
|
||||||
|
|
||||||
/* Test a blank metafile. May be used as a template for new tests. */
|
/* Test a blank metafile. May be used as a template for new tests. */
|
||||||
|
|
||||||
static void test_mf_Blank(void)
|
static void test_mf_Blank(void)
|
||||||
|
@ -2628,6 +2749,7 @@ START_TEST(metafile)
|
||||||
/* For enhanced metafiles (enhmfdrv) */
|
/* For enhanced metafiles (enhmfdrv) */
|
||||||
test_ExtTextOut();
|
test_ExtTextOut();
|
||||||
test_SaveDC();
|
test_SaveDC();
|
||||||
|
test_emf_BitBlt();
|
||||||
|
|
||||||
/* For win-format metafiles (mfdrv) */
|
/* For win-format metafiles (mfdrv) */
|
||||||
test_mf_SaveDC();
|
test_mf_SaveDC();
|
||||||
|
|
Loading…
Reference in New Issue