Buchempfehlung
Visual Basic 6 Kochbuch
Visual Basic 6 Kochbuch
Viele praktische Tipps zum Programmieren mit Visual Basic 6, die sich oft auch auf FB übertragen lassen. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Tutorial

Pixmap Produktion für Fltk

von MitgliedKnattertonSeite 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)

geany1

geany2

gany3

geany4

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

geany5

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
  • Das Tutorial wurde am 18.10.2019 von MitgliedKnatterton angelegt.
  • Die aktuellste Version wurde am 20.10.2019 von MitgliedKnatterton gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen