changeset 32549:73521ea30674

(pbm_format): Add :foreground and :background keywords. (PBM_FOREGROUND, PBM_BACKGROUND): New enumerators. (xbm_load): Recoghnize foreground and background color specifications.
author Gerd Moellmann <gerd@gnu.org>
date Mon, 16 Oct 2000 19:57:04 +0000
parents da8bc20ce19a
children e870f094c5cc
files src/xfns.c
diffstat 1 files changed, 19 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/xfns.c	Mon Oct 16 19:21:17 2000 +0000
+++ b/src/xfns.c	Mon Oct 16 19:57:04 2000 +0000
@@ -7907,6 +7907,8 @@
   PBM_ALGORITHM,
   PBM_HEURISTIC_MASK,
   PBM_MASK,
+  PBM_FOREGROUND,
+  PBM_BACKGROUND,
   PBM_LAST
 };
 
@@ -7923,7 +7925,9 @@
   {":relief",		IMAGE_INTEGER_VALUE,			0},
   {":algorithm",	IMAGE_DONT_CHECK_VALUE_TYPE,		0},
   {":heuristic-mask",	IMAGE_DONT_CHECK_VALUE_TYPE,		0},
-  {":mask",		IMAGE_DONT_CHECK_VALUE_TYPE,		0}
+  {":mask",		IMAGE_DONT_CHECK_VALUE_TYPE,		0},
+  {":foreground",	IMAGE_STRING_VALUE,			0},
+  {":background",	IMAGE_STRING_VALUE,			0}
 };
 
 /* Structure describing the image type `pbm'.  */
@@ -8112,6 +8116,19 @@
   if (type == PBM_MONO)
     {
       int c = 0, g;
+      struct image_keyword fmt[PBM_LAST];
+      unsigned long fg = FRAME_FOREGROUND_PIXEL (f);
+      unsigned long bg = FRAME_BACKGROUND_PIXEL (f);
+
+      /* Parse the image specification.  */
+      bcopy (pbm_format, fmt, sizeof fmt);
+      parse_image_spec (img->spec, fmt, PBM_LAST, Qpbm);
+      
+      /* Get foreground and background colors, maybe allocate colors.  */
+      if (fmt[PBM_FOREGROUND].count)
+	fg = x_alloc_image_color (f, img, fmt[PBM_FOREGROUND].value, fg);
+      if (fmt[PBM_BACKGROUND].count)
+	bg = x_alloc_image_color (f, img, fmt[PBM_BACKGROUND].value, bg);
       
       for (y = 0; y < height; ++y)
 	for (x = 0; x < width; ++x)
@@ -8126,9 +8143,7 @@
 	    else
 	      g = pbm_scan_number (&p, end);
 
-	    XPutPixel (ximg, x, y, (g
-				    ? FRAME_FOREGROUND_PIXEL (f)
-				    : FRAME_BACKGROUND_PIXEL (f)));
+	    XPutPixel (ximg, x, y, g ? fg : bg);
 	  }
     }
   else