Improvment mask color - structure as tool
This commit is contained in:
parent
61e2e1c4a1
commit
a1d17b3090
@ -1043,6 +1043,7 @@ HISTORY_MSG_802;Local - Contrast threshold
|
|||||||
HISTORY_MSG_803;Local - Color Merge
|
HISTORY_MSG_803;Local - Color Merge
|
||||||
HISTORY_MSG_804;Local - Color mask Structure
|
HISTORY_MSG_804;Local - Color mask Structure
|
||||||
HISTORY_MSG_805;Local - Blur Noise mask Structure
|
HISTORY_MSG_805;Local - Blur Noise mask Structure
|
||||||
|
HISTORY_MSG_806;Local - Color mask Structure as tool
|
||||||
HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
|
HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
|
||||||
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
|
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
|
||||||
HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
|
HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
|
||||||
@ -2147,6 +2148,8 @@ TP_LOCALLAB_SHAMASKCOL;Shadows mask
|
|||||||
TP_LOCALLAB_STRUMASKCOL;Structure mask
|
TP_LOCALLAB_STRUMASKCOL;Structure mask
|
||||||
TP_LOCALLAB_HIGHMASKCOL;Highlights mask
|
TP_LOCALLAB_HIGHMASKCOL;Highlights mask
|
||||||
TP_LOCALLAB_LAPMASKCOL;Laplacian threshold mask
|
TP_LOCALLAB_LAPMASKCOL;Laplacian threshold mask
|
||||||
|
TP_LOCALLAB_TOOLMASK;Tools
|
||||||
|
TP_LOCALLAB_TOOLCOL;Structure mask as tool
|
||||||
TP_LOCALLAB_LUMADARKEST;Darkest
|
TP_LOCALLAB_LUMADARKEST;Darkest
|
||||||
TP_LOCALLAB_LUMAWHITESEST;Whiteest
|
TP_LOCALLAB_LUMAWHITESEST;Whiteest
|
||||||
TP_LOCALLAB_SH1;Shadows Highlights
|
TP_LOCALLAB_SH1;Shadows Highlights
|
||||||
@ -2188,7 +2191,7 @@ TP_LOCALLAB_MERNIN;Screen
|
|||||||
TP_LOCALLAB_MERTEN;Darken only
|
TP_LOCALLAB_MERTEN;Darken only
|
||||||
TP_LOCALLAB_MERELE;Lighten only
|
TP_LOCALLAB_MERELE;Lighten only
|
||||||
TP_LOCALLAB_MERTWE;Exclusion
|
TP_LOCALLAB_MERTWE;Exclusion
|
||||||
TP_LOCALLAB_MASFRAME_TOOLTIP;For all masks.\nTake into account deltaE image to avoid retouching the selection area when sliders gamma mask, slope mask, chroma mask and contrast curves and levels contrasts curves are used.\nDisabled in Inverse
|
TP_LOCALLAB_MASFRAME_TOOLTIP;For all masks.\nTake into account deltaE image to avoid retouching the selection area when sliders gamma mask, slope mask, chroma mask and contrast curves and levels contrasts curves and structure mask (if enabled tool) are used.\nDisabled in Inverse
|
||||||
TP_LOCALLAB_WAMASKCOL;Mask Wavelet level
|
TP_LOCALLAB_WAMASKCOL;Mask Wavelet level
|
||||||
TP_LOCALLAB_CSTHRESHOLDBLUR;Mask Wavelet level
|
TP_LOCALLAB_CSTHRESHOLDBLUR;Mask Wavelet level
|
||||||
TP_LOCALLAB_LAPLACC;Mask Laplacian solve PDE
|
TP_LOCALLAB_LAPLACC;Mask Laplacian solve PDE
|
||||||
|
@ -216,7 +216,7 @@ public:
|
|||||||
int pitch, int scale, const int luma, const int chroma/*, LUTf & Lcurve, LUTf & abcurve*/);
|
int pitch, int scale, const int luma, const int chroma/*, LUTf & Lcurve, LUTf & abcurve*/);
|
||||||
//locallab
|
//locallab
|
||||||
void maskcalccol(bool invmask, bool pde, int bfw, int bfh, int xstart, int ystart, int sk, int cx, int cy, LabImage* bufcolorig, LabImage* bufmaskblurcol, LabImage* originalmaskcol, LabImage* original, int inv, const struct local_params & lp,
|
void maskcalccol(bool invmask, bool pde, int bfw, int bfh, int xstart, int ystart, int sk, int cx, int cy, LabImage* bufcolorig, LabImage* bufmaskblurcol, LabImage* originalmaskcol, LabImage* original, int inv, const struct local_params & lp,
|
||||||
float strumask,
|
float strumask, bool astool,
|
||||||
const LocCCmaskCurve & locccmasCurve, bool & lcmasutili,
|
const LocCCmaskCurve & locccmasCurve, bool & lcmasutili,
|
||||||
const LocLLmaskCurve & locllmasCurve, bool & llmasutili,
|
const LocLLmaskCurve & locllmasCurve, bool & llmasutili,
|
||||||
const LocHHmaskCurve & lochhmasCurve, bool &lhmasutili,
|
const LocHHmaskCurve & lochhmasCurve, bool &lhmasutili,
|
||||||
|
@ -3184,7 +3184,7 @@ void ImProcFunctions::retinex_pde(float * datain, float * dataout, int bfw, int
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ImProcFunctions::maskcalccol(bool invmask, bool pde, int bfw, int bfh, int xstart, int ystart, int sk, int cx, int cy, LabImage* bufcolorig, LabImage* bufmaskblurcol, LabImage* originalmaskcol, LabImage* original, int inv, const struct local_params & lp,
|
void ImProcFunctions::maskcalccol(bool invmask, bool pde, int bfw, int bfh, int xstart, int ystart, int sk, int cx, int cy, LabImage* bufcolorig, LabImage* bufmaskblurcol, LabImage* originalmaskcol, LabImage* original, int inv, const struct local_params & lp,
|
||||||
float strumask,
|
float strumask, bool astool,
|
||||||
const LocCCmaskCurve & locccmasCurve, bool & lcmasutili,
|
const LocCCmaskCurve & locccmasCurve, bool & lcmasutili,
|
||||||
const LocLLmaskCurve & locllmasCurve, bool & llmasutili,
|
const LocLLmaskCurve & locllmasCurve, bool & llmasutili,
|
||||||
const LocHHmaskCurve & lochhmasCurve, bool &lhmasutili,
|
const LocHHmaskCurve & lochhmasCurve, bool &lhmasutili,
|
||||||
@ -3271,7 +3271,7 @@ void ImProcFunctions::maskcalccol(bool invmask, bool pde, int bfw, int bfh, int
|
|||||||
float kmaskH = 0.f;
|
float kmaskH = 0.f;
|
||||||
float kmasstru = 0.f;
|
float kmasstru = 0.f;
|
||||||
|
|
||||||
if(strumask > 0.f){
|
if(strumask > 0.f && !astool){
|
||||||
kmasstru = bufcolorig->L[ir][jr]* blendstru[ir][jr];
|
kmasstru = bufcolorig->L[ir][jr]* blendstru[ir][jr];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3329,6 +3329,7 @@ void ImProcFunctions::maskcalccol(bool invmask, bool pde, int bfw, int bfh, int
|
|||||||
|
|
||||||
bufprov->CopyFrom(bufmaskblurcol);
|
bufprov->CopyFrom(bufmaskblurcol);
|
||||||
|
|
||||||
|
|
||||||
if (rad > 0.f) {
|
if (rad > 0.f) {
|
||||||
guidedFilter(guid, ble, ble, rad * 10.f / sk, 0.001, multiThread, 4);
|
guidedFilter(guid, ble, ble, rad * 10.f / sk, 0.001, multiThread, 4);
|
||||||
}
|
}
|
||||||
@ -3346,6 +3347,19 @@ void ImProcFunctions::maskcalccol(bool invmask, bool pde, int bfw, int bfh, int
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(strumask > 0.f && astool){
|
||||||
|
|
||||||
|
#ifdef _OPENMP
|
||||||
|
#pragma omp parallel for schedule(dynamic,16)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (int ir = 0; ir < bfh; ir++) {
|
||||||
|
for (int jr = 0; jr < bfw; jr++) {
|
||||||
|
bufmaskblurcol->L[ir][jr] *= blendstru[ir][jr];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
if (lmasklocalcurve && localmaskutili) {
|
if (lmasklocalcurve && localmaskutili) {
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
@ -7608,8 +7622,9 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool blurz = false;
|
bool blurz = false;
|
||||||
|
bool delt = params->locallab.spots.at(sp).deltae;
|
||||||
|
|
||||||
if (((radius > 1.5 * GAUSS_SKIP) || lp.stren > 0.1 || lp.blmet == 1 || lp.guidb > 1 || lp.showmaskblmet == 2 || lp.enablMask || lp.showmaskblmet == 3 || lp.showmaskblmet == 4) && lp.blurena) {
|
if (((radius > 1.5 * GAUSS_SKIP) || lp.stren > 0.1 || lp.blmet == 1 || lp.guidb > 1 || lp.showmaskblmet == 2 || delt || lp.enablMask || lp.showmaskblmet == 3 || lp.showmaskblmet == 4) && lp.blurena) {
|
||||||
blurz = true;
|
blurz = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7620,7 +7635,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
std::unique_ptr<LabImage> bufmaskorigbl;
|
std::unique_ptr<LabImage> bufmaskorigbl;
|
||||||
std::unique_ptr<LabImage> bufmaskblurbl;
|
std::unique_ptr<LabImage> bufmaskblurbl;
|
||||||
std::unique_ptr<LabImage> bufgb;
|
std::unique_ptr<LabImage> bufgb;
|
||||||
std::unique_ptr<LabImage> bufprov;
|
std::unique_ptr<LabImage> bufprov(new LabImage(GW, GH));
|
||||||
|
|
||||||
if (denoiz || blurz || lp.denoiena || lp.blurena) {
|
if (denoiz || blurz || lp.denoiena || lp.blurena) {
|
||||||
bufgb.reset(new LabImage(GW, GH));
|
bufgb.reset(new LabImage(GW, GH));
|
||||||
@ -7628,7 +7643,6 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
if (lp.showmaskblmet == 2 || lp.enablMask || lp.showmaskblmet == 3 || lp.showmaskblmet == 4) {
|
if (lp.showmaskblmet == 2 || lp.enablMask || lp.showmaskblmet == 3 || lp.showmaskblmet == 4) {
|
||||||
bufmaskorigbl.reset(new LabImage(GW, GH));
|
bufmaskorigbl.reset(new LabImage(GW, GH));
|
||||||
bufmaskblurbl.reset(new LabImage(GW, GH));
|
bufmaskblurbl.reset(new LabImage(GW, GH));
|
||||||
bufprov.reset(new LabImage(GW, GH));
|
|
||||||
originalmaskbl = new LabImage(GW, GH);
|
originalmaskbl = new LabImage(GW, GH);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7720,12 +7734,11 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
Color::Lab2XYZ(L, a, b, X, Y, Z);
|
Color::Lab2XYZ(L, a, b, X, Y, Z);
|
||||||
|
|
||||||
guid[ir][jr] = Y / 32768.f;
|
guid[ir][jr] = Y / 32768.f;
|
||||||
|
|
||||||
bufprov->L[ir][jr] = bufmaskblurbl->L[ir][jr];
|
|
||||||
bufprov->a[ir][jr] = bufmaskblurbl->a[ir][jr];
|
|
||||||
bufprov->b[ir][jr] = bufmaskblurbl->b[ir][jr];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
std::unique_ptr<LabImage> bufprov(new LabImage(GW, GH));
|
||||||
|
|
||||||
|
bufprov->CopyFrom(bufmaskblurbl.get());
|
||||||
|
|
||||||
|
|
||||||
if (lp.radmabl > 0.f) {
|
if (lp.radmabl > 0.f) {
|
||||||
@ -7806,20 +7819,20 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
}
|
}
|
||||||
|
|
||||||
// deltae Mask with scope
|
// deltae Mask with scope
|
||||||
bool delt = params->locallab.spots.at(sp).deltae;
|
// bool delt = params->locallab.spots.at(sp).deltae;
|
||||||
int sco = params->locallab.spots.at(sp).scopemask;
|
int sco = params->locallab.spots.at(sp).scopemask;
|
||||||
const int limscope = 80;
|
const int limscope = 80;
|
||||||
const float mindE = 2.f + MINSCOPE * sco * lp.thr;
|
const float mindE = 2.f + MINSCOPE * sco * lp.thr;
|
||||||
const float maxdE = 5.f + MAXSCOPE * sco * (1 + 0.1f * lp.thr);
|
const float maxdE = 5.f + MAXSCOPE * sco * (1 + 0.1f * lp.thr);
|
||||||
const float mindElim = 2.f + MINSCOPE * limscope * lp.thr;
|
const float mindElim = 2.f + MINSCOPE * limscope * lp.thr;
|
||||||
const float maxdElim = 5.f + MAXSCOPE * limscope * (1 + 0.1f * lp.thr);
|
const float maxdElim = 5.f + MAXSCOPE * limscope * (1 + 0.1f * lp.thr);
|
||||||
|
//printf("minde=%f maxde=%f, scopee=%i huref=%f lumaref=%f chromaref=%f\n", mindE, maxdE, sco, hueref, lumaref, chromaref);
|
||||||
if (delt && lp.blurmet == 0 && (lp.enablMask || lp.showmaskblmet == 3)) {
|
if (delt && lp.blurmet == 0 && (lp.enablMask || lp.showmaskblmet == 3)) {
|
||||||
std::unique_ptr<JaggedArray<float>> rdEBuffer(new JaggedArray<float>(GW, GH));
|
std::unique_ptr<JaggedArray<float>> rdEBuffer(new JaggedArray<float>(GW, GH));
|
||||||
float** rdE = *(rdEBuffer.get());
|
float** rdE = *(rdEBuffer.get());
|
||||||
|
|
||||||
deltaEforMask(rdE, GW, GH, bufgb.get(), hueref, chromaref, lumaref, maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, lp.balance);
|
deltaEforMask(rdE, GW, GH, bufgb.get(), hueref, chromaref, lumaref, maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, lp.balance);
|
||||||
// printf("rde1=%f rde2=%f\n", rdE[1][1], rdE[100][100]);
|
// printf("rde1=%f rde2=%f\n", rdE[1][1], rdE[100][100]);
|
||||||
std::unique_ptr<LabImage> delta(new LabImage(GW, GH));
|
std::unique_ptr<LabImage> delta(new LabImage(GW, GH));
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for schedule(dynamic,16)
|
#pragma omp parallel for schedule(dynamic,16)
|
||||||
@ -8453,7 +8466,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
int shortcu = 0; //lp.mergemet; //params->locallab.spots.at(sp).shortc;
|
int shortcu = 0; //lp.mergemet; //params->locallab.spots.at(sp).shortc;
|
||||||
|
|
||||||
maskcalccol(false, pde, bfw, bfh, xstart, ystart, sk, cx, cy, loctemp.get(), bufmaskorigcb.get(), originalmaskcb.get(), original, inv, lp,
|
maskcalccol(false, pde, bfw, bfh, xstart, ystart, sk, cx, cy, loctemp.get(), bufmaskorigcb.get(), originalmaskcb.get(), original, inv, lp,
|
||||||
0.f,
|
0.f, false,
|
||||||
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili, multiThread,
|
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili, multiThread,
|
||||||
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmaskcblocalcurve, localmaskcbutili, dummy, lmasutilicolwav, 1, 1, 5, 5,
|
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmaskcblocalcurve, localmaskcbutili, dummy, lmasutilicolwav, 1, 1, 5, 5,
|
||||||
shortcu, delt, hueref, chromaref, lumaref,
|
shortcu, delt, hueref, chromaref, lumaref,
|
||||||
@ -8762,7 +8775,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
float anchorcd = 50.f;
|
float anchorcd = 50.f;
|
||||||
|
|
||||||
maskcalccol(false, pde, bfw, bfh, xstart, ystart, sk, cx, cy, bufgbm.get(), bufmaskorigtm.get(), originalmasktm.get(), original, inv, lp,
|
maskcalccol(false, pde, bfw, bfh, xstart, ystart, sk, cx, cy, bufgbm.get(), bufmaskorigtm.get(), originalmasktm.get(), original, inv, lp,
|
||||||
0.f,
|
0.f, false,
|
||||||
locccmastmCurve, lcmastmutili, locllmastmCurve, llmastmutili, lochhmastmCurve, lhmastmutili, multiThread,
|
locccmastmCurve, lcmastmutili, locllmastmCurve, llmastmutili, lochhmastmCurve, lhmastmutili, multiThread,
|
||||||
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmasktmlocalcurve, localmasktmutili, dummy, lmasutilicolwav, 1, 1, 5, 5,
|
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmasktmlocalcurve, localmasktmutili, dummy, lmasutilicolwav, 1, 1, 5, 5,
|
||||||
shortcu, delt, hueref, chromaref, lumaref,
|
shortcu, delt, hueref, chromaref, lumaref,
|
||||||
@ -8804,7 +8817,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
float anchorcd = 50.f;
|
float anchorcd = 50.f;
|
||||||
|
|
||||||
maskcalccol(false, pde, bfw, bfh, xstart, ystart, sk, cx, cy, tmp1.get(), bufmaskorigtm.get(), originalmasktm.get(), original, inv, lp,
|
maskcalccol(false, pde, bfw, bfh, xstart, ystart, sk, cx, cy, tmp1.get(), bufmaskorigtm.get(), originalmasktm.get(), original, inv, lp,
|
||||||
0.f,
|
0.f, false,
|
||||||
locccmastmCurve, lcmastmutili, locllmastmCurve, llmastmutili, lochhmastmCurve, lhmastmutili, multiThread,
|
locccmastmCurve, lcmastmutili, locllmastmCurve, llmastmutili, lochhmastmCurve, lhmastmutili, multiThread,
|
||||||
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmasktmlocalcurve, localmasktmutili, dummy, lmasutilicolwav, 1, 1, 5, 5,
|
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmasktmlocalcurve, localmasktmutili, dummy, lmasutilicolwav, 1, 1, 5, 5,
|
||||||
shortcu, delt, hueref, chromaref, lumaref,
|
shortcu, delt, hueref, chromaref, lumaref,
|
||||||
@ -9007,7 +9020,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
int lumask = params->locallab.spots.at(sp).lumask;
|
int lumask = params->locallab.spots.at(sp).lumask;
|
||||||
|
|
||||||
maskcalccol(false, pde, bfw, bfh, xstart, ystart, sk, cx, cy, bufexporig.get(), bufmaskorigSH.get(), originalmaskSH.get(), original, inv, lp,
|
maskcalccol(false, pde, bfw, bfh, xstart, ystart, sk, cx, cy, bufexporig.get(), bufmaskorigSH.get(), originalmaskSH.get(), original, inv, lp,
|
||||||
0.f,
|
0.f, false,
|
||||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili, multiThread,
|
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili, multiThread,
|
||||||
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmaskSHlocalcurve, localmaskSHutili, dummy, lmasutilicolwav, 1, 1, 5, 5,
|
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmaskSHlocalcurve, localmaskSHutili, dummy, lmasutilicolwav, 1, 1, 5, 5,
|
||||||
shortcu, delt, hueref, chromaref, lumaref,
|
shortcu, delt, hueref, chromaref, lumaref,
|
||||||
@ -9159,7 +9172,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
int lumask = params->locallab.spots.at(sp).lumask;
|
int lumask = params->locallab.spots.at(sp).lumask;
|
||||||
|
|
||||||
maskcalccol(false, pde, GW, GH, 0, 0, sk, cx, cy, bufcolorig.get(), bufmaskblurcol.get(), originalmaskSH.get(), original, inv, lp,
|
maskcalccol(false, pde, GW, GH, 0, 0, sk, cx, cy, bufcolorig.get(), bufmaskblurcol.get(), originalmaskSH.get(), original, inv, lp,
|
||||||
0.f,
|
0.f, false,
|
||||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili, multiThread,
|
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili, multiThread,
|
||||||
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmaskSHlocalcurve, localmaskSHutili, dummy, lmasutilicolwav, 1, 1, 5, 5,
|
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmaskSHlocalcurve, localmaskSHutili, dummy, lmasutilicolwav, 1, 1, 5, 5,
|
||||||
shortcu, delt, hueref, chromaref, lumaref,
|
shortcu, delt, hueref, chromaref, lumaref,
|
||||||
@ -11233,7 +11246,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
int lumask = params->locallab.spots.at(sp).lumask;
|
int lumask = params->locallab.spots.at(sp).lumask;
|
||||||
|
|
||||||
maskcalccol(false, pde, bfw, bfh, xstart, ystart, sk, cx, cy, bufexporig.get(), bufmaskblurexp.get(), originalmaskexp.get(), original, inv, lp,
|
maskcalccol(false, pde, bfw, bfh, xstart, ystart, sk, cx, cy, bufexporig.get(), bufmaskblurexp.get(), originalmaskexp.get(), original, inv, lp,
|
||||||
0.f,
|
0.f, false,
|
||||||
locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili, multiThread,
|
locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili, multiThread,
|
||||||
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmaskexplocalcurve, localmaskexputili, dummy, lmasutilicolwav, 1, 1, 5, 5,
|
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmaskexplocalcurve, localmaskexputili, dummy, lmasutilicolwav, 1, 1, 5, 5,
|
||||||
shortcu, delt, hueref, chromaref, lumaref,
|
shortcu, delt, hueref, chromaref, lumaref,
|
||||||
@ -11526,7 +11539,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
float anchorcd = 50.f;
|
float anchorcd = 50.f;
|
||||||
|
|
||||||
maskcalccol(false, pde, GW, GH, 0, 0, sk, cx, cy, bufexporig.get(), bufmaskblurexp.get(), originalmaskexp.get(), original, inv, lp,
|
maskcalccol(false, pde, GW, GH, 0, 0, sk, cx, cy, bufexporig.get(), bufmaskblurexp.get(), originalmaskexp.get(), original, inv, lp,
|
||||||
0.f,
|
0.f, false,
|
||||||
locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili, multiThread,
|
locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili, multiThread,
|
||||||
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmaskexplocalcurve, localmaskexputili, dummy, lmasutilicolwav, 1, 1, 5, 5,
|
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmaskexplocalcurve, localmaskexputili, dummy, lmasutilicolwav, 1, 1, 5, 5,
|
||||||
shortcu, delt, hueref, chromaref, lumaref,
|
shortcu, delt, hueref, chromaref, lumaref,
|
||||||
@ -11790,6 +11803,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
float pde = params->locallab.spots.at(sp).laplac;
|
float pde = params->locallab.spots.at(sp).laplac;
|
||||||
int shado = params->locallab.spots.at(sp).shadmaskcol;
|
int shado = params->locallab.spots.at(sp).shadmaskcol;
|
||||||
bool delt = params->locallab.spots.at(sp).deltae;
|
bool delt = params->locallab.spots.at(sp).deltae;
|
||||||
|
bool astool = params->locallab.spots.at(sp).toolcol;
|
||||||
int sco = params->locallab.spots.at(sp).scopemask;
|
int sco = params->locallab.spots.at(sp).scopemask;
|
||||||
int level_bl = params->locallab.spots.at(sp).csthresholdcol.getBottomLeft();
|
int level_bl = params->locallab.spots.at(sp).csthresholdcol.getBottomLeft();
|
||||||
int level_hl = params->locallab.spots.at(sp).csthresholdcol.getTopLeft();
|
int level_hl = params->locallab.spots.at(sp).csthresholdcol.getTopLeft();
|
||||||
@ -11821,7 +11835,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
|
|
||||||
// if (lp.mergemet != 2) {
|
// if (lp.mergemet != 2) {
|
||||||
maskcalccol(false, pde, bfw, bfh, xstart, ystart, sk, cx, cy, bufcolorig.get(), bufmaskblurcol.get(), originalmaskcol.get(), original, inv, lp,
|
maskcalccol(false, pde, bfw, bfh, xstart, ystart, sk, cx, cy, bufcolorig.get(), bufmaskblurcol.get(), originalmaskcol.get(), original, inv, lp,
|
||||||
strumask,
|
strumask, astool,
|
||||||
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, multiThread,
|
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, multiThread,
|
||||||
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmasklocalcurve, localmaskutili, loclmasCurvecolwav, lmasutilicolwav,
|
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmasklocalcurve, localmaskutili, loclmasCurvecolwav, lmasutilicolwav,
|
||||||
level_bl, level_hl, level_br, level_hr,
|
level_bl, level_hl, level_br, level_hr,
|
||||||
@ -12590,6 +12604,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
int level_hr = params->locallab.spots.at(sp).csthresholdcol.getTopRight();
|
int level_hr = params->locallab.spots.at(sp).csthresholdcol.getTopRight();
|
||||||
// bool delt = params->locallab.spots.at(sp).deltae;
|
// bool delt = params->locallab.spots.at(sp).deltae;
|
||||||
bool delt = false;
|
bool delt = false;
|
||||||
|
bool astool = params->locallab.spots.at(sp).toolcol;
|
||||||
int sco = params->locallab.spots.at(sp).scopemask;
|
int sco = params->locallab.spots.at(sp).scopemask;
|
||||||
int shortcu = lp.mergemet; //params->locallab.spots.at(sp).shortc;
|
int shortcu = lp.mergemet; //params->locallab.spots.at(sp).shortc;
|
||||||
int lumask = params->locallab.spots.at(sp).lumask;
|
int lumask = params->locallab.spots.at(sp).lumask;
|
||||||
@ -12604,7 +12619,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
float anchorcd = 50.f;
|
float anchorcd = 50.f;
|
||||||
|
|
||||||
maskcalccol(false, pde, GW, GH, 0, 0, sk, cx, cy, bufcolorig.get(), bufmaskblurcol.get(), originalmaskcol.get(), original, inv, lp,
|
maskcalccol(false, pde, GW, GH, 0, 0, sk, cx, cy, bufcolorig.get(), bufmaskblurcol.get(), originalmaskcol.get(), original, inv, lp,
|
||||||
strumask,
|
strumask, astool,
|
||||||
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, multiThread,
|
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, multiThread,
|
||||||
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmasklocalcurve, localmaskutili, loclmasCurvecolwav, lmasutilicolwav,
|
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmasklocalcurve, localmaskutili, loclmasCurvecolwav, lmasutilicolwav,
|
||||||
level_bl, level_hl, level_br, level_hr,
|
level_bl, level_hl, level_br, level_hr,
|
||||||
|
@ -829,6 +829,7 @@ enum ProcEventCode {
|
|||||||
EvLocallabmerMethod = 802,
|
EvLocallabmerMethod = 802,
|
||||||
Evlocallabstrumaskcol = 803,
|
Evlocallabstrumaskcol = 803,
|
||||||
Evlocallabstrumaskbl = 804,
|
Evlocallabstrumaskbl = 804,
|
||||||
|
EvLocallabtoolcol = 805,
|
||||||
NUMOFEVENTS
|
NUMOFEVENTS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2477,6 +2477,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
|||||||
HHcurve{(double)FCT_MinMaxCPoints, 0.0, 0.50, 0.35, 0.35, 0.166, 0.50, 0.35, 0.35, 0.333, 0.50, 0.35, 0.35, 0.50, 0.50, 0.35, 0.35, 0.666, 0.50, 0.35, 0.35, 0.833, 0.50, 0.35, 0.35},
|
HHcurve{(double)FCT_MinMaxCPoints, 0.0, 0.50, 0.35, 0.35, 0.166, 0.50, 0.35, 0.35, 0.333, 0.50, 0.35, 0.35, 0.50, 0.50, 0.35, 0.35, 0.666, 0.50, 0.35, 0.35, 0.833, 0.50, 0.35, 0.35},
|
||||||
invers(false),
|
invers(false),
|
||||||
special(false),
|
special(false),
|
||||||
|
toolcol(true),
|
||||||
enaColorMask(false),
|
enaColorMask(false),
|
||||||
CCmaskcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.00, 1.0, 0.35, 0.35 },
|
CCmaskcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.00, 1.0, 0.35, 0.35 },
|
||||||
LLmaskcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.00, 1.0, 0.35, 0.35 },
|
LLmaskcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.00, 1.0, 0.35, 0.35 },
|
||||||
@ -2795,6 +2796,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
|||||||
&& HHcurve == other.HHcurve
|
&& HHcurve == other.HHcurve
|
||||||
&& invers == other.invers
|
&& invers == other.invers
|
||||||
&& special == other.special
|
&& special == other.special
|
||||||
|
&& toolcol == other.toolcol
|
||||||
&& enaColorMask == other.enaColorMask
|
&& enaColorMask == other.enaColorMask
|
||||||
&& CCmaskcurve == other.CCmaskcurve
|
&& CCmaskcurve == other.CCmaskcurve
|
||||||
&& LLmaskcurve == other.LLmaskcurve
|
&& LLmaskcurve == other.LLmaskcurve
|
||||||
@ -4110,6 +4112,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
|||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).HHcurve, "Locallab", "HHCurve_" + std::to_string(i), spot.HHcurve, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).HHcurve, "Locallab", "HHCurve_" + std::to_string(i), spot.HHcurve, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).invers, "Locallab", "Invers_" + std::to_string(i), spot.invers, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).invers, "Locallab", "Invers_" + std::to_string(i), spot.invers, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).special, "Locallab", "Special_" + std::to_string(i), spot.special, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).special, "Locallab", "Special_" + std::to_string(i), spot.special, keyFile);
|
||||||
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).toolcol, "Locallab", "Toolcol_" + std::to_string(i), spot.toolcol, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).enaColorMask, "Locallab", "EnaColorMask_" + std::to_string(i), spot.enaColorMask, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).enaColorMask, "Locallab", "EnaColorMask_" + std::to_string(i), spot.enaColorMask, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).CCmaskcurve, "Locallab", "CCmaskCurve_" + std::to_string(i), spot.CCmaskcurve, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).CCmaskcurve, "Locallab", "CCmaskCurve_" + std::to_string(i), spot.CCmaskcurve, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).LLmaskcurve, "Locallab", "LLmaskCurve_" + std::to_string(i), spot.LLmaskcurve, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).LLmaskcurve, "Locallab", "LLmaskCurve_" + std::to_string(i), spot.LLmaskcurve, keyFile);
|
||||||
@ -5531,6 +5534,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
|||||||
assignFromKeyfile(keyFile, "Locallab", "HHCurve_" + std::to_string(i), pedited, spot.HHcurve, spotEdited.HHcurve);
|
assignFromKeyfile(keyFile, "Locallab", "HHCurve_" + std::to_string(i), pedited, spot.HHcurve, spotEdited.HHcurve);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Invers_" + std::to_string(i), pedited, spot.invers, spotEdited.invers);
|
assignFromKeyfile(keyFile, "Locallab", "Invers_" + std::to_string(i), pedited, spot.invers, spotEdited.invers);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Special_" + std::to_string(i), pedited, spot.special, spotEdited.special);
|
assignFromKeyfile(keyFile, "Locallab", "Special_" + std::to_string(i), pedited, spot.special, spotEdited.special);
|
||||||
|
assignFromKeyfile(keyFile, "Locallab", "Toolcol_" + std::to_string(i), pedited, spot.toolcol, spotEdited.toolcol);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "EnaColorMask_" + std::to_string(i), pedited, spot.enaColorMask, spotEdited.enaColorMask);
|
assignFromKeyfile(keyFile, "Locallab", "EnaColorMask_" + std::to_string(i), pedited, spot.enaColorMask, spotEdited.enaColorMask);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "CCmaskCurve_" + std::to_string(i), pedited, spot.CCmaskcurve, spotEdited.CCmaskcurve);
|
assignFromKeyfile(keyFile, "Locallab", "CCmaskCurve_" + std::to_string(i), pedited, spot.CCmaskcurve, spotEdited.CCmaskcurve);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "LLmaskCurve_" + std::to_string(i), pedited, spot.LLmaskcurve, spotEdited.LLmaskcurve);
|
assignFromKeyfile(keyFile, "Locallab", "LLmaskCurve_" + std::to_string(i), pedited, spot.LLmaskcurve, spotEdited.LLmaskcurve);
|
||||||
|
@ -1021,6 +1021,7 @@ struct LocallabParams {
|
|||||||
std::vector<double> HHcurve;
|
std::vector<double> HHcurve;
|
||||||
bool invers;
|
bool invers;
|
||||||
bool special;
|
bool special;
|
||||||
|
bool toolcol;
|
||||||
bool enaColorMask;
|
bool enaColorMask;
|
||||||
std::vector<double> CCmaskcurve;
|
std::vector<double> CCmaskcurve;
|
||||||
std::vector<double> LLmaskcurve;
|
std::vector<double> LLmaskcurve;
|
||||||
|
@ -832,7 +832,8 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
LUMINANCECURVE, //EvLocallabconthrcol
|
LUMINANCECURVE, //EvLocallabconthrcol
|
||||||
LUMINANCECURVE, //EvLocallabmerMethod
|
LUMINANCECURVE, //EvLocallabmerMethod
|
||||||
LUMINANCECURVE, //EvLocallabstrumaskcol
|
LUMINANCECURVE, //EvLocallabstrumaskcol
|
||||||
LUMINANCECURVE //EvLocallabstrumaskbl
|
LUMINANCECURVE, //EvLocallabstrumaskbl
|
||||||
|
LUMINANCECURVE // EvLocallabtoolcol
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace rtengine
|
namespace rtengine
|
||||||
|
@ -471,6 +471,7 @@ detailthr(Gtk::manage(new Adjuster(M("TP_LOCALLAB_DETAILTHR"), 0, 100, 1, 0))),
|
|||||||
curvactiv(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_CURV")))),
|
curvactiv(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_CURV")))),
|
||||||
invers(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_INVERS")))),
|
invers(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_INVERS")))),
|
||||||
special(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_SPECIAL")))),
|
special(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_SPECIAL")))),
|
||||||
|
toolcol(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_TOOLCOL")))),
|
||||||
enaColorMask(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_ENABLE_MASK")))),
|
enaColorMask(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_ENABLE_MASK")))),
|
||||||
// Exposure
|
// Exposure
|
||||||
enaExpMask(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_ENABLE_MASK")))),
|
enaExpMask(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_ENABLE_MASK")))),
|
||||||
@ -556,6 +557,7 @@ lumacontrastMinusButton(Gtk::manage(new Gtk::Button(M("TP_DIRPYREQUALIZER_LUMACO
|
|||||||
lumaneutralButton(Gtk::manage(new Gtk::Button(M("TP_DIRPYREQUALIZER_LUMANEUTRAL")))),
|
lumaneutralButton(Gtk::manage(new Gtk::Button(M("TP_DIRPYREQUALIZER_LUMANEUTRAL")))),
|
||||||
lumacontrastPlusButton(Gtk::manage(new Gtk::Button(M("TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS")))),
|
lumacontrastPlusButton(Gtk::manage(new Gtk::Button(M("TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS")))),
|
||||||
gridFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_LABGRID")))),
|
gridFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_LABGRID")))),
|
||||||
|
toolcolFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_TOOLMASK")))),
|
||||||
mergecolFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_MERGECOLFRA")))),
|
mergecolFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_MERGECOLFRA")))),
|
||||||
merge1colFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_MERGE1COLFRA")))),
|
merge1colFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_MERGE1COLFRA")))),
|
||||||
pdeFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_PDEFRA")))),
|
pdeFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_PDEFRA")))),
|
||||||
@ -776,6 +778,7 @@ pe(nullptr)
|
|||||||
|
|
||||||
inversConn = invers->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::inversChanged));
|
inversConn = invers->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::inversChanged));
|
||||||
specialConn = special->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::specialChanged));
|
specialConn = special->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::specialChanged));
|
||||||
|
toolcolConn = toolcol->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::toolcolChanged));
|
||||||
|
|
||||||
|
|
||||||
mergecolMethod->append(M("TP_LOCALLAB_MERONE"));
|
mergecolMethod->append(M("TP_LOCALLAB_MERONE"));
|
||||||
@ -943,17 +946,24 @@ pe(nullptr)
|
|||||||
maskcolBox->pack_start(*enaColorMask, Gtk::PACK_SHRINK, 0);
|
maskcolBox->pack_start(*enaColorMask, Gtk::PACK_SHRINK, 0);
|
||||||
maskcolBox->pack_start(*maskCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
|
maskcolBox->pack_start(*maskCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
|
||||||
maskcolBox->pack_start(*strumaskcol, Gtk::PACK_SHRINK, 0);
|
maskcolBox->pack_start(*strumaskcol, Gtk::PACK_SHRINK, 0);
|
||||||
|
maskcolBox->pack_start(*toolcol);
|
||||||
|
|
||||||
maskcolBox->pack_start(*separatorstru, Gtk::PACK_SHRINK, 2);
|
maskcolBox->pack_start(*separatorstru, Gtk::PACK_SHRINK, 2);
|
||||||
|
toolcolFrame->set_label_align(0.025, 0.5);
|
||||||
|
ToolParamBlock* const toolcolBox = Gtk::manage(new ToolParamBlock());
|
||||||
|
|
||||||
maskcolBox->pack_start(*blendmaskcol, Gtk::PACK_SHRINK, 0);
|
maskcolBox->pack_start(*blendmaskcol, Gtk::PACK_SHRINK, 0);
|
||||||
maskcolBox->pack_start(*radmaskcol, Gtk::PACK_SHRINK, 0);
|
toolcolBox->pack_start(*radmaskcol, Gtk::PACK_SHRINK, 0);
|
||||||
maskcolBox->pack_start(*lapmaskcol, Gtk::PACK_SHRINK, 0);
|
toolcolBox->pack_start(*lapmaskcol, Gtk::PACK_SHRINK, 0);
|
||||||
maskcolBox->pack_start(*chromaskcol, Gtk::PACK_SHRINK, 0);
|
toolcolBox->pack_start(*chromaskcol, Gtk::PACK_SHRINK, 0);
|
||||||
maskcolBox->pack_start(*gammaskcol, Gtk::PACK_SHRINK, 0);
|
toolcolBox->pack_start(*gammaskcol, Gtk::PACK_SHRINK, 0);
|
||||||
maskcolBox->pack_start(*slomaskcol, Gtk::PACK_SHRINK, 0);
|
toolcolBox->pack_start(*slomaskcol, Gtk::PACK_SHRINK, 0);
|
||||||
maskcolBox->pack_start(*shadmaskcol, Gtk::PACK_SHRINK, 0);
|
toolcolBox->pack_start(*shadmaskcol, Gtk::PACK_SHRINK, 0);
|
||||||
maskcolBox->pack_start(*mask2CurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
|
toolcolBox->pack_start(*mask2CurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
|
||||||
maskcolBox->pack_start(*mask2CurveEditorGwav, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
|
toolcolBox->pack_start(*mask2CurveEditorGwav, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
|
||||||
maskcolBox->pack_start(*csThresholdcol, Gtk::PACK_SHRINK, 0);
|
toolcolBox->pack_start(*csThresholdcol, Gtk::PACK_SHRINK, 0);
|
||||||
|
toolcolFrame->add(*toolcolBox);
|
||||||
|
maskcolBox->pack_start(*toolcolFrame);
|
||||||
|
|
||||||
mergecolFrame->add(*maskcolBox);
|
mergecolFrame->add(*maskcolBox);
|
||||||
ToolParamBlock* const mask7Box = Gtk::manage(new ToolParamBlock());
|
ToolParamBlock* const mask7Box = Gtk::manage(new ToolParamBlock());
|
||||||
@ -3694,6 +3704,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
|||||||
pp->locallab.spots.at(pp->locallab.selspot).HHcurve = HHshape->getCurve();
|
pp->locallab.spots.at(pp->locallab.selspot).HHcurve = HHshape->getCurve();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).invers = invers->get_active();
|
pp->locallab.spots.at(pp->locallab.selspot).invers = invers->get_active();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).special = special->get_active();
|
pp->locallab.spots.at(pp->locallab.selspot).special = special->get_active();
|
||||||
|
pp->locallab.spots.at(pp->locallab.selspot).toolcol = toolcol->get_active();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).enaColorMask = enaColorMask->get_active();
|
pp->locallab.spots.at(pp->locallab.selspot).enaColorMask = enaColorMask->get_active();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).CCmaskcurve = CCmaskshape->getCurve();
|
pp->locallab.spots.at(pp->locallab.selspot).CCmaskcurve = CCmaskshape->getCurve();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).LLmaskcurve = LLmaskshape->getCurve();
|
pp->locallab.spots.at(pp->locallab.selspot).LLmaskcurve = LLmaskshape->getCurve();
|
||||||
@ -4090,6 +4101,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
|||||||
pe->locallab.spots.at(pp->locallab.selspot).HHcurve = pe->locallab.spots.at(pp->locallab.selspot).HHcurve || !HHshape->isUnChanged();
|
pe->locallab.spots.at(pp->locallab.selspot).HHcurve = pe->locallab.spots.at(pp->locallab.selspot).HHcurve || !HHshape->isUnChanged();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).invers = pe->locallab.spots.at(pp->locallab.selspot).invers || !invers->get_inconsistent();
|
pe->locallab.spots.at(pp->locallab.selspot).invers = pe->locallab.spots.at(pp->locallab.selspot).invers || !invers->get_inconsistent();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).special = pe->locallab.spots.at(pp->locallab.selspot).special || !special->get_inconsistent();
|
pe->locallab.spots.at(pp->locallab.selspot).special = pe->locallab.spots.at(pp->locallab.selspot).special || !special->get_inconsistent();
|
||||||
|
pe->locallab.spots.at(pp->locallab.selspot).toolcol = pe->locallab.spots.at(pp->locallab.selspot).toolcol || !toolcol->get_inconsistent();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).enaColorMask = pe->locallab.spots.at(pp->locallab.selspot).enaColorMask || !enaColorMask->get_inconsistent();
|
pe->locallab.spots.at(pp->locallab.selspot).enaColorMask = pe->locallab.spots.at(pp->locallab.selspot).enaColorMask || !enaColorMask->get_inconsistent();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).CCmaskcurve = pe->locallab.spots.at(pp->locallab.selspot).CCmaskcurve || !CCmaskshape->isUnChanged();
|
pe->locallab.spots.at(pp->locallab.selspot).CCmaskcurve = pe->locallab.spots.at(pp->locallab.selspot).CCmaskcurve || !CCmaskshape->isUnChanged();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).LLmaskcurve = pe->locallab.spots.at(pp->locallab.selspot).LLmaskcurve || !LLmaskshape->isUnChanged();
|
pe->locallab.spots.at(pp->locallab.selspot).LLmaskcurve = pe->locallab.spots.at(pp->locallab.selspot).LLmaskcurve || !LLmaskshape->isUnChanged();
|
||||||
@ -4418,6 +4430,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
|||||||
pedited->locallab.spots.at(pp->locallab.selspot).HHcurve = pedited->locallab.spots.at(pp->locallab.selspot).HHcurve || !HHshape->isUnChanged();
|
pedited->locallab.spots.at(pp->locallab.selspot).HHcurve = pedited->locallab.spots.at(pp->locallab.selspot).HHcurve || !HHshape->isUnChanged();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).invers = pedited->locallab.spots.at(pp->locallab.selspot).invers || !invers->get_inconsistent();
|
pedited->locallab.spots.at(pp->locallab.selspot).invers = pedited->locallab.spots.at(pp->locallab.selspot).invers || !invers->get_inconsistent();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).special = pedited->locallab.spots.at(pp->locallab.selspot).special || !special->get_inconsistent();
|
pedited->locallab.spots.at(pp->locallab.selspot).special = pedited->locallab.spots.at(pp->locallab.selspot).special || !special->get_inconsistent();
|
||||||
|
pedited->locallab.spots.at(pp->locallab.selspot).toolcol = pedited->locallab.spots.at(pp->locallab.selspot).toolcol || !toolcol->get_inconsistent();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).enaColorMask = pedited->locallab.spots.at(pp->locallab.selspot).enaColorMask || !enaColorMask->get_inconsistent();
|
pedited->locallab.spots.at(pp->locallab.selspot).enaColorMask = pedited->locallab.spots.at(pp->locallab.selspot).enaColorMask || !enaColorMask->get_inconsistent();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).CCmaskcurve = pedited->locallab.spots.at(pp->locallab.selspot).CCmaskcurve || !CCmaskshape->isUnChanged();
|
pedited->locallab.spots.at(pp->locallab.selspot).CCmaskcurve = pedited->locallab.spots.at(pp->locallab.selspot).CCmaskcurve || !CCmaskshape->isUnChanged();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).LLmaskcurve = pedited->locallab.spots.at(pp->locallab.selspot).LLmaskcurve || !LLmaskshape->isUnChanged();
|
pedited->locallab.spots.at(pp->locallab.selspot).LLmaskcurve = pedited->locallab.spots.at(pp->locallab.selspot).LLmaskcurve || !LLmaskshape->isUnChanged();
|
||||||
@ -5684,6 +5697,29 @@ void Locallab::specialChanged()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Locallab::toolcolChanged()
|
||||||
|
{
|
||||||
|
|
||||||
|
if (multiImage) {
|
||||||
|
if (toolcol->get_inconsistent()) {
|
||||||
|
toolcol->set_inconsistent(false);
|
||||||
|
toolcolConn.block(true);
|
||||||
|
toolcol->set_active(false);
|
||||||
|
toolcolConn.block(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getEnabled() && expcolor->getEnabled()) {
|
||||||
|
if (listener) {
|
||||||
|
if (toolcol->get_active()) {
|
||||||
|
listener->panelChanged(EvLocallabtoolcol, M("GENERAL_ENABLED"));
|
||||||
|
} else {
|
||||||
|
listener->panelChanged(EvLocallabtoolcol, M("GENERAL_DISABLED"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Locallab::enaColorMaskChanged()
|
void Locallab::enaColorMaskChanged()
|
||||||
{
|
{
|
||||||
// printf("enaColorMaskChanged\n");
|
// printf("enaColorMaskChanged\n");
|
||||||
@ -8681,6 +8717,7 @@ void Locallab::enableListener()
|
|||||||
mergecolMethodConn.block(false);
|
mergecolMethodConn.block(false);
|
||||||
inversConn.block(false);
|
inversConn.block(false);
|
||||||
specialConn.block(false);
|
specialConn.block(false);
|
||||||
|
toolcolConn.block(false);
|
||||||
showmaskcolMethodConn.block(false);
|
showmaskcolMethodConn.block(false);
|
||||||
showmaskcolMethodConninv.block(false);
|
showmaskcolMethodConninv.block(false);
|
||||||
enaColorMaskConn.block(false);
|
enaColorMaskConn.block(false);
|
||||||
@ -8765,6 +8802,7 @@ void Locallab::disableListener()
|
|||||||
mergecolMethodConn.block(true);
|
mergecolMethodConn.block(true);
|
||||||
inversConn.block(true);
|
inversConn.block(true);
|
||||||
specialConn.block(true);
|
specialConn.block(true);
|
||||||
|
toolcolConn.block(true);
|
||||||
showmaskcolMethodConn.block(true);
|
showmaskcolMethodConn.block(true);
|
||||||
showmaskcolMethodConninv.block(true);
|
showmaskcolMethodConninv.block(true);
|
||||||
enaColorMaskConn.block(true);
|
enaColorMaskConn.block(true);
|
||||||
@ -8932,6 +8970,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
|||||||
HHshape->setCurve(pp->locallab.spots.at(index).HHcurve);
|
HHshape->setCurve(pp->locallab.spots.at(index).HHcurve);
|
||||||
invers->set_active(pp->locallab.spots.at(index).invers);
|
invers->set_active(pp->locallab.spots.at(index).invers);
|
||||||
special->set_active(pp->locallab.spots.at(index).special);
|
special->set_active(pp->locallab.spots.at(index).special);
|
||||||
|
toolcol->set_active(pp->locallab.spots.at(index).toolcol);
|
||||||
enaColorMask->set_active(pp->locallab.spots.at(index).enaColorMask);
|
enaColorMask->set_active(pp->locallab.spots.at(index).enaColorMask);
|
||||||
CCmaskshape->setCurve(pp->locallab.spots.at(index).CCmaskcurve);
|
CCmaskshape->setCurve(pp->locallab.spots.at(index).CCmaskcurve);
|
||||||
LLmaskshape->setCurve(pp->locallab.spots.at(index).LLmaskcurve);
|
LLmaskshape->setCurve(pp->locallab.spots.at(index).LLmaskcurve);
|
||||||
@ -9362,6 +9401,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
|||||||
HHshape->setUnChanged(!spotState->HHcurve);
|
HHshape->setUnChanged(!spotState->HHcurve);
|
||||||
invers->set_inconsistent(multiImage && !spotState->invers);
|
invers->set_inconsistent(multiImage && !spotState->invers);
|
||||||
special->set_inconsistent(multiImage && !spotState->special);
|
special->set_inconsistent(multiImage && !spotState->special);
|
||||||
|
toolcol->set_inconsistent(multiImage && !spotState->toolcol);
|
||||||
enaColorMask->set_inconsistent(multiImage && !spotState->enaColorMask);
|
enaColorMask->set_inconsistent(multiImage && !spotState->enaColorMask);
|
||||||
CCmaskshape->setUnChanged(!spotState->CCmaskcurve);
|
CCmaskshape->setUnChanged(!spotState->CCmaskcurve);
|
||||||
LLmaskshape->setUnChanged(!spotState->LLmaskcurve);
|
LLmaskshape->setUnChanged(!spotState->LLmaskcurve);
|
||||||
|
@ -337,8 +337,9 @@ private:
|
|||||||
Gtk::CheckButton* const curvactiv;
|
Gtk::CheckButton* const curvactiv;
|
||||||
Gtk::CheckButton* const invers;
|
Gtk::CheckButton* const invers;
|
||||||
Gtk::CheckButton* const special;
|
Gtk::CheckButton* const special;
|
||||||
|
Gtk::CheckButton* const toolcol;
|
||||||
Gtk::CheckButton* const enaColorMask;
|
Gtk::CheckButton* const enaColorMask;
|
||||||
sigc::connection curvactivConn, inversConn, enaColorMaskConn, specialConn;
|
sigc::connection curvactivConn, inversConn, enaColorMaskConn, specialConn, toolcolConn;
|
||||||
// Exposure
|
// Exposure
|
||||||
Gtk::CheckButton* const enaExpMask;
|
Gtk::CheckButton* const enaExpMask;
|
||||||
sigc::connection enaExpMaskConn;
|
sigc::connection enaExpMaskConn;
|
||||||
@ -472,6 +473,7 @@ private:
|
|||||||
Gtk::Button* const lumacontrastPlusButton;
|
Gtk::Button* const lumacontrastPlusButton;
|
||||||
sigc::connection lumacontrastMinusPressedConn, lumaneutralPressedConn, lumacontrastPlusPressedConn;
|
sigc::connection lumacontrastMinusPressedConn, lumaneutralPressedConn, lumacontrastPlusPressedConn;
|
||||||
Gtk::Frame* const gridFrame;
|
Gtk::Frame* const gridFrame;
|
||||||
|
Gtk::Frame* const toolcolFrame;
|
||||||
Gtk::Frame* const mergecolFrame;
|
Gtk::Frame* const mergecolFrame;
|
||||||
Gtk::Frame* const merge1colFrame;
|
Gtk::Frame* const merge1colFrame;
|
||||||
Gtk::Frame* const pdeFrame;
|
Gtk::Frame* const pdeFrame;
|
||||||
@ -527,6 +529,7 @@ private:
|
|||||||
void curvactivChanged();
|
void curvactivChanged();
|
||||||
void inversChanged();
|
void inversChanged();
|
||||||
void specialChanged();
|
void specialChanged();
|
||||||
|
void toolcolChanged();
|
||||||
void enaColorMaskChanged();
|
void enaColorMaskChanged();
|
||||||
// Exposure
|
// Exposure
|
||||||
void enaExpMaskChanged();
|
void enaExpMaskChanged();
|
||||||
|
@ -1013,6 +1013,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
|||||||
locallab.spots.at(j).HHcurve = locallab.spots.at(j).HHcurve && pSpot.HHcurve == otherSpot.HHcurve;
|
locallab.spots.at(j).HHcurve = locallab.spots.at(j).HHcurve && pSpot.HHcurve == otherSpot.HHcurve;
|
||||||
locallab.spots.at(j).invers = locallab.spots.at(j).invers && pSpot.invers == otherSpot.invers;
|
locallab.spots.at(j).invers = locallab.spots.at(j).invers && pSpot.invers == otherSpot.invers;
|
||||||
locallab.spots.at(j).special = locallab.spots.at(j).special && pSpot.special == otherSpot.special;
|
locallab.spots.at(j).special = locallab.spots.at(j).special && pSpot.special == otherSpot.special;
|
||||||
|
locallab.spots.at(j).toolcol = locallab.spots.at(j).toolcol && pSpot.toolcol == otherSpot.toolcol;
|
||||||
locallab.spots.at(j).enaColorMask = locallab.spots.at(j).enaColorMask && pSpot.enaColorMask == otherSpot.enaColorMask;
|
locallab.spots.at(j).enaColorMask = locallab.spots.at(j).enaColorMask && pSpot.enaColorMask == otherSpot.enaColorMask;
|
||||||
locallab.spots.at(j).CCmaskcurve = locallab.spots.at(j).CCmaskcurve && pSpot.CCmaskcurve == otherSpot.CCmaskcurve;
|
locallab.spots.at(j).CCmaskcurve = locallab.spots.at(j).CCmaskcurve && pSpot.CCmaskcurve == otherSpot.CCmaskcurve;
|
||||||
locallab.spots.at(j).LLmaskcurve = locallab.spots.at(j).LLmaskcurve && pSpot.LLmaskcurve == otherSpot.LLmaskcurve;
|
locallab.spots.at(j).LLmaskcurve = locallab.spots.at(j).LLmaskcurve && pSpot.LLmaskcurve == otherSpot.LLmaskcurve;
|
||||||
@ -2981,6 +2982,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
|||||||
toEdit.locallab.spots.at(i).special = mods.locallab.spots.at(i).special;
|
toEdit.locallab.spots.at(i).special = mods.locallab.spots.at(i).special;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (locallab.spots.at(i).toolcol) {
|
||||||
|
toEdit.locallab.spots.at(i).toolcol = mods.locallab.spots.at(i).toolcol;
|
||||||
|
}
|
||||||
|
|
||||||
if (locallab.spots.at(i).enaColorMask) {
|
if (locallab.spots.at(i).enaColorMask) {
|
||||||
toEdit.locallab.spots.at(i).enaColorMask = mods.locallab.spots.at(i).enaColorMask;
|
toEdit.locallab.spots.at(i).enaColorMask = mods.locallab.spots.at(i).enaColorMask;
|
||||||
}
|
}
|
||||||
@ -4966,6 +4971,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
|||||||
HHcurve(v),
|
HHcurve(v),
|
||||||
invers(v),
|
invers(v),
|
||||||
special(v),
|
special(v),
|
||||||
|
toolcol(v),
|
||||||
enaColorMask(v),
|
enaColorMask(v),
|
||||||
CCmaskcurve(v),
|
CCmaskcurve(v),
|
||||||
LLmaskcurve(v),
|
LLmaskcurve(v),
|
||||||
@ -5282,6 +5288,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
|||||||
HHcurve = v;
|
HHcurve = v;
|
||||||
invers = v;
|
invers = v;
|
||||||
special = v;
|
special = v;
|
||||||
|
toolcol = v;
|
||||||
enaColorMask = v;
|
enaColorMask = v;
|
||||||
CCmaskcurve = v;
|
CCmaskcurve = v;
|
||||||
LLmaskcurve = v;
|
LLmaskcurve = v;
|
||||||
|
@ -444,6 +444,7 @@ public:
|
|||||||
bool HHcurve;
|
bool HHcurve;
|
||||||
bool invers;
|
bool invers;
|
||||||
bool special;
|
bool special;
|
||||||
|
bool toolcol;
|
||||||
bool enaColorMask;
|
bool enaColorMask;
|
||||||
bool CCmaskcurve;
|
bool CCmaskcurve;
|
||||||
bool LLmaskcurve;
|
bool LLmaskcurve;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user