From b97ed08987f7b1bec966db9e37ebd79637a9e2f0 Mon Sep 17 00:00:00 2001 From: Desmis Date: Fri, 29 Apr 2016 07:41:17 +0200 Subject: [PATCH 1/5] Add working profile Rec2020 --- rtengine/iccmatrices.h | 10 + rtengine/iccstore.cc | 52 ++-- rtengine/iplab2rgb.cc | 10 +- rtengine/settings.h | 1 + rtengine/simpleprocess.cc | 12 +- rtgui/options.cc | 564 +++++++++++++++++++------------------- 6 files changed, 349 insertions(+), 300 deletions(-) diff --git a/rtengine/iccmatrices.h b/rtengine/iccmatrices.h index 9e9682a73..62ac7f150 100644 --- a/rtengine/iccmatrices.h +++ b/rtengine/iccmatrices.h @@ -84,6 +84,16 @@ const double prophoto_xyz[3][3] = {{1.3459433, -0.2556075, -0.0511118}, {0.0000000, 0.0000000, 1.2118128} }; +const double xyz_rec2020[3][3] = {{0.636958, 0.144617, 0.168881}, + {0.262700, 0.677998, 0.059302}, + {0.0000000, 0.028073, 1.060985} +}; + +const double rec2020_xyz[3][3] = {{1.716651, -0.355671, -0.253366}, + { -0.666684, 1.616481, 0.015769}, + {0.017640, -0.042771, 0.942103} +}; + const double xyz_widegamut[3][3] = {{0.7161046, 0.1009296, 0.1471858}, {0.2581874, 0.7249378, 0.0168748}, {0.0000000, 0.0517813, 0.7734287} diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index cb5314489..66099199c 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -41,8 +41,9 @@ void loadProfiles (const Glib::ustring& dirName, std::map* profileNames, bool nameUpper, bool onlyRgb) { - if (dirName.empty ()) + if (dirName.empty ()) { return; + } try { @@ -52,23 +53,27 @@ void loadProfiles (const Glib::ustring& dirName, const Glib::ustring fileName = *entry; - if (fileName.size () < 4) + if (fileName.size () < 4) { continue; + } const Glib::ustring extension = fileName.substr (fileName.size () - 4).casefold (); - if (extension.compare (".icc") != 0 && extension.compare (".icm") != 0) + if (extension.compare (".icc") != 0 && extension.compare (".icm") != 0) { continue; + } const Glib::ustring filePath = Glib::build_filename (dirName, fileName); - if (!Glib::file_test (filePath, Glib::FILE_TEST_IS_REGULAR)) + if (!Glib::file_test (filePath, Glib::FILE_TEST_IS_REGULAR)) { continue; + } Glib::ustring name = fileName.substr (0, fileName.size() - 4); - if (nameUpper) + if (nameUpper) { name = name.uppercase (); + } if (profiles) { const rtengine::ProfileContent content (filePath); @@ -77,28 +82,31 @@ void loadProfiles (const Glib::ustring& dirName, if (profile && (!onlyRgb || cmsGetColorSpace (profile) == cmsSigRgbData)) { profiles->insert (std::make_pair (name, profile)); - if (profileContents) + if (profileContents) { profileContents->insert (std::make_pair (name, content)); + } } } - if (profileNames) + if (profileNames) { profileNames->insert (std::make_pair (name, filePath)); + } } - } - catch (Glib::Exception&) {} + } catch (Glib::Exception&) {} } inline void getSupportedIntent (cmsHPROFILE profile, cmsUInt32Number intent, cmsUInt32Number direction, std::uint8_t& result) { - if (cmsIsIntentSupported (profile, intent, direction)) + if (cmsIsIntentSupported (profile, intent, direction)) { result |= 1 << intent; + } } inline std::uint8_t getSupportedIntents (cmsHPROFILE profile, cmsUInt32Number direction) { - if (!profile) + if (!profile) { return 0; + } std::uint8_t result = 0; @@ -116,9 +124,9 @@ inline cmsHPROFILE createXYZProfile () return rtengine::ICCStore::createFromMatrix (mat, false, "XYZ"); } -const double (*wprofiles[])[3] = {xyz_sRGB, xyz_adobe, xyz_prophoto, xyz_widegamut, xyz_bruce, xyz_beta, xyz_best}; -const double (*iwprofiles[])[3] = {sRGB_xyz, adobe_xyz, prophoto_xyz, widegamut_xyz, bruce_xyz, beta_xyz, best_xyz}; -const char* wpnames[] = {"sRGB", "Adobe RGB", "ProPhoto", "WideGamut", "BruceRGB", "Beta RGB", "BestRGB"}; +const double (*wprofiles[])[3] = {xyz_sRGB, xyz_adobe, xyz_prophoto, xyz_widegamut, xyz_bruce, xyz_beta, xyz_best, xyz_rec2020}; +const double (*iwprofiles[])[3] = {sRGB_xyz, adobe_xyz, prophoto_xyz, widegamut_xyz, bruce_xyz, beta_xyz, best_xyz, rec2020_xyz}; +const char* wpnames[] = {"sRGB", "Adobe RGB", "ProPhoto", "WideGamut", "BruceRGB", "Beta RGB", "BestRGB", "Rec2020"}; const char* wpgamma[] = {"default", "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"}; //gamma free //default = gamma inside profile //BT709 g=2.22 s=4.5 sRGB g=2.4 s=12.92 @@ -163,8 +171,9 @@ std::vector ICCStore::getProfiles () const std::vector res; - for (ProfileMap::const_iterator profile = fileProfiles.begin (); profile != fileProfiles.end (); ++profile) + for (ProfileMap::const_iterator profile = fileProfiles.begin (); profile != fileProfiles.end (); ++profile) { res.push_back (profile->first); + } return res; } @@ -181,8 +190,9 @@ std::vector ICCStore::getProfilesFromDir (const Glib::ustring& di loadProfiles (profilesDir, &profiles, NULL, NULL, false, true); loadProfiles (dirName, &profiles, NULL, NULL, false, true); - for (ProfileMap::const_iterator profile = profiles.begin (); profile != profiles.end (); ++profile) + for (ProfileMap::const_iterator profile = profiles.begin (); profile != profiles.end (); ++profile) { res.push_back (profile->first); + } return res; } @@ -388,22 +398,25 @@ cmsHPROFILE ICCStore::getStdProfile (const Glib::ustring& name) const const ProfileMap::const_iterator r = fileStdProfiles.find (nameUpper); // return profile from store - if (r != fileStdProfiles.end ()) + if (r != fileStdProfiles.end ()) { return r->second; + } // profile is not yet in store const NameMap::const_iterator f = fileStdProfilesFileNames.find (nameUpper); // profile does not exist - if (f == fileStdProfilesFileNames.end ()) + if (f == fileStdProfilesFileNames.end ()) { return NULL; + } // but there exists one => load it const ProfileContent content (f->second); const cmsHPROFILE profile = content.toProfile (); - if (profile) + if (profile) { const_cast(fileStdProfiles).insert (std::make_pair (f->first, profile)); + } // profile is not valid or it is now stored => remove entry from fileStdProfilesFileNames const_cast(fileStdProfilesFileNames).erase (f); @@ -481,6 +494,7 @@ void ICCStore::findDefaultMonitorProfile () defaultMonitorProfile = Glib::ustring(profileName); defaultMonitorProfile = Glib::path_get_basename(defaultMonitorProfile); size_t pos = defaultMonitorProfile.rfind("."); + if (pos != Glib::ustring::npos) { defaultMonitorProfile = defaultMonitorProfile.substr(0, pos); } diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index 4510044aa..21e5ca794 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -429,6 +429,14 @@ Image16* ImProcFunctions::lab2rgb16b (LabImage* lab, int cx, int cy, int cw, int p5 = 0.1300; p6 = 0.0350; select_temp = 1; + } else if (profi == "Rec2020") { + p1 = 0.7080; // Rec2020 primaries + p2 = 0.2920; + p3 = 0.1700; + p4 = 0.7970; + p5 = 0.1310; + p6 = 0.0460; + select_temp = 2; } else { p1 = 0.7347; //ProPhoto and default primaries p2 = 0.2653; @@ -511,7 +519,7 @@ Image16* ImProcFunctions::lab2rgb16b (LabImage* lab, int cx, int cy, int cw, int if(select_temp == 1) { t50 = 5003; // for Widegamut, Prophoto Best, Beta D50 } else if (select_temp == 2) { - t50 = 6504; // for sRGB, AdobeRGB, Bruce D65 + t50 = 6504; // for sRGB, AdobeRGB, Bruce Rec2020 D65 } cmsCIExyY xyD; diff --git a/rtengine/settings.h b/rtengine/settings.h index 3e9c9d38a..4053a547f 100644 --- a/rtengine/settings.h +++ b/rtengine/settings.h @@ -56,6 +56,7 @@ public: Glib::ustring bruce; // default name of Bruce 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 bool gamutICC; // no longer used bool gamutLch; diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index c03addb42..daa0a45e8 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -293,6 +293,8 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p adjustr = 1.f / 1.3f; } else if (params.icm.working == "WideGamut") { adjustr = 1.f / 1.1f; + } else if (params.icm.working == "Rec2020") { + adjustr = 1.f / 1.1f; } else if (params.icm.working == "Beta RGB") { adjustr = 1.f / 1.2f; } else if (params.icm.working == "BestRGB") { @@ -532,6 +534,8 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p adjustr = 1.f / 1.3f; } else if (params.icm.working == "WideGamut") { adjustr = 1.f / 1.1f; + } else if (params.icm.working == "Rec2020") { + adjustr = 1.f / 1.1f; } else if (params.icm.working == "Beta RGB") { adjustr = 1.f / 1.2f; } else if (params.icm.working == "BestRGB") { @@ -1177,11 +1181,11 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p useLCMS = false; bool pro = false; Glib::ustring chpro, outProfile; - bool present_space[9] = {false, false, false, false, false, false, false, false, false}; + bool present_space[10] = {false, false, false, false, false, false, false, false, false, false}; std::vector opnames = iccStore->getProfiles (); //test if files are in system - for (int j = 0; j < 9; j++) { + for (int j = 0; j < 10; j++) { // one can modify "option" [Color Management] to adapt the profile's name if they are different for windows, MacOS, Linux ?? // some of them are actually provided by RT, thanks to Jacques Desmis if (j == 0) { @@ -1202,6 +1206,8 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p chpro = options.rtSettings.srgb10; //gamma 1.0 } else if(j == 8) { chpro = options.rtSettings.prophoto10; //gamma 1.0 + } else if(j == 9) { + chpro = options.rtSettings.rec2020; } for (unsigned int i = 0; i < opnames.size(); i++) { @@ -1241,6 +1247,8 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p outProfile = options.rtSettings.srgb10; } else if (params.icm.working == "ProPhoto" && present_space[8] && pro) { outProfile = options.rtSettings.prophoto10; + } else if (params.icm.working == "Rec2020" && present_space[9]) { + outProfile = options.rtSettings.rec2020; } else { // Should not occurs if (settings->verbose) { diff --git a/rtgui/options.cc b/rtgui/options.cc index 88b795687..e723361be 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -644,6 +644,7 @@ void Options::setDefaults () rtSettings.bruce = "Bruce"; rtSettings.beta = "BetaRGB"; rtSettings.best = "BestRGB"; + rtSettings.rec2020 = "Rec2020"; rtSettings.verbose = false; rtSettings.gamutICC = true; rtSettings.gamutLch = true; @@ -1542,6 +1543,10 @@ int Options::readFromFile (Glib::ustring fname) rtSettings.best = keyFile.get_string("Color Management", "Best"); } + if( keyFile.has_key ("Color Management", "Rec2020")) { + rtSettings.rec2020 = keyFile.get_string("Color Management", "Rec2020"); + } + if( keyFile.has_key ("Color Management", "Bruce")) { rtSettings.bruce = keyFile.get_string("Color Management", "Bruce"); } @@ -1776,11 +1781,13 @@ int Options::readFromFile (Glib::ustring fname) if (options.rtSettings.verbose) { printf("Options::readFromFile / Error code %d while reading values from \"%s\":\n%s\n", err.code(), fname.c_str(), err.what().c_str()); } + setDefaults (); } catch (...) { if (options.rtSettings.verbose) { printf("Options::readFromFile / Unknown exception while trying to load \"%s\"!\n", fname.c_str()); } + setDefaults (); } @@ -1810,309 +1817,310 @@ int Options::saveToFile (Glib::ustring fname) try { - Glib::KeyFile keyFile; + Glib::KeyFile keyFile; - keyFile.set_boolean ("General", "TabbedEditor", tabbedUI); - keyFile.set_boolean ("General", "StoreLastProfile", savesParamsAtExit); + keyFile.set_boolean ("General", "TabbedEditor", tabbedUI); + keyFile.set_boolean ("General", "StoreLastProfile", savesParamsAtExit); - if (startupDir == STARTUPDIR_HOME) { - keyFile.set_string ("General", "StartupDirectory", "home"); - } else if (startupDir == STARTUPDIR_CURRENT) { - keyFile.set_string ("General", "StartupDirectory", "current"); - } else if (startupDir == STARTUPDIR_CUSTOM) { - keyFile.set_string ("General", "StartupDirectory", "custom"); - } else if (startupDir == STARTUPDIR_LAST) { - keyFile.set_string ("General", "StartupDirectory", "last"); - } - - keyFile.set_string ("General", "StartupPath", startupPath); - keyFile.set_string ("General", "DateFormat", dateFormat); - keyFile.set_integer ("General", "AdjusterMinDelay", adjusterMinDelay); - keyFile.set_integer ("General", "AdjusterMaxDelay", adjusterMaxDelay); - keyFile.set_boolean ("General", "MultiUser", multiUser); - keyFile.set_string ("General", "Language", language); - keyFile.set_boolean ("General", "LanguageAutoDetect", languageAutoDetect); - keyFile.set_string ("General", "Theme", theme); - keyFile.set_boolean ("General", "SlimUI", slimUI); - keyFile.set_boolean ("General", "UseSystemTheme", useSystemTheme); - keyFile.set_string ("General", "Version", VERSION); - keyFile.set_string ("General", "DarkFramesPath", rtSettings.darkFramesPath); - keyFile.set_string ("General", "FlatFieldsPath", rtSettings.flatFieldsPath); - keyFile.set_boolean ("General", "Verbose", rtSettings.verbose); - keyFile.set_double ("General", "BotLeft", rtSettings.bot_left); - keyFile.set_double ("General", "TopLeft", rtSettings.top_left); - keyFile.set_double ("General", "TopRight", rtSettings.top_right); - keyFile.set_double ("General", "BotRight", rtSettings.bot_right); - keyFile.set_double ("General", "EDdetec", rtSettings.ed_detec); - keyFile.set_double ("General", "EDdetecStr", rtSettings.ed_detecStr); - keyFile.set_double ("General", "EDLow", rtSettings.ed_low); - keyFile.set_double ("General", "EDLipinfl", rtSettings.ed_lipinfl); - keyFile.set_double ("General", "EDLipampl", rtSettings.ed_lipampl); - - - keyFile.set_integer ("External Editor", "EditorKind", editorToSendTo); - keyFile.set_string ("External Editor", "GimpDir", gimpDir); - keyFile.set_string ("External Editor", "PhotoshopDir", psDir); - keyFile.set_string ("External Editor", "CustomEditor", customEditorProg); - - keyFile.set_boolean ("File Browser", "BrowseOnlyRaw", fbOnlyRaw); - keyFile.set_boolean ("File Browser", "BrowserShowsDate", fbShowDateTime); - keyFile.set_boolean ("File Browser", "BrowserShowsExif", fbShowBasicExif); - keyFile.set_boolean ("File Browser", "BrowserShowsExpComp", fbShowExpComp); - keyFile.set_boolean ("File Browser", "BrowserShowsHidden", fbShowHidden); - keyFile.set_integer ("File Browser", "ThumbnailSize", thumbSize); - keyFile.set_integer ("File Browser", "ThumbnailSizeTab", thumbSizeTab); - keyFile.set_integer ("File Browser", "ThumbnailSizeQueue", thumbSizeQueue); - keyFile.set_integer ("File Browser", "SameThumbSize", sameThumbSize); - keyFile.set_integer ("File Browser", "MaxPreviewHeight", maxThumbnailHeight); - keyFile.set_integer ("File Browser", "MaxCacheEntries", maxCacheEntries); - Glib::ArrayHandle pext = parseExtensions; - keyFile.set_string_list ("File Browser", "ParseExtensions", pext); - Glib::ArrayHandle pextena = parseExtensionsEnabled; - keyFile.set_integer_list ("File Browser", "ParseExtensionsEnabled", pextena); - keyFile.set_integer ("File Browser", "ThumbnailArrangement", fbArrangement); - keyFile.set_integer ("File Browser", "ThumbnailInterpolation", thumbInterp); - keyFile.set_boolean ("File Browser", "LiveThumbnails", liveThumbnails); - Glib::ArrayHandle pfav = favoriteDirs; - keyFile.set_string_list ("File Browser", "FavoriteDirs", pfav); - Glib::ArrayHandle pren = renameTemplates; - keyFile.set_string_list ("File Browser", "RenameTemplates", pren); - keyFile.set_boolean ("File Browser", "RenameUseTemplates", renameUseTemplates); - Glib::ArrayHandle ptzoom = thumbnailZoomRatios; - keyFile.set_double_list ("File Browser", "ThumbnailZoomRatios", ptzoom); - keyFile.set_boolean ("File Browser", "OverlayedFileNames", overlayedFileNames); - keyFile.set_boolean ("File Browser", "FilmStripOverlayedFileNames", filmStripOverlayedFileNames); - keyFile.set_boolean ("File Browser", "ShowFileNames", showFileNames ); - keyFile.set_boolean ("File Browser", "FilmStripShowFileNames", filmStripShowFileNames ); - keyFile.set_boolean ("File Browser", "InternalThumbIfUntouched", internalThumbIfUntouched ); - keyFile.set_boolean ("File Browser", "menuGroupRank", menuGroupRank); - keyFile.set_boolean ("File Browser", "menuGroupLabel", menuGroupLabel); - keyFile.set_boolean ("File Browser", "menuGroupFileOperations", menuGroupFileOperations); - keyFile.set_boolean ("File Browser", "menuGroupProfileOperations", menuGroupProfileOperations); - keyFile.set_boolean ("File Browser", "menuGroupExtProg", menuGroupExtProg); - keyFile.set_integer ("File Browser", "MaxRecentFolders", maxRecentFolders); - { - std::vector temp; - temp.reserve(maxRecentFolders); - - for(unsigned int i = 0; i < std::min(recentFolders.size(), maxRecentFolders); i++) { - temp.push_back(recentFolders[i]); + if (startupDir == STARTUPDIR_HOME) { + keyFile.set_string ("General", "StartupDirectory", "home"); + } else if (startupDir == STARTUPDIR_CURRENT) { + keyFile.set_string ("General", "StartupDirectory", "current"); + } else if (startupDir == STARTUPDIR_CUSTOM) { + keyFile.set_string ("General", "StartupDirectory", "custom"); + } else if (startupDir == STARTUPDIR_LAST) { + keyFile.set_string ("General", "StartupDirectory", "last"); } - keyFile.set_string_list ("File Browser", "RecentFolders", temp); - } - keyFile.set_integer ("Clipping Indication", "HighlightThreshold", highlightThreshold); - keyFile.set_integer ("Clipping Indication", "ShadowThreshold", shadowThreshold); - keyFile.set_boolean ("Clipping Indication", "BlinkClipped", blinkClipped); + keyFile.set_string ("General", "StartupPath", startupPath); + keyFile.set_string ("General", "DateFormat", dateFormat); + keyFile.set_integer ("General", "AdjusterMinDelay", adjusterMinDelay); + keyFile.set_integer ("General", "AdjusterMaxDelay", adjusterMaxDelay); + keyFile.set_boolean ("General", "MultiUser", multiUser); + keyFile.set_string ("General", "Language", language); + keyFile.set_boolean ("General", "LanguageAutoDetect", languageAutoDetect); + keyFile.set_string ("General", "Theme", theme); + keyFile.set_boolean ("General", "SlimUI", slimUI); + keyFile.set_boolean ("General", "UseSystemTheme", useSystemTheme); + keyFile.set_string ("General", "Version", VERSION); + keyFile.set_string ("General", "DarkFramesPath", rtSettings.darkFramesPath); + keyFile.set_string ("General", "FlatFieldsPath", rtSettings.flatFieldsPath); + keyFile.set_boolean ("General", "Verbose", rtSettings.verbose); + keyFile.set_double ("General", "BotLeft", rtSettings.bot_left); + keyFile.set_double ("General", "TopLeft", rtSettings.top_left); + keyFile.set_double ("General", "TopRight", rtSettings.top_right); + keyFile.set_double ("General", "BotRight", rtSettings.bot_right); + keyFile.set_double ("General", "EDdetec", rtSettings.ed_detec); + keyFile.set_double ("General", "EDdetecStr", rtSettings.ed_detecStr); + keyFile.set_double ("General", "EDLow", rtSettings.ed_low); + keyFile.set_double ("General", "EDLipinfl", rtSettings.ed_lipinfl); + keyFile.set_double ("General", "EDLipampl", rtSettings.ed_lipampl); - keyFile.set_integer ("Performance", "RgbDenoiseThreadLimit", rgbDenoiseThreadLimit); - keyFile.set_double ("Performance", "NRauto", rtSettings.nrauto); - keyFile.set_double ("Performance", "NRautomax", rtSettings.nrautomax); - keyFile.set_double ("Performance", "NRhigh", rtSettings.nrhigh); - keyFile.set_integer ("Performance", "NRWavlevel", rtSettings.nrwavlevel); - keyFile.set_integer ("Performance", "LevNR", rtSettings.leveldnv); - keyFile.set_integer ("Performance", "LevNRTI", rtSettings.leveldnti); - keyFile.set_integer ("Performance", "LevNRAUT", rtSettings.leveldnaut); - keyFile.set_integer ("Performance", "LevNRLISS", rtSettings.leveldnliss); - keyFile.set_integer ("Performance", "SIMPLNRAUT", rtSettings.leveldnautsimpl); - keyFile.set_integer ("Performance", "ClutCacheSize", clutCacheSize); - keyFile.set_integer ("Performance", "MaxInspectorBuffers", maxInspectorBuffers); - keyFile.set_integer ("Performance", "PreviewDemosaicFromSidecar", prevdemo); - keyFile.set_boolean ("Performance", "Daubechies", rtSettings.daubech); - keyFile.set_boolean ("Performance", "SerializeTiffRead", serializeTiffRead); - keyFile.set_string ("Output", "Format", saveFormat.format); - keyFile.set_integer ("Output", "JpegQuality", saveFormat.jpegQuality); - keyFile.set_integer ("Output", "JpegSubSamp", saveFormat.jpegSubSamp); - keyFile.set_integer ("Output", "PngCompression", saveFormat.pngCompression); - keyFile.set_integer ("Output", "PngBps", saveFormat.pngBits); - keyFile.set_integer ("Output", "TiffBps", saveFormat.tiffBits); - keyFile.set_boolean ("Output", "TiffUncompressed", saveFormat.tiffUncompressed); - keyFile.set_boolean ("Output", "SaveProcParams", saveFormat.saveParams); + keyFile.set_integer ("External Editor", "EditorKind", editorToSendTo); + keyFile.set_string ("External Editor", "GimpDir", gimpDir); + keyFile.set_string ("External Editor", "PhotoshopDir", psDir); + keyFile.set_string ("External Editor", "CustomEditor", customEditorProg); - keyFile.set_string ("Output", "FormatBatch", saveFormatBatch.format); - keyFile.set_integer ("Output", "JpegQualityBatch", saveFormatBatch.jpegQuality); - keyFile.set_integer ("Output", "JpegSubSampBatch", saveFormatBatch.jpegSubSamp); - keyFile.set_integer ("Output", "PngCompressionBatch", saveFormatBatch.pngCompression); - keyFile.set_integer ("Output", "PngBpsBatch", saveFormatBatch.pngBits); - keyFile.set_integer ("Output", "TiffBpsBatch", saveFormatBatch.tiffBits); - keyFile.set_boolean ("Output", "TiffUncompressedBatch", saveFormatBatch.tiffUncompressed); - keyFile.set_boolean ("Output", "SaveProcParamsBatch", saveFormatBatch.saveParams); + keyFile.set_boolean ("File Browser", "BrowseOnlyRaw", fbOnlyRaw); + keyFile.set_boolean ("File Browser", "BrowserShowsDate", fbShowDateTime); + keyFile.set_boolean ("File Browser", "BrowserShowsExif", fbShowBasicExif); + keyFile.set_boolean ("File Browser", "BrowserShowsExpComp", fbShowExpComp); + keyFile.set_boolean ("File Browser", "BrowserShowsHidden", fbShowHidden); + keyFile.set_integer ("File Browser", "ThumbnailSize", thumbSize); + keyFile.set_integer ("File Browser", "ThumbnailSizeTab", thumbSizeTab); + keyFile.set_integer ("File Browser", "ThumbnailSizeQueue", thumbSizeQueue); + keyFile.set_integer ("File Browser", "SameThumbSize", sameThumbSize); + keyFile.set_integer ("File Browser", "MaxPreviewHeight", maxThumbnailHeight); + keyFile.set_integer ("File Browser", "MaxCacheEntries", maxCacheEntries); + Glib::ArrayHandle pext = parseExtensions; + keyFile.set_string_list ("File Browser", "ParseExtensions", pext); + Glib::ArrayHandle pextena = parseExtensionsEnabled; + keyFile.set_integer_list ("File Browser", "ParseExtensionsEnabled", pextena); + keyFile.set_integer ("File Browser", "ThumbnailArrangement", fbArrangement); + keyFile.set_integer ("File Browser", "ThumbnailInterpolation", thumbInterp); + keyFile.set_boolean ("File Browser", "LiveThumbnails", liveThumbnails); + Glib::ArrayHandle pfav = favoriteDirs; + keyFile.set_string_list ("File Browser", "FavoriteDirs", pfav); + Glib::ArrayHandle pren = renameTemplates; + keyFile.set_string_list ("File Browser", "RenameTemplates", pren); + keyFile.set_boolean ("File Browser", "RenameUseTemplates", renameUseTemplates); + Glib::ArrayHandle ptzoom = thumbnailZoomRatios; + keyFile.set_double_list ("File Browser", "ThumbnailZoomRatios", ptzoom); + keyFile.set_boolean ("File Browser", "OverlayedFileNames", overlayedFileNames); + keyFile.set_boolean ("File Browser", "FilmStripOverlayedFileNames", filmStripOverlayedFileNames); + keyFile.set_boolean ("File Browser", "ShowFileNames", showFileNames ); + keyFile.set_boolean ("File Browser", "FilmStripShowFileNames", filmStripShowFileNames ); + keyFile.set_boolean ("File Browser", "InternalThumbIfUntouched", internalThumbIfUntouched ); + keyFile.set_boolean ("File Browser", "menuGroupRank", menuGroupRank); + keyFile.set_boolean ("File Browser", "menuGroupLabel", menuGroupLabel); + keyFile.set_boolean ("File Browser", "menuGroupFileOperations", menuGroupFileOperations); + keyFile.set_boolean ("File Browser", "menuGroupProfileOperations", menuGroupProfileOperations); + keyFile.set_boolean ("File Browser", "menuGroupExtProg", menuGroupExtProg); + keyFile.set_integer ("File Browser", "MaxRecentFolders", maxRecentFolders); + { + std::vector temp; + temp.reserve(maxRecentFolders); - keyFile.set_string ("Output", "PathTemplate", savePathTemplate); - keyFile.set_string ("Output", "PathFolder", savePathFolder); - keyFile.set_boolean ("Output", "AutoSuffix", autoSuffix); - keyFile.set_boolean ("Output", "ForceFormatOpts", forceFormatOpts); - keyFile.set_integer ("Output", "SaveMethodNum", saveMethodNum); - keyFile.set_boolean ("Output", "UsePathTemplate", saveUsePathTemplate); - keyFile.set_string ("Output", "LastSaveAsPath", lastSaveAsPath); - keyFile.set_boolean ("Output", "OverwriteOutputFile", overwriteOutputFile); - keyFile.set_boolean ("Output", "TunnelMetaData", tunnelMetaData); + for(unsigned int i = 0; i < std::min(recentFolders.size(), maxRecentFolders); i++) { + temp.push_back(recentFolders[i]); + } - keyFile.set_string ("Profiles", "Directory", profilePath); - keyFile.set_boolean ("Profiles", "UseBundledProfiles", useBundledProfiles); - keyFile.set_string ("Profiles", "LoadSaveProfilePath", loadSaveProfilePath); - keyFile.set_string ("Profiles", "RawDefault", defProfRaw); - keyFile.set_string ("Profiles", "ImgDefault", defProfImg); - keyFile.set_boolean ("Profiles", "FilledProfile", filledProfile); - keyFile.set_boolean ("Profiles", "SaveParamsWithFile", saveParamsFile); - keyFile.set_boolean ("Profiles", "SaveParamsToCache", saveParamsCache); - keyFile.set_integer ("Profiles", "LoadParamsFromLocation", paramsLoadLocation); - keyFile.set_string ("Profiles", "CustomProfileBuilderPath", CPBPath); - keyFile.set_integer ("Profiles", "CustomProfileBuilderKeys", CPBKeys); + keyFile.set_string_list ("File Browser", "RecentFolders", temp); + } + keyFile.set_integer ("Clipping Indication", "HighlightThreshold", highlightThreshold); + keyFile.set_integer ("Clipping Indication", "ShadowThreshold", shadowThreshold); + keyFile.set_boolean ("Clipping Indication", "BlinkClipped", blinkClipped); - keyFile.set_string ("GUI", "Font", font); - keyFile.set_integer ("GUI", "WindowWidth", windowWidth); - keyFile.set_integer ("GUI", "WindowHeight", windowHeight); - keyFile.set_integer ("GUI", "WindowX", windowX); - keyFile.set_integer ("GUI", "WindowY", windowY); - keyFile.set_boolean ("GUI", "WindowMaximized", windowMaximized); - keyFile.set_integer ("GUI", "DetailWindowWidth", detailWindowWidth); - keyFile.set_integer ("GUI", "DetailWindowHeight", detailWindowHeight); - keyFile.set_integer ("GUI", "DirBrowserWidth", dirBrowserWidth); - keyFile.set_integer ("GUI", "DirBrowserHeight", dirBrowserHeight); - keyFile.set_integer ("GUI", "SortType", dirBrowserSortType); - keyFile.set_integer ("GUI", "PreferencesWidth", preferencesWidth); - keyFile.set_integer ("GUI", "PreferencesHeight", preferencesHeight); - keyFile.set_integer ("GUI", "SaveAsDialogWidth", saveAsDialogWidth); - keyFile.set_integer ("GUI", "SaveAsDialogHeight", saveAsDialogHeight); - keyFile.set_integer ("GUI", "ToolPanelWidth", toolPanelWidth); - keyFile.set_integer ("GUI", "BrowserToolPanelWidth", browserToolPanelWidth); - keyFile.set_integer ("GUI", "BrowserToolPanelHeight", browserToolPanelHeight); - keyFile.set_boolean ("GUI", "BrowserToolPanelOpened", browserToolPanelOpened); - keyFile.set_boolean ("GUI", "EditorFilmStripOpened", editorFilmStripOpened); - keyFile.set_boolean ("GUI", "BrowserDirPanelOpened", browserDirPanelOpened); - keyFile.set_integer ("GUI", "HistoryPanelWidth", historyPanelWidth); - keyFile.set_integer ("GUI", "LastPreviewScale", lastScale); - keyFile.set_integer ("GUI", "PanAccelFactor", panAccelFactor); - keyFile.set_boolean ("GUI", "RememberZoomAndPan", rememberZoomAndPan); - keyFile.set_integer ("GUI", "LastCropSize", lastCropSize); - keyFile.set_boolean ("GUI", "ShowHistory", showHistory); - keyFile.set_integer ("GUI", "ShowFilePanelState", showFilePanelState); - keyFile.set_boolean ("GUI", "ShowInfo", showInfo); - keyFile.set_boolean ("GUI", "MainNBVertical", mainNBVertical); - keyFile.set_boolean ("GUI", "ShowClippedHighlights", showClippedHighlights); - keyFile.set_boolean ("GUI", "ShowClippedShadows", showClippedShadows); - keyFile.set_integer ("GUI", "FrameColor", bgcolor); - keyFile.set_boolean ("GUI", "ProcessingQueueEnbled", procQueueEnabled); - Glib::ArrayHandle tpopen = tpOpen; - keyFile.set_integer_list ("GUI", "ToolPanelsExpanded", tpopen); - keyFile.set_integer ("GUI", "MultiDisplayMode", multiDisplayMode); - keyFile.set_double_list ("GUI", "CutOverlayBrush", cutOverlayBrush); - keyFile.set_double_list ("GUI", "NavGuideBrush", navGuideBrush); - keyFile.set_integer ("GUI", "HistogramPosition", histogramPosition); - keyFile.set_boolean ("GUI", "HistogramBar", histogramBar); - keyFile.set_boolean ("GUI", "HistogramFullMode", histogramFullMode); - keyFile.set_boolean ("GUI", "ShowFilmStripToolBar", showFilmStripToolBar); - keyFile.set_boolean ("GUI", "FileBrowserToolbarSingleRow", FileBrowserToolbarSingleRow); - keyFile.set_boolean ("GUI", "HideTPVScrollbar", hideTPVScrollbar); - keyFile.set_boolean ("GUI", "UseIconNoText", UseIconNoText); - keyFile.set_boolean ("GUI", "HistogramWorking", rtSettings.HistogramWorking); - keyFile.set_integer ("GUI", "CurveBBoxPosition", curvebboxpos); + keyFile.set_integer ("Performance", "RgbDenoiseThreadLimit", rgbDenoiseThreadLimit); + keyFile.set_double ("Performance", "NRauto", rtSettings.nrauto); + keyFile.set_double ("Performance", "NRautomax", rtSettings.nrautomax); + keyFile.set_double ("Performance", "NRhigh", rtSettings.nrhigh); + keyFile.set_integer ("Performance", "NRWavlevel", rtSettings.nrwavlevel); + keyFile.set_integer ("Performance", "LevNR", rtSettings.leveldnv); + keyFile.set_integer ("Performance", "LevNRTI", rtSettings.leveldnti); + keyFile.set_integer ("Performance", "LevNRAUT", rtSettings.leveldnaut); + keyFile.set_integer ("Performance", "LevNRLISS", rtSettings.leveldnliss); + keyFile.set_integer ("Performance", "SIMPLNRAUT", rtSettings.leveldnautsimpl); + keyFile.set_integer ("Performance", "ClutCacheSize", clutCacheSize); + keyFile.set_integer ("Performance", "MaxInspectorBuffers", maxInspectorBuffers); + keyFile.set_integer ("Performance", "PreviewDemosaicFromSidecar", prevdemo); + keyFile.set_boolean ("Performance", "Daubechies", rtSettings.daubech); + keyFile.set_boolean ("Performance", "SerializeTiffRead", serializeTiffRead); - //Glib::ArrayHandle crvopen = crvOpen; - //keyFile.set_integer_list ("GUI", "CurvePanelsExpanded", crvopen); + keyFile.set_string ("Output", "Format", saveFormat.format); + keyFile.set_integer ("Output", "JpegQuality", saveFormat.jpegQuality); + keyFile.set_integer ("Output", "JpegSubSamp", saveFormat.jpegSubSamp); + keyFile.set_integer ("Output", "PngCompression", saveFormat.pngCompression); + keyFile.set_integer ("Output", "PngBps", saveFormat.pngBits); + keyFile.set_integer ("Output", "TiffBps", saveFormat.tiffBits); + keyFile.set_boolean ("Output", "TiffUncompressed", saveFormat.tiffUncompressed); + keyFile.set_boolean ("Output", "SaveProcParams", saveFormat.saveParams); - keyFile.set_integer ("Crop Settings", "PPI", cropPPI); + keyFile.set_string ("Output", "FormatBatch", saveFormatBatch.format); + keyFile.set_integer ("Output", "JpegQualityBatch", saveFormatBatch.jpegQuality); + keyFile.set_integer ("Output", "JpegSubSampBatch", saveFormatBatch.jpegSubSamp); + keyFile.set_integer ("Output", "PngCompressionBatch", saveFormatBatch.pngCompression); + keyFile.set_integer ("Output", "PngBpsBatch", saveFormatBatch.pngBits); + keyFile.set_integer ("Output", "TiffBpsBatch", saveFormatBatch.tiffBits); + keyFile.set_boolean ("Output", "TiffUncompressedBatch", saveFormatBatch.tiffUncompressed); + keyFile.set_boolean ("Output", "SaveProcParamsBatch", saveFormatBatch.saveParams); - keyFile.set_string ("Color Management", "ICCDirectory", rtSettings.iccDirectory); - keyFile.set_string ("Color Management", "MonitorProfile", rtSettings.monitorProfile); - keyFile.set_boolean ("Color Management", "AutoMonitorProfile", rtSettings.autoMonitorProfile); - keyFile.set_boolean ("Color Management", "Autocielab", rtSettings.autocielab); - keyFile.set_boolean ("Color Management", "RGBcurvesLumamode_Gamut", rtSettings.rgbcurveslumamode_gamut); - keyFile.set_integer ("Color Management", "Intent", rtSettings.monitorIntent); - keyFile.set_integer ("Color Management", "view", rtSettings.viewingdevice); - keyFile.set_integer ("Color Management", "grey", rtSettings.viewingdevicegrey); - keyFile.set_integer ("Color Management", "greySc", rtSettings.viewinggreySc); + keyFile.set_string ("Output", "PathTemplate", savePathTemplate); + keyFile.set_string ("Output", "PathFolder", savePathFolder); + keyFile.set_boolean ("Output", "AutoSuffix", autoSuffix); + keyFile.set_boolean ("Output", "ForceFormatOpts", forceFormatOpts); + keyFile.set_integer ("Output", "SaveMethodNum", saveMethodNum); + keyFile.set_boolean ("Output", "UsePathTemplate", saveUsePathTemplate); + keyFile.set_string ("Output", "LastSaveAsPath", lastSaveAsPath); + keyFile.set_boolean ("Output", "OverwriteOutputFile", overwriteOutputFile); + keyFile.set_boolean ("Output", "TunnelMetaData", tunnelMetaData); - keyFile.set_string ("Color Management", "AdobeRGB", rtSettings.adobe); - keyFile.set_string ("Color Management", "ProPhoto", rtSettings.prophoto); - keyFile.set_string ("Color Management", "ProPhoto10", rtSettings.prophoto10); - keyFile.set_string ("Color Management", "WideGamut", rtSettings.widegamut); - keyFile.set_string ("Color Management", "sRGB", rtSettings.srgb); - keyFile.set_string ("Color Management", "sRGB10", rtSettings.srgb10); - keyFile.set_string ("Color Management", "Beta", rtSettings.beta); - keyFile.set_string ("Color Management", "Best", rtSettings.best); - keyFile.set_string ("Color Management", "Bruce", rtSettings.bruce); - keyFile.set_integer ("Color Management", "WhiteBalanceSpotSize", whiteBalanceSpotSize); - keyFile.set_boolean ("Color Management", "GamutICC", rtSettings.gamutICC); + keyFile.set_string ("Profiles", "Directory", profilePath); + keyFile.set_boolean ("Profiles", "UseBundledProfiles", useBundledProfiles); + keyFile.set_string ("Profiles", "LoadSaveProfilePath", loadSaveProfilePath); + keyFile.set_string ("Profiles", "RawDefault", defProfRaw); + keyFile.set_string ("Profiles", "ImgDefault", defProfImg); + keyFile.set_boolean ("Profiles", "FilledProfile", filledProfile); + keyFile.set_boolean ("Profiles", "SaveParamsWithFile", saveParamsFile); + keyFile.set_boolean ("Profiles", "SaveParamsToCache", saveParamsCache); + keyFile.set_integer ("Profiles", "LoadParamsFromLocation", paramsLoadLocation); + keyFile.set_string ("Profiles", "CustomProfileBuilderPath", CPBPath); + keyFile.set_integer ("Profiles", "CustomProfileBuilderKeys", CPBKeys); + + keyFile.set_string ("GUI", "Font", font); + keyFile.set_integer ("GUI", "WindowWidth", windowWidth); + keyFile.set_integer ("GUI", "WindowHeight", windowHeight); + keyFile.set_integer ("GUI", "WindowX", windowX); + keyFile.set_integer ("GUI", "WindowY", windowY); + keyFile.set_boolean ("GUI", "WindowMaximized", windowMaximized); + keyFile.set_integer ("GUI", "DetailWindowWidth", detailWindowWidth); + keyFile.set_integer ("GUI", "DetailWindowHeight", detailWindowHeight); + keyFile.set_integer ("GUI", "DirBrowserWidth", dirBrowserWidth); + keyFile.set_integer ("GUI", "DirBrowserHeight", dirBrowserHeight); + keyFile.set_integer ("GUI", "SortType", dirBrowserSortType); + keyFile.set_integer ("GUI", "PreferencesWidth", preferencesWidth); + keyFile.set_integer ("GUI", "PreferencesHeight", preferencesHeight); + keyFile.set_integer ("GUI", "SaveAsDialogWidth", saveAsDialogWidth); + keyFile.set_integer ("GUI", "SaveAsDialogHeight", saveAsDialogHeight); + keyFile.set_integer ("GUI", "ToolPanelWidth", toolPanelWidth); + keyFile.set_integer ("GUI", "BrowserToolPanelWidth", browserToolPanelWidth); + keyFile.set_integer ("GUI", "BrowserToolPanelHeight", browserToolPanelHeight); + keyFile.set_boolean ("GUI", "BrowserToolPanelOpened", browserToolPanelOpened); + keyFile.set_boolean ("GUI", "EditorFilmStripOpened", editorFilmStripOpened); + keyFile.set_boolean ("GUI", "BrowserDirPanelOpened", browserDirPanelOpened); + keyFile.set_integer ("GUI", "HistoryPanelWidth", historyPanelWidth); + keyFile.set_integer ("GUI", "LastPreviewScale", lastScale); + keyFile.set_integer ("GUI", "PanAccelFactor", panAccelFactor); + keyFile.set_boolean ("GUI", "RememberZoomAndPan", rememberZoomAndPan); + keyFile.set_integer ("GUI", "LastCropSize", lastCropSize); + keyFile.set_boolean ("GUI", "ShowHistory", showHistory); + keyFile.set_integer ("GUI", "ShowFilePanelState", showFilePanelState); + keyFile.set_boolean ("GUI", "ShowInfo", showInfo); + keyFile.set_boolean ("GUI", "MainNBVertical", mainNBVertical); + keyFile.set_boolean ("GUI", "ShowClippedHighlights", showClippedHighlights); + keyFile.set_boolean ("GUI", "ShowClippedShadows", showClippedShadows); + keyFile.set_integer ("GUI", "FrameColor", bgcolor); + keyFile.set_boolean ("GUI", "ProcessingQueueEnbled", procQueueEnabled); + Glib::ArrayHandle tpopen = tpOpen; + keyFile.set_integer_list ("GUI", "ToolPanelsExpanded", tpopen); + keyFile.set_integer ("GUI", "MultiDisplayMode", multiDisplayMode); + keyFile.set_double_list ("GUI", "CutOverlayBrush", cutOverlayBrush); + keyFile.set_double_list ("GUI", "NavGuideBrush", navGuideBrush); + keyFile.set_integer ("GUI", "HistogramPosition", histogramPosition); + keyFile.set_boolean ("GUI", "HistogramBar", histogramBar); + keyFile.set_boolean ("GUI", "HistogramFullMode", histogramFullMode); + keyFile.set_boolean ("GUI", "ShowFilmStripToolBar", showFilmStripToolBar); + keyFile.set_boolean ("GUI", "FileBrowserToolbarSingleRow", FileBrowserToolbarSingleRow); + keyFile.set_boolean ("GUI", "HideTPVScrollbar", hideTPVScrollbar); + keyFile.set_boolean ("GUI", "UseIconNoText", UseIconNoText); + keyFile.set_boolean ("GUI", "HistogramWorking", rtSettings.HistogramWorking); + keyFile.set_integer ("GUI", "CurveBBoxPosition", curvebboxpos); + + //Glib::ArrayHandle crvopen = crvOpen; + //keyFile.set_integer_list ("GUI", "CurvePanelsExpanded", crvopen); + + keyFile.set_integer ("Crop Settings", "PPI", cropPPI); + + keyFile.set_string ("Color Management", "ICCDirectory", rtSettings.iccDirectory); + keyFile.set_string ("Color Management", "MonitorProfile", rtSettings.monitorProfile); + keyFile.set_boolean ("Color Management", "AutoMonitorProfile", rtSettings.autoMonitorProfile); + keyFile.set_boolean ("Color Management", "Autocielab", rtSettings.autocielab); + keyFile.set_boolean ("Color Management", "RGBcurvesLumamode_Gamut", rtSettings.rgbcurveslumamode_gamut); + keyFile.set_integer ("Color Management", "Intent", rtSettings.monitorIntent); + keyFile.set_integer ("Color Management", "view", rtSettings.viewingdevice); + keyFile.set_integer ("Color Management", "grey", rtSettings.viewingdevicegrey); + keyFile.set_integer ("Color Management", "greySc", rtSettings.viewinggreySc); + + keyFile.set_string ("Color Management", "AdobeRGB", rtSettings.adobe); + keyFile.set_string ("Color Management", "ProPhoto", rtSettings.prophoto); + keyFile.set_string ("Color Management", "ProPhoto10", rtSettings.prophoto10); + keyFile.set_string ("Color Management", "WideGamut", rtSettings.widegamut); + keyFile.set_string ("Color Management", "sRGB", rtSettings.srgb); + keyFile.set_string ("Color Management", "sRGB10", rtSettings.srgb10); + keyFile.set_string ("Color Management", "Beta", rtSettings.beta); + keyFile.set_string ("Color Management", "Best", rtSettings.best); + keyFile.set_string ("Color Management", "Rec2020", rtSettings.rec2020); + keyFile.set_string ("Color Management", "Bruce", rtSettings.bruce); + keyFile.set_integer ("Color Management", "WhiteBalanceSpotSize", whiteBalanceSpotSize); + keyFile.set_boolean ("Color Management", "GamutICC", rtSettings.gamutICC); // keyFile.set_boolean ("Color Management", "BWcomplement", rtSettings.bw_complementary); - keyFile.set_boolean ("Color Management", "Ciecamfloat", rtSettings.ciecamfloat); - keyFile.set_boolean ("Color Management", "GamutLch", rtSettings.gamutLch); - keyFile.set_integer ("Color Management", "ProtectRed", rtSettings.protectred); - keyFile.set_integer ("Color Management", "Amountchroma", rtSettings.amchroma); - keyFile.set_double ("Color Management", "ProtectRedH", rtSettings.protectredh); - keyFile.set_integer ("Color Management", "CRI", rtSettings.CRI_color); - keyFile.set_integer ("Color Management", "DenoiseLabgamma", rtSettings.denoiselabgamma); + keyFile.set_boolean ("Color Management", "Ciecamfloat", rtSettings.ciecamfloat); + keyFile.set_boolean ("Color Management", "GamutLch", rtSettings.gamutLch); + keyFile.set_integer ("Color Management", "ProtectRed", rtSettings.protectred); + keyFile.set_integer ("Color Management", "Amountchroma", rtSettings.amchroma); + keyFile.set_double ("Color Management", "ProtectRedH", rtSettings.protectredh); + keyFile.set_integer ("Color Management", "CRI", rtSettings.CRI_color); + keyFile.set_integer ("Color Management", "DenoiseLabgamma", rtSettings.denoiselabgamma); // keyFile.set_boolean ("Color Management", "Ciebadpixgauss", rtSettings.ciebadpixgauss); - keyFile.set_double ("Color Management", "CBDLArtif", rtSettings.artifact_cbdl); - keyFile.set_double ("Color Management", "CBDLlevel0", rtSettings.level0_cbdl); - keyFile.set_double ("Color Management", "CBDLlevel123", rtSettings.level123_cbdl); + keyFile.set_double ("Color Management", "CBDLArtif", rtSettings.artifact_cbdl); + keyFile.set_double ("Color Management", "CBDLlevel0", rtSettings.level0_cbdl); + keyFile.set_double ("Color Management", "CBDLlevel123", rtSettings.level123_cbdl); // keyFile.set_double ("Color Management", "Colortoningab", rtSettings.colortoningab); // keyFile.set_double ("Color Management", "Decaction", rtSettings.decaction); - keyFile.set_string ("Color Management", "ClutsDirectory", clutsDir); + keyFile.set_string ("Color Management", "ClutsDirectory", clutsDir); - Glib::ArrayHandle bab = baBehav; - keyFile.set_integer_list ("Batch Processing", "AdjusterBehavior", bab); + Glib::ArrayHandle bab = baBehav; + keyFile.set_integer_list ("Batch Processing", "AdjusterBehavior", bab); - keyFile.set_boolean ("Sounds", "Enable", sndEnable); - keyFile.set_string ("Sounds", "BatchQueueDone", sndBatchQueueDone); - keyFile.set_string ("Sounds", "LngEditProcDone", sndLngEditProcDone); - keyFile.set_double ("Sounds", "LngEditProcDoneSecs", sndLngEditProcDoneSecs); + keyFile.set_boolean ("Sounds", "Enable", sndEnable); + keyFile.set_string ("Sounds", "BatchQueueDone", sndBatchQueueDone); + keyFile.set_string ("Sounds", "LngEditProcDone", sndLngEditProcDone); + keyFile.set_double ("Sounds", "LngEditProcDoneSecs", sndLngEditProcDoneSecs); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_sharpening" , fastexport_bypass_sharpening ); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_sharpenEdge" , fastexport_bypass_sharpenEdge ); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_sharpenMicro" , fastexport_bypass_sharpenMicro ); - //keyFile.set_boolean ("Fast Export", "fastexport_bypass_lumaDenoise" , fastexport_bypass_lumaDenoise ); - //keyFile.set_boolean ("Fast Export", "fastexport_bypass_colorDenoise" , fastexport_bypass_colorDenoise ); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_defringe" , fastexport_bypass_defringe ); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_dirpyrDenoise" , fastexport_bypass_dirpyrDenoise ); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_sh_hq" , fastexport_bypass_sh_hq ); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_dirpyrequalizer" , fastexport_bypass_dirpyrequalizer ); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_wavelet" , fastexport_bypass_wavelet ); - keyFile.set_string ("Fast Export", "fastexport_raw_bayer_method" , fastexport_raw_bayer_method ); - //keyFile.set_boolean ("Fast Export", "fastexport_bypass_bayer_raw_all_enhance" , fastexport_bypass_raw_bayer_all_enhance ); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_dcb_iterations" , fastexport_bypass_raw_bayer_dcb_iterations ); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_dcb_enhance" , fastexport_bypass_raw_bayer_dcb_enhance ); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_lmmse_iterations", fastexport_bypass_raw_bayer_lmmse_iterations); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_linenoise" , fastexport_bypass_raw_bayer_linenoise ); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_greenthresh" , fastexport_bypass_raw_bayer_greenthresh ); - keyFile.set_string ("Fast Export", "fastexport_raw_xtrans_method" , fastexport_raw_xtrans_method ); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_ccSteps" , fastexport_bypass_raw_ccSteps ); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_ca" , fastexport_bypass_raw_ca ); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_df" , fastexport_bypass_raw_df ); - keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_ff" , fastexport_bypass_raw_ff ); - keyFile.set_string ("Fast Export", "fastexport_icm_input" , fastexport_icm_input ); - keyFile.set_string ("Fast Export", "fastexport_icm_working" , fastexport_icm_working ); - keyFile.set_string ("Fast Export", "fastexport_icm_output" , fastexport_icm_output ); - keyFile.set_integer ("Fast Export", "fastexport_icm_output_intent" , fastexport_icm_outputIntent ); - keyFile.set_string ("Fast Export", "fastexport_icm_gamma" , fastexport_icm_gamma ); - keyFile.set_boolean ("Fast Export", "fastexport_resize_enabled" , fastexport_resize_enabled ); - keyFile.set_double ("Fast Export", "fastexport_resize_scale" , fastexport_resize_scale ); - keyFile.set_string ("Fast Export", "fastexport_resize_appliesTo" , fastexport_resize_appliesTo ); - keyFile.set_string ("Fast Export", "fastexport_resize_method" , fastexport_resize_method ); - keyFile.set_integer ("Fast Export", "fastexport_resize_dataspec" , fastexport_resize_dataspec ); - keyFile.set_integer ("Fast Export", "fastexport_resize_width" , fastexport_resize_width ); - keyFile.set_integer ("Fast Export", "fastexport_resize_height" , fastexport_resize_height ); + keyFile.set_boolean ("Fast Export", "fastexport_bypass_sharpening" , fastexport_bypass_sharpening ); + keyFile.set_boolean ("Fast Export", "fastexport_bypass_sharpenEdge" , fastexport_bypass_sharpenEdge ); + keyFile.set_boolean ("Fast Export", "fastexport_bypass_sharpenMicro" , fastexport_bypass_sharpenMicro ); + //keyFile.set_boolean ("Fast Export", "fastexport_bypass_lumaDenoise" , fastexport_bypass_lumaDenoise ); + //keyFile.set_boolean ("Fast Export", "fastexport_bypass_colorDenoise" , fastexport_bypass_colorDenoise ); + keyFile.set_boolean ("Fast Export", "fastexport_bypass_defringe" , fastexport_bypass_defringe ); + keyFile.set_boolean ("Fast Export", "fastexport_bypass_dirpyrDenoise" , fastexport_bypass_dirpyrDenoise ); + keyFile.set_boolean ("Fast Export", "fastexport_bypass_sh_hq" , fastexport_bypass_sh_hq ); + keyFile.set_boolean ("Fast Export", "fastexport_bypass_dirpyrequalizer" , fastexport_bypass_dirpyrequalizer ); + keyFile.set_boolean ("Fast Export", "fastexport_bypass_wavelet" , fastexport_bypass_wavelet ); + keyFile.set_string ("Fast Export", "fastexport_raw_bayer_method" , fastexport_raw_bayer_method ); + //keyFile.set_boolean ("Fast Export", "fastexport_bypass_bayer_raw_all_enhance" , fastexport_bypass_raw_bayer_all_enhance ); + keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_dcb_iterations" , fastexport_bypass_raw_bayer_dcb_iterations ); + keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_dcb_enhance" , fastexport_bypass_raw_bayer_dcb_enhance ); + keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_lmmse_iterations", fastexport_bypass_raw_bayer_lmmse_iterations); + keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_linenoise" , fastexport_bypass_raw_bayer_linenoise ); + keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_greenthresh" , fastexport_bypass_raw_bayer_greenthresh ); + keyFile.set_string ("Fast Export", "fastexport_raw_xtrans_method" , fastexport_raw_xtrans_method ); + keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_ccSteps" , fastexport_bypass_raw_ccSteps ); + keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_ca" , fastexport_bypass_raw_ca ); + keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_df" , fastexport_bypass_raw_df ); + keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_ff" , fastexport_bypass_raw_ff ); + keyFile.set_string ("Fast Export", "fastexport_icm_input" , fastexport_icm_input ); + keyFile.set_string ("Fast Export", "fastexport_icm_working" , fastexport_icm_working ); + keyFile.set_string ("Fast Export", "fastexport_icm_output" , fastexport_icm_output ); + keyFile.set_integer ("Fast Export", "fastexport_icm_output_intent" , fastexport_icm_outputIntent ); + keyFile.set_string ("Fast Export", "fastexport_icm_gamma" , fastexport_icm_gamma ); + keyFile.set_boolean ("Fast Export", "fastexport_resize_enabled" , fastexport_resize_enabled ); + keyFile.set_double ("Fast Export", "fastexport_resize_scale" , fastexport_resize_scale ); + keyFile.set_string ("Fast Export", "fastexport_resize_appliesTo" , fastexport_resize_appliesTo ); + keyFile.set_string ("Fast Export", "fastexport_resize_method" , fastexport_resize_method ); + keyFile.set_integer ("Fast Export", "fastexport_resize_dataspec" , fastexport_resize_dataspec ); + keyFile.set_integer ("Fast Export", "fastexport_resize_width" , fastexport_resize_width ); + keyFile.set_integer ("Fast Export", "fastexport_resize_height" , fastexport_resize_height ); - keyFile.set_string ("Dialogs", "LastIccDir", lastIccDir); - keyFile.set_string ("Dialogs", "LastDarkframeDir", lastDarkframeDir); - keyFile.set_string ("Dialogs", "LastFlatfieldDir", lastFlatfieldDir); - keyFile.set_string ("Dialogs", "LastRgbCurvesDir", lastRgbCurvesDir); - keyFile.set_string ("Dialogs", "LastLabCurvesDir", lastLabCurvesDir); - keyFile.set_string ("Dialogs", "LastRetinexDir", lastRetinexDir); - keyFile.set_string ("Dialogs", "LastDenoiseCurvesDir", lastDenoiseCurvesDir); - keyFile.set_string ("Dialogs", "LastWaveletCurvesDir", lastWaveletCurvesDir); - keyFile.set_string ("Dialogs", "LastPFCurvesDir", lastPFCurvesDir); - keyFile.set_string ("Dialogs", "LastHsvCurvesDir", lastHsvCurvesDir); - keyFile.set_string ("Dialogs", "LastBWCurvesDir", lastBWCurvesDir); - keyFile.set_string ("Dialogs", "LastToneCurvesDir", lastToneCurvesDir); - keyFile.set_string ("Dialogs", "LastVibranceCurvesDir", lastVibranceCurvesDir); - keyFile.set_string ("Dialogs", "LastProfilingReferenceDir", lastProfilingReferenceDir); + keyFile.set_string ("Dialogs", "LastIccDir", lastIccDir); + keyFile.set_string ("Dialogs", "LastDarkframeDir", lastDarkframeDir); + keyFile.set_string ("Dialogs", "LastFlatfieldDir", lastFlatfieldDir); + keyFile.set_string ("Dialogs", "LastRgbCurvesDir", lastRgbCurvesDir); + keyFile.set_string ("Dialogs", "LastLabCurvesDir", lastLabCurvesDir); + keyFile.set_string ("Dialogs", "LastRetinexDir", lastRetinexDir); + keyFile.set_string ("Dialogs", "LastDenoiseCurvesDir", lastDenoiseCurvesDir); + keyFile.set_string ("Dialogs", "LastWaveletCurvesDir", lastWaveletCurvesDir); + keyFile.set_string ("Dialogs", "LastPFCurvesDir", lastPFCurvesDir); + keyFile.set_string ("Dialogs", "LastHsvCurvesDir", lastHsvCurvesDir); + keyFile.set_string ("Dialogs", "LastBWCurvesDir", lastBWCurvesDir); + keyFile.set_string ("Dialogs", "LastToneCurvesDir", lastToneCurvesDir); + keyFile.set_string ("Dialogs", "LastVibranceCurvesDir", lastVibranceCurvesDir); + keyFile.set_string ("Dialogs", "LastProfilingReferenceDir", lastProfilingReferenceDir); - keyData = keyFile.to_data (); + keyData = keyFile.to_data (); } catch (Glib::KeyFileError&) {} From e9beb1b69ce07d0a335d0acc2224537bff549424 Mon Sep 17 00:00:00 2001 From: Desmis Date: Fri, 29 Apr 2016 07:53:41 +0200 Subject: [PATCH 2/5] Add rec2020.icm --- rtdata/iccprofiles/output/Rec2020.icm | Bin 0 -> 9120 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 rtdata/iccprofiles/output/Rec2020.icm diff --git a/rtdata/iccprofiles/output/Rec2020.icm b/rtdata/iccprofiles/output/Rec2020.icm new file mode 100644 index 0000000000000000000000000000000000000000..0decaf6dc1de06aec45db6979f89a65cb9091c73 GIT binary patch literal 9120 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 literal 0 HcmV?d00001 From 130337578ee64ec7beec34171453942f305c4536 Mon Sep 17 00:00:00 2001 From: Beep6581 Date: Fri, 29 Apr 2016 23:17:54 +0200 Subject: [PATCH 3/5] Updated Sony ILCE-6000.dcp, #3220 --- rtdata/dcpprofiles/Sony ILCE-6000.dcp | Bin 1045602 -> 1045602 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/rtdata/dcpprofiles/Sony ILCE-6000.dcp b/rtdata/dcpprofiles/Sony ILCE-6000.dcp index 6d7e7c1e6cc48fec4b1affa84bf42d9fb9661137..5ef8c4d31549e2c243636dddd87d2cb06f3d017d 100644 GIT binary patch delta 32857 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 KG)SYZ?*9NrNQG$t delta 32857 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 From 12a5d90fe6be16d9495d696037b6da2e034cdeed Mon Sep 17 00:00:00 2001 From: Desmis Date: Sat, 30 Apr 2016 07:41:34 +0200 Subject: [PATCH 4/5] chanhe matrix rgb-xyz and xyz-rgb --- rtengine/iccmatrices.h | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/rtengine/iccmatrices.h b/rtengine/iccmatrices.h index 62ac7f150..d70aedd0c 100644 --- a/rtengine/iccmatrices.h +++ b/rtengine/iccmatrices.h @@ -54,7 +54,7 @@ const double sRGB_xyz[3][3] = {{3.13593293538656, -1.61878246026431, // Color space conversion to/from XYZ; color spaces adapted to D50 using Bradford transform -const double xyz_sRGB[3][3] = {{0.4360747, 0.3850649, 0.1430804}, +const double xyz_sRGB[3][3] = {{0.4360747, 0.385061, 0.1430804}, {0.2225045, 0.7168786, 0.0606169}, {0.0139322, 0.0971045, 0.7141733} }; @@ -83,7 +83,7 @@ const double prophoto_xyz[3][3] = {{1.3459433, -0.2556075, -0.0511118}, { -0.5445989, 1.5081673, 0.0205351}, {0.0000000, 0.0000000, 1.2118128} }; - +/* const double xyz_rec2020[3][3] = {{0.636958, 0.144617, 0.168881}, {0.262700, 0.677998, 0.059302}, {0.0000000, 0.028073, 1.060985} @@ -93,6 +93,16 @@ const double rec2020_xyz[3][3] = {{1.716651, -0.355671, -0.253366}, { -0.666684, 1.616481, 0.015769}, {0.017640, -0.042771, 0.942103} }; +*/ +const double xyz_rec2020[3][3] = {{0.6734241, 0.1656411, 0.1251286}, + {0.2790177, 0.6753402, 0.0456377}, + { -0.0019300, 0.0299784, 0.7973330} +}; + +const double rec2020_xyz[3][3] = {{1.6473376, -0.3935675, -0.2359961}, + { -0.6826036, 1.6475887, 0.0128190}, + {0.0296524, -0.0628993, 1.2531279} +}; const double xyz_widegamut[3][3] = {{0.7161046, 0.1009296, 0.1471858}, {0.2581874, 0.7249378, 0.0168748}, From 06611c04bab09ddae0fa79a34cb432dcae8c39f9 Mon Sep 17 00:00:00 2001 From: Desmis Date: Sat, 30 Apr 2016 07:47:21 +0200 Subject: [PATCH 5/5] small change --- rtengine/iccmatrices.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/iccmatrices.h b/rtengine/iccmatrices.h index d70aedd0c..292f45612 100644 --- a/rtengine/iccmatrices.h +++ b/rtengine/iccmatrices.h @@ -54,7 +54,7 @@ const double sRGB_xyz[3][3] = {{3.13593293538656, -1.61878246026431, // Color space conversion to/from XYZ; color spaces adapted to D50 using Bradford transform -const double xyz_sRGB[3][3] = {{0.4360747, 0.385061, 0.1430804}, +const double xyz_sRGB[3][3] = {{0.4360747, 0.3850649, 0.1430804}, {0.2225045, 0.7168786, 0.0606169}, {0.0139322, 0.0971045, 0.7141733} };