Mercurial > geeqie
changeset 1357:4ca837d74999
image_post_process_color(): remove exif parameter, just extract it when needed.
author | zas_ |
---|---|
date | Sun, 01 Mar 2009 15:54:37 +0000 |
parents | 681e79dd0820 |
children | db324ac52bcc |
files | src/image.c |
diffstat | 1 files changed, 37 insertions(+), 38 deletions(-) [+] |
line wrap: on
line diff
--- a/src/image.c Sun Mar 01 15:41:51 2009 +0000 +++ b/src/image.c Sun Mar 01 15:54:37 2009 +0000 @@ -189,7 +189,7 @@ *------------------------------------------------------------------- */ -static gint image_post_process_color(ImageWindow *imd, gint start_row, ExifData *exif, gint run_in_bg) +static gint image_post_process_color(ImageWindow *imd, gint start_row, gint run_in_bg) { ColorMan *cm; ColorManProfileType input_type; @@ -239,44 +239,53 @@ } imd->color_profile_from_image = COLOR_PROFILE_NONE; - if (imd->color_profile_use_image && exif) + if (imd->color_profile_use_image) { - profile = exif_get_color_profile(exif, &profile_len); - if (!profile) + ExifData *exif = exif_read_fd(imd->image_fd); + + if (exif) { - gint cs; - gchar *interop_index; - - /* ColorSpace == 1 specifies sRGB per EXIF 2.2 */ - if (!exif_get_integer(exif, "Exif.Photo.ColorSpace", &cs)) cs = 0; - interop_index = exif_get_data_as_text(exif, "Exif.Iop.InteroperabilityIndex"); - - if (cs == 1) + profile = exif_get_color_profile(exif, &profile_len); + if (!profile) { - input_type = COLOR_PROFILE_SRGB; - input_file = NULL; - imd->color_profile_from_image = COLOR_PROFILE_SRGB; + gint cs; + gchar *interop_index; + + /* ColorSpace == 1 specifies sRGB per EXIF 2.2 */ + if (!exif_get_integer(exif, "Exif.Photo.ColorSpace", &cs)) cs = 0; + interop_index = exif_get_data_as_text(exif, "Exif.Iop.InteroperabilityIndex"); + + if (cs == 1) + { + input_type = COLOR_PROFILE_SRGB; + input_file = NULL; + imd->color_profile_from_image = COLOR_PROFILE_SRGB; - DEBUG_1("Found EXIF ColorSpace of sRGB"); + DEBUG_1("Found EXIF ColorSpace of sRGB"); + } + if (cs == 2 || (interop_index && !strcmp(interop_index, "R03"))) + { + input_type = COLOR_PROFILE_ADOBERGB; + input_file = NULL; + imd->color_profile_from_image = COLOR_PROFILE_ADOBERGB; + + DEBUG_1("Found EXIF ColorSpace of AdobeRGB"); + } + + g_free(interop_index); } - if (cs == 2 || (interop_index && !strcmp(interop_index, "R03"))) + else { - input_type = COLOR_PROFILE_ADOBERGB; - input_file = NULL; - imd->color_profile_from_image = COLOR_PROFILE_ADOBERGB; - - DEBUG_1("Found EXIF ColorSpace of AdobeRGB"); + DEBUG_1("Found embedded color profile"); + imd->color_profile_from_image = COLOR_PROFILE_MEM; } - - g_free(interop_index); + + exif_free_fd(imd->image_fd, exif); } } if (profile) { - DEBUG_1("Found embedded color profile"); - imd->color_profile_from_image = COLOR_PROFILE_MEM; - cm = color_man_new_embedded(run_in_bg ? imd : NULL, NULL, profile, profile_len, screen_type, screen_file); @@ -1039,17 +1048,7 @@ if (imd->color_profile_enable) { - ExifData *exif = NULL; - - if (imd->color_profile_use_image) exif = exif_read_fd(imd->image_fd); - - if (!image_post_process_color(imd, 0, exif, FALSE)) - { - /* fixme: note error to user */ -// image_state_set(imd, IMAGE_STATE_COLOR_ADJ); - } - if (exif) exif_free_fd(imd->image_fd, exif); - + image_post_process_color(imd, 0, FALSE); /* TODO: error handling */ } if (imd->cm || imd->desaturate)