Blinkenlights Markup Language
Blinkenlights Markup Language
Die Blinkenlights Markup Language ist das Dateiformat, in dem die Animationen von ArcadePaint abgespeichert werden. Es handelt sich um ein XML-basiertes Format. Wir dokumentieren es hier, falls jemand es selbst erzeugen möchte. Der Aufbau des Formats ist für die Benutzung von ArcadePaint nicht notwendig. Kenntnis von XML ist allerdings für das Verständnis des Dateiformats hilfreich.
Die DTD (Document Type Definition) findet sich hier (wenn Du nicht weißt, wofür eine DTD gut ist kannst Du sie auch ignorieren): http://www.blinkenlights.de/dtd/bml.dtd
Dokumentstruktur
Jedes Blinkenlights Movie beginnt mit dem Document Element <blm>. Es enthält (optional) ein <header> Element und ein oder mehrere <frame> Elemente. In <header> werden ausschliesslich Metainformationen abgelegt, die für das Abspielen der Animation nicht notwendig sind. Die <frame> Elemente enthalten die eigentlichen Bildinformationen.
Im Document Element werden die Höhe und Breite, sowie die Farbtiefe (bits) und die Anzahl der Farben (channels) angegeben. Für Arcade ist "channels" immer 1. Der Wert von "bits" kann variieren: 1 (monochrom), 2-8 (4,8,16,32,64,128,256 Graustufen).
Beschreibung der Attribute von <blm>
| width | Breite der Matrix in Pixeln |
| height | Höhe der Matrix in Pixeln |
| bits | Anzahl der Farbtiefe in Bits (1 = monochrom) |
| channels | Anzahl der Farbkanäle. Für Arcade ist dieser Wert immer 1. Für RGB-Bilder ist er 3. |
Beschreibung der Elemente in <header>
| title | Titel der Animation |
| description | Kurze Beschreibung der Animationen in einem oder zwei Sätzen (optional) |
| creator | Software, die zum Erstellen der Datei verwendet wurde (optional) |
| author | Name des Autors (optional) |
| E-Mail-Adresse des Autors (optional) | |
| url | Home Page des Autors (optinal) |
Beschreibung der Elemente in <frame>
Jeder Frame enthält soviele <row> Elemente, wie durch das Attribut height angegeben wurde. Das Attribut duration spezifiziert die Haltedauer des Frames in Millisekunden.
Aufbau der Reihendaten
Jede einzelne Zeile beschreibt die Farbwerte der Pixel in hexadezimaler Notation. Ist die Farbtiefe 1-4 Bits gross, dann wird pro Pixel eine einzelne hexadezimale Ziffer (0-f) verwendet. Ist die Farbtiefe 5-8 Bits gross, werden zwei hexadezimale Ziffern verwendet (00-ff).
Pro Pixel folgen für jeden Kanal je ein Farbwert hintereinander. In einem RGB-Bild mit channels="3" folgen daher 3 Farbwerte direkt aufeinander.
Beispiel
<?xml version="1.0" encoding="utf-8"?>
<blm width="26" height="20" bits="4" channels="1">
<header>
<title>Alfred Hitchcock</title>
<description>Un portrait du grand maître du suspense</description>
<creator>ArcadePaint</creator>
<author>J. Random Hacker</author>
<email>my@email.com</email>
<url>http://my.home.page/</url>
</header>
<frame duration="200">
<row>00000001369ceec95100000000</row>
<row>0000127acdeffffffe94000000</row>
<row>0015569bcdeeeeffffffb50000</row>
<row>01421465779eeeedccdefeb100</row>
<row>0110026bdd77deddeeedeed300</row>
<row>000011136aa5ced979bcdcc200</row>
<row>0000688acb65bddeddeefca100</row>
<row>000028abca11468deedddb8200</row>
<row>0000247bc30248acddcccbc700</row>
<row>0000025ba668abcbcdcbbad600</row>
<row>00000069525779baacca99c400</row>
<row>0000002850013557baaa966100</row>
<row>00000003212469baaa98710000</row>
<row>00000000000001354368300000</row>
<row>00000000000001377567100000</row>
<row>000010000000169b98ae400000</row>
<row>00001100000002699dff700000</row>
<row>000001225887203affffb10000</row>
<row>0000469bdee60012afffb10000</row>
<row>00003cadfffa118eceef710000</row>
</frame>
</blm>
Dateinamen
Der Name einer Blinkenlights Markup Language Datei sollte auf ".bml" enden.