====== std.svg.parser ======
SVG-Reader: vorhandene ''.svg''-Dateien öffnen, DOM traversieren, Elemente nach Tag-Name oder ID suchen, Attributwerte auslesen. Schreibzugriff ist nicht vorgesehen — der Parser dient ausschließlich zum Einlesen und Auswerten.
→ [[lyx_-_programmiersprache:units:svg|std.svg]] · [[lyx_-_programmiersprache:units:svg:builder|std.svg.builder]] · [[lyx_-_programmiersprache:units:svg:xml|std.svg.xml]]
----
===== Verwendung =====
import std.svg.parser;
// Datei öffnen
var doc: SvgDoc := SvgOpen("input.svg");
// Wurzel-Element (SVG-Element selbst)
var root: SvgNode := SvgDocRoot(doc);
// Breite und Höhe des Dokuments
var w: f64 := SvgDocWidth(doc);
var h: f64 := SvgDocHeight(doc);
// Erstes Kind-Element
var child: SvgNode := SvgNodeFirstChild(root);
while (child != nil) {
var tag: pchar := SvgNodeTag(child);
var id: pchar := SvgAttrStr(child, "id");
var fill: pchar := SvgAttrStr(child, "fill");
child := SvgNodeNext(child);
}
// Element per ID suchen
var logo: SvgNode := SvgFindById(doc, "logo");
if (logo != nil) {
var cx: f64 := SvgAttrF64(logo, "cx");
var cy: f64 := SvgAttrF64(logo, "cy");
}
// Alle Elemente eines Tags sammeln
var circles: SvgNodeList := SvgFindByTag(doc, "circle");
var i: int64 := 0;
while (i < SvgNodeListLen(circles)) {
var node: SvgNode := SvgNodeListGet(circles, i);
var r: f64 := SvgAttrF64(node, "r");
i := i + 1;
}
SvgNodeListFree(circles);
// Aufräumen
SvgClose(doc);
----
===== Typen =====
^ Typ ^ Beschreibung ^
| ''SvgDoc'' | Handle auf geöffnetes SVG-Dokument |
| ''SvgNode'' | Handle auf DOM-Knoten (Element, Textknoten) |
| ''SvgNodeList'' | Dynamische Liste von SvgNode-Handles |
----
===== Funktionen =====
^ Signatur ^ Sichtbarkeit ^ Beschreibung ^
| ''SvgOpen(path: pchar): SvgDoc'' | pub | Öffnet SVG-Datei und parst DOM |
| ''SvgClose(doc: SvgDoc): void'' | pub | Gibt Dokument-Ressourcen frei |
| ''SvgDocRoot(doc: SvgDoc): SvgNode'' | pub | Gibt das Wurzel-''