Start · Sprachen · PHP · Referenz · ps_setlinejoin

ps_setlinejoin

Funktion

Setzt die Art der Linienverbindung (Line-Join) für nachfolgende Pfade in einem PostScript-Dokument.

Kategorie: misc

Signatur

ps_setlinejoin(resource $psdoc, int $type): bool

Beschreibung

ps_setlinejoin legt fest, wie zwei aufeinandertreffende Liniensegmente an ihrem Verbindungspunkt gezeichnet werden. Dies betrifft alle danach gezeichneten Pfade im PostScript-Dokument, das mit dem Handle $psdoc referenziert wird.

Es gibt drei mögliche Verbindungsarten: Miter Join (spitzer Stoß, Typ 0) verlängert die Außenkanten bis sie sich treffen; Round Join (runder Stoß, Typ 1) zeichnet einen Halbkreis um den Verbindungspunkt; Bevel Join (abgeschnittener Stoß, Typ 2) verbindet die Außenkanten mit einer geraden Linie. Die Wahl der Verbindungsart beeinflusst das Erscheinungsbild von Pfaden erheblich, insbesondere bei größeren Strichbreiten.

Die Funktion gehört zur ps-Erweiterung (pslib) und erfordert, dass diese in PHP installiert und aktiviert ist. Das Dokument muss zuvor mit ps_new() und ps_open_file() erstellt worden sein.

Parameter

Name Typ Default Beschreibung
$psdoc Pflicht resource Die Ressource des PostScript-Dokuments, die von ps_new() zurückgegeben wurde.
$type Pflicht int Die Art der Linienverbindung: 0 = Miter Join (spitz), 1 = Round Join (rund), 2 = Bevel Join (abgeflacht). Entspricht den PostScript-Konstanten PS_LINEJOIN_MITER, PS_LINEJOIN_ROUND und PS_LINEJOIN_BEVEL.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler (z. B. ungültiges Handle oder ungültiger Typ).

Beispiele

Runde Linienverbindung für ein Polygon

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

// Strichbreite setzen, damit die Join-Art sichtbar wird
ps_setlinewidth($ps, 10);

// Round Join aktivieren
ps_setlinejoin($ps, PS_LINEJOIN_ROUND);

// Ein Dreieck zeichnen
ps_moveto($ps, 100, 700);
ps_lineto($ps, 200, 750);
ps_lineto($ps, 150, 650);
ps_closepath($ps);
ps_stroke($ps);

ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'PostScript-Datei mit runden Linienverbindungen erstellt.';
?>
PostScript-Datei mit runden Linienverbindungen erstellt.

Vergleich aller drei Join-Typen

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

$joinTypes = [
    PS_LINEJOIN_MITER => 'Miter',
    PS_LINEJOIN_ROUND => 'Round',
    PS_LINEJOIN_BEVEL => 'Bevel',
];

$xOffset = 80;
foreach ($joinTypes as $type => $label) {
    ps_setlinejoin($ps, $type);
    ps_moveto($ps, $xOffset, 750);
    ps_lineto($ps, $xOffset + 60, 700);
    ps_lineto($ps, $xOffset + 120, 750);
    ps_stroke($ps);
    $xOffset += 160;
}

ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'Vergleich der Join-Typen erstellt.';
?>
Vergleich der Join-Typen erstellt.

// Wichtig · Fallstricke

Die Konstanten PS_LINEJOIN_MITER (0), PS_LINEJOIN_ROUND (1) und PS_LINEJOIN_BEVEL (2) sind nur verfügbar, wenn die pslib-Erweiterung korrekt installiert ist. Alternativ können die Integer-Werte direkt verwendet werden.

Beim Miter Join (Typ 0) kann der Verbindungspunkt bei sehr spitzen Winkeln extrem lang werden. In solchen Fällen empfiehlt es sich, zusätzlich ps_setmiterlimit() zu verwenden, um die maximale Länge des Gehrungsstoßes zu begrenzen.

Die Einstellung gilt ab dem Aufruf von ps_setlinejoin für alle nachfolgend gezeichneten Pfade, bis sie erneut geändert wird.