diff src/color-man.c @ 1549:7302ff300a52

show color management status on statusbar
author nadvornik
date Mon, 13 Apr 2009 14:39:50 +0000
parents b5608391f479
children 956aab097ea7
line wrap: on
line diff
--- a/src/color-man.c	Mon Apr 13 10:55:49 2009 +0000
+++ b/src/color-man.c	Mon Apr 13 14:39:50 2009 +0000
@@ -412,6 +412,41 @@
 				  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)
+				{
+				return g_strdup(cmsTakeProductName(profile));
+				}
+			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 +506,10 @@
 	/* 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: */