====== std.svg.style ====== Stil und Transformation für das jeweils **nächste** Element: Füllung, Rahmen, Deckkraft, Strichmuster und die Transform-Kette. Die Unit kennt **keine** Style-Strings und keinen Style-Builder. Jede Funktion nimmt das Dokument (''doc'') und merkt den Wert vor; geschrieben wird er, sobald das Element mit ''SvgApply'' abgeschlossen wird — danach ist der Stil wieder leer. → [[lyx_-_programmiersprache:units:svg|std.svg]] · [[lyx_-_programmiersprache:units:svg:elements|std.svg.elements]] · [[lyx_-_programmiersprache:units:svg:defs|std.svg.defs]] ---- ===== Verwendung ===== import std.io; import std.svg.builder; import std.svg.elements; import std.svg.style; fn main(): int64 { var doc: int64 := SvgNew(400.0, 300.0); SvgSetPrettyPrint(doc, 1); // Farben als Anteile 0.0–1.0, nicht als 0–255 SvgSetFill(doc, 0.12, 0.56, 1.0); SvgSetOpacity(doc, 0.8); SvgRect(doc, 10.0, 10.0, 100.0, 60.0); SvgApply(doc); // Fuellung mit Alpha, Strichmuster, Linienenden SvgSetFillAlpha(doc, 1.0, 0.0, 0.0, 0.5); SvgSetStrokeWidth(doc, 3.0); SvgSetLineCap(doc, SVG_CAP_ROUND); SvgSetLineJoin(doc, SVG_JOIN_BEVEL); SvgSetDashArray(doc, "5,3"); SvgLine(doc, 20.0, 120.0, 380.0, 120.0); SvgApply(doc); // Transformationen reihen sich in der Aufrufreihenfolge SvgTranslate(doc, 100.0, 50.0); SvgRotateAround(doc, 45.0, 200.0, 200.0); SvgScale(doc, 2.0, 1.5); SvgCircle(doc, 100.0, 100.0, 20.0); SvgApply(doc); Print(SvgToString(doc)); Print("\n"); SvgFree(doc); return 0; } Zwei Punkte, die beim Schreiben dieser Seite auffielen: * ''SvgSetFill'' nimmt **Anteile** (''0.0''–''1.0''), nicht 0–255; die Ausgabe ist Hex. Wer eine benannte Farbe oder ein fertiges Hex will, nimmt ''SvgSetFillHex(doc, "gold")''. * Für den Rahmen gibt es **kein** ''SvgSetStrokeHex'' — nur ''SvgSetStroke'' mit drei Anteilen, ''SvgSetStrokeNone'' und ''SvgSetStrokeWidth''. ---- ===== Konstanten ===== ^ Name ^ Wert ^ Verwendung ^ | ''SVG_CAP_BUTT'' / ''SVG_CAP_ROUND'' / ''SVG_CAP_SQUARE'' | 0 / 1 / 2 | ''SvgSetLineCap'' | | ''SVG_JOIN_MITER'' / ''SVG_JOIN_ROUND'' / ''SVG_JOIN_BEVEL'' | 0 / 1 / 2 | ''SvgSetLineJoin'' | | ''SVG_FILL_NONZERO'' / ''SVG_FILL_EVENODD'' | 0 / 1 | ''SvgSetFillRule'' (in ''std.svg.path'') | ---- ===== Funktionen ===== ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''SvgSetFill(doc: int64, r: f64, g: f64, b: f64): void'' | pub | Füllfarbe, Anteile 0.0–1.0 | | ''SvgSetFillAlpha(doc: int64, r: f64, g: f64, b: f64, a: f64): void'' | pub | Füllfarbe mit ''fill-opacity'' | | ''SvgSetFillNone(doc: int64): void'' | pub | ''fill="none"'' | | ''SvgSetFillHex(doc: int64, hex: pchar): void'' | pub | Füllung als Hex oder benannte Farbe | | ''SvgSetStroke(doc: int64, r: f64, g: f64, b: f64): void'' | pub | Rahmenfarbe, Anteile 0.0–1.0 | | ''SvgSetStrokeNone(doc: int64): void'' | pub | ''stroke="none"'' | | ''SvgSetStrokeWidth(doc: int64, w: f64): void'' | pub | Rahmenbreite | | ''SvgSetOpacity(doc: int64, a: f64): void'' | pub | Gesamtdeckkraft | | ''SvgSetLineCap(doc: int64, cap: int64): void'' | pub | Linienende, ''SVG_CAP_*'' | | ''SvgSetLineJoin(doc: int64, join: int64): void'' | pub | Linienverbindung, ''SVG_JOIN_*'' | | ''SvgSetMiterLimit(doc: int64, limit: f64): void'' | pub | Grenzwert für Gehrungen | | ''SvgSetDashArray(doc: int64, pattern: pchar): void'' | pub | Strichmuster, z. B. ''"5,3"'' | | ''SvgSetDashArrayN(doc: int64, dashes: int64, n: int64): void'' | pub | Strichmuster aus einem ''f64''-Feld | | ''SvgSetDashOffset(doc: int64, offset: f64): void'' | pub | Versatz des Strichmusters | | ''SvgTranslate(doc: int64, tx: f64, ty: f64): void'' | pub | Verschiebung anhängen | | ''SvgScale(doc: int64, sx: f64, sy: f64): void'' | pub | Skalierung anhängen | | ''SvgRotate(doc: int64, angle: f64): void'' | pub | Drehung um den Ursprung | | ''SvgRotateAround(doc: int64, angle: f64, cx: f64, cy: f64): void'' | pub | Drehung um einen Punkt | | ''SvgSkewX(doc: int64, angle: f64): void'' | pub | Scherung in x | | ''SvgSkewY(doc: int64, angle: f64): void'' | pub | Scherung in y | | ''SvgMatrixABCD(doc: int64, a: f64, b: f64, c: f64, d: f64): void'' | pub | Die vier Matrixanteile | | ''SvgMatrix(doc: int64, e: f64, f2: f64): void'' | pub | Die beiden Verschiebungsanteile | Letzte Aktualisierung: 2026-08-19 — Seite vollständig gegen die echten Signaturen neu geschrieben: der frühere Style-Builder (''SvgStyleNew'', ''SvgRGB'', ''SvgHex'' und die Transform-Strings) existiert nicht; alle Funktionen arbeiten auf ''doc''. Beispiel mit ''lyxc 1.1.3I'' übersetzt und ausgeführt, Ausgabe übernommen.