# HG changeset patch # User Jason Rumney # Date 1196612289 0 # Node ID 558b3650d5dc084a5279f336f1e41d4030c3ae8d # Parent fbf1ae5bfff7d3e6f5be5aa048331b132caf1658 (xbm_load) [WINDOWSNT]: Shuffle the bits of directly specified XBMs. diff -r fbf1ae5bfff7 -r 558b3650d5dc src/image.c --- a/src/image.c Sun Dec 02 04:09:52 2007 +0000 +++ b/src/image.c Sun Dec 02 16:18:09 2007 +0000 @@ -3120,6 +3120,8 @@ release_frame_dc (f, hdc); old_prev = SelectObject (old_img_dc, img->pixmap); new_prev = SelectObject (new_img_dc, new_pixmap); + /* Windows convention for mono bitmaps is black = background, + white = foreground. */ SetTextColor (new_img_dc, background); SetBkColor (new_img_dc, foreground); @@ -3515,6 +3517,19 @@ else bits = XBOOL_VECTOR (data)->data; +#ifdef WINDOWSNT + { + char *invertedBits; + int nbytes, i; + /* Windows mono bitmaps are reversed compared with X. */ + invertedBits = bits; + nbytes = (img->width + BITS_PER_CHAR - 1) / BITS_PER_CHAR + * img->height; + bits = (char *) alloca(nbytes); + for (i = 0; i < nbytes; i++) + bits[i] = XBM_BIT_SHUFFLE (invertedBits[i]); + } +#endif /* Create the pixmap. */ Create_Pixmap_From_Bitmap_Data (f, img, bits,