diff --git a/rtdata/languages/default b/rtdata/languages/default index ea05c6e70..9fe20ca7a 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -2180,7 +2180,7 @@ TP_LOCALLAB_MRTWO;Short Curves 'L' Mask TP_LOCALLAB_MRTHR;Original Image TP_LOCALLAB_MRFOU;Previous Spot TP_LOCALLAB_MERGETYPE;Merge image and mask -TP_LOCALLAB_MERGETYPE_TOOLTIP;None, use all mask in LCH mode.\nShort curves 'L' mask, use a short circuit for mask 2, 3, 4, 6, 7.\nOriginal mask 7, blend current image with original +TP_LOCALLAB_MERGETYPE_TOOLTIP;None, use all mask in LCH mode.\nShort curves 'L' mask, use a short circuit for mask 2, 3, 4, 6, 7.\nOriginal mask 8, blend current image with original TP_LOCALLAB_MERGENONE;None TP_LOCALLAB_MERGEONE;Short Curves 'L' Mask TP_LOCALLAB_MERGETWO;Original(Mask 7) @@ -2407,11 +2407,12 @@ TP_LOCALLAB_LUMASK;Luminance Background Mask TP_LOCALLAB_SHORTC;Short Curves 'L' Mask TP_LOCALLAB_SHORTCMASK_TOOLTIP;Short circuit the 2 curves L(L) and L(H).\nAllows you to mix the current image with the original image modified by the mask job.\nUsable with masks 2, 3, 4, 6, 7 TP_LOCALLAB_SHOWCB;2+ - Mask and modifications -TP_LOCALLAB_SHOWT;3 - Mask and modifications -TP_LOCALLAB_SHOWS;4+* - Mask and modifications -TP_LOCALLAB_SHOWR;5 - Mask and modifications -TP_LOCALLAB_SHOWE;6+ - Mask and modifications -TP_LOCALLAB_SHOWC;7+* - Mask and modifications +TP_LOCALLAB_SHOWVI;3 - Mask and modifications +TP_LOCALLAB_SHOWT;4 - Mask and modifications +TP_LOCALLAB_SHOWS;5+* - Mask and modifications +TP_LOCALLAB_SHOWR;6 - Mask and modifications +TP_LOCALLAB_SHOWE;7+ - Mask and modifications +TP_LOCALLAB_SHOWC;8+* - Mask and modifications TP_LOCALLAB_SHOWC1;Merge file TP_LOCALLAB_SHOWPLUS;1+* - Mask and modifications - Smooth-Blur & Denoise TP_LOCALLAB_SHOWMASKCOL_TOOLTIP;Display modifications.\nBeware, you can only view one modification (color and light or Exposure or Shadows-Highlight or TM or CBDL or Retinex MSR or Blur).\n\nUse Mask is before algorihtm shape detection diff --git a/rtengine/iplocallab.cc b/rtengine/iplocallab.cc index 0ee007599..04b48222b 100644 --- a/rtengine/iplocallab.cc +++ b/rtengine/iplocallab.cc @@ -989,7 +989,7 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall lp.ftwlc = fftwlc; lp.ftwreti = fftwreti; lp.vibena = locallab.spots.at(sp).expvibrance && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && llcbMask == 0 && lltmMask == 0 && llSHMask == 0;// vibrance tool is deactivated if Color & Light mask or SHmask is visible - + } static void calcTransitionrect(const float lox, const float loy, const float ach, const local_params& lp, int &zone, float &localFactor) @@ -8822,7 +8822,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o //vibrance - if (lp.expvib && (lp.past != 0.f || lp.satur != 0.f || lp.showmaskvibmet == 2 || lp.enavibMask || lp.showmaskvibmet == 3 || lp.showmaskvibmet == 4) && lp.vibena){ //interior ellipse renforced lightness and chroma //locallutili + if (lp.expvib && (lp.past != 0.f || lp.satur != 0.f || lp.showmaskvibmet == 2 || lp.enavibMask || lp.showmaskvibmet == 3 || lp.showmaskvibmet == 4) && lp.vibena) { //interior ellipse renforced lightness and chroma //locallutili if (call <= 3) { //simpleprocess, dcrop, improccoordinator const int ystart = std::max(static_cast(lp.yc - lp.lyT) - cy, 0); const int yend = std::min(static_cast(lp.yc + lp.ly) - cy, original->H); @@ -8930,44 +8930,45 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o if (lp.showmaskvibmet == 0 || lp.showmaskvibmet == 1 || lp.showmaskvibmet == 2 || lp.showmaskvibmet == 4 || lp.enavibMask) { #ifdef _OPENMP - #pragma omp parallel for schedule(dynamic,16) + #pragma omp parallel for schedule(dynamic,16) #endif - for (int y = ystart; y < yend; y++) { - for (int x = xstart; x < xend; x++) { - bufexporig->L[y - ystart][x - xstart] = original->L[y][x]; - bufexporig->a[y - ystart][x - xstart] = original->a[y][x]; - bufexporig->b[y - ystart][x - xstart] = original->b[y][x]; + for (int y = ystart; y < yend; y++) { + for (int x = xstart; x < xend; x++) { + bufexporig->L[y - ystart][x - xstart] = original->L[y][x]; + bufexporig->a[y - ystart][x - xstart] = original->a[y][x]; + bufexporig->b[y - ystart][x - xstart] = original->b[y][x]; + } } - } - VibranceParams vibranceParams; - vibranceParams.enabled = params->locallab.spots.at(sp).expvibrance; - vibranceParams.pastels = params->locallab.spots.at(sp).pastels; - vibranceParams.saturated = params->locallab.spots.at(sp).saturated; - vibranceParams.psthreshold = params->locallab.spots.at(sp).psthreshold; - vibranceParams.protectskins = params->locallab.spots.at(sp).protectskins; - vibranceParams.avoidcolorshift = params->locallab.spots.at(sp).avoidcolorshift; - vibranceParams.pastsattog = params->locallab.spots.at(sp).pastsattog; - vibranceParams.skintonescurve = params->locallab.spots.at(sp).skintonescurve; + VibranceParams vibranceParams; + vibranceParams.enabled = params->locallab.spots.at(sp).expvibrance; + vibranceParams.pastels = params->locallab.spots.at(sp).pastels; + vibranceParams.saturated = params->locallab.spots.at(sp).saturated; + vibranceParams.psthreshold = params->locallab.spots.at(sp).psthreshold; + vibranceParams.protectskins = params->locallab.spots.at(sp).protectskins; + vibranceParams.avoidcolorshift = params->locallab.spots.at(sp).avoidcolorshift; + vibranceParams.pastsattog = params->locallab.spots.at(sp).pastsattog; + vibranceParams.skintonescurve = params->locallab.spots.at(sp).skintonescurve; - bufexpfin->CopyFrom(bufexporig.get()); - ImProcFunctions::vibrance(bufexpfin.get(), vibranceParams, params->toneCurve.hrenabled, params->icm.workingProfile); + bufexpfin->CopyFrom(bufexporig.get()); + ImProcFunctions::vibrance(bufexpfin.get(), vibranceParams, params->toneCurve.hrenabled, params->icm.workingProfile); #ifdef _OPENMP - #pragma omp parallel for schedule(dynamic,16) + #pragma omp parallel for schedule(dynamic,16) #endif - for (int y = 0; y < bfh; y++) { - for (int x = 0; x < bfw; x++) { - buflight[y][x] = CLIPRET((bufexpfin->L[y][x] - bufexporig->L[y][x]) / 328.f); - bufl_ab[y][x] = CLIPRET((sqrt(SQR(bufexpfin->a[y][x]) + SQR(bufexpfin->b[y][x])) - sqrt(SQR(bufexporig->a[y][x]) + SQR(bufexporig->b[y][x]))) / 250.f); + for (int y = 0; y < bfh; y++) { + for (int x = 0; x < bfw; x++) { + buflight[y][x] = CLIPRET((bufexpfin->L[y][x] - bufexporig->L[y][x]) / 328.f); + bufl_ab[y][x] = CLIPRET((sqrt(SQR(bufexpfin->a[y][x]) + SQR(bufexpfin->b[y][x])) - sqrt(SQR(bufexporig->a[y][x]) + SQR(bufexporig->b[y][x]))) / 250.f); + } } + + bufexpfin.reset(); } - - bufexpfin.reset(); - } + transit_shapedetect(2, bufexporig.get(), nullptr, originalmaskvib.get(), buflight, bufl_ab, nullptr, nullptr, nullptr, false, hueref, chromaref, lumaref, sobelref, 0.f, nullptr, lp, original, transformed, cx, cy, sk); if (params->locallab.spots.at(sp).recurs) { diff --git a/rtgui/locallab.cc b/rtgui/locallab.cc index 432861235..3ad5c77fa 100644 --- a/rtgui/locallab.cc +++ b/rtgui/locallab.cc @@ -879,7 +879,8 @@ pe(nullptr) if (showtooltip) { LLmaskshape->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_CC_TOOLTIP")); } - // maskCurveEditorG->curveListComplete(); + +// maskCurveEditorG->curveListComplete(); // maskHCurveEditorG->setCurveListener(this); HHmaskshape->setIdentityValue(0.); @@ -888,6 +889,7 @@ pe(nullptr) if (showtooltip) { HHmaskshape->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_CC_TOOLTIP")); } + // maskHCurveEditorG->setCurveListener(this); HHmaskshape->setCurveColorProvider(this, 6); @@ -5179,7 +5181,7 @@ void Locallab::curveChanged(CurveEditor* ce) listener->panelChanged(EvlocallabSkinTonesCurve, M("HISTORY_CUSTOMCURVE")); } } - + if (ce == CCmaskvibshape) { if (listener) { listener->panelChanged(EvlocallabCCmaskvibshape, M("HISTORY_CUSTOMCURVE")); @@ -8031,7 +8033,7 @@ void Locallab::adjusterChanged(Adjuster * a, double newval) listener->panelChanged(Evlocallablapmaskvib, lapmaskvib->getTextValue()); } } - + } // Soft Light @@ -9130,7 +9132,7 @@ void Locallab::enableListener() pastsattogconn.block(false); showmaskvibMethodConn.block(false); enavibMaskConn.block(false); - // Soft Light + // Soft Light enablesoftConn.block(false); softMethodConn.block(false); showmasksoftMethodConn.block(false);