| <<< ncurses-Startseite | ncurses | << Inhaltsverzeichnis |
| < Begriffsklärung und grundlegende ncurses-Funktionen | Spezialtasten > |
Damit ncurses-Programme in ihrer ganzen Farbenpracht erstrahlen können, muss im Programmcode die Funktion
int start_color(void);
initial aufgerufen werden.
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.
Farben wählen
int init_pair(short pair, short f, short b);
Parameter:
pair: Paarnummer;1 <= pair < COLOR_PAIRSf, b: foreground-color, background-color;1 <= (f bzw. b) < COLOR
Diese Funktion ist nur dann sinnvoll einsetzbar, wenn das Terminal Farben unterstützt, was aber auch häufig der Fall ist. Zwecks Abfrage der Farbfähigkeit gibt es die Funktion
bool has_colors(void);
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 | ♦ |
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).
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);
}

Fensterhintergrund
int bkgd(chtype ch);
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);
}

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.
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 | ![]() |
Farben ändern
int init_color(short color, short r, short g, short b);
Parameter:
color: Farb-Nummer bzw. -Name (COLOR_BLACK, etc.) der Basisfarbe, die geändert werden sollr, g, b: ... RGB;0 <= (r, g bzw. b) <= 1000
Diese Funktion ist nur dann sinnvoll einsetzbar, wenn das Terminal Farbänderungen unterstützt, was längst nicht immer der Fall ist. Je nach Terminal wird nur ein kleinerer Wertebereich unterstützt, z.B.: 0 <= (r, g bzw. b) <= 999 . Zwecks Abfrage der Fähigkeit zur Farbänderung gibt es die Funktion
bool can_change_color(void);
Da die Funktion nur sehr selten sinnvoll angewendet werden kann, wird hier auf ein Beispiel verzichtet.
| <<< ncurses-Startseite | ncurses | << Inhaltsverzeichnis |
| < Begriffsklärung und grundlegende ncurses-Funktionen | Spezialtasten > |


