Ogni carattere può essere visualizzato in diversi modi: lampeggiante, sottolineato, in negativo, evidenziato, ecc. Vediamo gli attributi associabili ad un carattere:
Questi attributi sono utilizzabili in due modi:
I colori non sono altro che attributi per ncurses. La prima cosa da fare è chiamare la funzione start_color(), che abbiamo visto nella nostra funzione di inizializzazione della libreria, prima di utilizzare i colori che in ncurses si specificano a coppie ed ognuna indica il colore dei caratteri e dello sfondo. Per creare gli attributi corrispondenti alle coppie di colori è sufficiente una chiamata alla funzione: int init_pair(int numero, int caratteri, int sfondo). Il primo argomento è il numero dell’attributo che si vuole inizializzare e deve essere compreso tra 1 e COLOR_PAIRS – 1, il numero zero rappresenta sempre i caratteri bianchi su sfondo nero. Il secondo è il colore dei caratteri e deve essere compreso tra 0 e COLORS. Il terzo argomento lo sfondo da utilizzare, soggetto alle stesse limitazioni di quello dei caratteri. Al posto delle costanti numeriche, difficilmente associabili ad un colore, si possono utilizzare le costanti simboliche:
Dopo aver definito gli attributi desiderati si possono utilizzare grazie alla macro COLOR_PAIR(n) dove n è il numero dell’attributo definito in precedenza. Vediamo un esempio utilizzando le nozioni che abbiamo visto finora:
/* File color.c
compilare con: gcc -Wall -o color color.c -lncursesw */
#include “stdio.h”
#include “ncursesw/curses.h”
void InitLib()
{
initscr();
if (has_colors())
start_color();
cbreak();
nonl();
keypad(stdscr, TRUE);
meta(stdscr, TRUE);
noecho();
}
void Draw()
{
init_pair(1, COLOR_RED, COLOR_BLACK);
init_pair(2, COLOR_YELLOW, COLOR_BLACK);
init_pair(3, COLOR_CYAN, COLOR_BLACK);
attron(COLOR_PAIR(1));
mvhline(5, 20, ‘-‘, 40);
mvhline(15, 20, ‘-‘, 40);
mvvline(5, 20, ‘|’, 10);
mvvline(5, 60, ‘|’, 10);
attrset(COLOR_PAIR(2));
attron(A_UNDERLINE|A_BOLD);
mvaddstr(10, 30, “BENVENUTI IN NCURSES”);
attron(A_NORMAL);
attrset(COLOR_PAIR(3));
mvaddstr(19, 1, “Premere un tasto per chiudere il programma…”);
attroff(COLOR_PAIR(3));
}
int main(int argc, char** argv)
{
InitLib();
Draw();
refresh();
getch();
endwin();
return 0;
}
Le prime chiamate creano tre attributi di colore e di formattazione che vengono settate con attron() e poi cambiate con attrset() ed alla fine terminate con attroff(). Per cambiare il colore dello sfondo del terminale occorre utilizzare la funzione bkgd(attributo), dove ovviamente l’argomemto è un attributo di colore.
Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…
MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→
In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…
In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…
Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…
Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→