Книга: Разработка приложений в среде Linux. Второе издание
24.2.9. Использование цвета
24.2.9. Использование цвета
Библиотека S-Lang упрощает процесс добавления цветов в приложения. Она позволяет использовать палитру, состоящую из 256 элементов[171], каждый из которых определяет цвет переднего плана и фона. В большинстве приложений используется элемент палитры для одного визуализируемого объекта, например, рамки окна или пункта списка. Настроить цвета палитры можно с помощью функции SLtt_set_color()
.
void SLtt_set_color(int entry, char * name, char * fg, char * bg);
Первый параметр определяет модифицируемый элемент палитры. Параметр name
в настоящий момент игнорируется и должен быть равен NULL
. Два последних элемента задают новые цвета переднего плана и фона для данного элемента палитры. В табл. 24.2 приведен список цветов, которые поддерживает библиотека S-Lang; fg
и bg
должны представлять строки, содержащие имя используемого цвета. Все цвета в левой колонке таблицы могут использоваться как для переднего плана, так и для фона. Цвета в правой колонке таблицы могут служить только в качестве цветов переднего плана. Попытка использования этих цветов для фона может привести к непредсказуемым результатам[172].
Таблица 24.2. Цвета в S-Lang
Передний план и фон | Передний план |
---|---|
black |
gray |
red |
brightred |
green |
brightgreen |
brown |
yellow |
blue |
brightblue |
magenta |
brightmagenta |
cyan |
brightcyan |
lightgray |
white |
Запись на экран осуществляется с применением текущего элемента палитры, который можно задать с помощью функции Slsmg_set_color()
.
void SLsmg_set_color(int entry);
Эта функция задает текущий элемент палитры по определенному элементу. Цвета, определяемые этим элементом, будут использоваться при последующих записях на экран.
Хотя приложение может вызывать функции для работы с цветом на терминале любого типа, возможность отображения того или иного цвета будет определяться некоторыми факторами. Глобальная переменная SLtt_Use_Ansi_Colors
контролирует отображение цветов. Если эта переменная будет иметь нулевое значение, цвета не используются, а если любое другое значение — то используются.
Функция SLtt_get_terminfo()
пытается предположить, будет ли цвет доступен на текущем терминале. К сожалению, многие базы данных termcap и terminfo в этом отношении несовершенны. Если будет задана переменная среды COLORTERM
, то S-Lang установит переменную SLtt_Use_Ansi_Colors
независимо от того, что отражено в базе данных терминала.
Большинство приложений, обеспечивающих поддержку цветов, также предлагают опцию командной строки, позволяя избирательно разрешать поддержку цветов. Указание этой опции приводит к явной установке переменной SLtt_Use_Ansi_Colors
в приложении.
- 24.2.1. Инициализация управления экраном
- 24.2.2. Обновление экрана
- 24.2.3. Перемещение курсора
- 24.2.4. Завершение управления экраном
- 24.2.5. Скелет программы управления экраном
- 24.2.6. Переключение наборов символов
- 24.2.7. Запись на экран
- 24.2.8. Рисование линий и прямоугольников
- 24.2.9. Использование цвета
- Использование шрифтов
- Дополнительные эффекты с использованием прозрачных изображений
- Листинг 11.9. Простой пользовательский элемент управления, который изменяет цвета и запускает событие, определяемое поль...
- Переменные типа цвет и операции с цветами
- 1.2.4 Использование цвета
- Восстановление с использованием инструмента gbak
- Типы страниц и их использование
- Использование констант
- Использование переменной окружения ISC_PATH
- Использование сервера Yaffil внутри процесса
- Использование CAST() с типами дата
- Использование типов содержимого и столбцов