Author: tkreuzer
Date: Mon Feb 28 18:01:12 2011
New Revision: 50937
URL:
http://svn.reactos.org/svn/reactos?rev=50937&view=rev
Log:
[GDI32_APITEST]
More tests for MaskBlt
Modified:
trunk/rostests/apitests/gdi32/MaskBlt.c
Modified: trunk/rostests/apitests/gdi32/MaskBlt.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/gdi32/MaskBlt.c?…
==============================================================================
--- trunk/rostests/apitests/gdi32/MaskBlt.c [iso-8859-1] (original)
+++ trunk/rostests/apitests/gdi32/MaskBlt.c [iso-8859-1] Mon Feb 28 18:01:12 2011
@@ -45,51 +45,104 @@
ok(ret == 1, "MaskBlt failed (%d)\n", ret);
ok (pjBitsDst[0] == 0xF0, "pjBitsDst[0] == 0x%x\n", pjBitsDst[0]);
-
-
}
-void Test_MaskBlt_RGBA()
+void Test_MaskBlt_16bpp()
+{
+ HDC hdcDst, hdcSrc;
+ BITMAPINFO bmi1 = {{sizeof(BITMAPINFOHEADER), 8, 1, 1, 1, BI_RGB, 0, 10, 10, 0,0}};
+ BITMAPINFO bmi32 = {{sizeof(BITMAPINFOHEADER), 8, 1, 1, 16, BI_RGB, 0, 10, 10, 0,0}};
+ HBITMAP hbmDst, hbmSrc, hbmMsk;
+ PUCHAR pjBitsMsk;
+ PUSHORT pusBitsDst, pusBitsSrc;
+ BOOL ret;
+
+ /* Create a dest dc and bitmap */
+ hdcDst = CreateCompatibleDC(NULL);
+ hbmDst = CreateDIBSection(hdcDst, &bmi32, DIB_RGB_COLORS, (PVOID*)&pusBitsDst,
NULL, 0);
+ SelectObject(hdcDst, hbmDst);
+
+ /* Create a source dc and bitmap */
+ hdcSrc = CreateCompatibleDC(NULL);
+ hbmSrc = CreateDIBSection(hdcSrc, &bmi32, DIB_RGB_COLORS, (PVOID*)&pusBitsSrc,
NULL, 0);
+ SelectObject(hdcSrc, hbmSrc);
+ ok(hdcSrc && hbmSrc, "\n");
+
+ /* Create a 1 bpp mask bitmap */
+ hbmMsk = CreateDIBSection(hdcDst, &bmi1, DIB_RGB_COLORS, (PVOID*)&pjBitsMsk,
NULL, 0);
+ ok(hbmMsk != 0, "CreateDIBSection failed\n");
+
+ /* Do the masking */
+ pusBitsDst[0] = 0x1234;
+ pusBitsDst[1] = 0x5678;
+ pusBitsSrc[0] = 0x4321;
+ pusBitsSrc[1] = 0x8765;
+ pjBitsMsk[0] = 0x80;
+ ret = MaskBlt(hdcDst, 0, 0, 8, 1, hdcSrc, 0, 0, hbmMsk, 0, 0, MAKEROP4(SRCCOPY,
0xAA0000));
+ ok(ret == 1, "MaskBlt failed (%d)\n", ret);
+ ok (pusBitsDst[0] == 0x4321, "pusBitsDst[0] == 0x%x\n", pusBitsDst[0]);
+ ok (pusBitsDst[1] == 0x5678, "pusBitsDst[0] == 0x%x\n", pusBitsDst[1]);
+
+ pusBitsDst[0] = 0x1234;
+ pusBitsDst[1] = 0x5678;
+ ret = MaskBlt(hdcDst, 0, 0, 8, 1, hdcSrc, 0, 0, hbmMsk, 0, 0, MAKEROP4(SRCPAINT,
MERGEPAINT));
+ ok(ret == 1, "MaskBlt failed (%d)\n", ret);
+ ok (pusBitsDst[0] == 0x5335, "pusBitsDst[0] == 0x%x\n", pusBitsDst[0]);
+ ok (pusBitsDst[1] == 0x7efa, "pusBitsDst[0] == 0x%x\n", pusBitsDst[1]);
+}
+
+void Test_MaskBlt_32bpp()
{
HDC hdcDst, hdcSrc;
BITMAPINFO bmi1 = {{sizeof(BITMAPINFOHEADER), 8, 1, 1, 1, BI_RGB, 0, 10, 10, 0,0}};
BITMAPINFO bmi32 = {{sizeof(BITMAPINFOHEADER), 8, 1, 1, 32, BI_RGB, 0, 10, 10, 0,0}};
HBITMAP hbmDst, hbmSrc, hbmMsk;
- PUCHAR pjBitsDst, pjBitsSrc, pjBitsMsk;
+ PUCHAR pjBitsMsk;
+ PULONG pulBitsDst, pulBitsSrc;
BOOL ret;
/* Create a dest dc and bitmap */
hdcDst = CreateCompatibleDC(NULL);
- hbmDst = CreateDIBSection(hdcDst, &bmi32, DIB_RGB_COLORS, (PVOID*)&pjBitsDst,
NULL, 0);
+ hbmDst = CreateDIBSection(hdcDst, &bmi32, DIB_RGB_COLORS, (PVOID*)&pulBitsDst,
NULL, 0);
SelectObject(hdcDst, hbmDst);
/* Create a source dc and bitmap */
hdcSrc = CreateCompatibleDC(NULL);
- hbmSrc = CreateDIBSection(hdcSrc, &bmi32, DIB_RGB_COLORS, (PVOID*)&pjBitsSrc,
NULL, 0);
+ hbmSrc = CreateDIBSection(hdcSrc, &bmi32, DIB_RGB_COLORS, (PVOID*)&pulBitsSrc,
NULL, 0);
SelectObject(hdcSrc, hbmSrc);
+ ok(hdcSrc && hbmSrc, "\n");
/* Create a 1 bpp mask bitmap */
hbmMsk = CreateDIBSection(hdcDst, &bmi1, DIB_RGB_COLORS, (PVOID*)&pjBitsMsk,
NULL, 0);
+ ok(hbmMsk != 0, "CreateDIBSection failed\n");
/* Do the masking */
- pjBitsDst[0] = 0xAA;
- pjBitsSrc[0] = 0xCC;
- pjBitsMsk[0] = 0xF0;
+ pulBitsDst[0] = 0x12345678;
+ pulBitsDst[1] = 0x9abcdef0;
+ pulBitsSrc[0] = 0x87684321;
+ pulBitsSrc[1] = 0x0fedcba9;
+ pjBitsMsk[0] = 0x80;
ret = MaskBlt(hdcDst, 0, 0, 8, 1, hdcSrc, 0, 0, hbmMsk, 0, 0, MAKEROP4(SRCCOPY,
0xAA0000));
ok(ret == 1, "MaskBlt failed (%d)\n", ret);
- ok (pjBitsDst[0] == 0xCA, "pjBitsDst[0] == 0x%x\n", pjBitsDst[0]);
+ ok (pulBitsDst[0] == 0x87684321, "pulBitsDst[0] == 0x%lx\n",
pulBitsDst[0]);
+ ok (pulBitsDst[1] == 0x9abcdef0, "pulBitsDst[0] == 0x%lx\n",
pulBitsDst[1]);
- pjBitsDst[0] = 0x00;
- pjBitsSrc[0] = 0xFF;
- pjBitsMsk[0] = 0xF0;
- ret = MaskBlt(hdcDst, 0, 0, 8, 1, hdcSrc, 0, 0, hbmMsk, 0, 0, MAKEROP4(SRCCOPY,
0xAA0000));
+ pulBitsDst[0] = 0x12345678;
+ pulBitsDst[1] = 0x9abcdef0;
+ ret = MaskBlt(hdcDst, 0, 0, 8, 1, hdcSrc, 0, 0, hbmMsk, 0, 0, MAKEROP4(SRCPAINT,
MERGEPAINT));
ok(ret == 1, "MaskBlt failed (%d)\n", ret);
- ok (pjBitsDst[0] == 0xF0, "pjBitsDst[0] == 0x%x\n", pjBitsDst[0]);
-
+ ok (pulBitsDst[0] == 0x977c5779, "pulBitsDst[0] == 0x%lx\n",
pulBitsDst[0]);
+ ok (pulBitsDst[1] == 0xfabefef6, "pulBitsDst[0] == 0x%lx\n",
pulBitsDst[1]);
}
START_TEST(MaskBlt)
{
Test_MaskBlt_1bpp();
+ switch (GetDeviceCaps(GetDC(NULL), BITSPIXEL))
+ {
+ case 16: Test_MaskBlt_16bpp();
+ case 32: Test_MaskBlt_32bpp();
+ }
+
}