Module: wine Branch: master Commit: fd8746b43ce24e209dd22c0bb1a4fe3ea38720a6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=fd8746b43ce24e209dd22c0bb1...
Author: Michael Karcher wine@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",