30.25 Имена цветов

Имя цвета — это текст (обычно в строке), который указывает цвет. Допускаются символьные имена, такие как ‘black’, ‘white’, ‘red’ и т. д.; используйте M-x list-colors-display, чтобы увидеть список определенных имен. Вы также можете указывать цвета численно в формах таких как ‘#rgb’ и ‘RGB:r/g/b’, где r указывает уровень красного, g указывает уровень зеленого, а b указывает уровень синего. Вы можете использовать один, два, три или четыре шестнадцатеричных символа для r; тогда вы должны использовать то же количество шестнадцатеричных символов для всех g и b, получая таким образом 3, 6, 9 или 12 шестнадцатеричных символов в общей сложности. (См. документацию X Window System для получения более подробной информации о численном указании цветов RGB.)

Эти функции предоставляют способ определить, какие имена цветов являются допустимыми и как они выглядят. В некоторых случаях значение зависит от выбранного фрейма, как описано ниже; см. Фокус ввода, для значения термина «выбранный фрейм».

Чтобы считывать ввод пользователя имен цветов с автодополнением, используйте read-color (см. read-color).

Функция: color-defined-p color &optional frame

Эта функция сообщает, является ли имя цвета осмысленным. Она возвращает t, если да; в противном случае nil. Аргумент frame указывает, о каком фрейме следует спросить; если frame опущен или равен nil, используется выбранный фрейм.

Обратите внимание, что это не говорит вам, поддерживает ли используемый вами дисплей действительно этот цвет. При использовании X вы можете запросить любой определенный цвет на любом типе дисплея, и вы получите какой-то результат — обычно, наиболее близкий к возможному. Чтобы определить, может ли фрейм действительно отобразить определенный цвет, используйте color-supported-p (см. ниже).

Функция: defined-colors &optional frame

Эта функция возвращает список имен цветов, которые определены и поддерживаются в фрейме frame (по умолчанию, выбранный фрейм). Если frame не поддерживает цвета, значение равно nil.

Функция: color-supported-p color &optional frame background-p

Это возвращает t, если frame действительно может отобразить цвет color (или по крайней мере что-то близкое к нему). Если frame опущен или равен nil, вопрос относится к выбранному фрейму.

Некоторые терминалы поддерживают разный набор цветов для переднего и заднего плана. Если background-p не равен nil, это означает, что вы спрашиваете, можно ли использовать color в качестве фона; в противном случае вы спрашиваете, можно ли использовать его в качестве переднего плана.

Аргумент color должен быть допустимым именем цвета.

Функция: color-gray-p color &optional frame

Это возвращает t, если color является оттенком серого, как определено в дисплее frame. Если frame опущен или равен nil, вопрос относится к выбранному фрейму. Если color не является допустимым именем цвета, эта функция возвращает nil.

Функция: color-values color &optional frame

Эта функция возвращает значение, описывающее, как color должен идеально выглядеть в frame. Если color определен, значение представляет собой список из трех целых чисел, которые дают количество красного, зеленого и синего. Каждое целое число в принципе варьируется от 0 до 65535, но некоторые дисплеи могут не использовать весь диапазон. Этот список из трех элементов называется значениями RGB цвета.

Если color не определен, значение равно nil.

(color-values "black")
     ⇒ (0 0 0)
(color-values "white")
     ⇒ (65535 65535 65535)
(color-values "red")
     ⇒ (65535 0 0)
(color-values "pink")
     ⇒ (65535 49344 52171)
(color-values "hungry")
     ⇒ nil

Цветовые значения возвращаются для дисплея frame. Если frame опущен или равен nil, информация возвращается для дисплея выбранного фрейма. Если фрейм не может отображать цвета, значение равно nil.

Функция: color-name-to-rgb color &optional frame

Эта функция делает то же самое, что и color-values, но возвращает цветовые значения в виде чисел с плавающей запятой в диапазоне от 0.0 до 1.0 включительно.

Функция: color-dark-p rgb

Эта функция возвращает не-nil, если цвет, описанный его RGB кортежем rgb, более читаем на белом фоне, чем на темном фоне. Аргумент rgb должен быть списком в форме (r g b), где каждый компонент является числом с плавающей запятой в диапазоне от 0.0 до 1.0 включительно. Вы можете использовать color-name-to-rgb для преобразования имени цвета в такой список.