Loading ChangeLog +5 −0 Original line number Diff line number Diff line git HEAD * Add --min-dim and --max-dim options to only process images with certain dimensions Thu, 27 Sep 2012 16:48:48 +0200 Daniel Friesel <derf+feh@finalrewind.org> * Fix segfault when doing lossless mirror/rotate and jpegexiforient is Loading man/feh.pre +22 −0 Original line number Diff line number Diff line Loading @@ -397,6 +397,15 @@ of zero causes .Nm to try indefinitely. By default, magick support is disabled. . .It Cm --max-dimension Ar width No x Ar height . Only show images with width <= .Ar width and height <= .Ar height . If you only care about one parameter, set the other to either something large or -1. . .It Cm -M , --menu-font Ar font . Use Loading @@ -404,6 +413,14 @@ Use .Pq truetype, with size, like Qq yudit/12 as menu font. . .It Cm --min-dimension Ar width No x Ar height . Only show images with width >= .Ar width and height >= .Ar height . If you only care about one parameter, set the other to 0. . .It Cm -m , --montage . Enable montage mode. Montage mode creates a new image consisting of a grid of Loading Loading @@ -1463,6 +1480,11 @@ Same as above . Show some EXIF information, extracted by exifprobe/exifgrep . .It feh --action 'rm %F' -rl --max-dim 1000x800 . Resursively remove all images with dimensions below or equal to 1000x800 pixels from the current directory. . .El . . Loading src/filelist.c +9 −1 Original line number Diff line number Diff line Loading @@ -281,6 +281,13 @@ gib_list *feh_file_info_preload(gib_list * list) remove_list = gib_list_add_front(remove_list, l); if (opt.verbose) feh_display_status('x'); } else if (((unsigned int)file->info->width < opt.min_width) || ((unsigned int)file->info->width > opt.max_width) || ((unsigned int)file->info->height < opt.min_height) || ((unsigned int)file->info->height > opt.max_height)) { remove_list = gib_list_add_front(remove_list, l); if (opt.verbose) feh_display_status('s'); } else if (opt.verbose) feh_display_status('.'); } Loading Loading @@ -375,7 +382,8 @@ int feh_cmp_format(void *file1, void *file2) void feh_prepare_filelist(void) { if (opt.list || opt.customlist || (opt.sort > SORT_FILENAME) || opt.preload) { || opt.preload || opt.min_width || opt.min_height || (opt.max_width != UINT_MAX) || (opt.max_height != UINT_MAX)) { /* For these sort options, we have to preload images */ filelist = feh_file_info_preload(filelist); if (!gib_list_length(filelist)) Loading src/options.c +11 −2 Original line number Diff line number Diff line Loading @@ -60,6 +60,7 @@ void init_parse_options(int argc, char **argv) opt.menu_font = estrdup(DEFAULT_MENU_FONT); opt.font = NULL; opt.menu_bg = estrdup(PREFIX "/share/feh/images/menubg_default.png"); opt.max_height = opt.max_width = UINT_MAX; opt.start_list_at = NULL; opt.jump_on_resort = 1; Loading Loading @@ -300,15 +301,18 @@ static void feh_getopt_theme(int argc, char **argv) static void feh_parse_option_array(int argc, char **argv, int finalrun) { int discard; static char stropts[] = "a:A:b:B:cC:dD:e:E:f:Fg:GhH:iIj:J:kK:lL:mM:nNo:O:pPqrR:sS:tT:uUvVwW:xXy:YzZ" ".@:^:~:):|:+:"; ".@:^:~:):|:+:<:>:"; /* (*name, has_arg, *flag, val) See: struct option in getopts.h */ static struct option lopts[] = { {"menu-bg" , 1, 0, ')'}, {"debug" , 0, 0, '+'}, {"scale-down" , 0, 0, '.'}, {"max-dimension" , 1, 0, '<'}, {"min-dimension" , 1, 0, '>'}, {"title-font" , 1, 0, '@'}, {"action" , 1, 0, 'A'}, {"image-bg" , 1, 0, 'B'}, Loading Loading @@ -398,7 +402,6 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun) }; int optch = 0, cmdx = 0; /* Now to pass some optionarinos */ while ((optch = getopt_long(argc, argv, stropts, lopts, &cmdx)) != EOF) { D(("Got option, getopt calls it %d, or %c\n", optch, optch)); switch (optch) { Loading @@ -412,6 +415,12 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun) case '+': opt.debug = 1; break; case '<': XParseGeometry(optarg, &discard, &discard, &opt.max_width, &opt.max_height); break; case '>': XParseGeometry(optarg, &discard, &discard, &opt.min_width, &opt.min_height); break; case '.': opt.scale_down = 1; break; Loading src/options.h +2 −0 Original line number Diff line number Diff line Loading @@ -109,6 +109,8 @@ struct __fehoptions { int zoom_mode; unsigned char adjust_reload; unsigned int min_width, min_height, max_width, max_height; unsigned char mode; unsigned char paused; Loading Loading
ChangeLog +5 −0 Original line number Diff line number Diff line git HEAD * Add --min-dim and --max-dim options to only process images with certain dimensions Thu, 27 Sep 2012 16:48:48 +0200 Daniel Friesel <derf+feh@finalrewind.org> * Fix segfault when doing lossless mirror/rotate and jpegexiforient is Loading
man/feh.pre +22 −0 Original line number Diff line number Diff line Loading @@ -397,6 +397,15 @@ of zero causes .Nm to try indefinitely. By default, magick support is disabled. . .It Cm --max-dimension Ar width No x Ar height . Only show images with width <= .Ar width and height <= .Ar height . If you only care about one parameter, set the other to either something large or -1. . .It Cm -M , --menu-font Ar font . Use Loading @@ -404,6 +413,14 @@ Use .Pq truetype, with size, like Qq yudit/12 as menu font. . .It Cm --min-dimension Ar width No x Ar height . Only show images with width >= .Ar width and height >= .Ar height . If you only care about one parameter, set the other to 0. . .It Cm -m , --montage . Enable montage mode. Montage mode creates a new image consisting of a grid of Loading Loading @@ -1463,6 +1480,11 @@ Same as above . Show some EXIF information, extracted by exifprobe/exifgrep . .It feh --action 'rm %F' -rl --max-dim 1000x800 . Resursively remove all images with dimensions below or equal to 1000x800 pixels from the current directory. . .El . . Loading
src/filelist.c +9 −1 Original line number Diff line number Diff line Loading @@ -281,6 +281,13 @@ gib_list *feh_file_info_preload(gib_list * list) remove_list = gib_list_add_front(remove_list, l); if (opt.verbose) feh_display_status('x'); } else if (((unsigned int)file->info->width < opt.min_width) || ((unsigned int)file->info->width > opt.max_width) || ((unsigned int)file->info->height < opt.min_height) || ((unsigned int)file->info->height > opt.max_height)) { remove_list = gib_list_add_front(remove_list, l); if (opt.verbose) feh_display_status('s'); } else if (opt.verbose) feh_display_status('.'); } Loading Loading @@ -375,7 +382,8 @@ int feh_cmp_format(void *file1, void *file2) void feh_prepare_filelist(void) { if (opt.list || opt.customlist || (opt.sort > SORT_FILENAME) || opt.preload) { || opt.preload || opt.min_width || opt.min_height || (opt.max_width != UINT_MAX) || (opt.max_height != UINT_MAX)) { /* For these sort options, we have to preload images */ filelist = feh_file_info_preload(filelist); if (!gib_list_length(filelist)) Loading
src/options.c +11 −2 Original line number Diff line number Diff line Loading @@ -60,6 +60,7 @@ void init_parse_options(int argc, char **argv) opt.menu_font = estrdup(DEFAULT_MENU_FONT); opt.font = NULL; opt.menu_bg = estrdup(PREFIX "/share/feh/images/menubg_default.png"); opt.max_height = opt.max_width = UINT_MAX; opt.start_list_at = NULL; opt.jump_on_resort = 1; Loading Loading @@ -300,15 +301,18 @@ static void feh_getopt_theme(int argc, char **argv) static void feh_parse_option_array(int argc, char **argv, int finalrun) { int discard; static char stropts[] = "a:A:b:B:cC:dD:e:E:f:Fg:GhH:iIj:J:kK:lL:mM:nNo:O:pPqrR:sS:tT:uUvVwW:xXy:YzZ" ".@:^:~:):|:+:"; ".@:^:~:):|:+:<:>:"; /* (*name, has_arg, *flag, val) See: struct option in getopts.h */ static struct option lopts[] = { {"menu-bg" , 1, 0, ')'}, {"debug" , 0, 0, '+'}, {"scale-down" , 0, 0, '.'}, {"max-dimension" , 1, 0, '<'}, {"min-dimension" , 1, 0, '>'}, {"title-font" , 1, 0, '@'}, {"action" , 1, 0, 'A'}, {"image-bg" , 1, 0, 'B'}, Loading Loading @@ -398,7 +402,6 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun) }; int optch = 0, cmdx = 0; /* Now to pass some optionarinos */ while ((optch = getopt_long(argc, argv, stropts, lopts, &cmdx)) != EOF) { D(("Got option, getopt calls it %d, or %c\n", optch, optch)); switch (optch) { Loading @@ -412,6 +415,12 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun) case '+': opt.debug = 1; break; case '<': XParseGeometry(optarg, &discard, &discard, &opt.max_width, &opt.max_height); break; case '>': XParseGeometry(optarg, &discard, &discard, &opt.min_width, &opt.min_height); break; case '.': opt.scale_down = 1; break; Loading
src/options.h +2 −0 Original line number Diff line number Diff line Loading @@ -109,6 +109,8 @@ struct __fehoptions { int zoom_mode; unsigned char adjust_reload; unsigned int min_width, min_height, max_width, max_height; unsigned char mode; unsigned char paused; Loading