Add chroma and gamma to Color Mask - use patch Floessie
This commit is contained in:
parent
677cf0c054
commit
b69f9dc84b
@ -900,6 +900,9 @@ HISTORY_MSG_646;Local - Exp mask chroma
|
|||||||
HISTORY_MSG_647;Local - Exp mask gamma
|
HISTORY_MSG_647;Local - Exp mask gamma
|
||||||
HISTORY_MSG_648;Local - Exp mask slope
|
HISTORY_MSG_648;Local - Exp mask slope
|
||||||
HISTORY_MSG_649;Local - Exp soft radius
|
HISTORY_MSG_649;Local - Exp soft radius
|
||||||
|
HISTORY_MSG_650;Local - Color mask chroma
|
||||||
|
HISTORY_MSG_651;Local - Color mask gamma
|
||||||
|
HISTORY_MSG_652;Local - Color mask slope
|
||||||
HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
|
HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
|
||||||
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
|
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
|
||||||
HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
|
HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
|
||||||
|
@ -169,7 +169,21 @@ ImProcCoordinator::ImProcCoordinator() :
|
|||||||
shtonecurveloc(65536, 0),
|
shtonecurveloc(65536, 0),
|
||||||
tonecurveloc(65536, 0),
|
tonecurveloc(65536, 0),
|
||||||
lightCurveloc(32770, 0),
|
lightCurveloc(32770, 0),
|
||||||
locallutili(false), localcutili(false), localskutili(false), localexutili(false), LHutili(false), HHutili(false),
|
locallutili(false),
|
||||||
|
localcutili(false),
|
||||||
|
localskutili(false),
|
||||||
|
localexutili(false),
|
||||||
|
llmasutili(false),
|
||||||
|
lhmasutili(false),
|
||||||
|
lcmasutili(false),
|
||||||
|
lcmasexputili(false),
|
||||||
|
lhmasexputili(false),
|
||||||
|
llmasexputili(false),
|
||||||
|
lcmasSHutili(false),
|
||||||
|
lhmasSHutili(false),
|
||||||
|
llmasSHutili(false),
|
||||||
|
LHutili(false),
|
||||||
|
HHutili(false),
|
||||||
huerefs(500, -100000.f),
|
huerefs(500, -100000.f),
|
||||||
huerefblurs(500, -100000.f),
|
huerefblurs(500, -100000.f),
|
||||||
chromarefblurs(500, -100000.f),
|
chromarefblurs(500, -100000.f),
|
||||||
|
@ -146,6 +146,9 @@ struct local_params {
|
|||||||
float struexc;
|
float struexc;
|
||||||
float blendmacol;
|
float blendmacol;
|
||||||
float radmacol;
|
float radmacol;
|
||||||
|
float chromacol;
|
||||||
|
float gammacol;
|
||||||
|
float slomacol;
|
||||||
float radmaexp;
|
float radmaexp;
|
||||||
float chromaexp;
|
float chromaexp;
|
||||||
float gammaexp;
|
float gammaexp;
|
||||||
@ -482,6 +485,9 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
|
|||||||
float structcolor = (float) locallab.spots.at(sp).structcol;
|
float structcolor = (float) locallab.spots.at(sp).structcol;
|
||||||
float blendmaskcolor = ((float) locallab.spots.at(sp).blendmaskcol) / 100.f ;
|
float blendmaskcolor = ((float) locallab.spots.at(sp).blendmaskcol) / 100.f ;
|
||||||
float radmaskcolor = ((float) locallab.spots.at(sp).radmaskcol);
|
float radmaskcolor = ((float) locallab.spots.at(sp).radmaskcol);
|
||||||
|
float chromaskcolor = ((float) locallab.spots.at(sp).chromaskcol);
|
||||||
|
float gammaskcolor = ((float) locallab.spots.at(sp).gammaskcol);
|
||||||
|
float slomaskcolor = ((float) locallab.spots.at(sp).slomaskcol);
|
||||||
float blendmaskexpo = ((float) locallab.spots.at(sp).blendmaskexp) / 100.f ;
|
float blendmaskexpo = ((float) locallab.spots.at(sp).blendmaskexp) / 100.f ;
|
||||||
float radmaskexpo = ((float) locallab.spots.at(sp).radmaskexp);
|
float radmaskexpo = ((float) locallab.spots.at(sp).radmaskexp);
|
||||||
float chromaskexpo = ((float) locallab.spots.at(sp).chromaskexp);
|
float chromaskexpo = ((float) locallab.spots.at(sp).chromaskexp);
|
||||||
@ -540,6 +546,9 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
|
|||||||
lp.strengrid = strengthgrid;
|
lp.strengrid = strengthgrid;
|
||||||
lp.blendmacol = blendmaskcolor;
|
lp.blendmacol = blendmaskcolor;
|
||||||
lp.radmacol = radmaskcolor;
|
lp.radmacol = radmaskcolor;
|
||||||
|
lp.chromacol = chromaskcolor;
|
||||||
|
lp.gammacol = gammaskcolor;
|
||||||
|
lp.slomacol = slomaskcolor;
|
||||||
lp.radmaexp = radmaskexpo;
|
lp.radmaexp = radmaskexpo;
|
||||||
lp.chromaexp = chromaskexpo;
|
lp.chromaexp = chromaskexpo;
|
||||||
lp.gammaexp = gammaskexpo;
|
lp.gammaexp = gammaskexpo;
|
||||||
@ -8236,8 +8245,18 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
float meanfab = 0.f;
|
float meanfab = 0.f;
|
||||||
float fab = 0.f;
|
float fab = 0.f;
|
||||||
|
|
||||||
mean_fab(begx, begy, cx, cy, xEn, yEn, bufcolorig, transformed, original, fab, meanfab, 0.f);
|
mean_fab(begx, begy, cx, cy, xEn, yEn, bufcolorig, transformed, original, fab, meanfab, lp.chromacol);
|
||||||
|
|
||||||
|
LUTf *gammamask = nullptr;
|
||||||
|
LUTf lutTonemask;
|
||||||
|
lutTonemask(65536);
|
||||||
|
double pwr = 1.0 / lp.gammacol;
|
||||||
|
double gamm = lp.gammacol;
|
||||||
|
double ts = lp.slomacol;
|
||||||
|
double gamm2 = lp.gammacol;
|
||||||
|
|
||||||
|
gamma_mask(lutTonemask, pwr, gamm, ts, gamm2);
|
||||||
|
gammamask = &lutTonemask;
|
||||||
|
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for schedule(dynamic,16)
|
#pragma omp parallel for schedule(dynamic,16)
|
||||||
@ -8321,7 +8340,6 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
guid[ir][jr] = bufcolorig->L[ir][jr] / 32768.f;
|
guid[ir][jr] = bufcolorig->L[ir][jr] / 32768.f;
|
||||||
}
|
}
|
||||||
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((lp.showmaskcolmet == 2 || lp.enaColorMask || lp.showmaskcolmet == 3) && lp.radmacol > 0.f) {
|
if ((lp.showmaskcolmet == 2 || lp.enaColorMask || lp.showmaskcolmet == 3) && lp.radmacol > 0.f) {
|
||||||
@ -8334,7 +8352,10 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
|
|
||||||
for (int ir = 0; ir < bfh; ir++) //fill with 0
|
for (int ir = 0; ir < bfh; ir++) //fill with 0
|
||||||
for (int jr = 0; jr < bfw; jr++) {
|
for (int jr = 0; jr < bfw; jr++) {
|
||||||
|
float L_;
|
||||||
bufmaskblurcol->L[ir][jr] = LIM01(ble[ir][jr]) * 32768.f;
|
bufmaskblurcol->L[ir][jr] = LIM01(ble[ir][jr]) * 32768.f;
|
||||||
|
L_ = 2.f * bufmaskblurcol->L[ir][jr];
|
||||||
|
bufmaskblurcol->L[ir][jr] = 0.5f * (*gammamask)[L_];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -676,6 +676,9 @@ enum ProcEventCode {
|
|||||||
Evlocallabgammaskexp = 646,
|
Evlocallabgammaskexp = 646,
|
||||||
Evlocallabslomaskexp = 647,
|
Evlocallabslomaskexp = 647,
|
||||||
Evlocallabsoftradiusexp = 648,
|
Evlocallabsoftradiusexp = 648,
|
||||||
|
Evlocallabchromaskcol = 649,
|
||||||
|
Evlocallabgammaskcol = 650,
|
||||||
|
Evlocallabslomaskcol = 651,
|
||||||
|
|
||||||
NUMOFEVENTS
|
NUMOFEVENTS
|
||||||
};
|
};
|
||||||
|
@ -2374,6 +2374,9 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
|||||||
blurcolde(5),
|
blurcolde(5),
|
||||||
blendmaskcol(0),
|
blendmaskcol(0),
|
||||||
radmaskcol(10.0),
|
radmaskcol(10.0),
|
||||||
|
chromaskcol(0.0),
|
||||||
|
gammaskcol(1.0),
|
||||||
|
slomaskcol(0.0),
|
||||||
qualitycurveMethod("none"),
|
qualitycurveMethod("none"),
|
||||||
gridMethod("one"),
|
gridMethod("one"),
|
||||||
llcurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0},
|
llcurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0},
|
||||||
@ -2545,6 +2548,9 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
|||||||
&& structcol == other.structcol
|
&& structcol == other.structcol
|
||||||
&& blendmaskcol == other.blendmaskcol
|
&& blendmaskcol == other.blendmaskcol
|
||||||
&& radmaskcol == other.radmaskcol
|
&& radmaskcol == other.radmaskcol
|
||||||
|
&& chromaskcol == other.chromaskcol
|
||||||
|
&& gammaskcol == other.gammaskcol
|
||||||
|
&& slomaskcol == other.slomaskcol
|
||||||
&& qualitycurveMethod == other.qualitycurveMethod
|
&& qualitycurveMethod == other.qualitycurveMethod
|
||||||
&& gridMethod == other.gridMethod
|
&& gridMethod == other.gridMethod
|
||||||
&& llcurve == other.llcurve
|
&& llcurve == other.llcurve
|
||||||
@ -3675,6 +3681,9 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
|||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).blurcolde, "Locallab", "Blurcolde_" + std::to_string(i), spot.blurcolde, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).blurcolde, "Locallab", "Blurcolde_" + std::to_string(i), spot.blurcolde, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).blendmaskcol, "Locallab", "Blendmaskcol_" + std::to_string(i), spot.blendmaskcol, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).blendmaskcol, "Locallab", "Blendmaskcol_" + std::to_string(i), spot.blendmaskcol, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).radmaskcol, "Locallab", "Radmaskcol_" + std::to_string(i), spot.radmaskcol, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).radmaskcol, "Locallab", "Radmaskcol_" + std::to_string(i), spot.radmaskcol, keyFile);
|
||||||
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).chromaskcol, "Locallab", "Chromaskcol_" + std::to_string(i), spot.chromaskcol, keyFile);
|
||||||
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).gammaskcol, "Locallab", "Gammaskcol_" + std::to_string(i), spot.gammaskcol, keyFile);
|
||||||
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).slomaskcol, "Locallab", "Slomaskcol_" + std::to_string(i), spot.slomaskcol, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).qualitycurveMethod, "Locallab", "QualityCurveMethod_" + std::to_string(i), spot.qualitycurveMethod, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).qualitycurveMethod, "Locallab", "QualityCurveMethod_" + std::to_string(i), spot.qualitycurveMethod, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).gridMethod, "Locallab", "gridMethod_" + std::to_string(i), spot.gridMethod, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).gridMethod, "Locallab", "gridMethod_" + std::to_string(i), spot.gridMethod, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).llcurve, "Locallab", "LLCurve_" + std::to_string(i), spot.llcurve, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).llcurve, "Locallab", "LLCurve_" + std::to_string(i), spot.llcurve, keyFile);
|
||||||
@ -4932,6 +4941,9 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
|||||||
assignFromKeyfile(keyFile, "Locallab", "Blurcolde_" + std::to_string(i), pedited, spot.blurcolde, spotEdited.blurcolde);
|
assignFromKeyfile(keyFile, "Locallab", "Blurcolde_" + std::to_string(i), pedited, spot.blurcolde, spotEdited.blurcolde);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Blendmaskcol_" + std::to_string(i), pedited, spot.blendmaskcol, spotEdited.blendmaskcol);
|
assignFromKeyfile(keyFile, "Locallab", "Blendmaskcol_" + std::to_string(i), pedited, spot.blendmaskcol, spotEdited.blendmaskcol);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Radmaskcol_" + std::to_string(i), pedited, spot.radmaskcol, spotEdited.radmaskcol);
|
assignFromKeyfile(keyFile, "Locallab", "Radmaskcol_" + std::to_string(i), pedited, spot.radmaskcol, spotEdited.radmaskcol);
|
||||||
|
assignFromKeyfile(keyFile, "Locallab", "Chromaskcol_" + std::to_string(i), pedited, spot.chromaskcol, spotEdited.chromaskcol);
|
||||||
|
assignFromKeyfile(keyFile, "Locallab", "Gammaskcol_" + std::to_string(i), pedited, spot.gammaskcol, spotEdited.gammaskcol);
|
||||||
|
assignFromKeyfile(keyFile, "Locallab", "Slomaskcol_" + std::to_string(i), pedited, spot.slomaskcol, spotEdited.slomaskcol);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "QualityCurveMethod_" + std::to_string(i), pedited, spot.qualitycurveMethod, spotEdited.qualitycurveMethod);
|
assignFromKeyfile(keyFile, "Locallab", "QualityCurveMethod_" + std::to_string(i), pedited, spot.qualitycurveMethod, spotEdited.qualitycurveMethod);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "gridMethod_" + std::to_string(i), pedited, spot.gridMethod, spotEdited.gridMethod);
|
assignFromKeyfile(keyFile, "Locallab", "gridMethod_" + std::to_string(i), pedited, spot.gridMethod, spotEdited.gridMethod);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "LLCurve_" + std::to_string(i), pedited, spot.llcurve, spotEdited.llcurve);
|
assignFromKeyfile(keyFile, "Locallab", "LLCurve_" + std::to_string(i), pedited, spot.llcurve, spotEdited.llcurve);
|
||||||
|
@ -974,6 +974,9 @@ struct LocallabParams {
|
|||||||
int blurcolde;
|
int blurcolde;
|
||||||
int blendmaskcol;
|
int blendmaskcol;
|
||||||
double radmaskcol;
|
double radmaskcol;
|
||||||
|
double chromaskcol;
|
||||||
|
double gammaskcol;
|
||||||
|
double slomaskcol;
|
||||||
Glib::ustring qualitycurveMethod;
|
Glib::ustring qualitycurveMethod;
|
||||||
Glib::ustring gridMethod;
|
Glib::ustring gridMethod;
|
||||||
std::vector<double> llcurve;
|
std::vector<double> llcurve;
|
||||||
|
@ -675,7 +675,10 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
LUMINANCECURVE, //EvLocallabchromaskexp
|
LUMINANCECURVE, //EvLocallabchromaskexp
|
||||||
LUMINANCECURVE, //EvLocallabgammaskexp
|
LUMINANCECURVE, //EvLocallabgammaskexp
|
||||||
LUMINANCECURVE, //EvLocallabslomaskexp
|
LUMINANCECURVE, //EvLocallabslomaskexp
|
||||||
LUMINANCECURVE //EvLocallabsoftradiusexp
|
LUMINANCECURVE, //EvLocallabsoftradiusexp
|
||||||
|
LUMINANCECURVE, //EvLocallabchromaskcol
|
||||||
|
LUMINANCECURVE, //EvLocallabgammaskcol
|
||||||
|
LUMINANCECURVE //EvLocallabslomaskcol
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -249,6 +249,8 @@ private:
|
|||||||
bool button1Released();
|
bool button1Released();
|
||||||
bool drag1(int modifierKey);
|
bool drag1(int modifierKey);
|
||||||
|
|
||||||
|
using ToolPanel::setDefaults;
|
||||||
|
|
||||||
class ControlSpots:
|
class ControlSpots:
|
||||||
public Gtk::TreeModel::ColumnRecord
|
public Gtk::TreeModel::ColumnRecord
|
||||||
{
|
{
|
||||||
|
@ -86,6 +86,9 @@ Locallab::Locallab():
|
|||||||
blurcolde(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLURDE"), 2, 100, 1, 5))),
|
blurcolde(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLURDE"), 2, 100, 1, 5))),
|
||||||
blendmaskcol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLENDMASKCOL"), -100, 100, 1, 0))),
|
blendmaskcol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLENDMASKCOL"), -100, 100, 1, 0))),
|
||||||
radmaskcol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_RADMASKCOL"), 0.0, 100.0, 0.1, 10.))),
|
radmaskcol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_RADMASKCOL"), 0.0, 100.0, 0.1, 10.))),
|
||||||
|
chromaskcol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CHROMASKCOL"), -100.0, 100.0, 0.1, 0.))),
|
||||||
|
gammaskcol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GAMMASKCOL"), 0.25, 4.0, 0.01, 1.))),
|
||||||
|
slomaskcol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SLOMASKCOL"), 0.0, 15.0, 0.1, 0.))),
|
||||||
// Exposure
|
// Exposure
|
||||||
expcomp(Gtk::manage(new Adjuster(M("TP_EXPOSURE_EXPCOMP"), -2.0, 4.0, 0.05, 0.0))),
|
expcomp(Gtk::manage(new Adjuster(M("TP_EXPOSURE_EXPCOMP"), -2.0, 4.0, 0.05, 0.0))),
|
||||||
hlcompr(Gtk::manage(new Adjuster(M("TP_EXPOSURE_COMPRHIGHLIGHTS"), 0, 500, 1, 0))),
|
hlcompr(Gtk::manage(new Adjuster(M("TP_EXPOSURE_COMPRHIGHLIGHTS"), 0, 500, 1, 0))),
|
||||||
@ -261,6 +264,9 @@ Locallab::Locallab():
|
|||||||
|
|
||||||
blendmaskcol->setAdjusterListener(this);
|
blendmaskcol->setAdjusterListener(this);
|
||||||
radmaskcol->setAdjusterListener(this);
|
radmaskcol->setAdjusterListener(this);
|
||||||
|
chromaskcol->setAdjusterListener(this);
|
||||||
|
gammaskcol->setAdjusterListener(this);
|
||||||
|
slomaskcol->setAdjusterListener(this);
|
||||||
|
|
||||||
qualitycurveMethod->append(M("TP_LOCALLAB_CURVNONE"));
|
qualitycurveMethod->append(M("TP_LOCALLAB_CURVNONE"));
|
||||||
qualitycurveMethod->append(M("TP_LOCALLAB_CURVCURR"));
|
qualitycurveMethod->append(M("TP_LOCALLAB_CURVCURR"));
|
||||||
@ -404,6 +410,9 @@ Locallab::Locallab():
|
|||||||
maskcolBox->pack_start(*maskCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
|
maskcolBox->pack_start(*maskCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
|
||||||
maskcolBox->pack_start(*blendmaskcol, Gtk::PACK_SHRINK, 0);
|
maskcolBox->pack_start(*blendmaskcol, Gtk::PACK_SHRINK, 0);
|
||||||
maskcolBox->pack_start(*radmaskcol, Gtk::PACK_SHRINK, 0);
|
maskcolBox->pack_start(*radmaskcol, Gtk::PACK_SHRINK, 0);
|
||||||
|
maskcolBox->pack_start(*chromaskcol, Gtk::PACK_SHRINK, 0);
|
||||||
|
maskcolBox->pack_start(*gammaskcol, Gtk::PACK_SHRINK, 0);
|
||||||
|
maskcolBox->pack_start(*slomaskcol, Gtk::PACK_SHRINK, 0);
|
||||||
maskcolFrame->add(*maskcolBox);
|
maskcolFrame->add(*maskcolBox);
|
||||||
colorBox->pack_start(*maskcolFrame);
|
colorBox->pack_start(*maskcolFrame);
|
||||||
|
|
||||||
@ -1694,6 +1703,9 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pp->locallab.spots.at(pp->locallab.selspot).HHmaskcurve = HHmaskshape->getCurve();
|
pp->locallab.spots.at(pp->locallab.selspot).HHmaskcurve = HHmaskshape->getCurve();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).blendmaskcol = blendmaskcol->getIntValue();
|
pp->locallab.spots.at(pp->locallab.selspot).blendmaskcol = blendmaskcol->getIntValue();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).radmaskcol = radmaskcol->getValue();
|
pp->locallab.spots.at(pp->locallab.selspot).radmaskcol = radmaskcol->getValue();
|
||||||
|
pp->locallab.spots.at(pp->locallab.selspot).chromaskcol = chromaskcol->getValue();
|
||||||
|
pp->locallab.spots.at(pp->locallab.selspot).gammaskcol = gammaskcol->getValue();
|
||||||
|
pp->locallab.spots.at(pp->locallab.selspot).slomaskcol = slomaskcol->getValue();
|
||||||
// Exposure
|
// Exposure
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).expexpose = expexpose->getEnabled();
|
pp->locallab.spots.at(pp->locallab.selspot).expexpose = expexpose->getEnabled();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).expcomp = expcomp->getValue();
|
pp->locallab.spots.at(pp->locallab.selspot).expcomp = expcomp->getValue();
|
||||||
@ -1882,6 +1894,9 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pe->locallab.spots.at(pp->locallab.selspot).blurcolde = pe->locallab.spots.at(pp->locallab.selspot).blurcolde || blurcolde->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).blurcolde = pe->locallab.spots.at(pp->locallab.selspot).blurcolde || blurcolde->getEditedState();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).blendmaskcol = pe->locallab.spots.at(pp->locallab.selspot).blendmaskcol || blendmaskcol->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).blendmaskcol = pe->locallab.spots.at(pp->locallab.selspot).blendmaskcol || blendmaskcol->getEditedState();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).radmaskcol = pe->locallab.spots.at(pp->locallab.selspot).radmaskcol || radmaskcol->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).radmaskcol = pe->locallab.spots.at(pp->locallab.selspot).radmaskcol || radmaskcol->getEditedState();
|
||||||
|
pe->locallab.spots.at(pp->locallab.selspot).chromaskcol = pe->locallab.spots.at(pp->locallab.selspot).chromaskcol || chromaskcol->getEditedState();
|
||||||
|
pe->locallab.spots.at(pp->locallab.selspot).gammaskcol = pe->locallab.spots.at(pp->locallab.selspot).gammaskcol || gammaskcol->getEditedState();
|
||||||
|
pe->locallab.spots.at(pp->locallab.selspot).slomaskcol = pe->locallab.spots.at(pp->locallab.selspot).slomaskcol || slomaskcol->getEditedState();
|
||||||
// Exposure
|
// Exposure
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).expexpose = pe->locallab.spots.at(pp->locallab.selspot).expexpose || !expexpose->get_inconsistent();
|
pe->locallab.spots.at(pp->locallab.selspot).expexpose = pe->locallab.spots.at(pp->locallab.selspot).expexpose || !expexpose->get_inconsistent();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).expcomp = pe->locallab.spots.at(pp->locallab.selspot).expcomp || expcomp->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).expcomp = pe->locallab.spots.at(pp->locallab.selspot).expcomp || expcomp->getEditedState();
|
||||||
@ -2056,6 +2071,9 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pedited->locallab.spots.at(pp->locallab.selspot).blurcolde = pedited->locallab.spots.at(pp->locallab.selspot).blurcolde || blurcolde->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).blurcolde = pedited->locallab.spots.at(pp->locallab.selspot).blurcolde || blurcolde->getEditedState();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).blendmaskcol = pedited->locallab.spots.at(pp->locallab.selspot).blendmaskcol || blendmaskcol->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).blendmaskcol = pedited->locallab.spots.at(pp->locallab.selspot).blendmaskcol || blendmaskcol->getEditedState();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).radmaskcol = pedited->locallab.spots.at(pp->locallab.selspot).radmaskcol || radmaskcol->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).radmaskcol = pedited->locallab.spots.at(pp->locallab.selspot).radmaskcol || radmaskcol->getEditedState();
|
||||||
|
pedited->locallab.spots.at(pp->locallab.selspot).chromaskcol = pedited->locallab.spots.at(pp->locallab.selspot).chromaskcol || chromaskcol->getEditedState();
|
||||||
|
pedited->locallab.spots.at(pp->locallab.selspot).gammaskcol = pedited->locallab.spots.at(pp->locallab.selspot).gammaskcol || gammaskcol->getEditedState();
|
||||||
|
pedited->locallab.spots.at(pp->locallab.selspot).slomaskcol = pedited->locallab.spots.at(pp->locallab.selspot).slomaskcol || slomaskcol->getEditedState();
|
||||||
// Exposure
|
// Exposure
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).expexpose = pedited->locallab.spots.at(pp->locallab.selspot).expexpose || !expexpose->get_inconsistent();
|
pedited->locallab.spots.at(pp->locallab.selspot).expexpose = pedited->locallab.spots.at(pp->locallab.selspot).expexpose || !expexpose->get_inconsistent();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).expcomp = pedited->locallab.spots.at(pp->locallab.selspot).expcomp || expcomp->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).expcomp = pedited->locallab.spots.at(pp->locallab.selspot).expcomp || expcomp->getEditedState();
|
||||||
@ -2951,6 +2969,9 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
|||||||
blurcolde->setDefault((double)defSpot->blurcolde);
|
blurcolde->setDefault((double)defSpot->blurcolde);
|
||||||
blendmaskcol->setDefault((double)defSpot->blendmaskcol);
|
blendmaskcol->setDefault((double)defSpot->blendmaskcol);
|
||||||
radmaskcol->setDefault(defSpot->radmaskcol);
|
radmaskcol->setDefault(defSpot->radmaskcol);
|
||||||
|
chromaskcol->setDefault(defSpot->chromaskcol);
|
||||||
|
gammaskcol->setDefault(defSpot->gammaskcol);
|
||||||
|
slomaskcol->setDefault(defSpot->slomaskcol);
|
||||||
// Exposure
|
// Exposure
|
||||||
expcomp->setDefault(defSpot->expcomp);
|
expcomp->setDefault(defSpot->expcomp);
|
||||||
hlcompr->setDefault((double)defSpot->hlcompr);
|
hlcompr->setDefault((double)defSpot->hlcompr);
|
||||||
@ -3052,6 +3073,9 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
|||||||
blurcolde->setDefaultEditedState(Irrelevant);
|
blurcolde->setDefaultEditedState(Irrelevant);
|
||||||
blendmaskcol->setDefaultEditedState(Irrelevant);
|
blendmaskcol->setDefaultEditedState(Irrelevant);
|
||||||
radmaskcol->setDefaultEditedState(Irrelevant);
|
radmaskcol->setDefaultEditedState(Irrelevant);
|
||||||
|
chromaskcol->setDefaultEditedState(Irrelevant);
|
||||||
|
gammaskcol->setDefaultEditedState(Irrelevant);
|
||||||
|
slomaskcol->setDefaultEditedState(Irrelevant);
|
||||||
// Exposure
|
// Exposure
|
||||||
expcomp->setDefaultEditedState(Irrelevant);
|
expcomp->setDefaultEditedState(Irrelevant);
|
||||||
hlcompr->setDefaultEditedState(Irrelevant);
|
hlcompr->setDefaultEditedState(Irrelevant);
|
||||||
@ -3157,6 +3181,9 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
|||||||
blurcolde->setDefaultEditedState(defSpotState->blurcolde ? Edited : UnEdited);
|
blurcolde->setDefaultEditedState(defSpotState->blurcolde ? Edited : UnEdited);
|
||||||
blendmaskcol->setDefaultEditedState(defSpotState->blendmaskcol ? Edited : UnEdited);
|
blendmaskcol->setDefaultEditedState(defSpotState->blendmaskcol ? Edited : UnEdited);
|
||||||
radmaskcol->setDefaultEditedState(defSpotState->radmaskcol ? Edited : UnEdited);
|
radmaskcol->setDefaultEditedState(defSpotState->radmaskcol ? Edited : UnEdited);
|
||||||
|
chromaskcol->setDefaultEditedState(defSpotState->chromaskcol ? Edited : UnEdited);
|
||||||
|
gammaskcol->setDefaultEditedState(defSpotState->gammaskcol ? Edited : UnEdited);
|
||||||
|
slomaskcol->setDefaultEditedState(defSpotState->slomaskcol ? Edited : UnEdited);
|
||||||
// Exposure
|
// Exposure
|
||||||
expcomp->setDefaultEditedState(defSpotState->expcomp ? Edited : UnEdited);
|
expcomp->setDefaultEditedState(defSpotState->expcomp ? Edited : UnEdited);
|
||||||
hlcompr->setDefaultEditedState(defSpotState->hlcompr ? Edited : UnEdited);
|
hlcompr->setDefaultEditedState(defSpotState->hlcompr ? Edited : UnEdited);
|
||||||
@ -3342,6 +3369,24 @@ void Locallab::adjusterChanged(Adjuster * a, double newval)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (a == chromaskcol) {
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(Evlocallabchromaskcol, chromaskcol->getTextValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (a == gammaskcol) {
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(Evlocallabgammaskcol, gammaskcol->getTextValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (a == slomaskcol) {
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(Evlocallabslomaskcol, slomaskcol->getTextValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Exposure
|
// Exposure
|
||||||
@ -3889,6 +3934,9 @@ void Locallab::setBatchMode(bool batchMode)
|
|||||||
blurcolde->showEditedCB();
|
blurcolde->showEditedCB();
|
||||||
blendmaskcol->showEditedCB();
|
blendmaskcol->showEditedCB();
|
||||||
radmaskcol->showEditedCB();
|
radmaskcol->showEditedCB();
|
||||||
|
chromaskcol->showEditedCB();
|
||||||
|
gammaskcol->showEditedCB();
|
||||||
|
slomaskcol->showEditedCB();
|
||||||
// Exposure
|
// Exposure
|
||||||
expcomp->showEditedCB();
|
expcomp->showEditedCB();
|
||||||
hlcompr->showEditedCB();
|
hlcompr->showEditedCB();
|
||||||
@ -4058,7 +4106,9 @@ void Locallab::unsubscribe()
|
|||||||
void Locallab::colorForValue(double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller *caller)
|
void Locallab::colorForValue(double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller *caller)
|
||||||
{
|
{
|
||||||
|
|
||||||
float R, G, B;
|
float R = 0.f;
|
||||||
|
float G = 0.f;
|
||||||
|
float B = 0.f;
|
||||||
|
|
||||||
if (elemType == ColorCaller::CCET_VERTICAL_BAR) {
|
if (elemType == ColorCaller::CCET_VERTICAL_BAR) {
|
||||||
valY = 0.5;
|
valY = 0.5;
|
||||||
@ -4262,6 +4312,9 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
|||||||
blurcolde->setValue(pp->locallab.spots.at(index).blurcolde);
|
blurcolde->setValue(pp->locallab.spots.at(index).blurcolde);
|
||||||
blendmaskcol->setValue(pp->locallab.spots.at(index).blendmaskcol);
|
blendmaskcol->setValue(pp->locallab.spots.at(index).blendmaskcol);
|
||||||
radmaskcol->setValue(pp->locallab.spots.at(index).radmaskcol);
|
radmaskcol->setValue(pp->locallab.spots.at(index).radmaskcol);
|
||||||
|
chromaskcol->setValue(pp->locallab.spots.at(index).chromaskcol);
|
||||||
|
gammaskcol->setValue(pp->locallab.spots.at(index).gammaskcol);
|
||||||
|
slomaskcol->setValue(pp->locallab.spots.at(index).slomaskcol);
|
||||||
|
|
||||||
// Exposure
|
// Exposure
|
||||||
expexpose->setEnabled(pp->locallab.spots.at(index).expexpose);
|
expexpose->setEnabled(pp->locallab.spots.at(index).expexpose);
|
||||||
@ -4479,6 +4532,9 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
|||||||
blurcolde->setEditedState(spotState->blurcolde ? Edited : UnEdited);
|
blurcolde->setEditedState(spotState->blurcolde ? Edited : UnEdited);
|
||||||
blendmaskcol->setEditedState(spotState->blendmaskcol ? Edited : UnEdited);
|
blendmaskcol->setEditedState(spotState->blendmaskcol ? Edited : UnEdited);
|
||||||
radmaskcol->setEditedState(spotState->radmaskcol ? Edited : UnEdited);
|
radmaskcol->setEditedState(spotState->radmaskcol ? Edited : UnEdited);
|
||||||
|
chromaskcol->setEditedState(spotState->chromaskcol ? Edited : UnEdited);
|
||||||
|
gammaskcol->setEditedState(spotState->gammaskcol ? Edited : UnEdited);
|
||||||
|
slomaskcol->setEditedState(spotState->slomaskcol ? Edited : UnEdited);
|
||||||
|
|
||||||
// Exposure
|
// Exposure
|
||||||
expexpose->set_inconsistent(!spotState->expexpose);
|
expexpose->set_inconsistent(!spotState->expexpose);
|
||||||
|
@ -104,6 +104,9 @@ private:
|
|||||||
Adjuster* const blurcolde;
|
Adjuster* const blurcolde;
|
||||||
Adjuster* const blendmaskcol;
|
Adjuster* const blendmaskcol;
|
||||||
Adjuster* const radmaskcol;
|
Adjuster* const radmaskcol;
|
||||||
|
Adjuster* const chromaskcol;
|
||||||
|
Adjuster* const gammaskcol;
|
||||||
|
Adjuster* const slomaskcol;
|
||||||
// Exposure
|
// Exposure
|
||||||
Adjuster* const expcomp;
|
Adjuster* const expcomp;
|
||||||
Adjuster* const hlcompr;
|
Adjuster* const hlcompr;
|
||||||
|
@ -963,6 +963,9 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
|||||||
locallab.spots.at(j).blurcolde = locallab.spots.at(j).blurcolde && pSpot.blurcolde == otherSpot.blurcolde;
|
locallab.spots.at(j).blurcolde = locallab.spots.at(j).blurcolde && pSpot.blurcolde == otherSpot.blurcolde;
|
||||||
locallab.spots.at(j).blendmaskcol = locallab.spots.at(j).blendmaskcol && pSpot.blendmaskcol == otherSpot.blendmaskcol;
|
locallab.spots.at(j).blendmaskcol = locallab.spots.at(j).blendmaskcol && pSpot.blendmaskcol == otherSpot.blendmaskcol;
|
||||||
locallab.spots.at(j).radmaskcol = locallab.spots.at(j).radmaskcol && pSpot.radmaskcol == otherSpot.radmaskcol;
|
locallab.spots.at(j).radmaskcol = locallab.spots.at(j).radmaskcol && pSpot.radmaskcol == otherSpot.radmaskcol;
|
||||||
|
locallab.spots.at(j).chromaskcol = locallab.spots.at(j).chromaskcol && pSpot.chromaskcol == otherSpot.chromaskcol;
|
||||||
|
locallab.spots.at(j).gammaskcol = locallab.spots.at(j).gammaskcol && pSpot.gammaskcol == otherSpot.gammaskcol;
|
||||||
|
locallab.spots.at(j).slomaskcol = locallab.spots.at(j).slomaskcol && pSpot.slomaskcol == otherSpot.slomaskcol;
|
||||||
locallab.spots.at(j).qualitycurveMethod = locallab.spots.at(j).qualitycurveMethod && pSpot.qualitycurveMethod == otherSpot.qualitycurveMethod;
|
locallab.spots.at(j).qualitycurveMethod = locallab.spots.at(j).qualitycurveMethod && pSpot.qualitycurveMethod == otherSpot.qualitycurveMethod;
|
||||||
locallab.spots.at(j).gridMethod = locallab.spots.at(j).gridMethod && pSpot.gridMethod == otherSpot.gridMethod;
|
locallab.spots.at(j).gridMethod = locallab.spots.at(j).gridMethod && pSpot.gridMethod == otherSpot.gridMethod;
|
||||||
locallab.spots.at(j).llcurve = locallab.spots.at(j).llcurve && pSpot.llcurve == otherSpot.llcurve;
|
locallab.spots.at(j).llcurve = locallab.spots.at(j).llcurve && pSpot.llcurve == otherSpot.llcurve;
|
||||||
@ -2661,6 +2664,18 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
|||||||
toEdit.locallab.spots.at(i).radmaskcol = mods.locallab.spots.at(i).radmaskcol;
|
toEdit.locallab.spots.at(i).radmaskcol = mods.locallab.spots.at(i).radmaskcol;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (locallab.spots.at(i).chromaskcol) {
|
||||||
|
toEdit.locallab.spots.at(i).chromaskcol = mods.locallab.spots.at(i).chromaskcol;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (locallab.spots.at(i).gammaskcol) {
|
||||||
|
toEdit.locallab.spots.at(i).gammaskcol = mods.locallab.spots.at(i).gammaskcol;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (locallab.spots.at(i).slomaskcol) {
|
||||||
|
toEdit.locallab.spots.at(i).slomaskcol = mods.locallab.spots.at(i).slomaskcol;
|
||||||
|
}
|
||||||
|
|
||||||
if (locallab.spots.at(i).qualitycurveMethod) {
|
if (locallab.spots.at(i).qualitycurveMethod) {
|
||||||
toEdit.locallab.spots.at(i).qualitycurveMethod = mods.locallab.spots.at(i).qualitycurveMethod;
|
toEdit.locallab.spots.at(i).qualitycurveMethod = mods.locallab.spots.at(i).qualitycurveMethod;
|
||||||
}
|
}
|
||||||
@ -4112,6 +4127,9 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
|||||||
blurcolde(v),
|
blurcolde(v),
|
||||||
blendmaskcol(v),
|
blendmaskcol(v),
|
||||||
radmaskcol(v),
|
radmaskcol(v),
|
||||||
|
chromaskcol(v),
|
||||||
|
gammaskcol(v),
|
||||||
|
slomaskcol(v),
|
||||||
qualitycurveMethod(v),
|
qualitycurveMethod(v),
|
||||||
gridMethod(v),
|
gridMethod(v),
|
||||||
llcurve(v),
|
llcurve(v),
|
||||||
@ -4281,6 +4299,9 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
|||||||
blurcolde = v;
|
blurcolde = v;
|
||||||
blendmaskcol = v;
|
blendmaskcol = v;
|
||||||
radmaskcol = v;
|
radmaskcol = v;
|
||||||
|
chromaskcol = v;
|
||||||
|
gammaskcol = v;
|
||||||
|
slomaskcol = v;
|
||||||
qualitycurveMethod = v;
|
qualitycurveMethod = v;
|
||||||
gridMethod = v;
|
gridMethod = v;
|
||||||
llcurve = v;
|
llcurve = v;
|
||||||
|
@ -390,6 +390,9 @@ public:
|
|||||||
bool blurcolde;
|
bool blurcolde;
|
||||||
bool blendmaskcol;
|
bool blendmaskcol;
|
||||||
bool radmaskcol;
|
bool radmaskcol;
|
||||||
|
bool chromaskcol;
|
||||||
|
bool gammaskcol;
|
||||||
|
bool slomaskcol;
|
||||||
bool qualitycurveMethod;
|
bool qualitycurveMethod;
|
||||||
bool gridMethod;
|
bool gridMethod;
|
||||||
bool llcurve;
|
bool llcurve;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user