Fixed one wrongly function call with pointer
[geeqie.git] / src / color-man.c
index 9ca83e0..8e485bc 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Geeqie
  * (C) 2006 John Ellis
- * Copyright (C) 2008 - 2009 The Geeqie Team
+ * Copyright (C) 2008 - 2012 The Geeqie Team
  *
  * Author: John Ellis
  *
 #ifdef HAVE_LCMS
 /*** color support enabled ***/
 
+#ifdef HAVE_LCMS2
+#include <lcms2.h>
+#else
 #include <lcms.h>
+#endif
 
 
 typedef struct _ColorManCache ColorManCache;
@@ -52,7 +56,9 @@ static void color_man_lib_init(void)
        if (init_done) return;
        init_done = TRUE;
 
+#ifndef HAVE_LCMS2
        cmsErrorAction(LCMS_ERROR_IGNORE);
+#endif
 }
 
 static cmsHPROFILE color_man_create_adobe_comp(void)
@@ -412,6 +418,50 @@ ColorMan *color_man_new_embedded(ImageWindow *imd, GdkPixbuf *pixbuf,
                                  screen_type, screen_file, screen_data, screen_data_len);
 }
 
+static gchar *color_man_get_profile_name(ColorManProfileType type, cmsHPROFILE profile)
+{
+       switch (type)
+               {
+               case COLOR_PROFILE_SRGB:
+                       return g_strdup(_("sRGB"));
+               case COLOR_PROFILE_ADOBERGB:
+                       return g_strdup(_("Adobe RGB compatible"));
+                       break;
+               case COLOR_PROFILE_MEM:
+               case COLOR_PROFILE_FILE:
+                       if (profile)
+                               {
+#ifdef HAVE_LCMS2
+                               cmsUInt32Number r;
+                               char buffer[20];
+                               buffer[0] = '\0';
+                               r = cmsGetProfileInfoASCII(profile, cmsInfoDescription, "en", "US", buffer, 20);
+                               buffer[19] = '\0'; /* Just to be sure */
+                               return g_strdup(buffer);
+#else
+                               return g_strdup(cmsTakeProductName(profile));
+#endif
+                               }
+                       return g_strdup(_("Custom profile"));
+                       break;
+               case COLOR_PROFILE_NONE:
+               default:
+                       return g_strdup("");
+               }
+}
+
+gboolean color_man_get_status(ColorMan *cm, gchar **image_profile, gchar **screen_profile)
+{
+       ColorManCache *cc;
+       if (!cm) return FALSE;
+
+       cc = cm->profile;
+
+       if (image_profile) *image_profile = color_man_get_profile_name(cc->profile_in_type, cc->profile_in);
+       if (screen_profile) *screen_profile = color_man_get_profile_name(cc->profile_out_type, cc->profile_out);
+       return TRUE;
+}
+
 void color_man_free(ColorMan *cm)
 {
        if (!cm) return;
@@ -471,5 +521,10 @@ void color_man_start_bg(ColorMan *cm, ColorManDoneFunc done_func, gpointer done_
        /* no op */
 }
 
+gboolean color_man_get_status(ColorMan *cm, gchar **image_profile, gchar **screen_profile)
+{
+       return FALSE;
+}
+
 #endif /* define HAVE_LCMS */
 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */