2nd levels and resid dynamic range compression contrast wavelet
This commit is contained in:
parent
1981b17245
commit
81e08265ec
@ -1102,7 +1102,7 @@ HISTORY_MSG_862;Local - Contrast Sigma luminance
|
||||
HISTORY_MSG_863;Local - Contrast Merge Original
|
||||
HISTORY_MSG_864;Local - Contrast Detail
|
||||
HISTORY_MSG_865;Local - Contrast Anchor
|
||||
HISTORY_MSG_866;Local - Contrast Curve compression
|
||||
HISTORY_MSG_867;Local - Contrast Amount residual
|
||||
HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
|
||||
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
|
||||
HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
|
||||
@ -2196,7 +2196,7 @@ TP_LOCALLAB_BLUR;Gaussian Blur - Noise - Grain
|
||||
TP_LOCALLAB_BLURCBDL;Blur levels 0-1-2-3-4
|
||||
TP_LOCALLAB_BLURCOL;Radius Mask Blur
|
||||
TP_LOCALLAB_BLURDE;Blur Shape detection
|
||||
TP_LOCALLAB_BLURLC;Luminance only
|
||||
TP_LOCALLAB_BLURLC;Luminance Residual Image Only
|
||||
TP_LOCALLAB_BLURLEVELFRA;Blur Levels
|
||||
TP_LOCALLAB_BLURRESIDFRA;Blur Residual
|
||||
TP_LOCALLAB_BUTTON_ADD;Add
|
||||
@ -2296,6 +2296,7 @@ TP_LOCALLAB_FATDETAIL;Detail
|
||||
TP_LOCALLAB_FATFRA;Dynamic Range Compression
|
||||
TP_LOCALLAB_FATFRAME_TOOLTIP;PDE Fattal - use Fattal Tone mapping algorithm.\nAnchor allows selection according to the images over or under exposed.\nUseful to increase Luminance for a Second spot near the current and using mask
|
||||
TP_LOCALLAB_FATLEVEL;Detail levels
|
||||
TP_LOCALLAB_FATRES;Amount Residual Image
|
||||
TP_LOCALLAB_FATSHFRA;Dynamic Range Compression Mask
|
||||
TP_LOCALLAB_FEATH_TOOLTIP;Gradient width in percent of the Spot diagonal\n..
|
||||
TP_LOCALLAB_FEATVALUE;Feather gradient
|
||||
@ -2455,7 +2456,7 @@ TP_LOCALLAB_REFLABEL;Ref. (0..1) Chroma=%1 Luma=%2 Hue=%3
|
||||
TP_LOCALLAB_REN_DIALOG_LAB;Enter the new Control Spot name
|
||||
TP_LOCALLAB_REN_DIALOG_NAME;Renaming Control Spot
|
||||
TP_LOCALLAB_RESID;Residual Image
|
||||
TP_LOCALLAB_RESIDBLUR;Blur
|
||||
TP_LOCALLAB_RESIDBLUR;Blur Residual Image
|
||||
TP_LOCALLAB_RESIDCHRO;Residual image Chroma
|
||||
TP_LOCALLAB_RESIDCONT;Residual image Contrast
|
||||
TP_LOCALLAB_RETI;Dehaze - Retinex Strong local contrast
|
||||
|
@ -314,7 +314,7 @@ public:
|
||||
static void strcurv_data(std::string retistr, int *s_datc, int &siz);
|
||||
void blendstruc(int bfw, int bfh, LabImage* bufcolorig, float radius, float stru, array2D<float> & blend2, int sk, bool multiThread);
|
||||
|
||||
void wavcontrast4(float ** tmp, float contrast, float radblur, float radlevblur, int bfw, int bfh, int level_bl, int level_hl, int level_br, int level_hr, int sk, bool numThreads, const LocwavCurve & locwavCurve, bool & locwavutili,
|
||||
void wavcontrast4(float ** tmp, float contrast, float fatres, float radblur, float radlevblur, int bfw, int bfh, int level_bl, int level_hl, int level_br, int level_hr, int sk, bool numThreads, const LocwavCurve & locwavCurve, bool & locwavutili,
|
||||
const LocwavCurve & loclevwavCurve, bool & loclevwavutili, bool wavcurvelev,
|
||||
const LocwavCurve & locconwavCurve, bool & locconwavutili, bool wavcurvecon,
|
||||
const LocwavCurve & loccompwavCurve, bool & loccompwavutili, bool wavcurvecomp,
|
||||
|
@ -3999,7 +3999,7 @@ void ImProcFunctions::maskcalccol(int call, bool invmask, bool pde, int bfw, int
|
||||
bool wavcurvecon = false;
|
||||
bool loccompwavutili = false;
|
||||
bool wavcurvecomp = false;
|
||||
wavcontrast4(bufmaskblurcol->L, contrast, 0.f, 0.f, bfw, bfh, level_bl, level_hl, level_br, level_hr, sk, numThreads, loclmasCurvecolwav, lmasutilicolwav, dummy, loclevwavutili, wavcurvelev, dummy, locconwavutili, wavcurvecon, dummy, loccompwavutili, wavcurvecomp, 1.f, maxlvl, 0.f, 0.f);
|
||||
wavcontrast4(bufmaskblurcol->L, contrast, 0.f, 0.f, 0.f, bfw, bfh, level_bl, level_hl, level_br, level_hr, sk, numThreads, loclmasCurvecolwav, lmasutilicolwav, dummy, loclevwavutili, wavcurvelev, dummy, locconwavutili, wavcurvecon, dummy, loccompwavutili, wavcurvecomp, 1.f, maxlvl, 0.f, 0.f);
|
||||
|
||||
}
|
||||
|
||||
@ -6736,7 +6736,7 @@ void ImProcFunctions::fftw_tile_blur(int GW, int GH, int tilssize, int max_numbl
|
||||
fftwf_destroy_plan(plan_backward_blox[1]);
|
||||
fftwf_cleanup();
|
||||
}
|
||||
void ImProcFunctions::wavcontrast4(float ** tmp, float contrast, float radblur, float radlevblur, int bfw, int bfh, int level_bl, int level_hl, int level_br, int level_hr, int sk, bool numThreads,
|
||||
void ImProcFunctions::wavcontrast4(float ** tmp, float contrast, float fatres, float radblur, float radlevblur, int bfw, int bfh, int level_bl, int level_hl, int level_br, int level_hr, int sk, bool numThreads,
|
||||
const LocwavCurve & locwavCurve, bool & locwavutili, const LocwavCurve & loclevwavCurve, bool & loclevwavutili, bool wavcurvelev,
|
||||
const LocwavCurve & locconwavCurve, bool & locconwavutili, bool wavcurvecon,
|
||||
const LocwavCurve & loccompwavCurve, bool & loccompwavutili, bool wavcurvecomp,
|
||||
@ -6753,6 +6753,39 @@ void ImProcFunctions::wavcontrast4(float ** tmp, float contrast, float radblur,
|
||||
int H_L = wdspot->level_H(0);
|
||||
float *wav_L0 = wdspot->coeff0;
|
||||
|
||||
FattalToneMappingParams fatParams;
|
||||
fatParams.threshold = fatdet;
|
||||
fatParams.anchor = fatanch;
|
||||
|
||||
if (fatres > 0.f) {
|
||||
fatParams.enabled = true;
|
||||
fatParams.amount = fatres;
|
||||
array2D<float> bufl(W_L, H_L);
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for schedule(dynamic,16)
|
||||
#endif
|
||||
|
||||
for (int y = 0; y < H_L; y++) {
|
||||
for (int x = 0; x < W_L; x++) {
|
||||
bufl[y][x] = wav_L0[y * W_L + x];
|
||||
}
|
||||
}
|
||||
|
||||
ToneMapFattal02(nullptr, fatParams, 3, true, bufl, W_L, H_L);
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for schedule(dynamic,16)
|
||||
#endif
|
||||
|
||||
for (int y = 0; y < H_L; y++) {
|
||||
for (int x = 0; x < W_L; x++) {
|
||||
wav_L0[y * W_L + x] = bufl[y][x];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (radblur > 0.f) {
|
||||
array2D<float> bufl(W_L, H_L);
|
||||
#ifdef _OPENMP
|
||||
@ -6933,11 +6966,7 @@ void ImProcFunctions::wavcontrast4(float ** tmp, float contrast, float radblur,
|
||||
float ****templevel = nullptr;
|
||||
|
||||
if (wavcurvelev || wavcurvecomp) {
|
||||
FattalToneMappingParams fatParams;
|
||||
fatParams.enabled = wavcurvecomp;
|
||||
fatParams.threshold = fatdet;
|
||||
fatParams.amount = 50;
|
||||
fatParams.anchor = fatanch;
|
||||
|
||||
templevel = new float***[dir];
|
||||
|
||||
@ -6972,6 +7001,7 @@ void ImProcFunctions::wavcontrast4(float ** tmp, float contrast, float radblur,
|
||||
|
||||
//Compress dynamic range
|
||||
if (wavcurvecomp) {
|
||||
printf("Dynamic Range levels\n");
|
||||
for (int dir = 1; dir < 4; dir++) {
|
||||
for (int level = level_bl; level < maxlvl; ++level) {
|
||||
int W_L = wdspot->level_W(level);
|
||||
@ -6992,7 +7022,9 @@ void ImProcFunctions::wavcontrast4(float ** tmp, float contrast, float radblur,
|
||||
|
||||
|
||||
//blur level and dir
|
||||
if (wavcurvelev) {
|
||||
if (wavcurvelev && radlevblur > 0.f) {
|
||||
printf("Blur levels\n");
|
||||
|
||||
for (int dir = 1; dir < 4; dir++) {
|
||||
for (int level = level_bl; level < maxlvl; ++level) {
|
||||
int W_L = wdspot->level_W(level);
|
||||
@ -9121,7 +9153,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
||||
bool wavcurvecon = false;
|
||||
bool loccompwavutili = false;
|
||||
bool wavcurvecomp = false;
|
||||
wavcontrast4(bufmaskblurbl->L, contrast, 0.f, 0.f, GW, GH, level_bl, level_hl, level_br, level_hr, sk, numThreads, loclmasCurveblwav, lmasutiliblwav, dummy, loclevwavutili, wavcurvelev, dummy, locconwavutili, wavcurvecon, dummy, loccompwavutili, wavcurvecomp, 1.f, maxlvl, 0.f, 0.f);
|
||||
wavcontrast4(bufmaskblurbl->L, contrast, 0.f, 0.f, 0.f, GW, GH, level_bl, level_hl, level_br, level_hr, sk, numThreads, loclmasCurveblwav, lmasutiliblwav, dummy, loclevwavutili, wavcurvelev, dummy, locconwavutili, wavcurvecon, dummy, loccompwavutili, wavcurvecomp, 1.f, maxlvl, 0.f, 0.f);
|
||||
}
|
||||
|
||||
int shado = params->locallab.spots.at(sp).shadmaskbl;
|
||||
@ -10954,8 +10986,9 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
||||
const float sigma = params->locallab.spots.at(sp).sigma;
|
||||
const float fatdet = params->locallab.spots.at(sp).fatdet;
|
||||
const float fatanch = params->locallab.spots.at(sp).fatanch;
|
||||
const float fatres = params->locallab.spots.at(sp).fatres;
|
||||
|
||||
wavcontrast4(tmp1->L, contrast, radblur, radlevblur, tmp1->W, tmp1->H, level_bl, level_hl, level_br, level_hr, sk, numThreads, locwavCurve, locwavutili, loclevwavCurve, loclevwavutili, wavcurvelev, locconwavCurve, locconwavutili, wavcurvecon, loccompwavCurve, loccompwavutili, wavcurvecomp, sigma, maxlvl, fatdet, fatanch);
|
||||
wavcontrast4(tmp1->L, contrast, fatres, radblur, radlevblur, tmp1->W, tmp1->H, level_bl, level_hl, level_br, level_hr, sk, numThreads, locwavCurve, locwavutili, loclevwavCurve, loclevwavutili, wavcurvelev, locconwavCurve, locconwavutili, wavcurvecon, loccompwavCurve, loccompwavutili, wavcurvecomp, sigma, maxlvl, fatdet, fatanch);
|
||||
|
||||
const float satur = params->locallab.spots.at(sp).residchro;
|
||||
|
||||
|
@ -892,6 +892,7 @@ enum ProcEventCode {
|
||||
Evlocallabfatdet = 863,
|
||||
Evlocallabfatanch = 864,
|
||||
EvlocallabwavCurvecomp = 865,
|
||||
Evlocallabfatres = 866,
|
||||
NUMOFEVENTS
|
||||
};
|
||||
|
||||
|
@ -2728,6 +2728,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
||||
sigma(1.0),
|
||||
fatdet(40.0),
|
||||
fatanch(50.0),
|
||||
fatres(0.0),
|
||||
clarilres(0.0),
|
||||
claricres(0.0),
|
||||
clarisoft(1.0),
|
||||
@ -3121,6 +3122,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
||||
&& sigma == other.sigma
|
||||
&& fatdet == other.fatdet
|
||||
&& fatanch == other.fatanch
|
||||
&& fatres == other.fatres
|
||||
&& clarilres == other.clarilres
|
||||
&& claricres == other.claricres
|
||||
&& clarisoft == other.clarisoft
|
||||
@ -4494,6 +4496,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).sigma, "Locallab", "Sigma_" + std::to_string(i), spot.sigma, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).fatdet, "Locallab", "Fatdet_" + std::to_string(i), spot.fatdet, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).fatanch, "Locallab", "Fatanch_" + std::to_string(i), spot.fatanch, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).fatres, "Locallab", "Fatres_" + std::to_string(i), spot.fatres, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).clarilres, "Locallab", "ClariLres_" + std::to_string(i), spot.clarilres, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).claricres, "Locallab", "ClariCres_" + std::to_string(i), spot.claricres, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).clarisoft, "Locallab", "Clarisoft_" + std::to_string(i), spot.clarisoft, keyFile);
|
||||
@ -6016,6 +6019,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
||||
assignFromKeyfile(keyFile, "Locallab", "Sigma_" + std::to_string(i), pedited, spot.sigma, spotEdited.sigma);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Fatdet_" + std::to_string(i), pedited, spot.fatdet, spotEdited.fatdet);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Fatanch_" + std::to_string(i), pedited, spot.fatanch, spotEdited.fatanch);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Fatres_" + std::to_string(i), pedited, spot.fatres, spotEdited.fatres);
|
||||
assignFromKeyfile(keyFile, "Locallab", "ClariLres_" + std::to_string(i), pedited, spot.clarilres, spotEdited.clarilres);
|
||||
assignFromKeyfile(keyFile, "Locallab", "ClariCres_" + std::to_string(i), pedited, spot.claricres, spotEdited.claricres);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Clarisoft_" + std::to_string(i), pedited, spot.clarisoft, spotEdited.clarisoft);
|
||||
|
@ -1271,6 +1271,7 @@ struct LocallabParams {
|
||||
double sigma;
|
||||
double fatdet;
|
||||
double fatanch;
|
||||
double fatres;
|
||||
double clarilres;
|
||||
double claricres;
|
||||
double clarisoft;
|
||||
|
@ -895,7 +895,8 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
||||
LUMINANCECURVE, // Evlocallaboriglc
|
||||
LUMINANCECURVE, // Evlocallabfatdet
|
||||
LUMINANCECURVE, // Evlocallabfatanch
|
||||
LUMINANCECURVE //EvlocallabwavCurvecomp
|
||||
LUMINANCECURVE, //EvlocallabwavCurvecomp
|
||||
LUMINANCECURVE //Evlocallabfatres
|
||||
};
|
||||
|
||||
namespace rtengine
|
||||
|
@ -1098,7 +1098,6 @@ void ImProcFunctions::ToneMapFattal02(Imagefloat *rgb, const FattalToneMappingPa
|
||||
constexpr float min_luminance = 1.f;
|
||||
|
||||
TMatrix ws = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile);
|
||||
printf("OK 1\n");
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for if(multiThread)
|
||||
#endif
|
||||
@ -1112,7 +1111,6 @@ printf("OK 1\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("OK 2\n");
|
||||
|
||||
float oldMedian;
|
||||
const float percentile = float(LIM(fatParams.anchor, 1, 100)) / 100.f;
|
||||
@ -1152,10 +1150,8 @@ printf("OK 2\n");
|
||||
}
|
||||
|
||||
rescale_nearest(Yr, L, multiThread);
|
||||
printf("OK 3\n");
|
||||
|
||||
tmo_fattal02(w2, h2, L, L, alpha, beta, noise, detail_level, multiThread);
|
||||
printf("OK 4\n");
|
||||
|
||||
const float hr = float(h2) / float(h);
|
||||
const float wr = float(w2) / float(w);
|
||||
@ -1189,7 +1185,6 @@ printf("OK 4\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("OK 5\n");
|
||||
|
||||
}
|
||||
|
||||
|
@ -563,6 +563,7 @@ residchro(Gtk::manage(new Adjuster(M("TP_LOCALLAB_RESIDCHRO"), -100, 100, 1, 0))
|
||||
sigma(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SIGMAWAV"), 0.2, 2.5, 0.01, 1.))),
|
||||
fatdet(Gtk::manage(new Adjuster(M("TP_LOCALLAB_FATDETAIL"), -100., 300., 1., 0.))),
|
||||
fatanch(Gtk::manage(new Adjuster(M("TP_LOCALLAB_FATANCHOR"), 1., 100., 1., 50., Gtk::manage(new RTImage("circle-black-small.png")), Gtk::manage(new RTImage("circle-white-small.png"))))),
|
||||
fatres(Gtk::manage(new Adjuster(M("TP_LOCALLAB_FATRES"), 0., 100., 1., 0.))),
|
||||
|
||||
multiplier(
|
||||
[this]() -> std::array<Adjuster*, 6> {
|
||||
@ -742,7 +743,6 @@ retitoolFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_RETITOOLFRA")))),
|
||||
residFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_RESID")))),
|
||||
clariFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_CLARIFRA")))),
|
||||
blurlevelFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_BLURLEVELFRA")))),
|
||||
blurresidFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_BLURRESIDFRA")))),
|
||||
contFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_CONTFRA")))),
|
||||
compFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_COMPFRA")))),
|
||||
grainFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_GRAINFRA")))),
|
||||
@ -2871,6 +2871,7 @@ pe(nullptr)
|
||||
sigma->setAdjusterListener(this);
|
||||
fatdet->setAdjusterListener(this);
|
||||
fatanch->setAdjusterListener(this);
|
||||
fatres->setAdjusterListener(this);
|
||||
clarilres->setAdjusterListener(this);
|
||||
clarisoft->setLogScale(10, -10);
|
||||
clarisoft->setAdjusterListener(this);
|
||||
@ -2883,24 +2884,23 @@ pe(nullptr)
|
||||
clariFrame->set_label_align(0.025, 0.5);
|
||||
ToolParamBlock* const clariBox = Gtk::manage(new ToolParamBlock());
|
||||
clariBox->pack_start(*clarilres);
|
||||
|
||||
clariBox->pack_start(*claricres);
|
||||
|
||||
clariBox->pack_start(*clarisoft);
|
||||
clariBox->pack_start(*claricres);
|
||||
clariBox->pack_start(*clarisoft);
|
||||
clariBox->pack_start(*origlc);
|
||||
|
||||
clariFrame->add(*clariBox);
|
||||
|
||||
blurresidFrame->set_label_align(0.025, 0.5);
|
||||
ToolParamBlock* const blurcontraBox = Gtk::manage(new ToolParamBlock());
|
||||
blurcontraBox->pack_start(*residblur);
|
||||
blurcontraBox->pack_start(*blurlc);
|
||||
blurresidFrame->add(*blurcontraBox);
|
||||
|
||||
Gtk::HSeparator* const separatorblu = Gtk::manage(new Gtk::HSeparator());
|
||||
|
||||
blurlevelFrame->set_label_align(0.025, 0.5);
|
||||
ToolParamBlock* const blurlevcontBox = Gtk::manage(new ToolParamBlock());
|
||||
blurlevcontBox->pack_start(*levelblur);
|
||||
blurlevcontBox->pack_start(*LocalcurveEditorwavlev, Gtk::PACK_SHRINK, 4);
|
||||
blurlevcontBox->pack_start(*separatorblu);
|
||||
blurlevcontBox->pack_start(*residblur);
|
||||
blurlevcontBox->pack_start(*blurlc);
|
||||
|
||||
blurlevelFrame->add(*blurlevcontBox);
|
||||
|
||||
contFrame->set_label_align(0.025, 0.5);
|
||||
@ -2909,11 +2909,15 @@ pe(nullptr)
|
||||
contlevBox->pack_start(*LocalcurveEditorwavcon, Gtk::PACK_SHRINK, 4);
|
||||
contFrame->add(*contlevBox);
|
||||
|
||||
Gtk::HSeparator* const separatorcomp = Gtk::manage(new Gtk::HSeparator());
|
||||
|
||||
compFrame->set_label_align(0.025, 0.5);
|
||||
ToolParamBlock* const compBox = Gtk::manage(new ToolParamBlock());
|
||||
compBox->pack_start(*fatdet);
|
||||
compBox->pack_start(*fatanch);
|
||||
compBox->pack_start(*LocalcurveEditorwavcomp, Gtk::PACK_SHRINK, 4);
|
||||
compBox->pack_start(*separatorcomp);
|
||||
compBox->pack_start(*fatres);
|
||||
compFrame->add(*compBox);
|
||||
|
||||
setExpandAlignProperties(expcontrastpyr, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
||||
@ -2923,7 +2927,6 @@ pe(nullptr)
|
||||
blurcontBox->pack_start(*clariFrame);
|
||||
blurcontBox->pack_start(*contFrame);
|
||||
blurcontBox->pack_start(*compFrame);
|
||||
blurcontBox->pack_start(*blurresidFrame);
|
||||
blurcontBox->pack_start(*blurlevelFrame);
|
||||
|
||||
expcontrastpyr->add(*blurcontBox, false);
|
||||
@ -5092,6 +5095,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
||||
pp->locallab.spots.at(pp->locallab.selspot).sigma = sigma->getValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).fatdet = fatdet->getValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).fatanch = fatanch->getValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).fatres = fatres->getValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).clarilres = clarilres->getValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).claricres = claricres->getValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).clarisoft = clarisoft->getValue();
|
||||
@ -5488,6 +5492,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
||||
pe->locallab.spots.at(pp->locallab.selspot).sigma = pe->locallab.spots.at(pp->locallab.selspot).sigma || sigma->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).fatdet = pe->locallab.spots.at(pp->locallab.selspot).fatdet || fatdet->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).fatanch = pe->locallab.spots.at(pp->locallab.selspot).fatanch || fatanch->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).fatres = pe->locallab.spots.at(pp->locallab.selspot).fatres || fatres->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).clarilres = pe->locallab.spots.at(pp->locallab.selspot).clarilres || clarilres->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).claricres = pe->locallab.spots.at(pp->locallab.selspot).claricres || claricres->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).clarisoft = pe->locallab.spots.at(pp->locallab.selspot).clarisoft || clarisoft->getEditedState();
|
||||
@ -5881,6 +5886,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).sigma = pedited->locallab.spots.at(pp->locallab.selspot).sigma || sigma->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).fatdet = pedited->locallab.spots.at(pp->locallab.selspot).fatdet || fatdet->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).fatanch = pedited->locallab.spots.at(pp->locallab.selspot).fatanch || fatanch->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).fatres = pedited->locallab.spots.at(pp->locallab.selspot).fatres || fatres->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).clarilres = pedited->locallab.spots.at(pp->locallab.selspot).clarilres || clarilres->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).claricres = pedited->locallab.spots.at(pp->locallab.selspot).claricres || claricres->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).clarisoft = pedited->locallab.spots.at(pp->locallab.selspot).clarisoft || clarisoft->getEditedState();
|
||||
@ -6405,6 +6411,7 @@ void Locallab::localcontMethodChanged()
|
||||
sigma->hide();
|
||||
fatdet->hide();
|
||||
fatanch->hide();
|
||||
fatres->hide();
|
||||
clarilres->hide();
|
||||
claricres->hide();
|
||||
clarisoft->hide();
|
||||
@ -6430,6 +6437,7 @@ void Locallab::localcontMethodChanged()
|
||||
sigma->show();
|
||||
fatdet->show();
|
||||
fatanch->show();
|
||||
fatres->show();
|
||||
clarilres->show();
|
||||
claricres->show();
|
||||
clarisoft->show();
|
||||
@ -8438,6 +8446,7 @@ void Locallab::setDefaults(const rtengine::procparams::ProcParams * defParams, c
|
||||
sigma->setDefault(defSpot->sigma);
|
||||
fatdet->setDefault(defSpot->fatdet);
|
||||
fatanch->setDefault(defSpot->fatanch);
|
||||
fatres->setDefault(defSpot->fatres);
|
||||
clarilres->setDefault(defSpot->clarilres);
|
||||
claricres->setDefault(defSpot->claricres);
|
||||
clarisoft->setDefault(defSpot->clarisoft);
|
||||
@ -8673,6 +8682,7 @@ void Locallab::setDefaults(const rtengine::procparams::ProcParams * defParams, c
|
||||
sigma->setDefaultEditedState(Irrelevant);
|
||||
fatdet->setDefaultEditedState(Irrelevant);
|
||||
fatanch->setDefaultEditedState(Irrelevant);
|
||||
fatres->setDefaultEditedState(Irrelevant);
|
||||
clarilres->setDefaultEditedState(Irrelevant);
|
||||
claricres->setDefaultEditedState(Irrelevant);
|
||||
clarisoft->setDefaultEditedState(Irrelevant);
|
||||
@ -8913,6 +8923,7 @@ void Locallab::setDefaults(const rtengine::procparams::ProcParams * defParams, c
|
||||
sigma->setDefaultEditedState(defSpotState->sigma ? Edited : UnEdited);
|
||||
fatdet->setDefaultEditedState(defSpotState->fatdet ? Edited : UnEdited);
|
||||
fatanch->setDefaultEditedState(defSpotState->fatanch ? Edited : UnEdited);
|
||||
fatres->setDefaultEditedState(defSpotState->fatres ? Edited : UnEdited);
|
||||
clarilres->setDefaultEditedState(defSpotState->clarilres ? Edited : UnEdited);
|
||||
claricres->setDefaultEditedState(defSpotState->claricres ? Edited : UnEdited);
|
||||
clarisoft->setDefaultEditedState(defSpotState->clarisoft ? Edited : UnEdited);
|
||||
@ -10096,6 +10107,12 @@ void Locallab::adjusterChanged(Adjuster * a, double newval)
|
||||
}
|
||||
}
|
||||
|
||||
if (a == fatres) {
|
||||
if (listener) {
|
||||
listener->panelChanged(Evlocallabfatres, fatres->getTextValue());
|
||||
}
|
||||
}
|
||||
|
||||
if (a == clarilres) {
|
||||
if (listener) {
|
||||
listener->panelChanged(Evlocallabclarilres, clarilres->getTextValue());
|
||||
@ -10570,6 +10587,7 @@ void Locallab::setBatchMode(bool batchMode)
|
||||
sigma->showEditedCB();
|
||||
fatdet->showEditedCB();
|
||||
fatanch->showEditedCB();
|
||||
fatres->showEditedCB();
|
||||
clarilres->showEditedCB();
|
||||
claricres->showEditedCB();
|
||||
clarisoft->showEditedCB();
|
||||
@ -11623,6 +11641,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
||||
sigma->setValue(pp->locallab.spots.at(index).sigma);
|
||||
fatdet->setValue(pp->locallab.spots.at(index).fatdet);
|
||||
fatanch->setValue(pp->locallab.spots.at(index).fatanch);
|
||||
fatres->setValue(pp->locallab.spots.at(index).fatres);
|
||||
clarilres->setValue(pp->locallab.spots.at(index).clarilres);
|
||||
claricres->setValue(pp->locallab.spots.at(index).claricres);
|
||||
clarisoft->setValue(pp->locallab.spots.at(index).clarisoft);
|
||||
@ -12123,6 +12142,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
||||
sigma->setEditedState(spotState->sigma ? Edited : UnEdited);
|
||||
fatdet->setEditedState(spotState->fatdet ? Edited : UnEdited);
|
||||
fatanch->setEditedState(spotState->fatanch ? Edited : UnEdited);
|
||||
fatres->setEditedState(spotState->fatres ? Edited : UnEdited);
|
||||
clarilres->setEditedState(spotState->clarilres ? Edited : UnEdited);
|
||||
claricres->setEditedState(spotState->claricres ? Edited : UnEdited);
|
||||
clarisoft->setEditedState(spotState->clarisoft ? Edited : UnEdited);
|
||||
@ -12635,6 +12655,7 @@ void Locallab::updateSpecificGUIState()
|
||||
sigma->hide();
|
||||
fatdet->hide();
|
||||
fatanch->hide();
|
||||
fatres->hide();
|
||||
clarilres->hide();
|
||||
claricres->hide();
|
||||
clarisoft->hide();
|
||||
@ -12659,6 +12680,7 @@ void Locallab::updateSpecificGUIState()
|
||||
sigma->show();
|
||||
fatdet->show();
|
||||
fatanch->show();
|
||||
fatres->show();
|
||||
residchro->show();
|
||||
clarilres->show();
|
||||
claricres->show();
|
||||
|
@ -362,6 +362,7 @@ private:
|
||||
Adjuster* const sigma;
|
||||
Adjuster* const fatdet;
|
||||
Adjuster* const fatanch;
|
||||
Adjuster* const fatres;
|
||||
// Contrast by detail levels
|
||||
const std::array<Adjuster*, 6> multiplier;
|
||||
Adjuster* const chromacbdl;
|
||||
@ -581,7 +582,6 @@ private:
|
||||
Gtk::Frame* const residFrame;
|
||||
Gtk::Frame* const clariFrame;
|
||||
Gtk::Frame* const blurlevelFrame;
|
||||
Gtk::Frame* const blurresidFrame;
|
||||
Gtk::Frame* const contFrame;
|
||||
Gtk::Frame* const compFrame;
|
||||
Gtk::Frame* const grainFrame;
|
||||
|
@ -1264,6 +1264,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
||||
locallab.spots.at(j).sigma = locallab.spots.at(j).sigma && pSpot.sigma == otherSpot.sigma;
|
||||
locallab.spots.at(j).fatdet = locallab.spots.at(j).fatdet && pSpot.fatdet == otherSpot.fatdet;
|
||||
locallab.spots.at(j).fatanch = locallab.spots.at(j).fatanch && pSpot.fatanch == otherSpot.fatanch;
|
||||
locallab.spots.at(j).fatres = locallab.spots.at(j).fatres && pSpot.fatres == otherSpot.fatres;
|
||||
locallab.spots.at(j).clarilres = locallab.spots.at(j).clarilres && pSpot.clarilres == otherSpot.clarilres;
|
||||
locallab.spots.at(j).claricres = locallab.spots.at(j).claricres && pSpot.claricres == otherSpot.claricres;
|
||||
locallab.spots.at(j).clarisoft = locallab.spots.at(j).clarisoft && pSpot.clarisoft == otherSpot.clarisoft;
|
||||
@ -4017,6 +4018,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
||||
toEdit.locallab.spots.at(i).fatanch = mods.locallab.spots.at(i).fatanch;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).fatres) {
|
||||
toEdit.locallab.spots.at(i).fatres = mods.locallab.spots.at(i).fatres;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).clarilres) {
|
||||
toEdit.locallab.spots.at(i).clarilres = mods.locallab.spots.at(i).clarilres;
|
||||
}
|
||||
@ -5540,6 +5545,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
||||
sigma(v),
|
||||
fatdet(v),
|
||||
fatanch(v),
|
||||
fatres(v),
|
||||
clarilres(v),
|
||||
claricres(v),
|
||||
clarisoft(v),
|
||||
@ -5923,6 +5929,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
||||
sigma = v;
|
||||
fatdet = v;
|
||||
fatanch = v;
|
||||
fatres = v;
|
||||
clarilres = v;
|
||||
claricres = v;
|
||||
clarisoft = v;
|
||||
|
@ -697,6 +697,7 @@ public:
|
||||
bool sigma;
|
||||
bool fatdet;
|
||||
bool fatanch;
|
||||
bool fatres;
|
||||
bool clarilres;
|
||||
bool claricres;
|
||||
bool clarisoft;
|
||||
|
Loading…
x
Reference in New Issue
Block a user