ProcParams now contain red and blue ratios, to be aligned with values in the GUI.

This commit is contained in:
rom9
2019-06-29 16:06:40 +02:00
parent 41e5899f97
commit b4c109f275
22 changed files with 88 additions and 96 deletions

View File

@@ -49,7 +49,7 @@ Adjuster* createExponentAdjuster(AdjusterListener* listener, const Glib::ustring
FilmNegative::FilmNegative() :
FoldableToolPanel(this, "filmnegative", M("TP_FILMNEGATIVE_LABEL"), false, true),
EditSubscriber(ET_OBJECTS),
evFilmNegativeExponents(ProcEventMapper::getInstance()->newEvent(FIRST, "HISTORY_MSG_FILMNEGATIVE_EXPONENTS")),
evFilmNegativeExponents(ProcEventMapper::getInstance()->newEvent(FIRST, "HISTORY_MSG_FILMNEGATIVE_VALUES")),
evFilmNegativeEnabled(ProcEventMapper::getInstance()->newEvent(FIRST, "HISTORY_MSG_FILMNEGATIVE_ENABLED")),
fnp(nullptr),
greenExp(createExponentAdjuster(this, M("TP_FILMNEGATIVE_GREEN"), 0.3, 4, 1.5)), // master exponent (green channel)
@@ -123,45 +123,45 @@ void FilmNegative::read(const rtengine::procparams::ProcParams* pp, const Params
disableListener();
if (pedited) {
redRatio->setEditedState(pedited->filmNegative.redExp ? Edited : UnEdited);
redRatio->setEditedState(pedited->filmNegative.redRatio ? Edited : UnEdited);
greenExp->setEditedState(pedited->filmNegative.greenExp ? Edited : UnEdited);
blueRatio->setEditedState(pedited->filmNegative.blueExp ? Edited : UnEdited);
blueRatio->setEditedState(pedited->filmNegative.blueRatio ? Edited : UnEdited);
set_inconsistent(multiImage && !pedited->filmNegative.enabled);
}
setEnabled(pp->filmNegative.enabled);
redRatio->setValue(pp->filmNegative.redExp / pp->filmNegative.greenExp);
redRatio->setValue(pp->filmNegative.redRatio);
greenExp->setValue(pp->filmNegative.greenExp);
blueRatio->setValue(pp->filmNegative.blueExp / pp->filmNegative.greenExp);
blueRatio->setValue(pp->filmNegative.blueRatio);
enableListener();
}
void FilmNegative::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited)
{
pp->filmNegative.redExp = greenExp->getValue() * redRatio->getValue();
pp->filmNegative.redRatio = redRatio->getValue();
pp->filmNegative.greenExp = greenExp->getValue();
pp->filmNegative.blueExp = greenExp->getValue() * blueRatio->getValue();
pp->filmNegative.blueRatio = blueRatio->getValue();
pp->filmNegative.enabled = getEnabled();
if (pedited) {
pedited->filmNegative.redExp = greenExp->getEditedState() || redRatio->getEditedState();
pedited->filmNegative.redRatio = redRatio->getEditedState();
pedited->filmNegative.greenExp = greenExp->getEditedState();
pedited->filmNegative.blueExp = greenExp->getEditedState() || blueRatio->getEditedState();
pedited->filmNegative.blueRatio = blueRatio->getEditedState();
pedited->filmNegative.enabled = !get_inconsistent();
}
}
void FilmNegative::setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited)
{
redRatio->setValue(defParams->filmNegative.redExp / defParams->filmNegative.greenExp);
redRatio->setValue(defParams->filmNegative.redRatio);
greenExp->setValue(defParams->filmNegative.greenExp);
blueRatio->setValue(defParams->filmNegative.blueExp / defParams->filmNegative.greenExp);
blueRatio->setValue(defParams->filmNegative.blueRatio);
if (pedited) {
redRatio->setDefaultEditedState(pedited->filmNegative.redExp ? Edited : UnEdited);
redRatio->setDefaultEditedState(pedited->filmNegative.redRatio ? Edited : UnEdited);
greenExp->setDefaultEditedState(pedited->filmNegative.greenExp ? Edited : UnEdited);
blueRatio->setDefaultEditedState(pedited->filmNegative.blueExp ? Edited : UnEdited);
blueRatio->setDefaultEditedState(pedited->filmNegative.blueRatio ? Edited : UnEdited);
} else {
redRatio->setDefaultEditedState(Irrelevant);
greenExp->setDefaultEditedState(Irrelevant);
@@ -189,10 +189,10 @@ void FilmNegative::adjusterChanged(Adjuster* a, double newval)
listener->panelChanged(
evFilmNegativeExponents,
Glib::ustring::compose(
"R=%1 ; G=%2 ; B=%3",
greenExp->getValue() * redRatio->getValue(),
"Ref=%1 ; R=%2 ; B=%3",
greenExp->getValue(),
greenExp->getValue() * blueRatio->getValue()
redRatio->getValue(),
blueRatio->getValue()
)
);
}
@@ -269,10 +269,10 @@ bool FilmNegative::button1Pressed(int modifierKey)
listener->panelChanged(
evFilmNegativeExponents,
Glib::ustring::compose(
"R=%1 ; G=%2 ; B=%3",
greenExp->getValue() * redRatio->getValue(),
"Ref=%1 ; R=%2 ; B=%3",
greenExp->getValue(),
greenExp->getValue() * blueRatio->getValue()
redRatio->getValue(),
blueRatio->getValue()
)
);
}

View File

@@ -581,9 +581,9 @@ void ParamsEdited::set(bool v)
dehaze.depth = v;
metadata.mode = v;
filmNegative.enabled = v;
filmNegative.redExp = v;
filmNegative.redRatio = v;
filmNegative.greenExp = v;
filmNegative.blueExp = v;
filmNegative.blueRatio = v;
exif = v;
iptc = v;
@@ -1147,9 +1147,9 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
dehaze.depth = dehaze.depth && p.dehaze.depth == other.dehaze.depth;
metadata.mode = metadata.mode && p.metadata.mode == other.metadata.mode;
filmNegative.enabled = filmNegative.enabled && p.filmNegative.enabled == other.filmNegative.enabled;
filmNegative.redExp = filmNegative.redExp && p.filmNegative.redExp == other.filmNegative.redExp;
filmNegative.redRatio = filmNegative.redRatio && p.filmNegative.redRatio == other.filmNegative.redRatio;
filmNegative.greenExp = filmNegative.greenExp && p.filmNegative.greenExp == other.filmNegative.greenExp;
filmNegative.blueExp = filmNegative.blueExp && p.filmNegative.blueExp == other.filmNegative.blueExp;
filmNegative.blueRatio = filmNegative.blueRatio && p.filmNegative.blueRatio == other.filmNegative.blueRatio;
// How the hell can we handle that???
// exif = exif && p.exif==other.exif
@@ -3187,16 +3187,16 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
toEdit.filmNegative.enabled = mods.filmNegative.enabled;
}
if (filmNegative.redExp) {
toEdit.filmNegative.redExp = mods.filmNegative.redExp;
if (filmNegative.redRatio) {
toEdit.filmNegative.redRatio = mods.filmNegative.redRatio;
}
if (filmNegative.greenExp) {
toEdit.filmNegative.greenExp = mods.filmNegative.greenExp;
}
if (filmNegative.blueExp) {
toEdit.filmNegative.blueExp = mods.filmNegative.blueExp;
if (filmNegative.blueRatio) {
toEdit.filmNegative.blueRatio = mods.filmNegative.blueRatio;
}
// Exif changes are added to the existing ones
@@ -3245,5 +3245,5 @@ bool RetinexParamsEdited::isUnchanged() const
bool FilmNegativeParamsEdited::isUnchanged() const
{
return enabled && redExp && greenExp && blueExp;
return enabled && redRatio && greenExp && blueRatio;
}

View File

@@ -668,9 +668,9 @@ struct MetaDataParamsEdited {
struct FilmNegativeParamsEdited {
bool enabled;
bool redExp;
bool redRatio;
bool greenExp;
bool blueExp;
bool blueRatio;
bool isUnchanged() const;
};

View File

@@ -976,9 +976,9 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dstPP, Param
if (!filmNegative->get_active ()) {
filterPE.filmNegative.enabled = falsePE.filmNegative.enabled;
filterPE.filmNegative.redExp = falsePE.filmNegative.redExp;
filterPE.filmNegative.redRatio = falsePE.filmNegative.redRatio;
filterPE.filmNegative.greenExp = falsePE.filmNegative.greenExp;
filterPE.filmNegative.blueExp = falsePE.filmNegative.blueExp;
filterPE.filmNegative.blueRatio = falsePE.filmNegative.blueRatio;
}
if (dstPE) {