diff options
Diffstat (limited to 'src/xfaces.c')
-rw-r--r-- | src/xfaces.c | 58 |
1 files changed, 19 insertions, 39 deletions
diff --git a/src/xfaces.c b/src/xfaces.c index 925c3d54ff2..7e04c0e9953 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -893,11 +893,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; @@ -924,36 +924,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. */ @@ -998,7 +968,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) || @@ -1038,7 +1009,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, ¬_used, false); + tty_defined_color (f, color_name, ¬_used, false, false); } @@ -1082,9 +1053,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); @@ -4235,11 +4207,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)) |