Signatur
Beschreibung
ps_setcolor() legt die aktuelle Farbe für Zeichenoperationen in einem PostScript-Dokument fest. Über den Parameter type kann bestimmt werden, ob die Farbe für Striche (stroke), Füllungen (fill) oder beides (both) gilt.
Der Farbraum wird über den Parameter colorspace definiert. Unterstützte Farbräume sind gray, rgb, cmyk, spot und pattern. Abhängig vom gewählten Farbraum werden die Parameter c1 bis c4 unterschiedlich interpretiert: Bei gray nur c1 (0.0–1.0), bei rgb die Werte c1, c2, c3 (je 0.0–1.0), bei cmyk alle vier Parameter (je 0.0–1.0).
Die Funktion ist Teil der PECL-Erweiterung ps (pslib) und ermöglicht präzise Farbsteuerung bei der programmatischen Erzeugung von PostScript-Dokumenten. Sie sollte nach dem Öffnen einer Seite mit ps_begin_page() aufgerufen werden.
Nicht verwendete Farbkomponenten (z. B. c2–c4 bei Graustufen) sollten mit 0.0 übergeben werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $psdoc Pflicht | resource | Eine gültige PostScript-Ressource, die zuvor mit ps_new() erzeugt wurde. |
|
| $type Pflicht | string | Gibt an, welcher Farbanwendungstyp gesetzt wird. Mögliche Werte: stroke (Umrisse/Linien), fill (Füllungen) oder both (beides gleichzeitig). |
|
| $colorspace Pflicht | string | Der zu verwendende Farbraum. Gültige Werte: gray, rgb, cmyk, spot, pattern. |
|
| $c1 Pflicht | float | Erste Farbkomponente. Bei gray: Graustufe (0.0 = Schwarz, 1.0 = Weiß). Bei rgb: Rotanteil. Bei cmyk: Cyananteil. |
|
| $c2 Pflicht | float | Zweite Farbkomponente. Bei rgb: Grünanteil. Bei cmyk: Magentaanteil. Bei gray: wird ignoriert, bitte 0.0 übergeben. |
|
| $c3 Pflicht | float | Dritte Farbkomponente. Bei rgb: Blauanteil. Bei cmyk: Gelbanteil. Bei gray: wird ignoriert, bitte 0.0 übergeben. |
|
| $c4 Pflicht | float | Vierte Farbkomponente. Nur bei cmyk relevant: Schwarzanteil (Key). In allen anderen Farbräumen bitte 0.0 übergeben. |
Rückgabewert
true bei Erfolg zurück, false im Fehlerfall (z. B. ungültige Ressource oder unbekannter Farbraum).Beispiele
Rote Füllung im RGB-Farbraum setzen
<?php
$ps = ps_new();
if (!$ps) {
die('Fehler beim Erstellen der PS-Ressource');
}
ps_open_file($ps, 'ausgabe.ps');
ps_set_info($ps, 'Creator', 'Beispiel-Skript');
ps_begin_page($ps, 595, 842);
// Füllfarbe auf Rot (RGB) setzen
ps_setcolor($ps, 'fill', 'rgb', 1.0, 0.0, 0.0, 0.0);
// Rechteck zeichnen und füllen
ps_rect($ps, 100, 100, 200, 150);
ps_fill($ps);
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'PostScript-Datei erfolgreich erstellt.';
?>
Graustufen-Strichfarbe und CMYK-Füllung kombinieren
<?php
$ps = ps_new();
ps_open_file($ps, 'kombiniert.ps');
ps_set_info($ps, 'Creator', 'Farb-Beispiel');
ps_begin_page($ps, 595, 842);
// Strichfarbe: Dunkelgrau (Graustufe)
ps_setcolor($ps, 'stroke', 'gray', 0.3, 0.0, 0.0, 0.0);
// Füllfarbe: Himmelblau (CMYK)
ps_setcolor($ps, 'fill', 'cmyk', 0.5, 0.1, 0.0, 0.0, 0.0);
// Strichbreite setzen
ps_setlinewidth($ps, 2.0);
// Rechteck zeichnen, füllen und umranden
ps_rect($ps, 50, 600, 300, 150);
ps_fill_stroke($ps);
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'Kombinierte Farb-Ausgabe erstellt.';
?>
// Wichtig · Fallstricke
Hinweis zur PECL-Erweiterung: ps_setcolor() gehört zur ps-Erweiterung, die auf der externen Bibliothek pslib basiert. Diese Erweiterung ist nicht standardmäßig in PHP enthalten und muss über PECL installiert werden. Unter vielen modernen Linux-Distributionen ist pslib kaum noch gepflegt.
Farbwerte für alle Kanäle müssen im Bereich 0.0 bis 1.0 liegen. Werte außerhalb dieses Bereichs können zu undefiniertem Verhalten führen.
Bei Verwendung des Farbraums spot oder pattern muss die entsprechende Farbe bzw. das Muster zuvor im Dokument definiert worden sein.