From c52c4fa69e2a6a58813fe35a5c4a1fe23661db03 Mon Sep 17 00:00:00 2001 From: Bert Date: Sat, 29 Jan 2011 22:37:40 +0100 Subject: Mouse-panning while pressing button2 --- image.c | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) (limited to 'image.c') diff --git a/image.c b/image.c index d6488ef..4673c63 100644 --- a/image.c +++ b/image.c @@ -230,7 +230,7 @@ int img_zoom_out(img_t *img) { return 0; } -int img_pan(img_t *img, win_t *win, pandir_t dir) { +int img_move(img_t *img, win_t *win, int dx, int dy) { int ox, oy; if (!img || !win) @@ -239,24 +239,30 @@ int img_pan(img_t *img, win_t *win, pandir_t dir) { ox = img->x; oy = img->y; + img->x += dx; + img->y += dy; + + img_check_pan(img, win); + + return ox != img->x || oy != img->y; +} + +int img_pan(img_t *img, win_t *win, pandir_t dir) { + if (!img || !win) + return 0; + switch (dir) { case PAN_LEFT: - img->x += win->w / 5; - break; + return img_move(img, win, win->w / 5, 0); case PAN_RIGHT: - img->x -= win->w / 5; - break; + return img_move(img, win, -win->w / 5, 0); case PAN_UP: - img->y += win->h / 5; - break; + return img_move(img, win, 0, win->h / 5); case PAN_DOWN: - img->y -= win->h / 5; - break; + return img_move(img, win, 0, -win->h / 5); } - img_check_pan(img, win); - - return ox != img->x || oy != img->y; + return 0; } int img_rotate(img_t *img, win_t *win, int d) { -- cgit v1.2.3-54-g00ecf