diff options
Diffstat (limited to 'test/pixmap.cxx')
| -rw-r--r-- | test/pixmap.cxx | 54 |
1 files changed, 44 insertions, 10 deletions
diff --git a/test/pixmap.cxx b/test/pixmap.cxx index c8fb54429..bc08164ea 100644 --- a/test/pixmap.cxx +++ b/test/pixmap.cxx @@ -18,17 +18,20 @@ #include <FL/Fl_Double_Window.H> #include <FL/Fl_Button.H> #include <FL/Fl_Pixmap.H> +#include <FL/Fl_Anim_GIF_Image.H> #include <stdio.h> -#include "pixmaps/porsche.xpm" +#include "pixmaps/animated_fluid_gif.h" #include <FL/Fl_Toggle_Button.H> Fl_Toggle_Button *leftb,*rightb,*topb,*bottomb,*insideb,*overb,*inactb; Fl_Button *b; Fl_Double_Window *w; +Fl_Anim_GIF_Image *pixmap; +Fl_Anim_GIF_Image *depixmap; -void button_cb(Fl_Widget *,void *) { +void button_cb(Fl_Widget *wgt,void *) { int i = 0; if (leftb->value()) i |= FL_ALIGN_LEFT; if (rightb->value()) i |= FL_ALIGN_RIGHT; @@ -42,6 +45,21 @@ void button_cb(Fl_Widget *,void *) { w->redraw(); } +void play_cb(Fl_Widget *wgt,void *) { + pixmap->start(); + depixmap->start(); +} + +void stop_cb(Fl_Widget *wgt,void *) { + pixmap->stop(); + depixmap->stop(); +} + +void step_cb(Fl_Widget *wgt,void *) { + pixmap->next(); + depixmap->next(); +} + int dvisual = 0; int arg(int, char **argv, int &i) { if (argv[i][1] == '8') {dvisual = 1; i++; return 1;} @@ -53,18 +71,24 @@ int arg(int, char **argv, int &i) { int main(int argc, char **argv) { int i = 1; if (Fl::args(argc,argv,i,arg) < argc) - Fl::fatal(" -8 # : use default visual\n%s\n",Fl::help); + Fl::fatal(" -8 # : use default visual\n%s\n", Fl::help); + if (!dvisual) Fl::visual(FL_RGB); - Fl_Double_Window window(400,400); ::w = &window; - Fl_Button b(140,160,120,120,"Pixmap"); ::b = &b; - Fl_Pixmap *pixmap = new Fl_Pixmap(porsche_xpm); - Fl_Pixmap *depixmap; - depixmap = (Fl_Pixmap *)pixmap->copy(); + Fl_Double_Window window(400,440); ::w = &window; + Fl_Button b(130,170,140,140,"Pixmap"); ::b = &b; + + Fl_Anim_GIF_Image::animate = true; + pixmap = new Fl_Anim_GIF_Image("fluid", animated_fluid_gif, animated_fluid_gif_size, + &b, Fl_Anim_GIF_Image::DONT_RESIZE_CANVAS); + pixmap->speed(0.5); + b.image(pixmap); + + depixmap = (Fl_Anim_GIF_Image*)pixmap->copy(); depixmap->inactive(); + b.deimage(depixmap); // "bind" images to avoid memory leak reports (valgrind, asan) // note: these reports are benign because they appear at exit, but anyway - b.bind_image(pixmap); b.bind_deimage(depixmap); @@ -82,7 +106,17 @@ int main(int argc, char **argv) { overb->callback(button_cb); inactb = new Fl_Toggle_Button(125,75,100,25,"inactive"); inactb->callback(button_cb); - if (!dvisual) Fl::visual(FL_RGB); + + Fl_Button* play = new Fl_Button(300, 50, 25, 25, "@>"); + play->labelcolor(FL_DARK2); + play->callback(play_cb); + Fl_Button* stop = new Fl_Button(325, 50, 25, 25, "@||"); + stop->labelcolor(FL_DARK2); + stop->callback(stop_cb); + Fl_Button* step = new Fl_Button(350, 50, 25, 25, "@|>"); + step->labelcolor(FL_DARK2); + step->callback(step_cb); + window.resizable(window); window.end(); window.show(argc,argv); |
