Revised scale mode and zoom level handling
- Scale mode is not reset to default value upon image loading anymore - New default key binding to change mode to scale-down - Removed scale mode setting from config.h - Removed -d command line option, as this is now the default at startup
This commit is contained in:
parent
524d9de877
commit
43a04c4757
12
README.md
12
README.md
|
@ -70,7 +70,6 @@ of small previews is displayed, making it easy to choose an image to open.
|
||||||
|
|
||||||
-b Do not show info bar on bottom of window
|
-b Do not show info bar on bottom of window
|
||||||
-c Remove all orphaned cache files from thumbnail cache and exit
|
-c Remove all orphaned cache files from thumbnail cache and exit
|
||||||
-d Scale all images to 100%, but fit large images into window
|
|
||||||
-F Use size-hints to make the window fixed/floating
|
-F Use size-hints to make the window fixed/floating
|
||||||
-f Start in fullscreen mode
|
-f Start in fullscreen mode
|
||||||
-G GAMMA Set image gamma to GAMMA (-32..32)
|
-G GAMMA Set image gamma to GAMMA (-32..32)
|
||||||
|
@ -83,11 +82,11 @@ of small previews is displayed, making it easy to choose an image to open.
|
||||||
-q Be quiet, disable warnings
|
-q Be quiet, disable warnings
|
||||||
-r Search given directories recursively for images
|
-r Search given directories recursively for images
|
||||||
-S DELAY Enable slideshow and set slideshow delay to DELAY seconds
|
-S DELAY Enable slideshow and set slideshow delay to DELAY seconds
|
||||||
-s Scale all images to fit into window
|
-s Fit images to window
|
||||||
-t Start in thumbnail mode
|
-t Start in thumbnail mode
|
||||||
-v Print version information and exit
|
-v Print version information and exit
|
||||||
-Z Same as `-z 100'
|
-Z Same as `-z 100'
|
||||||
-z ZOOM Scale all images to current zoom level, use ZOOM at startup
|
-z ZOOM Set zoom level to ZOOM percent
|
||||||
|
|
||||||
**Key mappings:**
|
**Key mappings:**
|
||||||
|
|
||||||
|
@ -132,9 +131,10 @@ of small previews is displayed, making it easy to choose an image to open.
|
||||||
+ Zoom in
|
+ Zoom in
|
||||||
- Zoom out
|
- Zoom out
|
||||||
= Set zoom level to 100%, or [count]%
|
= Set zoom level to 100%, or [count]%
|
||||||
w Fit image into window
|
w Set zoom level to 100%, but fit large images into window
|
||||||
e Fit image width to window width
|
W Fit image to window
|
||||||
E Fit image height to window height
|
e Fit image to window width
|
||||||
|
E Fit image to window height
|
||||||
|
|
||||||
h,j,k,l Pan image 1/5 of window width/height or [count] pixels
|
h,j,k,l Pan image 1/5 of window width/height or [count] pixels
|
||||||
left/down/up/right (also with arrow keys)
|
left/down/up/right (also with arrow keys)
|
||||||
|
|
11
config.def.h
11
config.def.h
|
@ -23,14 +23,6 @@ static const char * const BAR_FG_COLOR = "#EEEEEE";
|
||||||
#endif
|
#endif
|
||||||
#ifdef _IMAGE_CONFIG
|
#ifdef _IMAGE_CONFIG
|
||||||
|
|
||||||
/* how should images be scaled when they are loaded?
|
|
||||||
* (also controllable via -d/-s/-Z/-z options)
|
|
||||||
* SCALE_DOWN: 100%, but fit large images into window,
|
|
||||||
* SCALE_FIT: fit all images into window,
|
|
||||||
* SCALE_ZOOM: use current zoom level, 100% at startup
|
|
||||||
*/
|
|
||||||
static const scalemode_t SCALE_MODE = SCALE_DOWN;
|
|
||||||
|
|
||||||
/* levels (in percent) to use when zooming via '-' and '+':
|
/* levels (in percent) to use when zooming via '-' and '+':
|
||||||
* (first/last value is used as min/max zoom level)
|
* (first/last value is used as min/max zoom level)
|
||||||
*/
|
*/
|
||||||
|
@ -138,7 +130,8 @@ static const keymap_t keys[] = {
|
||||||
{ 0, XK_minus, i_zoom, (arg_t) -1 },
|
{ 0, XK_minus, i_zoom, (arg_t) -1 },
|
||||||
{ 0, XK_KP_Subtract, i_zoom, (arg_t) -1 },
|
{ 0, XK_KP_Subtract, i_zoom, (arg_t) -1 },
|
||||||
{ 0, XK_equal, i_set_zoom, (arg_t) 100 },
|
{ 0, XK_equal, i_set_zoom, (arg_t) 100 },
|
||||||
{ 0, XK_w, i_fit_to_win, (arg_t) SCALE_FIT },
|
{ 0, XK_w, i_fit_to_win, (arg_t) SCALE_DOWN },
|
||||||
|
{ 0, XK_W, i_fit_to_win, (arg_t) SCALE_FIT },
|
||||||
{ 0, XK_e, i_fit_to_win, (arg_t) SCALE_WIDTH },
|
{ 0, XK_e, i_fit_to_win, (arg_t) SCALE_WIDTH },
|
||||||
{ 0, XK_E, i_fit_to_win, (arg_t) SCALE_HEIGHT },
|
{ 0, XK_E, i_fit_to_win, (arg_t) SCALE_HEIGHT },
|
||||||
|
|
||||||
|
|
2
image.c
2
image.c
|
@ -74,6 +74,7 @@ void img_init(img_t *img, win_t *win)
|
||||||
|
|
||||||
img->im = NULL;
|
img->im = NULL;
|
||||||
img->win = win;
|
img->win = win;
|
||||||
|
img->scalemode = options->scalemode;
|
||||||
img->zoom = options->zoom;
|
img->zoom = options->zoom;
|
||||||
img->zoom = MAX(img->zoom, zoom_min);
|
img->zoom = MAX(img->zoom, zoom_min);
|
||||||
img->zoom = MIN(img->zoom, zoom_max);
|
img->zoom = MIN(img->zoom, zoom_max);
|
||||||
|
@ -333,7 +334,6 @@ bool img_load(img_t *img, const fileinfo_t *file)
|
||||||
|
|
||||||
img->w = imlib_image_get_width();
|
img->w = imlib_image_get_width();
|
||||||
img->h = imlib_image_get_height();
|
img->h = imlib_image_get_height();
|
||||||
img->scalemode = options->scalemode;
|
|
||||||
img->checkpan = true;
|
img->checkpan = true;
|
||||||
img->dirty = true;
|
img->dirty = true;
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ const options_t *options = (const options_t*) &_options;
|
||||||
|
|
||||||
void print_usage(void)
|
void print_usage(void)
|
||||||
{
|
{
|
||||||
printf("usage: sxiv [-bcdFfhioqrstvZ] [-G GAMMA] [-g GEOMETRY] [-n NUM] "
|
printf("usage: sxiv [-bcFfhioqrstvZ] [-G GAMMA] [-g GEOMETRY] [-n NUM] "
|
||||||
"[-N NAME] [-S DELAY] [-z ZOOM] FILES...\n");
|
"[-N NAME] [-S DELAY] [-z ZOOM] FILES...\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ void parse_options(int argc, char **argv)
|
||||||
_options.recursive = false;
|
_options.recursive = false;
|
||||||
_options.startnum = 0;
|
_options.startnum = 0;
|
||||||
|
|
||||||
_options.scalemode = SCALE_MODE;
|
_options.scalemode = SCALE_DOWN;
|
||||||
_options.zoom = 1.0;
|
_options.zoom = 1.0;
|
||||||
_options.gamma = 0;
|
_options.gamma = 0;
|
||||||
_options.slideshow = 0;
|
_options.slideshow = 0;
|
||||||
|
@ -67,7 +67,7 @@ void parse_options(int argc, char **argv)
|
||||||
_options.thumb_mode = false;
|
_options.thumb_mode = false;
|
||||||
_options.clean_cache = false;
|
_options.clean_cache = false;
|
||||||
|
|
||||||
while ((opt = getopt(argc, argv, "bcdFfG:g:hin:N:oqrS:stvZz:")) != -1) {
|
while ((opt = getopt(argc, argv, "bcFfG:g:hin:N:oqrS:stvZz:")) != -1) {
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case '?':
|
case '?':
|
||||||
print_usage();
|
print_usage();
|
||||||
|
@ -78,9 +78,6 @@ void parse_options(int argc, char **argv)
|
||||||
case 'c':
|
case 'c':
|
||||||
_options.clean_cache = true;
|
_options.clean_cache = true;
|
||||||
break;
|
break;
|
||||||
case 'd':
|
|
||||||
_options.scalemode = SCALE_DOWN;
|
|
||||||
break;
|
|
||||||
case 'F':
|
case 'F':
|
||||||
_options.fixed_win = true;
|
_options.fixed_win = true;
|
||||||
break;
|
break;
|
||||||
|
|
20
sxiv.1
20
sxiv.1
|
@ -3,7 +3,7 @@
|
||||||
sxiv \- Simple X Image Viewer
|
sxiv \- Simple X Image Viewer
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B sxiv
|
.B sxiv
|
||||||
.RB [ \-bcdFfhiopqrstvZ ]
|
.RB [ \-bcFfhioqrstvZ ]
|
||||||
.RB [ \-G
|
.RB [ \-G
|
||||||
.IR GAMMA ]
|
.IR GAMMA ]
|
||||||
.RB [ \-g
|
.RB [ \-g
|
||||||
|
@ -38,9 +38,6 @@ Do not show info bar on bottom of window.
|
||||||
.B \-c
|
.B \-c
|
||||||
Remove all orphaned cache files from the thumbnail cache directory and exit.
|
Remove all orphaned cache files from the thumbnail cache directory and exit.
|
||||||
.TP
|
.TP
|
||||||
.B \-d
|
|
||||||
Scale all images to 100%, but fit large images into window.
|
|
||||||
.TP
|
|
||||||
.B \-F
|
.B \-F
|
||||||
Make the window fixed/floating by setting the minimum and maximum width/height
|
Make the window fixed/floating by setting the minimum and maximum width/height
|
||||||
size-hints to the window width/height.
|
size-hints to the window width/height.
|
||||||
|
@ -84,7 +81,7 @@ Search the given directories recursively for images to view.
|
||||||
Start in slideshow mode. Set the delay between images to DELAY seconds.
|
Start in slideshow mode. Set the delay between images to DELAY seconds.
|
||||||
.TP
|
.TP
|
||||||
.B \-s
|
.B \-s
|
||||||
Scale all images to fit into window.
|
Fit images to window.
|
||||||
.TP
|
.TP
|
||||||
.B \-t
|
.B \-t
|
||||||
Start in thumbnail mode.
|
Start in thumbnail mode.
|
||||||
|
@ -96,9 +93,7 @@ Print version information to standard output and exit.
|
||||||
The same as `\-z 100'.
|
The same as `\-z 100'.
|
||||||
.TP
|
.TP
|
||||||
.BI "\-z " ZOOM
|
.BI "\-z " ZOOM
|
||||||
Scale all images to the current zoom level, use a zoom level of
|
Set zoom level to ZOOM percent.
|
||||||
.I ZOOM
|
|
||||||
at startup.
|
|
||||||
.SH GENERAL KEYBOARD COMMANDS
|
.SH GENERAL KEYBOARD COMMANDS
|
||||||
The following keyboard commands are available in both image and thumbnail mode:
|
The following keyboard commands are available in both image and thumbnail mode:
|
||||||
.TP
|
.TP
|
||||||
|
@ -229,13 +224,16 @@ Set zoom level to 100%, or
|
||||||
.IR count %.
|
.IR count %.
|
||||||
.TP
|
.TP
|
||||||
.B w
|
.B w
|
||||||
Set zoom level to fit image into window.
|
Set zoom level to 100%, but fit large images into window.
|
||||||
|
.TP
|
||||||
|
.B W
|
||||||
|
Fit image to window.
|
||||||
.TP
|
.TP
|
||||||
.B e
|
.B e
|
||||||
Set zoom level to fit image width to window width.
|
Fit image to window width.
|
||||||
.TP
|
.TP
|
||||||
.B E
|
.B E
|
||||||
Set zoom level to fit image height to window height.
|
Fit image to window height.
|
||||||
.SS Panning
|
.SS Panning
|
||||||
.TP
|
.TP
|
||||||
.BR h ", " Left
|
.BR h ", " Left
|
||||||
|
|
Loading…
Reference in a new issue