Start · Sprachen · PHP · Referenz · ps_setcolor

ps_setcolor

Funktion

Setzt die aktuelle Zeichen- oder Füllfarbe für ein PostScript-Dokument.

seit PHP pecl/ps 1.1.0 Kategorie: misc

Signatur

ps_setcolor(resource $psdoc, string $type, string $colorspace, float $c1, float $c2, float $c3, float $c4): bool

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. c2c4 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

Typ
bool
Beschreibung
Gibt 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.';
?>
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.';
?>
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.