[ Содержание ] | [ Перечень функций ] |
Status XAllocNamedColor(display, colormap, color_name, screen_def_return, exact_def_return) Display *display; Colormap colormap; char *color_name; XColor *screen_def_return, *exact_def_return;
АРГУМЕНТЫ
Эта функция выделяет память под ячейку палитры colormap и заносит в неё то значение цвета, которое поддерживается аппаратным обеспечением и которое ближе всего к цвету, название которого указанно в аргументе color_name. Новая ячейка получает признак "только для чтения". Индекс в палитре для созданной ячейки возвращается в screen_def_return.
Соответствие между названиями цветов и значениями RGB хранится в текстовой базе данных X-сервера. Вот несколько строчек из этого файла:
245 245 245 WhiteSmoke 220 220 220 gainsboro 255 228 181 moccasin 255 248 220 cornsilk 255 255 240 ivory 255 250 205 LemonChiffon 255 245 238 seashell 240 255 240 honeydew 245 255 250 MintCream 255 228 225 MistyRose
Через screen_in_out также возвращается значение индекса в цветовой палитре и те значения яркости каналов RGB, которые были использованы на самом деле.
XAllocNamedColor возвращает ненулевой статус в случае удачного выделения ячейки палитры, иначе статус будет нулевым.
Несколько программ могут запрашивать создание в одной палитре записи с одинаковыми значениями RGB и они могут получать одну и ту же ячейку палитры. Это позволяет разделять ячейки палитры между несколькими приложениями. Когда ячейка выделяется повторно, в ней это отмечается. Когда приложение хочет освободить память от ячейки, реально память освободится только тогда, когда ячейку освободит последнее приложение.
Усли указатели screen_def_return и exact_def_return указывают на одну и ту же структуру, то поле pixel будет иметь корректное значение, а значения RGB будут неопределенными.
Регистр символов в названии цвета роли не играет. В случае, если название цвета найдено и значения RGB были получены, возвращается ненулевой статус, иначе статус будет нулевым.
Вместо указания имени цвета, в аргументе color_name можно указать значения RGB. Формат строки в этом случае будет выглядеть следующим образом:
rgb:<red>/<green>/<blue> где <red>, <green>, <blue> - одно из (h или hh или hhh или hhhh). h - это одна шестнадцатеричная цифра (четыре разряда).
Для обратной совместимости поддерживается старый формат представления значений RGB в названии цвета:
#RGB (4 разряда на канал) #RRGGBB (8 рарядов на канал) #RRRGGGBBB (12 разрядов на канал) #RRRRGGGGBBBB (16 разрядов на канал)
Наличие символа '#' в названии цвета указывает на то, что дальше будут идти значения RGB. Символы R, G и B представляют собой шестнадцатеричные цифры. Все значения приводятся к формату 16 разрядов на канал путем перевода указанных цифр в старшие разряды 16-разрядного слова. Таким образом #3a7 будет эквивалентом #3000a0007000. Такой формат представления цвета и названия цветов из текстовой базы X-сервера были использованы для обозначения цветов в HTML. Однако, такое представление значений RGB в названии цвета не рекомендуется к дальнейшему использованию в приложениях X Window.
Также поддерживается яркостное представление RGB:
rgbi:<red>/<green>/<blue>
Где <red>, <green> и <blue> - вещественные числа в диапазоне от 0.0 до 1.0 включительно. Допустимо использование экспоненциальной формы записи (пример: 1.2E-1).
Функция XAllocNamedColor может генерировать следующие ошибки:
См. также: XAllocColor, XAllocColorCells, XAllocColorPlanes, XFreeColors, XQueryColor, XStoreColors, XCreateColormap.
[ Содержание ] | [ Перечень функций ] |