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?r... ============================================================================== --- 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(); + } + }