Refactored merged rotation code
This commit is contained in:
		
							parent
							
								
									7e51c35801
								
							
						
					
					
						commit
						56142bd3ba
					
				
							
								
								
									
										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*); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Bert Münnich
						Bert Münnich