Start · Sprachen · PHP · Referenz · ps_setmiterlimit

ps_setmiterlimit

Funktion

Setzt das Miter-Limit für spitze Ecken in einem PostScript-Dokument, das mit der ps-Erweiterung erstellt wird.

Kategorie: misc

Signatur

ps_setmiterlimit(resource $psdoc, float $value): bool

Beschreibung

ps_setmiterlimit legt den Schwellenwert fest, ab dem spitze Ecken (Miter Joins) bei Linienzügen in einem PostScript-Dokument automatisch als abgeschnittene Ecken (Bevel Joins) dargestellt werden. Dieser Wert entspricht dem PostScript-Befehl setmiterlimit.

Das Miter-Limit ist das Verhältnis der Gehrungslänge (Miter Length) zur Linienbreite. Ist das Verhältnis bei einer gegebenen Ecke größer als das eingestellte Limit, wird die Ecke abgeschnitten statt als spitze Ecke gerendert. Der Standardwert in PostScript ist 10. Kleine Werte (z. B. 1) bewirken, dass fast alle spitzen Ecken abgeschnitten werden, während große Werte (z. B. 100) nahezu alle Winkel als echte Gehrungsecken belassen.

Die Funktion ist besonders nützlich, wenn Linienzüge mit ps_lineto oder ähnlichen Funktionen gezeichnet werden und sehr spitze Winkel auftreten, die unschön wirkende, übermäßig lange Spitzen erzeugen würden. Durch Anpassen des Limits lässt sich das Erscheinungsbild solcher Ecken kontrollieren.

Voraussetzung für den Einsatz dieser Funktion ist die PECL-Erweiterung ps (PostScript), die separat installiert werden muss.

Parameter

Name Typ Default Beschreibung
$psdoc Pflicht resource Die Ressource des PostScript-Dokuments, die von ps_new() zurückgegeben wurde.
$value Pflicht float Das neue Miter-Limit als positiver Gleitkommawert. Werte kleiner als 1 sind ungültig; der PostScript-Standard-Vorgabewert ist 10.0.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false im Fehlerfall (z. B. bei einem ungültigen Dokument-Handle oder einem ungültigen Wert).

Beispiele

Miter-Limit setzen und einen Winkel zeichnen

<?php
// Neues PostScript-Dokument erstellen
$ps = ps_new();
ps_open_file($ps, 'ausgabe.ps');
ps_begin_page($ps, 596, 842);

// Linienbreite und Miter-Limit einstellen
ps_setlinewidth($ps, 8.0);
ps_setmiterlimit($ps, 2.0); // Spitze Ecken werden früh abgeschnitten

// Einen spitzen Winkel zeichnen
ps_moveto($ps, 100, 400);
ps_lineto($ps, 200, 700);
ps_lineto($ps, 300, 400);
ps_stroke($ps);

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

echo 'PostScript-Datei mit Miter-Limit erstellt.';
?>
PostScript-Datei mit Miter-Limit erstellt.

Vergleich: Standard-Miter-Limit vs. niedriges Limit

<?php
$ps = ps_new();
ps_open_file($ps, 'vergleich.ps');
ps_begin_page($ps, 596, 842);

ps_setlinewidth($ps, 6.0);

// Hoher Miter-Limit: spitze Ecken bleiben erhalten
ps_setmiterlimit($ps, 10.0);
ps_moveto($ps, 50, 600);
ps_lineto($ps, 150, 780);
ps_lineto($ps, 250, 600);
ps_stroke($ps);

// Niedriger Miter-Limit: spitze Ecken werden abgeschnitten
ps_setmiterlimit($ps, 1.5);
ps_moveto($ps, 50, 400);
ps_lineto($ps, 150, 580);
ps_lineto($ps, 250, 400);
ps_stroke($ps);

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

echo 'Vergleichsdatei erstellt.';
?>
Vergleichsdatei erstellt.

// Wichtig · Fallstricke

Ungültige Werte: Laut PostScript-Spezifikation muss das Miter-Limit mindestens 1.0 betragen. Werte kleiner als 1.0 sind laut Standard unzulässig und können zu einem PostScript-Fehler führen.

Erweiterungs-Abhängigkeit: Diese Funktion ist nur verfügbar, wenn die PECL-Erweiterung ps installiert und aktiviert ist. Sie ist nicht Teil der PHP-Standardinstallation.

Das Miter-Limit gilt nur für den Miter Join-Stil (ps_setlinejoin mit Wert 0). Bei anderen Join-Stilen (Rund oder Abgeschnitten) hat dieses Limit keine Wirkung.