|
@@ -100,21 +100,17 @@ void exif_auto_orientate(const fileinfo_t *file) |
|
|
case 2: |
|
|
case 2: |
|
|
imlib_image_flip_vertical(); |
|
|
imlib_image_flip_vertical(); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case 3: |
|
|
case 3: |
|
|
imlib_image_orientate(2); |
|
|
imlib_image_orientate(2); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case 7: |
|
|
case 7: |
|
|
imlib_image_orientate(1); |
|
|
imlib_image_orientate(1); |
|
|
case 4: |
|
|
case 4: |
|
|
imlib_image_flip_horizontal(); |
|
|
imlib_image_flip_horizontal(); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case 6: |
|
|
case 6: |
|
|
imlib_image_orientate(1); |
|
|
imlib_image_orientate(1); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case 8: |
|
|
case 8: |
|
|
imlib_image_orientate(3); |
|
|
imlib_image_orientate(3); |
|
|
break; |
|
|
break; |
|
@@ -688,7 +684,7 @@ bool img_pan_edge(img_t *img, direction_t dir) |
|
|
|
|
|
|
|
|
void img_rotate(img_t *img, degree_t d) |
|
|
void img_rotate(img_t *img, degree_t d) |
|
|
{ |
|
|
{ |
|
|
int ox, oy, tmp; |
|
|
int i, ox, oy, tmp; |
|
|
|
|
|
|
|
|
if (img == NULL || img->im == NULL || img->win == NULL) |
|
|
if (img == NULL || img->im == NULL || img->win == NULL) |
|
|
return; |
|
|
return; |
|
@@ -696,6 +692,12 @@ void img_rotate(img_t *img, degree_t d) |
|
|
imlib_context_set_image(img->im); |
|
|
imlib_context_set_image(img->im); |
|
|
imlib_image_orientate(d); |
|
|
imlib_image_orientate(d); |
|
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < img->multi.cnt; i++) { |
|
|
|
|
|
if (i != img->multi.sel) { |
|
|
|
|
|
imlib_context_set_image(img->multi.frames[i].im); |
|
|
|
|
|
imlib_image_orientate(d); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
if (d == DEGREE_90 || d == DEGREE_270) { |
|
|
if (d == DEGREE_90 || d == DEGREE_270) { |
|
|
ox = d == DEGREE_90 ? img->x : img->win->w - img->x - img->w * img->zoom; |
|
|
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; |
|
|
oy = d == DEGREE_270 ? img->y : img->win->h - img->y - img->h * img->zoom; |
|
@@ -708,24 +710,31 @@ void img_rotate(img_t *img, degree_t d) |
|
|
img->h = tmp; |
|
|
img->h = tmp; |
|
|
img->checkpan = true; |
|
|
img->checkpan = true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
img->dirty = true; |
|
|
img->dirty = true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void img_flip(img_t *img, flipdir_t d) |
|
|
void img_flip(img_t *img, flipdir_t d) |
|
|
{ |
|
|
{ |
|
|
if (img == NULL || img->im == NULL) |
|
|
int i; |
|
|
|
|
|
void (*imlib_flip_op[3])(void) = { |
|
|
|
|
|
imlib_image_flip_horizontal, |
|
|
|
|
|
imlib_image_flip_vertical, |
|
|
|
|
|
imlib_image_flip_diagonal |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
d = (d & (FLIP_HORIZONTAL | FLIP_VERTICAL)) - 1; |
|
|
|
|
|
|
|
|
|
|
|
if (img == NULL || img->im == NULL || d < 0 || d >= ARRLEN(imlib_flip_op)) |
|
|
return; |
|
|
return; |
|
|
|
|
|
|
|
|
imlib_context_set_image(img->im); |
|
|
imlib_context_set_image(img->im); |
|
|
|
|
|
imlib_flip_op[d](); |
|
|
|
|
|
|
|
|
switch (d) { |
|
|
for (i = 0; i < img->multi.cnt; i++) { |
|
|
case FLIP_HORIZONTAL: |
|
|
if (i != img->multi.sel) { |
|
|
imlib_image_flip_horizontal(); |
|
|
imlib_context_set_image(img->multi.frames[i].im); |
|
|
break; |
|
|
imlib_flip_op[d](); |
|
|
case FLIP_VERTICAL: |
|
|
} |
|
|
imlib_image_flip_vertical(); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
} |
|
|
img->dirty = true; |
|
|
img->dirty = true; |
|
|
} |
|
|
} |
|
|