Операционная система UNIX. Руководство программиста


Атрибуты вывода


Рассказывая об addch(), мы упомянули, что эта подпрограмма выводит в stdscr один знак типа chtype. chtype состоит из двух частей: информации о самом символе и информации о наборе атрибутов, связанных с этим символом. Эти атрибуты позволяют отображать символ с повышенной яркостью, подчеркнутым, инвертированным и т.д.

С stdscr всегда связан набор атрибутов, которые автоматически присваиваются каждому выводимому символу. Вы можете изменить текущие значения атрибутов, используя attrset() или другие подпрограммы пакета curses, которые описаны ниже. Приведем здесь список атрибутов и их описания:

  • A_BLINK - мерцание.
  • A_BOLD - повышенная яркость или жирный шрифт.
  • A_DIM - пониженная яркость.
  • A_REVERSE - инвертированное отображение.
  • A_STANDOUT - как можно заметнее, насколько это возможно на данном терминале.
  • A_UNDERLINE - подчеркивание.
  • A_ALTCHARSET - альтернативная кодировка (см. раздел Линии на экране и прочая графика).

Эти атрибуты можно передавать в качестве аргумента подпрограмме attrset() или ей подобным. Им можно передавать комбинации атрибутов, объединенные операцией дизъюнкции (|).

Примечание

Не каждый терминал может отображать любой из перечисленных атрибутов. Если терминал не может реализовать запрошенный атрибут, curses пытается заменить его похожим, а если и это невозможно, то атрибут игнорируется.

Рассмотрим использование одного из этих атрибутов. Следующий фрагмент программы обеспечивает отображение слова с повышенной яркостью:

. . . printw ("Яркое "); attrset (A_BOLD); printw ("слово"); attrset (0); printw (" бросается в глаза.\n"); . . . refresh ();

Атрибуты можно включать по одному, как в примере: attrset (A_BOLD), или в комбинации. Например, чтобы вывести яркий мерцающий текст, Вы можете использовать attrset (A_BOLD | A_BLINK). Те или иные атрибуты включаются и выключаются подпрограммами attron() и attroff() без какого-либо влияния на остальные атрибуты отображения. attrset (0) отключает все атрибуты.

Заметьте, что в набор атрибутов входит A_STANDOUT, который можно применять для привлечения внимания пользователя. Для физической реализации этого атрибута используется наиболее визуально выразительный способ отображения, возможный на данном терминале. Обычно это повышенная яркость или инверсия. Если нужно просто выделить часть текста, все равно, подсветкой, инверсией или как-либо еще, лучше использовать A_STANDOUT. Для его включения и выключения удобны функции standout() и standend() соответственно. Фактически, standend() отключает все атрибуты.




- Начало -  - Назад -  - Вперед -



Книжный магазин