Loading src/feh_png.c +1 −1 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include <stdarg.h> #define FEH_PNG_COMPRESSION 3 #define FEH_PNG_NUM_COMMENTS 2 /* only Thumb::URI and Thumb::MTime for now */ #define FEH_PNG_NUM_COMMENTS 4 gib_hash *feh_png_read_comments(char *file) { Loading src/thumbnail.c +38 −11 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ void init_thumbnail_mode(void) Imlib_Image im_temp; int ww = 0, hh = 0, www, hhh, xxx, yyy; int orig_w, orig_h; int x = 0, y = 0; winwidget winwid = NULL; Imlib_Image im_thumb = NULL; Loading Loading @@ -205,7 +206,8 @@ void init_thumbnail_mode(void) } D(("About to load image %s\n", file->filename)); /* if (feh_load_image(&im_temp, file) != 0) */ if (feh_thumbnail_get_thumbnail(&im_temp, file) != 0) { if (feh_thumbnail_get_thumbnail(&im_temp, file, &orig_w, &orig_h) != 0) { if (opt.verbose) feh_display_status('.'); D(("Successfully loaded %s\n", file->filename)); Loading @@ -213,6 +215,12 @@ void init_thumbnail_mode(void) hhh = opt.thumb_h; ww = gib_imlib_image_get_width(im_temp); hh = gib_imlib_image_get_height(im_temp); if (!orig_w) { orig_w = ww; orig_h = hh; } thumbnailcount++; if (gib_imlib_image_has_alpha(im_temp)) imlib_context_set_blend(1); Loading Loading @@ -334,7 +342,7 @@ void init_thumbnail_mode(void) td.font_main, NULL, x + x_offset_dim, y + opt.thumb_h + (lines++ * (th + 2)) + 2, create_index_dimension_string(ww, hh), 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, Loading Loading @@ -718,21 +726,27 @@ void feh_thumbnail_calculate_geometry(void) } } int feh_thumbnail_get_thumbnail(Imlib_Image * image, feh_file * file) int feh_thumbnail_get_thumbnail(Imlib_Image * image, feh_file * file, int * orig_w, int * orig_h) { int status = 0; char *thumb_file = NULL, *uri = NULL; *orig_w = 0; *orig_h = 0; if (!file || !file->filename) return (0); if (td.cache_thumbnails) { uri = feh_thumbnail_get_name_uri(file->filename); thumb_file = feh_thumbnail_get_name(uri); status = feh_thumbnail_get_generated(image, file, thumb_file); status = feh_thumbnail_get_generated(image, file, thumb_file, orig_w, orig_h); if (!status) status = feh_thumbnail_generate(image, file, thumb_file, uri); status = feh_thumbnail_generate(image, file, thumb_file, uri, orig_w, orig_h); D(("uri is %s, thumb_file is %s\n", uri, thumb_file)); free(uri); Loading Loading @@ -809,15 +823,16 @@ char *feh_thumbnail_get_name_md5(char *uri) } int feh_thumbnail_generate(Imlib_Image * image, feh_file * file, char *thumb_file, char *uri) char *thumb_file, char *uri, int * orig_w, int * orig_h) { int w, h, thumb_w, thumb_h; Imlib_Image im_temp; struct stat sb; char c_width[8], c_height[8]; if (feh_load_image(&im_temp, file) != 0) { w = gib_imlib_image_get_width(im_temp); h = gib_imlib_image_get_height(im_temp); *orig_w = w = gib_imlib_image_get_width(im_temp); *orig_h = h = gib_imlib_image_get_height(im_temp); thumb_w = td.cache_dim; thumb_h = td.cache_dim; Loading @@ -835,8 +850,12 @@ int feh_thumbnail_generate(Imlib_Image * image, feh_file * file, if (!stat(file->filename, &sb)) { char c_mtime[128]; sprintf(c_mtime, "%d", (int)sb.st_mtime); snprintf(c_width, 8, "%d", w); snprintf(c_height, 8, "%d", h); feh_png_write_png(*image, thumb_file, "Thumb::URI", uri, "Thumb::MTime", c_mtime); "Thumb::MTime", c_mtime, "Thumb::Image::Width", c_width, "Thumb::Image::Height", c_height); } gib_imlib_free_image_and_decache(im_temp); Loading @@ -847,10 +866,12 @@ int feh_thumbnail_generate(Imlib_Image * image, feh_file * file, return (0); } int feh_thumbnail_get_generated(Imlib_Image * image, feh_file * file, char *thumb_file) int feh_thumbnail_get_generated(Imlib_Image * image, feh_file * file, char *thumb_file, int * orig_w, int * orig_h) { struct stat sb; char *c_mtime; char *c_width, *c_height; time_t mtime = 0; gib_hash *hash; Loading @@ -858,8 +879,14 @@ int feh_thumbnail_get_generated(Imlib_Image * image, feh_file * file, char *thum hash = feh_png_read_comments(thumb_file); if (hash != NULL) { c_mtime = (char *) gib_hash_get(hash, "Thumb::MTime"); c_width = (char *) gib_hash_get(hash, "Thumb::Image::Width"); c_height = (char *) gib_hash_get(hash, "Thumb::Image::Height"); if (c_mtime != NULL) mtime = (time_t) strtol(c_mtime, NULL, 10); if (c_width != NULL) *orig_w = atoi(c_width); if (c_height != NULL) *orig_h = atoi(c_height); gib_hash_free_and_data(hash); } Loading src/thumbnail.h +3 −3 Original line number Diff line number Diff line Loading @@ -74,9 +74,9 @@ void feh_thumbnail_mark_removed(feh_file * file, int deleted); void feh_thumbnail_calculate_geometry(void); int feh_thumbnail_get_thumbnail(Imlib_Image * image, feh_file * file); int feh_thumbnail_generate(Imlib_Image * image, feh_file * file, char *thumb_file, char *uri); int feh_thumbnail_get_generated(Imlib_Image * image, feh_file * file, char *thumb_file); int feh_thumbnail_get_thumbnail(Imlib_Image * image, feh_file * file, int * orig_w, int * orig_h); int feh_thumbnail_generate(Imlib_Image * image, feh_file * file, char *thumb_file, char *uri, int * orig_w, int * orig_h); int feh_thumbnail_get_generated(Imlib_Image * image, feh_file * file, char * thumb_file, int * orig_w, int * orig_h); char *feh_thumbnail_get_name(char *uri); char *feh_thumbnail_get_name_uri(char *name); char *feh_thumbnail_get_name_md5(char *uri); Loading Loading
src/feh_png.c +1 −1 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include <stdarg.h> #define FEH_PNG_COMPRESSION 3 #define FEH_PNG_NUM_COMMENTS 2 /* only Thumb::URI and Thumb::MTime for now */ #define FEH_PNG_NUM_COMMENTS 4 gib_hash *feh_png_read_comments(char *file) { Loading
src/thumbnail.c +38 −11 Original line number Diff line number Diff line Loading @@ -58,6 +58,7 @@ void init_thumbnail_mode(void) Imlib_Image im_temp; int ww = 0, hh = 0, www, hhh, xxx, yyy; int orig_w, orig_h; int x = 0, y = 0; winwidget winwid = NULL; Imlib_Image im_thumb = NULL; Loading Loading @@ -205,7 +206,8 @@ void init_thumbnail_mode(void) } D(("About to load image %s\n", file->filename)); /* if (feh_load_image(&im_temp, file) != 0) */ if (feh_thumbnail_get_thumbnail(&im_temp, file) != 0) { if (feh_thumbnail_get_thumbnail(&im_temp, file, &orig_w, &orig_h) != 0) { if (opt.verbose) feh_display_status('.'); D(("Successfully loaded %s\n", file->filename)); Loading @@ -213,6 +215,12 @@ void init_thumbnail_mode(void) hhh = opt.thumb_h; ww = gib_imlib_image_get_width(im_temp); hh = gib_imlib_image_get_height(im_temp); if (!orig_w) { orig_w = ww; orig_h = hh; } thumbnailcount++; if (gib_imlib_image_has_alpha(im_temp)) imlib_context_set_blend(1); Loading Loading @@ -334,7 +342,7 @@ void init_thumbnail_mode(void) td.font_main, NULL, x + x_offset_dim, y + opt.thumb_h + (lines++ * (th + 2)) + 2, create_index_dimension_string(ww, hh), 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, Loading Loading @@ -718,21 +726,27 @@ void feh_thumbnail_calculate_geometry(void) } } int feh_thumbnail_get_thumbnail(Imlib_Image * image, feh_file * file) int feh_thumbnail_get_thumbnail(Imlib_Image * image, feh_file * file, int * orig_w, int * orig_h) { int status = 0; char *thumb_file = NULL, *uri = NULL; *orig_w = 0; *orig_h = 0; if (!file || !file->filename) return (0); if (td.cache_thumbnails) { uri = feh_thumbnail_get_name_uri(file->filename); thumb_file = feh_thumbnail_get_name(uri); status = feh_thumbnail_get_generated(image, file, thumb_file); status = feh_thumbnail_get_generated(image, file, thumb_file, orig_w, orig_h); if (!status) status = feh_thumbnail_generate(image, file, thumb_file, uri); status = feh_thumbnail_generate(image, file, thumb_file, uri, orig_w, orig_h); D(("uri is %s, thumb_file is %s\n", uri, thumb_file)); free(uri); Loading Loading @@ -809,15 +823,16 @@ char *feh_thumbnail_get_name_md5(char *uri) } int feh_thumbnail_generate(Imlib_Image * image, feh_file * file, char *thumb_file, char *uri) char *thumb_file, char *uri, int * orig_w, int * orig_h) { int w, h, thumb_w, thumb_h; Imlib_Image im_temp; struct stat sb; char c_width[8], c_height[8]; if (feh_load_image(&im_temp, file) != 0) { w = gib_imlib_image_get_width(im_temp); h = gib_imlib_image_get_height(im_temp); *orig_w = w = gib_imlib_image_get_width(im_temp); *orig_h = h = gib_imlib_image_get_height(im_temp); thumb_w = td.cache_dim; thumb_h = td.cache_dim; Loading @@ -835,8 +850,12 @@ int feh_thumbnail_generate(Imlib_Image * image, feh_file * file, if (!stat(file->filename, &sb)) { char c_mtime[128]; sprintf(c_mtime, "%d", (int)sb.st_mtime); snprintf(c_width, 8, "%d", w); snprintf(c_height, 8, "%d", h); feh_png_write_png(*image, thumb_file, "Thumb::URI", uri, "Thumb::MTime", c_mtime); "Thumb::MTime", c_mtime, "Thumb::Image::Width", c_width, "Thumb::Image::Height", c_height); } gib_imlib_free_image_and_decache(im_temp); Loading @@ -847,10 +866,12 @@ int feh_thumbnail_generate(Imlib_Image * image, feh_file * file, return (0); } int feh_thumbnail_get_generated(Imlib_Image * image, feh_file * file, char *thumb_file) int feh_thumbnail_get_generated(Imlib_Image * image, feh_file * file, char *thumb_file, int * orig_w, int * orig_h) { struct stat sb; char *c_mtime; char *c_width, *c_height; time_t mtime = 0; gib_hash *hash; Loading @@ -858,8 +879,14 @@ int feh_thumbnail_get_generated(Imlib_Image * image, feh_file * file, char *thum hash = feh_png_read_comments(thumb_file); if (hash != NULL) { c_mtime = (char *) gib_hash_get(hash, "Thumb::MTime"); c_width = (char *) gib_hash_get(hash, "Thumb::Image::Width"); c_height = (char *) gib_hash_get(hash, "Thumb::Image::Height"); if (c_mtime != NULL) mtime = (time_t) strtol(c_mtime, NULL, 10); if (c_width != NULL) *orig_w = atoi(c_width); if (c_height != NULL) *orig_h = atoi(c_height); gib_hash_free_and_data(hash); } Loading
src/thumbnail.h +3 −3 Original line number Diff line number Diff line Loading @@ -74,9 +74,9 @@ void feh_thumbnail_mark_removed(feh_file * file, int deleted); void feh_thumbnail_calculate_geometry(void); int feh_thumbnail_get_thumbnail(Imlib_Image * image, feh_file * file); int feh_thumbnail_generate(Imlib_Image * image, feh_file * file, char *thumb_file, char *uri); int feh_thumbnail_get_generated(Imlib_Image * image, feh_file * file, char *thumb_file); int feh_thumbnail_get_thumbnail(Imlib_Image * image, feh_file * file, int * orig_w, int * orig_h); int feh_thumbnail_generate(Imlib_Image * image, feh_file * file, char *thumb_file, char *uri, int * orig_w, int * orig_h); int feh_thumbnail_get_generated(Imlib_Image * image, feh_file * file, char * thumb_file, int * orig_w, int * orig_h); char *feh_thumbnail_get_name(char *uri); char *feh_thumbnail_get_name_uri(char *name); char *feh_thumbnail_get_name_md5(char *uri); Loading