Pixmaps

Es ärgert mich gerade etwas, dass ich mit meinen eigenen Wunschvorstellungen nicht zurechtkomme. Denn ich hätte gerne noch eine Toolbar im GATE-UI-Demoprogramm. Doch das zieht einen Rattenschwanz an Arbeit hinter sich her. Und vieles dreht sich um die Frage:

Wie bekommt man !plattformübergreifend! Grafiken in ein Programm?

Und die Antwort lautet: X Pixmaps.


Eine Stärke von Windows ist die standardisierte Möglichkeit Datenressourcen in eine Programmdatei zu packen.
Das können Texte für mehrere Ausgabesprachen sein, aber auch Bilder, Symbole oder andere binäre Blöcke.

Die Windows API stellt dann Funktionen bereit, diese Ressourcen zur Laufzeit in Objekte zu laden und so kann man z.B. auch Icons für Toolbars “aus der EXE” holen und muss keine separaten Dateien mit herum schleppen.

Die GNU Compiler bieten zwar die Möglichkeit an, ebenso weitere Sektionen in Programmdateien unterzubringen, doch Ressourcen mit standardisierten unterscheidbaren Typen oder eine fixe API gibt es dafür nicht.

Wie binden also Linux-UI-Programme Bilder ein?

Über Pixmaps.

Und das sind eigentlich reine C-Quellcodes, die einfach mitkompiliert werden und vom Programmierer über globale Variablennamen angesprochen werden können.

Eine Pixmap ist in Wahrheit eine in C Code eingebettete Ansammlung von Textzeilen, wovon die erste Zeile einen Header darstellt, danach eine Farbtabelle aufgebaut wird, wo eine Zeichenkombination mit einer RGB-Farbinformation verknüpft wird und am Ende folgen dann die Bilddaten in Textform, wo jeder farbige Pixel durch eine zuvor definierte eindeutige Zeichenkombination repräsentiert wird.

Das Format ist standardisiert, womit Grafikprogramme (wie z.B. GIMP) eine jede Grafik als XPM-Datei exportierten können. Und diese XPM kann dann als C Header in ein Programm eingebunden und über einen Variablennamen angesprochen werden.

Wenn man die Zeilen interpretiert, kann man eine Rastergrafik daraus aufbauen und auf den Bildschirm zaubern.

Das ist natürlich etwas aufwendiger, als es mit Windows-Ressourcen umgesetzt werden kann, aber dafür funktioniert diese Technologie vom Mikrocontroller bis zum High-End Gerät auf allen Betriebssystemen.

Und daher sind Pixmaps einfach “cool”!

Mir spielt das nur gerade zeitlich etwas dumm in die Hände, weil es im GATE Projekt noch wenig Code für Grafik-Bearbeitung gibt. Folglich muss so einiges niedergeschrieben werden, bevor das erste Icon auf den Bildschirm kommt.

Aber … wie sagt man da:

Es ist eine Herausforderung!

Und schon gibt es allen Grund die Zähne zusammen zu beißen und die Sache anzugehen.