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