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
This commit is contained in:
NRK
2023-01-17 15:48:59 +06:00
committed by Gitea
parent fddad757c6
commit 1f788a318b
5 changed files with 26 additions and 8 deletions

View File

@ -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;
}
}