Fib-Multimediaobjekte können direkt in einer lesbaren Form im XML-Format erstellt und abgespeichert werden (siehe Dokumentation Abschnitt XML-Format).

Nachfolgende Beispiele sollen einen Eindruck von den Möglichkeiten der Wiederverwendung von Objekten in Fib geben. Alle XML-Darstellungen können direkt in die entsprechenden dargestellte Bilder durch den Fib-Konverter (convertFromFib) übersetzt werden.

Ein Strichmännchen

Bild eines Strichmännchens Das Bild zum Beispiel ist links dargestellt. Es zeigt ein blaues Strichmännchen.

Die XML-Beschreibung des Bildes im Fib-Format ist weiter unten aufgeführt. Der besseren Lesbarkeit wegen ist sie etwas ausschweifend dargestellt.

Speicherplatzbedarf in verschiedenen Formaten:

Erklärung zur XML-Darstellung

Das root-Element bildet die Umgebung des Bildes. Es enthält im Wesentlichen zwei Teile: die Angabe der Definitionsbereiche (<domains>) und das eigentliche darstellende Fib-Objekt (<main_fib_object>).

Die Definitionsbereiche geben die Größe des Bildes (<dim count="2"> ...; das Bild ist 256 Pixel breit und 512 Pixel hoch), die verwendeten Eigenschaften (<property name="colorRGB" >; 24 Bit RGB Farben, für jeden Kanal 8 Bit), die in den Elementen verwendbaren Zahlen (<externObject>) und die verwendeten externen Objekte (<externObjectInput identifier="-5000">; externes subobjekt mit dem Identifier -5000 (es kommt aus der Datenbank) ) an.

Mit dem Eigenschaftselement <property> wird die (RGB-) Farbe (type="property.colorRGB") des Objekts auf Blau gesetzt.

Das externe Objekt Element <obj> ruft dann das externe Objekt mit dem Identifier -5000 (identifier="-5000", ein Strichmännchen aus der Fib-Datenbank) auf.

Die Parameter bestimmen dann das Aussehen des Strichmännchens. Bei der Erzeugung des Strichmännchens für die Fib-Datenbank wurde darauf geachtet, dass die Eingabeparameter möglichst intuitiv zu benutzen sind. So ist der Startpunkt des Strichmännchens der untere Punkt des rechten Fußes. Auf diese Weise ist das Strichmännchens leicht in Bezug zum Boden zu positionieren. Läge der Startpunkt beispielsweise in der Körpermitte, müßte immer die Beinstellung beachtet werden, um das Strichmännchen auf den Boden zu stellen.

XML-Darstellung des Strichmännchen Bildes

<?xml version="1.0" encoding="UTF-8"?>
<fib_object
         xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://www.biokom.info/"
         xsd:schemaLocation="http://www.biokom.info/fib.xsd">
<root>
   <multimedia_info fib_version="3" db_version="3"/>
   <domains>
      <dim count="2">
         <dimension number="1" direction="horizontal"/>
         <dimension number="2" direction="vertical"/>
         <vector elements="2">
            <naturalNumber max="255" />
            <naturalNumber max="511" />
         </vector>
      </dim>
      <property name="colorRGB" >
         <vector elements="3">
            <naturalNumber max="255" />
            <naturalNumber max="255" />
            <naturalNumber max="255" />
         </vector>
      </property>
      
      <externObject>
         <vector elements="4">
            <integer min="-5000" max="-5000" /><!-- Identifier -->
            <integer min="15" max="15" /><!-- Nummern für die Eingabewerte -->
            <naturalNumber max="0" /><!--Nummern für die Unterobjekte-->
            <naturalNumber max="0" /><!--Nummern für die Ausgabewerte-->
         </vector>
      </externObject>
      <!-- externes Objekt für das Strichmännchen -->
      <externObjectInput identifier="-5000">
         <vector elements="15">
            <naturalNumber max="255" />
            <naturalNumber max="255" />
            <naturalNumber max="255" />
            <naturalNumber scalingfactor="0.00001" max="632000"/>
            <naturalNumber scalingfactor="0.00001" max="632000"/>
            <naturalNumber scalingfactor="0.00001" max="632000"/>
            <naturalNumber scalingfactor="0.00001" max="632000"/>
            <naturalNumber scalingfactor="0.00001" max="632000"/>
            <naturalNumber scalingfactor="0.00001" max="632000"/>
            <naturalNumber scalingfactor="0.00001" max="632000"/>
            <naturalNumber scalingfactor="0.00001" max="632000"/>
            <naturalNumber scalingfactor="0.00001" max="632000"/>
            <naturalNumber scalingfactor="0.00001" max="632000"/>
            <naturalNumber max="255" />
            <naturalNumber max="255" />
         </vector>
      </externObjectInput>
   </domains>
   <main_fib_object>
      <property>
         <vector type="property.colorRGB">
            <value>0</value>
            <value>0</value>
            <value>255</value>
         </vector>
         <obj identifier="-5000">
            <vector type="externObjectInput">
               <value>90</value><!-- Startpunk x (unterer Punkt rechter Fuß) -->
               <value>20</value><!-- Startpunk y (unterer Punkt rechter Fuß) -->
               <value>480</value><!-- Gröe -->
               <value>0</value><!-- Winkel Körper -->
               <value>0.7</value><!-- Winkel rechter oberer Arm -->
               <value>0.5</value><!-- Winkel linker oberer Arm -->
               <value>0.2</value><!-- Winkel rechters oberes Bein -->
               <value>0.2</value><!-- Winkel linkes oberers Bein -->
               <value>0</value><!-- Winkel Kopf -->
               <value>0</value><!-- Winkel rechter unterer Arm -->
               <value>0</value><!-- Winkel linker unterer Arm -->
               <value>0</value><!-- Winkel rechters unterers Bein -->
               <value>0</value><!-- Winkel linkes unterers Bein -->
               <value>0</value><!-- Weite der Linien -->
               <value>0</value><!-- Radius des Kopfes -->
            </vector>
         </obj>
      </property>
   </main_fib_object>
</root>
</fib_object>

Zwei Strichmännchen

Bild eines Strichmännchens

Das Bild zum Beispiel ist oben dargestellt. Es zeigt zwei Strichmännchen.

Hat man erst einmal ein externes Objekt definiert, ist es natürlich auch kein Problem es beliebig oft zu verwenden.
Durch die Parameter des Objekts kann es auch angepasst werden. Mit den Parametern kann das externe Objekt auf seine Benutzung zugeschnitten werden. So ist es kein Problem das zweite Strichmännchen in das Bild laufen zu lassen.

Auch die unterschiedliche Farbgebung ist dank der Trennung von Objekt und Eigenschaft leicht möglich.

Der Speicherplatzbedarf des Bildes in Fib erhöht sich durch das zweite Strichmännchen nur gering. Wohingegen bei anderen Formaten der Speicherplatzbedarf eher mit der Anzahl der Punkte im Bild wächst.
Speicherplatzbedarf in verschiedenen Formaten:

Externe Objekte können aber auch andere beliebig definierte Objekte sein. Es existieren beispielsweise in der Fib-Datenbank schon Objekte für Linien, Kreise, Funktionen, der Überdeckung von Pixel durch Halbebenen oder der GNU Lizenz.

Jeder kann sich also die Objekte in Fib definieren, die er für seine Anwendung benötigt. Objekte die nicht in der Fib Datenbank existieren, können einfach mit dem Fib Multimediaobjekt mitgeliefert werden.
Wenn zum Beispiel ein Zeichenprogramm Sterne verwendet, können diese als separates Fib-Objekt einmal für die Anwendung implementiert werden. Bei jeder Zeichnung, die Sterne verwendet, werden diese einfach als externes Objekt aufgerufen und in einem Unter-root-Objekt für das ganze Multimediaobjekt mitgeliefert.
Ein anderes Zeichenprogramm, das Fib beherrscht aber nicht die Sternobjekte kennt, kann solche Multimediaobjekte ganz normal wie andere Fib-Objekte öffnen und bearbeiten. Es kann sogar den Stern über dessen Parameter verändern, ohne zu wissen, worum es sich bei dem Objekt wirklich handelt. Trotz solcher Änderungen kann das ursprüngliche Zeichenprogramm das geänderte Multimediaobjekt öffnen und sogar seine Sterne als seine Sternobjekte wiedererkennen.
Dadurch wird der Datenaustausch zwischen verschiedenen Anwendungen vereinfacht.

Erklärung zur XML-Darstellung

Das root-Element ist im wesentlichen das Gleiche wie im ersten Beispiel. Die einzige Änderung betrifft den Definitionsbereiche für die Größe des Bildes (<dim count="2"> ...), das Bild ist nun 480 Pixel breit und 512 Pixel hoch (die Zählung beginnt bei 0, <naturalNumber max="479" /> bedeutet natürliche Zahlen von 0 bis 479, also 480 Werte).

Über das Listelement <list> werden mehrere Unterobjekte (die zwei Strichmännchen) zu einem Objekt zusammengefügt.

Mit dem Eigenschaftselementen <property> wird die (RGB-) Farbe des ersten Objekts auf Blau und die des zweiten auf Pink gesetzt.

Die externen Objekt Elemente <obj> rufen dann das externe Objekt mit dem Identifier -5000 (identifier="-5000", ein Strichmännchen aus der Fib-Datenbank) auf.

Die Parameter bestimmen dann das Aussehen der Strichmännchen. Sie sind für das zweite Strichmännchen so angepasst worden, dass es so aussieht, als ob es in das Bild läuft.

XML-Darstellung des zwei Strichmännchen Bildes

<?xml version="1.0" encoding="UTF-8"?>
<fib_object
         xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://www.biokom.info/"
         xsd:schemaLocation="http://www.biokom.info/fib.xsd">
<root>
   <multimedia_info fib_version="3" db_version="3"/>
   <domains>
      <dim count="2">
         <dimension number="1" direction="horizontal"/>
         <dimension number="2" direction="vertical"/>
         <vector elements="2">
            <naturalNumber max="479" />
            <naturalNumber max="511" />
         </vector>
      </dim>
      <property name="colorRGB" >
         <vector elements="3">
            <naturalNumber max="255" />
            <naturalNumber max="255" />
            <naturalNumber max="255" />
         </vector>
      </property>
      
      <externObject>
         <vector elements="4">
            <integer min="-5000" max="-5000" /><!-- Identifier -->
            <integer min="15" max="15" /><!-- Nummern für die Eingabewerte -->
            <naturalNumber max="0" /><!--Nummern für die Unterobjekte-->
            <naturalNumber max="0" /><!--Nummern für die Ausgabewerte-->
         </vector>
      </externObject>
      <!-- externes Objekt für das Strichmännchenk -->
      <externObjectInput identifier="-5000">
         <vector elements="15">
            <naturalNumber max="255" />
            <naturalNumber max="255" />
            <naturalNumber max="255" />
            <naturalNumber scalingfactor="0.00001" max="632000"/>
            <naturalNumber scalingfactor="0.00001" max="632000"/>
            <naturalNumber scalingfactor="0.00001" max="632000"/>
            <naturalNumber scalingfactor="0.00001" max="632000"/>
            <naturalNumber scalingfactor="0.00001" max="632000"/>
            <naturalNumber scalingfactor="0.00001" max="632000"/>
            <naturalNumber scalingfactor="0.00001" max="632000"/>
            <naturalNumber scalingfactor="0.00001" max="632000"/>
            <naturalNumber scalingfactor="0.00001" max="632000"/>
            <naturalNumber scalingfactor="0.00001" max="632000"/>
            <naturalNumber max="255" />
            <naturalNumber max="255" />
         </vector>
      </externObjectInput>
   </domains>
   <main_fib_object>
      <list>
         <property>
            <vector type="property.colorRGB">
               <value>0</value> <value>0</value> <value>255</value>
            </vector>
            <obj identifier="-5000">
               <vector type="externObjectInput">
                  <value>90</value>  <value>20</value>  <!-- Startpunk -->
                  <value>480</value> <value>0</value>   <!-- Größe, Winkel Körper -->
                  <value>0.7</value> <value>0.5</value> <!-- Winkel oberere Arme -->
                  <value>0.2</value> <value>0.2</value> <!-- Winkel obere Beine -->
                  <value>0</value>                      <!-- Winkel Kopf -->
                  <value>0</value> <value>0</value> <!-- Winkel untere Arme -->
                  <value>0</value> <value>0</value> <!-- Winkel untere Beine -->
                  <value>0</value> <value>0</value> <!-- Linienweite, Kopfradius -->
               </vector>
            </obj>
         </property>
         <property>
            <vector type="property.colorRGB">
               <value>192</value> <value>0</value> <value>64</value>
            </vector>
            <obj identifier="-5000">
               <vector type="externObjectInput">
                  <value>300</value> <value>20</value>   <!-- Startpunk -->
                  <value>480</value> <value>-0.1</value> <!-- Größe, Winkel Körper -->
                  <value>1.8</value> <value>0.5</value>  <!-- Winkel oberere Arme -->
                  <value>0.6</value> <value>0.2</value>  <!-- Winkel obere Beine -->
                  <value>0.1</value>                     <!-- Winkel Kopf -->
                  <value>1</value>   <value>-1.2</value> <!-- Winkel untere Arme -->
                  <value>0.6</value> <value>-1.0</value> <!-- Winkel untere Beine -->
                  <value>0</value>   <value>0</value>    <!-- Linienweite, Kopfradius -->
               </vector>
            </obj>
         </property>
      </list>
   </main_fib_object>
</root>
</fib_object>