summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2012-06-03 14:39:57 +0100
committerRichard Hughes <richard@hughsie.com>2012-06-03 14:40:31 +0100
commit33dbcf2d7035f08f33e4649d076e3ea0cc6bcfcd (patch)
treeb5dcef9b4ffe1f49df9e3fc4224cec31bc1f1098
parent4b65c9ac4a33eb20e451c996aab64c65789307a9 (diff)
downloadgnome-settings-daemon-33dbcf2d7035f08f33e4649d076e3ea0cc6bcfcd.tar.gz
color: Add the extra profile metadata as used by Oyranos
-rw-r--r--plugins/color/gsd-color-manager.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/plugins/color/gsd-color-manager.c b/plugins/color/gsd-color-manager.c
index 2d3a0cd0..cd584eab 100644
--- a/plugins/color/gsd-color-manager.c
+++ b/plugins/color/gsd-color-manager.c
@@ -555,6 +555,8 @@ gcm_apply_create_icc_profile_for_edid (GsdColorManager *manager,
cmsToneCurve *transfer_curve[3] = { NULL, NULL, NULL };
const gchar *data;
gboolean ret = FALSE;
+ gchar *str;
+ gfloat edid_gamma;
gfloat localgamma;
#ifdef HAVE_NEW_LCMS
cmsHANDLE dict = NULL;
@@ -691,6 +693,32 @@ gcm_apply_create_icc_profile_for_edid (GsdColorManager *manager,
data = gcm_edid_get_vendor_name (edid);
if (data != NULL)
_cmsDictAddEntryAscii (dict, "EDID_manufacturer", data);
+ edid_gamma = gcm_edid_get_gamma (edid);
+ if (edid_gamma > 0.0 && edid_gamma < 10.0) {
+ str = g_strdup_printf ("%f", edid_gamma);
+ _cmsDictAddEntryAscii (dict, "EDID_gamma", str);
+ g_free (str);
+ }
+
+ /* also add the primaries */
+ str = g_strdup_printf ("%f", chroma.Red.x);
+ _cmsDictAddEntryAscii (dict, "EDID_red_x", str);
+ g_free (str);
+ str = g_strdup_printf ("%f", chroma.Red.y);
+ _cmsDictAddEntryAscii (dict, "EDID_red_y", str);
+ g_free (str);
+ str = g_strdup_printf ("%f", chroma.Green.x);
+ _cmsDictAddEntryAscii (dict, "EDID_green_x", str);
+ g_free (str);
+ str = g_strdup_printf ("%f", chroma.Green.y);
+ _cmsDictAddEntryAscii (dict, "EDID_green_y", str);
+ g_free (str);
+ str = g_strdup_printf ("%f", chroma.Blue.x);
+ _cmsDictAddEntryAscii (dict, "EDID_blue_x", str);
+ g_free (str);
+ str = g_strdup_printf ("%f", chroma.Blue.y);
+ _cmsDictAddEntryAscii (dict, "EDID_blue_y", str);
+ g_free (str);
/* write new tag */
ret = cmsWriteTag (lcms_profile, cmsSigMetaTag, dict);