diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 99c41cde4..8cc1bc000 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -806,13 +806,18 @@ HISTORY_MSG_493;(L*a*b*) HISTORY_MSG_CLAMPOOG;(Belichtung) - Farben\nauf Farbraum beschränken HISTORY_MSG_COLORTONING_LABGRID_VALUE;(Farbanpassungen)\nL*a*b*-Farbkorrektur HISTORY_MSG_COLORTONING_LABREGION_AB;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich +HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Kanal HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - C-Maske HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - H-Maske HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Helligkeit HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - L-Maske HISTORY_MSG_COLORTONING_LABREGION_LIST;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Liste +HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Maskenunschärfe +HISTORY_MSG_COLORTONING_LABREGION_OFFSET;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Versatz +HISTORY_MSG_COLORTONING_LABREGION_POWER;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Verstärkung HISTORY_MSG_COLORTONING_LABREGION_SATURATION;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Sättigung HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Maske anzeigen +HISTORY_MSG_COLORTONING_LABREGION_SLOPE;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Steigung HISTORY_MSG_DEHAZE_DEPTH;(Bildschleier entfernen)\nTiefe HISTORY_MSG_DEHAZE_ENABLED;(Bildschleier entfernen) HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;(Bildschleier entfernen)\nMaske anzeigen @@ -1545,14 +1550,23 @@ TP_COLORTONING_LABGRID;L*a*b*-Farbkorrektur TP_COLORTONING_LABGRID_VALUES;HL: a=%1, b=%2\nS: a=%3, b=%4 TP_COLORTONING_LABREGIONS;L*a*b*-Farbkorrektur Bereiche TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +TP_COLORTONING_LABREGION_CHANNEL;Kanal +TP_COLORTONING_LABREGION_CHANNEL_ALL;Alle +TP_COLORTONING_LABREGION_CHANNEL_B;Blau +TP_COLORTONING_LABREGION_CHANNEL_G;Grün +TP_COLORTONING_LABREGION_CHANNEL_R;Rot TP_COLORTONING_LABREGION_CHROMATICITYMASK;C TP_COLORTONING_LABREGION_HUEMASK;H TP_COLORTONING_LABREGION_LIGHTNESS;Helligkeit TP_COLORTONING_LABREGION_LIGHTNESSMASK;L TP_COLORTONING_LABREGION_LIST_TITLE;Farbkorrektur TP_COLORTONING_LABREGION_MASK;Maske +TP_COLORTONING_LABREGION_MASKBLUR;Maskenunschärfe +TP_COLORTONING_LABREGION_OFFSET;Versatz +TP_COLORTONING_LABREGION_POWER;Verstärkung TP_COLORTONING_LABREGION_SATURATION;Sättigung TP_COLORTONING_LABREGION_SHOWMASK;Maske anzeigen +TP_COLORTONING_LABREGION_SLOPE;Steigung TP_COLORTONING_LUMA;Luminanz TP_COLORTONING_LUMAMODE;Luminanz schützen TP_COLORTONING_LUMAMODE_TOOLTIP;Wenn aktiviert, wird die Luminanz der Farben Rot, Grün, Cyan, Blau... geschützt. @@ -1592,6 +1606,7 @@ TP_CROP_GUIDETYPE;Hilfslinien: TP_CROP_H;Höhe TP_CROP_LABEL;Ausschnitt TP_CROP_PPI;PPI = +TP_CROP_RESETCROP;Zurücksetzen TP_CROP_SELECTCROP;Ausschnitt TP_CROP_W;Breite TP_CROP_X;Links @@ -2390,22 +2405,3 @@ ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen.\nTaste: Alt + f ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: + ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - -!!!!!!!!!!!!!!!!!!!!!!!!! -! Untranslated keys follow; remove the ! prefix after an entry is translated. -!!!!!!!!!!!!!!!!!!!!!!!!! - -HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Kanal -HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Maskenunschärfe -HISTORY_MSG_COLORTONING_LABREGION_OFFSET;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Versatz -HISTORY_MSG_COLORTONING_LABREGION_POWER;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Verstärkung -HISTORY_MSG_COLORTONING_LABREGION_SLOPE;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Steigung -TP_COLORTONING_LABREGION_CHANNEL;Kanal -TP_COLORTONING_LABREGION_CHANNEL_ALL;Alle -TP_COLORTONING_LABREGION_CHANNEL_B;Blau -TP_COLORTONING_LABREGION_CHANNEL_G;Grün -TP_COLORTONING_LABREGION_CHANNEL_R;Rot -TP_COLORTONING_LABREGION_MASKBLUR;Maskenunschärfe -TP_COLORTONING_LABREGION_OFFSET;Versatz -TP_COLORTONING_LABREGION_POWER;Verstärkung -TP_COLORTONING_LABREGION_SLOPE;Steigung -TP_CROP_RESETCROP;Zurücksetzen diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 81cc576c9..7854dfb81 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -808,56 +808,58 @@ void Crop::update(int todo) } - if (todo & (M_AUTOEXP | M_RGBCURVE)) { + if (todo & M_RGBCURVE) { + Imagefloat *workingCrop = baseCrop; + if (params.icm.workingTRC == "Custom") { //exec TRC IN free - Glib::ustring profile; - profile = params.icm.workingProfile; + const Glib::ustring profile = params.icm.workingProfile; if (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") { - + int cw = baseCrop->getWidth(); + int ch = baseCrop->getHeight(); + workingCrop = new Imagefloat(cw, ch); + baseCrop->copyData(workingCrop); //first put gamma TRC to 1 - int cw = baseCrop->getWidth(); - int ch = baseCrop->getHeight(); - Imagefloat* readyImg0 = parent->ipf.workingtrc(baseCrop, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310); + Imagefloat* readyImg0 = parent->ipf.workingtrc(workingCrop, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310); #pragma omp parallel for for (int row = 0; row < ch; row++) { for (int col = 0; col < cw; col++) { - baseCrop->r(row, col) = (float)readyImg0->r(row, col); - baseCrop->g(row, col) = (float)readyImg0->g(row, col); - baseCrop->b(row, col) = (float)readyImg0->b(row, col); + workingCrop->r(row, col) = (float)readyImg0->r(row, col); + workingCrop->g(row, col) = (float)readyImg0->g(row, col); + workingCrop->b(row, col) = (float)readyImg0->b(row, col); } } delete readyImg0; //adjust gamma TRC - Imagefloat* readyImg = parent->ipf.workingtrc(baseCrop, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope); + Imagefloat* readyImg = parent->ipf.workingtrc(workingCrop, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope); #pragma omp parallel for for (int row = 0; row < ch; row++) { for (int col = 0; col < cw; col++) { - baseCrop->r(row, col) = (float)readyImg->r(row, col); - baseCrop->g(row, col) = (float)readyImg->g(row, col); - baseCrop->b(row, col) = (float)readyImg->b(row, col); + workingCrop->r(row, col) = (float)readyImg->r(row, col); + workingCrop->g(row, col) = (float)readyImg->g(row, col); + workingCrop->b(row, col) = (float)readyImg->b(row, col); } } delete readyImg; } } - } - - if (todo & M_RGBCURVE) { double rrm, ggm, bbm; DCPProfile::ApplyState as; DCPProfile *dcpProf = parent->imgsrc->getDCP(params.icm, as); LUTu histToneCurve; - parent->ipf.rgbProc (baseCrop, laboCrop, this, parent->hltonecurve, parent->shtonecurve, parent->tonecurve, + parent->ipf.rgbProc (workingCrop, laboCrop, this, parent->hltonecurve, parent->shtonecurve, parent->tonecurve, params.toneCurve.saturation, parent->rCurve, parent->gCurve, parent->bCurve, parent->colourToningSatLimit, parent->colourToningSatLimitOpacity, parent->ctColorCurve, parent->ctOpacityCurve, parent->opautili, parent->clToningcurve, parent->cl2Toningcurve, parent->customToneCurve1, parent->customToneCurve2, parent->beforeToneCurveBW, parent->afterToneCurveBW, rrm, ggm, bbm, parent->bwAutoR, parent->bwAutoG, parent->bwAutoB, dcpProf, as, histToneCurve); + if (workingCrop != baseCrop) { + delete workingCrop; + } } /*xref=000;yref=000; diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 2d6db3dd9..d76ccda27 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -506,8 +506,12 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) if (todo & (M_AUTOEXP | M_RGBCURVE)) { if (params.icm.workingTRC == "Custom") { //exec TRC IN free - Glib::ustring profile; - profile = params.icm.workingProfile; + if (oprevi == orig_prev) { + oprevi = new Imagefloat(pW, pH); + orig_prev->copyData(oprevi); + } + + Glib::ustring profile = params.icm.workingProfile; if (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") { int cw = oprevi->getWidth(); diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index 0d5d9a0c3..e110792ec 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -194,6 +194,7 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa switch (pp->lensProf.lcMode) { case procparams::LensProfParams::LcMode::LCP: { corrLcpFileRB->set_active(true); + setManualParamsVisibility(false); break; } @@ -209,6 +210,7 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa case procparams::LensProfParams::LcMode::NONE: { corrOffRB->set_active(true); + setManualParamsVisibility(false); break; } }