aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--commands.c17
-rw-r--r--config.def.h6
-rw-r--r--image.c17
-rw-r--r--image.h2
-rw-r--r--types.h8
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,