====== 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.