add cli flag --alpha-layer

now that we have long-opts, we don't have to worry about exhausting the
alphabet list for short-opts. so adding a cli flag to set/unset the
checker background makes sense.

ref: https://codeberg.org/nsxiv/nsxiv/issues/404
pull/405/head
NRK 1 year ago committed by Gitea
parent fddad757c6
commit 1f788a318b

@ -45,11 +45,6 @@ static const double CONTRAST_MAX = 4.0;
/* command i_scroll pans image 1/PAN_FRACTION of screen width/height */
static const int PAN_FRACTION = 5;
/* if true, use a checkerboard background for alpha layer,
* toggled with 'A' key binding
*/
static const bool ALPHA_LAYER = false;
/* percentage of memory to use for imlib2's cache size.
* 3 means use 3% of total memory which is about 245MiB on 8GiB machine.
* 0 or less means disable cache.
@ -70,6 +65,11 @@ static const int CACHE_SIZE_FALLBACK = 32 * 1024 * 1024; /* fallback to 32MiB if
*/
static const bool ANTI_ALIAS = true;
/* if true, use a checkerboard background for alpha layer,
* toggled with 'A' key binding (overwritten via `--alpha-layer` option)
*/
static const bool ALPHA_LAYER = false;
#endif
#ifdef INCLUDE_THUMBS_CONFIG

@ -119,6 +119,11 @@ key-handler and the input of \-i will be separated by a NULL character.
Enables anti-aliasing, when given
.I no
as an argument, disables it instead.
.TP
.BI "\-\-alpha\-layer" [=no]
Enables checkerboard background for alpha layer, when given
.I no
as an argument, disables it instead.
.SH KEYBOARD COMMANDS
.SS General
The following keyboard commands are available in both image and thumbnail modes:

@ -91,7 +91,7 @@ void img_init(img_t *img, win_t *win)
img->checkpan = false;
img->dirty = false;
img->anti_alias = options->anti_alias;
img->alpha = ALPHA_LAYER;
img->alpha = options->alpha_layer;
img->multi.cap = img->multi.cnt = 0;
img->multi.animate = options->animate;
img->multi.framedelay = options->framerate > 0 ? 1000 / options->framerate : 0;

@ -241,6 +241,7 @@ struct opt {
float zoom;
bool animate;
bool anti_alias;
bool alpha_layer;
int gamma;
unsigned int slideshow;
int framerate;

@ -66,8 +66,13 @@ static void print_version(void)
void parse_options(int argc, char **argv)
{
enum { /* ensure these can't be represented in a single byte */
OPT_AA = UCHAR_MAX + 1
enum {
/* ensure these can't be represented in a single byte in order
* to avoid conflicts with short opts
*/
OPT_START = UCHAR_MAX,
OPT_AA,
OPT_AL
};
static const struct optparse_long longopts[] = {
{ "framerate", 'A', OPTPARSE_REQUIRED },
@ -95,6 +100,7 @@ void parse_options(int argc, char **argv)
{ "zoom", 'z', OPTPARSE_REQUIRED },
{ "null", '0', OPTPARSE_NONE },
{ "anti-alias", OPT_AA, OPTPARSE_OPTIONAL },
{ "alpha-layer", OPT_AL, OPTPARSE_OPTIONAL },
{ 0 }, /* end */
};
@ -115,6 +121,7 @@ void parse_options(int argc, char **argv)
_options.scalemode = SCALE_DOWN;
_options.zoom = 1.0;
_options.anti_alias = ANTI_ALIAS;
_options.alpha_layer = ALPHA_LAYER;
_options.animate = false;
_options.gamma = 0;
_options.slideshow = 0;
@ -247,6 +254,11 @@ void parse_options(int argc, char **argv)
error(EXIT_FAILURE, 0, "Invalid argument for option --anti-alias: %s", op.optarg);
_options.anti_alias = op.optarg == NULL;
break;
case OPT_AL:
if (op.optarg != NULL && !STREQ(op.optarg, "no"))
error(EXIT_FAILURE, 0, "Invalid argument for option --alpha-layer: %s", op.optarg);
_options.alpha_layer = op.optarg == NULL;
break;
}
}

Loading…
Cancel
Save