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.
→ std.svg · std.svg.elements · 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;
}
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="400" height="300">
<rect x="10" y="10" width="100" height="60" fill="#1f8fff" opacity="0.8"/>
<line x1="20" y1="120" x2="380" y2="120" fill="#ff0000" fill-opacity="0.5" stroke-width="3" stroke-linecap="round" stroke-linejoin="bevel" stroke-dasharray="5,3"/>
<circle cx="100" cy="100" r="20" transform="translate(100 50) rotate(45 200 200) scale(2 1.5) "/>
</svg>
Zwei Punkte, die beim Schreiben dieser Seite auffielen:
SvgSetFillnimmt Anteile (0.0–1.0), nicht 0–255; die Ausgabe ist Hex. Wer eine benannte Farbe oder ein fertiges Hex will, nimmtSvgSetFillHex(doc, „gold“).- Für den Rahmen gibt es kein
SvgSetStrokeHex— nurSvgSetStrokemit drei Anteilen,SvgSetStrokeNoneundSvgSetStrokeWidth.
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.
