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:
parent
fddad757c6
commit
1f788a318b
10
config.def.h
10
config.def.h
|
@ -45,11 +45,6 @@ static const double CONTRAST_MAX = 4.0;
|
||||||
/* command i_scroll pans image 1/PAN_FRACTION of screen width/height */
|
/* command i_scroll pans image 1/PAN_FRACTION of screen width/height */
|
||||||
static const int PAN_FRACTION = 5;
|
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.
|
/* percentage of memory to use for imlib2's cache size.
|
||||||
* 3 means use 3% of total memory which is about 245MiB on 8GiB machine.
|
* 3 means use 3% of total memory which is about 245MiB on 8GiB machine.
|
||||||
* 0 or less means disable cache.
|
* 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;
|
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
|
#endif
|
||||||
#ifdef INCLUDE_THUMBS_CONFIG
|
#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
|
Enables anti-aliasing, when given
|
||||||
.I no
|
.I no
|
||||||
as an argument, disables it instead.
|
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
|
.SH KEYBOARD COMMANDS
|
||||||
.SS General
|
.SS General
|
||||||
The following keyboard commands are available in both image and thumbnail modes:
|
The following keyboard commands are available in both image and thumbnail modes:
|
||||||
|
|
2
image.c
2
image.c
|
@ -91,7 +91,7 @@ void img_init(img_t *img, win_t *win)
|
||||||
img->checkpan = false;
|
img->checkpan = false;
|
||||||
img->dirty = false;
|
img->dirty = false;
|
||||||
img->anti_alias = options->anti_alias;
|
img->anti_alias = options->anti_alias;
|
||||||
img->alpha = ALPHA_LAYER;
|
img->alpha = options->alpha_layer;
|
||||||
img->multi.cap = img->multi.cnt = 0;
|
img->multi.cap = img->multi.cnt = 0;
|
||||||
img->multi.animate = options->animate;
|
img->multi.animate = options->animate;
|
||||||
img->multi.framedelay = options->framerate > 0 ? 1000 / options->framerate : 0;
|
img->multi.framedelay = options->framerate > 0 ? 1000 / options->framerate : 0;
|
||||||
|
|
1
nsxiv.h
1
nsxiv.h
|
@ -241,6 +241,7 @@ struct opt {
|
||||||
float zoom;
|
float zoom;
|
||||||
bool animate;
|
bool animate;
|
||||||
bool anti_alias;
|
bool anti_alias;
|
||||||
|
bool alpha_layer;
|
||||||
int gamma;
|
int gamma;
|
||||||
unsigned int slideshow;
|
unsigned int slideshow;
|
||||||
int framerate;
|
int framerate;
|
||||||
|
|
16
options.c
16
options.c
|
@ -66,8 +66,13 @@ static void print_version(void)
|
||||||
|
|
||||||
void parse_options(int argc, char **argv)
|
void parse_options(int argc, char **argv)
|
||||||
{
|
{
|
||||||
enum { /* ensure these can't be represented in a single byte */
|
enum {
|
||||||
OPT_AA = UCHAR_MAX + 1
|
/* 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[] = {
|
static const struct optparse_long longopts[] = {
|
||||||
{ "framerate", 'A', OPTPARSE_REQUIRED },
|
{ "framerate", 'A', OPTPARSE_REQUIRED },
|
||||||
|
@ -95,6 +100,7 @@ void parse_options(int argc, char **argv)
|
||||||
{ "zoom", 'z', OPTPARSE_REQUIRED },
|
{ "zoom", 'z', OPTPARSE_REQUIRED },
|
||||||
{ "null", '0', OPTPARSE_NONE },
|
{ "null", '0', OPTPARSE_NONE },
|
||||||
{ "anti-alias", OPT_AA, OPTPARSE_OPTIONAL },
|
{ "anti-alias", OPT_AA, OPTPARSE_OPTIONAL },
|
||||||
|
{ "alpha-layer", OPT_AL, OPTPARSE_OPTIONAL },
|
||||||
{ 0 }, /* end */
|
{ 0 }, /* end */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -115,6 +121,7 @@ void parse_options(int argc, char **argv)
|
||||||
_options.scalemode = SCALE_DOWN;
|
_options.scalemode = SCALE_DOWN;
|
||||||
_options.zoom = 1.0;
|
_options.zoom = 1.0;
|
||||||
_options.anti_alias = ANTI_ALIAS;
|
_options.anti_alias = ANTI_ALIAS;
|
||||||
|
_options.alpha_layer = ALPHA_LAYER;
|
||||||
_options.animate = false;
|
_options.animate = false;
|
||||||
_options.gamma = 0;
|
_options.gamma = 0;
|
||||||
_options.slideshow = 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);
|
error(EXIT_FAILURE, 0, "Invalid argument for option --anti-alias: %s", op.optarg);
|
||||||
_options.anti_alias = op.optarg == NULL;
|
_options.anti_alias = op.optarg == NULL;
|
||||||
break;
|
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…
Reference in a new issue