Signatur
Beschreibung
ps_setflat() gehört zur ps-Erweiterung (PostScript) von PHP und legt die sogenannte Flatness für das aktuelle PostScript-Dokument fest. Die Flatness ist ein numerischer Wert, der bestimmt, wie genau Bézierkurven und andere Kurvenformen approximiert werden, wenn sie auf dem Ausgabegerät gerendert werden.
Ein niedrigerer Wert (nahe 0) bedeutet eine präzisere Annäherung an die Kurve – mehr Liniensegmente werden zur Darstellung verwendet, was die Ausgabe qualitativ hochwertiger, aber rechnerisch aufwendiger macht. Ein höherer Wert führt zu einer gröberen Annäherung, die weniger Ressourcen beansprucht, dafür aber sichtbar eckiger wirken kann.
In PostScript ist der gültige Bereich für die Flatness typischerweise zwischen 0 und 100. Der Wert 0 wird üblicherweise als gerätespezifisch interpretiert und delegiert die Entscheidung an den PostScript-Interpreter. Diese Funktion ist nützlich, wenn sehr komplexe Grafiken performant gerendert werden sollen und eine leicht reduzierte Kurvengenauigkeit akzeptabel ist.
Die Funktion wird im Kontext der ps_*-Bibliothek verwendet, die PostScript-Dokumente programmatisch erzeugt. Sie sollte nach dem Öffnen des Dokuments und vor dem Zeichnen der entsprechenden Pfade aufgerufen werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $psdoc Pflicht | resource | Eine Ressource, die ein PostScript-Dokument repräsentiert, wie sie von ps_new() zurückgegeben wird. |
|
| $value Pflicht | float | Der Flatness-Wert im Bereich von 0 bis 100. Niedrige Werte erzeugen präzisere Kurven, hohe Werte eine gröbere, aber performantere Approximation. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler (z. B. ungültige Ressource oder ungültiger Wert).Beispiele
Einfaches PostScript-Dokument mit gesetzter Flatness
<?php
$ps = ps_new();
if (!$ps) {
die('Konnte kein PS-Dokument erstellen');
}
ps_open_file($ps, 'ausgabe.ps');
ps_begin_page($ps, 596, 842);
// Flatness auf niedrigen Wert setzen für präzise Kurven
ps_setflat($ps, 1.0);
// Einen Kreis zeichnen (Kurvenapproximation)
ps_arc($ps, 298, 421, 100, 0, 360);
ps_stroke($ps);
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'PostScript-Datei erfolgreich erstellt.';
Hohe Flatness für komplexe Grafiken mit vielen Kurven
<?php
$ps = ps_new();
ps_open_file($ps, 'komplex.ps');
ps_begin_page($ps, 596, 842);
// Höhere Flatness für bessere Performance bei vielen Kurven
ps_setflat($ps, 10.0);
// Mehrere Bögen zeichnen
for ($i = 0; $i < 20; $i++) {
$x = 50 + ($i * 25);
ps_arc($ps, $x, 400, 20, 0, 360);
ps_stroke($ps);
}
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'Komplexes PostScript-Dokument erstellt.';
// Wichtig · Fallstricke
Hinweis zur Verfügbarkeit: Die ps-Erweiterung ist nicht standardmäßig in PHP enthalten und muss separat installiert bzw. kompiliert werden (PECL-Paket ps). Überprüfe mit extension_loaded('ps'), ob sie verfügbar ist.
Der Wert 0 für die Flatness ist in PostScript als gerätespezifisch definiert – der PostScript-Interpreter wählt dann selbst einen geeigneten Wert. Werte außerhalb des Bereichs 0–100 können je nach Interpreter zu undefiniertem Verhalten führen.
Bei der Ausgabe für hochauflösende Druckgeräte empfiehlt sich eine niedrige Flatness (z. B. 0.5 bis 2.0), während für die Bildschirmvorschau oder bei komplexen Szenen auch höhere Werte wie 5 bis 10 sinnvoll sein können.