From: Esme Povirk <esme@codeweavers.com> --- dlls/gdiplus/tests/image.c | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/dlls/gdiplus/tests/image.c b/dlls/gdiplus/tests/image.c index 39b48d65637..011bc116cd8 100644 --- a/dlls/gdiplus/tests/image.c +++ b/dlls/gdiplus/tests/image.c @@ -308,9 +308,10 @@ static void test_FromGdiDib(void) { GpBitmap *bm; GpStatus stat; - BYTE buff[400]; + BYTE buff[600]; BYTE rbmi[sizeof(BITMAPV5HEADER)+256*sizeof(RGBQUAD)]; BITMAPINFO *bmi = (BITMAPINFO*)rbmi; + BITMAPV4HEADER *bm4h = (BITMAPV4HEADER*)rbmi; BITMAPCOREINFO *bmci = (BITMAPCOREINFO*)rbmi; bm = NULL; @@ -355,6 +356,10 @@ static void test_FromGdiDib(void) GdipDisposeImage((GpImage*)bm); } + bmi->bmiHeader.biBitCount = 48; + stat = GdipCreateBitmapFromGdiDib(bmi, buff, &bm); + expect(InvalidParameter, stat); + bmi->bmiHeader.biBitCount = 24; stat = GdipCreateBitmapFromGdiDib(bmi, buff, &bm); expect(Ok, stat); @@ -445,6 +450,34 @@ static void test_FromGdiDib(void) stat = GdipCreateBitmapFromGdiDib(bmi, buff, &bm); expect(InvalidParameter, stat); + bm4h->bV4BitCount = 16; + bm4h->bV4V4Compression = BI_BITFIELDS; + bm4h->bV4RedMask = 0x7c00; + bm4h->bV4GreenMask = 0x3e0; + bm4h->bV4BlueMask = 0x1f; + stat = GdipCreateBitmapFromGdiDib(bmi, buff, &bm); + expect(Ok, stat); + ok(NULL != bm, "Expected bitmap to be initialized\n"); + if (stat == Ok) + { + check_bitmap_bits(bm, 10, 10, -20, PixelFormat16bppRGB555, &buff[20*9], TRUE); + + GdipDisposeImage((GpImage*)bm); + } + + bm4h->bV4RedMask = 0xf800; + bm4h->bV4GreenMask = 0x7e0; + bm4h->bV4BlueMask = 0x1f; + stat = GdipCreateBitmapFromGdiDib(bmi, buff, &bm); + expect(Ok, stat); + ok(NULL != bm, "Expected bitmap to be initialized\n"); + if (stat == Ok) + { + check_bitmap_bits(bm, 10, 10, -20, PixelFormat16bppRGB565, &buff[20*9], TRUE); + + GdipDisposeImage((GpImage*)bm); + } + bmci->bmciHeader.bcSize = sizeof(BITMAPCOREHEADER); bmci->bmciHeader.bcWidth = 10; bmci->bmciHeader.bcHeight = 10; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10652