From 6ba989ef1cb058b11d56b658489e9de7ed014ee3 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Tue, 27 Nov 2018 12:09:39 +0100 Subject: [PATCH] gamutwarning: clamp in the intermediate transform, otherwise there's no point in checking for OOG Fixes #5019 --- rtengine/gamutwarning.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rtengine/gamutwarning.cc b/rtengine/gamutwarning.cc index 84b4b3c08..c76e2a285 100644 --- a/rtengine/gamutwarning.cc +++ b/rtengine/gamutwarning.cc @@ -34,7 +34,7 @@ GamutWarning::GamutWarning(cmsHPROFILE iprof, cmsHPROFILE gamutprof, RenderingIn softproof2ref(nullptr) { if (cmsIsMatrixShaper(gamutprof) && !cmsIsCLUT(gamutprof, intent, LCMS_USED_AS_OUTPUT)) { - cmsHPROFILE aces = ICCStore::getInstance()->getProfile("RTv4_ACES-AP0"); + cmsHPROFILE aces = ICCStore::getInstance()->workingSpace("ACESp0"); if (aces) { lab2ref = cmsCreateTransform(iprof, TYPE_Lab_FLT, aces, TYPE_RGB_FLT, INTENT_ABSOLUTE_COLORIMETRIC, cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE); lab2softproof = cmsCreateTransform(iprof, TYPE_Lab_FLT, gamutprof, TYPE_RGB_FLT, INTENT_ABSOLUTE_COLORIMETRIC, cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE); @@ -81,6 +81,10 @@ void GamutWarning::markLine(Image8 *image, int y, float *srcbuf, float *buf1, fl float delta_max = lab2ref ? 0.0001f : 4.9999f; cmsDoTransform(lab2softproof, srcbuf, buf2, width); + // since we are checking for out-of-gamut, we do want to clamp here! + for (int i = 0; i < width * 3; ++i) { + buf2[i] = LIM01(buf2[i]); + } cmsDoTransform(softproof2ref, buf2, buf1, width); float *proofdata = buf1;