2016-06-06 18 views
0

Ich verwende ncurses mit c++ auf einem xterm-256 Display und ich möchte meinen Text in Rottönen drucken, aber ich habe Probleme, einen einfachen Weg zu finden, dies zu tun.256 Bit Bildmaske für xterm-256

Mit this Diagramm kann ich sehen, dass 0x009 rot ist und dass 0x255 - 0x232 werden verschiedene Schattierungen von schwarz sein. Wie kann ich diese Informationen verwenden, um einen Mast für meine Farben zu bilden?

Ich würde im Grunde gerne eine Karte so bilden, dass 10 bedeutet, weiß und 20 bedeutet rot, so dass 15 wäre rosa und so weiter. Ich würde dann Farbpaare mit

init_pair(10, ???, COLOR_BLACK); 
init_pair(11, ???, COLOR_BLACK); 
... 
init_pair(20, ???, COLOR_BLACK); 

erstellen, so dass ich diese Farben später verwenden könnte, um von weiß nach rot zu schattieren.

Antwort

0

Es hängt davon ab, welche Annahmen Sie treffen möchten. Das Layout der xterm 256color-Funktion ist gegeben, mit drei Teilen:

  1. Farben 0-15 sind ANSI-Farben und helle Versionen von denen.
  2. Farben 16-231 sind ein 6x6x6 Farbwürfel
  3. Farben 232-255 eine Graustufen-Rampe sind, absichtlich Weglassen schwarz und weiß für

Siehe Beispiel 256color.pl (weit von xterm Quellen kopiert). Die Zahlen machen mehr Sinn als the chart wenn Sie das Bild sehen:

enter image description here

Sie einfach auf den entsprechenden Farbnummern in init_pair beziehen könnte. Hellrot, wie Sie bemerkt haben, ist 9 (COLOR_RED + 8).

Auf der anderen Seite kann die Farbpalette geändert werden. Sie könnten init_color verwenden (geben Sie Ihr eigenes Rot/Grün/Blau-Tripel), um eine Farbe nach Nummer zu definieren, und verwenden Sie , die in init_pair.