Signatur
Beschreibung
UI\Draw\Color ist Teil der UI-Erweiterung (php-ui / libui) und kapselt eine Farbe im RGBA-Farbraum. Die vier Kanäle r (Rot), g (Grün), b (Blau) und a (Alpha/Transparenz) werden als Fließkommazahlen im Bereich von 0.0 bis 1.0 gespeichert und sind als öffentliche Eigenschaften direkt les- und schreibbar.
Die Klasse wird überall dort verwendet, wo die UI-Bibliothek Farbangaben erwartet, etwa beim Zeichnen auf einem UI\Draw\Pen, beim Konfigurieren von UI\Draw\Brush-Objekten oder beim Festlegen von Farben für grafische Primitiven. Sie bietet eine strukturierte Alternative zur Übergabe von rohen Gleitkomma-Werten und macht Code lesbarer und wartbarer.
Objekte können entweder leer erstellt und anschließend befüllt werden, oder es lassen sich beim Konstruktor direkt alle Kanalwerte übergeben. Ein Alpha-Wert von 1.0 bedeutet vollständig opak, 0.0 ist vollständig transparent.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $r | float | 0.0 | Rotanteil der Farbe als Fließkommazahl zwischen 0.0 und 1.0. |
| $g | float | 0.0 | Grünanteil der Farbe als Fließkommazahl zwischen 0.0 und 1.0. |
| $b | float | 0.0 | Blauanteil der Farbe als Fließkommazahl zwischen 0.0 und 1.0. |
| $a | float | 1.0 | Alphakanal (Deckkraft) der Farbe als Fließkommazahl zwischen 0.0 (transparent) und 1.0 (opak). |
Beispiele
Farbe mit Konstruktor-Parametern erstellen
<?php
// Erstellt ein vollständig opakes Rot
$red = new UI\Draw\Color(1.0, 0.0, 0.0, 1.0);
echo $red->r; // 1
echo $red->g; // 0
echo $red->b; // 0
echo $red->a; // 1
Farbe nachträglich befüllen und Transparenz setzen
<?php
// Leeres Farbobjekt anlegen und dann befüllen
$color = new UI\Draw\Color();
$color->r = 0.0;
$color->g = 0.5;
$color->b = 1.0;
$color->a = 0.75; // 75 % Deckkraft
// Farbe an einen Draw-Brush übergeben (Beispielkontext)
$brush = new UI\Draw\Brush();
$brush->color = $color;
Hilfsfunktion: Farbe aus Hex-String erzeugen
<?php
/**
* Wandelt einen HTML-Hex-Farbcode (#RRGGBB) in ein UI\Draw\Color-Objekt um.
*/
function colorFromHex(string $hex, float $alpha = 1.0): UI\Draw\Color
{
$hex = ltrim($hex, '#');
return new UI\Draw\Color(
hexdec(substr($hex, 0, 2)) / 255,
hexdec(substr($hex, 2, 2)) / 255,
hexdec(substr($hex, 4, 2)) / 255,
$alpha
);
}
$orange = colorFromHex('#FF8C00');
echo round($orange->r, 4); // ~1.0
echo round($orange->g, 4); // ~0.549
// Wichtig · Fallstricke
Wertebereich beachten: Kanalwerte außerhalb von 0.0 bis 1.0 können zu undefiniertem Verhalten oder Darstellungsfehlern führen. Eine Validierung der Eingaben vor der Zuweisung ist empfehlenswert.
Die Klasse ist Teil der experimentellen php-ui-Erweiterung, die sich noch im Entwicklungsstadium befindet. API-Änderungen zwischen Versionen sind möglich. Für Produktiveinsatz sollte die Stabilität der verwendeten Erweiterungsversion geprüft werden.