From 56142bd3bafedf51882b368ab08a580ac98f2619 Mon Sep 17 00:00:00 2001 From: Bert Münnich Date: Sat, 10 Aug 2013 15:55:18 +0200 Subject: Refactored merged rotation code --- commands.c | 17 +++++------------ config.def.h | 6 +++--- image.c | 17 +++++++---------- image.h | 2 +- types.h | 8 ++++---- 5 files changed, 20 insertions(+), 30 deletions(-) diff --git a/commands.c b/commands.c index ae8dac2..36da023 100644 --- a/commands.c +++ b/commands.c @@ -397,21 +397,14 @@ bool i_fit_to_img(arg_t a) bool i_rotate(arg_t a) { - rotate_t rot = (rotate_t) a; + degree_t degree = (degree_t) a; if (mode == MODE_IMAGE) { - if (rot == ROTATE_90) { - img_rotate(&img, 1); - return true; - } else if (rot == ROTATE_270) { - img_rotate(&img, 3); - return true; - } else if (rot == ROTATE_180) { - img_rotate(&img, 2); - return true; - } + img_rotate(&img, degree); + return true; + } else { + return false; } - return false; } bool i_flip(arg_t a) diff --git a/config.def.h b/config.def.h index 7a50cf6..6f95ae1 100644 --- a/config.def.h +++ b/config.def.h @@ -114,9 +114,9 @@ static const keymap_t keys[] = { { false, XK_E, i_fit_to_win, (arg_t) SCALE_HEIGHT }, { false, XK_W, i_fit_to_img, (arg_t) None }, - { false, XK_less, i_rotate, (arg_t) ROTATE_270 }, - { false, XK_greater, i_rotate, (arg_t) ROTATE_90 }, - { false, XK_question, i_rotate, (arg_t) ROTATE_180 }, + { false, XK_less, i_rotate, (arg_t) DEGREE_270 }, + { false, XK_greater, i_rotate, (arg_t) DEGREE_90 }, + { false, XK_question, i_rotate, (arg_t) DEGREE_180 }, { false, XK_backslash, i_flip, (arg_t) FLIP_HORIZONTAL }, { false, XK_bar, i_flip, (arg_t) FLIP_VERTICAL }, diff --git a/image.c b/image.c index b2ac293..cc93cd8 100644 --- a/image.c +++ b/image.c @@ -650,25 +650,22 @@ bool img_pan_edge(img_t *img, direction_t dir) } } -void img_rotate(img_t *img, int d) +void img_rotate(img_t *img, degree_t d) { - win_t *win; int ox, oy, tmp; if (img == NULL || img->im == NULL || img->win == NULL) return; - win = img->win; - ox = d == 1 ? img->x : win->w - img->x - img->w * img->zoom; - oy = d == 3 ? img->y : win->h - img->y - img->h * img->zoom; - imlib_context_set_image(img->im); - /* rotates by `90 * d` degrees in the clockwise direction */ imlib_image_orientate(d); - if (d == 1 || d == 3) { - img->x = oy + (win->w - win->h) / 2; - img->y = ox + (win->h - win->w) / 2; + if (d == DEGREE_90 || d == DEGREE_270) { + ox = d == DEGREE_90 ? img->x : img->win->w - img->x - img->w * img->zoom; + oy = d == DEGREE_270 ? img->y : img->win->h - img->y - img->h * img->zoom; + + img->x = oy + (img->win->w - img->win->h) / 2; + img->y = ox + (img->win->h - img->win->w) / 2; tmp = img->w; img->w = img->h; diff --git a/image.h b/image.h index 7e90163..9a4efe6 100644 --- a/image.h +++ b/image.h @@ -76,7 +76,7 @@ bool img_move(img_t*, float, float); bool img_pan(img_t*, direction_t, int); bool img_pan_edge(img_t*, direction_t); -void img_rotate(img_t*, int); +void img_rotate(img_t*, degree_t); void img_flip(img_t*, flipdir_t); void img_toggle_antialias(img_t*); diff --git a/types.h b/types.h index 2427626..49aa0fd 100644 --- a/types.h +++ b/types.h @@ -39,10 +39,10 @@ typedef enum { } direction_t; typedef enum { - ROTATE_90, - ROTATE_270, - ROTATE_180 -} rotate_t; + DEGREE_90 = 1, + DEGREE_180 = 2, + DEGREE_270 = 3 +} degree_t; typedef enum { FLIP_HORIZONTAL, -- cgit v1.2.3-54-g00ecf