Signatur
Beschreibung
UI\Draw\Text\Layout ist Teil der PHP-UI-Erweiterung (ui) und kapselt das fertige Text-Layout-Objekt, das aus einem UI\Draw\Text\Span und einer maximalen Breite erzeugt wird. Es beschreibt, wie ein Text innerhalb eines bestimmten Bereichs umgebrochen und angeordnet wird, bevor er mit dem UI\Draw\Pen tatsächlich auf die Zeichenfläche gerendert wird.
Ein Layout-Objekt wird typischerweise in Zeichenroutinen innerhalb von UI\Draw\Path-Callbacks verwendet. Dabei wird zunächst ein UI\Draw\Text\Span mit dem gewünschten Text und Schriftart vorbereitet, anschließend ein Layout daraus erzeugt und schließlich über UI\Draw\Pen::text() an eine bestimmte Position gezeichnet.
Über die Methode setWidth() lässt sich die maximale Breite des Layouts nachträglich anpassen, was z. B. für responsive Layouts innerhalb von UI-Fenstern nützlich ist. Mit getWidth() kann die aktuell eingestellte Breite abgefragt werden.
Diese Klasse gehört zur ui-Erweiterung, die auf libui aufsetzt und nativer GUI-Entwicklung in PHP dient. Sie ist nicht in der PHP-Standarddistribution enthalten und muss separat über PECL installiert werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $span Pflicht | UI\Draw\Text\Span | Der UI\Draw\Text\Span, der den zu layoutenden Text sowie Schriftart und -größe enthält. |
|
| $width Pflicht | float | Die maximale Breite des Textlayouts in Pixeln. Text, der breiter ist, wird automatisch umgebrochen. |
Rückgabewert
Beispiele
Einfaches Text-Layout erstellen und zeichnen
<?php
use UI\Draw\Text\Font\Descriptor;
use UI\Draw\Text\Span;
use UI\Draw\Text\Layout;
use UI\Draw\Pen;
use UI\Draw\Point;
// Schriftart definieren
$fontDescriptor = new Descriptor('Arial', 14);
// Span mit Text und Schriftart erzeugen
$span = new Span('Hallo, PHP-UI!', $fontDescriptor);
// Layout mit max. 200px Breite erstellen
$layout = new Layout($span, 200);
// Im Zeichenkontext (z.B. innerhalb eines Draw-Handlers):
// $pen->text(new Point(10, 10), $layout);
echo 'Layout-Breite: ' . $layout->getWidth();
Breite eines bestehenden Layouts anpassen
<?php
use UI\Draw\Text\Font\Descriptor;
use UI\Draw\Text\Span;
use UI\Draw\Text\Layout;
$fontDescriptor = new Descriptor('Times New Roman', 12);
$span = new Span('Dies ist ein längerer Beispieltext für das Layout.', $fontDescriptor);
$layout = new Layout($span, 300);
echo 'Alte Breite: ' . $layout->getWidth() . PHP_EOL;
// Breite nachträglich anpassen
$layout->setWidth(500);
echo 'Neue Breite: ' . $layout->getWidth() . PHP_EOL;
// Wichtig · Fallstricke
Achtung: Die ui-Erweiterung ist nicht Teil der PHP-Kerninstallation. Sie muss über PECL installiert werden (pecl install ui) und setzt die native Bibliothek libui voraus. Die API gilt derzeit noch als experimentell und kann sich zwischen Versionen ändern.
Ein Layout-Objekt ist nur innerhalb von Zeichenoperationen (Draw-Callbacks) sinnvoll nutzbar. Das direkte Verwenden außerhalb eines UI-Kontexts hat keinen sichtbaren Effekt.