diff --git a/rtdata/languages/default b/rtdata/languages/default index 63947dfed..278b0f5e3 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -650,6 +650,7 @@ HISTORY_MSG_417;Retinex - Transmission median HISTORY_MSG_418;Retinex - Threshold HISTORY_MSG_419;Retinex - Color space HISTORY_MSG_420;Retinex - Histogram - HSL +HISTORY_MSG_421;Retinex - Gamma HISTORY_NEWSNAPSHOT;Add HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s HISTORY_SNAPSHOTS;Snapshots diff --git a/rtengine/procevents.h b/rtengine/procevents.h index 79e072d77..0f87bf1bd 100644 --- a/rtengine/procevents.h +++ b/rtengine/procevents.h @@ -22,6 +22,10 @@ namespace rtengine { + + + +// Aligned so the first entry starts on line 30 enum ProcEvent { EvPhotoLoaded = 0, EvProfileLoaded = 1, @@ -226,7 +230,6 @@ enum ProcEvent { EvDPDNredchro = 200, EvDPDNbluechro = 201, EvDPDNmet = 202, -// EvDPDNperform=201, EvDemosaicLMMSEIter = 203, EvCATbadpix = 204, EvCATAutoAdap = 205, @@ -278,15 +281,13 @@ enum ProcEvent { EvDirPyrEqualizerSkin = 251, EvDirPyrEqlgamutlab = 252, EvDirPyrEqualizerHueskin = 253, -// EvDirPyrEqualizeralg=254, - EvDPDNmedian = 254, + EvDPDNmedian = 254, // EvDirPyrEqualizeralg=254, EvDPDNmedmet = 255, EvColorToningEnabled = 256, EvColorToningColor = 257, EvColorToningOpacity = 258, - EvColorToningCLCurve = 259, + EvColorToningCLCurve = 259, // EvColorToningTwocolor=259, EvColorToningMethod = 260, -// EvColorToningTwocolor=259, EvColorToningLLCurve = 261, EvColorToningredlow = 262, EvColorToninggreenlow = 263, @@ -444,7 +445,7 @@ enum ProcEvent { EvRetinexEnabled = 415, EvRetinexmedianmap = 416, EvLlimd = 417, - EvretinexColorSpace = 418, //change to 418 if we want a separate history entry "Retinex - Color space" + EvretinexColorSpace = 418, // 418 if we want a separate history entry "Retinex - Color space", 406 if we don't EvLCDHCurve = 419, Evretinexgamma = 420, NUMOFEVENTS @@ -452,4 +453,3 @@ enum ProcEvent { } #endif - diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index ed0bf85c8..b2162bed7 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -123,10 +123,6 @@ RetinexParams::RetinexParams () void RetinexParams::getDefaulttransmissionCurve(std::vector &curve) { - /* double v[8] = { 0.0, 0.50, 0.35, 0.35, - 1.0, 0.50, 0.35, 0.35, - }; - */ double v[12] = { 0.00, 0.25, 0.35, 0.35, 0.60, 0.90, 0.35, 0.35, 1.00, 0.50, 0.35, 0.35, @@ -141,40 +137,6 @@ void RetinexParams::getDefaulttransmissionCurve(std::vector &curve) } } -void RetinexParams::getDefaultCDCurve(std::vector &curve) -{ - double v[4] = { 0., 0., - // 0.25, 0.25, - // 0.5, 0.5, - // 0.75, 0.75, - 1., 1., - }; - - curve.resize(5); - curve.at(0) = double(DCT_NURBS); - - for (size_t i = 1; i < curve.size(); ++i) { - curve.at(i) = v[i - 1]; - } -} - -void RetinexParams::getDefaultCDHCurve(std::vector &curve) -{ - double v[4] = { 0.00, 0.00, - // 0.5, 0.5, - 1.0, 1.0, - }; - - curve.resize(5); - curve.at(0) = double(DCT_NURBS); - - for (size_t i = 1; i < curve.size(); ++i) { - curve.at(i) = v[i - 1]; - } -} - - - void RetinexParams::setDefaults() { enabled = false; @@ -185,14 +147,15 @@ void RetinexParams::setDefaults() offs = 0; vart = 125; limd = 8; - getDefaulttransmissionCurve(transmissionCurve); - getDefaultCDCurve(cdcurve); - getDefaultCDHCurve(cdHcurve); retinexMethod = "high"; retinexcolorspace = "Lab"; gammaretinex = "none"; medianmap = true; - + cdcurve.clear(); + cdcurve.push_back(DCT_Linear); + cdHcurve.clear(); + cdHcurve.push_back(DCT_Linear); + getDefaulttransmissionCurve(transmissionCurve); } void RetinexParams::getCurves(RetinextransmissionCurve &transmissionCurveLUT) const diff --git a/rtengine/procparams.h b/rtengine/procparams.h index f1d70d503..9bd5ecb29 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -288,9 +288,6 @@ public: void getCurves(RetinextransmissionCurve &transmissionCurveLUT) const; static void getDefaulttransmissionCurve(std::vector &curve); - static void getDefaultCDCurve(std::vector &curve); - static void getDefaultCDHCurve(std::vector &curve); - }; diff --git a/rtengine/refreshmap.cc b/rtengine/refreshmap.cc index 71ff47c6d..1ce5a4211 100644 --- a/rtengine/refreshmap.cc +++ b/rtengine/refreshmap.cc @@ -19,6 +19,13 @@ #include "refreshmap.h" #include "procevents.h" + + + + + + +// Aligned so the first entry starts on line 30 int refreshmap[rtengine::NUMOFEVENTS] = { ALL, // EvPhotoLoaded, ALL, // EvProfileLoaded, @@ -102,7 +109,7 @@ int refreshmap[rtengine::NUMOFEVENTS] = { RESIZE, // EvResizeHeight RESIZE, // EvResizeEnabled ALL, // EvProfileChangeNotification -// RETINEX, // EvShrHighQuality + RETINEX, // EvShrHighQuality TRANSFORM, // EvPerspCorr DARKFRAME, // EvLCPFile RGBCURVE, // EvRGBrCurveLumamode @@ -169,7 +176,7 @@ int refreshmap[rtengine::NUMOFEVENTS] = { SHARPENING, // EvSharpenEdgeThreechannels SHARPENING, // EvSharpenMicroEnabled SHARPENING, // EvSharpenMicroMatrix - DEMOSAIC, // EvDemosaicALLEnhanced // Disabled but not removed for now, may be reintroduced some day + DEMOSAIC, // EvDemosaicALLEnhanced Disabled but not removed for now, may be reintroduced some day RGBCURVE, // EvVibranceEnabled RGBCURVE, // EvVibrancePastels RGBCURVE, // EvVibranceSaturated @@ -255,7 +262,7 @@ int refreshmap[rtengine::NUMOFEVENTS] = { RGBCURVE, // EvBWAfterCurve RGBCURVE, // EvBWAfterCurveMode RGBCURVE, // EvAutoch - NONE, // --unused-- + 0, // --unused-- RGBCURVE, // EvNeutralBW TRANSFORM, // EvGradientFeather TRANSFORM, // EvGradientStrength @@ -275,14 +282,12 @@ int refreshmap[rtengine::NUMOFEVENTS] = { DIRPYREQUALIZER, // EvDirPyrEqlgamutlab DIRPYREQUALIZER, // EvDirPyrEqualizerHueskin ALLNORAW, // EvDPDNmedian - ALLNORAW, //EvDPDNmedmet -//DIRPYREQUALIZER // EvDirPyrEqualizeralg + ALLNORAW, // EvDPDNmedmet RGBCURVE, // EvColorToningEnabled RGBCURVE, // EvColorToningColor RGBCURVE, // EvColorToningOpacity RGBCURVE, // EvColorToningCLCurve RGBCURVE, // EvColorToningMethod -//RGBCURVE, // EvColorToningTwocolor RGBCURVE, // EvColorToningLLCurve RGBCURVE, // EvColorToningredlow RGBCURVE, // EvColorToninggreenlow @@ -304,27 +309,27 @@ int refreshmap[rtengine::NUMOFEVENTS] = { RGBCURVE, // EvColorToningHighights RGBCURVE, // EvColorToningSatProtection RGBCURVE, // EvColorToningSatThreshold - RGBCURVE, //EvColorToningStrength - RGBCURVE, //EvColorToningautosat - ALLNORAW, //EvDPDNmetmed - ALLNORAW, //EvDPDNrgbmet - ALLNORAW, //EvDPDNpasses + RGBCURVE, // EvColorToningStrength + RGBCURVE, // EvColorToningautosat + ALLNORAW, // EvDPDNmetmed + ALLNORAW, // EvDPDNrgbmet + ALLNORAW, // EvDPDNpasses FLATFIELD, // EvFlatFieldClipControl FLATFIELD, // EvFlatFieldAutoClipControl DARKFRAME, // EvPreProcessExpBlackRed DARKFRAME, // EvPreProcessExpBlackGreen DARKFRAME, // EvPreProcessExpBlackBlue - RGBCURVE, //EvFilmSimulationEnabled - RGBCURVE, //EvFilmSimulationStrength - RGBCURVE, //EvFilmSimulationFilename - ALLNORAW, // EvDPDNLCurve - ALLNORAW, // EvDPDNsmet + RGBCURVE, // EvFilmSimulationEnabled + RGBCURVE, // EvFilmSimulationStrength + RGBCURVE, // EvFilmSimulationFilename + ALLNORAW, // EvDPDNLCurve + ALLNORAW, // EvDPDNsmet DARKFRAME, // EvPreProcessDeadPixel - ALLNORAW, //EvDPDNCCCurve - ALLNORAW, //EvDPDNautochroma - ALLNORAW, // EvDPDNLmet - ALLNORAW, // EvDPDNCmet - ALLNORAW, // EvDPDNC2met + ALLNORAW, // EvDPDNCCCurve + ALLNORAW, // EvDPDNautochroma + ALLNORAW, // EvDPDNLmet + ALLNORAW, // EvDPDNCmet + ALLNORAW, // EvDPDNC2met DIRPYREQUALIZER, // EvWavelet DIRPYREQUALIZER, // EvEnabled DIRPYREQUALIZER, // EvWavLmethod @@ -365,86 +370,83 @@ int refreshmap[rtengine::NUMOFEVENTS] = { DIRPYREQUALIZER, // EvWavdaubcoeffmet DIRPYREQUALIZER, // EvWavedgreinf DIRPYREQUALIZER, // EvWaveletch - DIRPYREQUALIZER, //EvWavCHSLmet - DIRPYREQUALIZER, //EvWavedgcont - DIRPYREQUALIZER, //EvWavEDmet - DIRPYREQUALIZER, //EvWavlev0nois - DIRPYREQUALIZER, //EvWavlev1nois - DIRPYREQUALIZER, //EvWavlev2nois - DIRPYREQUALIZER, //EvWavmedianlev - DIRPYREQUALIZER, //EvWavHHCurve - DIRPYREQUALIZER, //EvWavBackmet - DIRPYREQUALIZER, //EvWavedgedetect - DIRPYREQUALIZER, //EvWavlipst - DIRPYREQUALIZER, //EvWavedgedetectthr - DIRPYREQUALIZER, //EvWavedgedetectthr2 - DIRPYREQUALIZER, //EvWavlinkedg - DIRPYREQUALIZER, //EvWavCHCurve - DARKFRAME, //EvPreProcessHotDeadThresh - SHARPENING, //EvEPDgamma - DIRPYREQUALIZER, //EvWavtmr - DIRPYREQUALIZER, //EvWavTMmet - DIRPYREQUALIZER, //EvWavtmrs - DIRPYREQUALIZER, //EvWavbalance - DIRPYREQUALIZER, //EvWaviter - DIRPYREQUALIZER, //EvWavgamma - DIRPYREQUALIZER, //EvWavCLCurve - DIRPYREQUALIZER, //EvWavopacity - DIRPYREQUALIZER, //EvWavBAmet - DIRPYREQUALIZER, //EvWavopacityWL - RESIZE, // EvPrShrEnabled - RESIZE, // EvPrShrRadius - RESIZE, // EvPrShrAmount - RESIZE, // EvPrShrThresh - RESIZE, // EvPrShrEdgeOnly - RESIZE, // EvPrShrEdgeRadius=375, - RESIZE, // EvPrShrEdgeTolerance=376, - RESIZE, // EvPrShrHaloControl=377, - RESIZE, // EvPrShrHaloAmount=378, - RESIZE, // EvPrShrMethod=379, - RESIZE, // EvPrShrDRadius=380, - RESIZE, // EvPrShrDAmount=381, - RESIZE, // EvPrShrDDamping=382, - RESIZE, // EvPrShrDIterations=383, - DIRPYREQUALIZER, // EvWavcbenab - DIRPYREQUALIZER, // EvWavgreenhigh - DIRPYREQUALIZER, // EvWavbluehigh - DIRPYREQUALIZER, // EvWavgreenmed - DIRPYREQUALIZER, // EvWavbluemed - DIRPYREQUALIZER, // EvWavgreenlow - DIRPYREQUALIZER, // EvWavbluelow - DIRPYREQUALIZER, // EvWavNeutral - RGBCURVE, // EvDCPApplyLookTable, - RGBCURVE, // EvDCPApplyBaselineExposureOffset, - INPUTPROFILE, // EvDCPApplyHueSatMap - DIRPYREQUALIZER, // EvWavenacont - DIRPYREQUALIZER, // EvWavenachrom - DIRPYREQUALIZER, // EvWavenaedge - DIRPYREQUALIZER, // EvWavenares - DIRPYREQUALIZER, // EvWavenafin - DIRPYREQUALIZER, // EvWavenatoning - DIRPYREQUALIZER, // EvWavenanoise - DIRPYREQUALIZER, // EvWavedgesensi - DIRPYREQUALIZER, // EvWavedgeampli - DIRPYREQUALIZER, //EvWavlev3nois - DIRPYREQUALIZER, //EvWavNPmet - DEMOSAIC, // Unused? - ALLNORAW, // EvretinexMethod - ALLNORAW, // EvLneigh - ALLNORAW, // EvLgain - ALLNORAW, // EvLoffs was EvLstr - ALLNORAW, // EvLstr was EvLscal - ALLNORAW, // EvLscal was EvLvart - ALLNORAW, // EvLvart was EvLCDCurve - ALLNORAW, // EvRetinexOpacity // not used - ALLNORAW, // EvRetinextransmission - DEMOSAIC, // EvRetinexEnabled was EvRetinexretinex <-- TODO we can probably delete this - ALLNORAW, // EvRetinexmedianmap - ALLNORAW, // EvLlimd - DEMOSAIC, // Evretinexcolorspace - DEMOSAIC, // EvRetinexgamma - ALLNORAW // EvLCDHCurve - - + DIRPYREQUALIZER, // EvWavCHSLmet + DIRPYREQUALIZER, // EvWavedgcont + DIRPYREQUALIZER, // EvWavEDmet + DIRPYREQUALIZER, // EvWavlev0nois + DIRPYREQUALIZER, // EvWavlev1nois + DIRPYREQUALIZER, // EvWavlev2nois + DIRPYREQUALIZER, // EvWavmedianlev + DIRPYREQUALIZER, // EvWavHHCurve + DIRPYREQUALIZER, // EvWavBackmet + DIRPYREQUALIZER, // EvWavedgedetect + DIRPYREQUALIZER, // EvWavlipst + DIRPYREQUALIZER, // EvWavedgedetectthr + DIRPYREQUALIZER, // EvWavedgedetectthr2 + DIRPYREQUALIZER, // EvWavlinkedg + DIRPYREQUALIZER, // EvWavCHCurve + DARKFRAME, // EvPreProcessHotDeadThresh + SHARPENING, // EvEPDgamma + DIRPYREQUALIZER, // EvWavtmr + DIRPYREQUALIZER, // EvWavTMmet + DIRPYREQUALIZER, // EvWavtmrs + DIRPYREQUALIZER, // EvWavbalance + DIRPYREQUALIZER, // EvWaviter + DIRPYREQUALIZER, // EvWavgamma + DIRPYREQUALIZER, // EvWavCLCurve + DIRPYREQUALIZER, // EvWavopacity + DIRPYREQUALIZER, // EvWavBAmet + DIRPYREQUALIZER, // EvWavopacityWL + RESIZE, // EvPrShrEnabled + RESIZE, // EvPrShrRadius + RESIZE, // EvPrShrAmount + RESIZE, // EvPrShrThresh + RESIZE, // EvPrShrEdgeOnly + RESIZE, // EvPrShrEdgeRadius=375, + RESIZE, // EvPrShrEdgeTolerance=376, + RESIZE, // EvPrShrHaloControl=377, + RESIZE, // EvPrShrHaloAmount=378, + RESIZE, // EvPrShrMethod=379, + RESIZE, // EvPrShrDRadius=380, + RESIZE, // EvPrShrDAmount=381, + RESIZE, // EvPrShrDDamping=382, + RESIZE, // EvPrShrDIterations=383, + DIRPYREQUALIZER, // EvWavcbenab + DIRPYREQUALIZER, // EvWavgreenhigh + DIRPYREQUALIZER, // EvWavbluehigh + DIRPYREQUALIZER, // EvWavgreenmed + DIRPYREQUALIZER, // EvWavbluemed + DIRPYREQUALIZER, // EvWavgreenlow + DIRPYREQUALIZER, // EvWavbluelow + DIRPYREQUALIZER, // EvWavNeutral + RGBCURVE, // EvDCPApplyLookTable, + RGBCURVE, // EvDCPApplyBaselineExposureOffset, + INPUTPROFILE, // EvDCPApplyHueSatMap + DIRPYREQUALIZER, // EvWavenacont + DIRPYREQUALIZER, // EvWavenachrom + DIRPYREQUALIZER, // EvWavenaedge + DIRPYREQUALIZER, // EvWavenares + DIRPYREQUALIZER, // EvWavenafin + DIRPYREQUALIZER, // EvWavenatoning + DIRPYREQUALIZER, // EvWavenanoise + DIRPYREQUALIZER, // EvWavedgesensi + DIRPYREQUALIZER, // EvWavedgeampli + DIRPYREQUALIZER, // EvWavlev3nois + DIRPYREQUALIZER, // EvWavNPmet + ALLNORAW, // EvretinexMethod + ALLNORAW, // EvLneigh + ALLNORAW, // EvLgain + ALLNORAW, // EvLoffs + ALLNORAW, // EvLstr + ALLNORAW, // EvLscal + ALLNORAW, // EvLvart + ALLNORAW, // EvLCDCurve + ALLNORAW, // EvRetinextransmission + DEMOSAIC, // EvRetinexEnabled + ALLNORAW, // EvRetinexmedianmap + ALLNORAW, // EvLlimd + DEMOSAIC, // Evretinexcolorspace + ALLNORAW, // EvLCDHCurve + DEMOSAIC // Evretinexgamma }; diff --git a/rtengine/refreshmap.h b/rtengine/refreshmap.h index 7aefcbcc3..16c05654a 100644 --- a/rtengine/refreshmap.h +++ b/rtengine/refreshmap.h @@ -68,7 +68,6 @@ #define INPUTPROFILE WHITEBALANCE #define GAMMA (M_COLOR|M_LUMINANCE) #define MINUPDATE M_MINUPDATE -#define NONE 0 #define ALLNORAW (M_INIT|M_LINDENOISE|M_TRANSFORM|M_BLURMAP|M_AUTOEXP|M_RGBCURVE|M_LUMACURVE|M_LUMINANCE|M_COLOR) extern int refreshmap[]; diff --git a/rtgui/retinex.cc b/rtgui/retinex.cc index a6a435356..9c4b2e3e2 100644 --- a/rtgui/retinex.cc +++ b/rtgui/retinex.cc @@ -47,17 +47,15 @@ Retinex::Retinex () : FoldableToolPanel(this, "retinex", M("TP_RETINEX_LABEL"), retinexcolorspace->set_active(0); retinexColorSpaceConn = retinexcolorspace->signal_changed().connect ( sigc::mem_fun(*this, &Retinex::retinexColorSpaceChanged) ); - dhbox->pack_start(*retinexMethod); dhbox->pack_start(*retinexcolorspace); retinexVBox->pack_start(*dhbox); - std::vector defaultCurve; + + // Histogram equalizer Lab curve curveEditorGD = new CurveEditorGroup (options.lastRetinexDir, M("TP_RETINEX_CONTEDIT_LAB")); curveEditorGD->setCurveListener (this); - rtengine::RetinexParams::getDefaultCDCurve(defaultCurve); cdshape = static_cast(curveEditorGD->addCurve(CT_Diagonal, M("TP_RETINEX_CURVEEDITOR_CD"))); - cdshape->setResetCurve(DiagonalCurveType(defaultCurve.at(0)), defaultCurve); cdshape->setTooltip(M("TP_RETINEX_CURVEEDITOR_CD_TOOLTIP")); std::vector milestones22; @@ -68,11 +66,11 @@ Retinex::Retinex () : FoldableToolPanel(this, "retinex", M("TP_RETINEX_LABEL"), curveEditorGD->curveListComplete(); + + // Histogram equalizer HSL curve curveEditorGDH = new CurveEditorGroup (options.lastRetinexDir, M("TP_RETINEX_CONTEDIT_HSL")); curveEditorGDH->setCurveListener (this); - rtengine::RetinexParams::getDefaultCDHCurve(defaultCurve); cdshapeH = static_cast(curveEditorGDH->addCurve(CT_Diagonal, M("TP_RETINEX_CURVEEDITOR_CD"))); - cdshapeH->setResetCurve(DiagonalCurveType(defaultCurve.at(0)), defaultCurve); cdshapeH->setTooltip(M("TP_RETINEX_CURVEEDITOR_CD_TOOLTIP")); std::vector milestones22H; @@ -84,9 +82,11 @@ Retinex::Retinex () : FoldableToolPanel(this, "retinex", M("TP_RETINEX_LABEL"), curveEditorGDH->curveListComplete(); + // Transmission map curve transmissionCurveEditorG = new CurveEditorGroup (options.lastRetinexDir, M("TP_RETINEX_TRANSMISSION")); transmissionCurveEditorG->setCurveListener (this); + std::vector defaultCurve; rtengine::RetinexParams::getDefaulttransmissionCurve(defaultCurve); transmissionShape = static_cast(transmissionCurveEditorG->addCurve(CT_Flat, "", NULL, false)); transmissionShape->setIdentityValue(0.); @@ -257,8 +257,8 @@ void Retinex::writeOptions(std::vector &tpOpen) void Retinex::updateToolState(std::vector &tpOpen) { - if(tpOpen.size() == 9) { - expsettings->set_expanded(tpOpen.at(0)); + if(tpOpen.size() == 10) { + expsettings->set_expanded(tpOpen.at(9)); } } diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index ad13459f0..3c82cd0a8 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -559,6 +559,7 @@ void ToolPanelCoordinator::writeOptions () } wavelet->writeOptions(options.tpOpen); + retinex->writeOptions(options.tpOpen); }