summaryrefslogtreecommitdiff
path: root/test/pixmap_browser.cxx
diff options
context:
space:
mode:
authorwcout <wcout@users.noreply.github.com>2023-01-21 17:27:58 +0100
committerGitHub <noreply@github.com>2023-01-21 17:27:58 +0100
commit2ddfd9d9492d9fc1df111ec9211dd1be4d424c35 (patch)
treec766d0dfb3a2d7a75c275db2821d5bcf0e935a15 /test/pixmap_browser.cxx
parent1fc269b0d4c79b256cc57740d318f95dded8c340 (diff)
Animated GIF support (Fl_Anim_GIF_Image class) (#375)
Diffstat (limited to 'test/pixmap_browser.cxx')
-rw-r--r--test/pixmap_browser.cxx19
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();
}