summaryrefslogtreecommitdiff
path: root/test/pixmap.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'test/pixmap.cxx')
-rw-r--r--test/pixmap.cxx54
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);