Add structure to shape detection for colorlight and exposure
This commit is contained in:
parent
905a143d03
commit
c71d70f0ea
@ -864,6 +864,8 @@ HISTORY_MSG_608;Local - Color Mask L
|
||||
HISTORY_MSG_609;Local - Exp Mask C
|
||||
HISTORY_MSG_610;Local - Exp Mask L
|
||||
HISTORY_MSG_611;Local - Color Mask H
|
||||
HISTORY_MSG_612;Local - Color Structure
|
||||
HISTORY_MSG_613;Local - Exp Structure
|
||||
HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
|
||||
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
|
||||
HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
|
||||
@ -2039,6 +2041,7 @@ TP_LOCALLAB_USEMASK;Use mask
|
||||
TP_LOCALLAB_SOFT;Soft Light
|
||||
TP_LOCALLAB_STRENG;Strength
|
||||
TP_LOCALLAB_STRENGTH;Noise
|
||||
TP_LOCALLAB_STRUCCOL;Structure
|
||||
TP_LOCALLAB_STYPE;Shape method
|
||||
TP_LOCALLAB_STYPE_TOOLTIP;You can choose between:\nSymmetrical - left handle linked to right, top handle linked to bottom.\nIndependent - all handles are independent.
|
||||
TP_LOCALLAB_SYMSL;Symmetrical (mouse + sliders)
|
||||
|
@ -951,7 +951,7 @@ void Crop::update(int todo)
|
||||
hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2,
|
||||
sca);
|
||||
|
||||
parent->ipf.Lab_Local(1, sp, parent->sobelrefs, (float**)shbuffer, labnCrop, labnCrop, reservCrop, cropx / skip, cropy / skip, skips(parent->fw, skip), skips(parent->fh, skip), skip, locRETgainCurve, lllocalcurve2,
|
||||
parent->ipf.Lab_Local(1, sp, (float**)shbuffer, labnCrop, labnCrop, reservCrop, cropx / skip, cropy / skip, skips(parent->fw, skip), skips(parent->fh, skip), skip, locRETgainCurve, lllocalcurve2,
|
||||
loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, lochhmasCurve, locccmasexpCurve, locllmasexpCurve, LHutili, HHutili, cclocalcurve2, localskutili, sklocalcurve2, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, huerefblu, huere, chromare, lumare, sobelre);
|
||||
|
||||
lllocalcurve2.clear();
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include <fstream>
|
||||
#include <string>
|
||||
#include <unistd.h>
|
||||
#include "jaggedarray.h"
|
||||
|
||||
#include "iccstore.h"
|
||||
#include <iostream>
|
||||
@ -772,6 +773,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
float **shbuffer = nullptr;
|
||||
int sca = 1;
|
||||
double huere, chromare, lumare, huerefblu, sobelre;
|
||||
JaggedArray<float> blend(pW, pH);
|
||||
|
||||
for (int sp = 0; sp < params.locallab.nbspot && sp < (int)params.locallab.spots.size(); sp++) {
|
||||
// Set local curves of current spot to LUT
|
||||
@ -805,9 +807,9 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
|
||||
// Reference parameters computation
|
||||
if (params.locallab.spots.at(sp).spotMethod == "exc") {
|
||||
ipf.calc_ref(sp, reserv, reserv, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
|
||||
ipf.calc_ref(sp, reserv, reserv, blend, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
|
||||
} else {
|
||||
ipf.calc_ref(sp, nprevl, nprevl, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
|
||||
ipf.calc_ref(sp, nprevl, nprevl, blend, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
|
||||
}
|
||||
CurveFactory::complexCurvelocal(ecomp, black / 65535., hlcompr, hlcomprthresh, shcompr, br, cont, lhist16loc,
|
||||
hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
|
||||
@ -830,13 +832,13 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
* - maxspot, huerefs, centerx and centery aren't used in Lab_Local (only for printf) so values aren't important
|
||||
* - shbuffer is used as nullptr
|
||||
*/
|
||||
ipf.Lab_Local(3, sp, sobelrefs, (float**)shbuffer, nprevl, nprevl, reserv, 0, 0, pW, pH, scale, locRETgainCurve, lllocalcurve, loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, lochhmasCurve, locccmasexpCurve, locllmasexpCurve,
|
||||
ipf.Lab_Local(3, sp, (float**)shbuffer, nprevl, nprevl, reserv, 0, 0, pW, pH, scale, locRETgainCurve, lllocalcurve, loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, lochhmasCurve, locccmasexpCurve, locllmasexpCurve,
|
||||
LHutili, HHutili, cclocalcurve, localskutili, sklocalcurve, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerblu, huer, chromar, lumar, sobeler);
|
||||
|
||||
if (params.locallab.spots.at(sp).spotMethod == "exc") {
|
||||
ipf.calc_ref(sp, reserv, reserv, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
|
||||
ipf.calc_ref(sp, reserv, reserv, blend, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
|
||||
} else {
|
||||
ipf.calc_ref(sp, nprevl, nprevl, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
|
||||
ipf.calc_ref(sp, nprevl, nprevl, blend, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
|
||||
}
|
||||
|
||||
// Clear local curves
|
||||
@ -848,9 +850,9 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
for (int sp = 0; sp < params.locallab.nbspot && sp < (int)params.locallab.spots.size(); sp++) {
|
||||
//update references after threatment
|
||||
if (params.locallab.spots.at(sp).spotMethod == "exc") {
|
||||
ipf.calc_ref(sp, reserv, reserv, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
|
||||
ipf.calc_ref(sp, reserv, reserv, blend, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
|
||||
} else {
|
||||
ipf.calc_ref(sp, nprevl, nprevl, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
|
||||
ipf.calc_ref(sp, nprevl, nprevl, blend, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
|
||||
}
|
||||
huerblu = huerefblurs[sp] = huerefblu;
|
||||
huer = huerefs[sp] = huere;
|
||||
|
@ -286,10 +286,10 @@ public:
|
||||
//locallab
|
||||
void MSRLocal(int sp, float** luminance, float** templ, const float* const *originalLuminance, const int width, const int height, const LocallabParams &loc, const int skip, const LocretigainCurve &locRETgainCcurve, const int chrome, const int scall, const float krad, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax);
|
||||
// void calc_ref (LabImage* original, LabImage* transformed, int cx, int cy, int oW, int oH, int sk, double &huere, double &chromare, double &lumare, double &sobelref);
|
||||
void calc_ref(int sp, LabImage* original, LabImage* transformed, int cx, int cy, int oW, int oH, int sk, double &huerefblur, double &huere, double &chromare, double &lumare, double &sobelref, LUTu & histogram);
|
||||
void calc_ref(int sp, LabImage* original, LabImage* transformed, float **blend, int cx, int cy, int oW, int oH, int sk, double &huerefblur, double &huere, double &chromare, double &lumare, double &sobelref, LUTu & histogram);
|
||||
void copy_ref(LabImage* spotbuffer, LabImage* original, LabImage* transformed, int cx, int cy, int sk, const struct local_params & lp, double &huerefspot, double &chromarefspot, double &lumarefspot);
|
||||
void paste_ref(LabImage* spotbuffer, LabImage* transformed, int cx, int cy, int sk, const struct local_params & lp);
|
||||
void Lab_Local(int call, int sp, LUTf & sobelrefs, float** shbuffer, LabImage* original, LabImage* transformed, LabImage* reserved, int cx, int cy, int oW, int oH, int sk, const LocretigainCurve & locRETgainCcurve, LUTf & lllocalcurve, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve, const LocCCmaskCurve & locccmasCurve, const LocLLmaskCurve & locllmasCurve, const LocHHmaskCurve & lochhmasCurve, const LocCCmaskexpCurve & locccmasexpCurve, const LocLLmaskexpCurve & locllmasexpCurve, bool &LHutili, bool &HHutili, LUTf & cclocalcurve, bool & localskutili, LUTf & sklocalcurve, bool & localexutili, LUTf & exlocalcurve, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve, LUTf & lightCurveloc, double & huerefblur, double &hueref, double &chromaref, double &lumaref, double &sobelref);
|
||||
void Lab_Local(int call, int sp, float** shbuffer, LabImage* original, LabImage* transformed, LabImage* reserved, int cx, int cy, int oW, int oH, int sk, const LocretigainCurve & locRETgainCcurve, LUTf & lllocalcurve, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve, const LocCCmaskCurve & locccmasCurve, const LocLLmaskCurve & locllmasCurve, const LocHHmaskCurve & lochhmasCurve, const LocCCmaskexpCurve & locccmasexpCurve, const LocLLmaskexpCurve & locllmasexpCurve, bool &LHutili, bool &HHutili, LUTf & cclocalcurve, bool & localskutili, LUTf & sklocalcurve, bool & localexutili, LUTf & exlocalcurve, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve, LUTf & lightCurveloc, double & huerefblur, double &hueref, double &chromaref, double &lumaref, double &sobelref);
|
||||
void addGaNoise(LabImage *lab, LabImage *dst, const float mean, const float variance, const int sk);
|
||||
void BlurNoise_Localold(int call, const struct local_params& lp, LabImage* original, LabImage* transformed, const LabImage* const tmp1, int cx, int cy);
|
||||
void InverseBlurNoise_Local(const struct local_params& lp, LabImage* original, LabImage* transformed, const LabImage* const tmp1, int cx, int cy);
|
||||
@ -302,7 +302,7 @@ public:
|
||||
|
||||
void vibrancelocal(int sp, int bfw, int bfh, LabImage* lab, LabImage* dest, bool & localskutili, LUTf & sklocalcurve);
|
||||
// void Expo_vibr_Local(float moddE, float powdE, int senstype, float **buflight, float **bufchro, const float hueplus, const float huemoins, const float hueref, const float dhue, const float chromaref, const float lumaref, const struct local_params & lp, LabImage * original, LabImage * transformed, const LabImage * const tmp1, int cx, int cy, int sk);
|
||||
void Expo_vibr_Local(float moddE, float powdE, int senstype, LabImage * originalmask, float **buflight, float **bufchro, float **buf_a_cat, float ** buf_b_cat, const float hueplus, const float huemoins, const float hueref, const float dhue, const float chromaref, const float lumaref, const struct local_params & lp, LabImage * original, LabImage * transformed, LabImage * difLab, const LabImage * const tmp1, int cx, int cy, int sk);
|
||||
void Expo_vibr_Local(float moddE, float powdE, int senstype, LabImage * originalmask, float **buflight, float **bufchro, float **buf_a_cat, float ** buf_b_cat, const float hueplus, const float huemoins, const float hueref, const float dhue, const float chromaref, const float lumaref, float sobelref, float ** blend2, const struct local_params & lp, LabImage * original, LabImage * transformed, LabImage * difLab, const LabImage * const tmp1, int cx, int cy, int sk);
|
||||
void exlabLocal(const local_params& lp, int bfh, int bfw, LabImage* bufexporig, LabImage* lab, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve);
|
||||
void Exclude_Local(float moddE, float powdE, int sen, float **deltaso, float **buflight, float **bufchro, const float hueplus, const float huemoins, const float hueref, const float dhue, const float chromaref, const float lumaref, const struct local_params & lp, LabImage * original, LabImage * transformed, LabImage * rsv, LabImage * reserv, int cx, int cy, int sk);
|
||||
|
||||
@ -311,7 +311,7 @@ public:
|
||||
|
||||
void fftw_denoise(int GW, int GH, int max_numblox_W, int min_numblox_W, float **tmp1, array2D<float> *Lin, int numThreads, const struct local_params & lp, int chrom);
|
||||
|
||||
void ColorLight_Local(float moddE, float powdE, int call, LabImage * bufcolorig, LabImage * originalmask, float **buflight, float **bufchro, float **bufchroslid, float ** bufhh, float ** buflightslid, bool &LHutili, bool &HHutili, const float hueplus, const float huemoins, const float hueref, const float dhue, const float chromaref, const float lumaref, LUTf & lllocalcurve, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve, LUTf & lightCurveloc, const local_params& lp, LabImage* original, LabImage* transformed, int cx, int cy, int sk);
|
||||
void ColorLight_Local(float moddE, float powdE, int call, LabImage * bufcolorig, LabImage * originalmask, float **buflight, float **bufchro, float **bufchroslid, float ** bufhh, float ** buflightslid, bool &LHutili, bool &HHutili, const float hueplus, const float huemoins, const float hueref, const float dhue, const float chromaref, const float lumaref, float sobelref, float ** blend2, float ** blendch, LUTf & lllocalcurve, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve, LUTf & lightCurveloc, const local_params& lp, LabImage* original, LabImage* transformed, int cx, int cy, int sk);
|
||||
void InverseColorLight_Local(const struct local_params& lp, LUTf & lightCurveloc, LabImage* original, LabImage* transformed, int cx, int cy, const float hueplus, const float huemoins, const float hueref, const float dhue, const float chromaref, const float lumaref, int sk);
|
||||
|
||||
void Sharp_Local(int call, float **loctemp, int senstype, const float hueplus, const float huemoins, const float hueref, const float dhue, const float chromaref, const local_params& lp, LabImage* original, LabImage* transformed, int cx, int cy, int sk);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -638,6 +638,8 @@ enum ProcEventCode {
|
||||
EvlocallabCCmaskexpshape = 608,
|
||||
EvlocallabLLmaskexpshape = 609,
|
||||
EvlocallabHHmaskshape = 610,
|
||||
Evlocallabstructcol = 611,
|
||||
Evlocallabstructexp = 612,
|
||||
NUMOFEVENTS
|
||||
};
|
||||
|
||||
|
@ -2362,6 +2362,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
||||
contrast(0),
|
||||
chroma(0),
|
||||
sensi(19),
|
||||
structcol(0),
|
||||
qualitycurveMethod("none"),
|
||||
showmaskcolMethod("none"),
|
||||
llcurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0},
|
||||
@ -2375,12 +2376,13 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
||||
// Exposure
|
||||
expexpose(false),
|
||||
expcomp(0),
|
||||
hlcompr(20),
|
||||
hlcompr(60),
|
||||
hlcomprthresh(33),
|
||||
black(0),
|
||||
shcompr(50),
|
||||
warm(0),
|
||||
sensiex(19),
|
||||
structexp(0),
|
||||
excurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0},
|
||||
showmaskexpMethod("none"),
|
||||
CCmaskexpcurve{(double)FCT_MinMaxCPoints, 0., 1., 0.35, 0.35, 1., 1., 0.35, 0.35},
|
||||
@ -2498,6 +2500,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
||||
&& contrast == other.contrast
|
||||
&& chroma == other.chroma
|
||||
&& sensi == other.sensi
|
||||
&& structcol == other.structcol
|
||||
&& qualitycurveMethod == other.qualitycurveMethod
|
||||
&& showmaskcolMethod == other.showmaskcolMethod
|
||||
&& llcurve == other.llcurve
|
||||
@ -2517,6 +2520,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
||||
&& shcompr == other.shcompr
|
||||
&& warm == other.warm
|
||||
&& sensiex == other.sensiex
|
||||
&& structexp == other.structexp
|
||||
&& excurve == other.excurve
|
||||
&& showmaskexpMethod == other.showmaskexpMethod
|
||||
&& CCmaskexpcurve == other.CCmaskexpcurve
|
||||
@ -3586,6 +3590,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).contrast, "Locallab", "Contrast_" + std::to_string(i), spot.contrast, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).chroma, "Locallab", "Chroma_" + std::to_string(i), spot.chroma, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).sensi, "Locallab", "Sensi_" + std::to_string(i), spot.sensi, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).structcol, "Locallab", "Structcol_" + std::to_string(i), spot.structcol, 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).showmaskcolMethod, "Locallab", "ShowmaskcolMethod_" + std::to_string(i), spot.showmaskcolMethod, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).llcurve, "Locallab", "LLCurve_" + std::to_string(i), spot.llcurve, keyFile);
|
||||
@ -3605,6 +3610,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).shcompr, "Locallab", "Shcompr_" + std::to_string(i), spot.shcompr, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).warm, "Locallab", "Warm_" + std::to_string(i), spot.warm, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).sensiex, "Locallab", "Sensiex_" + std::to_string(i), spot.sensiex, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).structexp, "Locallab", "Structexp_" + std::to_string(i), spot.structexp, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).excurve, "Locallab", "ExCurve_" + std::to_string(i), spot.excurve, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).showmaskexpMethod, "Locallab", "ShowmaskexpMethod_" + std::to_string(i), spot.showmaskexpMethod, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).CCmaskexpcurve, "Locallab", "CCmaskexpCurve_" + std::to_string(i), spot.CCmaskexpcurve, keyFile);
|
||||
@ -4801,6 +4807,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
||||
assignFromKeyfile(keyFile, "Locallab", "Contrast_" + std::to_string(i), pedited, spot.contrast, spotEdited.contrast);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Chroma_" + std::to_string(i), pedited, spot.chroma, spotEdited.chroma);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Sensi_" + std::to_string(i), pedited, spot.sensi, spotEdited.sensi);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Structcol_" + std::to_string(i), pedited, spot.structcol, spotEdited.structcol);
|
||||
assignFromKeyfile(keyFile, "Locallab", "QualityCurveMethod_" + std::to_string(i), pedited, spot.qualitycurveMethod, spotEdited.qualitycurveMethod);
|
||||
assignFromKeyfile(keyFile, "Locallab", "ShowmaskcolMethod_" + std::to_string(i), pedited, spot.showmaskcolMethod, spotEdited.showmaskcolMethod);
|
||||
assignFromKeyfile(keyFile, "Locallab", "LLCurve_" + std::to_string(i), pedited, spot.llcurve, spotEdited.llcurve);
|
||||
@ -4820,6 +4827,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
||||
assignFromKeyfile(keyFile, "Locallab", "Shcompr_" + std::to_string(i), pedited, spot.shcompr, spotEdited.shcompr);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Warm_" + std::to_string(i), pedited, spot.warm, spotEdited.warm);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Sensiex_" + std::to_string(i), pedited, spot.sensiex, spotEdited.sensiex);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Structexp_" + std::to_string(i), pedited, spot.structexp, spotEdited.structexp);
|
||||
assignFromKeyfile(keyFile, "Locallab", "ExCurve_" + std::to_string(i), pedited, spot.excurve, spotEdited.excurve);
|
||||
assignFromKeyfile(keyFile, "Locallab", "ShowmaskexpMethod_" + std::to_string(i), pedited, spot.showmaskexpMethod, spotEdited.showmaskexpMethod);
|
||||
assignFromKeyfile(keyFile, "Locallab", "CCmaskexpCurve_" + std::to_string(i), pedited, spot.CCmaskexpcurve, spotEdited.CCmaskexpcurve);
|
||||
|
@ -959,6 +959,7 @@ struct LocallabParams {
|
||||
int contrast;
|
||||
int chroma;
|
||||
int sensi;
|
||||
int structcol;
|
||||
Glib::ustring qualitycurveMethod;
|
||||
Glib::ustring showmaskcolMethod;
|
||||
std::vector<double> llcurve;
|
||||
@ -978,6 +979,7 @@ struct LocallabParams {
|
||||
int shcompr;
|
||||
int warm;
|
||||
int sensiex;
|
||||
int structexp;
|
||||
std::vector<double> excurve;
|
||||
Glib::ustring showmaskexpMethod;
|
||||
std::vector<double> CCmaskexpcurve;
|
||||
|
@ -637,7 +637,9 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
||||
LUMINANCECURVE, //EvlocallabLLmaskshape
|
||||
LUMINANCECURVE, //EvlocallabCCmaskexpshape
|
||||
LUMINANCECURVE, //EvlocallabLLmaskexpshape
|
||||
LUMINANCECURVE //EvlocallabHHmaskshape
|
||||
LUMINANCECURVE, //EvlocallabHHmaskshape
|
||||
LUMINANCECURVE, //Evlocallabstructcol
|
||||
LUMINANCECURVE //Evlocallabstructexp
|
||||
};
|
||||
|
||||
|
||||
|
@ -32,6 +32,7 @@
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <string>
|
||||
#include "jaggedarray.h"
|
||||
|
||||
|
||||
#undef THREAD_PRIORITY_NORMAL
|
||||
@ -1091,6 +1092,7 @@ private:
|
||||
|
||||
// int maxspot = 1;
|
||||
float** shbuffer = nullptr;
|
||||
JaggedArray<float> blend(fw, fh);
|
||||
|
||||
for (int sp = 0; sp < params.locallab.nbspot && sp < (int)params.locallab.spots.size(); sp++) {
|
||||
if (params.locallab.spots.at(sp).inverssha) {
|
||||
@ -1133,15 +1135,15 @@ private:
|
||||
double huere, chromare, lumare, huerefblu, sobelre;
|
||||
|
||||
if (params.locallab.spots.at(sp).spotMethod == "exc") {
|
||||
ipf.calc_ref(sp, reservView, reservView, 0, 0, fw, fh, 1, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
|
||||
ipf.calc_ref(sp, reservView, reservView, blend, 0, 0, fw, fh, 1, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
|
||||
} else {
|
||||
ipf.calc_ref(sp, labView, labView, 0, 0, fw, fh, 1, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
|
||||
ipf.calc_ref(sp, labView, labView, blend, 0, 0, fw, fh, 1, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
|
||||
}
|
||||
CurveFactory::complexCurvelocal(ecomp, black / 65535., hlcompr, hlcomprthresh, shcompr, br, cont, lhist16loc,
|
||||
hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
|
||||
1);
|
||||
|
||||
ipf.Lab_Local(2, sp, sobelrefs, (float**)shbuffer, labView, labView, reservView, 0, 0, fw, fh, 1, locRETgainCurve, lllocalcurve, loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, lochhmasCurve, locccmasexpCurve, locllmasexpCurve,
|
||||
ipf.Lab_Local(2, sp, (float**)shbuffer, labView, labView, reservView, 0, 0, fw, fh, 1, locRETgainCurve, lllocalcurve, loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, lochhmasCurve, locccmasexpCurve, locllmasexpCurve,
|
||||
LHutili, HHutili, cclocalcurve, localskutili, sklocalcurve, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerefblu, huere, chromare, lumare, sobelre);
|
||||
|
||||
// Clear local curves
|
||||
|
@ -76,6 +76,7 @@ Locallab::Locallab():
|
||||
contrast(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CONTRAST"), -100, 100, 1, 0))),
|
||||
chroma(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CHROMA"), -100, 150, 1, 0))),
|
||||
sensi(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 19))),
|
||||
structcol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_STRUCCOL"), 0, 100, 1, 0))),
|
||||
// Exposure
|
||||
expcomp(Gtk::manage(new Adjuster(M("TP_EXPOSURE_EXPCOMP"), -200, 200, 5, 0))),
|
||||
hlcompr(Gtk::manage(new Adjuster(M("TP_EXPOSURE_COMPRHIGHLIGHTS"), 0, 500, 1, 60))),
|
||||
@ -84,6 +85,7 @@ Locallab::Locallab():
|
||||
shcompr(Gtk::manage(new Adjuster(M("TP_EXPOSURE_COMPRSHADOWS"), 0, 100, 1, 50))),
|
||||
warm(Gtk::manage(new Adjuster(M("TP_LOCALLAB_WARM"), -100., 100., 1., 0., Gtk::manage(new RTImage("circle-blue-small.png")), Gtk::manage(new RTImage("circle-orange-small.png"))))),
|
||||
sensiex(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 19))),
|
||||
structexp(Gtk::manage(new Adjuster(M("TP_LOCALLAB_STRUCCOL"), 0, 100, 1, 0))),
|
||||
// Vibrance
|
||||
saturated(Gtk::manage(new Adjuster(M("TP_VIBRANCE_SATURATED"), -100., 100., 1., 0.))),
|
||||
pastels(Gtk::manage(new Adjuster(M("TP_VIBRANCE_PASTELS"), -100., 100., 1., 0.))),
|
||||
@ -214,6 +216,7 @@ Locallab::Locallab():
|
||||
|
||||
sensi->set_tooltip_text(M("TP_LOCALLAB_SENSI_TOOLTIP"));
|
||||
sensi->setAdjusterListener(this);
|
||||
structcol->setAdjusterListener(this);
|
||||
|
||||
qualitycurveMethod->append(M("TP_LOCALLAB_CURVNONE"));
|
||||
qualitycurveMethod->append(M("TP_LOCALLAB_CURVCURR"));
|
||||
@ -328,6 +331,7 @@ Locallab::Locallab():
|
||||
superFrame->add(*superBox);
|
||||
colorBox->pack_start(*superFrame);
|
||||
colorBox->pack_start(*sensi);
|
||||
colorBox->pack_start(*structcol);
|
||||
Gtk::HBox* const qualcurvbox = Gtk::manage(new Gtk::HBox());
|
||||
qualcurvbox->pack_start(*labqualcurv, Gtk::PACK_SHRINK, 4);
|
||||
qualcurvbox->pack_start(*qualitycurveMethod);
|
||||
@ -368,6 +372,7 @@ Locallab::Locallab():
|
||||
|
||||
sensiex->set_tooltip_text(M("TP_LOCALLAB_SENSI_TOOLTIP"));
|
||||
sensiex->setAdjusterListener(this);
|
||||
structexp->setAdjusterListener(this);
|
||||
|
||||
curveEditorG->setCurveListener(this);
|
||||
|
||||
@ -426,6 +431,7 @@ Locallab::Locallab():
|
||||
exposeBox->pack_start(*shcompr);
|
||||
exposeBox->pack_start(*warm);
|
||||
exposeBox->pack_start(*sensiex);
|
||||
exposeBox->pack_start(*structexp);
|
||||
exposeBox->pack_start(*curveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
|
||||
exposeBox->pack_start(*maskexpFrame);
|
||||
|
||||
@ -1475,6 +1481,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
||||
pp->locallab.spots.at(pp->locallab.selspot).contrast = contrast->getIntValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).chroma = chroma->getIntValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).sensi = sensi->getIntValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).structcol = structcol->getIntValue();
|
||||
|
||||
if (qualitycurveMethod->get_active_row_number() == 0) {
|
||||
pp->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod = "none";
|
||||
@ -1504,6 +1511,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
||||
pp->locallab.spots.at(pp->locallab.selspot).LLmaskcurve = LLmaskshape->getCurve();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).HHmaskcurve = HHmaskshape->getCurve();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).invers = invers->get_active();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).structexp = structexp->getIntValue();
|
||||
// Exposure
|
||||
pp->locallab.spots.at(pp->locallab.selspot).expexpose = expexpose->getEnabled();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).expcomp = expcomp->getIntValue();
|
||||
@ -1658,6 +1666,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
||||
pe->locallab.spots.at(pp->locallab.selspot).contrast = pe->locallab.spots.at(pp->locallab.selspot).contrast || contrast->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).chroma = pe->locallab.spots.at(pp->locallab.selspot).chroma || chroma->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).sensi = pe->locallab.spots.at(pp->locallab.selspot).sensi || sensi->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).structcol = pe->locallab.spots.at(pp->locallab.selspot).structcol || structcol->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod = pe->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod || qualitycurveMethod->get_active_text() != M("GENERAL_UNCHANGED");
|
||||
pe->locallab.spots.at(pp->locallab.selspot).showmaskcolMethod = pe->locallab.spots.at(pp->locallab.selspot).showmaskcolMethod || showmaskcolMethod->get_active_text() != M("GENERAL_UNCHANGED");
|
||||
pe->locallab.spots.at(pp->locallab.selspot).llcurve = pe->locallab.spots.at(pp->locallab.selspot).llcurve || !llshape->isUnChanged();
|
||||
@ -1677,6 +1686,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
||||
pe->locallab.spots.at(pp->locallab.selspot).shcompr = pe->locallab.spots.at(pp->locallab.selspot).shcompr || shcompr->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).warm = pe->locallab.spots.at(pp->locallab.selspot).warm || warm->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).sensiex = pe->locallab.spots.at(pp->locallab.selspot).sensiex || sensiex->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).structexp = pe->locallab.spots.at(pp->locallab.selspot).structexp || structexp->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).excurve = pe->locallab.spots.at(pp->locallab.selspot).excurve || !shapeexpos->isUnChanged();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).showmaskexpMethod = pe->locallab.spots.at(pp->locallab.selspot).showmaskexpMethod || showmaskexpMethod->get_active_text() != M("GENERAL_UNCHANGED");
|
||||
pe->locallab.spots.at(pp->locallab.selspot).CCmaskexpcurve = pe->locallab.spots.at(pp->locallab.selspot).CCmaskexpcurve || !CCmaskexpshape->isUnChanged();
|
||||
@ -1798,6 +1808,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).contrast = pedited->locallab.spots.at(pp->locallab.selspot).contrast || contrast->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).chroma = pedited->locallab.spots.at(pp->locallab.selspot).chroma || chroma->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).sensi = pedited->locallab.spots.at(pp->locallab.selspot).sensi || sensi->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).structcol = pedited->locallab.spots.at(pp->locallab.selspot).structcol || structcol->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod = pedited->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod || qualitycurveMethod->get_active_text() != M("GENERAL_UNCHANGED");
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).showmaskcolMethod = pedited->locallab.spots.at(pp->locallab.selspot).showmaskcolMethod || showmaskcolMethod->get_active_text() != M("GENERAL_UNCHANGED");
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).llcurve = pedited->locallab.spots.at(pp->locallab.selspot).llcurve || !llshape->isUnChanged();
|
||||
@ -1817,6 +1828,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).shcompr = pedited->locallab.spots.at(pp->locallab.selspot).shcompr || shcompr->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).warm = pedited->locallab.spots.at(pp->locallab.selspot).warm || warm->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).sensiex = pedited->locallab.spots.at(pp->locallab.selspot).sensiex || sensiex->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).structexp = pedited->locallab.spots.at(pp->locallab.selspot).structexp || structexp->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).excurve = pedited->locallab.spots.at(pp->locallab.selspot).excurve || !shapeexpos->isUnChanged();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).showmaskexpMethod = pedited->locallab.spots.at(pp->locallab.selspot).showmaskexpMethod || showmaskexpMethod->get_active_text() != M("GENERAL_UNCHANGED");
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).CCmaskexpcurve = pedited->locallab.spots.at(pp->locallab.selspot).CCmaskexpcurve || !CCmaskexpshape->isUnChanged();
|
||||
@ -2412,6 +2424,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
||||
contrast->setDefault((double)defSpot->contrast);
|
||||
chroma->setDefault((double)defSpot->chroma);
|
||||
sensi->setDefault((double)defSpot->sensi);
|
||||
structcol->setDefault((double)defSpot->structcol);
|
||||
// Exposure
|
||||
expcomp->setDefault((double)defSpot->expcomp);
|
||||
hlcompr->setDefault((double)defSpot->hlcompr);
|
||||
@ -2420,6 +2433,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
||||
shcompr->setDefault((double)defSpot->shcompr);
|
||||
warm->setDefault((double)defSpot->warm);
|
||||
sensiex->setDefault((double)defSpot->sensiex);
|
||||
structexp->setDefault((double)defSpot->structexp);
|
||||
// Vibrance
|
||||
saturated->setDefault((double)defSpot->saturated);
|
||||
pastels->setDefault((double)defSpot->pastels);
|
||||
@ -2486,6 +2500,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
||||
contrast->setDefaultEditedState(Irrelevant);
|
||||
chroma->setDefaultEditedState(Irrelevant);
|
||||
sensi->setDefaultEditedState(Irrelevant);
|
||||
structcol->setDefaultEditedState(Irrelevant);
|
||||
// Exposure
|
||||
expcomp->setDefaultEditedState(Irrelevant);
|
||||
hlcompr->setDefaultEditedState(Irrelevant);
|
||||
@ -2494,6 +2509,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
||||
shcompr->setDefaultEditedState(Irrelevant);
|
||||
warm->setDefaultEditedState(Irrelevant);
|
||||
sensiex->setDefaultEditedState(Irrelevant);
|
||||
structexp->setDefaultEditedState(Irrelevant);
|
||||
// Vibrance
|
||||
saturated->setDefaultEditedState(Irrelevant);
|
||||
pastels->setDefaultEditedState(Irrelevant);
|
||||
@ -2564,6 +2580,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
||||
contrast->setDefaultEditedState(defSpotState->contrast ? Edited : UnEdited);
|
||||
chroma->setDefaultEditedState(defSpotState->chroma ? Edited : UnEdited);
|
||||
sensi->setDefaultEditedState(defSpotState->sensi ? Edited : UnEdited);
|
||||
structcol->setDefaultEditedState(defSpotState->structcol ? Edited : UnEdited);
|
||||
// Exposure
|
||||
expcomp->setDefaultEditedState(defSpotState->expcomp ? Edited : UnEdited);
|
||||
hlcompr->setDefaultEditedState(defSpotState->hlcompr ? Edited : UnEdited);
|
||||
@ -2572,6 +2589,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
||||
shcompr->setDefaultEditedState(defSpotState->shcompr ? Edited : UnEdited);
|
||||
warm->setDefaultEditedState(defSpotState->warm ? Edited : UnEdited);
|
||||
sensiex->setDefaultEditedState(defSpotState->sensiex ? Edited : UnEdited);
|
||||
structexp->setDefaultEditedState(defSpotState->structexp ? Edited : UnEdited);
|
||||
// Vibrance
|
||||
saturated->setDefaultEditedState(defSpotState->saturated ? Edited : UnEdited);
|
||||
pastels->setDefaultEditedState(defSpotState->pastels ? Edited : UnEdited);
|
||||
@ -2697,6 +2715,12 @@ void Locallab::adjusterChanged(Adjuster * a, double newval)
|
||||
listener->panelChanged(Evlocallabsensi, sensi->getTextValue());
|
||||
}
|
||||
}
|
||||
|
||||
if (a == structcol) {
|
||||
if (listener) {
|
||||
listener->panelChanged(Evlocallabstructcol, structcol->getTextValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Exposure
|
||||
@ -2751,6 +2775,13 @@ void Locallab::adjusterChanged(Adjuster * a, double newval)
|
||||
listener->panelChanged(Evlocallabsensiex, sensiex->getTextValue());
|
||||
}
|
||||
}
|
||||
|
||||
if (a == structexp) {
|
||||
if (listener) {
|
||||
listener->panelChanged(Evlocallabstructexp, structexp->getTextValue());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Vibrance
|
||||
@ -3136,6 +3167,7 @@ void Locallab::setBatchMode(bool batchMode)
|
||||
contrast->showEditedCB();
|
||||
chroma->showEditedCB();
|
||||
sensi->showEditedCB();
|
||||
structcol->showEditedCB();
|
||||
// Exposure
|
||||
expcomp->showEditedCB();
|
||||
hlcompr->showEditedCB();
|
||||
@ -3144,6 +3176,7 @@ void Locallab::setBatchMode(bool batchMode)
|
||||
shcompr->showEditedCB();
|
||||
warm->showEditedCB();
|
||||
sensiex->showEditedCB();
|
||||
structexp->showEditedCB();
|
||||
// Vibrance
|
||||
saturated->showEditedCB();
|
||||
pastels->showEditedCB();
|
||||
@ -3441,6 +3474,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
||||
contrast->setValue(pp->locallab.spots.at(index).contrast);
|
||||
chroma->setValue(pp->locallab.spots.at(index).chroma);
|
||||
sensi->setValue(pp->locallab.spots.at(index).sensi);
|
||||
structcol->setValue(pp->locallab.spots.at(index).structcol);
|
||||
|
||||
if (pp->locallab.spots.at(index).qualitycurveMethod == "none") {
|
||||
qualitycurveMethod->set_active(0);
|
||||
@ -3485,6 +3519,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
||||
shcompr->setValue(pp->locallab.spots.at(index).shcompr);
|
||||
warm->setValue(pp->locallab.spots.at(index).warm);
|
||||
sensiex->setValue(pp->locallab.spots.at(index).sensiex);
|
||||
structexp->setValue(pp->locallab.spots.at(index).structexp);
|
||||
shapeexpos->setCurve(pp->locallab.spots.at(index).excurve);
|
||||
if (pp->locallab.spots.at(index).showmaskexpMethod == "none") {
|
||||
showmaskexpMethod->set_active(0);
|
||||
@ -3651,6 +3686,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
||||
contrast->setEditedState(spotState->contrast ? Edited : UnEdited);
|
||||
chroma->setEditedState(spotState->chroma ? Edited : UnEdited);
|
||||
sensi->setEditedState(spotState->sensi ? Edited : UnEdited);
|
||||
structcol->setEditedState(spotState->structcol ? Edited : UnEdited);
|
||||
|
||||
if (!spotState->qualitycurveMethod) {
|
||||
qualitycurveMethod->set_active_text(M("GENERAL_UNCHANGED"));
|
||||
@ -3677,6 +3713,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
||||
warm->setEditedState(spotState->warm ? Edited : UnEdited);
|
||||
shcompr->setEditedState(spotState->shcompr ? Edited : UnEdited);
|
||||
sensiex->setEditedState(spotState->sensiex ? Edited : UnEdited);
|
||||
structexp->setEditedState(spotState->structexp ? Edited : UnEdited);
|
||||
shapeexpos->setUnChanged(!spotState->excurve);
|
||||
if (!spotState->showmaskexpMethod) {
|
||||
showmaskexpMethod->set_active_text(M("GENERAL_UNCHANGED"));
|
||||
|
@ -92,6 +92,8 @@ private:
|
||||
Adjuster* const contrast;
|
||||
Adjuster* const chroma;
|
||||
Adjuster* const sensi;
|
||||
Adjuster* const structcol;
|
||||
|
||||
// Exposure
|
||||
Adjuster* const expcomp;
|
||||
Adjuster* const hlcompr;
|
||||
@ -100,6 +102,7 @@ private:
|
||||
Adjuster* const shcompr;
|
||||
Adjuster* const warm;
|
||||
Adjuster* const sensiex;
|
||||
Adjuster* const structexp;
|
||||
// Vibrance
|
||||
Adjuster* const saturated;
|
||||
Adjuster* const pastels;
|
||||
|
@ -948,6 +948,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
||||
locallab.spots.at(j).contrast = locallab.spots.at(j).contrast && pSpot.contrast == otherSpot.contrast;
|
||||
locallab.spots.at(j).chroma = locallab.spots.at(j).chroma && pSpot.chroma == otherSpot.chroma;
|
||||
locallab.spots.at(j).sensi = locallab.spots.at(j).sensi && pSpot.sensi == otherSpot.sensi;
|
||||
locallab.spots.at(j).structcol = locallab.spots.at(j).structcol && pSpot.structcol == otherSpot.structcol;
|
||||
locallab.spots.at(j).qualitycurveMethod = locallab.spots.at(j).qualitycurveMethod && pSpot.qualitycurveMethod == otherSpot.qualitycurveMethod;
|
||||
locallab.spots.at(j).showmaskcolMethod = locallab.spots.at(j).showmaskcolMethod && pSpot.showmaskcolMethod == otherSpot.showmaskcolMethod;
|
||||
locallab.spots.at(j).llcurve = locallab.spots.at(j).llcurve && pSpot.llcurve == otherSpot.llcurve;
|
||||
@ -967,6 +968,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
||||
locallab.spots.at(j).shcompr = locallab.spots.at(j).shcompr && pSpot.shcompr == otherSpot.shcompr;
|
||||
locallab.spots.at(j).warm = locallab.spots.at(j).warm && pSpot.warm == otherSpot.warm;
|
||||
locallab.spots.at(j).sensiex = locallab.spots.at(j).sensiex && pSpot.sensiex == otherSpot.sensiex;
|
||||
locallab.spots.at(j).structexp = locallab.spots.at(j).structexp && pSpot.structexp == otherSpot.structexp;
|
||||
locallab.spots.at(j).excurve = locallab.spots.at(j).excurve && pSpot.excurve == otherSpot.excurve;
|
||||
locallab.spots.at(j).showmaskexpMethod = locallab.spots.at(j).showmaskexpMethod && pSpot.showmaskexpMethod == otherSpot.showmaskexpMethod;
|
||||
locallab.spots.at(j).CCmaskexpcurve = locallab.spots.at(j).CCmaskexpcurve && pSpot.CCmaskexpcurve == otherSpot.CCmaskexpcurve;
|
||||
@ -2575,6 +2577,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
||||
toEdit.locallab.spots.at(i).sensi = mods.locallab.spots.at(i).sensi;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).structcol) {
|
||||
toEdit.locallab.spots.at(i).structcol = mods.locallab.spots.at(i).structcol;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).qualitycurveMethod) {
|
||||
toEdit.locallab.spots.at(i).qualitycurveMethod = mods.locallab.spots.at(i).qualitycurveMethod;
|
||||
}
|
||||
@ -2648,6 +2654,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
||||
toEdit.locallab.spots.at(i).sensiex = mods.locallab.spots.at(i).sensiex;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).structexp) {
|
||||
toEdit.locallab.spots.at(i).structexp = mods.locallab.spots.at(i).structexp;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).excurve) {
|
||||
toEdit.locallab.spots.at(i).excurve = mods.locallab.spots.at(i).excurve;
|
||||
}
|
||||
@ -3915,6 +3925,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
||||
contrast(v),
|
||||
chroma(v),
|
||||
sensi(v),
|
||||
structcol(v),
|
||||
qualitycurveMethod(v),
|
||||
showmaskcolMethod(v),
|
||||
llcurve(v),
|
||||
@ -3934,6 +3945,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
||||
shcompr(v),
|
||||
warm(v),
|
||||
sensiex(v),
|
||||
structexp(v),
|
||||
excurve(v),
|
||||
showmaskexpMethod(v),
|
||||
CCmaskexpcurve(v),
|
||||
@ -4047,6 +4059,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
||||
contrast = v;
|
||||
chroma = v;
|
||||
sensi = v;
|
||||
structcol = v;
|
||||
qualitycurveMethod = v;
|
||||
showmaskcolMethod = v;
|
||||
llcurve = v;
|
||||
@ -4066,6 +4079,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
||||
shcompr = v;
|
||||
warm = v;
|
||||
sensiex = v;
|
||||
structexp = v;
|
||||
excurve = v;
|
||||
showmaskexpMethod = v;
|
||||
CCmaskexpcurve = v;
|
||||
|
@ -487,6 +487,7 @@ public:
|
||||
bool contrast;
|
||||
bool chroma;
|
||||
bool sensi;
|
||||
bool structcol;
|
||||
bool qualitycurveMethod;
|
||||
bool showmaskcolMethod;
|
||||
bool llcurve;
|
||||
@ -506,6 +507,7 @@ public:
|
||||
bool shcompr;
|
||||
bool warm;
|
||||
bool sensiex;
|
||||
bool structexp;
|
||||
bool excurve;
|
||||
bool showmaskexpMethod;
|
||||
bool CCmaskexpcurve;
|
||||
|
Loading…
x
Reference in New Issue
Block a user