diff options
| -rw-r--r-- | man/feh.pre | 17 | ||||
| -rw-r--r-- | src/index.c | 143 | ||||
| -rw-r--r-- | src/options.c | 15 | ||||
| -rw-r--r-- | src/options.h | 1 | 
4 files changed, 41 insertions, 135 deletions
| diff --git a/man/feh.pre b/man/feh.pre index b40510e..6fbff64 100644 --- a/man/feh.pre +++ b/man/feh.pre @@ -286,18 +286,6 @@ name beneath each thumbnail.  Index mode enables certain other options, see  and  .Sx MONTAGE MODE OPTIONS .  . -.It Cm --index-dim Ar bool -. -Toggle showing image dimensions in thumbnail/index mode. -. -.It Cm --index-name Ar bool -. -Toggle showing the filename in thumbnail/index mode. -. -.It Cm --index-size Ar bool -. -Toggle showing the filesize in thumbnail/index mode. -.  .It Cm --info Ar commandline  .  Execute @@ -726,6 +714,11 @@ Number of image pixels  .  Image size in bytes  . +.It %S +. +Image size in kilobytes +.Pq with kB postfix +.  .It %t  .  Image format diff --git a/src/index.c b/src/index.c index 897a47d..448c0bb 100644 --- a/src/index.c +++ b/src/index.c @@ -29,9 +29,9 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  #include "winwidget.h"  #include "options.h" -static char *create_index_dimension_string(int w, int h); -static char *create_index_size_string(char *file);  static char *create_index_title_string(int num, int w, int h); +static char *create_index_string(feh_file * file); +static int get_index_info_no_lines(void);  /* TODO Break this up a bit ;) */  /* TODO s/bit/lot */ @@ -51,7 +51,7 @@ void init_index_mode(void)  	Imlib_Font title_fn = NULL;  	int text_area_w = 0;  	int tw = 0, th = 0; -	int fw_name, fw_size, fw_dim, fw, fh; +	int fw, fh;  	int vertical = 0;  	int max_column_w = 0;  	int thumbnailcount = 0; @@ -60,7 +60,7 @@ void init_index_mode(void)  	int lines;  	unsigned char trans_bg = 0;  	int index_image_width, index_image_height; -	int x_offset_name = 0, x_offset_dim = 0, x_offset_size = 0; +	int x_offset_text = 0;  	char *s;  	if (opt.montage) { @@ -93,7 +93,7 @@ void init_index_mode(void)  	/* Work out how tall the font is */  	gib_imlib_get_text_size(fn, "W", NULL, &tw, &th, IMLIB_TEXT_TO_RIGHT);  	/* For now, allow room for the right number of lines with small gaps */ -	text_area_h = ((th + 2) * (opt.index_show_name + opt.index_show_size + opt.index_show_dim)) + 5; +	text_area_h = ((th + 2) * get_index_info_no_lines()) + 5;  	/* This includes the text area for index data */  	tot_thumb_h = opt.thumb_h + text_area_h; @@ -151,22 +151,10 @@ void init_index_mode(void)  		for (l = filelist; l; l = l->next) {  			file = FEH_FILE(l->data);  			text_area_w = opt.thumb_w; -			if (opt.index_show_name) { -				gib_imlib_get_text_size(fn, file->name, NULL, &fw, &fh, IMLIB_TEXT_TO_RIGHT); -				if (fw > text_area_w) -					text_area_w = fw; -			} -			if (opt.index_show_dim) { +			if (opt.index_info) {  				gib_imlib_get_text_size(fn, -						create_index_dimension_string -						(1000, 1000), NULL, &fw, &fh, IMLIB_TEXT_TO_RIGHT); -				if (fw > text_area_w) -					text_area_w = fw; -			} -			if (opt.index_show_size) { -				gib_imlib_get_text_size(fn, -						create_index_size_string -						(file->filename), NULL, &fw, &fh, IMLIB_TEXT_TO_RIGHT); +						create_index_string(file), +						NULL, &fw, &fh, IMLIB_TEXT_TO_RIGHT);  				if (fw > text_area_w)  					text_area_w = fw;  			} @@ -198,22 +186,10 @@ void init_index_mode(void)  			file = FEH_FILE(l->data);  			text_area_w = opt.thumb_w;  			/* Calc width of text */ -			if (opt.index_show_name) { -				gib_imlib_get_text_size(fn, file->name, NULL, &fw, &fh, IMLIB_TEXT_TO_RIGHT); -				if (fw > text_area_w) -					text_area_w = fw; -			} -			if (opt.index_show_dim) { -				gib_imlib_get_text_size(fn, -							create_index_dimension_string -							(1000, 1000), NULL, &fw, &fh, IMLIB_TEXT_TO_RIGHT); -				if (fw > text_area_w) -					text_area_w = fw; -			} -			if (opt.index_show_size) { +			if (opt.index_info) {  				gib_imlib_get_text_size(fn, -							create_index_size_string -							(file->filename), NULL, &fw, &fh, IMLIB_TEXT_TO_RIGHT); +						create_index_string(file), +						NULL, &fw, &fh, IMLIB_TEXT_TO_RIGHT);  				if (fw > text_area_w)  					text_area_w = fw;  			} @@ -240,22 +216,10 @@ void init_index_mode(void)  		for (l = filelist; l; l = l->next) {  			file = FEH_FILE(l->data);  			text_area_w = opt.thumb_w; -			if (opt.index_show_name) { -				gib_imlib_get_text_size(fn, file->name, NULL, &fw, &fh, IMLIB_TEXT_TO_RIGHT); -				if (fw > text_area_w) -					text_area_w = fw; -			} -			if (opt.index_show_dim) { +			if (opt.index_info) {  				gib_imlib_get_text_size(fn, -							create_index_dimension_string -							(1000, 1000), NULL, &fw, &fh, IMLIB_TEXT_TO_RIGHT); -				if (fw > text_area_w) -					text_area_w = fw; -			} -			if (opt.index_show_size) { -				gib_imlib_get_text_size(fn, -							create_index_size_string -							(file->filename), NULL, &fw, &fh, IMLIB_TEXT_TO_RIGHT); +						create_index_string(file), +						NULL, &fw, &fh, IMLIB_TEXT_TO_RIGHT);  				if (fw > text_area_w)  					text_area_w = fw;  			} @@ -356,32 +320,18 @@ void init_index_mode(void)  			text_area_w = opt.thumb_w;  			/* Now draw on the info text */ -			if (opt.index_show_name) { -				gib_imlib_get_text_size(fn, file->name, NULL, &fw_name, &fh, IMLIB_TEXT_TO_RIGHT); -				if (fw_name > text_area_w) -					text_area_w = fw_name; -			} -			if (opt.index_show_dim) { +			if (opt.index_info) {  				gib_imlib_get_text_size(fn, -							create_index_dimension_string -							(ww, hh), NULL, &fw_dim, &fh, IMLIB_TEXT_TO_RIGHT); -				if (fw_dim > text_area_w) -					text_area_w = fw_dim; -			} -			if (opt.index_show_size) { -				gib_imlib_get_text_size(fn, -							create_index_size_string -							(file->filename), NULL, &fw_size, &fh, IMLIB_TEXT_TO_RIGHT); -				if (fw_size > text_area_w) -					text_area_w = fw_size; +						create_index_string(file), +						NULL, &fw, &fh, IMLIB_TEXT_TO_RIGHT); +				if (fw > text_area_w) +					text_area_w = fw;  			}  			if (text_area_w > opt.thumb_w)  				text_area_w += 5;  			/* offsets for centering text */ -			x_offset_name = (text_area_w - fw_name) / 2; -			x_offset_dim = (text_area_w - fw_dim) / 2; -			x_offset_size = (text_area_w - fw_size) / 2; +			x_offset_text = (text_area_w - fw) / 2;  			if (vertical) {  				if (text_area_w > max_column_w) @@ -419,28 +369,12 @@ void init_index_mode(void)  			gib_imlib_free_image_and_decache(im_thumb);  			lines = 0; -			if (opt.index_show_name) -				gib_imlib_text_draw(im_main, fn, NULL, -						    x + x_offset_name, -						    y + opt.thumb_h + -						    (lines++ * (th + 2)) + -						    2, file->name, IMLIB_TEXT_TO_RIGHT, 255, 255, 255, 255); -			if (opt.index_show_dim) +			if (opt.index_info)  				gib_imlib_text_draw(im_main, fn, NULL, -						    x + x_offset_dim, -						    y + opt.thumb_h + -						    (lines++ * (th + 2)) + -						    2, -						    create_index_dimension_string -						    (ww, hh), IMLIB_TEXT_TO_RIGHT, 255, 255, 255, 255); -			if (opt.index_show_size) -				gib_imlib_text_draw(im_main, fn, NULL, -						    x + x_offset_size, -						    y + opt.thumb_h + -						    (lines++ * (th + 2)) + -						    2, -						    create_index_size_string -						    (file->filename), IMLIB_TEXT_TO_RIGHT, 255, 255, 255, 255); +						x + x_offset_text, +						y + opt.thumb_h + (lines++ * (th + 2)) + 2, +						create_index_string(file), +						IMLIB_TEXT_TO_RIGHT, 255, 255, 255, 255);  			if (vertical)  				y += tot_thumb_h; @@ -502,30 +436,17 @@ void init_index_mode(void)  	return;  } -static char *create_index_size_string(char *file) +static int get_index_info_no_lines(void)  { -	static char str[50]; -	int size = 0; -	double kbs = 0.0; -	struct stat st; - -	if (stat(file, &st)) -		kbs = 0.0; -	else { -		size = st.st_size; -		kbs = (double) size / 1000; -	} - -	snprintf(str, sizeof(str), "%.2fKb", kbs); -	return(str); +	if (opt.index_info) +		/* TODO */ +		return 3; +	return 0;  } -static char *create_index_dimension_string(int w, int h) +static char *create_index_string(feh_file * file)  { -	static char str[50]; - -	snprintf(str, sizeof(str), "%dx%d", w, h); -	return(str); +	return feh_printf(opt.index_info, file);  }  static char *create_index_title_string(int num, int w, int h) diff --git a/src/options.c b/src/options.c index 316f62d..6f44607 100644 --- a/src/options.c +++ b/src/options.c @@ -386,9 +386,6 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun)  		{"action9"       , 1, 0, 217},  		{"bg-fill"       , 0, 0, 218},  		{"bg-max"        , 0, 0, 219}, -		{"index-name"    , 1, 0, 230}, -		{"index-size"    , 1, 0, 231}, -		{"index-dim"     , 1, 0, 232},  		{"thumb-redraw"  , 1, 0, 'J'},  		{"info"          , 1, 0, 234},  		{"force-aliasing", 0, 0, 235}, @@ -420,6 +417,7 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun)  			break;  		case 'i':  			opt.index = 1; +			opt.index_info = estrdup("%n");  			opt.index_show_name = 1;  			opt.index_show_size = 0;  			opt.index_show_dim = 0; @@ -429,6 +427,7 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun)  			break;  		case 'I':  			opt.index = 1; +			opt.index_info = estrdup("%n \n %S \n %wx%h");  			opt.index_show_name = 1;  			opt.index_show_size = 1;  			opt.index_show_dim = 1; @@ -612,6 +611,7 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun)  			break;  		case 't':  			opt.thumbs = 1; +			opt.index_info = ("%n");  			opt.index_show_name = 1;  			opt.index_show_size = 0;  			opt.index_show_dim = 0; @@ -701,15 +701,6 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun)  		case 229:  			opt.text_bg = TEXT_BG_TINTED;  			break; -		case 230: -			opt.index_show_name = atoi(optarg); -			break; -		case 231: -			opt.index_show_size = atoi(optarg); -			break; -		case 232: -			opt.index_show_dim = atoi(optarg); -			break;  		case 'J':  			opt.thumb_redraw = atoi(optarg);  			break; diff --git a/src/options.h b/src/options.h index f1fe3c4..9a294b8 100644 --- a/src/options.h +++ b/src/options.h @@ -89,6 +89,7 @@ struct __fehoptions {  	char *caption_path;  	char *start_list_at;  	char *info_cmd; +	char *index_info;  	gib_style *menu_style_l; | 
