Revision: 1459
          http://geeqie.svn.sourceforge.net/geeqie/?rev=1459&view=rev
Author:   zas_
Date:     2009-03-01 17:58:19 +0000 (Sun, 01 Mar 2009)

Log Message:
-----------
Enable 'Use profile from image' item of color management menu only if such 
profile information is available from image.

Modified Paths:
--------------
    trunk/src/image.c
    trunk/src/layout.c

Modified: trunk/src/image.c
===================================================================
--- trunk/src/image.c   2009-03-01 17:13:14 UTC (rev 1458)
+++ trunk/src/image.c   2009-03-01 17:58:19 UTC (rev 1459)
@@ -198,6 +198,7 @@
        const gchar *screen_file;
        guchar *profile = NULL;
        guint profile_len;
+       ExifData *exif;
 
        if (imd->cm) return FALSE;
 
@@ -237,52 +238,61 @@
                {
                return FALSE;
                }
+
+
        imd->color_profile_from_image = COLOR_PROFILE_NONE;
 
-       if (imd->color_profile_use_image)
+       exif = exif_read_fd(imd->image_fd);
+               
+       if (exif)
                {
-               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)
+                       if (imd->color_profile_use_image)
                                {
-                               gint cs;
-                               gchar *interop_index;
+                               input_type = COLOR_PROFILE_SRGB;
+                               input_file = NULL;
+                               }
+                       imd->color_profile_from_image = COLOR_PROFILE_SRGB;
 
-                               /* 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");
+                       DEBUG_1("Found EXIF ColorSpace of sRGB");
+                       }
+               if (cs == 2 || (interop_index && !strcmp(interop_index, "R03")))
+                       {
+                       if (imd->color_profile_use_image)
+                               {
+                               input_type = COLOR_PROFILE_ADOBERGB;
+                               input_file = NULL;
+                               }
+                       imd->color_profile_from_image = COLOR_PROFILE_ADOBERGB;
 
-                               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 AdobeRGB");
+                       }
 
-                                       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);
-                               }
-                       else
+               g_free(interop_index);
+                       
+               profile = exif_get_color_profile(exif, &profile_len);
+               if (profile)
+                       {
+                       if (!imd->color_profile_use_image)
                                {
-                               DEBUG_1("Found embedded color profile");
-                               imd->color_profile_from_image = 
COLOR_PROFILE_MEM;
+                               g_free(profile);
+                               profile = NULL;
                                }
-                       
-                       exif_free_fd(imd->image_fd, exif);
+                       DEBUG_1("Found embedded color profile");
+                       imd->color_profile_from_image = COLOR_PROFILE_MEM;
                        }
+               
+               exif_free_fd(imd->image_fd, exif);
                }
+       
 
        if (profile)
                {

Modified: trunk/src/layout.c
===================================================================
--- trunk/src/layout.c  2009-03-01 17:13:14 UTC (rev 1458)
+++ trunk/src/layout.c  2009-03-01 17:58:19 UTC (rev 1459)
@@ -444,7 +444,7 @@
 
        item = menu_item_add_check(menu, _("Use profile from _image"), 
use_image,
                            G_CALLBACK(layout_color_menu_use_image_cb), lw);
-       gtk_widget_set_sensitive(item, active);
+       gtk_widget_set_sensitive(item, image_profile == COLOR_PROFILE_MEM || 
(image_profile > COLOR_PROFILE_NONE && image_profile < COLOR_PROFILE_FILE));
 
        for (i = COLOR_PROFILE_SRGB; i < COLOR_PROFILE_FILE; i++)
                {


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Geeqie-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geeqie-svn

Reply via email to