====== 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-''''-Element zurück | | ''SvgDocWidth(doc: SvgDoc): f64'' | pub | Gibt Dokument-Breite aus width-Attribut | | ''SvgDocHeight(doc: SvgDoc): f64'' | pub | Gibt Dokument-Höhe aus height-Attribut | | ''SvgNodeTag(node: SvgNode): pchar'' | pub | Gibt Tag-Name des Elements (z.B. "circle", "rect") | | ''SvgNodeText(node: SvgNode): pchar'' | pub | Gibt Textinhalt eines Text-Knotens | | ''SvgNodeFirstChild(node: SvgNode): SvgNode'' | pub | Erstes Kind-Element (nil wenn keines) | | ''SvgNodeNext(node: SvgNode): SvgNode'' | pub | Nächstes Geschwister-Element (nil wenn letztes) | | ''SvgNodeParent(node: SvgNode): SvgNode'' | pub | Eltern-Element | | ''SvgAttrStr(node: SvgNode, attr: pchar): pchar'' | pub | Attributwert als String (leer wenn nicht vorhanden) | | ''SvgAttrF64(node: SvgNode, attr: pchar): f64'' | pub | Attributwert als f64 (0.0 wenn nicht vorhanden) | | ''SvgAttrInt(node: SvgNode, attr: pchar): int64'' | pub | Attributwert als int64 | | ''SvgAttrExists(node: SvgNode, attr: pchar): bool'' | pub | Prüft ob Attribut vorhanden | | ''SvgFindById(doc: SvgDoc, id: pchar): SvgNode'' | pub | Sucht Element mit gegebener id (nil wenn nicht gefunden) | | ''SvgFindByTag(doc: SvgDoc, tag: pchar): SvgNodeList'' | pub | Gibt alle Elemente mit gegebenem Tag-Namen zurück | | ''SvgNodeListLen(list: SvgNodeList): int64'' | pub | Anzahl Elemente in der Liste | | ''SvgNodeListGet(list: SvgNodeList, i: int64): SvgNode'' | pub | Element an Index i | | ''SvgNodeListFree(list: SvgNodeList): void'' | pub | Gibt Listen-Ressourcen frei | Letzte Aktualisierung: 2026-05-23