Start · Sprachen · PHP · Referenz · ps_setlinecap

ps_setlinecap

Funktion

Setzt das Aussehen der Linienenden in einem PostScript-Dokument.

Kategorie: misc

Signatur

ps_setlinecap(resource $psdoc, int $value): bool

Beschreibung

ps_setlinecap legt fest, wie die Enden von offenen Pfaden (Linien) in einem PostScript-Dokument dargestellt werden. Der sogenannte Line Cap bestimmt die Form, die an den Endpunkten einer gezeichneten Linie erscheint – also ob die Linie abrupt endet, rund oder quadratisch verlängert wird.

Die Funktion gehört zur ps-Erweiterung (pslib) für PHP und wird verwendet, wenn PostScript-Dokumente direkt aus PHP heraus erzeugt werden. Sie wirkt sich auf alle nachfolgend gezeichneten Pfade aus, bis der Wert erneut geändert wird.

Folgende Werte sind gültig:

  • 0Butt Cap: Die Linie endet exakt am Endpunkt, ohne Verlängerung.
  • 1Round Cap: An jedem Endpunkt wird ein Halbkreis mit dem Radius der halben Linienbreite gezeichnet.
  • 2Projecting Square Cap: Das Ende wird quadratisch um die halbe Linienbreite über den Endpunkt hinaus verlängert.

Diese Einstellung ist besonders relevant bei dickeren Linien, wo die Art des Abschlusses visuell deutlich sichtbar ist. Typische Anwendungsfälle sind die Gestaltung von Diagrammen, Grafiken oder Vektorgrafiken in PostScript.

Parameter

Name Typ Default Beschreibung
$psdoc Pflicht resource Die Ressource des PostScript-Dokuments, die von ps_new() zurückgegeben wurde.
$value Pflicht int Der gewünschte Line-Cap-Stil: 0 für Butt Cap, 1 für Round Cap, 2 für Projecting Square Cap.

Rückgabewert

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

Beispiele

Verschiedene Linienenden in einem PostScript-Dokument

<?php
$ps = ps_new();
if (!$ps) {
    die('Konnte kein PS-Dokument erstellen');
}

ps_open_file($ps, 'linienenden.ps');
ps_begin_page($ps, 596, 842);

// Linienbreite setzen, damit der Effekt sichtbar wird
ps_setlinewidth($ps, 10);

// Butt Cap (Standard)
ps_setlinecap($ps, 0);
ps_moveto($ps, 50, 750);
ps_lineto($ps, 250, 750);
ps_stroke($ps);

// Round Cap
ps_setlinecap($ps, 1);
ps_moveto($ps, 50, 700);
ps_lineto($ps, 250, 700);
ps_stroke($ps);

// Projecting Square Cap
ps_setlinecap($ps, 2);
ps_moveto($ps, 50, 650);
ps_lineto($ps, 250, 650);
ps_stroke($ps);

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

echo 'PostScript-Dokument erfolgreich erstellt.';
?>
PostScript-Dokument erfolgreich erstellt.

Runde Linienenden für eine ansprechende Grafik

<?php
$ps = ps_new();
ps_open_file($ps, 'runde_linie.ps');
ps_begin_page($ps, 400, 200);

// Runde Linienenden aktivieren
ps_setlinecap($ps, 1);
ps_setlinewidth($ps, 15);

// Eine geschwungene Linie mit runden Enden zeichnen
ps_moveto($ps, 30, 100);
ps_lineto($ps, 180, 150);
ps_lineto($ps, 320, 50);
ps_lineto($ps, 370, 100);
ps_stroke($ps);

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

echo 'Grafik mit runden Linienenden erstellt.';
?>
Grafik mit runden Linienenden erstellt.

// Wichtig · Fallstricke

Die ps-Erweiterung ist nicht standardmäßig in PHP enthalten und muss über die pslib-Bibliothek kompiliert bzw. als PECL-Paket installiert werden. Auf vielen Produktivsystemen ist sie nicht verfügbar.

Der gesetzte Line-Cap-Stil gilt für alle nachfolgend gezeichneten Pfade innerhalb des aktuellen Grafikzustands. Um den Stil nur temporär zu ändern, können ps_save() und ps_restore() verwendet werden.

Der Effekt ist erst bei größeren Linienbreiten deutlich sichtbar. Bei sehr dünnen Linien (z. B. 1 pt) ist der Unterschied zwischen den Stilen kaum wahrnehmbar.