Blinkenlights Markup Language

Blinkenlights Markup Language

thinkpad 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>

widthBreite der Matrix in Pixeln
heightHöhe der Matrix in Pixeln
bitsAnzahl der Farbtiefe in Bits (1 = monochrom)
channelsAnzahl der Farbkanäle. Für Arcade ist dieser Wert immer 1. Für RGB-Bilder ist er 3.

Beschreibung der Elemente in <header>

titleTitel der Animation
descriptionKurze Beschreibung der Animationen in einem oder zwei Sätzen (optional)
creatorSoftware, die zum Erstellen der Datei verwendet wurde (optional)
authorName des Autors (optional)
emailE-Mail-Adresse des Autors (optional)
urlHome 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.