[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Программирование: Разработка и отладка программ


Работа с видеоатрибутами

Вы можете задать в программе некоторые атрибуты изображения, показываемого на мониторе.

В следующих разделах приведена информация об атрибутах изображения и функциях для их изменения.

Атрибуты изображения, битовые маски и цвета по умолчанию

Функции Curses позволяют изменять следующие атрибуты:

A_STANDOUT Предпочтительный режим выделения информации на терминале.
A_UNDERLINE Подчеркивание.
A_REVERSE Негативное изображение.
A_BLINK Мигание.
A_DIM Затемненное изображение.
A_BOLD Выделение яркостью или жирным шрифтом.
A_ALTCHARSET Альтернативная кодовая страница.
A_NORMAL Стандартные атрибуты.
COLOR_PAIR (Номер) Показывает пару цветов, соответствующую указанному Номеру. Эта пара цветов должна быть предварительно инициализирована с помощью функции init_pair.

Эти атрибуты определены в файле curses.h. Атрибуты можно либо передавать в функции wattron, wattroff и wattrset, либо объединять их с помощью дизъюнкции с соответствующими символами и передавать в функции waddch. Поразрядная дизъюнкция в языке C обозначается символом | (вертикальная черта). Можно также использовать следующие битовые маски:

A_NORMAL Сбрасывает все атрибуты изображения.
A_CHARTEXT Выделяет один символ.
A_ATTRIBUTES Выделяет атрибуты.
A_COLOR Выделяет информацию поля о паре цветов.

Для работы с парами цветов предусмотрены две макрокоманды: COLOR_PAIR( Номер) и PAIR_NUMBER( Атрибут). Макрокоманда COLOR_PAIR(Номер) и маска A_COLOR применяются макрокомандой PAIR_NUMBER( Атрибут) для получения номера пары цветов из атрибутов, задаваемых параметром Атрибут.

В программы, работающие с цветами, нужно включать файл curses.h. Он содержит определения цветов, применяемых по умолчанию. Эти цвета перечислены в следующей таблице:

Цвет Целое число
COLOR_BLACK (черный) 0
COLOR_BLUE (синий) 1
COLOR_GREEN (зеленый) 2
COLOR_CYAN (бирюзовый) 3
COLOR_RED (красный) 4
COLOR_MAGENTA (малиновый) 5
COLOR_YELLOW (желтый) 6
COLOR_WHITE (белый) 7

В функциях curses предполагается, что для всех терминалов фоновый цвет по умолчанию равен 0 (COLOR_BLACK - черный).

Установка атрибутов изображения

Текущие атрибуты окна задают вид символов, выводимых с помощью функций addch. Эти атрибуты являются параметрами символов. Они хранятся во время выполнения операций терминала.

attroff или wattroff Сбрасывает атрибуты.
attron или wattron Устанавливает атрибуты.
attrset или wattrset Задает текущие атрибуты окна.
standout, wstandout, standend и wstandend
  Включает или выключает предпочтительный режим выделения информации на экране.
vidputs или vidattr Показывает строку, переводящую терминал в режим применения атрибутов изображения.

Функция attrset задает текущие атрибуты экрана по умолчанию. Функция wattrset задает текущие атрибуты пользовательского окна.

С помощью функций attron и attroff можно устанавливать и сбрасывать отдельные атрибуты stdscr. Функции wattron и wattroff выполняют те же действия для пользовательских окон.

Функция standout равносильна функции attron с атрибутом A_STANDOUT. Она активирует для окна stdscr режим предпочтительного выделения изображения терминала. Функция wstandout равносильна функции wattron(Окно, A_STANDOUT). Она активирует для пользовательского окна режим предпочтительного выделения изображения терминала. Функция standend равносильна функции attrset(0). Она сбрасывает все атрибуты для stdscr. Функция wstandend равносильна функции wattrset(Окно , 0). Она сбрасывает все атрибуты для указанного окна.

Функция vidputs выдает строку изменения атрибутов терминала. Символы этой строки выводятся с помощью функции putc. Функция vidattr эквивалентна функции vidputs за исключением того, что символы выводятся с помощью функции putchar.

Работа с параметрами цветов

В файле curses.h определена макрокоманда COLOR_PAIR (Номер), поэтому вы можете управлять атрибутами цветов так же, как и прочими атрибутами. Перед работой с парой цветов ее нужно инициализировать с помощью функции init_pair. Для функции init_pair есть три параметра: Пара, Текст и Фон. Для параметра Пара должно быть задано значение от 1 до COLOR_PAIRS-1. Параметрам Текст и Фон должны быть присвоены значения от 0 до COLORS-1. Например, инициализация пары цветов 1 с черным текстом на бирюзовом фоне выполняется следующим образом:

init_pair(1, COLOR_BLACK, COLOR_CYAN);

После этого следует задать атрибуты для окна:

wattrset(win, COLOR_PAIR(1));

Если вы теперь выведете на экран строку Добавить цвет, то она будет показана черным цветом на бирюзовом фоне.

Получение атрибутов

С помощью значения, выданного функцией winch, вы можете получить информацию об атрибутах, в том числе номера пар цветов. В следующем примере значение, возвращаемое вызовом функции winch с логическим оператором AND (в языке С он обозначается знаком &) и битовой маской A_ATTRIBUTES, применяется для выделения атрибутов текущей позиции окна. Результат этой операции используется макроопределением PAIR_NUMBER для определения номера цветов, после чего на экране печатается этот номер - 1.

win = newwin(10, 10, 0, 0);
init_pair(1, COLOR_RED, COLOR_YELLOW);
wattrset(win, COLOR_PAIR(1));
waddstr(win, "apple");
 
number = PAIR_NUMBER((mvwinch(win, 0, 0) & A_ATTRIBUTES));
wprintw(win, "%d\n", number);
wrefresh(win);

Визуальные и звуковые сигналы

В библиотеку curses включены функции выдачи сигналов для пользователей.

beep Издает на терминале звуковой сигнал.
flash Визуальный сигнал терминала.

Настройка Curses

Все опции curses изначально сброшены, поэтому сбрасывать их перед вызовом функции endwin не требуется. Следующие функции позволяют задавать различные опции curses:

curs_set Задает степень прорисовки курсора: невидимый, обычный, выделенный.
idlok Указывает, будет ли применяться функциями curses аппаратная вставка и удаление строк на тех терминалах, где она поддерживается.
intrflush Задает, будет ли сброшен весь вывод, переданный драйверу tty, при нажатии клавиши прерывания (прервать, завершить или приостановить). По умолчанию для этой опции принимается значение, заданное для драйвера tty.
keypad Задает, будут ли функции curses принимать информацию, вводимую с дополнительной клавиатуры терминала. Если эта опция включена, то при нажатии функциональной клавиши (например, клавиши со стрелкой) функция wgetch вернет соответствующее ей значение. Если эта опция выключена, то функции curses не будут обрабатывать нажатия функциональных клавиш, и программе потребуется интерпретировать escape-последовательности. Список этих функциональных клавиш приведен в описании функции wgetch.
typeahead Указывает функциям curses, что нужно проверять буферизацию ввода в альтернативном дескрипторе файла.

Сведения о дополнительных опциях curses приведены в описании функций wgetch и в разделе Выбор режимов ввода и вывода для терминала.

Связанная информация

Глава 2, Библиотека curses

Список дополнительных функций curses


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]