====== std.svg.defs ====== Wiederverwendbare Definitionen im ''%%%%''-Block: Farbverläufe (linear, radial), Kachelmuster, Symbole, Marker und Clip-Pfade. Die Begin-Funktionen liefern eine **laufende Nummer** zurück. Diese Nummer ist der Schlüssel für alles Weitere: Farbstopps, das Ende der Definition und die Zuweisung an ein Element (''SvgSetFillGradient'', ''SvgSetFillPattern'' aus [[lyx_-_programmiersprache:units:svg:elements|std.svg.elements]]). → [[lyx_-_programmiersprache:units:svg|std.svg]] · [[lyx_-_programmiersprache:units:svg:style|std.svg.style]] · [[lyx_-_programmiersprache:units:svg:elements|std.svg.elements]] ---- ===== Verwendung ===== import std.io; import std.svg.builder; import std.svg.defs; import std.svg.elements; import std.svg.style; fn main(): int64 { var doc: int64 := SvgNew(400.0, 300.0); SvgSetPrettyPrint(doc, 1); // Linearer Verlauf: Koordinaten als Anteil 0.0–1.0, // Farbstopps als drei Anteile (r, g, b) var grad: int64 := SvgLinearGradient(doc, "blauRot", 0.0, 0.0, 1.0, 0.0); SvgGradientStop(doc, grad, 0.0, 0.0, 0.0, 1.0); // blau SvgGradientStop(doc, grad, 1.0, 1.0, 0.0, 0.0); // rot SvgGradientEnd(doc, grad); // Verlauf verwenden — ueber die Nummer, nicht ueber den Namen SvgSetFillGradient(doc, grad); SvgRect(doc, 10.0, 10.0, 300.0, 100.0); SvgApply(doc); Print(SvgToString(doc)); Print("\n"); SvgFree(doc); return 0; } Der übergebene Name (''"blauRot"'') wird als ''class'' geschrieben; das ''id'' vergibt die Unit selbst (''grad0'', ''sym1'', ''clip2'' …). > **Symbole, Clip-Pfade und Marker lassen sich derzeit nicht füllen** ([[https://github.com/SEOLizer/LyX-Compiler/issues/1685|#1685]]). Die Begin-Funktionen schreiben in den ''%%%%''-Puffer, die Formfunktionen aus ''std.svg.elements'' dagegen in den Rumpf — eine zwischen ''SvgSymbolBegin'' und ''SvgSymbolEnd'' gezeichnete Form landet sichtbar im Bild statt in der Definition, und die Definition bleibt leer. > > Ebenfalls aus #1685: ''SvgUse(doc, "stern", …)'' schreibt ''href="#stern"'' unverändert heraus und trifft damit nicht das automatisch vergebene ''id''. > > Brauchbar sind heute die **Verläufe** — sie kommen ohne die Formfunktionen aus und werden über ''SvgSetFillGradient(doc, gradId)'' zugewiesen. ---- ===== Konstanten ===== ^ Name ^ Wert ^ Verwendung ^ | ''SVG_SPREAD_PAD'' / ''SVG_SPREAD_REFLECT'' / ''SVG_SPREAD_REPEAT'' | 0 / 1 / 2 | ''SvgGradientSpread'' | ---- ===== Funktionen ===== ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''SvgLinearGradient(doc: int64, id: pchar, x1: f64, y1: f64, x2: f64, y2: f64): int64'' | pub | Linearen Verlauf beginnen, liefert die Verlaufsnummer | | ''SvgRadialGradient(doc: int64, id: pchar, cx: f64, cy: f64, r: f64): int64'' | pub | Radialen Verlauf beginnen | | ''SvgGradientStop(doc: int64, gid: int64, offset: f64, r: f64, g: f64, b: f64): void'' | pub | Farbstopp, Farbe als drei Anteile 0.0–1.0 | | ''SvgGradientStopA(doc: int64, gid: int64, offset: f64, hex: pchar, a: f64): void'' | pub | Farbstopp als Hex mit Deckkraft | | ''SvgGradientEnd(doc: int64, gid: int64): void'' | pub | Linearen Verlauf schließen | | ''SvgRadialGradientEnd(doc: int64, gid: int64): void'' | pub | Radialen Verlauf schließen | | ''SvgGradientSpread(doc: int64, gid: int64, spread: int64): void'' | pub | Fortsetzung außerhalb, ''SVG_SPREAD_*'' | | ''SvgGradientUserSpace(doc: int64, gid: int64): void'' | pub | Koordinaten im Benutzersystem statt als Anteil | | ''SvgGradientRotate(doc: int64, gid: int64, angle: f64): void'' | pub | Verlauf drehen | | ''SvgGradientFocus(doc: int64, fx: f64, fy: f64): void'' | pub | Brennpunkt eines radialen Verlaufs | | ''SvgPatternBegin(doc: int64, id: pchar, x: f64, y: f64, w: f64, h: f64): int64'' | pub | Kachelmuster beginnen | | ''SvgPatternEnd(doc: int64): void'' | pub | Kachelmuster schließen | | ''SvgSetFillPattern(doc: int64, patId: int64): void'' | pub | Muster als Füllung zuweisen | | ''SvgSymbolBegin(doc: int64, id: pchar, vw: f64, vh: f64): int64'' | pub | Symbol beginnen (ViewBox 0 0 vw vh) | | ''SvgSymbolEnd(doc: int64): void'' | pub | Symbol schließen | | ''SvgUse(doc: int64, id: pchar, x: f64, y: f64, w: f64, h: f64): void'' | pub | Symbol einsetzen (siehe Kasten) | | ''SvgMarkerBegin(doc: int64, id: pchar, mw: f64, mh: f64, rx: f64, ry: f64): int64'' | pub | Marker beginnen | | ''SvgMarkerEnd(doc: int64): void'' | pub | Marker schließen | | ''SvgClipPathBegin(doc: int64, id: pchar): int64'' | pub | Clip-Pfad beginnen | | ''SvgClipPathEnd(doc: int64): void'' | pub | Clip-Pfad schließen | Letzte Aktualisierung: 2026-08-19 — Seite gegen die echten Signaturen neu geschrieben: ''SvgClipBegin'', ''SvgMarkerArrow'', ''SvgPattern'' und die Style-String-Aufrufe gibt es nicht; Farbstopps nehmen die Verlaufsnummer und drei Farbanteile. Beispiel mit ''lyxc 1.1.3I'' übersetzt und ausgeführt, Ausgabe übernommen; Befunde als #1685 gemeldet.