LED Matrix

  • Konfiguration der LED Matrix. Unter anderem Wechselziele, Unterschiedliche Ziele an Front und Seite, Invertierungen von einzelnen Teilen oder der ganzen Anzeige und sogar komplett freie Positionierung von Elementen.

    1 Einleitung

    Hallo! Du hast Dich sicher hierher verirrt, weil Du wissen möchtest, wie Du die LED Matrix konfigurieren kannst.


    Vielleicht bist Du auch zufällig hier und neugierig, worum es hier geht?

    Dieser Artikel beschreibt die Konfigurationsmöglichkeiten einer LED Matrix, die nicht im Standard-Content, sondern unter folgenden Links im Steam Workshop erhältlich ist.

    Das besondere an dieser Matrix ist, dass sie relativ frei konfigurierbar ist.

    Sie kann unter anderem Wechselziele, Unterschiedliche Ziele an Front und Seite, Invertierungen von einzelnen Teilen oder der ganzen Anzeige und sogar komplett freie Positionierung von Elementen (Strings, etc.) - zumindest, wenn Du mutig genug bist, Dich damit auseinanderzusetzen ;-)


    Diese Anleitung wird nach und nach um die Funktionen erweitert, die möglich sind.

    2 Kurzanleitung

    2.1 Spezielle FIS und was da passiert

    Die Matrix verwendet spezielle FIS Dateien. Die Klasse ist "LED_BERLIN".

    Darin kann man haufenweise Sachen konfigurieren. Im folgenden gibt es aber erstmal nur einen kleinen Einblick.


    Allein das Anlegen einer speziellen FIS verändert die Funktion der Matrix. Selbst wenn diese keinen Inhalt hat, gibt es bei der weißen Anzeige einen anderen Startprozess und die Formatierung ist in ein paar Details anders.

    2.2 Lektion 1: Einfache Zielkonfigurationen :-D

    Bevor es an die vielen anderen Optionen geht, soll hier erstmal das beschreiben werden, was sicherlich die meisten interessiert: Einfache Anpassungen von Zielen, Anlegen von Wechselzielen, etc.


    Die Information, wie ein Ziel dargestellt werden soll, wird als XML in den Zusatz-Strings des Ziels eingetragen und hat immer dieselbe folgende Struktur:


    2.2.1 Wurzelelement und Typ

    <terminus> ist das Wurzelelement. Das steht da immer. Das muss da immer stehen, sonst funktioniert das Ganze nicht.

    <simple> gibt an, dass das hier eine einfache Zieldefinition ist. Es gibt auch komplexe, aber dazu dann zu einer anderen Zeit an einer anderen Stelle mehr.

    2.2.2 Panel

    Im <simple> Element gibt es ein oder mehrere <panel> Elemente. Damit werden die in dem Fahrzeug verbauten Anzeigen in der Reihenfolge der Modul Slots konfiguriert. Das letzte <panel> Element wird auf alle übrigen Anzeigen angewandt. Man kann hiermit also auf der Frontanzeige was anderes anzeigen lassen, als auf den restlichen Anzeigen.

    2.2.3 Content

    Das <content> Element ist genau ein Inhalt einer Anzeige.

    Hier werden ein oder zwei Strings definiert. Diese überschreiben die Strings aus der Basis-FIS. Sie haben einen Wert (der String selbst) und können auch invertiert werden:


    Code
    1. <string1>
    2. <value>Musterhausen</value>
    3. </string1>
    4. <string2>
    5. <value>via Bahnhof</value>
    6. <inverted>true</inverted>
    7. </string2>


    Wichtig: Es gibt kein Fallback auf die Basis Strings.

    Inverted kann "true" oder "false" sein. Der Standardwert ist "false".


    Außerdem kann ein gesamter Anzeigenbereich invertiert werden:


    Code
    1. <inverted>full</inverted>


    Mögiche Angaben sind hier "line", "terminus", "full" und "none". Der Standardwert ist "none". Die sind selbsterklärend, oder?


    Es ist auch möglich, einen der beiden Strings etwas kleiner als den anderen darzustellen. das geht mit


    Code
    1. <smallerstring>1</smallerstring>


    Der Wert ist "1" oder "2" und gibt den String an, der kleiner sein soll.


    Uuuund dann gibt es noch:


    Code
    1. <time>2</time>


    Falls es mehrere <content> Elemente gibt, wird nämlich zwischen diesen durchgewechselt. Mit dieser Zeit wird angegeben, wie lange der aktuelle Content zu sehen sein soll, bevor zum nächsten gewechselt wird.

    Die Angabe erfolgt in Sekunden. Der Standardwert und gleichzeitig das Minimum ist "1".

    2.2.4 Beispiele

    1. Ich will nur die Strings überschreiben.


    2. Ich will vorne was anderes stehen haben, als an der Seite*.


    3. Ich will ein Wechselziel haben.


    4. Ich will, dass die erste Zeile kleiner ist, als die zweite.


    5. Ich will die ganze Anzeige invertieren.


    6. Ich will, dass die zweite Zeile invertiert ist.

    3 Spezielle FIS Klasse

    Um die Anzeigen zu konfigurieren, muss eine spezielle FIS der Klasse "LED_BERLIN" angelegt werden.


    Einige Module laden zusätzlich zu dieser eine weitere spezielle FIS, deren Klasse einen Namenszusatz hat. Das wird im Modulnamen und in der Beschreibung der entsprechenden Module erwähnt.


    Aktuell handelt es sich z.B. um die beiden Berliner Varianten der weißen Matrix mit den Zusätzen "_2014" und "_2018". Diese laden also neben der speziellen FIS "LED_BERLIN" auch noch die "LED_BERLIN_2014" bzw. "LED_BERLIN_2018".


    Die speziellen FIS ergänzen sich. Es ist also möglich einzelne Ziele oder Einstellungen der Anzeige speziell für eines der beiden Module zu variieren, ohne die komplette spezielle FIS kopieren zu müssen.

    4 Zusatzstrings der FIS-Gruppe

    Die Zusatzstrings der FIS (oben rechts eingetragen, siehe auch hier) konfigurieren hauptsächlich das Verhalten der Anzeige.

    Abgesehen von ein paar Abweichungen, folgen sie dem INI-Format. Es gibt also Sektionen, die verschiedene Schlüssel und deren Werte gruppieren. Dabei entspricht eine Sektion meistens einem Konfigurationselement und die zugehörigen Schlüssel sind die Parameter dazu.


    Wenn ein Modul eine zusätzliche spezielle FIS lädt, dann werden zuerst die Zusatzstrings dieser zusätzlichen speziellen FIS (z.B. LED_BERLIN_2014) eingelesen und direkt danach die der normalen speziellen FIS (LED_BERLIN). Wenn man sich beide spezielle FIS als eine vorstellt, stehen die Definitionen aus der zusätzlichen FIS oberhalb von denen aus der normalen speziellen FIS.


    Es zählt immer der Wert des zuerst eingelesenen Parameters. Bei Sektionen, die auf bestimmte Bedingungen angewendet werden, zählt ebenfalls das erste Vorkommen, das zu den dort definierten Bedingungen passt.

    Dadurch lassen sich Einstellungen, die in der normalen speziellen FIS definiert wurden, in einer zusätzlichen speziellen FIS überschreiben. Ausnahme ist die Sektion [local], da diese Einstellungen enthält, die nur auf die aktuelle spezielle FIS zutreffen.


    Im folgenden sind die Sektionen und Parameter aufgeführt, die möglich sind.


    (Die Liste ist noch nicht vollständig und wird stetig erweitert)

    4.1 Globale und lokale Einstellungen

    4.1.1 Globale Parameter

    Sektion [settings]


    Hier werden globale Einstellungen vorgenommen. In einer speziellen Zusatz-FIS (z.B. LED_BERLIN_2014) können die Einstellungen der speziellen FIS (LED_BERLIN) überschrieben werden.

    Die Sektion kann zwar mehrfach definiert werden, es zählt aber immer nur der erste Wert, der eingelesen wird.


    special_chars Hiermit kann die Verwendung der in der Basis-FIS definierten Sonderzeichen deaktiviert werden.

    true - Die Basis-FIS Sonderzeichen werden benutzt (Standardwert, wenn der Parameter weggelassen wird).
    false - Es werden keine Standardsonderzeichen benutzt.
    count_is_id Diese Einstellung beeinflusst die Art, wie die im Fahrzeug eingesetzten Anzeigen durchgezählt werden. Mehr dazu an der Stelle, wo es wichtig wird (folgt später ;-))

    true - Die verbauten Module werden unabhängig von ihren Eigenschaften durchnummeriert. Das bedeutet, dass die interne Nummerierung der beim Startprozess angezeigten Adresse entspricht.
    false - Bei der internen Nummerierung wird die Größe der Anzeige beachtet (Standardwert, wenn der Parameter weggelassen wird).
    auto_format Wenn es zu einem Ziel keine komplexe Konfiguration gibt, kann dieses automatisch nach bestimmten Regeln formatiert werden. Diese Funktion wird mit diesem Parameter aktiviert. Der Standardwert, wenn der Parameter weggelassen wird, ist false.

    Die Regeln, nach denen die automatisch Formatierung handeln soll, müssen durch die Sektionen [auto_format:regex] und [auto_format:rule] separat definiert werden. Es gibt keine Standardregeln. Das heißt, dass dieser Parameter nur wirksam wird, wenn auch Regeln definiert werden.

    4.1.2 Lokale Parameter

    Sektion [local]


    Die Einstellungen in dieser Sektion beziehen sich ausschließlich auf die aktuelle FIS. Das heißt, was in der LED_BERLIN definiert wird, gilt nur für LED_BERLIN und was in LED_BERLIN_2014 definiert wird, gilt nur für LED_BERLIN_2014.


    complex_fallback Bei einer komplexen Zielkonfiguration werden spezifische Anzeigen definiert. Ist eine Anzeige in der Konfiguration nicht enthalten, kann diese entweder leer bleiben oder auf die Basis-FIS-Strings zurückgreifen. Dieses Verhalten wird durch diesen Parameter festgelegt.

    true - Die Anzeige greift auf die Basis-Strings zurück.
    false - Die Anzeige bleibt leer. (Standardwert, wenn der Parameter weggelassen wird).
    complex_auto_format Dieser Parameter kommt nur zum Tragen, wenn complex_fallback auf true gesetzt ist.
    Er definiert, ob bei einem Fallback auf die Basis-Strings die automatische Formatierung verwendet werden soll, sofern diese über den globalen Parameter "auto_format" aktiviert wurde.

    true - Die automatische Formatierung wird verwendet (auto_format muss ebenfalls true sein).
    false - Sie wird nicht verwendet (Standardwert, wenn der Parameter weggelassen wird).

    4.1.3 Beispiel

    Code
    1. [settings]
    2. count_is_id = true
    3. auto_format = true
    4. special_chars = false
    5. [local]
    6. complex_fallback = true
    7. complex_auto_format = false

    4.2 Regeln zur automatischen Formatierung von Basis-FIS-Strings

    4.2.1 Ersetzen von Strings/Reguläre Ausdrücke

    Sektion [auto_format:regex]


    Es können beliebig viele reguläre Ausdrücke und Substitutionen angegeben werden, die auf die Strings der Basis-FIS angewendet werden. Für jeden regulären Ausdruck muss eine dieser Sektionen mit beiden Parametern angegeben werden. Die Parameter sind:

    pattern Der reguläre Ausdruck.
    replace Die Substitution.

    4.2.2 Erweiterte Formatierung

    Sektion [auto_format:rule]


    Diese Sektion ist etwas komplizierter. Es wird wieder für jede Regel eine Sektion angelegt. Dieses Mal ist die Reihenfolge sehr wichtig, weil es Bedingungen gibt, die sich auf andere Regeln beziehen.

    string1_pattern, string2_pattern Ein regulärer Ausdruck mit dem der String verglichen wird. Das Weglassen dieses Parameters ist immer ein Treffer.
    string1_replace, string2_replace Eine zum regulären Ausdruck passende Substitution. Hiermit wird der String entsprechend verändert oder ersetzt. Das passiert, bevor alle anderen Anweisungen aus dieser Regel angewendet werden.
    if_no_prev_match Die Regel wird angewendet, wenn vorher keine andere Regel angewendet wurde.
    break Nach dieser Regel wird keine weitere Regel mehr angewendet.
    cat_strings true - string1 und string2 werden zu einem zusammengefügt (cat = Kurzform von concatenate).
    false - Standardwert. Die Strings werden nicht zusammengefügt.
    cat_if_enough_space Der Parameter erfordert "cat_strings = true".
    true - "cat_strings" wird nur ausgeführt, wenn die Anzeige breit genug ist, um den neuen String darzustellen.
    false - "cat_strings" wird immer ausgeführt (Standardwert).
    cat_with_space Der Parameter erfordert "cat_strings = true".
    true - Beim Zusammenfügen der Strings wird zwischen diesen ein Leerzeichen gelassen.
    false - Die Strings werden ohne Leerzeichen zusammengefügt (Standardwert).
    smallerstring Dieser Paramater definiert, dass einer der beiden Strings kleiner dargestellt wird, als der andere.
    1 - Der erste String wird kleiner dargestellt.
    2 - Der zweite String wird kleiner dargestellt.
    Der Standardwert, wenn der Parameter weggelassen wird, ist 0.

    to be continued ...

    4.2.3 Beispiel

    4.3 Modifikation von Liniennummern

    Sektion [linemod]


    Diese kann mehrfach vorkommen. Hier können Modifikationen auf Liniennummern angewendet werden. Man kann es auch als Sonderzeichen ohne Sonderzeichencode bezeichnen ;-)

    4.3.1 Parameter

    Wann wird die Modifikation angewandt?


    Die beiden folgenden Parameter bestimmen, bei welcher Linien-Sonderzeichen-Kombination die in dieser Sektion definierten Modifikationen angewendet werden sollen. Beide Bedingungen müssen erfüllt sein.

    line_pattern Ein regulärer Ausdruck mit dem die Liniennummer verglichen wird. Das Weglassen dieses Parameters ist immer ein Treffer.
    specialchar_pattern Ein regulärer Ausdruck mit dem der Sonderzeichencode verglichen wird. Das Weglassen dieses Parameters ist immer ein Treffer.


    Ersetzen von Linie und Ziel


    Sowohl die Linie als auch das Ziel können überschrieben werden.

    line_replace Eine zum regulären Ausdruck ‚line_pattern‘ passende Substitution. Hiermit wird der resultierende Linienstring generiert.
    override_terminus Hiermit kann das Ziel überschrieben werden. Der angegebene Wert wird als ID eines zusätzlich konfigurierten Ziels interpretiert (siehe Sektion [terminus]).


    Formatierung


    Standardmäßig werden die durch eine Linienmodifikation angepassten Linien nach bestimmten Regeln formatiert. Sie werden im Linienfeld mit größtmöglichem Font und maximaler Sperrung zentriert. Diese Formatierung kann überschrieben werden:

    no_format true – Dekativiert die automatische Formatierung. Es wird angenommen, dass es sich um eine unmodifizierte Liniennummer handelt. Diese werden linksbündig mit dem Standardfont und einer Sperrung von 1 dargestellt.
    false – Die Formatierung wird angewendet (default).


    Durch die unterschiedliche Größe der Anzeigen und der Bereiche für die Liniennummer, kann für jede Anzeige einzeln definiert werden, wie die automatische Formatierung überschrieben werden soll. Die Anzeigen werden dabei durch Kürzel definiert, die im Parameter enthalten sind:

    32f 32px hoch, Linie und Ziel
    26f 26px hoch, Linie und Ziel
    26l 26px hoch, nur Linie
    19f 19px hoch, Linie und Ziel
    19l 19px hoch, nur Linie


    Die Parameter sind also:

    format_X_align X durch das Anzeigenkürzel ersetzen (z.B. format_32f_align), siehe oben.

    Hiermit kann die automatische Ausrichtung überschrieben werden.
    Die Werte sind "left", "center" oder "right". Der Standardwert, der hiermit überschrieben wird, ist "center".
    format_X_offset X durch das Anzeigenkürzel ersetzen (z.B. format_32f_align), siehe oben.

    Hiermit kann ein Offest gesetzt werden. Es handelt sich um den Offset im Vergleich zur Standardformatierung, die bereits einen Offset von 1 enthält. Soll eine linksbündig dargestellte Linie also den linken Rand der Anzeige berühren, muss hier "-1" angegeben werden.
    format_X_spacing X durch das Anzeigenkürzel ersetzen (z.B. format_32f_align), siehe oben.

    Dieser Parameter überschreibt die Sperrung.



    Formatierung unter zusätzlichen Bedingungen


    Es ist möglich, eine zweite Formatierung anzugeben, die nur dann wirksam ist, wenn die zugehörigen Bedinungen ebenfalls auf die Linien-Sonderzeichen-Kombination passen:

    cond_line Ein regulärer Ausdruck mit dem die Liniennummer verglichen wird.
    cond_specialchar Ein regulärer Ausdruck mit dem der Sonderzeichencode verglichen wird.
    cond_format_X_align
    cond_format_X_offset
    cond_format_X_spacing
    siehe entsprechende "format_X..."-Parameter

    4.3.2 Beispiele

    Es folgen Beispiele mit ausführlicher Erklärung, um die Möglichkeiten zu verdeutlichen:


    Beispiel 1: Anpassung der Linien von 401 bis 412:


    Weitere Beispiele folgen

    4.4 Definition von in der Basis-FIS nicht enthaltenen Zielen

    Sektion [terminus]


    folgt ...

    4.5 Anlegen von Ziel-Templates

    Sektion [terminustemplate]


    folgt...

    5 Einfache Zielkonfiguration

    folgt...

    6 Komplexe Zielkonfiguration

    Diese Art der Konfiguration wird dann interessant, wenn es darum geht, Texte und Symbole frei auf der Anzeige anzuordnen. Hiermit kann ziemlich genau definiert werden, welcher Font benutzt werden soll und an welcher Position der Text stehen soll. Außerdem ist es möglich, einige weitere Elemente wie Rechtecke und Schachbrettmuster einzufügen.


    Diese Möglichkeiten erfordern aber natürlich auch etwas umfangreichere Zusatzstrings in der speziellen FIS. Viel Spaß damit ;-)

    6.1 Struktur der komplexen Zielkonfiguration

    Die Zusatzstrings müssen wieder eine XML enthalten, die den folgenden Aufbau hat:

    Sieht genauso aus, wie die einfache? Jo. Es gibt nur einen Unterschied: Das zweite Element lautet complex statt simple.


    Die Blöcke panel und die darin enthaltenen content werden im folgenden beschrieben.

    6.2 Panel

    Ein Panel bezeichnet hier eine komplette Anzeige. Diese werden anhand ihrer Größe (Anzahl der Bildpunkte), ihrer Position (Reihenfolge der Modul-Slots) und ihres Inhalts (Line, Ziel oder beides) unterschieden. Entsprechend können für diese unterschiedlichen Panels auch unterschiedliche Ziele definiert werden.

    6.2.1 Attribute

    Die Angabe, für welche Art von Anzeige ein panel Elements verwendet werden soll, geschieht über die Attribute dieses Elements:

    Attribut Beschreibung
    size Größe im Format BreitexHöhe, z.B. size="200x32"
    Aktuell gibt es bei der weißen Matrix "200x32", "192x26", "144x26" und "48x26". In Zukunft wird es auch noch "240x32" geben.
    Die bernsteinfarbene gibt es als "140x19", "128x19", "112x19" und "28x19".
    erforderlich
    count Position in der Modul-Reihenfolge. Der Wert ist abhängig vom globalen Parameter "count_is_id".
    Besitzt ein Fahrzeug zum Beispiel eine Frontanzeige der Größe 200x32 und an der Seite und im Heck je eine Anzeige der Größe 192x26, kann über dieses Attribut nur eine der beiden 192er Anzeigen angesprochen werden. Welche das ist, hängt vom Parameter "count_is_id" ab:
    count="2" bei count_is_id = true ist die Seitenanzeige, weil alle Anzeigen gezählt werden (Der Zähler entspricht der ID, deshalb heißt der Parameter so. Front hat ID 1, Seite hat ID 2).
    count="2" bei count_is_id = false ist die Heckanzeige, weil nur die Anzeigen derselben Größe gezählt werden: Seite ist 1, Heck ist 2.
    optional
    content Hiermit lässt sich noch weiter eingrenzen, auf welche Anzeige sich das Element bezieht. Möglich sind die Werte "line", "terminus" und "both".
    content="terminus" bedeutet also, dass das Element nur für Anzeigen gilt, die ausschließlich das Ziel anzeigen.
    optional

    6.2.2 Zuordnung und Reihenfolge

    Eigentlich wird für eine Anzeige das erste Element verwendet, dass zu den Attributen passt. Leider gibt es noch einen Bug, weshalb Elemente mit stärkerer Restriktion momentan weiter oben in der XML stehen sollten. Ein <panel size="192x26" content="terminus"> sollte also vor einem <panel size="192x26"> stehen.


    Wichtig: Anzeigen, für die es kein passenden Element gibt, zeigen kein Ziel an! Es gibt kein Fallback auf die Basis-FIS.

    6.2.3 Untergeordnete Elemente

    Innerhalb des Panel Elements finden sich die Content Elemente. Zusätzlich gibt es aber noch zwei interessante Elemente:

    Element Beschreibung Anzahl
    <defaults>false/true</defaults> Ein Boolean, über den sich definieren lässt, dass diese Anzeigen nur die Standardstrings aus der Basis-FIS anzeigen sollen.
    Da Anzeigen, für die es kein Element gibt, dunkel bleiben, kann hiermit ein "leeres" Element angelegt werden. Ein leeres Panel Element ohne diese Einstellung reicht nicht, um auf die Standardstrings zuzugreifen.
    maximal ein mal
    <noautoformat>false/true</noautoformat> Hiermit lässt sich bei Angabe von <defaults>true</defaults> die automatische Formatierung von Standardstrings deaktivieren, falls diese global aktiviert ist. maximal ein mal
    <content>
    ...
    </content>
    Der Content Block wird im nächsten Abschnitt erklärt.
    Mit <defaults>true</defaults> werden diese ignoriert.
    beliebig oft

    6.3 Content

    Ein Content Element beinhaltet alles, was zu einem Zeitpunkt gleichzeitig auf der Anzeige zu sehen sein soll. Mehrere Content Elemente führen dazu, dass die Anzeige zwischen diesen wechselt. Dabei kann definiert werden, wie viel Zeit bis zum nächsten Wechsel vergehen soll.

    6.3.1 Attribute

    Es gibt zwei Attribute, die uns das Leben etwas erleichtern, wenn sich mehrere Content Elemente nur in Kleinigkeiten unterscheiden sollen:

    Attribut Beschreibung
    id Hiermit kann dem Element eine ID gegeben werden, um es später zu kopieren. Zum Beispiel id="blub". optional
    cp Wenn weiter oben ein Content Element mit einer ID existiert, kann es mit diesem Attribut komplett an die aktuelle Stelle kopiert werden.
    cp="blub" würde das oben definierte Element mit dem Attribut id="blub" kopieren.

    In kopierten Content Elementen ist es mögliche kleinere Anpassungen an den untergeordneten Elementen zu machen (siehe "id", "ref", "del" der untergeordneten Elemente).
    optional

    6.3.2 Untergeordnete Elemente

    Innerhalb eines Content Elements stehen nun endlich die Elemente, die bestimmte Texte, Symbole oder anderes auf die Anzeige zeichnen. Ein paar Einstellungen für das ganze Content Element gibt es auch:

    Element Beschreibung Anzahl
    <time>X</time> Falls es mehrere Content Element gibt, wird hiermit definiert, wie lange die Anzeige bei diesem Element bleibt, bevor sie zum nächsten wechselt. Die Anzgabe erfolgt in Sekunden und es gibt Grenzwerte, die ich gerade nicht im Kopf habe. maximal ein mal
    <inverted>none/line/terminus/full</inverted> Diese Einstellung definiert, ob die Liniennummer oder das Ziel oder die komplette Anzeige invertiert werden soll. maximal ein mal
    <string>
    ...
    </string>
    Schreibt einen String. Siehe unten. beliebig oft
    <tape>
    ...
    </tape>
    Zeichnet ein "Flatterband". Siehe unten. beliebig oft
    <box>
    ...
    </box>
    Zeichnet ein Rechteck mit Rahmen oder ausgefüllt. Siehe unten. beliebig oft
    <checkerboard>
    ...
    </checkerboard>
    Zeichnet ein Rechteck mit einem Schachbrettmuster. Siehe unten. beliebig oft

    6.4 Text/Symbole schreiben (string)

    Mit dem Element <string> kann etwas beliebiges auf die Anzeige geschrieben werden. Dabei ist es möglich den Font, die Sperrung und die Position frei zu definieren.


    Hiermit können also auch diverse Symbole irgendwo auf die Anzeige gezeichnet werden. Eine Liste der verfügbaren Fonts mit den enthaltenen Symbolen folgt.

    6.4.1 Untergeordnete Elemente

    Element Beschreibung
    <value>String</value> Das ist der String, der geschrieben wird.
    <font>FontID-String</font> Der Name des Fonts. Es gibt eine Liste, welche Verfügbar sind, die aber noch erstellt werden muss.

    Wichtig: Das hier hat garnichts mit Content-IDs oder ähnlichem zu tun. Die Fonts sind intern definiert und können hiermit nur abgerufen werden. Es ist noch nicht möglich, eigene Fonts hinzuzufügen.
    <spacing>N</spacing> Die Sperrung, also der Abstand zwischen den Zeichen. Standard müsste 1 sein.
    <unlockspacing>false/true</unlockspacing> Falls die Position nicht absolut angegeben wird, sondern relativ innerhalb eines definierten Bereichs (siehe position und area), kann dieser Parameter auf true gesetzt werden, um zu erlauben, dass die Sperrung auch reduziert werden darf, falls der Platz in dem Bereich nicht ausreicht.
    <inverted>false/true</inverted> Der String kann hiermit invertiert werden.
    <position>
    ...
    </position>
    Siehe Positionierung von Content Elementen (position, area).
    <area>
    ...
    </area>
    Siehe Positionierung von Content Elementen (position, area).


    6.5 Absperrband zeichnen (tape)

    Mit Absperrband ist ein schräg gestreiftes Band gemeint. Dieses kann in verschiedenen Höhen und Längen an eine beliebige Position gezeichnet werden.

    6.5.1 Untergeordnete Elemente

    Noch nicht final. Folgt...

    6.6 Rechteck zeichnen (box)

    Mit oder ohne Rahmen. Bla bla

    6.6.1 Untergeordnete Elemente

    Element Beschreibung
    <inner>
    ...
    </inner>
    Identisch zu <area>, siehe Positionierung von Content Elementen (position, area).

    Das Element definiert den Bereich des Rechtecks. Wenn <outer> nicht definiert wird, entspricht das hier dem Rechteck. Wenn <outer> ebenfalls angegeben wird, ist das hier der Bereich, um den der Rahmen gezogen wird.
    <outer>
    ...
    </outer>
    Identisch zu <area>, siehe Positionierung von Content Elementen (position, area).

    Dieses optionale Element entspricht einem Bereich. Dieser Bereich ist die Fläche des Rechtecks, wobei der durch <inner> definierte Bereich ausgeschnitten wird. Das Ergebnis ist ein Rahmen.
    optional


    6.7 Schachbrettmuster zeichnen (checkerboard)

    In einem rechteckigen Bereich.

    6.7.1 Untergeordnete Elemente

    Element Beschreibung
    <area>
    ...
    </area>
    Der Bereich, in dem das Schachbrettmuster gezeichnet wird. Siehe Positionierung von Content Elementen (position, area).
    <inverted>false/true</inverted> Das klingt vielleicht komisch, aber das Schachbrettmuster kann auch invertiert werden. Hiermit wird gesteuert, ob das Muster in der oberen linken Ecke mit Weiß oder mit Schwarz beginnt.


    6.8 Attribute der Content Elemente

    Alle Elemente, die zur Darstellung von Dingen auf der Anzeige verwendet werden (string, tape, box, checkerboard) besitzen folgenden Attribute, mit denen diese Elemente kopiert, bearbeitet oder gelöscht werden können. Näheres dazu in der Tabelle:

    Attribut Beschreibung
    id Dieses Attribut gibt dem Element eine ID, um es später identifizieren zu können. Zum Beispiel <string id="meinString">.
    cp Mit diesem Attribut kann ein weiter oben in der XML existierendes Element, das über eine ID verfügt, an die aktuelle Stelle kopiert werden. Zum Beispiel <string cp="meinString">. Untergeordnete Elemente überschreiben daraufhin die vom Original kopierten Daten. Man kann also zum Beispiel mit <string cp="meinString"><value>Hallo</value></string> den String mit der ID "meinString" kopieren und somit definierte Font, Spacing und Position übernehmen, aber den Text mit "Hallo" überschreiben.
    ref Wenn ein content Element kopiert wird, existieren alle untergeordneten Elemente auch im neuen content Element. Um eines davon anpassen zu können, muss dieses Attribut anstelle von "cp" verwendet werden. Zum Beispiel <string ref="meinString">. Ansonsten ist alles identisch zu "cp".
    del Dasselbe wie "ref", nur dass das Element aus dem kopierten content Element entfernt wird.

    6.9 Positionierung von Content Elementen (position, area)

    Die Content Elemente (string, tape, box, checkerboard) können beliebig auf der Anzeige positioniert werden. Beim String geht das sowohl abslout als auch relativ innerhalb eines definierten Bereichs. Die übrigen Elemente werden durch die Angabe eines Bereichs positioniert.

    6.9.1 Bereich definieren mit area (inner, outer)

    Die Angabe eines Bereichs ist beim String optional und bei Rechteck und Schachbrettmuster Pflicht. Beim Rechteck gibt es dieses Element doppelt unter den Namen "inner" und "outer", Inhalt und Funktionsweise sind jedoch identisch.


    Beim String ist die Definition eines Bereichs interessant, wenn es um relative Positionierung geht oder wenn der String invertiert wird.

    Bei der Invertierung wird der gesamte angegebene Bereich invertiert. Ist kein Bereich definiert, wird hierfür automatisch einer festgelegt.

    Wenn bei relativer Positionierung kein Bereich definiert ist, passiert das jedoch nicht und das Ergebnis wird sehr wahrscheinlich nicht dem gewünschten entsprechen.


    Innerhalb des area Elements (oder inner/outer) wird eine Fläche über die Koordinaten der linken oberen (x1, y1) und der rechten unteren Ecke (x2, y2) definiert.

    Element Beschreibung
    <x1>N</x1>
    <y1>N</y1>
    <x2>N</x2>
    <y2>N</y2>
    Angabe von Koordinaten auf der Anzeige. Die linke obere Ecke der Anzeige entspricht den Koordinaten x = 0, y = 0.

    6.9.2 Position definieren mit position

    String und Absperrband werden über diese Positionsangabe positioniert

    Element Beschreibung
    <x>N</x>
    <y>N</y>
    Angabe von Koordinaten auf der Anzeige. Die linke obere Ecke der Anzeige entspricht den Koordinaten x = 0, y = 0.
    <halign>left/center/right</halign> Nur beim String verfügbar. Horizontale Ausrichtung innerhalb des definierten Bereichs. Wird kein Bereich definiert, passiert irgendwas, aber vermutlich nicht das, was man möchte.
    <valign>top/middle/bottom</valign> Nur beim String verfügbar. Vertikale Ausrichtung innerhalb des definierten Bereichs. Wird kein Bereich definiert, passiert irgendwas, aber vermutlich nicht das, was man möchte.


    7 Benutzung von Templates

    folgt...

    8 Sonstiges

    Hast Du Fragen? Hast Du Kommentare? Hier gibt es einen Thread im Forum, in dem Du das alles loswerden kannst ;-)