Loading ChangeLog +4 −0 Original line number Diff line number Diff line git HEAD * Fix --draw-filename "x of y" being cut off by short filenames Thu, 19 May 2011 22:32:42 +0200 Daniel Friesel <derf@finalrewind.org> * Release v1.14.1 Loading src/imlib.c +20 −12 Original line number Diff line number Diff line Loading @@ -434,7 +434,7 @@ void feh_draw_errstr(winwidget w) void feh_draw_filename(winwidget w) { static Imlib_Font fn = NULL; int tw = 0, th = 0; int tw = 0, th = 0, nw = 0; Imlib_Image im = NULL; static DATA8 atab[256]; char *s = NULL; Loading Loading @@ -462,10 +462,22 @@ void feh_draw_filename(winwidget w) memset(atab, 0, sizeof(atab)); /* Work out how high the font is */ gib_imlib_get_text_size(fn, FEH_FILE(w->file->data)->filename, NULL, &tw, &th, IMLIB_TEXT_TO_RIGHT); gib_imlib_get_text_size(fn, FEH_FILE(w->file->data)->filename, NULL, &tw, &th, IMLIB_TEXT_TO_RIGHT); if (gib_list_length(filelist) > 1) { len = snprintf(NULL, 0, "%d of %d", gib_list_length(filelist), gib_list_length(filelist)) + 1; s = emalloc(len); snprintf(s, len, "%d of %d", gib_list_num(filelist, current_file) + 1, gib_list_length(filelist)); gib_imlib_get_text_size(fn, s, NULL, &nw, NULL, IMLIB_TEXT_TO_RIGHT); if (nw > tw) tw = nw; } /* tw is no longer correct, if the filename is shorter than * the string "%d of %d" used below in fullscreen mode */ tw += 3; th += 3; im = imlib_create_image(tw, 2 * th); Loading @@ -473,20 +485,16 @@ void feh_draw_filename(winwidget w) eprintf("Couldn't create image. Out of memory?"); gib_imlib_image_set_has_alpha(im, 1); gib_imlib_apply_color_modifier_to_rectangle(im, 0, 0, tw, 2 * th, NULL, NULL, NULL, atab); gib_imlib_apply_color_modifier_to_rectangle(im, 0, 0, tw, 2 * th, NULL, NULL, NULL, atab); gib_imlib_image_fill_rectangle(im, 0, 0, tw, 2 * th, 0, 0, 0, 0); gib_imlib_text_draw(im, fn, NULL, 2, 2, FEH_FILE(w->file->data)->filename, IMLIB_TEXT_TO_RIGHT, 0, 0, 0, 255); gib_imlib_text_draw(im, fn, NULL, 1, 1, FEH_FILE(w->file->data)->filename, IMLIB_TEXT_TO_RIGHT, 255, 255, 255, 255); /* Print the position in the filelist, if we have >=2 files */ if (gib_list_length(filelist) > 1) { /* sic! */ len = snprintf(NULL, 0, "%d of %d", gib_list_length(filelist), gib_list_length(filelist)) + 1; s = emalloc(len); snprintf(s, len, "%d of %d", gib_list_num(filelist, current_file) + 1, gib_list_length(filelist)); /* This should somehow be right-aligned */ if (s) { gib_imlib_text_draw(im, fn, NULL, 2, th + 1, s, IMLIB_TEXT_TO_RIGHT, 0, 0, 0, 255); gib_imlib_text_draw(im, fn, NULL, 1, th, s, IMLIB_TEXT_TO_RIGHT, 255, 255, 255, 255); free(s); Loading Loading
ChangeLog +4 −0 Original line number Diff line number Diff line git HEAD * Fix --draw-filename "x of y" being cut off by short filenames Thu, 19 May 2011 22:32:42 +0200 Daniel Friesel <derf@finalrewind.org> * Release v1.14.1 Loading
src/imlib.c +20 −12 Original line number Diff line number Diff line Loading @@ -434,7 +434,7 @@ void feh_draw_errstr(winwidget w) void feh_draw_filename(winwidget w) { static Imlib_Font fn = NULL; int tw = 0, th = 0; int tw = 0, th = 0, nw = 0; Imlib_Image im = NULL; static DATA8 atab[256]; char *s = NULL; Loading Loading @@ -462,10 +462,22 @@ void feh_draw_filename(winwidget w) memset(atab, 0, sizeof(atab)); /* Work out how high the font is */ gib_imlib_get_text_size(fn, FEH_FILE(w->file->data)->filename, NULL, &tw, &th, IMLIB_TEXT_TO_RIGHT); gib_imlib_get_text_size(fn, FEH_FILE(w->file->data)->filename, NULL, &tw, &th, IMLIB_TEXT_TO_RIGHT); if (gib_list_length(filelist) > 1) { len = snprintf(NULL, 0, "%d of %d", gib_list_length(filelist), gib_list_length(filelist)) + 1; s = emalloc(len); snprintf(s, len, "%d of %d", gib_list_num(filelist, current_file) + 1, gib_list_length(filelist)); gib_imlib_get_text_size(fn, s, NULL, &nw, NULL, IMLIB_TEXT_TO_RIGHT); if (nw > tw) tw = nw; } /* tw is no longer correct, if the filename is shorter than * the string "%d of %d" used below in fullscreen mode */ tw += 3; th += 3; im = imlib_create_image(tw, 2 * th); Loading @@ -473,20 +485,16 @@ void feh_draw_filename(winwidget w) eprintf("Couldn't create image. Out of memory?"); gib_imlib_image_set_has_alpha(im, 1); gib_imlib_apply_color_modifier_to_rectangle(im, 0, 0, tw, 2 * th, NULL, NULL, NULL, atab); gib_imlib_apply_color_modifier_to_rectangle(im, 0, 0, tw, 2 * th, NULL, NULL, NULL, atab); gib_imlib_image_fill_rectangle(im, 0, 0, tw, 2 * th, 0, 0, 0, 0); gib_imlib_text_draw(im, fn, NULL, 2, 2, FEH_FILE(w->file->data)->filename, IMLIB_TEXT_TO_RIGHT, 0, 0, 0, 255); gib_imlib_text_draw(im, fn, NULL, 1, 1, FEH_FILE(w->file->data)->filename, IMLIB_TEXT_TO_RIGHT, 255, 255, 255, 255); /* Print the position in the filelist, if we have >=2 files */ if (gib_list_length(filelist) > 1) { /* sic! */ len = snprintf(NULL, 0, "%d of %d", gib_list_length(filelist), gib_list_length(filelist)) + 1; s = emalloc(len); snprintf(s, len, "%d of %d", gib_list_num(filelist, current_file) + 1, gib_list_length(filelist)); /* This should somehow be right-aligned */ if (s) { gib_imlib_text_draw(im, fn, NULL, 2, th + 1, s, IMLIB_TEXT_TO_RIGHT, 0, 0, 0, 255); gib_imlib_text_draw(im, fn, NULL, 1, th, s, IMLIB_TEXT_TO_RIGHT, 255, 255, 255, 255); free(s); Loading