diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais
index b5a1434bc..e90a61b41 100644
--- a/rtdata/languages/Francais
+++ b/rtdata/languages/Francais
@@ -703,6 +703,9 @@ HISTORY_MSG_472;PS - Adoucir les transitions
HISTORY_MSG_473;PS - Utiliser LMMSE
HISTORY_MSG_474;PS - Égaliser
HISTORY_MSG_475;PS - Égaliser par canal
+HISTORY_MSG_488;Compression tonale HDR
+HISTORY_MSG_489;CT HDR - Seuil
+HISTORY_MSG_490;CT HDR - Quantité
HISTORY_NEWSNAPSHOT;Ajouter
HISTORY_NEWSNAPSHOT_TOOLTIP;Raccourci: Alt-s
HISTORY_SNAPSHOT;Capture
@@ -1894,8 +1897,8 @@ TP_SHARPENMICRO_LABEL;Microcontraste
TP_SHARPENMICRO_MATRIX;Matrice 3×3 au lieu de 5×5
TP_SHARPENMICRO_UNIFORMITY;Uniformité
TP_TM_FATTAL_LABEL;Compression Tonale HDR (Fattal02)
-TP_TM_FATTAL_ALPHA;Seuil (Alpha)
-TP_TM_FATTAL_BETA;Quantité (Beta)
+TP_TM_FATTAL_THRESHOLD;Seuil
+TP_TM_FATTAL_AMOUNT;Quantité
TP_VIBRANCE_AVOIDCOLORSHIFT;Éviter les dérives de teinte
TP_VIBRANCE_CURVEEDITOR_SKINTONES;TT
TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Tons chair
diff --git a/rtdata/languages/default b/rtdata/languages/default
index a9fe2414e..f7c59e633 100644
--- a/rtdata/languages/default
+++ b/rtdata/languages/default
@@ -720,8 +720,8 @@ HISTORY_MSG_485;Lens Correction
HISTORY_MSG_486;Lens Correction - Camera
HISTORY_MSG_487;Lens Correction - Lens
HISTORY_MSG_488;HDR Tone Mapping
-HISTORY_MSG_489;HDR TM - Alpha
-HISTORY_MSG_490;HDR TM - Beta
+HISTORY_MSG_489;HDR TM - Threshold
+HISTORY_MSG_490;HDR TM - Amount
HISTORY_NEWSNAPSHOT;Add
HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
HISTORY_SNAPSHOT;Snapshot
@@ -1930,8 +1930,8 @@ TP_SHARPENMICRO_LABEL;Microcontrast
TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5
TP_SHARPENMICRO_UNIFORMITY;Uniformity
TP_TM_FATTAL_LABEL;HDR Tone Mapping (Fattal02)
-TP_TM_FATTAL_ALPHA;Threshold (Alpha)
-TP_TM_FATTAL_BETA;Amount (Beta)
+TP_TM_FATTAL_THRESHOLD;Threshold (Alpha)
+TP_TM_FATTAL_AMOUNT;Amount (Beta)
TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift
TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones
diff --git a/rtengine/procevents.h b/rtengine/procevents.h
index 2bd4107ed..3aa5505b5 100644
--- a/rtengine/procevents.h
+++ b/rtengine/procevents.h
@@ -517,8 +517,8 @@ enum ProcEvent {
EvLensCorrLensfunLens = 486,
// Fattal tone mapping
EvTMFattalEnabled = 487,
- EvTMFattalAlpha = 488,
- EvTMFattalBeta = 489,
+ EvTMFattalThreshold = 488,
+ EvTMFattalAmount = 489,
NUMOFEVENTS
diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc
index 9bbed9d4e..7662a9920 100644
--- a/rtengine/procparams.cc
+++ b/rtengine/procparams.cc
@@ -2449,12 +2449,12 @@ int ProcParams::save (const Glib::ustring &fname, const Glib::ustring &fname2, b
keyFile.set_boolean ("FattalToneMapping", "Enabled", fattal.enabled);
}
- if (!pedited || pedited->fattal.alpha) {
- keyFile.set_double ("FattalToneMapping", "Alpha", fattal.alpha);
+ if (!pedited || pedited->fattal.threshold) {
+ keyFile.set_integer ("FattalToneMapping", "Threshold", fattal.threshold);
}
- if (!pedited || pedited->fattal.beta) {
- keyFile.set_double ("FattalToneMapping", "Beta", fattal.beta);
+ if (!pedited || pedited->fattal.amount) {
+ keyFile.set_integer ("FattalToneMapping", "Amount", fattal.amount);
}
/*
@@ -5613,19 +5613,19 @@ int ProcParams::load (const Glib::ustring &fname, ParamsEdited* pedited)
}
}
- if (keyFile.has_key ("FattalToneMapping", "Alpha")) {
- fattal.alpha = keyFile.get_double ("FattalToneMapping", "Alpha");
+ if (keyFile.has_key ("FattalToneMapping", "Threshold")) {
+ fattal.threshold = keyFile.get_double ("FattalToneMapping", "Threshold");
if (pedited) {
- pedited->fattal.alpha = true;
+ pedited->fattal.threshold = true;
}
}
- if (keyFile.has_key ("FattalToneMapping", "Beta")) {
- fattal.beta = keyFile.get_double ("FattalToneMapping", "Beta");
+ if (keyFile.has_key ("FattalToneMapping", "Amount")) {
+ fattal.amount = keyFile.get_double ("FattalToneMapping", "Amount");
if (pedited) {
- pedited->fattal.beta = true;
+ pedited->fattal.amount = true;
}
}
}
@@ -8489,8 +8489,8 @@ bool ProcParams::operator== (const ProcParams& other)
&& epd.scale == other.epd.scale
&& epd.reweightingIterates == other.epd.reweightingIterates
&& fattal.enabled == other.fattal.enabled
- && fattal.alpha == other.fattal.alpha
- && fattal.beta == other.fattal.beta
+ && fattal.threshold == other.fattal.threshold
+ && fattal.amount == other.fattal.amount
&& defringe.enabled == other.defringe.enabled
&& defringe.radius == other.defringe.radius
&& defringe.threshold == other.defringe.threshold
diff --git a/rtengine/procparams.h b/rtengine/procparams.h
index f2d1c7b00..c69df915b 100644
--- a/rtengine/procparams.h
+++ b/rtengine/procparams.h
@@ -743,8 +743,8 @@ public:
class FattalToneMappingParams {
public:
bool enabled;
- double alpha;
- double beta;
+ int threshold;
+ int amount;
FattalToneMappingParams()
{
@@ -754,8 +754,8 @@ public:
void setDefaults()
{
enabled = false;
- alpha = 1.0;
- beta = 1.0;
+ threshold = 0;
+ amount = 0;
}
};
diff --git a/rtengine/refreshmap.cc b/rtengine/refreshmap.cc
index 95e129ad6..fa6b52c4e 100644
--- a/rtengine/refreshmap.cc
+++ b/rtengine/refreshmap.cc
@@ -515,8 +515,8 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
DARKFRAME, // EvLensCorrLensfunCamera
DARKFRAME, // EvLensCorrLensfunLens
RGBCURVE, // EvTMFattalEnabled
- RGBCURVE, // EvTMFattalAlpha
- RGBCURVE // EvTMFattalBeta
+ RGBCURVE, // EvTMFattalThreshold
+ RGBCURVE // EvTMFattalAmount
};
diff --git a/rtengine/tmo_fattal02.cc b/rtengine/tmo_fattal02.cc
index d0c3ea640..b44f1c1b6 100644
--- a/rtengine/tmo_fattal02.cc
+++ b/rtengine/tmo_fattal02.cc
@@ -1093,7 +1093,13 @@ void tmo_fattal02_RT(Imagefloat *rgb, float alpha, float beta, int detail_level,
void ImProcFunctions::ToneMapFattal02(Imagefloat *rgb)
{
const int detail_level = 3;
- tmo_fattal02_RT(rgb, params->fattal.alpha, params->fattal.beta, detail_level, multiThread);
+ double alpha = 1.;
+ if (params->fattal.threshold < 0) {
+ alpha += (params->fattal.threshold * 0.9) / 100.;
+ } else if (params->fattal.threshold > 0) {
+ alpha += params->fattal.threshold / 100.;
+ }
+ tmo_fattal02_RT(rgb, alpha, 1. - (params->fattal.amount * 0.3) / 100., detail_level, multiThread);
}
diff --git a/rtgui/fattaltonemap.cc b/rtgui/fattaltonemap.cc
index a1fd3d342..79e545908 100644
--- a/rtgui/fattaltonemap.cc
+++ b/rtgui/fattaltonemap.cc
@@ -28,18 +28,18 @@ FattalToneMapping::FattalToneMapping(): FoldableToolPanel(this, "fattal", M("TP_
{
// setEnabledTooltipMarkup(M("TP_EPD_TOOLTIP"));
-
- alpha = Gtk::manage(new Adjuster (M("TP_TM_FATTAL_ALPHA"), 0.0, 2.0, 0.01, 1.0));
- beta = Gtk::manage(new Adjuster (M("TP_TM_FATTAL_BETA"), 0.7, 1.3, 0.01, 1.0));
- alpha->setAdjusterListener(this);
- beta->setAdjusterListener(this);
+ threshold = Gtk::manage(new Adjuster (M("TP_TM_FATTAL_THRESHOLD"), -100., 100., 1., 0.0));
+ amount = Gtk::manage(new Adjuster (M("TP_TM_FATTAL_AMOUNT"), -100., 100., 1., 0.0));
- alpha->show();
- beta->show();
+ threshold->setAdjusterListener(this);
+ amount->setAdjusterListener(this);
- pack_start(*alpha);
- pack_start(*beta);
+ threshold->show();
+ amount->show();
+
+ pack_start(*threshold);
+ pack_start(*amount);
}
void FattalToneMapping::read(const ProcParams *pp, const ParamsEdited *pedited)
@@ -47,52 +47,52 @@ void FattalToneMapping::read(const ProcParams *pp, const ParamsEdited *pedited)
disableListener();
if(pedited) {
- alpha->setEditedState(pedited->fattal.alpha ? Edited : UnEdited);
- beta->setEditedState(pedited->fattal.beta ? Edited : UnEdited);
+ threshold->setEditedState(pedited->fattal.threshold ? Edited : UnEdited);
+ amount->setEditedState(pedited->fattal.amount ? Edited : UnEdited);
set_inconsistent(multiImage && !pedited->fattal.enabled);
}
setEnabled(pp->fattal.enabled);
- alpha->setValue(pp->fattal.alpha);
- beta->setValue(pp->fattal.beta);
+ threshold->setValue(pp->fattal.threshold);
+ amount->setValue(pp->fattal.amount);
enableListener();
}
void FattalToneMapping::write(ProcParams *pp, ParamsEdited *pedited)
{
- pp->fattal.alpha = alpha->getValue();
- pp->fattal.beta = beta->getValue();
+ pp->fattal.threshold = threshold->getValue();
+ pp->fattal.amount = amount->getValue();
pp->fattal.enabled = getEnabled();
if(pedited) {
- pedited->fattal.alpha = alpha->getEditedState();
- pedited->fattal.beta = beta->getEditedState();
+ pedited->fattal.threshold = threshold->getEditedState();
+ pedited->fattal.amount = amount->getEditedState();
pedited->fattal.enabled = !get_inconsistent();
}
}
void FattalToneMapping::setDefaults(const ProcParams *defParams, const ParamsEdited *pedited)
{
- alpha->setDefault(defParams->fattal.alpha);
- beta->setDefault(defParams->fattal.beta);
+ threshold->setDefault(defParams->fattal.threshold);
+ amount->setDefault(defParams->fattal.amount);
if(pedited) {
- alpha->setDefaultEditedState(pedited->fattal.alpha ? Edited : UnEdited);
- beta->setDefaultEditedState(pedited->fattal.beta ? Edited : UnEdited);
+ threshold->setDefaultEditedState(pedited->fattal.threshold ? Edited : UnEdited);
+ amount->setDefaultEditedState(pedited->fattal.amount ? Edited : UnEdited);
} else {
- alpha->setDefaultEditedState(Irrelevant);
- beta->setDefaultEditedState(Irrelevant);
+ threshold->setDefaultEditedState(Irrelevant);
+ amount->setDefaultEditedState(Irrelevant);
}
}
void FattalToneMapping::adjusterChanged(Adjuster* a, double newval)
{
if(listener && getEnabled()) {
- if(a == alpha) {
- listener->panelChanged(EvTMFattalAlpha, Glib::ustring::format(std::setw(2), std::fixed, std::setprecision(2), a->getValue()));
- } else if(a == beta) {
- listener->panelChanged(EvTMFattalBeta, Glib::ustring::format(std::setw(2), std::fixed, std::setprecision(2), a->getValue()));
+ if(a == threshold) {
+ listener->panelChanged(EvTMFattalThreshold, a->getTextValue());
+ } else if(a == amount) {
+ listener->panelChanged(EvTMFattalAmount, a->getTextValue());
}
}
}
@@ -114,13 +114,13 @@ void FattalToneMapping::setBatchMode(bool batchMode)
{
ToolPanel::setBatchMode(batchMode);
- alpha->showEditedCB();
- beta->showEditedCB();
+ threshold->showEditedCB();
+ amount->showEditedCB();
}
void FattalToneMapping::setAdjusterBehavior (bool alphaAdd, bool betaAdd)
{
- alpha->setAddMode(alphaAdd);
- beta->setAddMode(betaAdd);
+ threshold->setAddMode(alphaAdd);
+ amount->setAddMode(betaAdd);
}
diff --git a/rtgui/fattaltonemap.h b/rtgui/fattaltonemap.h
index cb3abcfc3..2398970ce 100644
--- a/rtgui/fattaltonemap.h
+++ b/rtgui/fattaltonemap.h
@@ -26,8 +26,8 @@
class FattalToneMapping: public ToolParamBlock, public AdjusterListener, public FoldableToolPanel
{
protected:
- Adjuster *alpha;
- Adjuster *beta;
+ Adjuster *threshold;
+ Adjuster *amount;
public:
diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc
index 17e53f2dd..dc1a65b64 100644
--- a/rtgui/paramsedited.cc
+++ b/rtgui/paramsedited.cc
@@ -265,8 +265,8 @@ void ParamsEdited::set (bool v)
epd.scale = v;
epd.reweightingIterates = v;
fattal.enabled = v;
- fattal.alpha = v;
- fattal.beta = v;
+ fattal.threshold = v;
+ fattal.amount = v;
sh.enabled = v;
sh.hq = v;
sh.highlights = v;
@@ -808,8 +808,8 @@ void ParamsEdited::initFrom (const std::vector
epd.reweightingIterates = epd.reweightingIterates && p.epd.reweightingIterates == other.epd.reweightingIterates;
fattal.enabled = fattal.enabled && p.fattal.enabled == other.fattal.enabled;
- fattal.alpha = fattal.alpha && p.fattal.alpha == other.fattal.alpha;
- fattal.beta = fattal.beta && p.fattal.beta == other.fattal.beta;
+ fattal.threshold = fattal.threshold && p.fattal.threshold == other.fattal.threshold;
+ fattal.amount = fattal.amount && p.fattal.amount == other.fattal.amount;
sh.enabled = sh.enabled && p.sh.enabled == other.sh.enabled;
sh.hq = sh.hq && p.sh.hq == other.sh.hq;
@@ -1982,11 +1982,11 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
if (fattal.enabled) {
toEdit.fattal.enabled = mods.fattal.enabled;
}
- if (fattal.alpha) {
- toEdit.fattal.alpha = mods.fattal.alpha;
+ if (fattal.threshold) {
+ toEdit.fattal.threshold = mods.fattal.threshold;
}
- if (fattal.beta) {
- toEdit.fattal.beta = mods.fattal.beta;
+ if (fattal.amount) {
+ toEdit.fattal.amount = mods.fattal.amount;
}
if (sh.enabled) {
diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h
index 552aa8515..4d205b1f5 100644
--- a/rtgui/paramsedited.h
+++ b/rtgui/paramsedited.h
@@ -368,8 +368,8 @@ public:
class FattalToneMappingParamsEdited {
public:
bool enabled;
- bool alpha;
- bool beta;
+ bool threshold;
+ bool amount;
};