При создании элемента типа chtype
задаю цвет:
chtype a = ' ' | COLOR_PAIR(COLOR);
Но, что делать, если мне нужно поменять цвет? Для этого я использую приведение типов, вроде:
a = static_cast<char>(a) | COLOR_PAIR(NEW_COLOR);
Но выглядит достаточно громоздко. Есть ли способ получше?
Для доступа к отдельным частям chtype
у ncurses есть свои битовые маски: A_ATTRIBUTES
, A_CHARTEXT
, A_COLOR
(см. man curs_inch
).
Таким образом сброс цвета будет выглядеть следующим образом:
a = (a & ~A_COLOR) | COLOR_PAIR(NEW_COLOR);
Можно тоже самое записать в две строчки:
a &= ~A_COLOR;
a |= COLOR_PAIR(NEW_COLOR);
Исходное выражение сбрасывает одновременно и цвет, и атрибуты (мигание, яркость, подчёркивание итп), если это действительно желаемый результата, то можно пользоваться A_CHARTEXT
:
a = (a & A_CHARTEXT) | COLOR_PAIR(NEW_COLOR);
Замечания:
A_ATTRIBUTES
также включает в себя цвет.WA_ATTRIBUTES
, WA_CHARTEXT
и WA_COLOR
. В реализации ncurses они тождественны обычным.Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В с++ не силен от слова совсем, но понадобился именно этот языкНужно извлечь zip архив и положить рядом с самим архивом
Помогите пожалуйста не понимаю в чем ошибкаНужно сделать функцию, которая вставляет в массив действительных чисел, отсортированный в порядке...
В основном классе MainWidnow определён Qtimer* timerВнутри одного из методов класса timeout связывается с публичным слотом: