ProcParams now contain red and blue ratios, to be aligned with values in the GUI.
This commit is contained in:
@@ -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()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -668,9 +668,9 @@ struct MetaDataParamsEdited {
|
||||
|
||||
struct FilmNegativeParamsEdited {
|
||||
bool enabled;
|
||||
bool redExp;
|
||||
bool redRatio;
|
||||
bool greenExp;
|
||||
bool blueExp;
|
||||
bool blueRatio;
|
||||
|
||||
bool isUnchanged() const;
|
||||
};
|
||||
|
@@ -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) {
|
||||
|
Reference in New Issue
Block a user