[hackers] [sxiv] Add -A option to force framerate on animated images || dwminer

From: <git_AT_suckless.org>
Date: Mon, 28 Nov 2016 19:10:34 +0100 (CET)

commit 2c566c5320c11e9844f192bfcff2d1a869471415
Author: dwminer <daltonminer_AT_gmail.com>
AuthorDate: Sun Nov 27 02:54:15 2016 -0500
Commit: dwminer <daltonminer_AT_gmail.com>
CommitDate: Sun Nov 27 02:59:05 2016 -0500

    Add -A option to force framerate on animated images

diff --git a/image.c b/image.c
index 801bbe5..dd37207 100644
--- a/image.c
+++ b/image.c
_AT_@ -68,6 +68,7 @@ void img_init(img_t *img, win_t *win)
         img->alpha = ALPHA_LAYER;
         img->multi.cap = img->multi.cnt = 0;
         img->multi.animate = options->animate;
+ img->multi.framedelay = options->framerate > 0 ? 1000 / options->framerate : 0;
         img->multi.length = 0;
 
         img->cmod = imlib_create_color_modifier();
_AT_@ -263,6 +264,7 @@ bool img_load_gif(img_t *img, const fileinfo_t *file)
                                                              img->multi.cap * sizeof(img_frame_t));
                         }
                         img->multi.frames[img->multi.cnt].im = im;
+ delay = img->multi.framedelay > 0 ? img->multi.framedelay : delay;
                         img->multi.frames[img->multi.cnt].delay = delay > 0 ? delay : DEF_GIF_DELAY;
                         img->multi.length += img->multi.frames[img->multi.cnt].delay;
                         img->multi.cnt++;
diff --git a/image.h b/image.h
index 8932fdf..2813c9b 100644
--- a/image.h
+++ b/image.h
_AT_@ -35,6 +35,7 @@ typedef struct {
         int cnt;
         int sel;
         bool animate;
+ int framedelay;
         int length;
 } multi_img_t;
 
diff --git a/options.c b/options.c
index 4a9772c..b38c146 100644
--- a/options.c
+++ b/options.c
_AT_@ -32,7 +32,7 @@ const options_t *options = (const options_t*) &_options;
 
 void print_usage(void)
 {
- printf("usage: sxiv [-abcfhioqrtvZ] [-e WID] [-G GAMMA] [-g GEOMETRY] "
+ printf("usage: sxiv [-abcfhioqrtvZ] [-A FRAMERATE] [-e WID] [-G GAMMA] [-g GEOMETRY] "
                "[-N NAME] [-n NUM] [-S DELAY] [-s MODE] [-z ZOOM] FILES...\n");
 }
 
_AT_@ -60,6 +60,7 @@ void parse_options(int argc, char **argv)
         _options.animate = false;
         _options.gamma = 0;
         _options.slideshow = 0;
+ _options.framerate = 0;
 
         _options.fullscreen = false;
         _options.embed = 0;
_AT_@ -71,7 +72,7 @@ void parse_options(int argc, char **argv)
         _options.thumb_mode = false;
         _options.clean_cache = false;
 
- while ((opt = getopt(argc, argv, "abce:fG:g:hin:N:oqrS:s:tvZz:")) != -1) {
+ while ((opt = getopt(argc, argv, "aA:bce:fG:g:hin:N:oqrS:s:tvZz:")) != -1) {
                 switch (opt) {
                         case '?':
                                 print_usage();
_AT_@ -79,6 +80,13 @@ void parse_options(int argc, char **argv)
                         case 'a':
                                 _options.animate = true;
                                 break;
+ case 'A':
+ _options.animate = true;
+ n = strtol(optarg, &end, 0);
+ if (*end != '\0' || n <= 0)
+ error(EXIT_FAILURE, 0, "Invalid argument for option -A: %s", optarg);
+ _options.framerate = n;
+ break;
                         case 'b':
                                 _options.hide_bar = true;
                                 break;
diff --git a/options.h b/options.h
index 40c2506..c9879f3 100644
--- a/options.h
+++ b/options.h
_AT_@ -37,6 +37,7 @@ typedef struct {
         bool animate;
         int gamma;
         int slideshow;
+ int framerate;
 
         /* window: */
         bool fullscreen;
Received on Mon Nov 28 2016 - 19:10:34 CET

This archive was generated by hypermail 2.3.0 : Mon Nov 28 2016 - 19:12:16 CET