* src/termhooks.c (query_frame_background_color): New terminal hook.
* src/image.c (image_query_frame_background_color): Remove. Use the
terminal hook instead.
* src/nsterm.m:
* src/w32term.c:
* src/xterm.c: Implement and set the new terminal hook.
return img->background_transparent;
}
-#if defined (HAVE_PNG) || defined (HAVE_IMAGEMAGICK) || defined (HAVE_RSVG)
-
-/* Store F's background color into *BGCOLOR. */
-static void
-image_query_frame_background_color (struct frame *f, XColor *bgcolor)
-{
-#ifndef HAVE_NS
- bgcolor->pixel = FRAME_BACKGROUND_PIXEL (f);
- x_query_color (f, bgcolor);
-#else
- ns_query_color (FRAME_BACKGROUND_COLOR (f), bgcolor, 1);
-#endif
-}
-
-#endif /* HAVE_PNG || HAVE_IMAGEMAGICK || HAVE_RSVG */
-
/***********************************************************************
Helper functions for X image types
***********************************************************************/
&color,
false,
false)
- : (image_query_frame_background_color (f, &color), true))
+ : (FRAME_TERMINAL (f)->query_frame_background_color (f, &color),
+ true))
/* The user specified `:background', use that. */
{
int shift = bit_depth == 16 ? 0 : 8;
&bgcolor,
false,
false))
- image_query_frame_background_color (f, &bgcolor);
+ FRAME_TERMINAL (f)->query_frame_background_color (f, &bgcolor);
bg_wand = NewPixelWand ();
PixelSetRed (bg_wand, (double) bgcolor.red / 65535);
&background,
false,
false))
- image_query_frame_background_color (f, &background);
+ FRAME_TERMINAL (f)->query_frame_background_color (f, &background);
/* SVG pixmaps specify transparency in the last byte, so right
shift 8 bits to get rid of it, since emacs doesn't support
return 1;
}
+static void
+ns_query_frame_background_color (struct frame *f, XColor *bgcolor)
+/* --------------------------------------------------------------------------
+ External (hook): Store F's background color into *BGCOLOR
+ -------------------------------------------------------------------------- */
+{
+ ns_query_color (FRAME_BACKGROUND_COLOR (f), bgcolor, true);
+}
static void
ns_set_frame_alpha (struct frame *f)
terminal->read_socket_hook = ns_read_socket;
terminal->frame_up_to_date_hook = ns_frame_up_to_date;
terminal->defined_color_hook = ns_defined_color;
+ terminal->query_frame_background_color = ns_query_frame_background_color;
terminal->mouse_position_hook = ns_mouse_position;
terminal->get_focus_frame = ns_get_focus_frame;
terminal->focus_frame_hook = ns_focus_frame;
*/
+ /* This hook is called to store the frame's background color into
+ BGCOLOR. */
+ void (*query_frame_background_color) (struct frame *f, XColor *bgcolor);
+
#if defined (HAVE_X_WINDOWS) || defined (HAVE_NTGUI)
/* On frame F, translate pixel colors to RGB values for the NCOLORS
colors in COLORS. Use cached information, if available. */
}
}
+/* Store F's background color into *BGCOLOR. */
+
+static void
+w32_query_frame_background_color (struct frame *f, XColor *bgcolor)
+{
+ bgcolor->pixel = FRAME_BACKGROUND_PIXEL (f);
+ w32_query_colors (f, bgcolor, 1);
+}
/* Set up the foreground color for drawing relief lines of glyph
string S. RELIEF is a pointer to a struct relief containing the GC
terminal->read_socket_hook = w32_read_socket;
terminal->frame_up_to_date_hook = w32_frame_up_to_date;
terminal->defined_color_hook = w32_defined_color;
+ terminal->query_frame_background_color = w32_query_frame_background_color;
terminal->query_colors = w32_query_colors;
terminal->mouse_position_hook = w32_mouse_position;
terminal->get_focus_frame = w32_get_focus_frame;
XQueryColors (FRAME_X_DISPLAY (f), FRAME_X_COLORMAP (f), colors, ncolors);
}
+/* Store F's background color into *BGCOLOR. */
+
+static void
+x_query_frame_background_color (struct frame *f, XColor *bgcolor)
+{
+ bgcolor->pixel = FRAME_BACKGROUND_PIXEL (f);
+ x_query_colors (f, bgcolor, 1);
+}
/* On frame F, translate the color name to RGB values. Use cached
information, if possible.
terminal->frame_up_to_date_hook = XTframe_up_to_date;
terminal->buffer_flipping_unblocked_hook = XTbuffer_flipping_unblocked_hook;
terminal->defined_color_hook = x_defined_color;
+ terminal->query_frame_background_color = x_query_frame_background_color;
terminal->query_colors = x_query_colors;
terminal->mouse_position_hook = XTmouse_position;
terminal->get_focus_frame = x_get_focus_frame;