@@ -254,11 +254,11 @@ int img_pan(img_t *img, win_t *win, pandir_t dir) { | |||
case PAN_LEFT: | |||
return img_move(img, win, win->w / 5, 0); | |||
case PAN_RIGHT: | |||
return img_move(img, win, -win->w / 5, 0); | |||
return img_move(img, win, win->w / 5 * -1, 0); | |||
case PAN_UP: | |||
return img_move(img, win, 0, win->h / 5); | |||
case PAN_DOWN: | |||
return img_move(img, win, 0, -win->h / 5); | |||
return img_move(img, win, 0, win->h / 5 * -1); | |||
} | |||
return 0; | |||
@@ -29,7 +29,7 @@ options_t _options; | |||
const options_t *options = (const options_t*) &_options; | |||
void print_usage() { | |||
printf("usage: sxiv [-dfhpsvWZ] [-w WIDTH[xHEIGHT]] [-z ZOOM] FILES...\n"); | |||
printf("usage: sxiv [-dfhpsvWZ] [-g GEOMETRY] [-z ZOOM] FILES...\n"); | |||
} | |||
void print_version() { | |||
@@ -38,7 +38,6 @@ void print_version() { | |||
} | |||
void parse_options(int argc, char **argv) { | |||
unsigned short w, h; | |||
float z; | |||
int opt; | |||
@@ -46,13 +45,12 @@ void parse_options(int argc, char **argv) { | |||
_options.zoom = 1.0; | |||
_options.aa = 1; | |||
_options.winw = w = 0; | |||
_options.winh = h = 0; | |||
_options.fullscreen = 0; | |||
_options.geometry = NULL; | |||
_options.warn = 0; | |||
while ((opt = getopt(argc, argv, "dfhpsvWw:Zz:")) != -1) { | |||
while ((opt = getopt(argc, argv, "dfg:hpsvWZz:")) != -1) { | |||
switch (opt) { | |||
case '?': | |||
print_usage(); | |||
@@ -63,6 +61,9 @@ void parse_options(int argc, char **argv) { | |||
case 'f': | |||
_options.fullscreen = 1; | |||
break; | |||
case 'g': | |||
_options.geometry = optarg; | |||
break; | |||
case 'h': | |||
print_usage(); | |||
exit(0); | |||
@@ -78,16 +79,6 @@ void parse_options(int argc, char **argv) { | |||
case 'W': | |||
_options.warn = 1; | |||
break; | |||
case 'w': | |||
if (!sscanf(optarg, "%hux%hu", &w, &h)) { | |||
fprintf(stderr, "sxiv: invalid argument for option -w: %s\n", | |||
optarg); | |||
exit(1); | |||
} else { | |||
_options.winw = (int) w; | |||
_options.winh = (int) h; | |||
} | |||
break; | |||
case 'Z': | |||
_options.scalemode = SCALE_ZOOM; | |||
_options.zoom = 1.0; | |||
@@ -105,13 +96,6 @@ void parse_options(int argc, char **argv) { | |||
} | |||
} | |||
if (!_options.winw) { | |||
_options.winw = WIN_WIDTH; | |||
_options.winh = WIN_HEIGHT; | |||
} else if (!_options.winh) { | |||
_options.winh = _options.winw; | |||
} | |||
_options.filenames = (const char**) argv + optind; | |||
_options.filecnt = argc - optind; | |||
} |
@@ -29,9 +29,8 @@ typedef struct options_s { | |||
float zoom; | |||
unsigned char aa; | |||
int winw; | |||
int winh; | |||
unsigned char fullscreen; | |||
char *geometry; | |||
unsigned char warn; | |||
} options_t; | |||
@@ -35,6 +35,7 @@ void win_open(win_t *win) { | |||
win_env_t *e; | |||
XClassHint *classhint; | |||
XColor bgcol; | |||
int gmask; | |||
if (!win) | |||
return; | |||
@@ -58,10 +59,25 @@ void win_open(win_t *win) { | |||
win->pm = 0; | |||
win->fullscreen = 0; | |||
win->w = MIN(options->winw, e->scrw); | |||
win->h = MIN(options->winh, e->scrh); | |||
win->x = (e->scrw - win->w) / 2; | |||
win->y = (e->scrh - win->h) / 2; | |||
/* determine window offsets, width & height */ | |||
if (!options->geometry) | |||
gmask = 0; | |||
else | |||
gmask = XParseGeometry(options->geometry, &win->x, &win->y, | |||
&win->w, &win->h); | |||
if (!(gmask & WidthValue)) | |||
win->w = WIN_WIDTH; | |||
if (win->w > e->scrw) | |||
win->w = e->scrw; | |||
if (!(gmask & HeightValue)) | |||
win->h = WIN_HEIGHT; | |||
if (win->h > e->scrh) | |||
win->h = e->scrh; | |||
if (!(gmask & XValue)) | |||
win->x = (e->scrw - win->w) / 2; | |||
if (!(gmask & YValue)) | |||
win->y = (e->scrh - win->h) / 2; | |||
win->xwin = XCreateWindow(e->dpy, RootWindow(e->dpy, e->scr), | |||
win->x, win->y, win->w, win->h, 0, | |||
@@ -44,12 +44,12 @@ typedef struct win_s { | |||
unsigned long bgcol; | |||
Pixmap pm; | |||
int w; | |||
int h; | |||
int x; | |||
int y; | |||
unsigned int w; | |||
unsigned int h; | |||
int bw; | |||
unsigned int bw; | |||
unsigned char fullscreen; | |||
} win_t; | |||