diff --git a/rtdata/iccprofiles/output/RT_acesp1_V4.icc b/rtdata/iccprofiles/output/RT_acesp1_V4.icc new file mode 100644 index 000000000..13a689fd6 Binary files /dev/null and b/rtdata/iccprofiles/output/RT_acesp1_V4.icc differ diff --git a/rtengine/iccmatrices.h b/rtengine/iccmatrices.h index c109c9f76..d20cb70c3 100644 --- a/rtengine/iccmatrices.h +++ b/rtengine/iccmatrices.h @@ -92,15 +92,15 @@ constexpr double ACESp0_xyz[3][3] = { }; constexpr double xyz_ACESp1[3][3] = { - {0.68970, 0.14995, 0.12456}, - {0.28445, 0.67175 , 0.04379}, - {-0.00604, 0.00999, 0.82094} + {0.689697, 0.149944, 0.124559}, + {0.284448, 0.671758 , 0.043794}, + {-0.006043, 0.009998, 0.820945} }; constexpr double ACESp1_xyz[3][3] = { - {1.593266, -0.352338, -0.222949}, - {-0.675963, 1.639314 , 0.0151197}, - {0.0199481, -0.022541, 1.216291} + {1.5932624, -0.352316, -0.222945}, + {-0.6759496, 1.639286 , 0.01511026}, + {0.0199602, -0.0225577, 1.2162833} }; diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 48a4a3e69..558ec2da9 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -693,7 +693,6 @@ private: m[2][0] = red->Z; m[2][1] = green->Z; m[2][2] = blue->Z; - out.set(m); cmsCloseProfile(prof); @@ -1497,11 +1496,11 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: outProfile = options.rtSettings.rec2020; outPr = "RT_rec2020"; - } else if (icm.wprimari == "acesp0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESc)) { - outProfile = options.rtSettings.ACESc; + } else if (icm.wprimari == "acesp0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { + outProfile = options.rtSettings.ACESp0; outPr = "RT_acesp0"; - } else if (icm.wprimari == "acesp1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESc)) { - outProfile = options.rtSettings.ACESc; + } else if (icm.wprimari == "acesp1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { + outProfile = options.rtSettings.ACESp1; outPr = "RT_acesp1"; } else { @@ -1784,6 +1783,8 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: cmsMLUsetASCII(copyright, "en", "US", "No copyright Rawtherapee"); cmsWriteTag(outputProfile, cmsSigCopyrightTag, copyright); cmsMLUfree(copyright); + + } cmsMLU *descrip = cmsMLUalloc(NULL, 1); @@ -1802,8 +1803,14 @@ cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams: cmsMLUsetASCII(MfgDesc, "en", "US", manufacturer.c_str()); cmsWriteTag(outputProfile, cmsSigDeviceMfgDescTag, MfgDesc); cmsMLUfree(MfgDesc); + /* + cmsCIEXYZ *red = static_cast(cmsReadTag(outputProfile, cmsSigRedMatrixColumnTag)); + cmsCIEXYZ *green = static_cast(cmsReadTag(outputProfile, cmsSigGreenMatrixColumnTag)); + cmsCIEXYZ *blue = static_cast(cmsReadTag(outputProfile, cmsSigBlueMatrixColumnTag)); + printf("rx=%f gx=%f bx=%f ry=%f gy=%f by=%f rz=%f gz=%f bz=%f\n", red->X, green->X, blue->X, red->Y, green->Y, blue->Y, red->Z, green->Z, blue->Z); + */ - + if (icm.wprofile == "v2" || icm.wprofile == "v4") { cmsSaveProfileToFile(outputProfile, outPro.c_str()); diff --git a/rtengine/settings.h b/rtengine/settings.h index e103a6d24..6859ebcac 100644 --- a/rtengine/settings.h +++ b/rtengine/settings.h @@ -61,7 +61,8 @@ public: Glib::ustring srgb; // default name of SRGB space profile Glib::ustring srgb10; // default name of SRGB space profile Glib::ustring rec2020; // default name of rec2020 - Glib::ustring ACESc; // default name of ACESc + Glib::ustring ACESp0; // default name of ACES P0 + Glib::ustring ACESp1; // default name of ACES P1 bool gamutICC; // no longer used bool gamutLch; diff --git a/rtgui/options.cc b/rtgui/options.cc index 0f5a61443..c58357287 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -541,7 +541,8 @@ void Options::setDefaults() rtSettings.beta = "BetaRGB"; rtSettings.best = "BestRGB"; rtSettings.rec2020 = "RT_Rec2020-V2-srgbtrc"; - rtSettings.ACESc = "RT_ACES-V2-srgbtrc"; + rtSettings.ACESp0 = "RT_ACES-V2-srgbtrc"; + rtSettings.ACESp1 = "RT_acesp1_V4"; rtSettings.verbose = false; rtSettings.gamutICC = true; rtSettings.gamutLch = true;