Ziqing Hui : comctl32/tests: Add a 4x4 bitmap for ImageList_DrawIndirect tests.

Alexandre Julliard julliard at winehq.org
Mon Mar 9 17:42:34 CDT 2020


Module: wine
Branch: master
Commit: 7a1727004ba1aebf4af9fd975ed326c1a7e6b3cb
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=7a1727004ba1aebf4af9fd975ed326c1a7e6b3cb

Author: Ziqing Hui <zhui at codeweavers.com>
Date:   Fri Mar  6 17:57:43 2020 +0800

comctl32/tests: Add a 4x4 bitmap for ImageList_DrawIndirect tests.

Signed-off-by: Ziqing Hui <zhui at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/comctl32/tests/imagelist.c | 34 +++++++++++++++++++++++++++++++++-
 1 file changed, 33 insertions(+), 1 deletion(-)

diff --git a/dlls/comctl32/tests/imagelist.c b/dlls/comctl32/tests/imagelist.c
index 24b33f54d7..106ae92ffd 100644
--- a/dlls/comctl32/tests/imagelist.c
+++ b/dlls/comctl32/tests/imagelist.c
@@ -77,6 +77,7 @@ static void (WINAPI *pImageList_EndDrag)(void);
 static INT (WINAPI *pImageList_GetImageCount)(HIMAGELIST);
 static BOOL (WINAPI *pImageList_SetDragCursorImage)(HIMAGELIST, int, int, int);
 static BOOL (WINAPI *pImageList_GetIconSize)(HIMAGELIST, int *, int *);
+static BOOL (WINAPI *pImageList_SetIconSize)(HIMAGELIST, INT, INT);
 static BOOL (WINAPI *pImageList_Remove)(HIMAGELIST, int);
 static INT (WINAPI *pImageList_ReplaceIcon)(HIMAGELIST, int, HICON);
 static BOOL (WINAPI *pImageList_Replace)(HIMAGELIST, int, HBITMAP, HBITMAP);
@@ -1487,12 +1488,17 @@ static void test_ImageList_DrawIndirect(void)
     const UINT32 bits_alpha[] =       { 0x89ABCDEF, 0x89ABCDEF };
     const UINT32 bits_transparent[] = { 0x00ABCDEF, 0x89ABCDEF };
 
+    const UINT32 bits_4x4[] =  { 0x00ABCDEF, 0x89ABCDEF, 0xFFABCDEF, 0xFEDCBA98,
+                                 0x00345678, 0x12345678, 0xFF345678, 0x87654321,
+                                 0x00987654, 0xBA987654, 0xFF987654, 0x456789AB,
+                                 0x00000000, 0xFF000000, 0xFFFFFFFF, 0x00FFFFFF };
+
     HIMAGELIST himl = NULL;
     int ret;
     HDC hdcDst = NULL;
     HBITMAP hbmOld = NULL, hbmDst = NULL;
     HBITMAP hbmMask = NULL, hbmInverseMask = NULL;
-    HBITMAP hbmImage = NULL, hbmAlphaImage = NULL, hbmTransparentImage = NULL;
+    HBITMAP hbmImage = NULL, hbmAlphaImage = NULL, hbmTransparentImage = NULL, hbm4x4 = NULL;
     int iImage = -1, iAlphaImage = -1, iTransparentImage = -1;
     UINT32 *bits = 0;
     UINT32 maskBits = 0x00000000, inverseMaskBits = 0xFFFFFFFF;
@@ -1594,6 +1600,29 @@ static void test_ImageList_DrawIndirect(void)
     check_ImageList_DrawIndirect_broken(hdcDst, himl, bits, iAlphaImage, ILD_NORMAL, ILS_ALPHA, 127, 0x00E9F2FB, 0x00AEB7C0, __LINE__);
     todo_wine check_ImageList_DrawIndirect_broken(hdcDst, himl, bits, iAlphaImage, ILD_NORMAL, ILS_NORMAL, 127, 0x00E9F2FB, 0x00D3E5F7, __LINE__);
 
+    /* 4x4 bitmap tests */
+    SelectObject(hdcDst, hbmOld);
+    DeleteObject(hbmDst);
+    bitmapInfo.bmiHeader.biWidth = 4;
+    bitmapInfo.bmiHeader.biHeight = -4;
+    hbmDst = CreateDIBSection(hdcDst, &bitmapInfo, DIB_RGB_COLORS, (void**)&bits, NULL, 0);
+    ok (hbmDst && bits, "CreateDIBSection failed to return a valid bitmap and buffer\n");
+    if (!hbmDst || !bits) goto cleanup;
+    SelectObject(hdcDst, hbmDst);
+
+    hbm4x4 = create_test_bitmap(hdcDst, 4, 4, 32, bits_4x4);
+    if (!hbm4x4) goto cleanup;
+
+    ret = pImageList_SetIconSize(himl, 4, 4);
+    ok(ret, "ImageList_SetIconSize failed\n");
+    if (!ret) goto cleanup;
+
+    ret = pImageList_Add(himl, hbm4x4, NULL);
+    ok(ret != -1, "ImageList_Add failed\n");
+    if(ret == -1) goto cleanup;
+
+    check_ImageList_DrawIndirect_grayscale(hdcDst, himl, bits, bits_4x4, 0, 4, 4, __LINE__);
+
 cleanup:
 
     if(hbmOld)
@@ -1614,6 +1643,8 @@ cleanup:
         DeleteObject(hbmAlphaImage);
     if(hbmTransparentImage)
         DeleteObject(hbmTransparentImage);
+    if(hbm4x4)
+        DeleteObject(hbm4x4);
 
     if(himl)
     {
@@ -2509,6 +2540,7 @@ static void init_functions(void)
     X(ImageList_GetImageCount);
     X(ImageList_SetDragCursorImage);
     X(ImageList_GetIconSize);
+    X(ImageList_SetIconSize);
     X(ImageList_Remove);
     X(ImageList_ReplaceIcon);
     X(ImageList_Replace);




More information about the wine-cvs mailing list