From c5c04769e4e55729d5d7bf8a2612df3554fdff53 Mon Sep 17 00:00:00 2001 From: "U-PC-BUREAU\\jacques" Date: Sun, 11 Nov 2018 14:34:45 +0100 Subject: [PATCH] Improvments to ICC profile creator --- rtdata/iccprofiles/output/RTv2_Medium.icc | Bin 25508 -> 884 bytes rtdata/iccprofiles/output/RTv2_sRGB.icc | Bin 25504 -> 25452 bytes rtdata/iccprofiles/output/RTv4_Medium.icc | Bin 764 -> 680 bytes rtdata/iccprofiles/output/RTv4_sRGB.icc | Bin 760 -> 752 bytes rtgui/iccprofilecreator.cc | 396 ++++++++++++++++------ rtgui/iccprofilecreator.h | 2 +- rtgui/preferences.cc | 9 +- 7 files changed, 306 insertions(+), 101 deletions(-) diff --git a/rtdata/iccprofiles/output/RTv2_Medium.icc b/rtdata/iccprofiles/output/RTv2_Medium.icc index 59bdf67067282c5abe83384f4e41303e901d0cdb..cc1f37d1d9fd8f5a9c01eb00d7a96e77cd5760e0 100644 GIT binary patch literal 884 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 diff --git a/rtdata/iccprofiles/output/RTv2_sRGB.icc b/rtdata/iccprofiles/output/RTv2_sRGB.icc index 5efc365f8e881f8b9e132538a324d16652203cf3..e311e5d71e11af3f0cd72c78ca2f23bbc23fff16 100644 GIT binary patch literal 25452 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 diff --git a/rtdata/iccprofiles/output/RTv4_Medium.icc b/rtdata/iccprofiles/output/RTv4_Medium.icc index d63965fa5bb813edae05a98c4512877cb41eb796..5e57952e33a1bf2275da225f3a03dbb594d5650f 100644 GIT binary patch delta 267 zcmeyvx`I`Qfq`j7PI7KBiva^eZeB@Ikh_yYL}Zi#`y&Q!Amn8bXW&UpE-vs5b_QkVb_4z$r(ktKs8H%Y?YMUJfQhZOeZD_FiLBx z0EJ{2d>K+1QW!EBN*Qt);u#be(iv0TOcr32mX!bs r$uI;lxHC90C@>^3lrm&8*l=mP1y$pMU?881xEVN!>aQu#N^@v-(a_p ziHTAZ-8}1Uk_(DT7#J7>7#J9$%1a7B>@`5PNODGE3XpvO$kr(W8Ukd$0f{Gp*-Stt zgGf4rEdpW}g#$ax#B^k`0Hd_3 z0#HbXp_n0v!JWa0A)Y~jA)UdN!H7YR!34-I2C@wqj3;|Aer7yB*@j6SPWCXR000X! BG&TSL diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index 8d6e09553..f76211bd4 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -41,7 +41,7 @@ extern const Settings* settings; const char* sTRCPreset[] = {"BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9", "Lab_g3.0s9.03296"}; //gamma free ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) - : Gtk::Dialog (M ("MAIN_BUTTON_ICCPROFCREATOR"), *rtwindow, true) + : Gtk::Dialog(M("MAIN_BUTTON_ICCPROFCREATOR"), *rtwindow, true) , primariesPreset(options.ICCPC_primariesPreset) , redPrimaryX(options.ICCPC_redPrimaryX) , redPrimaryY(options.ICCPC_redPrimaryY) @@ -141,12 +141,15 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) setExpandAlignProperties(trcPresets, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); std::vector outputTRCPresets; outputTRCPresets.push_back(M("ICCPROFCREATOR_CUSTOM")); + for (unsigned int i = 0; i < sizeof(sTRCPreset) / sizeof(sTRCPreset[0]); i++) { outputTRCPresets.push_back(sTRCPreset[i]); } + for (size_t i = 0; i < outputTRCPresets.size(); i++) { trcPresets->append(outputTRCPresets[i]); } + mainGrid->attach(*trcPresets, 1, 2, 1, 1); //--------------------------------- sliders gampos and slpos @@ -157,6 +160,7 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) if (aGamma->delay < options.adjusterMaxDelay) { aGamma->delay = options.adjusterMaxDelay; } + aGamma->show(); mainGrid->attach(*aGamma, 1, 3, 1, 1); //gamma @@ -166,6 +170,7 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) if (aSlope->delay < options.adjusterMaxDelay) { aSlope->delay = options.adjusterMaxDelay; } + aSlope->show(); mainGrid->attach(*aSlope, 1, 4, 1, 1); //slope @@ -222,10 +227,10 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) setExpandAlignProperties(eCopyright, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); copygrid->attach(*eCopyright, 0, 0, 1, 1); resetCopyright = Gtk::manage(new Gtk::Button()); - resetCopyright->add (*Gtk::manage (new RTImage ("undo-small.png", "redo-small.png"))); + resetCopyright->add(*Gtk::manage(new RTImage("undo-small.png", "redo-small.png"))); setExpandAlignProperties(resetCopyright, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); - resetCopyright->set_relief (Gtk::RELIEF_NONE); - resetCopyright->set_tooltip_markup (M("ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP")); + resetCopyright->set_relief(Gtk::RELIEF_NONE); + resetCopyright->set_tooltip_markup(M("ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP")); resetCopyright->get_style_context()->add_class(GTK_STYLE_CLASS_FLAT); resetCopyright->set_can_focus(false); copygrid->attach(*resetCopyright, 1, 0, 1, 1); @@ -273,6 +278,7 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) } trcPresets->set_active(0); + if (gammaPreset != "Custom") { trcPresets->set_active_text(gammaPreset); } @@ -309,6 +315,7 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) } iccVersion->set_active(0); + if (profileVersion == "v2") { iccVersion->set_active(1); } @@ -319,17 +326,17 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow) //--------------- Action area button - Gtk::Button* save = Gtk::manage (new Gtk::Button (M ("GENERAL_SAVE_AS"))); - save->signal_clicked().connect ( sigc::mem_fun (*this, &ICCProfileCreator::savePressed) ); - get_action_area()->pack_start (*save); + Gtk::Button* save = Gtk::manage(new Gtk::Button(M("GENERAL_SAVE_AS"))); + save->signal_clicked().connect(sigc::mem_fun(*this, &ICCProfileCreator::savePressed)); + get_action_area()->pack_start(*save); - Gtk::Button* close = Gtk::manage (new Gtk::Button (M ("GENERAL_CLOSE"))); - close->signal_clicked().connect ( sigc::mem_fun (*this, &ICCProfileCreator::closePressed) ); - get_action_area()->pack_start (*close); + Gtk::Button* close = Gtk::manage(new Gtk::Button(M("GENERAL_CLOSE"))); + close->signal_clicked().connect(sigc::mem_fun(*this, &ICCProfileCreator::closePressed)); + get_action_area()->pack_start(*close); //--------------- Show childrens - show_all_children (); + show_all_children(); //--------------- Connecting the signals @@ -366,9 +373,8 @@ void ICCProfileCreator::updateICCVersion() void ICCProfileCreator::adjusterChanged(Adjuster* a, double newval) { if (a == aPrimariesRedX || a == aPrimariesRedY || - a == aPrimariesGreenX || a == aPrimariesGreenY || - a == aPrimariesBlueX || a == aPrimariesBlueY) - { + a == aPrimariesGreenX || a == aPrimariesGreenY || + a == aPrimariesBlueX || a == aPrimariesBlueY) { if (primaries->get_active_row_number() > 0) { ConnectionBlocker blocker(primariesconn); primaries->set_active(0); @@ -401,6 +407,7 @@ void ICCProfileCreator::primariesChanged() aPrimariesBlueX->setValue(p[4]); aPrimariesBlueY->setValue(p[5]); } + updateICCVersion(); } @@ -497,6 +504,7 @@ Glib::ustring ICCProfileCreator::getPrimariesPresetName(const Glib::ustring &pre void ICCProfileCreator::getPrimaries(const Glib::ustring &preset, float *p, ColorTemp &temp) { temp = ColorTemp::D50; + if (preset == "Widegamut") { p[0] = 0.7350; //Widegamut primaries p[1] = 0.2650; @@ -595,9 +603,11 @@ void ICCProfileCreator::getPrimaries(const Glib::ustring &preset, float *p, Colo Glib::ustring ICCProfileCreator::getGammaPresetName(const Glib::ustring &preset) { Glib::ustring name(trcPresets->get_active_text()); + if (name == M("ICCPROFCREATOR_CUSTOM")) { name = "Custom"; } + return name; } @@ -646,6 +656,8 @@ void ICCProfileCreator::onResetCopyright() void ICCProfileCreator::savePressed() { cmsHPROFILE newProfile = nullptr; + cmsHPROFILE profile_v2_except = nullptr; + Glib::ustring sNewProfile; Glib::ustring sPrimariesPreset; Glib::ustring sGammaPreset; @@ -653,47 +665,57 @@ void ICCProfileCreator::savePressed() storeValues(); // -------------------------------------------- Compute the default file name + // -----------------setmedia white point for monitor profile sRGB or AdobeRGB in case of profile used for monitor--------------------- + //instead of calculations made by LCMS..small differences + + v2except = (profileVersion == "v2" && (primariesPreset == "sRGB" || primariesPreset == "Adobe") && illuminant == "DEF"); //necessary for V2 profile - if (primariesPreset == "ACES-AP0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { - sNewProfile = options.rtSettings.ACESp0; - sPrimariesPreset = "ACES-AP0"; - } else if (primariesPreset == "ACES-AP1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { - sNewProfile = options.rtSettings.ACESp1; - sPrimariesPreset = "ACES-AP1"; - } else if (primariesPreset == "Adobe" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { - sNewProfile = options.rtSettings.adobe; - sPrimariesPreset = "Medium"; - } else if (primariesPreset == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto)) { - sNewProfile = options.rtSettings.prophoto; - sPrimariesPreset = "Large"; - } else if (primariesPreset == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { - sNewProfile = options.rtSettings.rec2020; - sPrimariesPreset = "Rec2020"; - } else if (primariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb)) { - sNewProfile = options.rtSettings.srgb; - sPrimariesPreset = "sRGB"; - } else if (primariesPreset == "Widegamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { - sNewProfile = options.rtSettings.widegamut; - sPrimariesPreset = "Wide"; - } else if (primariesPreset == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { - sNewProfile = options.rtSettings.best; - sPrimariesPreset = "Best"; - } else if (primariesPreset == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { - sNewProfile = options.rtSettings.beta; - sPrimariesPreset = "Beta"; - } else if (primariesPreset == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { - sNewProfile = options.rtSettings.bruce; - sPrimariesPreset = "Bruce"; - } else if (primariesPreset == "custom") { - sNewProfile = options.rtSettings.srgb; - sPrimariesPreset = "Custom"; - } else { - // Should not occurs - if (rtengine::settings->verbose) { - printf("\"%s\": unknown working profile! - use LCMS2 substitution\n", primariesPreset.c_str()); + + if (!v2except) { + if (primariesPreset == "ACES-AP0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) { + sNewProfile = options.rtSettings.ACESp0; + sPrimariesPreset = "ACES-AP0"; + } else if (primariesPreset == "ACES-AP1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) { + sNewProfile = options.rtSettings.ACESp1; + sPrimariesPreset = "ACES-AP1"; + } else if (primariesPreset == "Adobe" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) { + sNewProfile = options.rtSettings.adobe; + sPrimariesPreset = "Medium"; + } else if (primariesPreset == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto)) { + sNewProfile = options.rtSettings.prophoto; + sPrimariesPreset = "Large"; + } else if (primariesPreset == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) { + sNewProfile = options.rtSettings.rec2020; + sPrimariesPreset = "Rec2020"; + } else if (primariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb)) { + sNewProfile = options.rtSettings.srgb; + sPrimariesPreset = "sRGB"; + } else if (primariesPreset == "Widegamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) { + sNewProfile = options.rtSettings.widegamut; + sPrimariesPreset = "Wide"; + } else if (primariesPreset == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { + sNewProfile = options.rtSettings.best; + sPrimariesPreset = "Best"; + } else if (primariesPreset == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { + sNewProfile = options.rtSettings.beta; + sPrimariesPreset = "Beta"; + } else if (primariesPreset == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) { + sNewProfile = options.rtSettings.bruce; + sPrimariesPreset = "Bruce"; + } else if (primariesPreset == "custom") { + sNewProfile = options.rtSettings.srgb; + sPrimariesPreset = "Custom"; + } else { + // Should not occurs + if (rtengine::settings->verbose) { + printf("\"%s\": unknown working profile! - use LCMS2 substitution\n", primariesPreset.c_str()); + } + + return; } - return; + } else { + sNewProfile = "RTv2_Beta"; } //begin adaptation rTRC gTRC bTRC @@ -702,16 +724,23 @@ void ICCProfileCreator::savePressed() printf("Output Gamma - profile Primaries as RT profile: \"%s\"\n", sNewProfile.c_str()); } - newProfile = rtengine::ICCStore::getInstance()->getProfile(sNewProfile); //get output profile + if (!v2except) { + newProfile = rtengine::ICCStore::getInstance()->getProfile(sNewProfile); //get output profile + } else { + profile_v2_except = rtengine::ICCStore::getInstance()->getProfile(sNewProfile); //get output profile - if (newProfile == nullptr) { - - if (rtengine::settings->verbose) { - printf("\"%s\" ICC output profile not found!\n", sNewProfile.c_str()); - } - return; } + /* + if (newProfile == nullptr ) { + + if (rtengine::settings->verbose) { + printf("\"%s\" ICC output profile not found!\n", sNewProfile.c_str()); + } + + return; + } + */ //change desc Tag , to "free gamma", or "BT709", etc. Glib::ustring fName; Glib::ustring sPrimariesAndIlluminant; @@ -719,6 +748,7 @@ void ICCProfileCreator::savePressed() double presetSlope = 12.92310; const double eps = 0.000000001; // not divide by zero getGamma(gammaPreset, presetGamma, presetSlope); + if (gammaPreset == "High_g1.3_s3.35") { sGammaPreset = "High_g=1.3_s=3.35"; ga[0] = 1.3 ; //for high dynamic images @@ -786,17 +816,18 @@ void ICCProfileCreator::savePressed() ga[4] = g_a[3] * ts; //printf("g_a.gamma0=%f g_a.gamma1=%f g_a.gamma2=%f g_a.gamma3=%f g_a.gamma4=%f\n", g_a.gamma0,g_a.gamma1,g_a.gamma2,g_a.gamma3,g_a.gamma4); ga[0] = gamma; - ga[1] = 1. /(1.0 + g_a[4]); - ga[2] = g_a[4] /(1.0 + g_a[4]); + ga[1] = 1. / (1.0 + g_a[4]); + ga[2] = g_a[4] / (1.0 + g_a[4]); ga[3] = 1. / slope2; //printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", ga[0],ga[1],ga[2],ga[3],ga[4]); sGammaPreset = Glib::ustring::compose("g%1_s%2", - Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), gamma), - Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), slope)); + Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), gamma), + Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), slope)); presetGamma = gamma; presetSlope = slope; } + ga[5] = 0.0; ga[6] = 0.0; @@ -804,8 +835,7 @@ void ICCProfileCreator::savePressed() sPrimariesAndIlluminant = sPrimariesPreset; if (profileVersion == "v4" && illuminant != "DEF") { - sPrimariesPreset += "-" + illuminant; - // printf("outpr=%s \n",outPr.c_str()); + sPrimariesPreset += "-" + illuminant; } Glib::ustring profileDesc; @@ -815,16 +845,17 @@ void ICCProfileCreator::savePressed() Glib::ustring sSlope; if (gammaPreset == "Custom") { - sGamma = Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), gamma); - sSlope = Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), slope); + sGamma = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), gamma); + sSlope = Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), slope); fName = Glib::ustring::compose("RT%1_%2_g%3_s%4.icc", profileVersion, sPrimariesAndIlluminant, sGamma, sSlope); profileDesc = sPrimariesPreset; } else { - sGamma = Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), presetGamma); - sSlope = Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), presetSlope); + sGamma = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), presetGamma); + sSlope = Glib::ustring::format(std::setw(6), std::fixed, std::setprecision(5), presetSlope); fName = Glib::ustring::compose("RT%1_%2_%3.icc", profileVersion, sPrimariesAndIlluminant, sGammaPreset); profileDesc == sPrimariesPreset + sGammaPreset; } + sGammaSlopeParam = Glib::ustring::compose("g%1s%2!", sGamma, sSlope); sGammaSlopeDesc = Glib::ustring::compose("g=%1 s=%2", sGamma, sSlope); @@ -876,12 +907,13 @@ void ICCProfileCreator::savePressed() } while (1); // --------------- main tags ------------------ - - if (profileVersion == "v4") { - cmsSetProfileVersion(newProfile, 4.3); - } else { - cmsSetProfileVersion(newProfile, 2.0); - } + /* + if (profileVersion == "v4") { + cmsSetProfileVersion(newProfile, 4.3); + } else { + cmsSetProfileVersion(newProfile, 2.0); + } + */ //change float p[6]; //primaries @@ -897,8 +929,17 @@ void ICCProfileCreator::savePressed() {p[4], p[5], 1.0} // blue }; + + if (v2except) { + cmsSetDeviceClass(profile_v2_except, cmsSigDisplayClass); + cmsSetPCS(profile_v2_except, cmsSigXYZData); + cmsSetHeaderRenderingIntent(profile_v2_except, 0); + } + + if (profileVersion == "v4" && illuminant != "DEF") { double tempv4 = 5000.; + if (illuminant == "D41") { tempv4 = 4100.; } else if (illuminant == "D50") { @@ -914,9 +955,81 @@ void ICCProfileCreator::savePressed() } else if (illuminant == "stdA") { tempv4 = 5003.; } + cmsWhitePointFromTemp(&xyD, tempv4); } else { - cmsWhitePointFromTemp(&xyD, (double)temp); + if (v2except) { + + cmsCIExyY XYZ; + + { + // XYZ = {0.950486322, 1.0, 1.08902736};//White D65 point calculated from white point xy 0,312710 y 0,3290 + // XYZ = {0.95047, 1.0, 1.088830};//White D65 point from B.Lindbloom + XYZ = {0.95045471, 1.0, 1.08905029}; + } + cmsCIExyY blackpoint; + + { + blackpoint = {0., 0., 0.};//White D65 point from the sRGB.icm and AdobeRGB1998 profile specs + } + + cmsWriteTag(profile_v2_except, cmsSigMediaBlackPointTag, &blackpoint); + cmsWriteTag(profile_v2_except, cmsSigMediaWhitePointTag, &XYZ); + cmsCIExyY rt; + cmsCIExyY bt; + cmsCIExyY gt; + + if (primariesPreset == "sRGB") { + + //Matrix value from B.Lindbloom + /* + rt = {0.4360747, 0.2225045, 0.0139322}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.1430804, 0.0606169, 0.7141733}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.3850649, 0.7168786, 0.0971045}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + */ + { + //Matrix value from spec Adobe + rt = {0.43607, 0.22249, 0.01392}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.14307, 0.06061, 0.71410}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.38515, 0.71687, 0.09708}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + + } + + } + + if (primariesPreset == "Adobe") { + { + //B.Lindbloom + /* + rt = {0.6097559, 0.3111242, 0.0194811}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.1492240, 0.0632197, 0.7448387}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.2052401, 0.6256560, 0.0608902}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + */ + } + { + //Adobe spec + rt = {0.60974, 0.31111, 0.01947}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + bt = {0.14919, 0.06322, 0.74457}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + gt = {0.20528, 0.62567, 0.06087}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + } + } + + } else { + cmsWhitePointFromTemp(&xyD, (double)temp); + } } if (illuminant == "stdA") { @@ -924,26 +1037,67 @@ void ICCProfileCreator::savePressed() } // Calculate output profile's rTRC gTRC bTRC + + cmsToneCurve* GammaTRC[3]; - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, ga); + + if (gammaPreset != "standard_g2.2" || gammaPreset != "standard_g1.8" || gammaPreset != "linear_g1.0") { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, ga); + } + + if (gammaPreset == "standard_g2.2") { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 2.19921875); + } + + if (gammaPreset == "standard_g1.8") { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 1.80078125); + } + + if (gammaPreset == "linear_g1.0") { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 1.0); + } + + if (profileVersion == "v4") { newProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); } - cmsWriteTag(newProfile, cmsSigRedTRCTag, GammaTRC[0]); - cmsWriteTag(newProfile, cmsSigGreenTRCTag, GammaTRC[1]); - cmsWriteTag(newProfile, cmsSigBlueTRCTag, GammaTRC[2]); + if (profileVersion == "v2") { + if (v2except) { + cmsSetProfileVersion(profile_v2_except, 2.2); + } else { + cmsSetProfileVersion(newProfile, 2.2); + } + } + + if (!v2except) { + cmsWriteTag(newProfile, cmsSigRedTRCTag, GammaTRC[0]); + cmsWriteTag(newProfile, cmsSigGreenTRCTag, GammaTRC[1]); + cmsWriteTag(newProfile, cmsSigBlueTRCTag, GammaTRC[2]); + } else { + cmsWriteTag(profile_v2_except, cmsSigRedTRCTag, GammaTRC[0]); + cmsWriteTag(profile_v2_except, cmsSigGreenTRCTag, GammaTRC[1]); + cmsWriteTag(profile_v2_except, cmsSigBlueTRCTag, GammaTRC[2]); + } // --------------- set dmnd tag ------------------ cmsMLU *dmnd; dmnd = cmsMLUalloc(nullptr, 1); cmsMLUsetASCII(dmnd, "en", "US", "RawTherapee"); - cmsWriteTag(newProfile, cmsSigDeviceMfgDescTag, dmnd); + + if (!v2except) { + cmsWriteTag(newProfile, cmsSigDeviceMfgDescTag, dmnd); + } else { + cmsWriteTag(profile_v2_except, cmsSigDeviceMfgDescTag, dmnd); + } + cmsMLUfree(dmnd); - // --------------- set dmdd tag ------------------ + + +// --------------- set dmdd tag ------------------ if (profileVersion == "v2") { //write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile @@ -951,27 +1105,43 @@ void ICCProfileCreator::savePressed() wGammaSlopeParam << sGammaSlopeParam; cmsMLU *dmdd = cmsMLUalloc(nullptr, 1); + // Language code (2 letters code) : https://www.iso.org/obp/ui/ // Country code (2 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php if (sGammaSlopeParam.is_ascii()) { if (cmsMLUsetASCII(dmdd, "en", "US", sGammaSlopeParam.c_str())) { - if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, dmdd)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + if (!v2except) { + if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, dmdd)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigProfileDescriptionTag, dmdd)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } } } else if (cmsMLUsetWide(dmdd, "en", "US", wGammaSlopeParam.str().c_str())) { - if (!cmsWriteTag(newProfile, cmsSigDeviceModelDescTag, dmdd)) { - printf("Error: Can't write cmsSigDeviceModelDescTag!\n"); + if (!v2except) { + if (!cmsWriteTag(newProfile, cmsSigDeviceModelDescTag, dmdd)) { + printf("Error: Can't write cmsSigDeviceModelDescTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigDeviceModelDescTag, dmdd)) { + printf("Error: Can't write cmsSigDeviceModelDescTag!\n"); + } } } else { printf("Error: cmsMLUsetWide failed for dmdd \"%s\" !\n", sGammaSlopeParam.c_str()); } + cmsMLUfree(dmdd); } - // --------------- set desc tag ------------------ +// --------------- set desc tag ------------------ Glib::ustring sDescription; + if (!description.empty()) { if (cAppendParamsToDesc->get_active()) { sDescription = description + " / " + sGammaSlopeDesc; @@ -986,41 +1156,66 @@ void ICCProfileCreator::savePressed() } } - //write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile +//write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile std::wostringstream wDescription; wDescription << sDescription; cmsMLU *descMLU = cmsMLUalloc(nullptr, 1); - // Language code (2 letters code) : https://www.iso.org/obp/ui/ - // Country code (2 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php + +// Language code (2 letters code) : https://www.iso.org/obp/ui/ +// Country code (2 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php if (sDescription.is_ascii()) { if (cmsMLUsetASCII(descMLU, "en", "US", sDescription.c_str())) { - if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + if (!v2except) { + if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } } } } else if (cmsMLUsetWide(descMLU, "en", "US", wDescription.str().c_str())) { - if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { - printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + if (!v2except) { + + if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } } } else { printf("Error: cmsMLUsetWide failed for desc \"%s\" !\n", sDescription.c_str()); } + cmsMLUfree(descMLU); - // --------------- set cprt tag ------------------ +// --------------- set cprt tag ------------------ std::wostringstream wCopyright; wCopyright << copyright; cmsMLU *copyMLU = cmsMLUalloc(nullptr, 1); + if (cmsMLUsetWide(copyMLU, "en", "US", wCopyright.str().c_str())) { - if (!cmsWriteTag(newProfile, cmsSigCopyrightTag, copyMLU)) { - printf("Error: Can't write cmsSigCopyrightTag!\n"); + if (!v2except) { + + if (!cmsWriteTag(newProfile, cmsSigCopyrightTag, copyMLU)) { + printf("Error: Can't write cmsSigCopyrightTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigCopyrightTag, copyMLU)) { + printf("Error: Can't write cmsSigCopyrightTag!\n"); + } + } } else { printf("Error: cmsMLUsetWide failed for cprt \"%s\" !\n", copyright.c_str()); } + cmsMLUfree(copyMLU); @@ -1030,8 +1225,13 @@ void ICCProfileCreator::savePressed() cmsCIEXYZ *blueT = static_cast(cmsReadTag(newProfile, cmsSigBlueMatrixColumnTag)); printf("rx=%f gx=%f bx=%f ry=%f gy=%f by=%f rz=%f gz=%f bz=%f\n", redT->X, greenT->X, blueT->X, redT->Y, greenT->Y, blueT->Y, redT->Z, greenT->Z, blueT->Z); */ + if (!v2except) { + cmsSaveProfileToFile(newProfile, absoluteFName.c_str()); + } else { + printf("save except\n"); + cmsSaveProfileToFile(profile_v2_except, absoluteFName.c_str()); - cmsSaveProfileToFile(newProfile, absoluteFName.c_str()); + } cmsFreeToneCurve(GammaTRC[0]); } diff --git a/rtgui/iccprofilecreator.h b/rtgui/iccprofilecreator.h index 4ec73ff5c..e8de318d3 100644 --- a/rtgui/iccprofilecreator.h +++ b/rtgui/iccprofilecreator.h @@ -50,7 +50,7 @@ private: double gamma; double slope; bool appendParamsToDesc; - + bool v2except; Glib::ustring profileVersion; Glib::ustring illuminant; Glib::ustring description; diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index 147e6badd..1887bb7a5 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -769,8 +769,13 @@ Gtk::Widget* Preferences::getColorManPanel () const std::vector profiles = rtengine::ICCStore::getInstance ()->getProfiles (rtengine::ICCStore::ProfileType::MONITOR); for (const auto profile : profiles) { - if (profile.find ("file:") != 0) { - monProfile->append (profile); + if (profile.find("file:") != 0) { + std::string fileis_RTv4 = profile.substr(0, 4); + + if (fileis_RTv4 != "RTv4") { + // printf("pro=%s \n", profile.c_str()); + monProfile->append(profile); + } } }