Krolyxon
Commit 485e6c8

Branches

Refs →

nsxiv485e6c8

H/J/K/L mappings to pan to edges

Author
Bert
Date
2011-05-16 15:54 +0200
Parent
1763e9f
Commit
485e6c863a2f25737e75359da1f1c74f6f17e004

+44 −1

4 files changed

  1. M Makefile +1 −1
  2. M image.c +29 −0
  3. M image.h +1 −0
  4. M main.c +13 −0
M Makefile View
@@ -1,6 +1,6 @@
11 all: sxiv
22
3−VERSION=git-20110510
3+VERSION=git-20110516
44
55 CC?=gcc
66 DESTDIR?=
M image.c View
@@ -293,6 +293,35 @@ int img_pan(img_t *img, win_t *win, pandir_t dir) {
293293 return 0;
294294 }
295295
296+int img_pan_edge(img_t *img, win_t *win, pandir_t dir) {
297+ int ox, oy;
298+
299+ if (!img || !img->im || !win)
300+ return 0;
301+
302+ ox = img->x;
303+ oy = img->y;
304+
305+ switch (dir) {
306+ case PAN_LEFT:
307+ img->x = 0;
308+ break;
309+ case PAN_RIGHT:
310+ img->x = win->w - img->w * img->zoom;
311+ break;
312+ case PAN_UP:
313+ img->y = 0;
314+ break;
315+ case PAN_DOWN:
316+ img->y = win->h - img->h * img->zoom;
317+ break;
318+ }
319+
320+ img_check_pan(img, win);
321+
322+ return ox != img->x || oy != img->y;
323+}
324+
296325 void img_rotate(img_t *img, win_t *win, int d) {
297326 int ox, oy, tmp;
298327
M image.h View
@@ -69,6 +69,7 @@ int img_zoom_out(img_t*, win_t*);
6969
7070 int img_move(img_t*, win_t*, int, int);
7171 int img_pan(img_t*, win_t*, pandir_t);
72+int img_pan_edge(img_t*, win_t*, pandir_t);
7273
7374 void img_rotate_left(img_t*, win_t*);
7475 void img_rotate_right(img_t*, win_t*);
M main.c View
@@ -455,6 +455,19 @@ void on_keypress(XKeyEvent *kev) {
455455 changed = img_pan(&img, &win, PAN_RIGHT);
456456 break;
457457
458+ case XK_H:
459+ changed = img_pan_edge(&img, &win, PAN_LEFT);
460+ break;
461+ case XK_J:
462+ changed = img_pan_edge(&img, &win, PAN_DOWN);
463+ break;
464+ case XK_K:
465+ changed = img_pan_edge(&img, &win, PAN_UP);
466+ break;
467+ case XK_L:
468+ changed = img_pan_edge(&img, &win, PAN_RIGHT);
469+ break;
470+
458471 /* rotation */
459472 case XK_less:
460473 img_rotate_left(&img, &win);