fltk/examples/animgifimage-simple.cxx

41 lines
1.4 KiB
C++

//
// Minimal program for displaying an animated GIF file
// with the Fl_Anim_GIF_Image class.
//
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Anim_GIF_Image.H>
#include <FL/Fl.H>
#include <stdio.h>
int main(int argc, char *argv[]) {
Fl_Double_Window win(400, 300, "Fl_Anim_GIF_Image demo");
// prepare a canvas (widget) for the animation
Fl_Box canvas(20, 40, win.w()-40, win.h()-80, "Hello from FLTK GIF-animation!");
canvas.align(FL_ALIGN_TOP|FL_ALIGN_IMAGE_BACKDROP);
canvas.labelsize(20);
win.resizable(win);
win.end();
win.show(1, argv);
// Create and load the animated gif as image
// of the `canvas` widget and start it immediately.
// We use the `DONT_RESIZE_CANVAS` flag here to tell the
// animation *not* to change the canvas size (which is the default).
const char *default_image = "../test/pixmaps/fltk_animated.gif";
Fl_Anim_GIF_Image animgif(/*name_=*/ argv[1] ? argv[1] : default_image,
/*canvas_=*/ &canvas,
/*flags_=*/ Fl_Anim_GIF_Image::DONT_RESIZE_CANVAS);
// resize animation to canvas size
animgif.scale(canvas.w(), canvas.h(), /*can_expand*/1, /*proportional*/1);
// check if loading succeeded
printf("%s: ld=%d, valid=%d, frames=%d, size=%dx%d\n",
animgif.name(), animgif.ld(), animgif.valid(),
animgif.frames(), animgif.canvas_w(), animgif.canvas_h());
if (animgif.valid())
return Fl::run();
}