Start · Sprachen · PHP · Referenz · ps_fill

ps_fill

Funktion

Füllt den aktuellen Pfad im PostScript-Dokument mit der aktuell gesetzten Füllfarbe.

Kategorie: misc

Signatur

ps_fill(resource $psdoc): bool

Beschreibung

ps_fill() gehört zur ps-Erweiterung (pslib) für PHP und füllt den zuvor definierten Pfad im PostScript-Dokument mit der aktuellen Füllfarbe. Der Pfad wird dabei verbraucht (geschlossen und gefüllt), danach ist der aktuelle Pfad leer.

Die Funktion wird typischerweise eingesetzt, nachdem mit Funktionen wie ps_moveto(), ps_lineto(), ps_curveto() oder ps_arc() ein Pfad aufgebaut wurde. Die Füllfarbe wird zuvor mit ps_setcolor() festgelegt.

Im Unterschied zu ps_fill_stroke() wird bei ps_fill() nur das Innere des Pfades gefüllt, ohne eine Konturlinie zu zeichnen. Für Kontur ohne Füllung steht ps_stroke() zur Verfügung.

Die Funktion ist nützlich, wenn PostScript-Dokumente programmatisch erzeugt werden sollen, etwa für Berichte, Grafiken oder PDFs, die über PostScript generiert werden.

Parameter

Name Typ Default Beschreibung
$psdoc Pflicht resource Das PostScript-Dokument-Handle, das von ps_new() zurückgegeben wurde.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler.

Beispiele

Einfaches gefülltes Rechteck zeichnen

<?php
// PostScript-Dokument erstellen
$ps = ps_new();

if (!ps_open_file($ps, '/tmp/example.ps')) {
    die('Konnte Datei nicht öffnen.');
}

ps_set_info($ps, 'Creator', 'Beispiel');
ps_set_info($ps, 'Title', 'Gefülltes Rechteck');

ps_begin_page($ps, 595, 842); // DIN A4

// Füllfarbe auf Rot setzen
ps_setcolor($ps, 'fill', 'rgb', 1.0, 0.0, 0.0, 0.0);

// Rechteck als Pfad definieren
ps_moveto($ps, 100, 100);
ps_lineto($ps, 300, 100);
ps_lineto($ps, 300, 300);
ps_lineto($ps, 100, 300);
ps_closepath($ps);

// Pfad füllen (ohne Kontur)
ps_fill($ps);

ps_end_page($ps);
ps_close($ps);
ps_delete($ps);

echo 'PostScript-Datei erfolgreich erstellt.';
PostScript-Datei erfolgreich erstellt.

Gefüllten Kreis zeichnen

<?php
$ps = ps_new();

if (!ps_open_file($ps, '/tmp/kreis.ps')) {
    die('Konnte Datei nicht öffnen.');
}

ps_set_info($ps, 'Title', 'Gefüllter Kreis');

ps_begin_page($ps, 595, 842);

// Blaue Füllfarbe
ps_setcolor($ps, 'fill', 'rgb', 0.0, 0.0, 1.0, 0.0);

// Kreis mit Mittelpunkt (200, 400) und Radius 100
ps_arc($ps, 200, 400, 100, 0, 360);

// Nur füllen, keine Kontur
ps_fill($ps);

ps_end_page($ps);
ps_close($ps);
ps_delete($ps);

echo 'Kreis erfolgreich gezeichnet.';
Kreis erfolgreich gezeichnet.

// Wichtig · Fallstricke

Wichtig: Die ps-Erweiterung ist nicht standardmäßig in PHP enthalten und erfordert die Installation der externen Bibliothek pslib. Sie wird seit PHP 7.x kaum noch aktiv gepflegt und ist in modernen PHP-Umgebungen oft nicht verfügbar.

Nach dem Aufruf von ps_fill() wird der aktuelle Pfad geleert. Soll derselbe Pfad sowohl gefüllt als auch mit einer Kontur versehen werden, sollte stattdessen ps_fill_stroke() verwendet werden, um den Pfad nicht doppelt definieren zu müssen.

Die Füllung erfolgt nach der Nonzero Winding Number Rule von PostScript. Für die Even-Odd Rule steht in PostScript das eofill-Operator zur Verfügung, der jedoch in dieser PHP-Erweiterung möglicherweise nicht direkt abgebildet wird.