Основы программирования в Linux
Шрифт:
Выполнение примера приведет к выводу, показанному на рис. 6.7, за вычетом реальных цветов, которые не отображаются на черно-белом снимке экрана.
Рис. 6.7
Как это работает
После проверки того, что экран поддерживает управление цветами, программа инициализирует цветовую обработку и определяет ряд цветовых пар. Далее на экран выводится текст с использованием цветовых пар для того, чтобы продемонстрировать комбинации разных цветов на экране.
Переопределение цветов
Как пережиток, оставшийся от старых неинтеллектуальных терминалов, которые могли отображать очень немного цветов в каждый момент времени, но позволяли настраивать текущую цветовую палитру, в библиотеке curses сохранилась возможность переопределения цветов с помощью функции
Она позволяет переопределить существующий цвет (в диапазоне от 0 до
Панели
При написании более сложных программ с использованием curses порой бывает легче построить логический экран и затем позже вывести весь или часть экрана на физический экран. В некоторых случаях лучше иметь логический экран большего размера, чем физический экран и отображать только часть логического экрана в любой конкретный момент времени.
Это нелегко сделать с помощью функций библиотеки curses, с которыми вы познакомились к этому моменту, т.к. все окна должны быть не больше физического экрана. Библиотека curses предоставляет специальную структуру данных, панель (pad), для манипулирования данными логического экрана, которые не умещаются в стандартном окне.
Структура панели похожа на структуру
Панели создаются во многом так же, как и обычные окна.
Обратите внимание на то, что возвращаемое значение — указатель на структуру типа
Но к панелям применяются другие подпрограммы обновления. Поскольку панель не привязана к конкретной точке экрана, вы должны задать область панели, которую хотите поместить на экран, и ее положение на экране. Делайте это с помощью функции prefresh.
Функция выполняет запись области панели, начинающейся в точке (
Есть и дополнительная подпрограмма
Давайте проверим это на практике с помощью программы pad.с (упражнение 6.8).
1. В начале этой программы вы инициализируете структуру панели и затем формируете панель с помощью функции, которая возвращает указатель на нее. Вставьте символы, заполняющие структуру панели (панель на 50 символов шире и выше экрана терминала):
2. Теперь перед завершением программы нарисуйте разные области панели в разных местах экрана:
Анна Иоановна
9. Романовы. Династия в романах
Проза:
историческая проза
рейтинг книги
Бастард Императора. Том 14
14. Бастард Императора
Фантастика:
городское фэнтези
аниме
фэнтези
попаданцы
рейтинг книги
Краем глаза
Детективы:
триллеры
рейтинг книги
Новое восстание
139. Звездные войны
Фантастика:
боевая фантастика
рейтинг книги
Старый, но крепкий 4
4. Культивация без насилия
Фантастика:
уся
фэнтези
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 13
13. История Телепата
Фантастика:
боевая фантастика
аниме
попаданцы
фэнтези
рейтинг книги
Последний реанорец. Том I и Том II
1. Высшая Речь
Фантастика:
фэнтези
рейтинг книги
Том 6. Письма
6. Есенин Сергей. Полное собрание сочинений в семи томах
Поэзия:
поэзия
рейтинг книги
Рожденные Небом
2. Вселенная EVE Online
Фантастика:
космическая фантастика
рейтинг книги
Цикл "Идеальный мир для Лекаря". Компиляция. Книги 1-30
Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
аниме
фэнтези
рейтинг книги
Новая хронология Греции
Научно-образовательная:
история
рейтинг книги