summaryrefslogtreecommitdiff
path: root/examples/animgifimage-simple.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'examples/animgifimage-simple.cxx')
-rw-r--r--examples/animgifimage-simple.cxx40
1 files changed, 40 insertions, 0 deletions
diff --git a/examples/animgifimage-simple.cxx b/examples/animgifimage-simple.cxx
new file mode 100644
index 000000000..19f9732f2
--- /dev/null
+++ b/examples/animgifimage-simple.cxx
@@ -0,0 +1,40 @@
+//
+// 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();
+}