Farben auf der Konsole

Bevor man Farben auf der Konsole verwendet, muss man wissen, dass nicht jede Konsole in der Lage ist, Farben zu verwenden. Es gibt auch zweifarbige Konsolen, wenn man zum Beispiel an die alten Grün- oder Bernsteinmonitore denkt. Heutzutage sind Farbmonitore, bzw. TFTs üblich, dennoch sollte man zunächst prüfen, ob überhaupt Farbe verwendet werden darf.

Auf Farbe prüfen und Farben konfigurieren

Um zu prüfen, ob Farbe vom Terminal korrekt interpretiert wird, lässt sich die Funktion has_colors() verwenden. Gibt die Funktion true zurück, so kann man in den Farb-Modus wechseln. Ab hier stehen einem die Standardfarben zur Verfügung.

Die Standardfarben

Farbindex Farbe Farbwert Define
0 Schwarz #FF0000       COLOR_BLACK
1 Rot #FF0000       COLOR_RED
2 Grün #00FF00       COLOR_GREEN
3 Gelb #FFFF00       COLOR_YELLOW
4 Blau #0000FF       COLOR_BLUE
5 Magenta #FF00FF       COLOR_MAGENTA
6 Cyan #00FFFF       COLOR_CYAN
7 Weiß #FFFFFF       COLOR_WHITE

In den Farbmodus wechseln

NCurses verwendet den Farbmodus nachdem die Funktion start_color() aufgerufen wurde. start_color() sollte üblicherweise direkt nach init_scr() gerufen werden.

Hiermit werden die Variablen COLORS und COLOR_PAIRS initialisiert:

Variable Bedeutung
COLORS Anzahl der vom Terminal unterstützten Farben
COLOR_PAIRS Anzahl der vom Terminal unterstützten Farbpaare

Farbpaare

Ein Terminal beschreibt Farben mit Farbindizes. Es wird also nicht direkt die Farbe eingestellt, sondern der Index, auf den die Farbe zeigt. Ein Farbpaar besteht immer aus einem Farbindex für die Vordergrundfarbe und einem Index für die Hintergrundfarbe. Wieviele Farbpaare unterstützt werden, erfährt man in der Variable COLOR_PAIRS, die nach der Initialisierung durch start_color() zur Verfügung steht. Auch die Farbpaare werden indiziert.

Ein Farbpaar initialisiert man mit der Funktion init_pair(). Möchte man ein Farbpaar abfragen, um zu erfahren, welche Farbindizes bei diesem Farbpaar verwendet werden, so verwendet man pair_content()

Farben selbst konfigurieren

Manche Konsolen erlauben es, die Farbwerte für einen Farbindex zu verändern. Ob die Farben geändert werden können, lässt sich mit der Funktion can_change_color() erfragen. Die Änderung eines Farbindizes lässt sich mit dem Befehl init_color() realisieren. Wenn das Terminal diese Funktion nicht zur Verfügung stellt, liefert die Funktion einen Fehlercode zurück. Mit color_content() lassen sich die RGB-Werte eines Farbindizes auslesen.

Farben verwenden

Wir haben zuvor gesehen, dass Farbpaare konfiguriert werden können. Dies ist erforderlich, da Farben in NCurses immer paarweise gesetzt werden, also Vorder- und Hintergrundfarbe mit einem Befehlsaufruf. Hierfür wird die Funktion color_set() verwendet. Hier wird einfach ein vorher eingestelltes Farbpaar eingestellt und damit Vorder- und Hintergrundfarbe eingestellt.