]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix SVG colors (bug#56182)
authorAlan Third <alan@idiocy.org>
Mon, 11 Sep 2023 18:58:14 +0000 (19:58 +0100)
committerAlan Third <alan@idiocy.org>
Wed, 13 Sep 2023 19:19:44 +0000 (20:19 +0100)
* src/image.c (svg_load_image): Reverse the R and B bytes in the
Windows colors before using them to generate the SVG.

src/image.c

index 8ee802a9d62aef4bddd37f2c27905f7d99314064..c717ac88dca42ffbb019557a10c7d5d93ebd8098 100644 (file)
@@ -11423,6 +11423,18 @@ svg_load_image (struct frame *f, struct image *img, char *contents,
         img->background_valid = 1;
       }
 
+#if HAVE_NTGUI
+    /* Windows stores the image colours in BGR format, and SVG expects
+       them in RGB.  */
+    foreground = (foreground & 0x0000FF) << 16
+      | (foreground & 0xFF0000) >> 16
+      | (foreground & 0x00FF00);
+
+    background = (background & 0x0000FF) << 16
+      | (background & 0xFF0000) >> 16
+      | (background & 0x00FF00);
+#endif
+
     wrapped_contents = xmalloc (buffer_size);
 
     if (buffer_size <= snprintf (wrapped_contents, buffer_size, wrapper,