From c99e966e79803480c02210b9c43682f096f4e7f6 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Mon, 19 Apr 2010 17:52:56 +0000 Subject: [PATCH] Patch by Jerome Gardou: add a bunch of tests for NtGdiBitBlt svn path=/trunk/; revision=46946 --- .../apitests/w32knapi/ntgdi/NtGdiBitBlt.c | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/rostests/apitests/w32knapi/ntgdi/NtGdiBitBlt.c b/rostests/apitests/w32knapi/ntgdi/NtGdiBitBlt.c index 14b911457e7..d2821670a74 100644 --- a/rostests/apitests/w32knapi/ntgdi/NtGdiBitBlt.c +++ b/rostests/apitests/w32knapi/ntgdi/NtGdiBitBlt.c @@ -3,6 +3,10 @@ INT Test_NtGdiBitBlt(PTESTINFO pti) { BOOL bRet; + HDC hdc1, hdc2; + HBITMAP hbmp1, hOldBmp1, hbmp2, hOldBmp2; + DWORD bytes1[4] = {0x00ff0000, 0x0000ff00, 0x000000ff, 0x00ffffff}; + DWORD bytes2[4] = {0x00000000, 0x0000000, 0x0000000, 0x00000000}; /* Test NULL dc */ SetLastError(ERROR_SUCCESS); @@ -15,6 +19,71 @@ Test_NtGdiBitBlt(PTESTINFO pti) bRet = NtGdiBitBlt((HDC)0x123456, 0, 0, 10, 10, (HDC)0x123456, 10, 10, SRCCOPY, 0, 0); TEST(bRet == FALSE); TEST(GetLastError() == ERROR_SUCCESS); + + hdc1 = NtGdiCreateCompatibleDC(0); + TEST(hdc1 != NULL); + + hdc2 = NtGdiCreateCompatibleDC(0); + TEST(hdc2 != NULL); + + hbmp1 = NtGdiCreateBitmap(2, 2, 1, 32, (LPBYTE)bytes1 ); + TEST(hbmp1 != NULL); + hOldBmp1 = SelectObject(hdc1, hbmp1); + + hbmp2 = NtGdiCreateBitmap(2, 2, 1, 32, (LPBYTE)bytes2 ); + TEST(hbmp2 != NULL); + hOldBmp2 = SelectObject(hdc2, hbmp2); + + bRet = NtGdiBitBlt(hdc2, 1, 1, -2, -2, hdc1, 0, 0, SRCCOPY, 0, 0); + TEST(bRet == TRUE); + TEST(GetLastError() == ERROR_SUCCESS); + TESTX(NtGdiGetPixel(hdc2, 0, 0) == 0x00000000, "Pixel[0][0] 0x%08x\n", (UINT)NtGdiGetPixel(hdc2, 0, 0)); + TESTX(NtGdiGetPixel(hdc2, 0, 1) == 0x00000000, "Pixel[0][1] 0x%08x\n", (UINT)NtGdiGetPixel(hdc2, 0, 1)); + TESTX(NtGdiGetPixel(hdc2, 1, 0) == 0x00000000, "Pixel[1][0] 0x%08x\n", (UINT)NtGdiGetPixel(hdc2, 1, 0)); + TESTX(NtGdiGetPixel(hdc2, 1, 1) == 0x00000000, "Pixel[1][1] 0x%08x\n", (UINT)NtGdiGetPixel(hdc2, 1, 1)); + + bRet = NtGdiBitBlt(hdc2, 1, 1, -2, -2, hdc1, 1, 1, SRCCOPY, 0, 0); + TEST(bRet == TRUE); + TEST(GetLastError() == ERROR_SUCCESS); + TESTX(NtGdiGetPixel(hdc2, 0, 0) == 0x000000ff, "Pixel[0][0] 0x%08x\n", (UINT)NtGdiGetPixel(hdc2, 0, 0)); + TESTX(NtGdiGetPixel(hdc2, 0, 1) == 0x00000000, "Pixel[0][1] 0x%08x\n", (UINT)NtGdiGetPixel(hdc2, 0, 1)); + TESTX(NtGdiGetPixel(hdc2, 1, 0) == 0x00000000, "Pixel[1][0] 0x%08x\n", (UINT)NtGdiGetPixel(hdc2, 1, 0)); + TESTX(NtGdiGetPixel(hdc2, 1, 1) == 0x00000000, "Pixel[1][1] 0x%08x\n", (UINT)NtGdiGetPixel(hdc2, 1, 1)); + + NtGdiSetPixel(hdc2, 0, 0, 0x00000000); + + bRet = NtGdiBitBlt(hdc2, 1, 1, -2, -2, hdc1, 0, 0, SRCCOPY, 0, 0); + TEST(bRet == TRUE); + TEST(GetLastError() == ERROR_SUCCESS); + TESTX(NtGdiGetPixel(hdc2, 0, 0) == 0x00000000, "Pixel[0][0] 0x%08x\n", (UINT)NtGdiGetPixel(hdc2, 0, 0)); + TESTX(NtGdiGetPixel(hdc2, 0, 1) == 0x00000000, "Pixel[0][1] 0x%08x\n", (UINT)NtGdiGetPixel(hdc2, 0, 1)); + TESTX(NtGdiGetPixel(hdc2, 1, 0) == 0x00000000, "Pixel[1][0] 0x%08x\n", (UINT)NtGdiGetPixel(hdc2, 1, 0)); + TESTX(NtGdiGetPixel(hdc2, 1, 1) == 0x00000000, "Pixel[1][1] 0x%08x\n", (UINT)NtGdiGetPixel(hdc2, 1, 1)); + + bRet = NtGdiBitBlt(hdc2, 1, 1, -2, -2, hdc1, 2, 2, SRCCOPY, 0, 0); + TEST(bRet == TRUE); + TEST(GetLastError() == ERROR_SUCCESS); + TESTX(NtGdiGetPixel(hdc2, 0, 0) == 0x00ffffff, "Pixel[0][0] 0x%08x\n", (UINT)NtGdiGetPixel(hdc2, 0, 0)); + TESTX(NtGdiGetPixel(hdc2, 0, 1) == 0x00000000, "Pixel[0][1] 0x%08x\n", (UINT)NtGdiGetPixel(hdc2, 0, 1)); + TESTX(NtGdiGetPixel(hdc2, 1, 0) == 0x00000000, "Pixel[1][0] 0x%08x\n", (UINT)NtGdiGetPixel(hdc2, 1, 0)); + TESTX(NtGdiGetPixel(hdc2, 1, 1) == 0x00000000, "Pixel[1][1] 0x%08x\n", (UINT)NtGdiGetPixel(hdc2, 1, 1)); + + bRet = NtGdiBitBlt(hdc2, 2, 2, -2, -2, hdc1, 2, 2, SRCCOPY, 0, 0); + TEST(bRet == TRUE); + TEST(GetLastError() == ERROR_SUCCESS); + TESTX(NtGdiGetPixel(hdc2, 0, 0) == 0x000000ff, "Pixel[0][0] 0x%08x\n", (UINT)NtGdiGetPixel(hdc2, 0, 0)); + TESTX(NtGdiGetPixel(hdc2, 0, 1) == 0x00ff0000, "Pixel[0][1] 0x%08x\n", (UINT)NtGdiGetPixel(hdc2, 0, 1)); + TESTX(NtGdiGetPixel(hdc2, 1, 0) == 0x0000ff00, "Pixel[1][0] 0x%08x\n", (UINT)NtGdiGetPixel(hdc2, 1, 0)); + TESTX(NtGdiGetPixel(hdc2, 1, 1) == 0x00ffffff, "Pixel[1][1] 0x%08x\n", (UINT)NtGdiGetPixel(hdc2, 1, 1)); + + SelectObject(hdc2, hOldBmp2); + SelectObject(hdc1, hOldBmp1); + + DeleteObject(hbmp2); + DeleteObject(hbmp1); + + DeleteDC(hdc1); + DeleteDC(hdc2); return APISTATUS_NORMAL; }