Michael Karcher : gdi32: Fix palette of 1bpp DIB in GetDIBits.
Alexandre Julliard
julliard at winehq.org
Tue Jul 1 08:27:54 CDT 2008
Module: wine
Branch: master
Commit: fd8746b43ce24e209dd22c0bb1a4fe3ea38720a6
URL: http://source.winehq.org/git/wine.git/?a=commit;h=fd8746b43ce24e209dd22c0bb1a4fe3ea38720a6
Author: Michael Karcher <wine at mkarcher.dialup.fu-berlin.de>
Date: Sun Jun 29 13:30:01 2008 +0200
gdi32: Fix palette of 1bpp DIB in GetDIBits.
Windows always generates a black/white palette for 1 bit DIBs
generated from DDBs. Copying from the current palette only takes place
for color DDBs (not explicitly mentioned in MSDN), and only if depth
equal (MSDN states it, explicitly).
---
dlls/gdi32/dib.c | 6 ++++--
dlls/gdi32/tests/bitmap.c | 1 -
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/dlls/gdi32/dib.c b/dlls/gdi32/dib.c
index 46be0f0..677cda5 100644
--- a/dlls/gdi32/dib.c
+++ b/dlls/gdi32/dib.c
@@ -705,8 +705,10 @@ INT WINAPI GetDIBits(
for (i = 0; i < (1 << bpp); i++)
((WORD *)colorPtr)[i] = (WORD)i;
}
- else if(bpp >= bmp->bitmap.bmBitsPixel) {
- /* Generate the color map from the selected palette */
+ else if(bpp > 1 && bpp == bmp->bitmap.bmBitsPixel) {
+ /* For color DDBs in native depth (mono DDBs always have
+ a black/white palette):
+ Generate the color map from the selected palette */
PALETTEENTRY palEntry[256];
memset( palEntry, 0, sizeof(palEntry) );
diff --git a/dlls/gdi32/tests/bitmap.c b/dlls/gdi32/tests/bitmap.c
index 79f6003..9a7213c 100644
--- a/dlls/gdi32/tests/bitmap.c
+++ b/dlls/gdi32/tests/bitmap.c
@@ -1499,7 +1499,6 @@ static void test_GetDIBits(void)
"expected bmiColors[0] 0,0,0,0 - got %x %x %x %x\n",
bi->bmiColors[0].rgbRed, bi->bmiColors[0].rgbGreen,
bi->bmiColors[0].rgbBlue, bi->bmiColors[0].rgbReserved);
-todo_wine
ok(bi->bmiColors[1].rgbRed == 0xff && bi->bmiColors[1].rgbGreen == 0xff &&
bi->bmiColors[1].rgbBlue == 0xff && bi->bmiColors[1].rgbReserved == 0,
"expected bmiColors[0] 0xff,0xff,0xff,0 - got %x %x %x %x\n",
More information about the wine-cvs
mailing list