ChangeSet ID: 21602 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard@winehq.org 2005/12/01 11:15:21
Modified files: dlls/x11drv : dib.c
Log message: Oldrich Jedlicka oldium.pro@seznam.cz Fix for the monochrome DIB with inverted colors.
Patch: http://cvs.winehq.org/patch.py?id=21602
Old revision New revision Changes Path 1.46 1.47 +10 -3 wine/dlls/x11drv/dib.c
Index: wine/dlls/x11drv/dib.c diff -u -p wine/dlls/x11drv/dib.c:1.46 wine/dlls/x11drv/dib.c:1.47 --- wine/dlls/x11drv/dib.c:1.46 1 Dec 2005 17:15:21 -0000 +++ wine/dlls/x11drv/dib.c 1 Dec 2005 17:15:21 -0000 @@ -896,19 +896,26 @@ static void X11DRV_DIB_GetImageBits_1( i notsupported: { BYTE* dstbyte; + BYTE neg = 0; unsigned long white = (1 << bmpImage->bits_per_pixel) - 1;
/* ==== any bmp format -> pal 1 dib ==== */ - WARN("from unknown %d bit bitmap (%lx,%lx,%lx) to 1 bit DIB\n", + if ((unsigned)colors[0].rgbRed+colors[0].rgbGreen+colors[0].rgbBlue >= + (unsigned)colors[1].rgbRed+colors[1].rgbGreen+colors[1].rgbBlue ) + neg = 1; + + WARN("from unknown %d bit bitmap (%lx,%lx,%lx) to 1 bit DIB, " + "%s color mapping\n", bmpImage->bits_per_pixel, bmpImage->red_mask, - bmpImage->green_mask, bmpImage->blue_mask ); + bmpImage->green_mask, bmpImage->blue_mask, + neg?"negative":"direct" );
for (h=lines-1; h>=0; h--) { BYTE dstval; dstbyte=dstbits; dstval=0; for (x=0; x<width; x++) { - dstval|=(XGetPixel( bmpImage, x, h) >= white) << (7 - (x&7)); + dstval|=((XGetPixel( bmpImage, x, h) >= white) ^ neg) << (7 - (x&7)); if ((x&7)==7) { *dstbyte++=dstval; dstval=0;