====== std.svg.builder ====== Lebenszyklus eines SVG-Dokuments: anlegen, viewBox setzen, Einrückung wählen, serialisieren, speichern, freigeben. Ein Dokument ist ein ''int64''-Handle; es gibt keinen eigenen ''Svg''-Typ. → [[lyx_-_programmiersprache:units:svg|std.svg]] · [[lyx_-_programmiersprache:units:svg:xml|std.svg.xml]] · [[lyx_-_programmiersprache:units:svg:style|std.svg.style]] ---- ===== Verwendung ===== import std.io; import std.svg.builder; import std.svg.elements; import std.svg.style; fn main(): int64 { // Breite/Hoehe in px, dazu die viewBox var doc: int64 := SvgNewViewBox(800.0, 600.0, 0.0, 0.0, 100.0, 100.0); SvgSetPrettyPrint(doc, 1); // 0 = alles in einer Zeile // Gruppe: Stil und Transformation VOR SvgGroupBegin* setzen, // sie landen dann am , nicht am ersten Kind SvgTranslate(doc, 10.0, 5.0); SvgGroupBeginId(doc, "layer1"); SvgSetFillHex(doc, "teal"); SvgCircle(doc, 20.0, 20.0, 10.0); SvgApply(doc); SvgGroupEnd(doc); var rc: int64 := SvgSave(doc, "out.svg"); // 0 = geschrieben Print("SvgSave rc="); PrintLn(IntToStr(rc)); Print(SvgToString(doc)); Print("\n"); SvgFree(doc); return 0; } SvgSave rc=0 Beachtenswert: Die Gruppe wird erst beim ersten Kind geschrieben. Alles, was **bis dahin** an Stil gesetzt ist — hier auch das nach ''SvgGroupBeginId'' gesetzte ''fill'' —, landet am ''%%%%''. Wer die Füllung am Kind will, setzt sie erst nach dem ersten ''SvgApply''. ---- ===== Funktionen ===== ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''SvgNew(width: f64, height: f64): int64'' | pub | Dokument anlegen, Maße in px | | ''SvgNewViewBox(width: f64, height: f64, vbX: f64, vbY: f64, vbW: f64, vbH: f64): int64'' | pub | Dokument mit ''viewBox'' | | ''SvgSetViewBox(doc: int64, x: f64, y: f64, w: f64, h: f64): void'' | pub | ''viewBox'' nachträglich setzen | | ''SvgSetPrettyPrint(doc: int64, enabled: int64): void'' | pub | Zeilenumbrüche und Einrückung an (''1'') oder aus (''0'') | | ''SvgToString(doc: int64): pchar'' | pub | Fertiges Dokument als Zeichenkette | | ''SvgSave(doc: int64, path: pchar): int64'' | pub | In eine Datei schreiben; ''0'' bei Erfolg | | ''SvgFree(doc: int64): void'' | pub | Speicher freigeben | Gruppen liegen in [[lyx_-_programmiersprache:units:svg:elements|std.svg.elements]]: ''SvgGroupBegin(doc)'', ''SvgGroupBeginId(doc, id)'' und ''SvgGroupEnd(doc)'' — beide Begin-Formen liefern die Verschachtelungstiefe zurück und nehmen **keinen** Transform- oder Style-String; dafür sind die Setter aus ''std.svg.style'' da. Ein ''SvgSetBackground'' gibt es nicht: Für einen farbigen Grund zeichnet man als erstes Element ein ''SvgRect'' über den ganzen Viewport. Letzte Aktualisierung: 2026-08-19 — Seite gegen die echten Signaturen berichtigt: ''SvgSave'' liefert einen Rückgabewert, ''SvgSetBackground'' existiert nicht, Gruppen nehmen keinen Transform-String und stehen in ''std.svg.elements''. Beispiel mit ''lyxc 1.1.3I'' übersetzt und ausgeführt, Ausgabe übernommen.