Implement #392
This commit is contained in:
		
							parent
							
								
									9e29406bb5
								
							
						
					
					
						commit
						ab3b5c2805
					
				
							
								
								
									
										1
									
								
								config.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								config.h
									
									
									
									
									
								
							| @ -65,6 +65,7 @@ struct settings defaults = { | ||||
| 
 | ||||
| .browser = "/usr/bin/firefox", | ||||
| 
 | ||||
| .min_icon_size = 0, | ||||
| .max_icon_size = 0, | ||||
| 
 | ||||
| /* paths to default icons */ | ||||
|  | ||||
							
								
								
									
										28
									
								
								src/icon.c
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								src/icon.c
									
									
									
									
									
								
							| @ -116,19 +116,23 @@ GdkPixbuf *icon_pixbuf_scale(GdkPixbuf *pixbuf) | ||||
| 
 | ||||
|         int w = gdk_pixbuf_get_width(pixbuf); | ||||
|         int h = gdk_pixbuf_get_height(pixbuf); | ||||
|         int larger = w > h ? w : h; | ||||
|         int landscape = w > h; | ||||
|         int orig_larger = landscape ? w : h; | ||||
|         double larger = orig_larger; | ||||
|         double smaller = landscape ? h : w; | ||||
|         if (settings.min_icon_size && smaller < settings.min_icon_size) { | ||||
|                 larger = larger / smaller * settings.min_icon_size; | ||||
|                 smaller = settings.min_icon_size; | ||||
|         } | ||||
|         if (settings.max_icon_size && larger > settings.max_icon_size) { | ||||
|                 int scaled_w = settings.max_icon_size; | ||||
|                 int scaled_h = settings.max_icon_size; | ||||
|                 if (w >= h) | ||||
|                         scaled_h = (settings.max_icon_size * h) / w; | ||||
|                 else | ||||
|                         scaled_w = (settings.max_icon_size * w) / h; | ||||
| 
 | ||||
|                 GdkPixbuf *scaled = gdk_pixbuf_scale_simple( | ||||
|                                 pixbuf, | ||||
|                                 scaled_w, | ||||
|                                 scaled_h, | ||||
|                 smaller = smaller / larger * settings.max_icon_size; | ||||
|                 larger = settings.max_icon_size; | ||||
|         } | ||||
|         if ((int) larger != orig_larger) { | ||||
|                 GdkPixbuf *scaled; | ||||
|                 scaled = gdk_pixbuf_scale_simple(pixbuf, | ||||
|                                 (int) (landscape ? larger : smaller), | ||||
|                                 (int) (landscape ? smaller : larger), | ||||
|                                 GDK_INTERP_BILINEAR); | ||||
|                 g_object_unref(pixbuf); | ||||
|                 pixbuf = scaled; | ||||
|  | ||||
| @ -423,6 +423,12 @@ void load_settings(char *cmdline_config_path) | ||||
|                 g_free(c); | ||||
|         } | ||||
| 
 | ||||
|         settings.min_icon_size = option_get_int( | ||||
|                 "global", | ||||
|                 "min_icon_size", "-min_icon_size", defaults.min_icon_size, | ||||
|                 "Scale smaller icons up to this size, set to 0 to disable. If max_icon_size also specified, that has the final say." | ||||
|         ); | ||||
| 
 | ||||
|         settings.max_icon_size = option_get_int( | ||||
|                 "global", | ||||
|                 "max_icon_size", "-max_icon_size", defaults.max_icon_size, | ||||
|  | ||||
| @ -75,6 +75,7 @@ struct settings { | ||||
|         char *browser; | ||||
|         char **browser_cmd; | ||||
|         enum icon_position icon_position; | ||||
|         int min_icon_size; | ||||
|         int max_icon_size; | ||||
|         char *icon_path; | ||||
|         enum follow_mode f_mode; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jonas Berlin
						Jonas Berlin