diff options
author | Bert Münnich <ber.t@gmx.com> | 2011-10-16 17:39:22 +0200 |
---|---|---|
committer | Bert Münnich <ber.t@gmx.com> | 2011-10-16 17:39:22 +0200 |
commit | 867940ea85495ac4e8e23efbb574fd9d86bccf42 (patch) | |
tree | 6dc435cef2386dc37265d6dde787c1cf35f47e4f /image.c | |
parent | dc727b8dce89811d755ed03d11688b13a42e794a (diff) |
Pan by pixel count, if number prefix given
Diffstat (limited to 'image.c')
-rw-r--r-- | image.c | 23 |
1 files changed, 18 insertions, 5 deletions
@@ -576,19 +576,32 @@ bool img_move(img_t *img, int dx, int dy) { } } -bool img_pan(img_t *img, direction_t dir, bool screen) { +bool img_pan(img_t *img, direction_t dir, int d) { + /* d < 0: screen-wise + * d = 0: 1/5 of screen + * d > 0: num of pixels + */ + int x, y; + if (img == NULL || img->im == NULL || img->win == NULL) return false; + if (d > 0) { + x = y = MAX(1, d * img->zoom); + } else { + x = img->win->w / (d < 0 ? 1 : 5); + y = img->win->h / (d < 0 ? 1 : 5); + } + switch (dir) { case DIR_LEFT: - return img_move(img, img->win->w / (screen ? 1 : 5), 0); + return img_move(img, x, 0); case DIR_RIGHT: - return img_move(img, img->win->w / (screen ? 1 : 5) * -1, 0); + return img_move(img, -x, 0); case DIR_UP: - return img_move(img, 0, img->win->h / (screen ? 1 : 5)); + return img_move(img, 0, y); case DIR_DOWN: - return img_move(img, 0, img->win->h / (screen ? 1 : 5) * -1); + return img_move(img, 0, -y); } return false; } |