2.2 color (Farbe)

Alle Farben, die verwendet werden sollen, müssen als Ressource deklariert werden. Die Anzahl der darstellbaren Farben ist von dem von Ihnen verwendeten Grafiksystem abhängig.

Die Deklaration einer Farbe beginnt mit dem Schlüsselwort color. Anschließend steht der Identifikator der Farbe, gefolgt von der Farbdefinition. Die Deklaration wird durch ein ; abgeschlossen.

Definition

{ export | reexport } color <Bezeichner> <colorSpec> | <variantDef>
colorSpec ::=
  { rgb(<R>, <G>, <B>) | hls(<H>, <L>, <S>) | gradient("<kind> [ , <arg> ]") |
    "<vordefinierte Farbe>" }
  { , grey(<N>) } { , black | white } ;
variantDef ::=
{
           0 : <colorSpec>
  [ <Nummer> : <colorSpec> ]
}

Beispiele

Nicht variant

color RED         rgb(255, 0, 0), grey(50), white;
color AQUA        hls(90, 127, 255), grey(127), white;
color YELLOW      rgb(255, 255, 0);
color BLUE        "blue", black;
color ClMagenta   "magenta";
color BEAUTYCOLOR "orchid", grey(10), white;

Variant

color BEAUTYCOLOR
{
  0: rgb(100,200,200);
  1: "orchid", grey(10), white;
  2: rgb(150,100,190);
  3: "pink";
}

Auf Farbbildschirmen wird ausschließlich der Farbeintrag verwendet, auf Graustufen-Bildschirmen nur die Graustufe und auf Schwarzweiß-Bildschirmen der Schwarzweiß-Wert.

rgb(<R>, <G>, <B>)

R, G, B sind die Farbintensitäten der Anteile der Farben Rot, Grün und Blau. Der Wertebereich für alle drei Werte ist 0 bis 255. Klammern und Kommata sind Bestandteile der Farbdeklaration.

Je nach Wahl der RGB-Werte verwendet MS Windows gerasterte Mischfarben. Diese können durch geeignete Wahl der RGB-Werte weitestgehend vermieden werden, z.B. 0, 63, 127, 191, 255.

color  MyGrey  rgb(127,127,127);

color  Azure  rgb(63,127,191);

hls(<H>, <L>, <S>)

Im HLS-Farbmodell sind Farben durch Farbton H (hue), Helligkeit L (lightness, luminance) und Farbsättigung S (saturation) definiert. Der Wertebereich für alle drei Werte ist 0 bis 255.

Die Farben sind in einem Zylinder angeordnet, bei dem die obere Fläche Weiß und die untere Schwarz ist. Die Helligkeit L steigt von 0 (dunkel) in der unteren bis 255 (hell) in der oberen Fläche. Bei den Farben in der Kreisfläche, die den Mittelpunkt des Zylinders schneidet, ist L = 127. Diese Farben sind weder aufgehellt (durch Mischung mit Weiß) noch abgedunkelt (durch Mischung mit Schwarz).

Der Farbton H wird durch den Winkel auf der Kreisfläche festgelegt. Der Wertebereich für H von 0 bis 255 und der Winkel W im Farbkreis (eigentlich von 0 bis 359 Grad) hängen wie folgt zusammen:

  • H = W / 2.
  • W = (H modulo 180) * 2; das heißt, Werte von 180 bis 255 entsprechen den Farbtönen von 0 bis 75.

Rot hat den Wert H = 0 (oder 180), H = 60 (oder 240) ergibt Grün und H = 120 Blau.

Auf der senkrechten Geraden im Zentrum des Zylinders, liegen die Grautöne mit der Farbsättigung S = 0. Die Farben auf dem Zylindermantel haben die höchste Farbsättigung S = 255. Auf dem Umfang der mittleren Kreisfläche, liegen die sogenannten reinen Farben mit L = 127 und S = 255.

grey(<N>)

Ist der Graustufenwert, der auf einem Graustufen-Bildschirm für die Farbe verwendet werden soll. Der Wertebereich von N ist 0 bis 255.

black | white

Sind die Farbwerte für Schwarzweiß-Bildschirme.

gradient("<kind> [ , <arg> ]")

Verfügbarkeit

Nur IDM für Qt

color-Ressourcen unterstützen unter Qt Farbverläufe (Gradienten).

Der Parameter <kind> definiert die Verlaufsart. Es darf nur eine Verlaufsart angegeben werden.

Die weiteren Parameter können Folgendes enthalten:

  • Ergänzungsparameter zur Verlaufsart
  • Stopp-Punkt-Definitionen
  • Farbdefinitionen

Diese Verlaufsarten stehen zur Verfügung:

Tabelle 24-1: Arten von Farbverläufen

Verlauf

Definition

Erklärung

linear

gradient("Linear, ...")

gradient("LinearV, ...")

vertikaler Verlauf

gradient("LinearH, ...")

horizontaler Verlauf

radial

gradient("Radial, ...")

gradient("Radial, <R>, ...")

radialer Verlauf mit Standardradius 50%

radialer Verlauf mit Ergänzungsparameter Radius R%

Radius wird in Prozent des verfügbaren Platzes angegeben

konisch

gradient("Conical, ...")

gradient("Conical, <S>, ...")

konischer Verlauf mit Start bei 90°

konischer Verlauf mit Ergänzungsparameter S°, der den Startwinkel angibt

Die Farbdefinitionen stehen immer nach der Verlaufsart und eventuellen Ergänzungsparametern. Es können Farbnamen, HTML-Notation sowie die für Farbressourcen bekannten Notationen rgb(…), hls(…) und grey(…) verwendet werden.

Zusätzlich kann zu jeder Farbdefinition ein Stopp-Punkt angegeben werden, mit dem die Gewichtung der Farbe festgelegt wird. Ein Stopp-Punkt ist ein Prozentwert mit optionalem Prozentzeichen, der immer vor der jeweiligen Farbe steht und beeinflusst, wie viel Raum diese Farbe im Farbverlauf einnimmt. Ein Farbverlauf startet bei 0% und endet bei 100%, bezogen auf den Bereich, den er ausfüllt. Die Angabe  … , 20%, green, ... bedeutet zum Beispiel, dass nach 20% des zu füllenden Bereichs die Farbe Grün gesetzt wird. Wenn für den Bereich 0–20% keine andere Farbe gesetzt ist, werden die ersten 20% des Bereichs grün eingefärbt. Falls vor 20% bereits eine andere Farbe gesetzt ist, dann wird ein Übergang zwischen dieser Farbe und Grün dargestellt.

Stopp-Punkte sollten immer in aufsteigender Reihenfolge gesetzt werden. Sind mehrere Farben mit demselben Stopp-Punkt definiert, gilt die Farbe, die in der Parameterliste am weitesten hinten steht. Die Definition ... , 20%, green, 40%, blue, 20%, red, ... erzeugt beispielsweise einen Farbverlauf mit einem Rotton bei 20%, der in einen Blauton übergeht, welcher ab 40% satt dargestellt wird.

Beispiele

gradient("Linear, green, yellow, red");  benannte Farben, gleichmäßig verteilt
gradient("Linear, #00FFFF, #00FF00, #FF0000");  HTML-Notation,
                                                Farben gleichmäßig verteilt
gradient("Linear,red, #00FF00, rgb(0,0,255)");  gemischte Notationen,
                                                Farben gleichmäßig verteilt
gradient("Linear, 20%, green, 60%, yellow, 80%, red");  benannte Farben mit pro-
                                                        zentualen Stopp-Punkten
gradient("Linear, 20, green, 60, yellow, 80 ,red");  das %-Zeichen bei den
                                                     Stopp-Punkten ist optional

Hinweise

Qt lässt das Setzen von Farbverläufen an den meisten Stellen zu, wendet sie aber nicht unbedingt an. Ob ein Farbverlauf angezeigt wird, hängt sehr stark vom Objekt und UI-Stil ab. Dabei sind Flächen (z. B. Hintergründe) meist unproblematisch, bei filigranen Strukturen (z. B. Texten) wird der Verlauf oft durch eine einzelne Farbe ersetzt. Bei Gruppierungsobjekten werden Gradienten als Hintergrund in der Regel dargestellt.

<vordefinierte Farbe>

Ein durch das Fenstersystem definierter Farbidentifikator, der im ISA Dialog Manager verwendet werden kann.

2.2.1 Vordefinierte Farben

Eine Liste der auf dem jeweiligen System zur Verfügung stehenden vordefinieren Farben kann über das Attribut .colorname[integer] am setup Objekt erfragt werden.

2.2.1.1 Unabhängige UI-Farben

Die UI-Farbressourcen sind WSI-unabhängige vordefinierte Farben, die auf allen Systemen in ähnlicher Ausprägung bzw. Bedeutung verfügbar sind. Herangezogen werden hierzu die Default-Farben, die vom aktuellen Desktop/Window Manager oder Theme verwendet werden. Die einheitlichen COLOR-Ressourcen sind wie folgt definiert:

Hinweis für Windows

Die UI_*_COLOR Farben greifen auf die Windows Systemfarben zu. Hierbei ist zum einen zu beachten, dass mit Einführung der Visual Styles von den einzelnen Objekten nicht mehr die Systemfarben sondern durch das Theme definierte Bitmaps verwendet werden. Je nach ausgewähltem Theme kann es somit starke Diskrepanzen geben. Deshalb sollten unter Windows mach Möglichkeit keine Farben (oder UI_NULL_COLOR) gesetzt werden. Zum anderen ist zu beachten, daß mit Windows 10 die Farbvielfalt verringert wurde. Die Farben UI_HEADERBG_COLOR, UI_HEADERFG_COLOR, UI_MENUBG_COLOR, UI_MENUFG_COLOR, UI_TITLEBG_COLOR und UI_TITLEFG_COLOR werden zum Beispiel nicht mehr unterstützt. Das heißt, dass diese Farben zwar noch verwendet werden können, sie aber von keinem Objekt verwendet werden.

2.2.1.2 Motif (X-Windows)

Bei der Verwendung von Systemnamen für Farb-Ressourcen ist es möglich die Default-Farben von Motif anzusprechen. Folgende Systemnamen stehen zur Verfügung:

Darüberhinaus sind unter Motif (X-Windows) alle in der Farbdatei rgb.dat definierten Farben verfügbar.

2.2.1.3 Microsoft Windows

Folgende von aktuellen Einstellungen abhängige Systemfarben stehen im IDM für Windows zur Verfügung:

2.2.1.4 Qt

Als Farbbezeichner können alle SVG-Farbnamen verwendet werden (http://www.w3.org/TR/SVG/types.html#ColorKeywords), wobei Groß- und Kleinschreibung nicht beachtet wird. Bei der Verwendung dieser Farbnamen (zum Beispiel green) werden die Farben entsprechend der SVG-Farbnamen des W3C umgesetzt. Deshalb unterscheiden sich manche Farben in Ton und Intensität von den X11-Farben.

Außerdem stehen folgende, von den aktuellen Einstellungen abhängige Qt-Standardfarben zur Verfügung:

Normal- und Active-Zustand sind dabei identisch.

Der Bezeichner DEFAULT dient als Null-Farbe. Setzt man diese Farbe, wird die jeweilige Farbe auf die entsprechende Standardfarbe (abhängig von den aktuellen Systemeinstellungen) zurückgesetzt.

2.2.2 Dynamisch änderbare Attribute

In der nachfolgenden Tabelle werden die Attribute dargestellt, die dynamisch zur Laufzeit verändert werden können. Dabei ist zu beachten, dass sich .rgb[enum], .hls[enum] und .name gegenseitig ausschließen, beim get also ein can't get value kommt.

Tabelle 24-2: Änderbare Attribute der color-Ressource

Attribut

Datentyp

Indexbereich

Beschreibung

.rgb[enum]

integer

0 … 255

color_red,
color_green,
color_blue

Rot, Grün, Blau

.hls[enum]

integer

0 … 255

color_hue,
color_light,
color_sat

Farbton, Helligkeit, Sättigung

.gradient

string

Art und Parameter eines Farbverlaufs

.name

string

Systemname der Farbe

.grey

integer

0 … 255

Graustufe

.bw

enum

color_black,
color_white

Schwarz-Weiß-Wert

Bei den Attributen .rgb[enum] und .hls[enum] wird die Farbe erst nach Umsetzen des letzten Wertes (color_blue bzw. color_sat) aktualisiert, dadurch hat man die Möglichkeit die Farbe als Gesamtes zu setzen.