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);
}