Tutorial
Pixmap Produktion für Fltk
von Knatterton | Seite 1 von 1 |
Die Pixmap Produktion kann man so rationalisieren, dass man dutzende oder gar hunderte in relativ kurzer Zeit erzeugen kann. Dazu dient eine Kombination von verschiedenen Programmen, auch auf der Kommandozeile. Hier wird mal ein typischer Ablauf in Linux Mint beschrieben.
Zuerst sucht man sich eine Anzahl gleichartiger kleiner .png Dateien, etwa im Format 32x32 oder 48x48 und bringt diese alle in ein Verzeichnis. Nun kann man die Farben reduzieren, wenn gewünscht auf ca. 30. Das können zwar viele Programme wie Gimp oder Faststone. Doch für die folgenden Batchoperationen empfiehlt sich Imagemagick. Dieses Programm ist nicht ganz einfach in der Bedienung, doch man kann damit so gut wie alles machen, auch im Batchbetrieb. Insbesondere in Kombination mit Scripten (.sh oder .bat). Da muss man eben mal in die Dokumentationen sehen.
https://wiki.ubuntuusers.de/ImageMagick/
Los gehts mit der Installation im Terminal.
sudo apt-get install imagemagick imagemagick-doc
Nun wechselt man mit "cd" in das Verzeichnis mit den .png -Dateien. Die Farben reduzieren kann man, muss man aber nicht. Mit "Mogrify" werden die .png Dateien in .xpm gewandelt und dabei die .png überschrieben (evtl. Sicherungskopie erstellen)
mogrify -format xpm *.png
Alle .xpm im Verzeichnis werden in eine einzige .bas Datei kopiert.
cat *.xpm > xpms.bas
Eine Liste der Dateinamen brauchen wir später noch:
ls *.xpm > dir.txt
Nun geht es mit xpms.bas in Geany weiter. Durch geschicktes Ersetzen können die .xpm Dateien in FB - Format gebracht werden.
(Einzelheiten können in den Bildern leicht abweichen)
Besonders nützlich ist dabei das Zeilenende-Zeichen (ein Quadrat mit Punkten). Damit kann man hier viel machen.
Zum Schluss etwas Nacharbeit und noch oben und unten einige Zeilen einfügen und das war's dann:
' Fltk_Bulb_Test.bas
#include once "fltk-c.bi"
dim as zstring ptr bulb_clear_xpm(...) => {@"32 32 24 1", _
@" c None", _
@". c #3F3924", _
@"+ c #414340", _
@"@ c #554D2D", _
@"# c #6B6D6A", _
@"$ c #726E50", _
@"% c #7D7F7D", _
@"& c #8A865C", _
@"* c #8A8C89", _
@"= c #969462", _
@"- c #9C9E98", _
@"; c #A2A081", _
@"> c #B5B569", _
@", c #B2B592", _
@"' c #BCB988", _
@") c #BCBEBB", _
@"! c #CCCECB", _
@"~ c #D4D3A1", _
@"{ c #D9D7BB", _
@"] c #DDDFDC", _
@"^ c #E7E9E6", _
@"/ c #F1F3C6", _
@"( c #EFF1ED", _
@"_ c #F5F7F4", _
@" ", _
@" %%%% ", _
@" *-)!]]!)-* ", _
@" %!!!]]^]]]]% ", _
@" *!!]((((((^]^- ", _
@" %!!^((((((((]](% ", _
@" )!^(((((((((^]]] ", _
@" *)](((((((((((]]^* ", _
@" -!^(((((((((((]]^- ", _
@" )!((((((___(((^^^! ", _
@" )]^((((_____(^^^^! ", _
@" )]](((______((^^^! ", _
@" -]](((_____(^(^^^) ", _
@" *]]^^]]]^(^]!((^(- ", _
@" )^^^^^^]!]]^(((] ", _
@" *)^^^^((((^(((]* ", _
@" *!((]((((](((* ", _
@" -((]^__^]__! ", _
@" %((^)(()^__- ", _
@" )]!-!)-)!(# ", _
@" %!_!]]!^^- ", _
@" @&;///({$ ", _
@" @>~,;;;;=@ ", _
@" @>_///~'$ ", _
@" @>///~~'=@ ", _
@" @>_///~'&@ ", _
@" @>///~~'&@ ", _
@" .@$&$$@. ", _
@" %)-# ", _
@" +##+ ", _
@" ", _
@" "}
var bulb = Fl_PixmapNew(@bulb_clear_xpm(0))
var win = Fl_Double_WindowNew(384,384,"Fltk Bulb Test")
var box1 = Fl_BoxExNew(50,32,32,32)
Fl_WidgetSetImage box1,bulb
Fl_WindowShow win
Fl_Run
Ob man mit dieser Methode eine oder 100 Pixmaps erzeugt ist fast schon egal, da man die Ersetzen-Befehle im ganzen Dokument oder in einer Auswahl ausführen kann.
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|
|