From 87e878a699343b40cccc5ce46a57d10b774dc3fd Mon Sep 17 00:00:00 2001 From: Felix Nawothnig Date: Fri, 19 Aug 2005 13:58:34 +0000 Subject: [PATCH] Fix GetDIBits to retrieve RGB 555 as 16bit BI_RGB and RGB 565 as 16bit BI_BITFIELDS. --- dlls/gdi/dib.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/dlls/gdi/dib.c b/dlls/gdi/dib.c index c8045a409f8..cfbd64a9ccb 100644 --- a/dlls/gdi/dib.c +++ b/dlls/gdi/dib.c @@ -960,12 +960,30 @@ INT WINAPI GetDIBits( info->bmiHeader.biWidth = bmp->bitmap.bmWidth; info->bmiHeader.biHeight = bmp->bitmap.bmHeight; info->bmiHeader.biPlanes = 1; - info->bmiHeader.biBitCount = bmp->bitmap.bmBitsPixel; info->bmiHeader.biSizeImage = DIB_GetDIBImageBytes( bmp->bitmap.bmWidth, bmp->bitmap.bmHeight, bmp->bitmap.bmBitsPixel ); - info->bmiHeader.biCompression = 0; + switch(bmp->bitmap.bmBitsPixel) + { + case 15: + info->bmiHeader.biBitCount = 16; + info->bmiHeader.biCompression = BI_RGB; + break; + + case 16: + info->bmiHeader.biBitCount = 16; + info->bmiHeader.biCompression = BI_BITFIELDS; + ((PDWORD)info->bmiColors)[0] = 0xf800; + ((PDWORD)info->bmiColors)[1] = 0x07e0; + ((PDWORD)info->bmiColors)[2] = 0x001f; + break; + + default: + info->bmiHeader.biBitCount = bmp->bitmap.bmBitsPixel; + info->bmiHeader.biCompression = BI_RGB; + break; + } info->bmiHeader.biXPelsPerMeter = 0; info->bmiHeader.biYPelsPerMeter = 0; info->bmiHeader.biClrUsed = 0; -- 2.11.4.GIT