Ncurses: Farben und andere Attribute
Aus Wikibooks
| <<< ncurses-Startseite | ncurses | << Inhaltsverzeichnis |
| < Begriffsklärung und grundlegende ncurses-Funktionen | Spezialtasten > |
Inhaltsverzeichnis |
Damit ncurses-Programme in ihrer ganzen Farbenpracht erstrahlen können, muss im Programmcode die Funktion
int start_color(void);
initial aufgerufen werden.
[Bearbeiten] Beispiel
#include <curses.h>
#include <stdlib.h>
void quit(void)
{
endwin();
}
int main(void)
{
initscr();
atexit(quit);
start_color();
clear();
mvaddstr(5, 5, "Hallo");
mvaddstr(6, 10, "Welt!");
mvaddstr(15, 1, "Programm beenden durch Drücken einer Taste");
refresh();
getch();
return(0);
}
Das Rechteck rechts-unten auf diesem und den folgenden Screenshots stellt übrigens den Cursor dar. Die Anzeige des Cursors kann mit der curs_set-Funktion ein-/ausgeschaltet werden.
[Bearbeiten] Farben einstellen
int init_pair(short pair, short f, short b); int init_color(short color, short r, short g, short b);
Parameter:
pair: Paarnummer;1 <= pair < COLOR_PAIRSf, b: foreground-color, background-color;1 <= (f bzw. b) < COLORr, g, b: ... RGB;0 <= (r, g bzw. b) <= 1000
Diese Funktionen sind nur dann sinnvoll einsetzbar, wenn das Terminal Farben, bzw. die Neudefinition von Farbwerten unterstützt. Zwecks Abfrage der Farbfähigkeiten des verwendeten Terminals gibt es die Funktionen
bool has_colors(void);
und
bool can_change_color(void);
Erstere liefert die Information, ob das Terminal Farben überhaupt unterstützt. Die zweite Funktion dient der Abfrage, ob der Programmierer die Farbwerte ändern kann.
[Bearbeiten] Basisfarben
Nach der Initalisierung mittels start_color sind bei farbfähigen Terminals unmittelbar die acht ncurses-Basisfarben verwendbar:
| COLOR_BLACK | = 0 | ♦ |
| COLOR_RED | = 1 | ♦ |
| COLOR_GREEN | = 2 | ♦ |
| COLOR_YELLOW | = 3 | ♦ |
| COLOR_BLUE | = 4 | ♦ |
| COLOR_MAGENTA | = 5 | ♦ |
| COLOR_CYAN | = 6 | ♦ |
| COLOR_WHITE | = 7 | ♦ |
[Bearbeiten] Textvorder- und -hintergrundfarbe
int color_set(short color_pair_number, void* opts);
Farben werden immer paarweise (Vorder-, Hintergrundfarbe) gesetzt (init_pair). Der Parameter opts ist ein Null-Pointer (0).
[Bearbeiten] Beispiel
#include <curses.h>
#include <stdlib.h>
void quit(void)
{
endwin();
}
int main(void)
{
initscr();
atexit(quit);
start_color();
clear();
init_pair(1, COLOR_GREEN, COLOR_RED);
color_set(1, 0);
mvaddstr(5, 5, "Hallo");
mvaddstr(6, 10, "Welt!");
mvaddstr(15, 1, "Programm beenden durch Drücken einer Taste");
refresh();
getch();
return(0);
}
[Bearbeiten] Fensterhintergrund
int bkgd(chtype ch);
[Bearbeiten] Beispiel
#include <curses.h>
#include <stdlib.h>
void quit(void)
{
endwin();
}
int main(void)
{
initscr();
atexit(quit);
start_color();
clear();
init_pair(1, COLOR_GREEN, COLOR_RED);
bkgd(COLOR_PAIR(1));
mvaddstr(5, 5, "Hallo");
mvaddstr(6, 10, "Welt!");
mvaddstr(15, 1, "Programm beenden durch Drücken einer Taste");
refresh();
getch();
return(0);
}
[Bearbeiten] Zusätzliche Textattribute
Zusätzliche Textattribute lassen sich mit den Funktionen
int attrset(int attrs); // setzt Attribute für nachfolgende Texte int attron(int attrs); // schaltet zusätzliche Attribute für nachfolgende Texte ein int attroff(int attrs); // schaltet die angegebenen Attribute wieder aus int standend(void); // attrset(0) int standout(void); // attrset(A_STANDOUT)
einstellen. Einzelattribute lassen sich mittels der OR-Bitoperation ( | ) verknüpfen. Als Attribute stehen zur Verfügung:
| A_NORMAL | normal |
| A_STANDOUT | Highlight-Modus |
| A_UNDERLINE | unterstrichen |
| A_REVERSE | revertiert |
| A_BLINK | blinkend |
| A_DIM | gedimmt |
| A_BOLD | fett |
| A_PROTECT | geschützt |
| A_INVIS | unsichtbar |
| A_ALTCHARSET | alternatives Character-Set |
Die genauen Auswirkungen dieser Attribute sind teilweise abhängig von den Fähigkeiten des eingesetzten Terminals.
[Bearbeiten] Beispiel
#include <curses.h>
#include <stdlib.h>
void quit(void)
{
endwin();
}
int main(void)
{
initscr();
atexit(quit);
start_color();
clear();
init_pair(1, COLOR_YELLOW, COLOR_BLUE);
init_pair(2, COLOR_GREEN, COLOR_BLUE);
bkgd(COLOR_PAIR(1));
attrset(A_UNDERLINE);
mvaddstr(5, 5, "Hallo");
attrset(A_BOLD);
mvaddstr(6, 10, "Welt!");
attrset(A_DIM | COLOR_PAIR(2));
mvaddstr(15, 1, "Programm beenden durch Drücken einer Taste");
refresh();
getch();
return(0);
}
| KDE-Konsole (Farbschema: Konsole-Standard) | |
| KDE-Konsole (Farbschema: XTerm-Farben) | |
| rxvt, aterm, xterm |
| <<< ncurses-Startseite | ncurses | << Inhaltsverzeichnis |
| < Begriffsklärung und grundlegende ncurses-Funktionen | Spezialtasten > |


