====== 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 [[gui:ncurses:lib: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 [[gui:ncurses:lib:start_color()]] aufgerufen wurde. [[gui:ncurses:lib:start_color()]] sollte üblicherweise direkt nach [[gui:ncurses:lib: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 [[gui:ncruses:lib:start_color()]] zur Verfügung steht. Auch die Farbpaare werden indiziert. Ein Farbpaar initialisiert man mit der Funktion [[gui:ncurses:lib:init_pair()]]. Möchte man ein Farbpaar abfragen, um zu erfahren, welche Farbindizes bei diesem Farbpaar verwendet werden, so verwendet man [[gui:ncurses:lib: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 [[gui:ncurses:lib:can_change_color()]] erfragen. Die Änderung eines Farbindizes lässt sich mit dem Befehl [[gui:ncurses:lib:init_color()]] realisieren. Wenn das Terminal diese Funktion nicht zur Verfügung stellt, liefert die Funktion einen Fehlercode zurück. Mit [[gui:ncurses:lib: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 [[gui:ncurses:lib:color_set()]] verwendet. Hier wird einfach ein vorher eingestelltes Farbpaar eingestellt und damit Vorder- und Hintergrundfarbe eingestellt.