Ergänzungen zu den XML-Dateiformaten: Unterschied zwischen den Versionen

Aus ZusiWiki
Zur Navigation springen Zur Suche springen
(→‎Allgemeines: Dateipfade)
(→‎Allgemeines: Keine Dateien auf anderen Laufwerken)
Zeile 10: Zeile 10:
** bei Datums-/Zeitangaben (date,time) der <code>30. Dezember 1899, 00:00:00</code>.
** bei Datums-/Zeitangaben (date,time) der <code>30. Dezember 1899, 00:00:00</code>.
* Dateipfade (<code>&lt;Datei Dateiname="..."&gt;</code> sind entweder
* Dateipfade (<code>&lt;Datei Dateiname="..."&gt;</code> sind entweder
** Pfade relativ zum Zusi-Datenverzeichnis (<code>RollingStock\Deutschland\Lok.ls3</code>), wobei ein führender Backslash erlaubt ist, oder
** Pfade relativ zum Zusi-Datenverzeichnis (<code>RollingStock\Deutschland\Lok.ls3</code>), wobei ein führender Backslash erlaubt ist und ignoriert wird, oder
** wenn sie keinen Backslash enthalten, Dateien im selben Verzeichnis wie die Datei, in der der Pfad steht.
** wenn sie keinen Backslash enthalten, Dateien im selben Verzeichnis wie die Datei, in der der Pfad steht.
:Insbesondere können Dateien, die auf einem anderen Laufwerk als das Zusi-Datenverzeichnis liegen, nicht referenziert werden.
* Geschwindigkeiten werden in der Einheit Meter pro Sekunde angegeben. Ausnahme sind <code>Wert</code>-Attribute in <code>Ereignis</code>-Knoten, die auch als Geschwindigkeit interpretiert werden können (etwa Auslösegeschwindigkeit bei 1000-Hz-Ereignissen).
* Geschwindigkeiten werden in der Einheit Meter pro Sekunde angegeben. Ausnahme sind <code>Wert</code>-Attribute in <code>Ereignis</code>-Knoten, die auch als Geschwindigkeit interpretiert werden können (etwa Auslösegeschwindigkeit bei 1000-Hz-Ereignissen).
* Programmseitig generierte XML-Dateien, die UTF-8-kodiert sind, sollten eine Byte Order Mark (<code>0xEF,0xBB,0xBF</code>) am Anfang enthalten, damit Texteditoren sie zuverlässig als UTF-8 erkennen, siehe [[UTF-8 Byte Order Mark setzen]].
* Programmseitig generierte XML-Dateien, die UTF-8-kodiert sind, sollten eine Byte Order Mark (<code>0xEF,0xBB,0xBF</code>) am Anfang enthalten, damit Texteditoren sie zuverlässig als UTF-8 erkennen, siehe [[UTF-8 Byte Order Mark setzen]].

Version vom 21. Januar 2016, 22:02 Uhr

Hier werden Hinweise zu Stellen in den XML-Dateiformaten gesammelt, die nicht selbsterklärend sind.

Allgemeines

  • Bei Attributen existiert für jeden Typ ein Standardwert, der verwendet wird, wenn das Attribut nicht vorhanden ist. Es folgt daraus, dass das Attribut auch beim Schreiben weggelassen werden kann, wenn sein Wert dem Standardwert entspricht. Zusi macht das konsequent so. Quelle. Der Standardwert ist
    • bei Ganzzahlen (integer, integer 64 bit integer enum, bool) der Wert 0.
    • bei Gleitkommazahlen (single) der Wert 0.0.
    • bei Zeichenketten (string) die leere Zeichenkette.
    • bei Farben (D3DColor) die Farbe R=G=B=A=0.
    • bei Datums-/Zeitangaben (date,time) der 30. Dezember 1899, 00:00:00.
  • Dateipfade (<Datei Dateiname="..."> sind entweder
    • Pfade relativ zum Zusi-Datenverzeichnis (RollingStock\Deutschland\Lok.ls3), wobei ein führender Backslash erlaubt ist und ignoriert wird, oder
    • wenn sie keinen Backslash enthalten, Dateien im selben Verzeichnis wie die Datei, in der der Pfad steht.
Insbesondere können Dateien, die auf einem anderen Laufwerk als das Zusi-Datenverzeichnis liegen, nicht referenziert werden.
  • Geschwindigkeiten werden in der Einheit Meter pro Sekunde angegeben. Ausnahme sind Wert-Attribute in Ereignis-Knoten, die auch als Geschwindigkeit interpretiert werden können (etwa Auslösegeschwindigkeit bei 1000-Hz-Ereignissen).
  • Programmseitig generierte XML-Dateien, die UTF-8-kodiert sind, sollten eine Byte Order Mark (0xEF,0xBB,0xBF) am Anfang enthalten, damit Texteditoren sie zuverlässig als UTF-8 erkennen, siehe UTF-8 Byte Order Mark setzen.

Strecke (.st3)

Zuordnung Norm/Gegen ↔ blau/grün

In der Programmoberfläche werden ausschließlich die Bezeichnungen "blaue und grüne Richtung" verwendet. Diese entsprechen Norm- bzw. Gegenrichtung im Dateiformat. Merkhilfe: grün = Gegenrichtung.

Nr-Attribut NachNorm[Modul] und NachGegen[Modul]-Knoten im StrElement-Knoten

Bei NachNorm und NachGegen handelt es sich um die Nummer eines Streckenelements im selben Modul.

Bei NachNormModul und NachGegenModul handelt es sich um die Nummer eines Referenzpunkts im durch den Datei-Kindknoten angegebenen Modul.

Anschluss-Attribut des StrElement-Knotens

Dieses Attribut kodiert auf effiziente Weise die Richtung der Nachfolgerelemente des eigenen Moduls. Bei einem Nachfolgerelement in einem anderen Modul ist die gesuchte Richtung das Inverse der Richtung des angegebenen Referenzpunkts (da der Referenzpunkt die Richtung der Modulschnittstelle angibt).

Es handelt sich um eine 16-Bit-Zahl. In den unteren 8 Bits ist die Richtung der (maximal 8) Nachfolgerelemente in Normrichtung (blau) gespeichert, beginnend mit dem niedrigsten Bit für den ersten Nachfolger. In den oberen 8 Bits ist die Richtung der (maximal 8) Nachfolgerelemente in Gegenrichtung (grün) gespeichert. Ein Bit 1 an der entsprechenden Stelle bedeutet, dass der Nachfolger in Gegenrichtung liegt.

Beispiel

Situation (grünes Ende ==Nr==> blaues Ende) Nachfolger von (2, NORM) Nachfolger von (2, GEGEN) Anschluss-Wert von Element Nr. 2
==1==> ==2==> ==3==> (3, NORM) (1, GEGEN) 256 = 28
==1==> ==2==> <==3== (3, GEGEN) (1, GEGEN) 257 = 28 + 20
<==1== ==2==> ==3==> (3, NORM) (1, NORM) 0
<==1== ==2==> <==3== (3, GEGEN) (1, NORM) 1 = 20

Pseudocode

Um für ein Element-Richtungs-Tupel (Element, Richtung) die Richtung des i-ten Nachfolgers zu bestimmen, wobei i von 0 indiziert ist:

anschluss_shift := i + (if richtung == GEGEN then 8 else 0)
nachfolger_richtung := if (anschluss >> anschluss_shift) & 1 == 0 then NORM else GEGEN

FahrstrWeichenlage-Attribut des FahrstrWeiche-Knotens

Dieses Attribut ist, anders als die Nachfolger von Streckenelementen, 1-indiziert.

Speicherreihenfolge der Signalmatrix-Einträge

Die Signalmatrizen sind zeilenweise gespeichert. Die Anzahl Spalten ergibt sich aus der Anzahl VsigBegriff-Knoten, die Anzahl Zeilen aus der Anzahl HsigBegriff-Knoten. Wenn matrix eine Liste der MatrixEintrag-Knoten ist, dann ist matrix[zeile * anz_spalten + spalte] der Matrixeintrag für die angegebene Zeile und Spalte (jeweils 0-indiziert).

Landschaft (.ls3)

Farbwerte bei Subset-Knoten

Für Farbangaben gibt es aus historischen Gründen zwei Formate.

  • BGR: Die Farbe wird als String "0AABBGGRR" kodiert.
  • RGB: Die Farbe wird als String "AARRGGBB" kodiert.

RR/GG/BB/AA steht für die zweistellige Hexadezimalrepräsentation des Rot-/Grün-/Blau-/Alpha-Farbanteils als Zahl zwischen 0 und 255.

Neu geschriebene Dateien sollen das RGB-Format verwenden. Das BGR-Format begegnet einem beim Parsen bestehender Dateien des Öfteren. Zur Unterscheidung verwenden die beiden Formate unterschiedliche Attributnamen:

Format Diffuse Ambient Emit (Nachtfarbe)
BGR C CA E
RGB Cd Ca Ce