Refactored merged rotation code
This commit is contained in:
		
							
								
								
									
										17
									
								
								commands.c
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								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)
 | 
			
		||||
 
 | 
			
		||||
@@ -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 },
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										17
									
								
								image.c
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								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;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								image.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								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*);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user