diff options
| author | wcout <wcout@users.noreply.github.com> | 2023-01-21 17:27:58 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-21 17:27:58 +0100 |
| commit | 2ddfd9d9492d9fc1df111ec9211dd1be4d424c35 (patch) | |
| tree | c766d0dfb3a2d7a75c275db2821d5bcf0e935a15 /test/pixmap_browser.cxx | |
| parent | 1fc269b0d4c79b256cc57740d318f95dded8c340 (diff) | |
Animated GIF support (Fl_Anim_GIF_Image class) (#375)
Diffstat (limited to 'test/pixmap_browser.cxx')
| -rw-r--r-- | test/pixmap_browser.cxx | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/test/pixmap_browser.cxx b/test/pixmap_browser.cxx index e9fc1ccf1..dca13316e 100644 --- a/test/pixmap_browser.cxx +++ b/test/pixmap_browser.cxx @@ -20,6 +20,7 @@ #include <FL/Fl_Double_Window.H> #include <FL/Fl_Button.H> #include <FL/Fl_Shared_Image.H> +#include <FL/Fl_GIF_Image.H> #include <FL/Fl_Printer.H> #include <string.h> #include <errno.h> @@ -36,6 +37,17 @@ Fl_Shared_Image *img; static char name[1024]; +void cb_forced_redraw(void *) { + Fl_Window *win = Fl::first_window(); + while (win) { + if (!win->menu_window()) + win->redraw(); + win = Fl::next_window(win); + } + if (Fl::first_window()) + Fl::repeat_timeout(1./10, cb_forced_redraw); +} + void load_file(const char *n) { if (img) { ((Fl_Shared_Image*)b->image())->release(); @@ -118,8 +130,10 @@ void svg_cb(Fl_Widget *widget, void *) { } int dvisual = 0; +int animate = 1; int arg(int, char **argv, int &i) { if (argv[i][1] == '8') {dvisual = 1; i++; return 1;} + if (argv[i][1] == 'a') {animate = 1; i++; return 1;} return 0; } @@ -131,6 +145,9 @@ int main(int argc, char **argv) { Fl::args(argc,argv,i,arg); + if (animate) + Fl_GIF_Image::animate = true; // create animated shared .GIF images (e.g. file chooser) + Fl_Double_Window window(400,450); ::w = &window; Fl_Box b(10,45,380,380); ::b = &b; b.box(FL_THIN_DOWN_BOX); @@ -146,5 +163,7 @@ int main(int argc, char **argv) { svg.callback(svg_cb); window.show(argc,argv); + if (animate) + Fl::add_timeout(1./10, cb_forced_redraw); // force periodic redraw return Fl::run(); } |
