# HG changeset patch # User Eli Zaretskii # Date 908377872 0 # Node ID b84718f930f805ff4951b61eb8843102d6d3e059 # Parent 94f4ba741f22b5d50b10171873e61529dc8e1b04 (msdos-color-values): New variable. (x-color-values): New function, emulates its namesake from src/xfns.c. (msdos-bg-mode): Add all dark colors to those which return "dark". diff -r 94f4ba741f22 -r b84718f930f8 lisp/term/pc-win.el --- a/lisp/term/pc-win.el Wed Oct 14 14:36:33 1998 +0000 +++ b/lisp/term/pc-win.el Wed Oct 14 15:11:12 1998 +0000 @@ -242,7 +242,11 @@ (let* ((frame (or frame (selected-frame))) (params (frame-parameters frame)) (bg (cdr (assq 'background-color params)))) - (if (member bg '("black" "blue" "darkgray" "green")) + ;; The list of ``dark'' colors should be consistent with + ;; `x-color-values' (below) and the dark/light color + ;; decisions `frame-set-background-mode' in lisp/faces.el. + (if (member bg + '("black" "blue" "green" "red" "magenta" "brown" "darkgray")) 'dark 'light))) @@ -312,6 +316,44 @@ (defun x-display-visual-class (&optional frame) 'static-color) (fset 'x-display-save-under 'ignore) (fset 'x-get-resource 'ignore) +;;; +;;; This is copied from etc/rgb.txt, except that some values were changed +;;; a bit to make them consistent with DOS console colors. The order of +;;; the colors is according to the PC text mode color codes. +;;; +;;; If you want to change the RGB values, keep in mind that various pieces +;;; of Emacs think that a color whose RGB values add up to less than 0.6 of +;;; the values for WHITE (i.e. less than 459) are ``dark'', otherwise the +;;; color is ``light''; see `frame-set-background-mode' in lisp/faces.el for +;;; an example. +(defvar msdos-color-values + '(("black" 0 0 0) + ("blue" 0 0 255) + ("green" 0 255 0) + ("cyan" 0 255 255) + ("red" 255 0 0) + ("magenta" 139 0 139) ; dark magenta + ("brown" 165 42 42) + ("lightgray" 211 211 211) + ("darkgray" 102 102 102) ; gray40 + ("lightblue" 173 216 230) + ("lightgreen" 144 238 144) + ("lightcyan" 224 255 255) + ("lightred" 255 52 179) ; maroon1 + ("lightmagenta" 238 0 238) ; magenta2 + ("yellow" 255 255 0) + ("white" 255 255 255)) + "A list of MS-DOS console colors and their RGB values.") + +(defun x-color-values (color &optional frame) + "Return a description of the color named COLOR on frame FRAME.\n\ +The value is a list of integer RGB values--(RED GREEN BLUE).\n\ +These values range from 0 to 255; white is (255 255 255).\n\ +If FRAME is omitted or nil, use the selected frame." + (if (x-color-defined-p color) + (let ((frame (or frame (selected-frame))) + (color-code (msdos-color-translate color))) + (cdr (nth color-code msdos-color-values))))) ;; From lisp/term/x-win.el (setq x-display-name "pc")