diff options
-rw-r--r-- | client/cd-create-profile.c | 32 | ||||
-rw-r--r-- | contrib/colord.spec.in | 1 | ||||
-rw-r--r-- | data/profiles/Makefile.am | 5 |
3 files changed, 29 insertions, 9 deletions
diff --git a/client/cd-create-profile.c b/client/cd-create-profile.c index 96f7db5..ca37bf7 100644 --- a/client/cd-create-profile.c +++ b/client/cd-create-profile.c @@ -389,7 +389,7 @@ cd_util_create_x11_gamma (CdUtilPrivate *priv, } static cmsToneCurve * -cd_util_build_srgb_gamma (void) +cd_util_build_srgb_gamma (CdUtilPrivate *priv) { cmsFloat64Number params[5]; params[0] = 2.4; @@ -397,11 +397,11 @@ cd_util_build_srgb_gamma (void) params[2] = 0.055 / 1.055; params[3] = 1. / 12.92; params[4] = 0.04045; - return cmsBuildParametricToneCurve (NULL, 4, params); + return cmsBuildParametricToneCurve (cd_icc_get_context (priv->icc), 4, params); } static cmsToneCurve * -cd_util_build_lstar_gamma (void) +cd_util_build_lstar_gamma (CdUtilPrivate *priv) { cmsFloat64Number params[5]; params[0] = 3.000000; @@ -409,11 +409,11 @@ cd_util_build_lstar_gamma (void) params[2] = 0.137924; params[3] = 0.110703; params[4] = 0.080002; - return cmsBuildParametricToneCurve (NULL, 4, params); + return cmsBuildParametricToneCurve (cd_icc_get_context (priv->icc), 4, params); } static cmsToneCurve * -cd_util_build_rec709_gamma (void) +cd_util_build_rec709_gamma (CdUtilPrivate *priv) { cmsFloat64Number params[5]; params[0] = 1.0 / 0.45; @@ -421,7 +421,8 @@ cd_util_build_rec709_gamma (void) params[2] = 0.099; params[3] = 4.500; params[4] = 0.018; - return cmsBuildParametricToneCurve (NULL, LCMS_CURVE_PLUGIN_TYPE_REC709, params); + return cmsBuildParametricToneCurve (cd_icc_get_context (priv->icc), + LCMS_CURVE_PLUGIN_TYPE_REC709, params); } static gboolean @@ -448,15 +449,15 @@ cd_util_create_standard_space (CdUtilPrivate *priv, } data = cd_dom_get_node_data (tmp); if (g_strcmp0 (data, "sRGB") == 0) { - transfer[0] = cd_util_build_srgb_gamma (); + transfer[0] = cd_util_build_srgb_gamma (priv); transfer[1] = transfer[0]; transfer[2] = transfer[0]; } else if (g_strcmp0 (data, "L*") == 0) { - transfer[0] = cd_util_build_lstar_gamma (); + transfer[0] = cd_util_build_lstar_gamma (priv); transfer[1] = transfer[0]; transfer[2] = transfer[0]; } else if (g_strcmp0 (data, "Rec709") == 0) { - transfer[0] = cd_util_build_rec709_gamma (); + transfer[0] = cd_util_build_rec709_gamma (priv); transfer[1] = transfer[0]; transfer[2] = transfer[0]; } else { @@ -472,6 +473,13 @@ cd_util_create_standard_space (CdUtilPrivate *priv, transfer[1] = transfer[0]; transfer[2] = transfer[0]; } + if (transfer[0] == NULL) { + ret = FALSE; + g_set_error (error, 1, 0, + "failed to set transfer function for %s", + data); + goto out; + } /* values taken from https://en.wikipedia.org/wiki/Standard_illuminant */ tmp = cd_dom_get_node (dom, root, "whitepoint"); @@ -553,6 +561,12 @@ cd_util_create_standard_space (CdUtilPrivate *priv, &white, &primaries, transfer); + if (priv->lcms_profile == NULL) { + ret = FALSE; + g_set_error_literal (error, 1, 0, + "Failed to create profile"); + goto out; + } ret = TRUE; out: cmsFreeToneCurve (transfer[0]); diff --git a/contrib/colord.spec.in b/contrib/colord.spec.in index ab80d2a..0fbfc93 100644 --- a/contrib/colord.spec.in +++ b/contrib/colord.spec.in @@ -213,6 +213,7 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || : %dir %{_icccolordir}/colord %{_icccolordir}/colord/AdobeRGB1998.icc %{_icccolordir}/colord/ProPhotoRGB.icc +%{_icccolordir}/colord/Rec709.icc %{_icccolordir}/colord/SMPTE-C-RGB.icc %{_icccolordir}/colord/sRGB.icc diff --git a/data/profiles/Makefile.am b/data/profiles/Makefile.am index 6b90ed1..9fe5792 100644 --- a/data/profiles/Makefile.am +++ b/data/profiles/Makefile.am @@ -57,6 +57,7 @@ generatedprofiles = \ NTSC-RGB.icc \ PAL-RGB.icc \ ProPhotoRGB.icc \ + Rec709.icc \ SMPTE-C-RGB.icc \ sRGB.icc \ WideGamutRGB.icc \ @@ -144,6 +145,10 @@ ProPhotoRGB.icc: ProPhotoRGB.xml $(AM_V_GEN) $(CD_CREATE_PROFILE) \ --output $@ \ $(builddir)/ProPhotoRGB.xml +Rec709.icc: Rec709.xml + $(AM_V_GEN) $(CD_CREATE_PROFILE) \ + --output $@ \ + $(builddir)/Rec709.xml SMPTE-C-RGB.icc: SMPTE-C-RGB.xml $(AM_V_GEN) $(CD_CREATE_PROFILE) \ --output $@ \ |