Save provisory work on toning
This commit is contained in:
parent
b0f73d7cd3
commit
a481b18e94
@ -821,6 +821,8 @@ HISTORY_MSG_SIGMAFIN;Final contrast Damper
|
|||||||
HISTORY_MSG_SIGMATON;Toning Damper
|
HISTORY_MSG_SIGMATON;Toning Damper
|
||||||
HISTORY_MSG_SIGMACOL;Chroma Damper
|
HISTORY_MSG_SIGMACOL;Chroma Damper
|
||||||
HISTORY_MSG_SIGMADIR;Dir Damper
|
HISTORY_MSG_SIGMADIR;Dir Damper
|
||||||
|
HISTORY_MSG_RANGEAB;Range ab
|
||||||
|
HISTORY_MSG_PROTAB;Protection
|
||||||
HISTORY_NEWSNAPSHOT;Add
|
HISTORY_NEWSNAPSHOT;Add
|
||||||
HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
|
HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
|
||||||
HISTORY_SNAPSHOT;Snapshot
|
HISTORY_SNAPSHOT;Snapshot
|
||||||
@ -2287,7 +2289,9 @@ TP_WAVELET_OPACITYWL;Local contrast
|
|||||||
TP_WAVELET_OPACITYWL_TOOLTIP;Modify the final local contrast at the end of the wavelet treatment.\n\nThe left side represents the smallest local contrast, progressing to the largest local contrast on the right.
|
TP_WAVELET_OPACITYWL_TOOLTIP;Modify the final local contrast at the end of the wavelet treatment.\n\nThe left side represents the smallest local contrast, progressing to the largest local contrast on the right.
|
||||||
TP_WAVELET_PASTEL;Pastel chroma
|
TP_WAVELET_PASTEL;Pastel chroma
|
||||||
TP_WAVELET_PROC;Process
|
TP_WAVELET_PROC;Process
|
||||||
|
TP_WAVELET_PROTAB;Protection
|
||||||
TP_WAVELET_RADIUS;Radius Shadows - Highlight
|
TP_WAVELET_RADIUS;Radius Shadows - Highlight
|
||||||
|
TP_WAVELET_RANGEAB;Range a and b %
|
||||||
TP_WAVELET_RE1;Reinforced
|
TP_WAVELET_RE1;Reinforced
|
||||||
TP_WAVELET_RE2;Unchanged
|
TP_WAVELET_RE2;Unchanged
|
||||||
TP_WAVELET_RE3;Reduced
|
TP_WAVELET_RE3;Reduced
|
||||||
|
@ -146,6 +146,19 @@ struct cont_params {
|
|||||||
float balchrom;
|
float balchrom;
|
||||||
float chromfi;
|
float chromfi;
|
||||||
float chromco;
|
float chromco;
|
||||||
|
float factor;
|
||||||
|
float scaling;
|
||||||
|
float scaledirect;
|
||||||
|
float a_scale;
|
||||||
|
float a_base;
|
||||||
|
float b_scale;
|
||||||
|
float b_base;
|
||||||
|
float a_high;
|
||||||
|
float a_low;
|
||||||
|
float b_high;
|
||||||
|
float b_low;
|
||||||
|
float rangeab;
|
||||||
|
float protab;
|
||||||
};
|
};
|
||||||
|
|
||||||
int wavNestedLevels = 1;
|
int wavNestedLevels = 1;
|
||||||
@ -318,6 +331,20 @@ void ImProcFunctions::ip_wavelet(LabImage * lab, LabImage * dst, int kall, const
|
|||||||
cp.mulC[m] = waparams.ch[m];
|
cp.mulC[m] = waparams.ch[m];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cp.factor = WaveletParams::LABGRID_CORR_MAX * 3.276f;
|
||||||
|
cp.scaling = WaveletParams::LABGRID_CORR_SCALE;
|
||||||
|
cp.scaledirect = WaveletParams::LABGRIDL_DIRECT_SCALE;
|
||||||
|
cp.a_scale = (params->wavelet.labgridAHigh - params->wavelet.labgridALow) / cp.factor / cp.scaling;
|
||||||
|
cp.a_base = params->wavelet.labgridALow / cp.scaling;
|
||||||
|
cp.b_scale = (params->wavelet.labgridBHigh - params->wavelet.labgridBLow) / cp.factor / cp.scaling;
|
||||||
|
cp.b_base = params->wavelet.labgridBLow / cp.scaling;
|
||||||
|
cp.a_high = 3.276f * params->wavelet.labgridAHigh;
|
||||||
|
cp.a_low = 3.276f * params->wavelet.labgridALow;
|
||||||
|
cp.b_high = 3.276f * params->wavelet.labgridBHigh;
|
||||||
|
cp.b_low = 3.276f * params->wavelet.labgridBLow;
|
||||||
|
cp.rangeab = params->wavelet.rangeab;
|
||||||
|
cp.protab = params->wavelet.protab;
|
||||||
|
|
||||||
if (waOpacityCurveRG) {
|
if (waOpacityCurveRG) {
|
||||||
cp.opaRG = true;
|
cp.opaRG = true;
|
||||||
}
|
}
|
||||||
@ -3851,7 +3878,7 @@ void ImProcFunctions::ContAllL(float *koeLi[12], float *maxkoeLi, bool lipschitz
|
|||||||
kba = 1.f - k2;
|
kba = 1.f - k2;
|
||||||
}
|
}
|
||||||
|
|
||||||
WavCoeffs_L[dir][i] *= (1.f + (kba -1.f) * beta[i]);
|
WavCoeffs_L[dir][i] *= (1.f + (kba - 1.f) * beta[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3910,10 +3937,11 @@ void ImProcFunctions::ContAllL(float *koeLi[12], float *maxkoeLi, bool lipschitz
|
|||||||
kba = 1.f - bal / k2;
|
kba = 1.f - bal / k2;
|
||||||
}
|
}
|
||||||
|
|
||||||
WavCoeffs_L[dir][i] *= (1.f + (kba -1.f) * beta[i]);
|
WavCoeffs_L[dir][i] *= (1.f + (kba - 1.f) * beta[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
delete[] beta;
|
delete[] beta;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4131,6 +4159,25 @@ void ImProcFunctions::ContAllAB(LabImage * labco, int maxlvl, float ** varhue, f
|
|||||||
float effect = cp.sigmaton;
|
float effect = cp.sigmaton;
|
||||||
float betaab = 0.f;
|
float betaab = 0.f;
|
||||||
float offs = 1.f;
|
float offs = 1.f;
|
||||||
|
float protec = 0.01f * cp.protab;
|
||||||
|
// printf("rangeab=%f \n", 0.01f * cp.rangeab);
|
||||||
|
// printf("protab=%f \n", 0.01f * cp.protab);
|
||||||
|
float aref1 = cp.a_high;
|
||||||
|
float bref1 = cp.b_high;
|
||||||
|
float aref2 = cp.a_low;
|
||||||
|
float bref2 = cp.b_low;
|
||||||
|
// printf("a1=%f b1=%f a2=%f b2=%f\n", aref1, bref1, aref2, bref2);
|
||||||
|
|
||||||
|
float arefplus1 = aref1 * (1.f + 0.1f * cp.rangeab);
|
||||||
|
float arefmoins1 = aref1 * (1.f - 0.1f * cp.rangeab);
|
||||||
|
float brefplus1 = bref1 * (1.f + 0.1f * cp.rangeab);
|
||||||
|
float brefmoins1 = bref1 * (1.f - 0.1f * cp.rangeab);
|
||||||
|
// printf("a1+=%f a1-=%f b+=%f b-=%f\n", arefplus1, arefmoins1, brefplus1, brefmoins1);
|
||||||
|
|
||||||
|
float arefplus2 = aref2 * (1.f + 0.1f * cp.rangeab);
|
||||||
|
float arefmoins2 = aref2 * (1.f - 0.1f * cp.rangeab);
|
||||||
|
float brefplus2 = bref2 * (1.f + 0.1f * cp.rangeab);
|
||||||
|
float brefmoins2 = bref2 * (1.f - 0.1f * cp.rangeab);
|
||||||
|
|
||||||
calceffect(level, meanab, sigmaab, mea, effect, offs);
|
calceffect(level, meanab, sigmaab, mea, effect, offs);
|
||||||
|
|
||||||
@ -4161,8 +4208,30 @@ void ImProcFunctions::ContAllAB(LabImage * labco, int maxlvl, float ** varhue, f
|
|||||||
betaab = 0.0f;
|
betaab = 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float kreduc1 = 1.f;
|
||||||
|
float kreduc2 = 1.f;
|
||||||
|
int ii = co / W_ab;
|
||||||
|
int jj = co - ii * W_ab;
|
||||||
|
cp.protab = 0.f;// always disabled provisory...
|
||||||
|
if (cp.protab > 0.f) {
|
||||||
|
|
||||||
float beta = (1024.f + 50.f * mulOpacity * betaab) / 1024.f ;
|
if ((labco->a[ii * 2][jj * 2] > arefmoins1) && (labco->a[ii * 2][jj * 2] < arefplus1)
|
||||||
|
&& (labco->b[ii * 2][jj * 2] > brefmoins1) && (labco->b[ii * 2][jj * 2] < brefplus1)) {
|
||||||
|
kreduc1 = protec;
|
||||||
|
// printf("p ");
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((labco->a[ii * 2][jj * 2] > arefmoins2) && (labco->a[ii * 2][jj * 2] < arefplus2)
|
||||||
|
&& (labco->b[ii * 2][jj * 2] > brefmoins2) && (labco->b[ii * 2][jj * 2] < brefplus2)) {
|
||||||
|
kreduc2 = protec;
|
||||||
|
// printf("P ");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// printf("pa1=%f pa2=%f\n", kreduc1, kredu2);
|
||||||
|
}
|
||||||
|
|
||||||
|
float beta = (1024.f + 50.f * mulOpacity * betaab * kreduc1 * kreduc2) / 1024.f ;
|
||||||
|
|
||||||
WavCoeffs_ab[dir][co] *= beta;
|
WavCoeffs_ab[dir][co] *= beta;
|
||||||
}
|
}
|
||||||
|
@ -2148,6 +2148,10 @@ bool ColorManagementParams::operator !=(const ColorManagementParams& other) cons
|
|||||||
return !(*this == other);
|
return !(*this == other);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const double WaveletParams::LABGRID_CORR_MAX = 12800.f;
|
||||||
|
const double WaveletParams::LABGRID_CORR_SCALE = 3.276f;
|
||||||
|
const double WaveletParams::LABGRIDL_DIRECT_SCALE = 41950.;
|
||||||
|
|
||||||
WaveletParams::WaveletParams() :
|
WaveletParams::WaveletParams() :
|
||||||
ccwcurve{
|
ccwcurve{
|
||||||
static_cast<double>(FCT_MinMaxCPoints),
|
static_cast<double>(FCT_MinMaxCPoints),
|
||||||
@ -2267,6 +2271,8 @@ WaveletParams::WaveletParams() :
|
|||||||
sigmaton(1.0),
|
sigmaton(1.0),
|
||||||
sigmacol(1.0),
|
sigmacol(1.0),
|
||||||
sigmadir(1.0),
|
sigmadir(1.0),
|
||||||
|
rangeab(20.0),
|
||||||
|
protab(0.0),
|
||||||
iter(0),
|
iter(0),
|
||||||
expcontrast(false),
|
expcontrast(false),
|
||||||
expchroma(false),
|
expchroma(false),
|
||||||
@ -2279,6 +2285,10 @@ WaveletParams::WaveletParams() :
|
|||||||
exptoning(false),
|
exptoning(false),
|
||||||
expnoise(false),
|
expnoise(false),
|
||||||
expclari(false),
|
expclari(false),
|
||||||
|
labgridALow(0.0),
|
||||||
|
labgridBLow(0.0),
|
||||||
|
labgridAHigh(0.0),
|
||||||
|
labgridBHigh(0.0),
|
||||||
Lmethod(4),
|
Lmethod(4),
|
||||||
CLmethod("all"),
|
CLmethod("all"),
|
||||||
Backmethod("grey"),
|
Backmethod("grey"),
|
||||||
@ -2385,7 +2395,13 @@ bool WaveletParams::operator ==(const WaveletParams& other) const
|
|||||||
&& sigmaton == other.sigmaton
|
&& sigmaton == other.sigmaton
|
||||||
&& sigmacol == other.sigmacol
|
&& sigmacol == other.sigmacol
|
||||||
&& sigmadir == other.sigmadir
|
&& sigmadir == other.sigmadir
|
||||||
|
&& rangeab == other.rangeab
|
||||||
|
&& protab == other.protab
|
||||||
&& iter == other.iter
|
&& iter == other.iter
|
||||||
|
&& labgridALow == other.labgridALow
|
||||||
|
&& labgridBLow == other.labgridBLow
|
||||||
|
&& labgridAHigh == other.labgridAHigh
|
||||||
|
&& labgridBHigh == other.labgridBHigh
|
||||||
&& expcontrast == other.expcontrast
|
&& expcontrast == other.expcontrast
|
||||||
&& expchroma == other.expchroma
|
&& expchroma == other.expchroma
|
||||||
&& [this, &other]() -> bool
|
&& [this, &other]() -> bool
|
||||||
@ -3532,6 +3548,8 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
|||||||
saveToKeyfile(!pedited || pedited->wavelet.sigmaton, "Wavelet", "Sigmaton", wavelet.sigmaton, keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.sigmaton, "Wavelet", "Sigmaton", wavelet.sigmaton, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->wavelet.sigmacol, "Wavelet", "Sigmacol", wavelet.sigmacol, keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.sigmacol, "Wavelet", "Sigmacol", wavelet.sigmacol, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->wavelet.sigmadir, "Wavelet", "Sigmadir", wavelet.sigmadir, keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.sigmadir, "Wavelet", "Sigmadir", wavelet.sigmadir, keyFile);
|
||||||
|
saveToKeyfile(!pedited || pedited->wavelet.rangeab, "Wavelet", "Rangeab", wavelet.rangeab, keyFile);
|
||||||
|
saveToKeyfile(!pedited || pedited->wavelet.protab, "Wavelet", "Protab", wavelet.protab, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->wavelet.iter, "Wavelet", "Iter", wavelet.iter, keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.iter, "Wavelet", "Iter", wavelet.iter, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->wavelet.thres, "Wavelet", "MaxLev", wavelet.thres, keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.thres, "Wavelet", "MaxLev", wavelet.thres, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->wavelet.Tilesmethod, "Wavelet", "TilesMethod", wavelet.Tilesmethod, keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.Tilesmethod, "Wavelet", "TilesMethod", wavelet.Tilesmethod, keyFile);
|
||||||
@ -3563,6 +3581,10 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
|||||||
saveToKeyfile(!pedited || pedited->wavelet.exptoning, "Wavelet", "Exptoning", wavelet.exptoning, keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.exptoning, "Wavelet", "Exptoning", wavelet.exptoning, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->wavelet.expnoise, "Wavelet", "Expnoise", wavelet.expnoise, keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.expnoise, "Wavelet", "Expnoise", wavelet.expnoise, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->wavelet.expclari, "Wavelet", "Expclari", wavelet.expclari, keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.expclari, "Wavelet", "Expclari", wavelet.expclari, keyFile);
|
||||||
|
saveToKeyfile(!pedited || pedited->wavelet.labgridALow, "Wavelet", "LabGridALow", wavelet.labgridALow, keyFile);
|
||||||
|
saveToKeyfile(!pedited || pedited->wavelet.labgridBLow, "Wavelet", "LabGridBLow", wavelet.labgridBLow, keyFile);
|
||||||
|
saveToKeyfile(!pedited || pedited->wavelet.labgridAHigh, "Wavelet", "LabGridAHigh", wavelet.labgridAHigh, keyFile);
|
||||||
|
saveToKeyfile(!pedited || pedited->wavelet.labgridBHigh, "Wavelet", "LabGridBHigh", wavelet.labgridBHigh, keyFile);
|
||||||
|
|
||||||
for (int i = 0; i < 9; i++) {
|
for (int i = 0; i < 9; i++) {
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
@ -4716,6 +4738,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
|||||||
assignFromKeyfile(keyFile, "Wavelet", "Sigmaton", pedited, wavelet.sigmaton, pedited->wavelet.sigmaton);
|
assignFromKeyfile(keyFile, "Wavelet", "Sigmaton", pedited, wavelet.sigmaton, pedited->wavelet.sigmaton);
|
||||||
assignFromKeyfile(keyFile, "Wavelet", "Sigmacol", pedited, wavelet.sigmacol, pedited->wavelet.sigmacol);
|
assignFromKeyfile(keyFile, "Wavelet", "Sigmacol", pedited, wavelet.sigmacol, pedited->wavelet.sigmacol);
|
||||||
assignFromKeyfile(keyFile, "Wavelet", "Sigmadir", pedited, wavelet.sigmadir, pedited->wavelet.sigmadir);
|
assignFromKeyfile(keyFile, "Wavelet", "Sigmadir", pedited, wavelet.sigmadir, pedited->wavelet.sigmadir);
|
||||||
|
assignFromKeyfile(keyFile, "Wavelet", "Rangeab", pedited, wavelet.rangeab, pedited->wavelet.rangeab);
|
||||||
|
assignFromKeyfile(keyFile, "Wavelet", "Protab", pedited, wavelet.protab, pedited->wavelet.protab);
|
||||||
assignFromKeyfile(keyFile, "Wavelet", "Iter", pedited, wavelet.iter, pedited->wavelet.iter);
|
assignFromKeyfile(keyFile, "Wavelet", "Iter", pedited, wavelet.iter, pedited->wavelet.iter);
|
||||||
assignFromKeyfile(keyFile, "Wavelet", "Median", pedited, wavelet.median, pedited->wavelet.median);
|
assignFromKeyfile(keyFile, "Wavelet", "Median", pedited, wavelet.median, pedited->wavelet.median);
|
||||||
assignFromKeyfile(keyFile, "Wavelet", "Medianlev", pedited, wavelet.medianlev, pedited->wavelet.medianlev);
|
assignFromKeyfile(keyFile, "Wavelet", "Medianlev", pedited, wavelet.medianlev, pedited->wavelet.medianlev);
|
||||||
@ -4740,6 +4764,10 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
|||||||
assignFromKeyfile(keyFile, "Wavelet", "Showmask", pedited, wavelet.showmask, pedited->wavelet.showmask);
|
assignFromKeyfile(keyFile, "Wavelet", "Showmask", pedited, wavelet.showmask, pedited->wavelet.showmask);
|
||||||
assignFromKeyfile(keyFile, "Wavelet", "Oldsh", pedited, wavelet.oldsh, pedited->wavelet.oldsh);
|
assignFromKeyfile(keyFile, "Wavelet", "Oldsh", pedited, wavelet.oldsh, pedited->wavelet.oldsh);
|
||||||
assignFromKeyfile(keyFile, "Wavelet", "TMr", pedited, wavelet.tmr, pedited->wavelet.tmr);
|
assignFromKeyfile(keyFile, "Wavelet", "TMr", pedited, wavelet.tmr, pedited->wavelet.tmr);
|
||||||
|
assignFromKeyfile(keyFile, "Wavelet", "LabGridALow", pedited, wavelet.labgridALow, pedited->wavelet.labgridALow);
|
||||||
|
assignFromKeyfile(keyFile, "Wavelet", "LabGridBLow", pedited, wavelet.labgridBLow, pedited->wavelet.labgridBLow);
|
||||||
|
assignFromKeyfile(keyFile, "Wavelet", "LabGridAHigh", pedited, wavelet.labgridAHigh, pedited->wavelet.labgridAHigh);
|
||||||
|
assignFromKeyfile(keyFile, "Wavelet", "LabGridBHigh", pedited, wavelet.labgridBHigh, pedited->wavelet.labgridBHigh);
|
||||||
|
|
||||||
if (ppVersion < 331) { // wavelet.Lmethod was a string before version 331
|
if (ppVersion < 331) { // wavelet.Lmethod was a string before version 331
|
||||||
Glib::ustring temp;
|
Glib::ustring temp;
|
||||||
|
@ -1225,6 +1225,8 @@ struct WaveletParams {
|
|||||||
double sigmaton;
|
double sigmaton;
|
||||||
double sigmacol;
|
double sigmacol;
|
||||||
double sigmadir;
|
double sigmadir;
|
||||||
|
double rangeab;
|
||||||
|
double protab;
|
||||||
int iter;
|
int iter;
|
||||||
bool expcontrast;
|
bool expcontrast;
|
||||||
bool expchroma;
|
bool expchroma;
|
||||||
@ -1237,7 +1239,13 @@ struct WaveletParams {
|
|||||||
bool exptoning;
|
bool exptoning;
|
||||||
bool expnoise;
|
bool expnoise;
|
||||||
bool expclari;
|
bool expclari;
|
||||||
|
double labgridALow;
|
||||||
|
double labgridBLow;
|
||||||
|
double labgridAHigh;
|
||||||
|
double labgridBHigh;
|
||||||
|
static const double LABGRID_CORR_MAX;
|
||||||
|
static const double LABGRID_CORR_SCALE;
|
||||||
|
static const double LABGRIDL_DIRECT_SCALE;
|
||||||
int Lmethod;
|
int Lmethod;
|
||||||
Glib::ustring CLmethod;
|
Glib::ustring CLmethod;
|
||||||
Glib::ustring Backmethod;
|
Glib::ustring Backmethod;
|
||||||
|
@ -479,6 +479,8 @@ void ParamsEdited::set(bool v)
|
|||||||
wavelet.sigmaton = v;
|
wavelet.sigmaton = v;
|
||||||
wavelet.sigmacol = v;
|
wavelet.sigmacol = v;
|
||||||
wavelet.sigmadir = v;
|
wavelet.sigmadir = v;
|
||||||
|
wavelet.rangeab = v;
|
||||||
|
wavelet.protab = v;
|
||||||
wavelet.median = v;
|
wavelet.median = v;
|
||||||
wavelet.medianlev = v;
|
wavelet.medianlev = v;
|
||||||
wavelet.linkedg = v;
|
wavelet.linkedg = v;
|
||||||
@ -586,6 +588,10 @@ void ParamsEdited::set(bool v)
|
|||||||
wavelet.expresid = v;
|
wavelet.expresid = v;
|
||||||
wavelet.exptoning = v;
|
wavelet.exptoning = v;
|
||||||
wavelet.expnoise = v;
|
wavelet.expnoise = v;
|
||||||
|
wavelet.labgridALow = v;
|
||||||
|
wavelet.labgridBLow = v;
|
||||||
|
wavelet.labgridAHigh = v;
|
||||||
|
wavelet.labgridBHigh = v;
|
||||||
|
|
||||||
for (int i = 0; i < 9; i++) {
|
for (int i = 0; i < 9; i++) {
|
||||||
wavelet.c[i] = v;
|
wavelet.c[i] = v;
|
||||||
@ -1094,6 +1100,8 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
|||||||
wavelet.sigmaton = wavelet.sigmaton && p.wavelet.sigmaton == other.wavelet.sigmaton;
|
wavelet.sigmaton = wavelet.sigmaton && p.wavelet.sigmaton == other.wavelet.sigmaton;
|
||||||
wavelet.sigmacol = wavelet.sigmacol && p.wavelet.sigmacol == other.wavelet.sigmacol;
|
wavelet.sigmacol = wavelet.sigmacol && p.wavelet.sigmacol == other.wavelet.sigmacol;
|
||||||
wavelet.sigmadir = wavelet.sigmadir && p.wavelet.sigmadir == other.wavelet.sigmadir;
|
wavelet.sigmadir = wavelet.sigmadir && p.wavelet.sigmadir == other.wavelet.sigmadir;
|
||||||
|
wavelet.rangeab = wavelet.rangeab && p.wavelet.rangeab == other.wavelet.rangeab;
|
||||||
|
wavelet.protab = wavelet.protab && p.wavelet.protab == other.wavelet.protab;
|
||||||
wavelet.median = wavelet.median && p.wavelet.median == other.wavelet.median;
|
wavelet.median = wavelet.median && p.wavelet.median == other.wavelet.median;
|
||||||
wavelet.medianlev = wavelet.medianlev && p.wavelet.medianlev == other.wavelet.medianlev;
|
wavelet.medianlev = wavelet.medianlev && p.wavelet.medianlev == other.wavelet.medianlev;
|
||||||
wavelet.linkedg = wavelet.linkedg && p.wavelet.linkedg == other.wavelet.linkedg;
|
wavelet.linkedg = wavelet.linkedg && p.wavelet.linkedg == other.wavelet.linkedg;
|
||||||
@ -1197,6 +1205,10 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
|||||||
wavelet.exptoning = wavelet.exptoning && p.wavelet.exptoning == other.wavelet.exptoning;
|
wavelet.exptoning = wavelet.exptoning && p.wavelet.exptoning == other.wavelet.exptoning;
|
||||||
wavelet.expnoise = wavelet.expnoise && p.wavelet.expnoise == other.wavelet.expnoise;
|
wavelet.expnoise = wavelet.expnoise && p.wavelet.expnoise == other.wavelet.expnoise;
|
||||||
wavelet.expclari = wavelet.expclari && p.wavelet.expclari == other.wavelet.expclari;
|
wavelet.expclari = wavelet.expclari && p.wavelet.expclari == other.wavelet.expclari;
|
||||||
|
wavelet.labgridALow = wavelet.labgridALow && p.wavelet.labgridALow == other.wavelet.labgridALow;
|
||||||
|
wavelet.labgridBLow = wavelet.labgridBLow && p.wavelet.labgridBLow == other.wavelet.labgridBLow;
|
||||||
|
wavelet.labgridAHigh = wavelet.labgridAHigh && p.wavelet.labgridAHigh == other.wavelet.labgridAHigh;
|
||||||
|
wavelet.labgridBHigh = wavelet.labgridBHigh && p.wavelet.labgridBHigh == other.wavelet.labgridBHigh;
|
||||||
|
|
||||||
for (int level = 0; level < 9; ++level) {
|
for (int level = 0; level < 9; ++level) {
|
||||||
wavelet.c[level] = wavelet.c[level] && p.wavelet.c[level] == other.wavelet.c[level];
|
wavelet.c[level] = wavelet.c[level] && p.wavelet.c[level] == other.wavelet.c[level];
|
||||||
@ -2897,6 +2909,22 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
|||||||
toEdit.wavelet.enabled = mods.wavelet.enabled;
|
toEdit.wavelet.enabled = mods.wavelet.enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (wavelet.labgridALow) {
|
||||||
|
toEdit.wavelet.labgridALow = mods.wavelet.labgridALow;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wavelet.labgridBLow) {
|
||||||
|
toEdit.wavelet.labgridBLow = mods.wavelet.labgridBLow;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wavelet.labgridAHigh) {
|
||||||
|
toEdit.wavelet.labgridAHigh = mods.wavelet.labgridAHigh;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wavelet.labgridBHigh) {
|
||||||
|
toEdit.wavelet.labgridBHigh = mods.wavelet.labgridBHigh;
|
||||||
|
}
|
||||||
|
|
||||||
if (wavelet.strength) {
|
if (wavelet.strength) {
|
||||||
toEdit.wavelet.strength = mods.wavelet.strength;
|
toEdit.wavelet.strength = mods.wavelet.strength;
|
||||||
}
|
}
|
||||||
@ -2921,6 +2949,14 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
|||||||
toEdit.wavelet.sigmadir = mods.wavelet.sigmadir;
|
toEdit.wavelet.sigmadir = mods.wavelet.sigmadir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (wavelet.rangeab) {
|
||||||
|
toEdit.wavelet.rangeab = mods.wavelet.rangeab;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wavelet.protab) {
|
||||||
|
toEdit.wavelet.protab = mods.wavelet.protab;
|
||||||
|
}
|
||||||
|
|
||||||
if (wavelet.iter) {
|
if (wavelet.iter) {
|
||||||
toEdit.wavelet.iter = mods.wavelet.iter;
|
toEdit.wavelet.iter = mods.wavelet.iter;
|
||||||
}
|
}
|
||||||
|
@ -503,6 +503,8 @@ struct WaveletParamsEdited {
|
|||||||
bool sigmaton;
|
bool sigmaton;
|
||||||
bool sigmacol;
|
bool sigmacol;
|
||||||
bool sigmadir;
|
bool sigmadir;
|
||||||
|
bool rangeab;
|
||||||
|
bool protab;
|
||||||
bool median;
|
bool median;
|
||||||
bool medianlev;
|
bool medianlev;
|
||||||
bool linkedg;
|
bool linkedg;
|
||||||
@ -607,6 +609,11 @@ struct WaveletParamsEdited {
|
|||||||
bool exptoning;
|
bool exptoning;
|
||||||
bool expnoise;
|
bool expnoise;
|
||||||
bool expclari;
|
bool expclari;
|
||||||
|
bool labgridALow;
|
||||||
|
bool labgridBLow;
|
||||||
|
bool labgridAHigh;
|
||||||
|
bool labgridBHigh;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct DirPyrEqualizerParamsEdited {
|
struct DirPyrEqualizerParamsEdited {
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include "rtimage.h"
|
#include "rtimage.h"
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
#include "eventmapper.h"
|
#include "eventmapper.h"
|
||||||
|
#include "labgrid.h"
|
||||||
#include "../rtengine/color.h"
|
#include "../rtengine/color.h"
|
||||||
|
|
||||||
using namespace rtengine;
|
using namespace rtengine;
|
||||||
@ -116,6 +117,8 @@ Wavelet::Wavelet() :
|
|||||||
sigmaton(Gtk::manage(new Adjuster(M("TP_WAVELET_SIGMAFIN"), 0.025, 2.5, 0.01, 1.))),
|
sigmaton(Gtk::manage(new Adjuster(M("TP_WAVELET_SIGMAFIN"), 0.025, 2.5, 0.01, 1.))),
|
||||||
sigmacol(Gtk::manage(new Adjuster(M("TP_WAVELET_SIGMAFIN"), 0.025, 2.5, 0.01, 1.))),
|
sigmacol(Gtk::manage(new Adjuster(M("TP_WAVELET_SIGMAFIN"), 0.025, 2.5, 0.01, 1.))),
|
||||||
sigmadir(Gtk::manage(new Adjuster(M("TP_WAVELET_SIGMAFIN"), 0.025, 2.5, 0.01, 1.))),
|
sigmadir(Gtk::manage(new Adjuster(M("TP_WAVELET_SIGMAFIN"), 0.025, 2.5, 0.01, 1.))),
|
||||||
|
rangeab(Gtk::manage(new Adjuster(M("TP_WAVELET_RANGEAB"), 0., 100., 0.1, 20.))),
|
||||||
|
protab(Gtk::manage(new Adjuster(M("TP_WAVELET_PROTAB"), 0., 100., 0.5, 0.))),
|
||||||
hueskin(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_HUESKIN"), -314., 314., -5., 25., 170., 120., 0, false))),
|
hueskin(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_HUESKIN"), -314., 314., -5., 25., 170., 120., 0, false))),
|
||||||
hueskin2(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_HUESKY"), -314., 314., -260., -250, -130., -140., 0, false))),
|
hueskin2(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_HUESKY"), -314., 314., -260., -250, -130., -140., 0, false))),
|
||||||
hllev(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_HIGHLIGHT"), 0., 100., 50., 75., 100., 98., 0, false))),
|
hllev(Gtk::manage(new ThresholdAdjuster(M("TP_WAVELET_HIGHLIGHT"), 0., 100., 50., 75., 100., 98., 0, false))),
|
||||||
@ -168,6 +171,7 @@ Wavelet::Wavelet() :
|
|||||||
chroFrame(Gtk::manage(new Gtk::Frame(M("TP_WAVELET_CHROFRAME")))),
|
chroFrame(Gtk::manage(new Gtk::Frame(M("TP_WAVELET_CHROFRAME")))),
|
||||||
fincFrame(Gtk::manage(new Gtk::Frame(M("TP_WAVELET_FINCFRAME")))),
|
fincFrame(Gtk::manage(new Gtk::Frame(M("TP_WAVELET_FINCFRAME")))),
|
||||||
dirFrame(Gtk::manage(new Gtk::Frame(M("TP_WAVELET_DIRFRAME")))),
|
dirFrame(Gtk::manage(new Gtk::Frame(M("TP_WAVELET_DIRFRAME")))),
|
||||||
|
tonFrame(Gtk::manage(new Gtk::Frame(M("TP_WAVELET_TONFRAME")))),
|
||||||
wavLabels(Gtk::manage(new Gtk::Label("---", Gtk::ALIGN_CENTER))),
|
wavLabels(Gtk::manage(new Gtk::Label("---", Gtk::ALIGN_CENTER))),
|
||||||
labmC(Gtk::manage(new Gtk::Label(M("TP_WAVELET_CTYPE") + ":"))),
|
labmC(Gtk::manage(new Gtk::Label(M("TP_WAVELET_CTYPE") + ":"))),
|
||||||
labmNP(Gtk::manage(new Gtk::Label(M("TP_WAVELET_NPTYPE") + ":"))),
|
labmNP(Gtk::manage(new Gtk::Label(M("TP_WAVELET_NPTYPE") + ":"))),
|
||||||
@ -217,6 +221,11 @@ Wavelet::Wavelet() :
|
|||||||
EvWavsigmaton = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_SIGMATON");
|
EvWavsigmaton = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_SIGMATON");
|
||||||
EvWavsigmacol = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_SIGMACOL");
|
EvWavsigmacol = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_SIGMACOL");
|
||||||
EvWavsigmadir = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_SIGMADIR");
|
EvWavsigmadir = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_SIGMADIR");
|
||||||
|
EvWavLabGridValue = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_WAVLABGRID_VALUE");
|
||||||
|
EvWavrangeab = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_RANGEAB");
|
||||||
|
EvWavprotab = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_PROTAB");
|
||||||
|
|
||||||
|
labgrid = Gtk::manage(new LabGrid(EvWavLabGridValue, M("TP_WAVELET_LABGRID_VALUES")));
|
||||||
|
|
||||||
expsettings->signal_button_release_event().connect_notify(sigc::bind(sigc::mem_fun(this, &Wavelet::foldAllButMe), expsettings));
|
expsettings->signal_button_release_event().connect_notify(sigc::bind(sigc::mem_fun(this, &Wavelet::foldAllButMe), expsettings));
|
||||||
|
|
||||||
@ -497,6 +506,8 @@ Wavelet::Wavelet() :
|
|||||||
// Toning
|
// Toning
|
||||||
ToolParamBlock* const tonBox = Gtk::manage(new ToolParamBlock());
|
ToolParamBlock* const tonBox = Gtk::manage(new ToolParamBlock());
|
||||||
sigmaton->setAdjusterListener(this);
|
sigmaton->setAdjusterListener(this);
|
||||||
|
rangeab->setAdjusterListener(this);
|
||||||
|
protab->setAdjusterListener(this);
|
||||||
|
|
||||||
opaCurveEditorG->setCurveListener(this);
|
opaCurveEditorG->setCurveListener(this);
|
||||||
|
|
||||||
@ -515,6 +526,15 @@ Wavelet::Wavelet() :
|
|||||||
opaCurveEditorG->curveListComplete();
|
opaCurveEditorG->curveListComplete();
|
||||||
opaCurveEditorG->show();
|
opaCurveEditorG->show();
|
||||||
tonBox->pack_start(*sigmaton);
|
tonBox->pack_start(*sigmaton);
|
||||||
|
|
||||||
|
tonFrame->set_label_align(0.025, 0.5);
|
||||||
|
ToolParamBlock* const ton2Box = Gtk::manage(new ToolParamBlock());
|
||||||
|
ton2Box->pack_start(*labgrid, Gtk::PACK_EXPAND_WIDGET, 2);
|
||||||
|
ton2Box->pack_start(*rangeab);
|
||||||
|
ton2Box->pack_start(*protab);
|
||||||
|
tonFrame->add(*ton2Box);
|
||||||
|
// tonBox->pack_start(*tonFrame);
|
||||||
|
|
||||||
tonBox->pack_start(*opaCurveEditorG, Gtk::PACK_SHRINK, 2);
|
tonBox->pack_start(*opaCurveEditorG, Gtk::PACK_SHRINK, 2);
|
||||||
|
|
||||||
opacityCurveEditorG->setCurveListener(this);
|
opacityCurveEditorG->setCurveListener(this);
|
||||||
@ -1157,6 +1177,13 @@ void Wavelet::neutral_pressed()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Wavelet::setListener(ToolPanelListener *tpl)
|
||||||
|
{
|
||||||
|
ToolPanel::setListener(tpl);
|
||||||
|
labgrid->setListener(tpl);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void Wavelet::read(const ProcParams* pp, const ParamsEdited* pedited)
|
void Wavelet::read(const ProcParams* pp, const ParamsEdited* pedited)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -1443,6 +1470,7 @@ void Wavelet::read(const ProcParams* pp, const ParamsEdited* pedited)
|
|||||||
mergeC->setValue(pp->wavelet.mergeC);
|
mergeC->setValue(pp->wavelet.mergeC);
|
||||||
softrad->setValue(pp->wavelet.softrad);
|
softrad->setValue(pp->wavelet.softrad);
|
||||||
softradend->setValue(pp->wavelet.softradend);
|
softradend->setValue(pp->wavelet.softradend);
|
||||||
|
labgrid->setParams(pp->wavelet.labgridALow / WaveletParams::LABGRID_CORR_MAX, pp->wavelet.labgridBLow / WaveletParams::LABGRID_CORR_MAX, pp->wavelet.labgridAHigh / WaveletParams::LABGRID_CORR_MAX, pp->wavelet.labgridBHigh / WaveletParams::LABGRID_CORR_MAX, false);
|
||||||
|
|
||||||
ballum->setValue(pp->wavelet.ballum);
|
ballum->setValue(pp->wavelet.ballum);
|
||||||
balchrom->setValue(pp->wavelet.balchrom);
|
balchrom->setValue(pp->wavelet.balchrom);
|
||||||
@ -1459,6 +1487,8 @@ void Wavelet::read(const ProcParams* pp, const ParamsEdited* pedited)
|
|||||||
sigmaton->setValue(pp->wavelet.sigmaton);
|
sigmaton->setValue(pp->wavelet.sigmaton);
|
||||||
sigmacol->setValue(pp->wavelet.sigmacol);
|
sigmacol->setValue(pp->wavelet.sigmacol);
|
||||||
sigmadir->setValue(pp->wavelet.sigmadir);
|
sigmadir->setValue(pp->wavelet.sigmadir);
|
||||||
|
rangeab->setValue(pp->wavelet.rangeab);
|
||||||
|
protab->setValue(pp->wavelet.protab);
|
||||||
|
|
||||||
for (int i = 0; i < 9; i++) {
|
for (int i = 0; i < 9; i++) {
|
||||||
correction[i]->setValue(pp->wavelet.c[i]);
|
correction[i]->setValue(pp->wavelet.c[i]);
|
||||||
@ -1534,6 +1564,7 @@ void Wavelet::read(const ProcParams* pp, const ParamsEdited* pedited)
|
|||||||
if (!pedited->wavelet.ushamethod) {
|
if (!pedited->wavelet.ushamethod) {
|
||||||
ushamethod->set_active_text(M("GENERAL_UNCHANGED"));
|
ushamethod->set_active_text(M("GENERAL_UNCHANGED"));
|
||||||
}
|
}
|
||||||
|
labgrid->setEdited(pedited->wavelet.labgridALow || pedited->wavelet.labgridBLow || pedited->wavelet.labgridAHigh || pedited->wavelet.labgridBHigh);
|
||||||
|
|
||||||
set_inconsistent(multiImage && !pedited->wavelet.enabled);
|
set_inconsistent(multiImage && !pedited->wavelet.enabled);
|
||||||
ccshape->setUnChanged(!pedited->wavelet.ccwcurve);
|
ccshape->setUnChanged(!pedited->wavelet.ccwcurve);
|
||||||
@ -1580,6 +1611,8 @@ void Wavelet::read(const ProcParams* pp, const ParamsEdited* pedited)
|
|||||||
sigmaton->setEditedState(pedited->wavelet.sigmaton ? Edited : UnEdited);
|
sigmaton->setEditedState(pedited->wavelet.sigmaton ? Edited : UnEdited);
|
||||||
sigmacol->setEditedState(pedited->wavelet.sigmacol ? Edited : UnEdited);
|
sigmacol->setEditedState(pedited->wavelet.sigmacol ? Edited : UnEdited);
|
||||||
sigmadir->setEditedState(pedited->wavelet.sigmadir ? Edited : UnEdited);
|
sigmadir->setEditedState(pedited->wavelet.sigmadir ? Edited : UnEdited);
|
||||||
|
rangeab->setEditedState(pedited->wavelet.rangeab ? Edited : UnEdited);
|
||||||
|
protab->setEditedState(pedited->wavelet.protab ? Edited : UnEdited);
|
||||||
threshold->setEditedState(pedited->wavelet.threshold ? Edited : UnEdited);
|
threshold->setEditedState(pedited->wavelet.threshold ? Edited : UnEdited);
|
||||||
threshold2->setEditedState(pedited->wavelet.threshold2 ? Edited : UnEdited);
|
threshold2->setEditedState(pedited->wavelet.threshold2 ? Edited : UnEdited);
|
||||||
edgedetect->setEditedState(pedited->wavelet.edgedetect ? Edited : UnEdited);
|
edgedetect->setEditedState(pedited->wavelet.edgedetect ? Edited : UnEdited);
|
||||||
@ -1828,6 +1861,11 @@ void Wavelet::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pp->wavelet.ballum = ballum->getValue();
|
pp->wavelet.ballum = ballum->getValue();
|
||||||
pp->wavelet.chromfi = chromfi->getValue();
|
pp->wavelet.chromfi = chromfi->getValue();
|
||||||
pp->wavelet.chromco = chromco->getValue();
|
pp->wavelet.chromco = chromco->getValue();
|
||||||
|
labgrid->getParams(pp->wavelet.labgridALow, pp->wavelet.labgridBLow, pp->wavelet.labgridAHigh, pp->wavelet.labgridBHigh);
|
||||||
|
pp->wavelet.labgridALow *= WaveletParams::LABGRID_CORR_MAX;
|
||||||
|
pp->wavelet.labgridAHigh *= WaveletParams::LABGRID_CORR_MAX;
|
||||||
|
pp->wavelet.labgridBLow *= WaveletParams::LABGRID_CORR_MAX;
|
||||||
|
pp->wavelet.labgridBHigh *= WaveletParams::LABGRID_CORR_MAX;
|
||||||
|
|
||||||
pp->wavelet.greenlow = greenlow->getValue();
|
pp->wavelet.greenlow = greenlow->getValue();
|
||||||
pp->wavelet.bluelow = bluelow->getValue();
|
pp->wavelet.bluelow = bluelow->getValue();
|
||||||
@ -1855,6 +1893,8 @@ void Wavelet::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pp->wavelet.sigmaton = sigmaton->getValue();
|
pp->wavelet.sigmaton = sigmaton->getValue();
|
||||||
pp->wavelet.sigmacol = sigmacol->getValue();
|
pp->wavelet.sigmacol = sigmacol->getValue();
|
||||||
pp->wavelet.sigmadir = sigmadir->getValue();
|
pp->wavelet.sigmadir = sigmadir->getValue();
|
||||||
|
pp->wavelet.rangeab = rangeab->getValue();
|
||||||
|
pp->wavelet.protab = protab->getValue();
|
||||||
|
|
||||||
for (int i = 0; i < 9; i++) {
|
for (int i = 0; i < 9; i++) {
|
||||||
pp->wavelet.c[i] = (int) correction[i]->getValue();
|
pp->wavelet.c[i] = (int) correction[i]->getValue();
|
||||||
@ -1965,6 +2005,8 @@ void Wavelet::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pedited->wavelet.sigmaton = sigmaton->getEditedState();
|
pedited->wavelet.sigmaton = sigmaton->getEditedState();
|
||||||
pedited->wavelet.sigmacol = sigmacol->getEditedState();
|
pedited->wavelet.sigmacol = sigmacol->getEditedState();
|
||||||
pedited->wavelet.sigmadir = sigmadir->getEditedState();
|
pedited->wavelet.sigmadir = sigmadir->getEditedState();
|
||||||
|
pedited->wavelet.rangeab = rangeab->getEditedState();
|
||||||
|
pedited->wavelet.protab = protab->getEditedState();
|
||||||
pedited->wavelet.wavclCurve = !clshape->isUnChanged();
|
pedited->wavelet.wavclCurve = !clshape->isUnChanged();
|
||||||
pedited->wavelet.expcontrast = !expcontrast->get_inconsistent();
|
pedited->wavelet.expcontrast = !expcontrast->get_inconsistent();
|
||||||
pedited->wavelet.expchroma = !expchroma->get_inconsistent();
|
pedited->wavelet.expchroma = !expchroma->get_inconsistent();
|
||||||
@ -1975,6 +2017,7 @@ void Wavelet::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pedited->wavelet.exptoning = !exptoning->get_inconsistent();
|
pedited->wavelet.exptoning = !exptoning->get_inconsistent();
|
||||||
pedited->wavelet.expnoise = !expnoise->get_inconsistent();
|
pedited->wavelet.expnoise = !expnoise->get_inconsistent();
|
||||||
pedited->wavelet.expclari = !expclari->get_inconsistent();
|
pedited->wavelet.expclari = !expclari->get_inconsistent();
|
||||||
|
pedited->wavelet.labgridALow = pedited->wavelet.labgridBLow = pedited->wavelet.labgridAHigh = pedited->wavelet.labgridBHigh = labgrid->getEdited();
|
||||||
|
|
||||||
for (int i = 0; i < 9; i++) {
|
for (int i = 0; i < 9; i++) {
|
||||||
pedited->wavelet.c[i] = correction[i]->getEditedState();
|
pedited->wavelet.c[i] = correction[i]->getEditedState();
|
||||||
@ -2150,6 +2193,8 @@ void Wavelet::setDefaults(const ProcParams* defParams, const ParamsEdited* pedit
|
|||||||
sigmacol->setDefault(defParams->wavelet.sigmacol);
|
sigmacol->setDefault(defParams->wavelet.sigmacol);
|
||||||
sigmadir->setDefault(defParams->wavelet.sigmadir);
|
sigmadir->setDefault(defParams->wavelet.sigmadir);
|
||||||
sigma->setDefault(defParams->wavelet.sigma);
|
sigma->setDefault(defParams->wavelet.sigma);
|
||||||
|
rangeab->setDefault(defParams->wavelet.rangeab);
|
||||||
|
protab->setDefault(defParams->wavelet.protab);
|
||||||
offset->setDefault(defParams->wavelet.offset);
|
offset->setDefault(defParams->wavelet.offset);
|
||||||
lowthr->setDefault(defParams->wavelet.lowthr);
|
lowthr->setDefault(defParams->wavelet.lowthr);
|
||||||
rescon->setDefault(defParams->wavelet.rescon);
|
rescon->setDefault(defParams->wavelet.rescon);
|
||||||
@ -2198,6 +2243,7 @@ void Wavelet::setDefaults(const ProcParams* defParams, const ParamsEdited* pedit
|
|||||||
balchrom->setDefault(defParams->wavelet.balchrom);
|
balchrom->setDefault(defParams->wavelet.balchrom);
|
||||||
chromfi->setDefault(defParams->wavelet.chromfi);
|
chromfi->setDefault(defParams->wavelet.chromfi);
|
||||||
chromco->setDefault(defParams->wavelet.chromco);
|
chromco->setDefault(defParams->wavelet.chromco);
|
||||||
|
labgrid->setDefault(defParams->wavelet.labgridALow / WaveletParams::LABGRID_CORR_MAX, defParams->wavelet.labgridBLow / WaveletParams::LABGRID_CORR_MAX, defParams->wavelet.labgridAHigh / WaveletParams::LABGRID_CORR_MAX, defParams->wavelet.labgridBHigh / WaveletParams::LABGRID_CORR_MAX);
|
||||||
|
|
||||||
greenlow->setDefault(defParams->wavelet.greenlow);
|
greenlow->setDefault(defParams->wavelet.greenlow);
|
||||||
bluelow->setDefault(defParams->wavelet.bluelow);
|
bluelow->setDefault(defParams->wavelet.bluelow);
|
||||||
@ -2225,6 +2271,7 @@ void Wavelet::setDefaults(const ProcParams* defParams, const ParamsEdited* pedit
|
|||||||
balchrom->setDefaultEditedState(pedited->wavelet.balchrom ? Edited : UnEdited);
|
balchrom->setDefaultEditedState(pedited->wavelet.balchrom ? Edited : UnEdited);
|
||||||
chromfi->setDefaultEditedState(pedited->wavelet.chromfi ? Edited : UnEdited);
|
chromfi->setDefaultEditedState(pedited->wavelet.chromfi ? Edited : UnEdited);
|
||||||
chromco->setDefaultEditedState(pedited->wavelet.chromco ? Edited : UnEdited);
|
chromco->setDefaultEditedState(pedited->wavelet.chromco ? Edited : UnEdited);
|
||||||
|
labgrid->setEdited((pedited->wavelet.labgridALow || pedited->wavelet.labgridBLow || pedited->wavelet.labgridAHigh || pedited->wavelet.labgridBHigh) ? Edited : UnEdited);
|
||||||
|
|
||||||
sigma->setDefault(defParams->wavelet.sigma);
|
sigma->setDefault(defParams->wavelet.sigma);
|
||||||
offset->setDefault(defParams->wavelet.offset);
|
offset->setDefault(defParams->wavelet.offset);
|
||||||
@ -2275,6 +2322,8 @@ void Wavelet::setDefaults(const ProcParams* defParams, const ParamsEdited* pedit
|
|||||||
sigmaton->setDefaultEditedState(pedited->wavelet.sigmaton ? Edited : UnEdited);
|
sigmaton->setDefaultEditedState(pedited->wavelet.sigmaton ? Edited : UnEdited);
|
||||||
sigmacol->setDefaultEditedState(pedited->wavelet.sigmacol ? Edited : UnEdited);
|
sigmacol->setDefaultEditedState(pedited->wavelet.sigmacol ? Edited : UnEdited);
|
||||||
sigmadir->setDefaultEditedState(pedited->wavelet.sigmadir ? Edited : UnEdited);
|
sigmadir->setDefaultEditedState(pedited->wavelet.sigmadir ? Edited : UnEdited);
|
||||||
|
rangeab->setDefaultEditedState(pedited->wavelet.rangeab ? Edited : UnEdited);
|
||||||
|
protab->setDefaultEditedState(pedited->wavelet.protab ? Edited : UnEdited);
|
||||||
level0noise->setDefaultEditedState(pedited->wavelet.level0noise ? Edited : UnEdited);
|
level0noise->setDefaultEditedState(pedited->wavelet.level0noise ? Edited : UnEdited);
|
||||||
level1noise->setDefaultEditedState(pedited->wavelet.level1noise ? Edited : UnEdited);
|
level1noise->setDefaultEditedState(pedited->wavelet.level1noise ? Edited : UnEdited);
|
||||||
level2noise->setDefaultEditedState(pedited->wavelet.level2noise ? Edited : UnEdited);
|
level2noise->setDefaultEditedState(pedited->wavelet.level2noise ? Edited : UnEdited);
|
||||||
@ -2341,6 +2390,9 @@ void Wavelet::setDefaults(const ProcParams* defParams, const ParamsEdited* pedit
|
|||||||
sigmaton->setDefaultEditedState(Irrelevant);
|
sigmaton->setDefaultEditedState(Irrelevant);
|
||||||
sigmacol->setDefaultEditedState(Irrelevant);
|
sigmacol->setDefaultEditedState(Irrelevant);
|
||||||
sigmadir->setDefaultEditedState(Irrelevant);
|
sigmadir->setDefaultEditedState(Irrelevant);
|
||||||
|
rangeab->setDefaultEditedState(Irrelevant);
|
||||||
|
protab->setDefaultEditedState(Irrelevant);
|
||||||
|
labgrid->setEdited(Edited);
|
||||||
|
|
||||||
for (int i = 0; i < 9; i++) {
|
for (int i = 0; i < 9; i++) {
|
||||||
correction[i]->setDefaultEditedState(Irrelevant);
|
correction[i]->setDefaultEditedState(Irrelevant);
|
||||||
@ -2883,6 +2935,8 @@ void Wavelet::setBatchMode(bool batchMode)
|
|||||||
sigmaton->showEditedCB();
|
sigmaton->showEditedCB();
|
||||||
sigmacol->showEditedCB();
|
sigmacol->showEditedCB();
|
||||||
sigmadir->showEditedCB();
|
sigmadir->showEditedCB();
|
||||||
|
rangeab->showEditedCB();
|
||||||
|
protab->showEditedCB();
|
||||||
level0noise->showEditedCB();
|
level0noise->showEditedCB();
|
||||||
level1noise->showEditedCB();
|
level1noise->showEditedCB();
|
||||||
level2noise->showEditedCB();
|
level2noise->showEditedCB();
|
||||||
@ -3036,6 +3090,10 @@ void Wavelet::adjusterChanged(Adjuster* a, double newval)
|
|||||||
listener->panelChanged(EvWavsigmafin, sigmafin->getTextValue());
|
listener->panelChanged(EvWavsigmafin, sigmafin->getTextValue());
|
||||||
} else if (a == sigmaton) {
|
} else if (a == sigmaton) {
|
||||||
listener->panelChanged(EvWavsigmaton, sigmaton->getTextValue());
|
listener->panelChanged(EvWavsigmaton, sigmaton->getTextValue());
|
||||||
|
} else if (a == rangeab) {
|
||||||
|
listener->panelChanged(EvWavrangeab, rangeab->getTextValue());
|
||||||
|
} else if (a == protab) {
|
||||||
|
listener->panelChanged(EvWavprotab, protab->getTextValue());
|
||||||
} else if (a == sigmacol) {
|
} else if (a == sigmacol) {
|
||||||
listener->panelChanged(EvWavsigmacol, sigmacol->getTextValue());
|
listener->panelChanged(EvWavsigmacol, sigmacol->getTextValue());
|
||||||
} else if (a == sigmadir) {
|
} else if (a == sigmadir) {
|
||||||
|
@ -33,6 +33,7 @@ class CurveEditorGroup;
|
|||||||
class DiagonalCurveEditor;
|
class DiagonalCurveEditor;
|
||||||
class EditDataProvider;
|
class EditDataProvider;
|
||||||
class FlatCurveEditor;
|
class FlatCurveEditor;
|
||||||
|
class LabGrid;
|
||||||
|
|
||||||
class Wavelet final :
|
class Wavelet final :
|
||||||
public ToolParamBlock,
|
public ToolParamBlock,
|
||||||
@ -97,8 +98,14 @@ private:
|
|||||||
rtengine::ProcEvent EvWavsigmaton;
|
rtengine::ProcEvent EvWavsigmaton;
|
||||||
rtengine::ProcEvent EvWavsigmacol;
|
rtengine::ProcEvent EvWavsigmacol;
|
||||||
rtengine::ProcEvent EvWavsigmadir;
|
rtengine::ProcEvent EvWavsigmadir;
|
||||||
|
rtengine::ProcEvent EvWavLabGridValue;
|
||||||
|
rtengine::ProcEvent EvWavrangeab;
|
||||||
|
rtengine::ProcEvent EvWavprotab;
|
||||||
|
|
||||||
|
LabGrid *labgrid;
|
||||||
|
|
||||||
void foldAllButMe(GdkEventButton* event, MyExpander *expander);
|
void foldAllButMe(GdkEventButton* event, MyExpander *expander);
|
||||||
|
void setListener(ToolPanelListener *tpl) override;
|
||||||
|
|
||||||
void colorForValue(double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override;
|
void colorForValue(double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override;
|
||||||
void BAmethodChanged();
|
void BAmethodChanged();
|
||||||
@ -226,6 +233,8 @@ private:
|
|||||||
Adjuster* const sigmaton;
|
Adjuster* const sigmaton;
|
||||||
Adjuster* const sigmacol;
|
Adjuster* const sigmacol;
|
||||||
Adjuster* const sigmadir;
|
Adjuster* const sigmadir;
|
||||||
|
Adjuster* const rangeab;
|
||||||
|
Adjuster* const protab;
|
||||||
|
|
||||||
Adjuster* greenlow;
|
Adjuster* greenlow;
|
||||||
Adjuster* bluelow;
|
Adjuster* bluelow;
|
||||||
@ -304,6 +313,7 @@ private:
|
|||||||
Gtk::Frame* const chroFrame;
|
Gtk::Frame* const chroFrame;
|
||||||
Gtk::Frame* const fincFrame;
|
Gtk::Frame* const fincFrame;
|
||||||
Gtk::Frame* const dirFrame;
|
Gtk::Frame* const dirFrame;
|
||||||
|
Gtk::Frame* const tonFrame;
|
||||||
|
|
||||||
Gtk::Label* const wavLabels;
|
Gtk::Label* const wavLabels;
|
||||||
Gtk::Label* const labmC;
|
Gtk::Label* const labmC;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user