DDF-Handbuch / Teil B – GUI-DDF (SVG)

GUI-DDF: Konzept

Eine GUI-DDF beschreibt, wie Werte in der myGEKKO-Visualisierung erscheinen. Grundlage ist der *OBJECT-Block. Jedes Objekt kann zusätzlich drei Felder für eine freie Grafik tragen:

Feld Inhalt Wann ausgewertet
SVG ein oder mehrere <svg alias='…'>…</svg>-Fragmente (Vorlagen) geparst beim Laden
SVGANIMATE Formel, die das Widget zeichnet (GUI.*-Aufrufe) bei jedem Neuzeichnen bzw. per Timer
SVGEVENT Formel für Mausereignisse bei Maus-/Touch-Ereignissen
flowchart LR
    O[*OBJECT-Zeile] --> S[SVG-Vorlagen<br/>alias → geparstes SVG]
    O --> A[SVGANIMATE-Formel]
    O --> E[SVGEVENT-Formel]
    A -->|GUI.paintSVG 'alias', x,y,w,h,…, KEY,Wert…| R[Renderer]
    S --> R
    A -->|GUI.fillRect / text / fillPie …| R
    E -->|$.MOUSE.* / $.MOUSE.HANDLED| A
    V[$.CTRLVAR / $.VAL / $.GUI] --> A

Drei Arten, ein Widget zu bauen

  1. Nur SVG (ohne SVGANIMATE): Das erste SVG des Objekts wird unverändert gezeichnet (GUI.paintSvg(); ohne Parameter entspricht diesem Verhalten).
  2. SVG-Vorlagen + Formel (DEMO_DDF): Die Formel berechnet Texte und Positionen und ruft GUI.paintSVG('<alias>', x, y, w, h, winkel, 'KEY', wert, …); auf. In der Vorlage ersetzt der Renderer $(KEY) durch den Wert.
  3. Nur Formel (SVG Visualization Library, SVG_CHARTS): Das Feld SVG bleibt leer, die Formel zeichnet mit GUI.fillPie, GUI.text, GUI.fillRect usw.

Darstellung in der Visualisierung

Laut Entwicklerdokumentation (FormulaInterpreter.docx):

Widget-Größen

Die Formel fragt über $.GUI.WIDGETTYPE bzw. $.GUI.SIZE die Kachelgröße ab:

Code Kachel (Breite × Höhe, skaliert)
0 kein Widget (normale Ansicht/Detail)
1 Widget mit nicht standardisierter Größe
501 ca. 210–300 × 40–60
502 ca. 210–300 × 90–110
504 ca. 210–300 × 190–210
508 ca. 210–300 × 390–410
1001 ca. 410–600 × 40–60
1002 ca. 410–600 × 90–110
1004 ca. 410–600 × 190–210
1008 ca. 410–600 × 390–410

$.GUI.WIDGETTYPE wird aus den Pixelmaßen berechnet. $.GUI.SIZE liefert den vom System übergebenen Größenparameter (in der Visualization Library werden ebenfalls die Werte 0/504/508/1004/1008 abgefragt).

Koordinatensystem

GUI.setWindow(x, y, w, h, scale); legt ein logisches Koordinatensystem w × h fest. Es wird seitenverhältnistreu in die Kachel eingepasst und zentriert. Alle folgenden GUI.*-Koordinaten sind logische Einheiten.

Formel-Parsefehler (09.11.2026)

Ist die SVGANIMATE-Formel ungültig (formulaObj nicht bereit), zeichnet das Widget bis zu drei Zeilen der Fehlermeldung in Rot (0xFFFF0000) direkt in die Kachel. So sieht man Syntaxfehler (z. B. fehlendes ;) ohne Debugger. Für SVGEVENT gibt es diese Anzeige nicht (Aussage Hartwig Weidacher, 09.11.2026). Sprache und Format des Fehlertexts sind weiterhin zu klären.

Weiter: *OBJECT-Block · SVG-Elemente · GUI-API · Variablen & Events