[ Содержание ][ Перечень функций ]

XAllocNamedColor - выделить ячейку в палитре по названию цвета

СИНТАКСИС
    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.


[ Содержание ][ Перечень функций ]