Commit f933dd39 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

Apply changes to thumbnail mode

parent 555f7bcc
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -457,6 +457,8 @@ void get_index_string_dim(feh_file *file, Imlib_Font fn, int *fw, int *fh)

	gib_list_free_and_data(lines);

	printf("dim is %dx%d\n", max_w, total_h);

	*fw = max_w;
	*fh = total_h;
	return;
+1 −13
Original line number Diff line number Diff line
@@ -409,9 +409,6 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun)
			break;
		case 'm':
			opt.index = 1;
			opt.index_show_name = 0;
			opt.index_show_size = 0;
			opt.index_show_dim = 0;
			break;
		case 'c':
			opt.collage = 1;
@@ -419,9 +416,6 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun)
		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;
			break;
		case '.':
			opt.scale_down = 1;
@@ -429,9 +423,6 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun)
		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;
			break;
		case 'l':
			opt.list = 1;
@@ -612,10 +603,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;
			opt.index_info = estrdup("%n");
			break;
		case 'j':
			opt.output_dir = estrdup(optarg);
+0 −3
Original line number Diff line number Diff line
@@ -32,9 +32,6 @@ struct __fehoptions {
	unsigned char montage;
	unsigned char collage;
	unsigned char index;
	unsigned char index_show_name;
	unsigned char index_show_dim;
	unsigned char index_show_size;
	unsigned char thumbs;
	unsigned char slideshow;
	unsigned char recursive;
+33 −140
Original line number Diff line number Diff line
@@ -31,10 +31,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "thumbnail.h"
#include "md5.h"
#include "feh_png.h"
#include "index.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 gib_list *thumbnails = NULL;

static thumbmode_data td;
@@ -65,15 +63,15 @@ void init_thumbnail_mode(void)
	unsigned char trans_bg = 0;
	int title_area_h = 0;
	int tw = 0, th = 0;
	int fw_name, fw_size, fw_dim, fh;
	int fw, fh;
	int thumbnailcount = 0;
	feh_file *file = NULL;
	gib_list *l, *last = NULL;
	int lines;
	int lineno;
	int index_image_width, index_image_height;
	int x_offset_name = 0, x_offset_dim = 0, x_offset_size = 0;
	char *s;
	unsigned int thumb_counter = 0;
	gib_list *line, *lines;

	/* initialize thumbnail mode data */
	td.im_main = NULL;
@@ -119,9 +117,8 @@ void init_thumbnail_mode(void)
	/* Work out how tall the font is */
	gib_imlib_get_text_size(td.font_main, "W", NULL, &tw, &th,
			IMLIB_TEXT_TO_RIGHT);
	/* For now, allow room for the right number of lines with small gaps */
	td.text_area_h = ((th + 2) * (opt.index_show_name + opt.index_show_size +
				opt.index_show_dim)) + 5;
	get_index_string_dim(NULL, td.font_main, &fw, &fh);
	td.text_area_h = fh + 5;

	/* This includes the text area for index data */
	td.thumb_tot_h = opt.thumb_h + td.text_area_h;
@@ -264,34 +261,14 @@ void init_thumbnail_mode(void)

			td.text_area_w = opt.thumb_w;
			/* Now draw on the info text */
			if (opt.index_show_name) {
				gib_imlib_get_text_size(td.font_main, file->name, NULL,
						&fw_name, &fh, IMLIB_TEXT_TO_RIGHT);
				if (fw_name > td.text_area_w)
					td.text_area_w = fw_name;
			}
			if (opt.index_show_dim) {
				gib_imlib_get_text_size(td.font_main,
							create_index_dimension_string(ww, hh),
							NULL, &fw_dim, &fh, IMLIB_TEXT_TO_RIGHT);
				if (fw_dim > td.text_area_w)
					td.text_area_w = fw_dim;
			}
			if (opt.index_show_size) {
				gib_imlib_get_text_size(td.font_main,
							create_index_size_string(file->filename),
							NULL, &fw_size, &fh, IMLIB_TEXT_TO_RIGHT);
				if (fw_size > td.text_area_w)
					td.text_area_w = fw_size;
			if (opt.index_info) {
				get_index_string_dim(file, td.font_main, &fw, &fh);
				if (fw > td.text_area_w)
					td.text_area_w = fw;
			}
			if (td.text_area_w > opt.thumb_w)
				td.text_area_w += 5;

			/* offsets for centering text */
			x_offset_name = (td.text_area_w - fw_name) / 2;
			x_offset_dim = (td.text_area_w - fw_dim) / 2;
			x_offset_size = (td.text_area_w - fw_size) / 2;

			if (td.vertical) {
				if (td.text_area_w > td.max_column_w)
					td.max_column_w = td.text_area_w;
@@ -332,28 +309,23 @@ void init_thumbnail_mode(void)

			gib_imlib_free_image_and_decache(im_thumb);

			lines = 0;
			if (opt.index_show_name)
				gib_imlib_text_draw(td.im_main,
						td.font_main, 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)
				gib_imlib_text_draw(td.im_main,
						td.font_main, NULL,
						x + x_offset_dim,
						y + opt.thumb_h + (lines++ * (th + 2)) + 2,
						create_index_dimension_string(orig_w, orig_h),
						IMLIB_TEXT_TO_RIGHT, 255, 255, 255, 255);
			if (opt.index_show_size)
				gib_imlib_text_draw(td.im_main,
						td.font_main, NULL,
						x + x_offset_size,
						y + opt.thumb_h + (lines++ * (th + 2)) + 2,
						create_index_size_string(file->filename),
			lineno = 0;
			if (opt.index_info) {
				line = lines = feh_wrap_string(create_index_string(file),
						opt.thumb_w * 3, td.font_main, NULL);

				while (line) {
					gib_imlib_get_text_size(td.font_main, (char *) line -> data,
							NULL, &fw, &fh, IMLIB_TEXT_TO_RIGHT);
					gib_imlib_text_draw(td.im_main, td.font_main, NULL,
							x + ((td.text_area_w - fw) >> 1),
							y + opt.thumb_h + (lineno++ * (th + 2)) + 2,
							(char *) line->data,
							IMLIB_TEXT_TO_RIGHT, 255, 255, 255, 255);
					line = line->next;
				}
				gib_list_free_and_data(lines);
			}

			if (td.vertical)
				y += td.thumb_tot_h;
@@ -424,40 +396,6 @@ void init_thumbnail_mode(void)
	return;
}

static char *create_index_size_string(char *file)
{
	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);
}

static char *create_index_dimension_string(int w, int h)
{
	static char str[50];

	snprintf(str, sizeof(str), "%dx%d", w, h);
	return(str);
}

static char *create_index_title_string(int num, int w, int h)
{
	static char str[50];

	snprintf(str, sizeof(str), PACKAGE " index - %d thumbnails, %d by %d pixels", num, w, h);
	return(str);
}

feh_thumbnail *feh_thumbnail_new(feh_file * file, int x, int y, int w, int h)
{
	feh_thumbnail *thumb;
@@ -606,23 +544,8 @@ void feh_thumbnail_calculate_geometry(void)
		for (l = filelist; l; l = l->next) {
			file = FEH_FILE(l->data);
			td.text_area_w = opt.thumb_w;
			if (opt.index_show_name) {
				gib_imlib_get_text_size(td.font_main, file->name, NULL,
						&fw, &fh, IMLIB_TEXT_TO_RIGHT);
				if (fw > td.text_area_w)
					td.text_area_w = fw;
			}
			if (opt.index_show_dim) {
				gib_imlib_get_text_size(td.font_main,
						create_index_dimension_string(1000, 1000),
						NULL, &fw, &fh, IMLIB_TEXT_TO_RIGHT);
				if (fw > td.text_area_w)
					td.text_area_w = fw;
			}
			if (opt.index_show_size) {
				gib_imlib_get_text_size(td.font_main,
						create_index_size_string(file->filename),
						NULL, &fw, &fh, IMLIB_TEXT_TO_RIGHT);
			if (opt.index_info) {
				get_index_string_dim(file, td.font_main, &fw, &fh);
				if (fw > td.text_area_w)
					td.text_area_w = fw;
			}
@@ -654,23 +577,8 @@ void feh_thumbnail_calculate_geometry(void)
			file = FEH_FILE(l->data);
			td.text_area_w = opt.thumb_w;
			/* Calc width of text */
			if (opt.index_show_name) {
				gib_imlib_get_text_size(td.font_main, file->name, NULL,
						&fw, &fh, IMLIB_TEXT_TO_RIGHT);
				if (fw > td.text_area_w)
					td.text_area_w = fw;
			}
			if (opt.index_show_dim) {
				gib_imlib_get_text_size(td.font_main,
							create_index_dimension_string(1000, 1000),
							NULL, &fw, &fh, IMLIB_TEXT_TO_RIGHT);
				if (fw > td.text_area_w)
					td.text_area_w = fw;
			}
			if (opt.index_show_size) {
				gib_imlib_get_text_size(td.font_main,
							create_index_size_string(file->filename),
							NULL, &fw, &fh, IMLIB_TEXT_TO_RIGHT);
			if (opt.index_info) {
				get_index_string_dim(file, td.font_main, &fw, &fh);
				if (fw > td.text_area_w)
					td.text_area_w = fw;
			}
@@ -697,23 +605,8 @@ void feh_thumbnail_calculate_geometry(void)
		for (l = filelist; l; l = l->next) {
			file = FEH_FILE(l->data);
			td.text_area_w = opt.thumb_w;
			if (opt.index_show_name) {
				gib_imlib_get_text_size(td.font_main, file->name, NULL,
						&fw, &fh, IMLIB_TEXT_TO_RIGHT);
				if (fw > td.text_area_w)
					td.text_area_w = fw;
			}
			if (opt.index_show_dim) {
				gib_imlib_get_text_size(td.font_main,
						create_index_dimension_string(1000, 1000),
						NULL, &fw, &fh, IMLIB_TEXT_TO_RIGHT);
				if (fw > td.text_area_w)
					td.text_area_w = fw;
			}
			if (opt.index_show_size) {
				gib_imlib_get_text_size(td.font_main,
						create_index_size_string(file->filename),
						NULL, &fw, &fh, IMLIB_TEXT_TO_RIGHT);
			if (opt.index_info) {
				get_index_string_dim(file, td.font_main, &fw, &fh);
				if (fw > td.text_area_w)
					td.text_area_w = fw;
			}