Вы можете задать в программе некоторые атрибуты изображения, показываемого на мониторе.
В следующих разделах приведена информация об атрибутах изображения и функциях для их изменения.
Функции Curses позволяют изменять
следующие атрибуты:
Эти атрибуты определены в файле
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. Он содержит
определения цветов, применяемых по умолчанию. Эти цвета перечислены в
следующей таблице:
В функциях 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 изначально
сброшены, поэтому сбрасывать их перед вызовом функции endwin не требуется. Следующие функции
позволяют задавать различные опции curses:
curs_set | Задает степень прорисовки курсора: невидимый, обычный, выделенный. |
idlok | Указывает, будет ли применяться функциями curses аппаратная вставка и удаление строк на тех терминалах, где она поддерживается. |
intrflush | Задает, будет ли сброшен весь вывод, переданный драйверу tty, при нажатии клавиши прерывания (прервать, завершить или приостановить). По умолчанию для этой опции принимается значение, заданное для драйвера tty. |
keypad | Задает, будут ли функции curses принимать информацию, вводимую с дополнительной клавиатуры терминала. Если эта опция включена, то при нажатии функциональной клавиши (например, клавиши со стрелкой) функция wgetch вернет соответствующее ей значение. Если эта опция выключена, то функции curses не будут обрабатывать нажатия функциональных клавиш, и программе потребуется интерпретировать escape-последовательности. Список этих функциональных клавиш приведен в описании функции wgetch. |
typeahead | Указывает функциям curses, что нужно проверять буферизацию ввода в альтернативном дескрипторе файла. |
Сведения о дополнительных опциях curses приведены в описании функций wgetch и в разделе Выбор режимов ввода и вывода для терминала.
Список дополнительных функций curses