summaryrefslogtreecommitdiff
path: root/src/xfaces.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/xfaces.c')
-rw-r--r--src/xfaces.c58
1 files changed, 19 insertions, 39 deletions
diff --git a/src/xfaces.c b/src/xfaces.c
index 3f627d3843d..e6aba0747d0 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -898,11 +898,11 @@ tty_lookup_color (struct frame *f, Lisp_Object color, XColor *tty_color,
return false;
}
-/* A version of defined_color for non-X frames. */
+/* An implementation of defined_color_hook for tty frames. */
-static bool
+bool
tty_defined_color (struct frame *f, const char *color_name,
- XColor *color_def, bool alloc)
+ XColor *color_def, bool alloc, bool _makeIndex)
{
bool status = true;
@@ -929,36 +929,6 @@ tty_defined_color (struct frame *f, const char *color_name,
return status;
}
-
-/* Decide if color named COLOR_NAME is valid for the display
- associated with the frame F; if so, return the rgb values in
- COLOR_DEF. If ALLOC, allocate a new colormap cell.
-
- This does the right thing for any type of frame. */
-
-static bool
-defined_color (struct frame *f, const char *color_name, XColor *color_def,
- bool alloc)
-{
- if (!FRAME_WINDOW_P (f))
- return tty_defined_color (f, color_name, color_def, alloc);
-#ifdef HAVE_X_WINDOWS
- else if (FRAME_X_P (f))
- return x_defined_color (f, color_name, color_def, alloc);
-#endif
-#ifdef HAVE_NTGUI
- else if (FRAME_W32_P (f))
- return w32_defined_color (f, color_name, color_def, alloc);
-#endif
-#ifdef HAVE_NS
- else if (FRAME_NS_P (f))
- return ns_defined_color (f, color_name, color_def, alloc, true);
-#endif
- else
- emacs_abort ();
-}
-
-
/* Given the index IDX of a tty color on frame F, return its name, a
Lisp string. */
@@ -1003,7 +973,8 @@ face_color_gray_p (struct frame *f, const char *color_name)
XColor color;
bool gray_p;
- if (defined_color (f, color_name, &color, false))
+ if (FRAME_TERMINAL (f)->defined_color_hook
+ (f, color_name, &color, false, true))
gray_p = (/* Any color sufficiently close to black counts as gray. */
(color.red < 5000 && color.green < 5000 && color.blue < 5000)
||
@@ -1043,7 +1014,7 @@ face_color_supported_p (struct frame *f, const char *color_name,
&& face_color_gray_p (f, color_name)))
:
#endif
- tty_defined_color (f, color_name, &not_used, false);
+ tty_defined_color (f, color_name, &not_used, false, false);
}
@@ -1087,9 +1058,10 @@ load_color2 (struct frame *f, struct face *face, Lisp_Object name,
|| target_index == LFACE_STRIKE_THROUGH_INDEX
|| target_index == LFACE_BOX_INDEX);
- /* if the color map is full, defined_color will return a best match
+ /* if the color map is full, defined_color_hook will return a best match
to the values in an existing cell. */
- if (!defined_color (f, SSDATA (name), color, true))
+ if (!FRAME_TERMINAL (f)->defined_color_hook
+ (f, SSDATA (name), color, true, true))
{
add_to_log ("Unable to load color \"%s\"", name);
@@ -4243,11 +4215,19 @@ two lists of the form (RED GREEN BLUE) aforementioned. */)
if (!(CONSP (color1) && parse_rgb_list (color1, &cdef1))
&& !(STRINGP (color1)
- && defined_color (f, SSDATA (color1), &cdef1, false)))
+ && FRAME_TERMINAL (f)->defined_color_hook (f,
+ SSDATA (color1),
+ &cdef1,
+ false,
+ true)))
signal_error ("Invalid color", color1);
if (!(CONSP (color2) && parse_rgb_list (color2, &cdef2))
&& !(STRINGP (color2)
- && defined_color (f, SSDATA (color2), &cdef2, false)))
+ && FRAME_TERMINAL (f)->defined_color_hook (f,
+ SSDATA (color2),
+ &cdef2,
+ false,
+ true)))
signal_error ("Invalid color", color2);
if (NILP (metric))