]> git.eshelyaron.com Git - emacs.git/commitdiff
(xbm_load) [WINDOWSNT]: Shuffle the bits of directly specified XBMs.
authorJason Rumney <jasonr@gnu.org>
Sun, 2 Dec 2007 16:18:47 +0000 (16:18 +0000)
committerJason Rumney <jasonr@gnu.org>
Sun, 2 Dec 2007 16:18:47 +0000 (16:18 +0000)
src/ChangeLog
src/image.c

index 90768f33c4c8083026780b8ea08418fbf74ff3c8..002c442b376c27aeea9bec0bcf65ae221aa92945 100644 (file)
@@ -1,3 +1,8 @@
+2007-12-02  Jason Rumney  <jasonr@gnu.org>
+
+       * image.c (xbm_load) [WINDOWSNT]: Shuffle the bits of directly
+       specified XBMs.
+
 2007-12-01  Richard Stallman  <rms@gnu.org>
 
        * xdisp.c (syms_of_xdisp) <scroll-conservatively>: Doc fix.
index 28214642c3adc35d64f45221254a2628dddb639b..a92578862f01fec20763cbdc9821bc86dd9c9f31 100644 (file)
@@ -3120,6 +3120,8 @@ convert_mono_to_color_image (f, img, foreground, background)
   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 @@ xbm_load (f, img)
          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,