Alexandre Julliard : gdi32/tests: Add a test for alpha channel handling in StretchBlt.

Alexandre Julliard julliard at winehq.org
Tue Sep 20 13:08:36 CDT 2011


Module: wine
Branch: master
Commit: b6153354dd28c57fb1f92f85df1f1ba751794fc1
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=b6153354dd28c57fb1f92f85df1f1ba751794fc1

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Tue Sep 20 17:58:12 2011 +0200

gdi32/tests: Add a test for alpha channel handling in StretchBlt.

---

 dlls/gdi32/tests/bitmap.c |   34 +++++++++++++++++++++++++++++++++-
 1 files changed, 33 insertions(+), 1 deletions(-)

diff --git a/dlls/gdi32/tests/bitmap.c b/dlls/gdi32/tests/bitmap.c
index 14d7f7f..92d8181 100644
--- a/dlls/gdi32/tests/bitmap.c
+++ b/dlls/gdi32/tests/bitmap.c
@@ -2942,7 +2942,39 @@ static void test_StretchBlt(void)
     check_StretchBlt_stretch(hdcDst, hdcSrc, dstBuffer, srcBuffer,
                              0, 0, 2, 2, 1, 1, -2, -2, expected, expected, __LINE__);
 
-    /* Tidy up */
+    SelectObject(hdcSrc, oldSrc);
+    DeleteObject(bmpSrc);
+
+    biSrc.bmiHeader.biHeight = -2;
+    biSrc.bmiHeader.biBitCount = 24;
+    bmpSrc = CreateDIBSection(hdcScreen, &biSrc, DIB_RGB_COLORS, (void**)&srcBuffer, NULL, 0);
+    oldSrc = SelectObject(hdcSrc, bmpSrc);
+
+    expected[0] = 0xFEEDFACE, expected[1] = 0xCAFED00D;
+    expected[2] = 0x76543210, expected[3] = 0xFEDCBA98;
+    memcpy(dstBuffer, expected, 4 * sizeof(*dstBuffer));
+    StretchBlt(hdcSrc, 0, 0, 2, 2, hdcDst, 0, 0, 2, 2, SRCCOPY );
+    memset(dstBuffer, 0x55, 4 * sizeof(*dstBuffer));
+    StretchBlt(hdcDst, 0, 0, 2, 2, hdcSrc, 0, 0, 2, 2, SRCCOPY );
+    expected[0] = 0x00EDFACE, expected[1] = 0x00FED00D;
+    expected[2] = 0x00543210, expected[3] = 0x00DCBA98;
+    ok(!memcmp(dstBuffer, expected, 16),
+       "StretchBlt expected { %08X, %08X, %08X, %08X } got { %08X, %08X, %08X, %08X }\n",
+        expected[0], expected[1], expected[2], expected[3],
+        dstBuffer[0], dstBuffer[1], dstBuffer[2], dstBuffer[3] );
+
+    expected[0] = 0xFEEDFACE, expected[1] = 0xCAFED00D;
+    expected[2] = 0x76543210, expected[3] = 0xFEDCBA98;
+    memcpy(srcBuffer, expected, 4 * sizeof(*dstBuffer));
+    memset(dstBuffer, 0x55, 4 * sizeof(*dstBuffer));
+    StretchBlt(hdcDst, 0, 0, 2, 2, hdcSrc, 0, 0, 2, 2, SRCCOPY );
+    expected[0] = 0x00EDFACE, expected[1] = 0x00D00DFE;
+    expected[2] = 0x00543210, expected[3] = 0x00BA9876;
+    ok(!memcmp(dstBuffer, expected, 16),
+       "StretchBlt expected { %08X, %08X, %08X, %08X } got { %08X, %08X, %08X, %08X }\n",
+        expected[0], expected[1], expected[2], expected[3],
+        dstBuffer[0], dstBuffer[1], dstBuffer[2], dstBuffer[3] );
+
     SelectObject(hdcSrc, oldSrc);
     DeleteObject(bmpSrc);
     DeleteDC(hdcSrc);




More information about the wine-cvs mailing list