Local adjustments tools used globally - Laspotmain (#6928)
* First step LA globally * fixed several GUI bad behavior * better behavior shows additional settings * Improve transition in main * First step hide-show invers and scope * Hide show invers and scope step2 * hide show others inverse and scope * Try to improve * Change windows.yml and appimage.yml * In Preference set choice for default Spot Method * Optimization call idle_register * forgotten delete mainfp * Re-enable sliders scope in colorlight - shadows - vibrance - move setting checkbox others settings * Fixed bad behavior hide - show * Optimize behavior * Bad behavior scope when changing method * Clean and comment code * disable preview mask and modif for cbdl and retinex * Fixed preview deltaE mask and modif log encode - exposure - new button preview color and light * Button preview deltaE - exposure * Button preview SH * Button preview Vibrance * Improce code using mask * Fixed several bad behavior - preview TM and Contrast * Preview log button * Preview Ciecam button * Preview common mask button * Disable Preview button in settings when not used in tools * Change call to controspotpanel in improcoordinator * Change Local adjustments title to Selective Editing * Change default value spotmethod in option * Missing cddl in preview settings * Change parameter setting spot type * put selective editing tab just after exposure tab * Disable preview ΔE button when another is enabled Only one button should be active at any given time. * Deactivate preview ΔE buttons when switching spots * Change tooltip Spot method * Change selective editing position * Remove duplicate line in language default * Remove appimage.yml windows.yml --------- Co-authored-by: Lawrence Lee <45837045+Lawrence37@users.noreply.github.com>
This commit is contained in:
parent
5a25619bd5
commit
5571c3a4c6
2
.github/workflows/appimage.yml
vendored
2
.github/workflows/appimage.yml
vendored
@ -15,7 +15,7 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
env:
|
env:
|
||||||
publish_pre_dev_labels: '[]'
|
publish_pre_dev_labels: '[]'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
@ -1763,7 +1763,7 @@ MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
|
|||||||
MAIN_TAB_FILTER; Filter
|
MAIN_TAB_FILTER; Filter
|
||||||
MAIN_TAB_INSPECT; Inspect
|
MAIN_TAB_INSPECT; Inspect
|
||||||
MAIN_TAB_IPTC;IPTC
|
MAIN_TAB_IPTC;IPTC
|
||||||
MAIN_TAB_LOCALLAB;Local
|
MAIN_TAB_LOCALLAB;Selective Editing
|
||||||
MAIN_TAB_LOCALLAB_TOOLTIP;Shortcut: <b>Alt-o</b>
|
MAIN_TAB_LOCALLAB_TOOLTIP;Shortcut: <b>Alt-o</b>
|
||||||
MAIN_TAB_METADATA;Metadata
|
MAIN_TAB_METADATA;Metadata
|
||||||
MAIN_TAB_METADATA_TOOLTIP;Shortcut: <b>Alt-m</b>
|
MAIN_TAB_METADATA_TOOLTIP;Shortcut: <b>Alt-m</b>
|
||||||
@ -1850,8 +1850,8 @@ PARTIALPASTE_LABCURVE;L*a*b* adjustments
|
|||||||
PARTIALPASTE_LENSGROUP;Lens Related Settings
|
PARTIALPASTE_LENSGROUP;Lens Related Settings
|
||||||
PARTIALPASTE_LENSPROFILE;Profiled lens correction
|
PARTIALPASTE_LENSPROFILE;Profiled lens correction
|
||||||
PARTIALPASTE_LOCALCONTRAST;Local contrast
|
PARTIALPASTE_LOCALCONTRAST;Local contrast
|
||||||
PARTIALPASTE_LOCALLAB;Local Adjustments
|
PARTIALPASTE_LOCALLAB;Selective Editing
|
||||||
PARTIALPASTE_LOCALLABGROUP;Local Adjustments Settings
|
PARTIALPASTE_LOCALLABGROUP;Selective Editing Settings
|
||||||
PARTIALPASTE_METADATA;Metadata mode
|
PARTIALPASTE_METADATA;Metadata mode
|
||||||
PARTIALPASTE_METAGROUP;Metadata settings
|
PARTIALPASTE_METAGROUP;Metadata settings
|
||||||
PARTIALPASTE_PCVIGNETTE;Vignette filter
|
PARTIALPASTE_PCVIGNETTE;Vignette filter
|
||||||
@ -2083,6 +2083,7 @@ PREFERENCES_SND_HELP;Enter a full file path to set a sound, or leave blank for n
|
|||||||
PREFERENCES_SND_LNGEDITPROCDONE;Editor processing done
|
PREFERENCES_SND_LNGEDITPROCDONE;Editor processing done
|
||||||
PREFERENCES_SND_QUEUEDONE;Queue processing done
|
PREFERENCES_SND_QUEUEDONE;Queue processing done
|
||||||
PREFERENCES_SND_THRESHOLDSECS;After seconds
|
PREFERENCES_SND_THRESHOLDSECS;After seconds
|
||||||
|
PREFERENCES_SPOTLOC;Define Spot method for Local Adjustments
|
||||||
PREFERENCES_STARTUPIMDIR;Image Directory at Startup
|
PREFERENCES_STARTUPIMDIR;Image Directory at Startup
|
||||||
PREFERENCES_TAB_BROWSER;File Browser
|
PREFERENCES_TAB_BROWSER;File Browser
|
||||||
PREFERENCES_TAB_COLORMGR;Color Management
|
PREFERENCES_TAB_COLORMGR;Color Management
|
||||||
@ -2959,7 +2960,7 @@ TP_LOCALLAB_CLARI_TOOLTIP;Levels 0 to 4 (included): 'Sharp mask' is enabled\nLev
|
|||||||
TP_LOCALLAB_CLIPTM;Clip restored data (gain)
|
TP_LOCALLAB_CLIPTM;Clip restored data (gain)
|
||||||
TP_LOCALLAB_COFR;Color & Light
|
TP_LOCALLAB_COFR;Color & Light
|
||||||
TP_LOCALLAB_COLORDE;ΔE preview color - intensity
|
TP_LOCALLAB_COLORDE;ΔE preview color - intensity
|
||||||
TP_LOCALLAB_COLORDEPREV_TOOLTIP;Preview ΔE button will only work if you have activated one (and only one) of the tools in 'Add tool to current spot' menu.\nTo be able to preview ΔE with several tools enabled, use Mask and modifications - Preview ΔE.
|
TP_LOCALLAB_COLORDEPREV_TOOLTIP;Preview ΔE button in Settings will only work if you have activated 'Sharpening' or 'Soft Light and Original Retinex' or 'Blur/Grain and Denoise' or 'Dehaze and Retinex' or 'Contrast by Detail Levels' in 'Add tool to current spot' menu.\nFor others tools Preview ΔE button is 'in the tool' - to be able to preview ΔE with several tools enabled, use preferably Mask and modifications.
|
||||||
TP_LOCALLAB_COLORDE_TOOLTIP;Show a blue color preview for ΔE selection if negative and green if positive.\n\nMask and modifications (show modified areas without mask): show actual modifications if positive, show enhanced modifications (luminance only) with blue and yellow if negative.
|
TP_LOCALLAB_COLORDE_TOOLTIP;Show a blue color preview for ΔE selection if negative and green if positive.\n\nMask and modifications (show modified areas without mask): show actual modifications if positive, show enhanced modifications (luminance only) with blue and yellow if negative.
|
||||||
TP_LOCALLAB_COLORSCOPE;Scope (color tools)
|
TP_LOCALLAB_COLORSCOPE;Scope (color tools)
|
||||||
TP_LOCALLAB_COLORSCOPE_TOOLTIP;Common Scope slider for Color and Light, Shadows/Highlights, Vibrance.\nOther tools have their own scope controls.
|
TP_LOCALLAB_COLORSCOPE_TOOLTIP;Common Scope slider for Color and Light, Shadows/Highlights, Vibrance.\nOther tools have their own scope controls.
|
||||||
@ -3048,9 +3049,10 @@ TP_LOCALLAB_EV_VIS_ALL;Show all
|
|||||||
TP_LOCALLAB_EXCLUF;Excluding
|
TP_LOCALLAB_EXCLUF;Excluding
|
||||||
TP_LOCALLAB_EXCLUF_TOOLTIP;'Excluding' mode prevents adjacent spots from influencing certain parts of the image. Adjusting 'Scope' will extend the range of colors.\n You can also add tools to an Excluding spot and use them in the same way as for a normal spot.
|
TP_LOCALLAB_EXCLUF_TOOLTIP;'Excluding' mode prevents adjacent spots from influencing certain parts of the image. Adjusting 'Scope' will extend the range of colors.\n You can also add tools to an Excluding spot and use them in the same way as for a normal spot.
|
||||||
TP_LOCALLAB_EXCLUTYPE;Spot method
|
TP_LOCALLAB_EXCLUTYPE;Spot method
|
||||||
TP_LOCALLAB_EXCLUTYPE_TOOLTIP;Normal spot uses recursive data.\n\nExcluding spot reinitializes all local adjustment data.\nCan be used to totally or partially cancel a previous action or to carry out operations in Inverse mode.\n\n'Full image' allows you to use the local adjustment tools on the whole image.\n The RT Spot delimiters are set beyond the image preview boundaries.\n The transition is set to 100.\nNote, you may have to reposition the RT Spot slightly and adjust the Spot size to get the desired effect.\nPlease note: using Denoise or Wavelet or FFTW in full-image mode uses large amounts of memory and may cause the application to crash on lower capacity systems.
|
TP_LOCALLAB_EXCLUTYPE_TOOLTIP;Normal spot uses recursive data.\n\nExcluding spot reinitializes all local adjustment data.\nCan be used to totally or partially cancel a previous action or to carry out operations in Inverse mode.\nUse 'Scope' (Excluding) to set the exclusion intensity.\n\n'Full image' allows you to use the local adjustment tools on the whole image.\n The RT Spot delimiters are set beyond the image preview boundaries.\n The transition is set to 100.\nNote, you may have to reposition the RT Spot slightly and adjust the Spot size to get the desired effect.\nPlease note: using Denoise or Wavelet or FFTW in full-image mode uses large amounts of memory and may cause the application to crash on lower capacity systems.\n\n'Global' allows you to use the local adjustment tools on the whole image, without using deltaE or transitions.
|
||||||
TP_LOCALLAB_EXECLU;Excluding spot
|
TP_LOCALLAB_EXECLU;Excluding spot
|
||||||
TP_LOCALLAB_EXFULL;Full image
|
TP_LOCALLAB_EXFULL;Full image
|
||||||
|
TP_LOCALLAB_EXMAIN;Global
|
||||||
TP_LOCALLAB_EXNORM;Normal spot
|
TP_LOCALLAB_EXNORM;Normal spot
|
||||||
TP_LOCALLAB_EXPCBDL_TOOLTIP;Can be used to remove marks on the sensor or lens by reducing the contrast on the appropriate detail level(s).
|
TP_LOCALLAB_EXPCBDL_TOOLTIP;Can be used to remove marks on the sensor or lens by reducing the contrast on the appropriate detail level(s).
|
||||||
TP_LOCALLAB_EXPCHROMA;Chroma compensation
|
TP_LOCALLAB_EXPCHROMA;Chroma compensation
|
||||||
@ -3182,7 +3184,7 @@ TP_LOCALLAB_JZTARGET_EV;Viewing Mean luminance (Yb%)
|
|||||||
TP_LOCALLAB_JZTHRHCIE;Threshold Chroma for Jz(Hz)
|
TP_LOCALLAB_JZTHRHCIE;Threshold Chroma for Jz(Hz)
|
||||||
TP_LOCALLAB_JZWAVEXP;Wavelet Jz
|
TP_LOCALLAB_JZWAVEXP;Wavelet Jz
|
||||||
TP_LOCALLAB_LABBLURM;Blur Mask
|
TP_LOCALLAB_LABBLURM;Blur Mask
|
||||||
TP_LOCALLAB_LABEL;Local Adjustments
|
TP_LOCALLAB_LABEL;Selective Editing
|
||||||
TP_LOCALLAB_LABGRID;Color correction grid
|
TP_LOCALLAB_LABGRID;Color correction grid
|
||||||
TP_LOCALLAB_LABGRIDMERG;Background
|
TP_LOCALLAB_LABGRIDMERG;Background
|
||||||
TP_LOCALLAB_LABGRID_VALUES;High(a)=%1 High(b)=%2\nLow(a)=%3 Low(b)=%4
|
TP_LOCALLAB_LABGRID_VALUES;High(a)=%1 High(b)=%2\nLow(a)=%3 Low(b)=%4
|
||||||
|
@ -1131,6 +1131,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
//std::vector<LocallabListener::locallabRef> locallref;
|
//std::vector<LocallabListener::locallabRef> locallref;
|
||||||
std::vector<LocallabListener::locallabRetiMinMax> locallretiminmax;
|
std::vector<LocallabListener::locallabRetiMinMax> locallretiminmax;
|
||||||
std::vector<LocallabListener::locallabcieLC> locallcielc;
|
std::vector<LocallabListener::locallabcieLC> locallcielc;
|
||||||
|
std::vector<LocallabListener::locallabsetLC> locallsetlc;
|
||||||
std::vector<LocallabListener::locallabcieSIG> locallciesig;
|
std::vector<LocallabListener::locallabcieSIG> locallciesig;
|
||||||
huerefs.resize(params->locallab.spots.size());
|
huerefs.resize(params->locallab.spots.size());
|
||||||
huerefblurs.resize(params->locallab.spots.size());
|
huerefblurs.resize(params->locallab.spots.size());
|
||||||
@ -1154,6 +1155,11 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
lumarefp = new float[sizespot];
|
lumarefp = new float[sizespot];
|
||||||
float *fabrefp = nullptr;
|
float *fabrefp = nullptr;
|
||||||
fabrefp = new float[sizespot];
|
fabrefp = new float[sizespot];
|
||||||
|
//new controls mainfp and scopefp with multi spots
|
||||||
|
int *mainfp = nullptr;
|
||||||
|
mainfp = new int[sizespot];
|
||||||
|
int *scopefp = nullptr;
|
||||||
|
scopefp = new int[sizespot];
|
||||||
|
|
||||||
for (int sp = 0; sp < (int)params->locallab.spots.size(); sp++) {
|
for (int sp = 0; sp < (int)params->locallab.spots.size(); sp++) {
|
||||||
|
|
||||||
@ -1164,7 +1170,9 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
if (params->locallab.spots.at(sp).equilret && params->locallab.spots.at(sp).expreti) {
|
if (params->locallab.spots.at(sp).equilret && params->locallab.spots.at(sp).expreti) {
|
||||||
savenormreti.reset(new LabImage(*oprevl, true));
|
savenormreti.reset(new LabImage(*oprevl, true));
|
||||||
}
|
}
|
||||||
|
if(params->locallab.spots.at(sp).colorscope != 30) {//compatibility with old method in controlspotpanel to change scope - default value 30
|
||||||
|
scopefp[sp]= params->locallab.spots.at(sp).colorscope;
|
||||||
|
}
|
||||||
// Set local curves of current spot to LUT
|
// Set local curves of current spot to LUT
|
||||||
locRETgainCurve.Set(params->locallab.spots.at(sp).localTgaincurve);
|
locRETgainCurve.Set(params->locallab.spots.at(sp).localTgaincurve);
|
||||||
locRETtransCurve.Set(params->locallab.spots.at(sp).localTtranscurve);
|
locRETtransCurve.Set(params->locallab.spots.at(sp).localTtranscurve);
|
||||||
@ -1537,7 +1545,8 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
locciesig.contsigq = contsig;
|
locciesig.contsigq = contsig;
|
||||||
locciesig.lightsigq = lightsig;
|
locciesig.lightsigq = lightsig;
|
||||||
locallciesig.push_back(locciesig);
|
locallciesig.push_back(locciesig);
|
||||||
|
|
||||||
|
|
||||||
// Recalculate references after
|
// Recalculate references after
|
||||||
if (params->locallab.spots.at(sp).spotMethod == "exc") {
|
if (params->locallab.spots.at(sp).spotMethod == "exc") {
|
||||||
ipf.calc_ref(sp, reserv.get(), reserv.get(), 0, 0, pW, pH, scale, huerefblu, chromarefblu, lumarefblu, huer, chromar, lumar, sobeler, avg, locwavCurveden, locwavdenutili);
|
ipf.calc_ref(sp, reserv.get(), reserv.get(), 0, 0, pW, pH, scale, huerefblu, chromarefblu, lumarefblu, huer, chromar, lumar, sobeler, avg, locwavCurveden, locwavdenutili);
|
||||||
@ -1555,6 +1564,50 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// new used linked to global and scope
|
||||||
|
mainfp[sp] = 0;
|
||||||
|
if (params->locallab.spots.at(sp).spotMethod == "main") {
|
||||||
|
mainfp[sp] = 3;
|
||||||
|
} else if (params->locallab.spots.at(sp).spotMethod == "full") {
|
||||||
|
mainfp[sp] = 2;
|
||||||
|
}
|
||||||
|
//keep using tools
|
||||||
|
bool iscolor = params->locallab.spots.at(sp).expcolor;
|
||||||
|
bool issh = params->locallab.spots.at(sp).expshadhigh;
|
||||||
|
bool isvib = params->locallab.spots.at(sp).expvibrance;
|
||||||
|
bool isexpos = params->locallab.spots.at(sp).expexpose;
|
||||||
|
bool issoft = params->locallab.spots.at(sp).expsoft;
|
||||||
|
bool isblur = params->locallab.spots.at(sp).expblur;
|
||||||
|
bool istom = params->locallab.spots.at(sp).exptonemap;
|
||||||
|
bool isret = params->locallab.spots.at(sp).expreti;
|
||||||
|
bool issharp = params->locallab.spots.at(sp).expsharp;
|
||||||
|
bool iscont = params->locallab.spots.at(sp).expcontrast;
|
||||||
|
bool iscbdl = params->locallab.spots.at(sp).expcbdl;
|
||||||
|
bool islog = params->locallab.spots.at(sp).explog;
|
||||||
|
bool ismas = params->locallab.spots.at(sp).expmask;
|
||||||
|
bool iscie = params->locallab.spots.at(sp).expcie;
|
||||||
|
bool isset = iscolor || issh || isvib;
|
||||||
|
|
||||||
|
//set select spot settings
|
||||||
|
LocallabListener::locallabsetLC locsetlc;
|
||||||
|
locsetlc.mainf = mainfp[sp];
|
||||||
|
locsetlc.iscolo = iscolor;
|
||||||
|
locsetlc.iss = issh;
|
||||||
|
locsetlc.isvi = isvib;
|
||||||
|
locsetlc.isexpo = isexpos;
|
||||||
|
locsetlc.issof = issoft;
|
||||||
|
locsetlc.isblu = isblur;
|
||||||
|
locsetlc.isto = istom;
|
||||||
|
locsetlc.isre = isret;
|
||||||
|
locsetlc.isshar = issharp;
|
||||||
|
locsetlc.iscon = iscont;
|
||||||
|
locsetlc.iscbd = iscbdl;
|
||||||
|
locsetlc.islo = islog;
|
||||||
|
locsetlc.isma = ismas;
|
||||||
|
locsetlc.isci = iscie;
|
||||||
|
locallsetlc.push_back(locsetlc);
|
||||||
|
|
||||||
if (locallListener) {
|
if (locallListener) {
|
||||||
locallListener->refChanged2(huerefp, chromarefp, lumarefp, fabrefp, params->locallab.selspot);
|
locallListener->refChanged2(huerefp, chromarefp, lumarefp, fabrefp, params->locallab.selspot);
|
||||||
locallListener->minmaxChanged(locallretiminmax, params->locallab.selspot);
|
locallListener->minmaxChanged(locallretiminmax, params->locallab.selspot);
|
||||||
@ -1562,6 +1615,18 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
locallListener->cieChanged(locallcielc,params->locallab.selspot);
|
locallListener->cieChanged(locallcielc,params->locallab.selspot);
|
||||||
}
|
}
|
||||||
locallListener->sigChanged(locallciesig,params->locallab.selspot);
|
locallListener->sigChanged(locallciesig,params->locallab.selspot);
|
||||||
|
if(params->locallab.spots.at(sp).colorscope != 30) {//compatibility with old method in controlspotpanel
|
||||||
|
locallListener->scopeChangedcol(scopefp[sp], params->locallab.selspot, iscolor);
|
||||||
|
locallListener->scopeChangedsh(scopefp[sp], params->locallab.selspot, issh);
|
||||||
|
locallListener->scopeChangedvib(scopefp[sp], params->locallab.selspot, isvib);
|
||||||
|
locallListener->scopeChangedset(scopefp[sp], params->locallab.selspot, isset);
|
||||||
|
params->locallab.spots.at(sp).colorscope = 30;
|
||||||
|
}
|
||||||
|
// if (mainfp[sp] >= 0) {//minimize call to idle register
|
||||||
|
//used by Global fullimage.
|
||||||
|
locallListener->maiChanged(locallsetlc,params->locallab.selspot);
|
||||||
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1570,7 +1635,8 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
delete [] chromarefp;
|
delete [] chromarefp;
|
||||||
delete [] lumarefp;
|
delete [] lumarefp;
|
||||||
delete [] fabrefp;
|
delete [] fabrefp;
|
||||||
|
delete [] mainfp;
|
||||||
|
delete [] scopefp;
|
||||||
ipf.lab2rgb(*nprevl, *oprevi, params->icm.workingProfile);
|
ipf.lab2rgb(*nprevl, *oprevi, params->icm.workingProfile);
|
||||||
//*************************************************************
|
//*************************************************************
|
||||||
// end locallab
|
// end locallab
|
||||||
|
@ -952,6 +952,8 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
|
|||||||
lp.fullim = 1;
|
lp.fullim = 1;
|
||||||
} else if (locallab.spots.at(sp).spotMethod == "full") {
|
} else if (locallab.spots.at(sp).spotMethod == "full") {
|
||||||
lp.fullim = 2;
|
lp.fullim = 2;
|
||||||
|
} else if (locallab.spots.at(sp).spotMethod == "main") {//new Global
|
||||||
|
lp.fullim = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
lp.fftColorMask = locallab.spots.at(sp).fftColorMask;
|
lp.fftColorMask = locallab.spots.at(sp).fftColorMask;
|
||||||
@ -1097,6 +1099,8 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
|
|||||||
lp.excmet = 1;
|
lp.excmet = 1;
|
||||||
} else if (locallab.spots.at(sp).spotMethod == "full") {
|
} else if (locallab.spots.at(sp).spotMethod == "full") {
|
||||||
lp.excmet = 2;
|
lp.excmet = 2;
|
||||||
|
} else if (locallab.spots.at(sp).spotMethod == "main") {
|
||||||
|
lp.excmet = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (locallab.spots.at(sp).merMethod == "mone") {
|
if (locallab.spots.at(sp).merMethod == "mone") {
|
||||||
@ -1852,10 +1856,10 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
|
|||||||
lp.blwh = locallab.spots.at(sp).blwh;
|
lp.blwh = locallab.spots.at(sp).blwh;
|
||||||
lp.senscolor = (int) locallab.spots.at(sp).colorscope;
|
lp.senscolor = (int) locallab.spots.at(sp).colorscope;
|
||||||
//replace scope color vibrance shadows
|
//replace scope color vibrance shadows
|
||||||
lp.sens = lp.senscolor;
|
/* lp.sens = lp.senscolor;
|
||||||
lp.sensv = lp.senscolor;
|
lp.sensv = lp.senscolor;
|
||||||
lp.senshs = lp.senscolor;
|
lp.senshs = lp.senscolor;
|
||||||
|
*/
|
||||||
lp.mLjz = locallab.spots.at(sp).clarilresjz / 100.0;
|
lp.mLjz = locallab.spots.at(sp).clarilresjz / 100.0;
|
||||||
lp.mCjz = locallab.spots.at(sp).claricresjz / 100.0;
|
lp.mCjz = locallab.spots.at(sp).claricresjz / 100.0;
|
||||||
lp.softrjz = locallab.spots.at(sp).clarisoftjz;
|
lp.softrjz = locallab.spots.at(sp).clarisoftjz;
|
||||||
@ -4947,7 +4951,10 @@ void ImProcFunctions::DeNoise_Local(int call, const struct local_params& lp, Lab
|
|||||||
//simple algo , perhaps we can improve as the others, but noise is here and not good for hue detection
|
//simple algo , perhaps we can improve as the others, but noise is here and not good for hue detection
|
||||||
// BENCHFUN
|
// BENCHFUN
|
||||||
lumaref *= 327.68f;
|
lumaref *= 327.68f;
|
||||||
const float ach = lp.trans / 100.f;
|
float ach = lp.trans / 100.f;
|
||||||
|
if(lp.fullim == 3 ) {//disabled transit
|
||||||
|
ach = 1.f;
|
||||||
|
}
|
||||||
|
|
||||||
const float factnoise1 = 1.f + (lp.noisecf) / 500.f;
|
const float factnoise1 = 1.f + (lp.noisecf) / 500.f;
|
||||||
const float factnoise2 = 1.f + (lp.noisecc) / 500.f;
|
const float factnoise2 = 1.f + (lp.noisecc) / 500.f;
|
||||||
@ -5024,6 +5031,9 @@ void ImProcFunctions::DeNoise_Local(int call, const struct local_params& lp, Lab
|
|||||||
} else { /*if (lp.shapmet == 1)*/
|
} else { /*if (lp.shapmet == 1)*/
|
||||||
calcTransitionrect(lox, loy, ach, lp, zone, localFactor);
|
calcTransitionrect(lox, loy, ach, lp, zone, localFactor);
|
||||||
}
|
}
|
||||||
|
if(lp.fullim == 3 ) {//disabled scope
|
||||||
|
localFactor = 1.f;
|
||||||
|
}
|
||||||
|
|
||||||
if (zone == 0) { // outside selection and outside transition zone => no effect, keep original values
|
if (zone == 0) { // outside selection and outside transition zone => no effect, keep original values
|
||||||
continue;
|
continue;
|
||||||
@ -5058,6 +5068,9 @@ void ImProcFunctions::DeNoise_Local(int call, const struct local_params& lp, Lab
|
|||||||
difa = tmp1.a[y][x] - original->a[y][x];
|
difa = tmp1.a[y][x] - original->a[y][x];
|
||||||
difb = tmp1.b[y][x] - original->b[y][x];
|
difb = tmp1.b[y][x] - original->b[y][x];
|
||||||
}
|
}
|
||||||
|
if(lp.fullim == 3 ) {//disable scope
|
||||||
|
reducdEL = reducdEa = reducdEb = 1.f;
|
||||||
|
}
|
||||||
|
|
||||||
difL *= localFactor * reducdEL;
|
difL *= localFactor * reducdEL;
|
||||||
difa *= localFactor * reducdEa;
|
difa *= localFactor * reducdEa;
|
||||||
@ -5103,7 +5116,10 @@ void ImProcFunctions::DeNoise_Local2(const struct local_params& lp, LabImage* or
|
|||||||
|
|
||||||
|
|
||||||
lumaref *= 327.68f;
|
lumaref *= 327.68f;
|
||||||
const float ach = lp.trans / 100.f;
|
float ach = lp.trans / 100.f;
|
||||||
|
if(lp.fullim == 3 ) {//disabled transit
|
||||||
|
ach = 1.f;
|
||||||
|
}
|
||||||
|
|
||||||
const float factnoise1 = 1.f + (lp.noisecf) / 500.f;
|
const float factnoise1 = 1.f + (lp.noisecf) / 500.f;
|
||||||
const float factnoise2 = 1.f + (lp.noisecc) / 500.f;
|
const float factnoise2 = 1.f + (lp.noisecc) / 500.f;
|
||||||
@ -5180,6 +5196,9 @@ void ImProcFunctions::DeNoise_Local2(const struct local_params& lp, LabImage* or
|
|||||||
} else { /*if (lp.shapmet == 1)*/
|
} else { /*if (lp.shapmet == 1)*/
|
||||||
calcTransitionrect(lox, loy, ach, lp, zone, localFactor);
|
calcTransitionrect(lox, loy, ach, lp, zone, localFactor);
|
||||||
}
|
}
|
||||||
|
if(lp.fullim == 3 ) {//disabled scope
|
||||||
|
localFactor = 1.f;
|
||||||
|
}
|
||||||
|
|
||||||
if (zone == 0) { // outside selection and outside transition zone => no effect, keep original values
|
if (zone == 0) { // outside selection and outside transition zone => no effect, keep original values
|
||||||
continue;
|
continue;
|
||||||
@ -5208,6 +5227,9 @@ void ImProcFunctions::DeNoise_Local2(const struct local_params& lp, LabImage* or
|
|||||||
difL = tmp1.L[y - ystart][x - xstart] - original->L[y][x];
|
difL = tmp1.L[y - ystart][x - xstart] - original->L[y][x];
|
||||||
difa = tmp1.a[y - ystart][x - xstart] - original->a[y][x];
|
difa = tmp1.a[y - ystart][x - xstart] - original->a[y][x];
|
||||||
difb = tmp1.b[y - ystart][x - xstart] - original->b[y][x];
|
difb = tmp1.b[y - ystart][x - xstart] - original->b[y][x];
|
||||||
|
if(lp.fullim == 3 ) {//disable scope
|
||||||
|
reducdEL = reducdEa = reducdEb = 1.f;
|
||||||
|
}
|
||||||
|
|
||||||
difL *= localFactor * reducdEL;
|
difL *= localFactor * reducdEL;
|
||||||
difa *= localFactor * reducdEa;
|
difa *= localFactor * reducdEa;
|
||||||
@ -5297,7 +5319,10 @@ void ImProcFunctions::InverseReti_Local(const struct local_params & lp, const fl
|
|||||||
|
|
||||||
float rL = origblur->L[y][x] / 327.68f;
|
float rL = origblur->L[y][x] / 327.68f;
|
||||||
float dE = std::sqrt(kab * SQR(refa - origblur->a[y][x] / 327.68f) + kab * SQR(refb - origblur->b[y][x] / 327.68f) + kL * SQR(lumaref - rL));
|
float dE = std::sqrt(kab * SQR(refa - origblur->a[y][x] / 327.68f) + kab * SQR(refb - origblur->b[y][x] / 327.68f) + kL * SQR(lumaref - rL));
|
||||||
const float reducdE = calcreducdE(dE, maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, lp.sensh);
|
float reducdE = calcreducdE(dE, maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, lp.sensh);
|
||||||
|
if(lp.fullim == 3 ) {//disable scope
|
||||||
|
reducdE = 1.f;
|
||||||
|
}
|
||||||
|
|
||||||
switch (zone) {
|
switch (zone) {
|
||||||
case 0: { // outside selection and outside transition zone => full effect, no transition
|
case 0: { // outside selection and outside transition zone => full effect, no transition
|
||||||
@ -5446,6 +5471,10 @@ void ImProcFunctions::InverseBlurNoise_Local(LabImage * originalmask, const stru
|
|||||||
float huedelta2 = abdelta2 - chrodelta2;
|
float huedelta2 = abdelta2 - chrodelta2;
|
||||||
float dE = std::sqrt(kab * (kch * chrodelta2 + kH * huedelta2) + kL * SQR(refL - maskptr->L[y][x]));
|
float dE = std::sqrt(kab * (kch * chrodelta2 + kH * huedelta2) + kL * SQR(refL - maskptr->L[y][x]));
|
||||||
reducdE = calcreducdE(dE, maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, lp.sensbn);
|
reducdE = calcreducdE(dE, maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, lp.sensbn);
|
||||||
|
if(lp.fullim == 3 ) {//disabled scope
|
||||||
|
reducdE = 1.f;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (zone) {
|
switch (zone) {
|
||||||
@ -5795,13 +5824,19 @@ static void blendmask(const local_params& lp, int xstart, int ystart, int cx, in
|
|||||||
int zone;
|
int zone;
|
||||||
|
|
||||||
float localFactor = 1.f;
|
float localFactor = 1.f;
|
||||||
const float achm = lp.trans / 100.f;
|
float achm = lp.trans / 100.f;
|
||||||
|
if(lp.fullim == 3 ) {//disable transit
|
||||||
|
achm = 1.f;
|
||||||
|
}
|
||||||
|
|
||||||
if (lp.shapmet == 0) {
|
if (lp.shapmet == 0) {
|
||||||
calcTransition(lox, loy, achm, lp, zone, localFactor);
|
calcTransition(lox, loy, achm, lp, zone, localFactor);
|
||||||
} else { /*if (lp.shapmet == 1)*/
|
} else { /*if (lp.shapmet == 1)*/
|
||||||
calcTransitionrect(lox, loy, achm, lp, zone, localFactor);
|
calcTransitionrect(lox, loy, achm, lp, zone, localFactor);
|
||||||
}
|
}
|
||||||
|
if(lp.fullim == 3 ) {//disable scope
|
||||||
|
localFactor = 1.f;
|
||||||
|
}
|
||||||
|
|
||||||
if (inv == 0) {
|
if (inv == 0) {
|
||||||
if (zone > 0) {
|
if (zone > 0) {
|
||||||
@ -8033,7 +8068,7 @@ void ImProcFunctions::transit_shapedetect(int senstype, const LabImage * bufexpo
|
|||||||
transformed->L[y][x] = CLIP(12000.f + difL);
|
transformed->L[y][x] = CLIP(12000.f + difL);
|
||||||
transformed->a[y][x] = clipC(difa);
|
transformed->a[y][x] = clipC(difa);
|
||||||
transformed->b[y][x] = clipC(difb);
|
transformed->b[y][x] = clipC(difb);
|
||||||
} else if (previewcb || previewtm || lp.prevdE) {
|
} else if (/* previewcb ||*/ previewtm || lp.prevdE) {
|
||||||
if (std::fabs(difb) < 500.f) {
|
if (std::fabs(difb) < 500.f) {
|
||||||
difb += difL;
|
difb += difL;
|
||||||
}
|
}
|
||||||
@ -8651,7 +8686,7 @@ void optfft(int N_fftwsize, int &bfh, int &bfw, int &bfhr, int &bfwr, struct loc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fulima == 2) { // if full image, the ftsizeH and ftsizeW is a bit larger (about 10 to 200 pixels) than the image dimensions so that it is fully processed (consumes a bit more resources)
|
if(fulima >= 2) {// if full image, the ftsizeH and ftsizeW is a bit larger (about 10 to 200 pixels) than the image dimensions so that it is fully processed (consumes a bit more resources)
|
||||||
for (int ftfu = 0; ftfu < N_fftwsize; ftfu++) { //find best values
|
for (int ftfu = 0; ftfu < N_fftwsize; ftfu++) { //find best values
|
||||||
if (fftw_size[ftfu] <= (H + deltah)) {
|
if (fftw_size[ftfu] <= (H + deltah)) {
|
||||||
ftsizeH = fftw_size[ftfu];
|
ftsizeH = fftw_size[ftfu];
|
||||||
@ -8961,16 +8996,16 @@ void ImProcFunctions::transit_shapedetect2(int sp, float meantm, float stdtm, in
|
|||||||
|
|
||||||
const bool masshow = ((lp.showmask_met == 1) && senstype == 20);
|
const bool masshow = ((lp.showmask_met == 1) && senstype == 20);
|
||||||
|
|
||||||
const bool previewvib = ((lp.showmaskvibmet == 4) && senstype == 2);
|
const bool previewvib = ((lp.showmaskvibmet == 4) && senstype == 2 && lp.fullim != 3);
|
||||||
const bool previewexp = ((lp.showmaskexpmet == 5) && senstype == 1);
|
const bool previewexp = ((lp.showmaskexpmet == 5) && senstype == 1 && lp.fullim != 3);
|
||||||
const bool previewcol = ((lp.showmaskcolmet == 5) && senstype == 0);
|
const bool previewcol = ((lp.showmaskcolmet == 5) && senstype == 0 && lp.fullim != 3);
|
||||||
const bool previewSH = ((lp.showmaskSHmet == 4) && senstype == 9);
|
const bool previewSH = ((lp.showmaskSHmet == 4) && senstype == 9 && lp.fullim != 3);
|
||||||
const bool previewtm = ((lp.showmasktmmet == 4) && senstype == 8);
|
const bool previewtm = ((lp.showmasktmmet == 4) && senstype == 8 && lp.fullim != 3);
|
||||||
const bool previewlc = ((lp.showmasklcmet == 4) && senstype == 10);
|
const bool previewlc = ((lp.showmasklcmet == 4) && senstype == 10 && lp.fullim != 3);
|
||||||
const bool previeworig = ((lp.showmasksoftmet == 6) && senstype == 3 && lp.softmet == 1);
|
const bool previeworig = ((lp.showmasksoftmet == 6) && senstype == 3 && lp.softmet == 1);
|
||||||
const bool previewmas = ((lp.showmask_met == 3) && senstype == 20);
|
const bool previewmas = ((lp.showmask_met == 3) && senstype == 20 && lp.fullim != 3);
|
||||||
const bool previewlog = ((lp.showmasklogmet == 4) && senstype == 11);
|
const bool previewlog = ((lp.showmasklogmet == 4) && senstype == 11 && lp.fullim != 3);
|
||||||
const bool previewcie = ((lp.showmaskciemet == 4) && senstype == 31);
|
const bool previewcie = ((lp.showmaskciemet == 4) && senstype == 31 && lp.fullim != 3);
|
||||||
|
|
||||||
float radius = 3.f / sk;
|
float radius = 3.f / sk;
|
||||||
|
|
||||||
@ -9175,7 +9210,10 @@ void ImProcFunctions::transit_shapedetect2(int sp, float meantm, float stdtm, in
|
|||||||
const int lox = x + xstart + cx;
|
const int lox = x + xstart + cx;
|
||||||
int zone;
|
int zone;
|
||||||
float localFactor = 1.f;
|
float localFactor = 1.f;
|
||||||
const float achm = lp.trans / 100.f;
|
float achm = lp.trans / 100.f;
|
||||||
|
if(lp.fullim == 3 ) {//disable transit
|
||||||
|
achm = 1.f;
|
||||||
|
}
|
||||||
|
|
||||||
//calculate transition
|
//calculate transition
|
||||||
if (lp.shapmet == 0) {
|
if (lp.shapmet == 0) {
|
||||||
@ -9183,6 +9221,9 @@ void ImProcFunctions::transit_shapedetect2(int sp, float meantm, float stdtm, in
|
|||||||
} else { /*if (lp.shapmet == 1)*/
|
} else { /*if (lp.shapmet == 1)*/
|
||||||
calcTransitionrect(lox, loy, achm, lp, zone, localFactor);
|
calcTransitionrect(lox, loy, achm, lp, zone, localFactor);
|
||||||
}
|
}
|
||||||
|
if(lp.fullim == 3 ) {//disable scope
|
||||||
|
localFactor = 1.f;
|
||||||
|
}
|
||||||
|
|
||||||
// float hueh = 0;
|
// float hueh = 0;
|
||||||
#ifdef __SSE2__
|
#ifdef __SSE2__
|
||||||
@ -9221,6 +9262,9 @@ void ImProcFunctions::transit_shapedetect2(int sp, float meantm, float stdtm, in
|
|||||||
const float dE = rsob + std::sqrt(kab * (kch * chrodelta2 + kH * huedelta2) + kL * SQR(refL - maskptr->L[y][x]));
|
const float dE = rsob + std::sqrt(kab * (kch * chrodelta2 + kH * huedelta2) + kL * SQR(refL - maskptr->L[y][x]));
|
||||||
//reduction action with deltaE
|
//reduction action with deltaE
|
||||||
float reducdE = calcreducdE(dE, maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, varsens);
|
float reducdE = calcreducdE(dE, maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, varsens);
|
||||||
|
if(lp.fullim == 3 ) {//disable scope
|
||||||
|
reducdE = 1.f;
|
||||||
|
}
|
||||||
if ((senstype == 11 || ( senstype == 31 && lp.islogcie)) && (varsens >= limvarsens)) {
|
if ((senstype == 11 || ( senstype == 31 && lp.islogcie)) && (varsens >= limvarsens)) {
|
||||||
int maxvarsens = 90;//arbitrary value to get maximum incidence
|
int maxvarsens = 90;//arbitrary value to get maximum incidence
|
||||||
float ared = (1.f - reducdE) / (maxvarsens - limvarsens);
|
float ared = (1.f - reducdE) / (maxvarsens - limvarsens);
|
||||||
@ -9231,6 +9275,7 @@ void ImProcFunctions::transit_shapedetect2(int sp, float meantm, float stdtm, in
|
|||||||
if(varsens == 100.f) {
|
if(varsens == 100.f) {
|
||||||
reducdE = 1.f;
|
reducdE = 1.f;
|
||||||
}
|
}
|
||||||
|
|
||||||
float cli = (bufexpfin->L[y][x] - bufexporig->L[y][x]);
|
float cli = (bufexpfin->L[y][x] - bufexporig->L[y][x]);
|
||||||
float cla = (bufexpfin->a[y][x] - bufexporig->a[y][x]);
|
float cla = (bufexpfin->a[y][x] - bufexporig->a[y][x]);
|
||||||
float clb = (bufexpfin->b[y][x] - bufexporig->b[y][x]);
|
float clb = (bufexpfin->b[y][x] - bufexporig->b[y][x]);
|
||||||
@ -15341,7 +15386,11 @@ void ImProcFunctions::Lab_Local(
|
|||||||
for (int y = 0; y < transformed->H ; y++)
|
for (int y = 0; y < transformed->H ; y++)
|
||||||
for (int x = 0; x < transformed->W; x++) {
|
for (int x = 0; x < transformed->W; x++) {
|
||||||
float dE = std::sqrt(SQR(refa - bufreti->a[y][x] / 327.68f) + SQR(refb - bufreti->b[y][x] / 327.68f) + SQR(static_cast<float>(lumaref) - bufreti->b[y][x] / 327.68f));
|
float dE = std::sqrt(SQR(refa - bufreti->a[y][x] / 327.68f) + SQR(refb - bufreti->b[y][x] / 327.68f) + SQR(static_cast<float>(lumaref) - bufreti->b[y][x] / 327.68f));
|
||||||
const float reducdE = calcreducdE(dE, maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sensibefore);
|
float reducdE = calcreducdE(dE, maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sensibefore);
|
||||||
|
if(lp.fullim == 3 ) {//disable scope
|
||||||
|
reducdE = 1.f;
|
||||||
|
}
|
||||||
|
|
||||||
reducDE[y][x] = clipDE(reducdE);
|
reducDE[y][x] = clipDE(reducdE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -15702,7 +15751,11 @@ void ImProcFunctions::Lab_Local(
|
|||||||
for (int y = ystart; y < yend ; y++) {
|
for (int y = ystart; y < yend ; y++) {
|
||||||
for (int x = xstart; x < xend; x++) {
|
for (int x = xstart; x < xend; x++) {
|
||||||
const float dE = std::sqrt(SQR(refa - bufreti->a[y - ystart][x - xstart] / 327.68f) + SQR(refb - bufreti->b[y - ystart][x - xstart] / 327.68f) + SQR(static_cast<float>(lumaref) - bufreti->b[y - ystart][x - xstart] / 327.68f));
|
const float dE = std::sqrt(SQR(refa - bufreti->a[y - ystart][x - xstart] / 327.68f) + SQR(refb - bufreti->b[y - ystart][x - xstart] / 327.68f) + SQR(static_cast<float>(lumaref) - bufreti->b[y - ystart][x - xstart] / 327.68f));
|
||||||
const float reducdE = calcreducdE(dE, maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sensibefore);
|
float reducdE = calcreducdE(dE, maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sensibefore);
|
||||||
|
if(lp.fullim == 3 ) {//disable scope
|
||||||
|
reducdE = 1.f;
|
||||||
|
}
|
||||||
|
|
||||||
reducDE[y - ystart][x - xstart] = clipDE(reducdE);
|
reducDE[y - ystart][x - xstart] = clipDE(reducdE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -17480,7 +17533,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
int yEn = lp.yc + lp.ly;
|
int yEn = lp.yc + lp.ly;
|
||||||
int xEn = lp.xc + lp.lx;
|
int xEn = lp.xc + lp.lx;
|
||||||
|
|
||||||
if (lp.fullim == 2) { //limit sharpening to image dimension...no more...to avoid a long treatment
|
if(lp.fullim >= 2) {//full-iamge and global - limit sharpening to image dimension...no more...to avoid a long treatment
|
||||||
begy = 0;
|
begy = 0;
|
||||||
begx = 0;
|
begx = 0;
|
||||||
yEn = original->H;
|
yEn = original->H;
|
||||||
|
@ -3038,7 +3038,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
|||||||
labgridAHighmerg(-3500.0),
|
labgridAHighmerg(-3500.0),
|
||||||
labgridBHighmerg(-4600.0),
|
labgridBHighmerg(-4600.0),
|
||||||
strengthgrid(30),
|
strengthgrid(30),
|
||||||
sensi(15),
|
sensi(30),
|
||||||
structcol(0),
|
structcol(0),
|
||||||
strcol(0.),
|
strcol(0.),
|
||||||
strcolab(0.),
|
strcolab(0.),
|
||||||
@ -3384,7 +3384,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
|||||||
shadows(0),
|
shadows(0),
|
||||||
s_tonalwidth(30),
|
s_tonalwidth(30),
|
||||||
sh_radius(40),
|
sh_radius(40),
|
||||||
sensihs(15),
|
sensihs(30),
|
||||||
enaSHMask(false),
|
enaSHMask(false),
|
||||||
CCmaskSHcurve{
|
CCmaskSHcurve{
|
||||||
static_cast<double>(FCT_MinMaxCPoints),
|
static_cast<double>(FCT_MinMaxCPoints),
|
||||||
@ -3471,7 +3471,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
|||||||
protectskins(false),
|
protectskins(false),
|
||||||
avoidcolorshift(true),
|
avoidcolorshift(true),
|
||||||
pastsattog(true),
|
pastsattog(true),
|
||||||
sensiv(15),
|
sensiv(30),
|
||||||
skintonescurve{
|
skintonescurve{
|
||||||
static_cast<double>(DCT_Linear)
|
static_cast<double>(DCT_Linear)
|
||||||
},
|
},
|
||||||
@ -4768,9 +4768,80 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
|||||||
0.35
|
0.35
|
||||||
},
|
},
|
||||||
csthresholdcie(0, 0, 6, 5, false)
|
csthresholdcie(0, 0, 6, 5, false)
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
|
// init settings with Preferences / options : must be followed by call to spotMethodChanged in controlspotpanel.cc (idle_register)
|
||||||
|
// new values default with different SpotMethod.
|
||||||
|
|
||||||
|
if(options.spotmet == 3) {//global
|
||||||
|
spotMethod = "main";
|
||||||
|
loc = {3000, 3000, 3000, 3000};
|
||||||
|
transit =100.;
|
||||||
|
shape = "RECT";
|
||||||
|
|
||||||
|
} else if(options.spotmet == 2) {//full image
|
||||||
|
spotMethod = "full";
|
||||||
|
loc = {3000, 3000, 3000, 3000};
|
||||||
|
transit =100.;
|
||||||
|
shape = "RECT";
|
||||||
|
sensi = 30;
|
||||||
|
sensiex = 60;
|
||||||
|
sensihs = 30;
|
||||||
|
sensiv = 30;
|
||||||
|
sensisf = 30;
|
||||||
|
sensibn = 40;
|
||||||
|
sensiden = 60;
|
||||||
|
sensitm = 60;
|
||||||
|
sensih = 60;
|
||||||
|
sensisha = 40;
|
||||||
|
sensilc = 60;
|
||||||
|
sensicb = 60;
|
||||||
|
sensilog = 60;
|
||||||
|
sensimask = 60;
|
||||||
|
sensicie = 60;
|
||||||
|
|
||||||
|
} else if(options.spotmet == 1) {//exclude
|
||||||
|
spotMethod = "exc";
|
||||||
|
shape = "ELI";
|
||||||
|
loc = {150, 150, 150, 150};
|
||||||
|
transit= 60.;
|
||||||
|
sensi = 30;
|
||||||
|
sensiex = 60;
|
||||||
|
sensihs = 30;
|
||||||
|
sensiv = 30;
|
||||||
|
sensibn = 40;
|
||||||
|
sensiden = 60;
|
||||||
|
sensitm = 60;
|
||||||
|
sensih = 60;
|
||||||
|
sensisha = 40;
|
||||||
|
sensilc = 60;
|
||||||
|
sensicb = 60;
|
||||||
|
sensilog = 60;
|
||||||
|
sensimask = 60;
|
||||||
|
sensicie = 60;
|
||||||
|
|
||||||
|
} else if(options.spotmet == 0) {//normal
|
||||||
|
spotMethod = "norm";
|
||||||
|
shape = "ELI";
|
||||||
|
loc = {150, 150, 150, 150};
|
||||||
|
transit= 60.;
|
||||||
|
sensi = 30;
|
||||||
|
sensiex = 60;
|
||||||
|
sensihs = 30;
|
||||||
|
sensiv = 30;
|
||||||
|
sensibn = 40;
|
||||||
|
sensiden = 60;
|
||||||
|
sensitm = 60;
|
||||||
|
sensih = 60;
|
||||||
|
sensisha = 40;
|
||||||
|
sensilc = 60;
|
||||||
|
sensicb = 60;
|
||||||
|
sensilog = 60;
|
||||||
|
sensimask = 60;
|
||||||
|
sensicie = 60;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
||||||
|
@ -451,6 +451,25 @@ public:
|
|||||||
int primlc;
|
int primlc;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//select spot settings
|
||||||
|
struct locallabsetLC {
|
||||||
|
int mainf;
|
||||||
|
bool iscolo;
|
||||||
|
bool iss;
|
||||||
|
bool isvi;
|
||||||
|
bool isexpo;
|
||||||
|
bool issof;
|
||||||
|
bool isblu;
|
||||||
|
bool isto;
|
||||||
|
bool isre;
|
||||||
|
bool isshar;
|
||||||
|
bool iscon;
|
||||||
|
bool iscbd;
|
||||||
|
bool islo;
|
||||||
|
bool isma;
|
||||||
|
bool isci;
|
||||||
|
};
|
||||||
|
|
||||||
struct locallabcieSIG {
|
struct locallabcieSIG {
|
||||||
double contsigq;
|
double contsigq;
|
||||||
double lightsigq;
|
double lightsigq;
|
||||||
@ -461,9 +480,15 @@ public:
|
|||||||
virtual void minmaxChanged(const std::vector<locallabRetiMinMax> &minmax, int selspot) = 0;
|
virtual void minmaxChanged(const std::vector<locallabRetiMinMax> &minmax, int selspot) = 0;
|
||||||
virtual void denChanged(const std::vector<locallabDenoiseLC> &denlc, int selspot) = 0;
|
virtual void denChanged(const std::vector<locallabDenoiseLC> &denlc, int selspot) = 0;
|
||||||
virtual void cieChanged(const std::vector<locallabcieLC> &cielc, int selspot) = 0;
|
virtual void cieChanged(const std::vector<locallabcieLC> &cielc, int selspot) = 0;
|
||||||
|
virtual void maiChanged(const std::vector<locallabsetLC> &csetlc, int selspot) = 0;
|
||||||
virtual void sigChanged(const std::vector<locallabcieSIG> &ciesig, int selspot) = 0;
|
virtual void sigChanged(const std::vector<locallabcieSIG> &ciesig, int selspot) = 0;
|
||||||
virtual void ciebefChanged(const std::vector<locallabcieBEF> &ciebef, int selspot) = 0;
|
virtual void ciebefChanged(const std::vector<locallabcieBEF> &ciebef, int selspot) = 0;
|
||||||
virtual void refChanged2(float *huerefp, float *chromarefp, float *lumarefp, float *fabrefp, int selspot) = 0;
|
virtual void refChanged2(float *huerefp, float *chromarefp, float *lumarefp, float *fabrefp, int selspot) = 0;
|
||||||
|
// virtual void mainChanged(int spottype, int selspot, bool iscolor, bool issh, bool isvib, bool isexpos, bool issoft, bool isblur, bool istom, bool isret, bool issharp, bool iscont, bool iscbdl, bool islog, bool ismas, bool iscie) = 0;
|
||||||
|
virtual void scopeChangedcol(int scope, int selspot, bool enab) = 0;
|
||||||
|
virtual void scopeChangedsh(int scope, int selspot, bool enab) = 0;
|
||||||
|
virtual void scopeChangedvib(int scope, int selspot, bool enab) = 0;
|
||||||
|
virtual void scopeChangedset(int scope, int selspot, bool enab) = 0;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -100,8 +100,11 @@ ControlSpotPanel::ControlSpotPanel():
|
|||||||
|
|
||||||
preview_(Gtk::manage(new Gtk::ToggleButton(M("TP_LOCALLAB_PREVIEW")))),
|
preview_(Gtk::manage(new Gtk::ToggleButton(M("TP_LOCALLAB_PREVIEW")))),
|
||||||
ctboxshape(Gtk::manage(new Gtk::Box())),
|
ctboxshape(Gtk::manage(new Gtk::Box())),
|
||||||
|
ctboxactivmethod(Gtk::manage(new Gtk::Box())),
|
||||||
|
ctboxspotmethod(Gtk::manage(new Gtk::Box())),
|
||||||
ctboxshapemethod(Gtk::manage(new Gtk::Box())),
|
ctboxshapemethod(Gtk::manage(new Gtk::Box())),
|
||||||
ctboxgamut(Gtk::manage(new Gtk::Box())),
|
ctboxgamut(Gtk::manage(new Gtk::Box())),
|
||||||
|
artifBox2(Gtk::manage(new ToolParamBlock())),
|
||||||
|
|
||||||
controlPanelListener(nullptr),
|
controlPanelListener(nullptr),
|
||||||
lastObject_(-1),
|
lastObject_(-1),
|
||||||
@ -116,7 +119,7 @@ ControlSpotPanel::ControlSpotPanel():
|
|||||||
auto m = ProcEventMapper::getInstance();
|
auto m = ProcEventMapper::getInstance();
|
||||||
EvLocallabavoidgamutMethod = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_GAMUTMUNSEL");
|
EvLocallabavoidgamutMethod = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_GAMUTMUNSEL");
|
||||||
const bool showtooltip = options.showtooltip;
|
const bool showtooltip = options.showtooltip;
|
||||||
pack_start(*hishow_);
|
// pack_start(*hishow_);
|
||||||
|
|
||||||
Gtk::Box* const ctboxprevmethod = Gtk::manage(new Gtk::Box());
|
Gtk::Box* const ctboxprevmethod = Gtk::manage(new Gtk::Box());
|
||||||
prevMethod_->append(M("TP_LOCALLAB_PREVHIDE"));
|
prevMethod_->append(M("TP_LOCALLAB_PREVHIDE"));
|
||||||
@ -204,8 +207,9 @@ ControlSpotPanel::ControlSpotPanel():
|
|||||||
scrolledwindow_->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
|
scrolledwindow_->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
|
||||||
scrolledwindow_->set_min_content_height(150);
|
scrolledwindow_->set_min_content_height(150);
|
||||||
pack_start(*scrolledwindow_);
|
pack_start(*scrolledwindow_);
|
||||||
|
pack_start(*hishow_);
|
||||||
|
|
||||||
Gtk::Box* const ctboxactivmethod = Gtk::manage(new Gtk::Box());
|
// Gtk::Box* const ctboxactivmethod = Gtk::manage(new Gtk::Box());
|
||||||
ctboxactivmethod->pack_start(*activ_);
|
ctboxactivmethod->pack_start(*activ_);
|
||||||
pack_start(*ctboxactivmethod);
|
pack_start(*ctboxactivmethod);
|
||||||
|
|
||||||
@ -223,7 +227,6 @@ ControlSpotPanel::ControlSpotPanel():
|
|||||||
shape_->set_tooltip_text(M("TP_LOCALLAB_SHAPE_TOOLTIP"));
|
shape_->set_tooltip_text(M("TP_LOCALLAB_SHAPE_TOOLTIP"));
|
||||||
}
|
}
|
||||||
|
|
||||||
Gtk::Box* const ctboxspotmethod = Gtk::manage(new Gtk::Box());
|
|
||||||
Gtk::Label* const labelspotmethod = Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_EXCLUTYPE") + ":"));
|
Gtk::Label* const labelspotmethod = Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_EXCLUTYPE") + ":"));
|
||||||
ctboxspotmethod->pack_start(*labelspotmethod, Gtk::PACK_SHRINK, 4);
|
ctboxspotmethod->pack_start(*labelspotmethod, Gtk::PACK_SHRINK, 4);
|
||||||
|
|
||||||
@ -234,6 +237,7 @@ ControlSpotPanel::ControlSpotPanel():
|
|||||||
spotMethod_->append(M("TP_LOCALLAB_EXNORM"));
|
spotMethod_->append(M("TP_LOCALLAB_EXNORM"));
|
||||||
spotMethod_->append(M("TP_LOCALLAB_EXECLU"));
|
spotMethod_->append(M("TP_LOCALLAB_EXECLU"));
|
||||||
spotMethod_->append(M("TP_LOCALLAB_EXFULL"));
|
spotMethod_->append(M("TP_LOCALLAB_EXFULL"));
|
||||||
|
spotMethod_->append(M("TP_LOCALLAB_EXMAIN"));//new choice Global
|
||||||
spotMethod_->set_active(0);
|
spotMethod_->set_active(0);
|
||||||
spotMethodconn_ = spotMethod_->signal_changed().connect(
|
spotMethodconn_ = spotMethod_->signal_changed().connect(
|
||||||
sigc::mem_fun(
|
sigc::mem_fun(
|
||||||
@ -388,10 +392,11 @@ ControlSpotPanel::ControlSpotPanel():
|
|||||||
// artifBox->pack_start(*colorscope_);
|
// artifBox->pack_start(*colorscope_);
|
||||||
expShapeDetect_->add(*artifBox, false);
|
expShapeDetect_->add(*artifBox, false);
|
||||||
pack_start(*expShapeDetect_, false, false);
|
pack_start(*expShapeDetect_, false, false);
|
||||||
ToolParamBlock* const artifBox2 = Gtk::manage(new ToolParamBlock());
|
// ToolParamBlock* const artifBox2 = Gtk::manage(new ToolParamBlock());
|
||||||
|
|
||||||
artifBox2->pack_start(*preview_);
|
artifBox2->pack_start(*preview_);
|
||||||
artifBox2->pack_start(*colorscope_);
|
artifBox2->pack_start(*colorscope_);//unused with contrlspotpanel since 17 / 01 : 2024 but data used in color, vibrance, sh
|
||||||
|
colorscope_->hide();
|
||||||
pack_start(*artifBox2);
|
pack_start(*artifBox2);
|
||||||
ToolParamBlock* const specCaseBox = Gtk::manage(new ToolParamBlock());
|
ToolParamBlock* const specCaseBox = Gtk::manage(new ToolParamBlock());
|
||||||
|
|
||||||
@ -552,7 +557,6 @@ ControlSpotPanel::ControlSpotPanel():
|
|||||||
pack_start(*ctboxwavmethod);
|
pack_start(*ctboxwavmethod);
|
||||||
*/
|
*/
|
||||||
show_all();
|
show_all();
|
||||||
|
|
||||||
// Define row background color
|
// Define row background color
|
||||||
// Mouseovered spot (opaque orange)
|
// Mouseovered spot (opaque orange)
|
||||||
colorMouseover.set_red(1.);
|
colorMouseover.set_red(1.);
|
||||||
@ -795,6 +799,7 @@ bool ControlSpotPanel::on_button_visibility(GdkEventButton* event)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool ControlSpotPanel::blockTreeviewSearch(GdkEventKey* event)
|
bool ControlSpotPanel::blockTreeviewSearch(GdkEventKey* event)
|
||||||
{
|
{
|
||||||
// printf("blockTreeviewSearch\n");
|
// printf("blockTreeviewSearch\n");
|
||||||
@ -982,7 +987,7 @@ void ControlSpotPanel::prevMethodChanged()
|
|||||||
|
|
||||||
void ControlSpotPanel::spotMethodChanged()
|
void ControlSpotPanel::spotMethodChanged()
|
||||||
{
|
{
|
||||||
|
//01 2024 take into account new problems linked to Global spotmethod
|
||||||
// Get selected control spot
|
// Get selected control spot
|
||||||
const auto s = treeview_->get_selection();
|
const auto s = treeview_->get_selection();
|
||||||
|
|
||||||
@ -995,15 +1000,20 @@ void ControlSpotPanel::spotMethodChanged()
|
|||||||
|
|
||||||
const int oldSpotMethod = row[spots_.spotMethod];
|
const int oldSpotMethod = row[spots_.spotMethod];
|
||||||
row[spots_.spotMethod] = spotMethod_->get_active_row_number();
|
row[spots_.spotMethod] = spotMethod_->get_active_row_number();
|
||||||
|
//ctboxspotmethod->show();
|
||||||
|
hishow_->show();
|
||||||
|
ctboxshape->show();
|
||||||
|
artifBox2->show();
|
||||||
|
colorscope_->hide();
|
||||||
|
|
||||||
// Update Control Spot GUI according to spotMethod_ combobox state (to be compliant with updateParamVisibility function)
|
// Update Control Spot GUI according to spotMethod_ combobox state (to be compliant with updateParamVisibility function)
|
||||||
if (multiImage && spotMethod_->get_active_text() == M("GENERAL_UNCHANGED")) {
|
if (multiImage && spotMethod_->get_active_text() == M("GENERAL_UNCHANGED")) {
|
||||||
excluFrame->show();
|
excluFrame->show();
|
||||||
|
|
||||||
} else if (spotMethod_->get_active_row_number() == 0) { // Normal case
|
} else if (spotMethod_->get_active_row_number() == 0) { // Normal case
|
||||||
excluFrame->hide();
|
excluFrame->hide();
|
||||||
|
// Reset spot shape only if previous spotMethod is Full image or Global
|
||||||
// Reset spot shape only if previous spotMethod is Full image
|
if (oldSpotMethod == 2 || oldSpotMethod == 3) {
|
||||||
if (oldSpotMethod == 2) {
|
|
||||||
disableParamlistener(true);
|
disableParamlistener(true);
|
||||||
locX_->setValue(150.);
|
locX_->setValue(150.);
|
||||||
row[spots_.locX] = locX_->getIntValue();
|
row[spots_.locX] = locX_->getIntValue();
|
||||||
@ -1023,8 +1033,8 @@ void ControlSpotPanel::spotMethodChanged()
|
|||||||
} else if (spotMethod_->get_active_row_number() == 1) { // Excluding case
|
} else if (spotMethod_->get_active_row_number() == 1) { // Excluding case
|
||||||
excluFrame->show();
|
excluFrame->show();
|
||||||
|
|
||||||
// Reset spot shape only if previous spotMethod is Full image
|
// Reset spot shape only if previous spotMethod is Full image or Global
|
||||||
if (oldSpotMethod == 2) {
|
if (oldSpotMethod == 2 || oldSpotMethod == 3) {
|
||||||
disableParamlistener(true);
|
disableParamlistener(true);
|
||||||
locX_->setValue(150.);
|
locX_->setValue(150.);
|
||||||
row[spots_.locX] = locX_->getIntValue();
|
row[spots_.locX] = locX_->getIntValue();
|
||||||
@ -1041,7 +1051,7 @@ void ControlSpotPanel::spotMethodChanged()
|
|||||||
disableParamlistener(false);
|
disableParamlistener(false);
|
||||||
updateControlSpotCurve(row);
|
updateControlSpotCurve(row);
|
||||||
}
|
}
|
||||||
} else if (spotMethod_->get_active_row_number() == 2) { // Full image case
|
} else if (spotMethod_->get_active_row_number() == 2 || spotMethod_->get_active_row_number() == 3) { // Full image or Global case
|
||||||
excluFrame->hide();
|
excluFrame->hide();
|
||||||
shape_->set_active(0);
|
shape_->set_active(0);
|
||||||
|
|
||||||
@ -1057,6 +1067,31 @@ void ControlSpotPanel::spotMethodChanged()
|
|||||||
row[spots_.shape] = shape_->get_active_row_number();
|
row[spots_.shape] = shape_->get_active_row_number();
|
||||||
transit_->setValue(100.);
|
transit_->setValue(100.);
|
||||||
row[spots_.transit] = transit_->getValue();
|
row[spots_.transit] = transit_->getValue();
|
||||||
|
|
||||||
|
if(spotMethod_->get_active_row_number() == 3) { //global
|
||||||
|
ctboxshape->hide();
|
||||||
|
artifBox2->hide();
|
||||||
|
hishow_->hide();
|
||||||
|
expTransGrad_->hide();
|
||||||
|
expShapeDetect_->hide();
|
||||||
|
expSpecCases_->hide();
|
||||||
|
expMaskMerge_->hide();
|
||||||
|
circrad_->hide();
|
||||||
|
ctboxshape->hide();
|
||||||
|
} else {
|
||||||
|
ctboxshape->show();
|
||||||
|
circrad_->show();
|
||||||
|
artifBox2->show();
|
||||||
|
colorscope_->hide();
|
||||||
|
|
||||||
|
hishow_->show();
|
||||||
|
if(hishow_->get_active()) {
|
||||||
|
expTransGrad_->show();
|
||||||
|
expShapeDetect_->show();
|
||||||
|
expSpecCases_->show();
|
||||||
|
expMaskMerge_->show();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Raise event
|
// Raise event
|
||||||
@ -1304,7 +1339,12 @@ void ControlSpotPanel::updateParamVisibility()
|
|||||||
} else {
|
} else {
|
||||||
avoidrad_->hide();
|
avoidrad_->hide();
|
||||||
}
|
}
|
||||||
|
// ctboxspotmethod->show();
|
||||||
|
hishow_->show();
|
||||||
|
artifBox2->show();
|
||||||
|
ctboxshape->show();
|
||||||
|
colorscope_->hide();
|
||||||
|
|
||||||
// Update Control Spot GUI according to spotMethod_ combobox state (to be compliant with spotMethodChanged function)
|
// Update Control Spot GUI according to spotMethod_ combobox state (to be compliant with spotMethodChanged function)
|
||||||
if (multiImage && spotMethod_->get_active_text() == M("GENERAL_UNCHANGED")) {
|
if (multiImage && spotMethod_->get_active_text() == M("GENERAL_UNCHANGED")) {
|
||||||
excluFrame->show();
|
excluFrame->show();
|
||||||
@ -1312,8 +1352,35 @@ void ControlSpotPanel::updateParamVisibility()
|
|||||||
excluFrame->hide();
|
excluFrame->hide();
|
||||||
} else if (spotMethod_->get_active_row_number() == 1) { // Excluding case
|
} else if (spotMethod_->get_active_row_number() == 1) { // Excluding case
|
||||||
excluFrame->show();
|
excluFrame->show();
|
||||||
} else if (spotMethod_->get_active_row_number() == 2) {//full image
|
} else if (spotMethod_->get_active_row_number() == 2 || spotMethod_->get_active_row_number() == 3) {//full image or global
|
||||||
excluFrame->hide();
|
excluFrame->hide();
|
||||||
|
|
||||||
|
if(spotMethod_->get_active_row_number() == 3) {
|
||||||
|
artifBox2->hide();
|
||||||
|
hishow_->hide();
|
||||||
|
hishow_->set_active(false);
|
||||||
|
ctboxshape->hide();
|
||||||
|
circrad_->hide();
|
||||||
|
expTransGrad_->hide();
|
||||||
|
expShapeDetect_->hide();
|
||||||
|
expSpecCases_->hide();
|
||||||
|
expMaskMerge_->hide();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
artifBox2->show();
|
||||||
|
colorscope_->hide();
|
||||||
|
hishow_->show();
|
||||||
|
ctboxshape->show();
|
||||||
|
circrad_->show();
|
||||||
|
if(hishow_->get_active()) {
|
||||||
|
expTransGrad_->show();
|
||||||
|
expShapeDetect_->show();
|
||||||
|
expSpecCases_->show();
|
||||||
|
expMaskMerge_->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1326,13 +1393,35 @@ void ControlSpotPanel::updateParamVisibility()
|
|||||||
ctboxshape->show();
|
ctboxshape->show();
|
||||||
} else if (prevMethod_->get_active_row_number() == 0) { // Normal case
|
} else if (prevMethod_->get_active_row_number() == 0) { // Normal case
|
||||||
*/
|
*/
|
||||||
if (!hishow_->get_active()) { // Normal case
|
//ctboxshape->show();
|
||||||
|
// artifBox2->show();
|
||||||
|
|
||||||
|
if (!hishow_->get_active() || spotMethod_->get_active_row_number() == 3) { // Normal case or Global
|
||||||
expTransGrad_->hide();
|
expTransGrad_->hide();
|
||||||
expShapeDetect_->hide();
|
expShapeDetect_->hide();
|
||||||
expSpecCases_->hide();
|
expSpecCases_->hide();
|
||||||
expMaskMerge_->hide();
|
expMaskMerge_->hide();
|
||||||
circrad_->hide();
|
circrad_->hide();
|
||||||
ctboxshape->hide();
|
ctboxshape->hide();
|
||||||
|
if(spotMethod_->get_active_row_number() == 3) {
|
||||||
|
artifBox2->hide();
|
||||||
|
hishow_->hide();
|
||||||
|
ctboxshape->hide();
|
||||||
|
circrad_->hide();
|
||||||
|
expTransGrad_->hide();
|
||||||
|
expShapeDetect_->hide();
|
||||||
|
expSpecCases_->hide();
|
||||||
|
expMaskMerge_->hide();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
hishow_->show();
|
||||||
|
artifBox2->show();
|
||||||
|
colorscope_->hide();
|
||||||
|
hishow_->show();
|
||||||
|
ctboxshape->show();
|
||||||
|
circrad_->show();
|
||||||
|
}
|
||||||
|
|
||||||
} else { // Excluding case
|
} else { // Excluding case
|
||||||
expTransGrad_->show();
|
expTransGrad_->show();
|
||||||
expShapeDetect_->show();
|
expShapeDetect_->show();
|
||||||
@ -1340,6 +1429,8 @@ void ControlSpotPanel::updateParamVisibility()
|
|||||||
expMaskMerge_->show();
|
expMaskMerge_->show();
|
||||||
circrad_->show();
|
circrad_->show();
|
||||||
ctboxshape->show();
|
ctboxshape->show();
|
||||||
|
hishow_->show();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1603,8 +1694,9 @@ void ControlSpotPanel::hishowChanged()
|
|||||||
row[spots_.hishow] = hishow_->get_active();
|
row[spots_.hishow] = hishow_->get_active();
|
||||||
|
|
||||||
|
|
||||||
|
ctboxshape->show();
|
||||||
|
|
||||||
if (!hishow_->get_active()) { // Normal case
|
if (!hishow_->get_active() || spotMethod_->get_active_row_number() == 3) { // Normal case or Global
|
||||||
expTransGrad_->hide();
|
expTransGrad_->hide();
|
||||||
expShapeDetect_->hide();
|
expShapeDetect_->hide();
|
||||||
expSpecCases_->hide();
|
expSpecCases_->hide();
|
||||||
@ -1612,6 +1704,20 @@ void ControlSpotPanel::hishowChanged()
|
|||||||
circrad_->hide();
|
circrad_->hide();
|
||||||
ctboxshape->hide();
|
ctboxshape->hide();
|
||||||
shapeMethod_->set_active(0);
|
shapeMethod_->set_active(0);
|
||||||
|
if(spotMethod_->get_active_row_number() == 3) {
|
||||||
|
hishow_->hide();
|
||||||
|
hishow_->set_active(false);
|
||||||
|
circrad_->hide();
|
||||||
|
expTransGrad_->hide();
|
||||||
|
expShapeDetect_->hide();
|
||||||
|
expSpecCases_->hide();
|
||||||
|
expMaskMerge_->hide();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
hishow_->show();
|
||||||
|
circrad_->show();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
} else { // Excluding case
|
} else { // Excluding case
|
||||||
expTransGrad_->show();
|
expTransGrad_->show();
|
||||||
@ -1620,7 +1726,9 @@ void ControlSpotPanel::hishowChanged()
|
|||||||
expMaskMerge_->show();
|
expMaskMerge_->show();
|
||||||
circrad_->show();
|
circrad_->show();
|
||||||
ctboxshape->show();
|
ctboxshape->show();
|
||||||
}
|
hishow_->show();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// Raise event
|
// Raise event
|
||||||
if (listener) {
|
if (listener) {
|
||||||
@ -2764,6 +2872,56 @@ void ControlSpotPanel::deleteControlSpot(const int index)
|
|||||||
disableParamlistener(false);
|
disableParamlistener(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//new function linked to Global and options
|
||||||
|
void ControlSpotPanel::updateguiset(int spottype, bool iscolor, bool issh, bool isvib, bool isexpos, bool issoft, bool isblur, bool istom, bool isret, bool issharp, bool iscont, bool iscbdl, bool islog, bool ismas, bool iscie)
|
||||||
|
{
|
||||||
|
{ //with this function we can 1) activate Settings SpotMethod
|
||||||
|
// also if need GUI for mask , todo...
|
||||||
|
idle_register.add(
|
||||||
|
[this, spottype, iscolor, issh , isvib, isexpos, issoft, isblur, istom, isret, issharp, iscont, iscbdl, islog, ismas, iscie]() -> bool {
|
||||||
|
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||||
|
|
||||||
|
// Update GUI fullimage or main
|
||||||
|
disableListener();
|
||||||
|
if(spottype >= 2 && options.spotmet >= 2) {//optimize update
|
||||||
|
spotMethodChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
if((iscolor || issh || isvib || isexpos || istom || iscont || islog || ismas || iscie)
|
||||||
|
&& !issharp && !issoft && !isret && !isblur & !iscbdl) {
|
||||||
|
preview_->hide();
|
||||||
|
} else if (issoft || isblur || isret || issharp || iscbdl) {
|
||||||
|
preview_->show();
|
||||||
|
}
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//new function linked to change scope
|
||||||
|
void ControlSpotPanel::updateguiscopeset(int scope)
|
||||||
|
{
|
||||||
|
{ //with this function we can disabled old values scope
|
||||||
|
idle_register.add(
|
||||||
|
[this, scope]() -> bool {
|
||||||
|
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||||
|
|
||||||
|
disableListener();
|
||||||
|
colorscope_->setValue(scope);
|
||||||
|
adjusterChanged(colorscope_, 0.);
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void ControlSpotPanel::setDefaults(const rtengine::procparams::ProcParams * defParams, const ParamsEdited * pedited)
|
void ControlSpotPanel::setDefaults(const rtengine::procparams::ProcParams * defParams, const ParamsEdited * pedited)
|
||||||
{
|
{
|
||||||
const int index = defParams->locallab.selspot;
|
const int index = defParams->locallab.selspot;
|
||||||
|
@ -55,7 +55,7 @@ public:
|
|||||||
bool isvisible;
|
bool isvisible;
|
||||||
int prevMethod; // 0 = Normal, 1 = Excluding
|
int prevMethod; // 0 = Normal, 1 = Excluding
|
||||||
int shape; // 0 = Ellipse, 1 = Rectangle
|
int shape; // 0 = Ellipse, 1 = Rectangle
|
||||||
int spotMethod; // 0 = Normal, 1 = Excluding
|
int spotMethod; // 0 = Normal, 1 = Excluding 2 = fullimage 3 = main
|
||||||
int sensiexclu;
|
int sensiexclu;
|
||||||
int structexclu;
|
int structexclu;
|
||||||
int shapeMethod; // 0 = Independent (mouse), 1 = Symmetrical (mouse), 2 = Independent (mouse + sliders), 3 = Symmetrical (mouse + sliders)
|
int shapeMethod; // 0 = Independent (mouse), 1 = Symmetrical (mouse), 2 = Independent (mouse + sliders), 3 = Symmetrical (mouse + sliders)
|
||||||
@ -106,6 +106,7 @@ public:
|
|||||||
SpotDuplication = 4,
|
SpotDuplication = 4,
|
||||||
SpotAllVisibilityChanged = 5
|
SpotAllVisibilityChanged = 5
|
||||||
};
|
};
|
||||||
|
IdleRegister idle_register;
|
||||||
|
|
||||||
// Constructor and management functions
|
// Constructor and management functions
|
||||||
/**
|
/**
|
||||||
@ -220,6 +221,12 @@ public:
|
|||||||
|
|
||||||
// Batch mode management
|
// Batch mode management
|
||||||
// Note: Batch mode is deactivated for Locallab
|
// Note: Batch mode is deactivated for Locallab
|
||||||
|
|
||||||
|
/**
|
||||||
|
* upadte function to work with Preferences and spotMethod
|
||||||
|
*/
|
||||||
|
void updateguiset(int spottype, bool iscolor, bool issh, bool isvib, bool isexpos, bool issoft, bool isblur, bool istom, bool isret, bool issharp, bool iscont, bool iscbdl, bool islog, bool ismas, bool iscie);
|
||||||
|
void updateguiscopeset(int scope);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Cell renderer
|
// Cell renderer
|
||||||
@ -435,8 +442,12 @@ private:
|
|||||||
sigc::connection previewConn_;
|
sigc::connection previewConn_;
|
||||||
|
|
||||||
Gtk::Box* const ctboxshape;
|
Gtk::Box* const ctboxshape;
|
||||||
|
Gtk::Box* const ctboxactivmethod;
|
||||||
|
Gtk::Box* const ctboxspotmethod;
|
||||||
|
|
||||||
Gtk::Box* const ctboxshapemethod;
|
Gtk::Box* const ctboxshapemethod;
|
||||||
Gtk::Box* const ctboxgamut;
|
Gtk::Box* const ctboxgamut;
|
||||||
|
ToolParamBlock* const artifBox2;
|
||||||
|
|
||||||
// Internal variables
|
// Internal variables
|
||||||
ControlPanelListener* controlPanelListener;
|
ControlPanelListener* controlPanelListener;
|
||||||
|
@ -2028,3 +2028,42 @@ void SpotPicker::spotSizeChanged()
|
|||||||
{
|
{
|
||||||
_spotHalfWidth = atoi(_spotSizeSetter.get_active_text().c_str());
|
_spotHalfWidth = atoi(_spotSizeSetter.get_active_text().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OptionalRadioButtonGroup class
|
||||||
|
|
||||||
|
void OptionalRadioButtonGroup::onButtonToggled(Gtk::ToggleButton *button)
|
||||||
|
{
|
||||||
|
if (!button) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (button->get_active()) {
|
||||||
|
if (active_button == button) {
|
||||||
|
// Same button, noting to do.
|
||||||
|
} else if (active_button) {
|
||||||
|
// Deactivate the other button.
|
||||||
|
active_button->set_active(false);
|
||||||
|
}
|
||||||
|
active_button = button;
|
||||||
|
} else {
|
||||||
|
if (active_button == button) {
|
||||||
|
// Active button got deactivated.
|
||||||
|
active_button = nullptr;
|
||||||
|
} else {
|
||||||
|
// No effect on other buttons.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Gtk::ToggleButton *OptionalRadioButtonGroup::getActiveButton() const
|
||||||
|
{
|
||||||
|
return active_button;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OptionalRadioButtonGroup::register_button(Gtk::ToggleButton &button)
|
||||||
|
{
|
||||||
|
button.signal_toggled().connect(sigc::bind(
|
||||||
|
sigc::mem_fun(this, &OptionalRadioButtonGroup::onButtonToggled),
|
||||||
|
&button));
|
||||||
|
onButtonToggled(&button);
|
||||||
|
}
|
||||||
|
@ -756,6 +756,30 @@ class SpotPicker : public Gtk::Grid
|
|||||||
void spotSizeChanged();
|
void spotSizeChanged();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enforces the rule that zero or one registered toggle button is enabled at any
|
||||||
|
* given time.
|
||||||
|
*/
|
||||||
|
class OptionalRadioButtonGroup
|
||||||
|
{
|
||||||
|
Gtk::ToggleButton *active_button{nullptr};
|
||||||
|
|
||||||
|
void onButtonToggled(Gtk::ToggleButton *button);
|
||||||
|
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* Returns the toggle button that is active, or null if none are active.
|
||||||
|
*/
|
||||||
|
Gtk::ToggleButton *getActiveButton() const;
|
||||||
|
/**
|
||||||
|
* Adds a toggle button to this group.
|
||||||
|
*
|
||||||
|
* If the provided button is active, any existing active button in this
|
||||||
|
* group will be deactivated.
|
||||||
|
*/
|
||||||
|
void register_button(Gtk::ToggleButton &button);
|
||||||
|
};
|
||||||
|
|
||||||
inline void setActiveTextOrIndex(Gtk::ComboBoxText &comboBox, const Glib::ustring &text, int index)
|
inline void setActiveTextOrIndex(Gtk::ComboBoxText &comboBox, const Glib::ustring &text, int index)
|
||||||
{
|
{
|
||||||
bool valueSet = false;
|
bool valueSet = false;
|
||||||
|
@ -175,6 +175,28 @@ Locallab::Locallab():
|
|||||||
toollist->setLocallabToolListListener(this);
|
toollist->setLocallabToolListListener(this);
|
||||||
panel->pack_start(*toollist, false, false);
|
panel->pack_start(*toollist, false, false);
|
||||||
|
|
||||||
|
// Add all the tools' preview delta E buttons to one group.
|
||||||
|
for (auto button : {
|
||||||
|
expcolor.getPreviewDeltaEButton(),
|
||||||
|
expexpose.getPreviewDeltaEButton(),
|
||||||
|
expshadhigh.getPreviewDeltaEButton(),
|
||||||
|
expvibrance.getPreviewDeltaEButton(),
|
||||||
|
expsoft.getPreviewDeltaEButton(),
|
||||||
|
expblur.getPreviewDeltaEButton(),
|
||||||
|
exptonemap.getPreviewDeltaEButton(),
|
||||||
|
expreti.getPreviewDeltaEButton(),
|
||||||
|
expsharp.getPreviewDeltaEButton(),
|
||||||
|
expcontrast.getPreviewDeltaEButton(),
|
||||||
|
expcbdl.getPreviewDeltaEButton(),
|
||||||
|
explog.getPreviewDeltaEButton(),
|
||||||
|
expmask.getPreviewDeltaEButton(),
|
||||||
|
expcie.getPreviewDeltaEButton(),
|
||||||
|
}) {
|
||||||
|
if (button) {
|
||||||
|
delta_e_preview_button_group.register_button(*button);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Add Locallab tools to panel widget
|
// Add Locallab tools to panel widget
|
||||||
ToolVBox* const toolpanel = Gtk::manage(new ToolVBox());
|
ToolVBox* const toolpanel = Gtk::manage(new ToolVBox());
|
||||||
toolpanel->set_name("LocallabToolPanel");
|
toolpanel->set_name("LocallabToolPanel");
|
||||||
@ -249,7 +271,7 @@ void Locallab::read(const rtengine::procparams::ProcParams* pp, const ParamsEdit
|
|||||||
|
|
||||||
if (pp->locallab.spots.at(i).shape == "ELI") {
|
if (pp->locallab.spots.at(i).shape == "ELI") {
|
||||||
r.shape = 0;
|
r.shape = 0;
|
||||||
} else {
|
} else if (pp->locallab.spots.at(i).shape == "RECT") {
|
||||||
r.shape = 1;
|
r.shape = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -265,8 +287,10 @@ void Locallab::read(const rtengine::procparams::ProcParams* pp, const ParamsEdit
|
|||||||
r.spotMethod = 1;
|
r.spotMethod = 1;
|
||||||
} else if (pp->locallab.spots.at(i).spotMethod == "full"){
|
} else if (pp->locallab.spots.at(i).spotMethod == "full"){
|
||||||
r.spotMethod = 2;
|
r.spotMethod = 2;
|
||||||
|
} else if (pp->locallab.spots.at(i).spotMethod == "main"){
|
||||||
|
r.spotMethod = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
r.sensiexclu = pp->locallab.spots.at(i).sensiexclu;
|
r.sensiexclu = pp->locallab.spots.at(i).sensiexclu;
|
||||||
r.structexclu = pp->locallab.spots.at(i).structexclu;
|
r.structexclu = pp->locallab.spots.at(i).structexclu;
|
||||||
|
|
||||||
@ -420,7 +444,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
|||||||
|
|
||||||
if (newSpot->shape == "ELI") {
|
if (newSpot->shape == "ELI") {
|
||||||
r.shape = 0;
|
r.shape = 0;
|
||||||
} else {
|
} else if (newSpot->shape == "RECT"){
|
||||||
r.shape = 1;
|
r.shape = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -437,6 +461,8 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
|||||||
r.spotMethod = 1;
|
r.spotMethod = 1;
|
||||||
} else if(newSpot->spotMethod == "full") {
|
} else if(newSpot->spotMethod == "full") {
|
||||||
r.spotMethod = 2;
|
r.spotMethod = 2;
|
||||||
|
} else if(newSpot->spotMethod == "main") {
|
||||||
|
r.spotMethod = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
r.sensiexclu = newSpot->sensiexclu;
|
r.sensiexclu = newSpot->sensiexclu;
|
||||||
@ -746,7 +772,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
|||||||
|
|
||||||
if (newSpot->shape == "ELI") {
|
if (newSpot->shape == "ELI") {
|
||||||
r.shape = 0;
|
r.shape = 0;
|
||||||
} else {
|
} else if (newSpot->shape == "RECT"){
|
||||||
r.shape = 1;
|
r.shape = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -762,8 +788,10 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
|||||||
r.spotMethod = 1;
|
r.spotMethod = 1;
|
||||||
} else if (newSpot->spotMethod == "full") {
|
} else if (newSpot->spotMethod == "full") {
|
||||||
r.spotMethod = 2;
|
r.spotMethod = 2;
|
||||||
|
} else if (newSpot->spotMethod == "main") {
|
||||||
|
r.spotMethod = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
r.sensiexclu = newSpot->sensiexclu;
|
r.sensiexclu = newSpot->sensiexclu;
|
||||||
r.structexclu = newSpot->structexclu;
|
r.structexclu = newSpot->structexclu;
|
||||||
|
|
||||||
@ -810,7 +838,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(r.spotMethod != 2) {
|
if(r.spotMethod == 0 || r.spotMethod == 1 ) {
|
||||||
r.locX = newSpot->loc.at(0);
|
r.locX = newSpot->loc.at(0);
|
||||||
r.locXL = newSpot->loc.at(1);
|
r.locXL = newSpot->loc.at(1);
|
||||||
r.locY = newSpot->loc.at(2);
|
r.locY = newSpot->loc.at(2);
|
||||||
@ -960,6 +988,8 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
|||||||
pp->locallab.spots.at(pp->locallab.selspot).spotMethod = "exc";
|
pp->locallab.spots.at(pp->locallab.selspot).spotMethod = "exc";
|
||||||
} else if (r->spotMethod == 2) {
|
} else if (r->spotMethod == 2) {
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).spotMethod = "full";
|
pp->locallab.spots.at(pp->locallab.selspot).spotMethod = "full";
|
||||||
|
} else if (r->spotMethod == 3) {
|
||||||
|
pp->locallab.spots.at(pp->locallab.selspot).spotMethod = "main";
|
||||||
}
|
}
|
||||||
|
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).sensiexclu = r->sensiexclu;
|
pp->locallab.spots.at(pp->locallab.selspot).sensiexclu = r->sensiexclu;
|
||||||
@ -1130,7 +1160,108 @@ void Locallab::denChanged(const std::vector<locallabDenoiseLC> &denlc, int selsp
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
// New fonctions to change Scope color
|
||||||
|
void Locallab::scopeChangedcol(int scope, int selspot, bool enab)
|
||||||
|
{
|
||||||
|
if(enab) {
|
||||||
|
expcolor.updateguiscopecolor(scope);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
// New fonctions to change Scope Shadows Highlight
|
||||||
|
|
||||||
|
void Locallab::scopeChangedsh(int scope, int selspot, bool enab)
|
||||||
|
{
|
||||||
|
if(enab) {
|
||||||
|
expshadhigh.updateguiscopesahd(scope);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// New fonctions to change Scope Vibrance
|
||||||
|
|
||||||
|
void Locallab::scopeChangedvib(int scope, int selspot, bool enab)
|
||||||
|
{
|
||||||
|
if(enab) {
|
||||||
|
expvibrance.updateguiscopevib(scope);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//reinit expsettings
|
||||||
|
void Locallab::scopeChangedset(int scope, int selspot, bool enab)
|
||||||
|
{
|
||||||
|
if(enab) {
|
||||||
|
expsettings->updateguiscopeset(30);//30 defaut value..perhaps possible to pass default value ??
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
//main new fonction global to hide show and activated or not some functions - inverse, scope...
|
||||||
|
void Locallab::mainChanged(int spottype, int selspot, bool iscolor, bool issh, bool isvib, bool isexpos, bool issoft, bool isblur, bool istom, bool isret, bool issharp, bool iscont, bool iscbdl, bool islog, bool ismas, bool iscie )
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
if(iscolor) {
|
||||||
|
expcolor.updateguicolor(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(issh) {
|
||||||
|
expshadhigh.updateguishad(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isvib) {
|
||||||
|
expvibrance.updateguivib(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isexpos) {
|
||||||
|
expexpose.updateguiexpos(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(issoft) {
|
||||||
|
expsoft.updateguisoft(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isblur) {
|
||||||
|
expblur.updateguiblur(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(istom) {
|
||||||
|
exptonemap.updateguitone(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isret) {
|
||||||
|
expreti.updateguireti(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(issharp) {
|
||||||
|
expsharp.updateguisharp(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(iscont) {
|
||||||
|
expcontrast.updateguicont(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(iscbdl) {
|
||||||
|
expcbdl.updateguicbdl(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(islog) {
|
||||||
|
explog.updateguilog(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ismas) {
|
||||||
|
expmask.updateguimask(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(iscie) {
|
||||||
|
expcie.updateguicie(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
expsettings->updateguiset(spottype, iscolor, issh, isvib, isexpos, issoft, isblur, istom, isret, issharp, iscont, iscbdl, islog, ismas, iscie);
|
||||||
|
|
||||||
|
}
|
||||||
|
*/
|
||||||
void Locallab::sigChanged(const std::vector<locallabcieSIG> &ciesig, int selspot)
|
void Locallab::sigChanged(const std::vector<locallabcieSIG> &ciesig, int selspot)
|
||||||
{
|
{
|
||||||
cie_sig = ciesig;
|
cie_sig = ciesig;
|
||||||
@ -1168,6 +1299,86 @@ void Locallab::ciebefChanged(const std::vector<locallabcieBEF> &ciebef, int sels
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Locallab::maiChanged(const std::vector<locallabsetLC> &setlc, int selspot)
|
||||||
|
{
|
||||||
|
set_lc = setlc;
|
||||||
|
if (selspot < (int) set_lc.size()) {
|
||||||
|
const int spottype = set_lc.at(selspot).mainf;
|
||||||
|
const bool iscolor = set_lc.at(selspot).iscolo;
|
||||||
|
const bool issh = set_lc.at(selspot).iss;
|
||||||
|
const bool isvib = set_lc.at(selspot).isvi;
|
||||||
|
const bool isexpos = set_lc.at(selspot).isexpo;
|
||||||
|
const bool issoft = set_lc.at(selspot).issof;
|
||||||
|
const bool isblur = set_lc.at(selspot).isblu;
|
||||||
|
const bool istom = set_lc.at(selspot).isto;
|
||||||
|
const bool isret = set_lc.at(selspot).isre;
|
||||||
|
const bool issharp = set_lc.at(selspot).isshar;
|
||||||
|
const bool iscont = set_lc.at(selspot).iscon;
|
||||||
|
const bool iscbdl = set_lc.at(selspot).iscbd;
|
||||||
|
const bool islog = set_lc.at(selspot).islo;
|
||||||
|
const bool ismas = set_lc.at(selspot).isma;
|
||||||
|
const bool iscie = set_lc.at(selspot).isci;
|
||||||
|
|
||||||
|
if(iscolor) {
|
||||||
|
expcolor.updateguicolor(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(issh) {
|
||||||
|
expshadhigh.updateguishad(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isvib) {
|
||||||
|
expvibrance.updateguivib(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isexpos) {
|
||||||
|
expexpose.updateguiexpos(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(issoft) {
|
||||||
|
expsoft.updateguisoft(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isblur) {
|
||||||
|
expblur.updateguiblur(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(istom) {
|
||||||
|
exptonemap.updateguitone(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isret) {
|
||||||
|
expreti.updateguireti(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(issharp) {
|
||||||
|
expsharp.updateguisharp(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(iscont) {
|
||||||
|
expcontrast.updateguicont(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(iscbdl) {
|
||||||
|
expcbdl.updateguicbdl(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(islog) {
|
||||||
|
explog.updateguilog(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ismas) {
|
||||||
|
expmask.updateguimask(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(iscie) {
|
||||||
|
expcie.updateguicie(spottype);
|
||||||
|
}
|
||||||
|
|
||||||
|
expsettings->updateguiset(spottype, iscolor, issh, isvib, isexpos, issoft, isblur, istom, isret, issharp, iscont, iscbdl, islog, ismas, iscie);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Locallab::cieChanged(const std::vector<locallabcieLC> &cielc, int selspot)
|
void Locallab::cieChanged(const std::vector<locallabcieLC> &cielc, int selspot)
|
||||||
{
|
{
|
||||||
// Saving transmitted min/max data
|
// Saving transmitted min/max data
|
||||||
@ -1231,6 +1442,30 @@ void Locallab::resetMaskVisibility()
|
|||||||
|
|
||||||
// Reset deltaE preview
|
// Reset deltaE preview
|
||||||
expsettings->resetDeltaEPreview();
|
expsettings->resetDeltaEPreview();
|
||||||
|
for (auto tool : std::initializer_list<LocallabTool *>{
|
||||||
|
&expcolor,
|
||||||
|
&expexpose,
|
||||||
|
&expshadhigh,
|
||||||
|
&expvibrance,
|
||||||
|
&expsoft,
|
||||||
|
&expblur,
|
||||||
|
&exptonemap,
|
||||||
|
&expreti,
|
||||||
|
&expsharp,
|
||||||
|
&expcontrast,
|
||||||
|
&expcbdl,
|
||||||
|
&explog,
|
||||||
|
&expmask,
|
||||||
|
&expcie,
|
||||||
|
}) {
|
||||||
|
auto button = tool->getPreviewDeltaEButton();
|
||||||
|
auto connection = tool->getPreviewDeltaEButtonConnection();
|
||||||
|
if (button && connection) {
|
||||||
|
connection->block();
|
||||||
|
button->set_active(false);
|
||||||
|
connection->unblock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Reset mask preview for all Locallab tools
|
// Reset mask preview for all Locallab tools
|
||||||
for (auto tool : locallabTools) {
|
for (auto tool : locallabTools) {
|
||||||
@ -1370,6 +1605,12 @@ void Locallab::resetToolMaskView()
|
|||||||
for (auto tool : locallabTools) {
|
for (auto tool : locallabTools) {
|
||||||
tool->resetMaskView();
|
tool->resetMaskView();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Deactivate any preview delta E toggle button.
|
||||||
|
auto active_preview_button = delta_e_preview_button_group.getActiveButton();
|
||||||
|
if (active_preview_button) {
|
||||||
|
active_preview_button->set_active(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Locallab::resetOtherMaskView(LocallabTool* current)
|
void Locallab::resetOtherMaskView(LocallabTool* current)
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "controlspotpanel.h"
|
#include "controlspotpanel.h"
|
||||||
|
#include "guiutils.h"
|
||||||
#include "locallabtools.h"
|
#include "locallabtools.h"
|
||||||
|
|
||||||
/* ==== LocallabToolListListener ==== */
|
/* ==== LocallabToolListListener ==== */
|
||||||
@ -118,6 +119,8 @@ private:
|
|||||||
LocallabMask expmask;
|
LocallabMask expmask;
|
||||||
Locallabcie expcie;
|
Locallabcie expcie;
|
||||||
|
|
||||||
|
OptionalRadioButtonGroup delta_e_preview_button_group;
|
||||||
|
|
||||||
std::vector<LocallabTool*> locallabTools;
|
std::vector<LocallabTool*> locallabTools;
|
||||||
|
|
||||||
// Locallab tools mask background management data
|
// Locallab tools mask background management data
|
||||||
@ -131,6 +134,8 @@ private:
|
|||||||
|
|
||||||
std::vector<locallabcieLC> cie_lc;
|
std::vector<locallabcieLC> cie_lc;
|
||||||
|
|
||||||
|
std::vector<locallabsetLC> set_lc;
|
||||||
|
|
||||||
std::vector<locallabcieSIG> cie_sig;
|
std::vector<locallabcieSIG> cie_sig;
|
||||||
|
|
||||||
// Locallab tools mask background management data
|
// Locallab tools mask background management data
|
||||||
@ -154,7 +159,16 @@ public:
|
|||||||
|
|
||||||
// Locallab Retinex tool min/man management function
|
// Locallab Retinex tool min/man management function
|
||||||
void minmaxChanged(const std::vector<locallabRetiMinMax> &minmax, int selspot) override;
|
void minmaxChanged(const std::vector<locallabRetiMinMax> &minmax, int selspot) override;
|
||||||
|
|
||||||
|
// new functions for global - normal use
|
||||||
|
// void mainChanged(int spottype, int selspot, bool iscolor, bool issh, bool isvib, bool isexpos, bool issoft, bool isblur, bool istom, bool isret, bool issharp, bool iscont, bool iscbdl, bool islog, bool ismas, bool iscie)override;
|
||||||
|
void scopeChangedcol(int scope, int selspot, bool enab)override;
|
||||||
|
void scopeChangedsh(int scope, int selspot, bool enab)override;
|
||||||
|
void scopeChangedvib(int scope, int selspot, bool enab)override;
|
||||||
|
void scopeChangedset(int scope, int selspot, bool enab)override;
|
||||||
|
|
||||||
|
void maiChanged(const std::vector<locallabsetLC> &setlc, int selspot) override;
|
||||||
|
|
||||||
//Locallab denoise
|
//Locallab denoise
|
||||||
// Locallab Retinex tool min/man management function
|
// Locallab Retinex tool min/man management function
|
||||||
void denChanged(const std::vector<locallabDenoiseLC> &denlc, int selspot) override;
|
void denChanged(const std::vector<locallabDenoiseLC> &denlc, int selspot) override;
|
||||||
|
@ -300,6 +300,16 @@ void LocallabTool::refChanged(const double huer, const double lumar, const doubl
|
|||||||
updateMaskBackground(normChromar, normLumar, normHuer, normHuerjz);
|
updateMaskBackground(normChromar, normLumar, normHuer, normHuerjz);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Gtk::ToggleButton *LocallabTool::getPreviewDeltaEButton() const
|
||||||
|
{
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
sigc::connection *LocallabTool::getPreviewDeltaEButtonConnection()
|
||||||
|
{
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
void LocallabTool::colorForValue(double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller)
|
void LocallabTool::colorForValue(double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller)
|
||||||
{
|
{
|
||||||
float R = 0.f;
|
float R = 0.f;
|
||||||
@ -367,6 +377,8 @@ void LocallabTool::enableListener()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool LocallabTool::on_remove_change(GdkEventButton* event)
|
bool LocallabTool::on_remove_change(GdkEventButton* event)
|
||||||
{
|
{
|
||||||
if (event->button == GDK_BUTTON_PRIMARY) {
|
if (event->button == GDK_BUTTON_PRIMARY) {
|
||||||
@ -445,7 +457,9 @@ LocallabColor::LocallabColor():
|
|||||||
labgrid(Gtk::manage(new LabGrid(EvLocallabLabGridValue, M("TP_LOCALLAB_LABGRID_VALUES"), true, false))),
|
labgrid(Gtk::manage(new LabGrid(EvLocallabLabGridValue, M("TP_LOCALLAB_LABGRID_VALUES"), true, false))),
|
||||||
gridMethod(Gtk::manage(new MyComboBoxText())),
|
gridMethod(Gtk::manage(new MyComboBoxText())),
|
||||||
strengthgrid(Gtk::manage(new Adjuster(M("TP_LOCALLAB_STRGRID"), 0, 100, 1, 30))),
|
strengthgrid(Gtk::manage(new Adjuster(M("TP_LOCALLAB_STRGRID"), 0, 100, 1, 30))),
|
||||||
sensi(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 15))),
|
sensi(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 30))),
|
||||||
|
previewcol(Gtk::manage(new Gtk::ToggleButton(M("TP_LOCALLAB_PREVIEW")))),
|
||||||
|
|
||||||
structcol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_STRUCCOL1"), 0, 100, 1, 0))),
|
structcol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_STRUCCOL1"), 0, 100, 1, 0))),
|
||||||
blurcolde(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLURDE"), 2, 100, 1, 5))),
|
blurcolde(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLURDE"), 2, 100, 1, 5))),
|
||||||
softradiuscol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SOFTRADIUSCOL"), 0.0, 100.0, 0.5, 0.))),
|
softradiuscol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SOFTRADIUSCOL"), 0.0, 100.0, 0.5, 0.))),
|
||||||
@ -526,6 +540,8 @@ LocallabColor::LocallabColor():
|
|||||||
LLmaskcolshapewav(static_cast<FlatCurveEditor*>(mask2CurveEditorGwav->addCurve(CT_Flat, "L(L)", nullptr, false, false))),
|
LLmaskcolshapewav(static_cast<FlatCurveEditor*>(mask2CurveEditorGwav->addCurve(CT_Flat, "L(L)", nullptr, false, false))),
|
||||||
csThresholdcol(Gtk::manage(new ThresholdAdjuster(M("TP_LOCALLAB_CSTHRESHOLDBLUR"), 0, 9, 0, 0, 6, 5, 0, false)))
|
csThresholdcol(Gtk::manage(new ThresholdAdjuster(M("TP_LOCALLAB_CSTHRESHOLDBLUR"), 0, 9, 0, 0, 6, 5, 0, false)))
|
||||||
{
|
{
|
||||||
|
auto m = ProcEventMapper::getInstance();
|
||||||
|
Evlocallabpreviewcol = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_PREVIEWCOL");
|
||||||
|
|
||||||
set_orientation(Gtk::ORIENTATION_VERTICAL);
|
set_orientation(Gtk::ORIENTATION_VERTICAL);
|
||||||
|
|
||||||
@ -596,6 +612,11 @@ LocallabColor::LocallabColor():
|
|||||||
|
|
||||||
setExpandAlignProperties(expcurvcol, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
setExpandAlignProperties(expcurvcol, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
||||||
|
|
||||||
|
previewcol->set_active(false);
|
||||||
|
previewcolConn = previewcol->signal_clicked().connect(
|
||||||
|
sigc::mem_fun(
|
||||||
|
*this, &LocallabColor::previewcolChanged));
|
||||||
|
|
||||||
qualitycurveMethod->append(M("TP_LOCALLAB_CURVNONE"));
|
qualitycurveMethod->append(M("TP_LOCALLAB_CURVNONE"));
|
||||||
qualitycurveMethod->append(M("TP_LOCALLAB_CURVCURR"));
|
qualitycurveMethod->append(M("TP_LOCALLAB_CURVCURR"));
|
||||||
qualitycurveMethod->set_active(0);
|
qualitycurveMethod->set_active(0);
|
||||||
@ -813,6 +834,9 @@ LocallabColor::LocallabColor():
|
|||||||
|
|
||||||
// Add Color & Light specific widgets to GUI
|
// Add Color & Light specific widgets to GUI
|
||||||
pack_start(*reparcol);
|
pack_start(*reparcol);
|
||||||
|
pack_start(*sensi);
|
||||||
|
pack_start(*previewcol);
|
||||||
|
|
||||||
pack_start(*invers);
|
pack_start(*invers);
|
||||||
ToolParamBlock* const lumBox = Gtk::manage(new ToolParamBlock());
|
ToolParamBlock* const lumBox = Gtk::manage(new ToolParamBlock());
|
||||||
lumBox->pack_start(*lightness);
|
lumBox->pack_start(*lightness);
|
||||||
@ -833,7 +857,7 @@ LocallabColor::LocallabColor():
|
|||||||
superBox->pack_start(*gridFrame);
|
superBox->pack_start(*gridFrame);
|
||||||
superFrame->add(*superBox);
|
superFrame->add(*superBox);
|
||||||
pack_start(*superFrame);
|
pack_start(*superFrame);
|
||||||
// pack_start(*sensi);
|
// pack_start(*sensi);
|
||||||
pack_start(*structcol);
|
pack_start(*structcol);
|
||||||
pack_start(*blurcolde);
|
pack_start(*blurcolde);
|
||||||
pack_start(*softradiuscol);
|
pack_start(*softradiuscol);
|
||||||
@ -949,6 +973,22 @@ LocallabColor::~LocallabColor()
|
|||||||
delete mask2CurveEditorGwav;
|
delete mask2CurveEditorGwav;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LocallabColor::previewcolChanged()
|
||||||
|
{
|
||||||
|
|
||||||
|
if(previewcol->get_active()) {
|
||||||
|
showmaskcolMethod->set_active(5);
|
||||||
|
} else {
|
||||||
|
showmaskcolMethod->set_active(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isLocActivated) {
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(Evlocallabpreviewcol,"");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void LocallabColor::setListener(ToolPanelListener* tpl)
|
void LocallabColor::setListener(ToolPanelListener* tpl)
|
||||||
{
|
{
|
||||||
LocallabTool::setListener(tpl);
|
LocallabTool::setListener(tpl);
|
||||||
@ -957,6 +997,64 @@ void LocallabColor::setListener(ToolPanelListener* tpl)
|
|||||||
labgridmerg->setListener(tpl);
|
labgridmerg->setListener(tpl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//new function Global
|
||||||
|
void LocallabColor::updateguicolor(int spottype)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
// Disable all listeners
|
||||||
|
idle_register.add(
|
||||||
|
[this, spottype]() -> bool {
|
||||||
|
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||||
|
|
||||||
|
// Update GUI fullimage or main
|
||||||
|
disableListener();
|
||||||
|
|
||||||
|
if(spottype == 3) {
|
||||||
|
invers->hide();
|
||||||
|
sensi->hide();
|
||||||
|
showmaskcolMethod->set_active(0);
|
||||||
|
previewcol->hide();
|
||||||
|
previewcol->set_active(false);
|
||||||
|
resetMaskView();
|
||||||
|
} else {
|
||||||
|
invers->show();
|
||||||
|
sensi->show();
|
||||||
|
if(!invers->get_active()) {
|
||||||
|
previewcol->show();
|
||||||
|
} else {
|
||||||
|
previewcol->hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//new function scope
|
||||||
|
void LocallabColor::updateguiscopecolor(int scope)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
idle_register.add(
|
||||||
|
[this, scope]() -> bool {
|
||||||
|
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||||
|
|
||||||
|
disableListener();
|
||||||
|
sensi->setValue(scope);
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool LocallabColor::isMaskViewActive()
|
bool LocallabColor::isMaskViewActive()
|
||||||
{
|
{
|
||||||
return ((showmaskcolMethod->get_active_row_number() != 0) || (showmaskcolMethodinv->get_active_row_number() != 0));
|
return ((showmaskcolMethod->get_active_row_number() != 0) || (showmaskcolMethodinv->get_active_row_number() != 0));
|
||||||
@ -980,6 +1078,16 @@ void LocallabColor::getMaskView(int &colorMask, int &colorMaskinv, int &expMask,
|
|||||||
colorMaskinv = showmaskcolMethodinv->get_active_row_number();
|
colorMaskinv = showmaskcolMethodinv->get_active_row_number();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Gtk::ToggleButton *LocallabColor::getPreviewDeltaEButton() const
|
||||||
|
{
|
||||||
|
return previewcol;
|
||||||
|
}
|
||||||
|
|
||||||
|
sigc::connection *LocallabColor::getPreviewDeltaEButtonConnection()
|
||||||
|
{
|
||||||
|
return &previewcolConn;
|
||||||
|
}
|
||||||
|
|
||||||
void LocallabColor::updateAdviceTooltips(const bool showTooltips)
|
void LocallabColor::updateAdviceTooltips(const bool showTooltips)
|
||||||
{
|
{
|
||||||
if (showTooltips) {
|
if (showTooltips) {
|
||||||
@ -1550,7 +1658,7 @@ void LocallabColor::setDefaults(const rtengine::procparams::ProcParams* defParam
|
|||||||
void LocallabColor::adjusterChanged(Adjuster* a, double newval)
|
void LocallabColor::adjusterChanged(Adjuster* a, double newval)
|
||||||
{
|
{
|
||||||
if (isLocActivated && exp->getEnabled()) {
|
if (isLocActivated && exp->getEnabled()) {
|
||||||
if (a == lightness) {
|
if (a == lightness) {
|
||||||
if (listener) {
|
if (listener) {
|
||||||
listener->panelChanged(Evlocallablightness,
|
listener->panelChanged(Evlocallablightness,
|
||||||
lightness->getTextValue() + " (" + escapeHtmlChars(getSpotName()) + ")");
|
lightness->getTextValue() + " (" + escapeHtmlChars(getSpotName()) + ")");
|
||||||
@ -1595,7 +1703,7 @@ void LocallabColor::adjusterChanged(Adjuster* a, double newval)
|
|||||||
if (a == sensi) {
|
if (a == sensi) {
|
||||||
if (listener) {
|
if (listener) {
|
||||||
listener->panelChanged(Evlocallabsensi,
|
listener->panelChanged(Evlocallabsensi,
|
||||||
sensi->getTextValue() + " (" + escapeHtmlChars(getSpotName()) + ")");
|
sensi->getTextValue() + " (" + escapeHtmlChars(getSpotName()) + ")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2574,6 +2682,8 @@ LocallabExposure::LocallabExposure():
|
|||||||
fatanchor(Gtk::manage(new Adjuster(M("TP_LOCALLAB_FATANCHOR"), 0.1, 100.0, 0.01, 50., Gtk::manage(new RTImage("circle-black-small")), Gtk::manage(new RTImage("circle-white-small"))))),
|
fatanchor(Gtk::manage(new Adjuster(M("TP_LOCALLAB_FATANCHOR"), 0.1, 100.0, 0.01, 50., Gtk::manage(new RTImage("circle-black-small")), Gtk::manage(new RTImage("circle-white-small"))))),
|
||||||
gamex(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GAMC"), 0.5, 3.0, 0.05, 1.))),
|
gamex(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GAMC"), 0.5, 3.0, 0.05, 1.))),
|
||||||
sensiex(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 60))),
|
sensiex(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 60))),
|
||||||
|
previewexe(Gtk::manage(new Gtk::ToggleButton(M("TP_LOCALLAB_PREVIEW")))),
|
||||||
|
|
||||||
structexp(Gtk::manage(new Adjuster(M("TP_LOCALLAB_STRUCCOL"), 0, 100, 1, 0))),
|
structexp(Gtk::manage(new Adjuster(M("TP_LOCALLAB_STRUCCOL"), 0, 100, 1, 0))),
|
||||||
blurexpde(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLURDE"), 2, 100, 1, 5))),
|
blurexpde(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLURDE"), 2, 100, 1, 5))),
|
||||||
exptoolexp(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_EXPTOOL")))),
|
exptoolexp(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_EXPTOOL")))),
|
||||||
@ -2625,6 +2735,8 @@ LocallabExposure::LocallabExposure():
|
|||||||
set_orientation(Gtk::ORIENTATION_VERTICAL);
|
set_orientation(Gtk::ORIENTATION_VERTICAL);
|
||||||
|
|
||||||
const LocallabParams::LocallabSpot defSpot;
|
const LocallabParams::LocallabSpot defSpot;
|
||||||
|
auto m = ProcEventMapper::getInstance();
|
||||||
|
Evlocallabpreviewexe = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_PREVIEWEXE");
|
||||||
|
|
||||||
// Parameter Exposure specific widgets
|
// Parameter Exposure specific widgets
|
||||||
expMethod->append(M("TP_LOCALLAB_STD"));
|
expMethod->append(M("TP_LOCALLAB_STD"));
|
||||||
@ -2706,6 +2818,12 @@ LocallabExposure::LocallabExposure():
|
|||||||
lowthrese->setAdjusterListener(this);
|
lowthrese->setAdjusterListener(this);
|
||||||
higthrese->setAdjusterListener(this);
|
higthrese->setAdjusterListener(this);
|
||||||
decaye->setAdjusterListener(this);
|
decaye->setAdjusterListener(this);
|
||||||
|
|
||||||
|
previewexe->set_active(false);
|
||||||
|
previewexeConn = previewexe->signal_clicked().connect(
|
||||||
|
sigc::mem_fun(
|
||||||
|
*this, &LocallabExposure::previewexeChanged));
|
||||||
|
|
||||||
setExpandAlignProperties(exprecove, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
setExpandAlignProperties(exprecove, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
||||||
normConn = norm->signal_toggled().connect(sigc::mem_fun(*this, &LocallabExposure::normChanged));
|
normConn = norm->signal_toggled().connect(sigc::mem_fun(*this, &LocallabExposure::normChanged));
|
||||||
fatsaturConn = fatsatur->signal_toggled().connect(sigc::mem_fun(*this, &LocallabExposure::fatsaturChanged));
|
fatsaturConn = fatsatur->signal_toggled().connect(sigc::mem_fun(*this, &LocallabExposure::fatsaturChanged));
|
||||||
@ -2781,6 +2899,7 @@ LocallabExposure::LocallabExposure():
|
|||||||
|
|
||||||
// Add Color & Light specific widgets to GUI
|
// Add Color & Light specific widgets to GUI
|
||||||
pack_start(*sensiex);
|
pack_start(*sensiex);
|
||||||
|
pack_start(*previewexe);
|
||||||
pack_start(*reparexp);
|
pack_start(*reparexp);
|
||||||
pack_start(*inversex);
|
pack_start(*inversex);
|
||||||
ToolParamBlock* const pdeBox = Gtk::manage(new ToolParamBlock());
|
ToolParamBlock* const pdeBox = Gtk::manage(new ToolParamBlock());
|
||||||
@ -2873,6 +2992,60 @@ bool LocallabExposure::isMaskViewActive()
|
|||||||
return ((showmaskexpMethod->get_active_row_number() != 0) || (showmaskexpMethodinv->get_active_row_number() != 0));
|
return ((showmaskexpMethod->get_active_row_number() != 0) || (showmaskexpMethodinv->get_active_row_number() != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//new function Global
|
||||||
|
void LocallabExposure::updateguiexpos(int spottype)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
idle_register.add(
|
||||||
|
[this, spottype]() -> bool {
|
||||||
|
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||||
|
|
||||||
|
// Update GUI fullimage or main
|
||||||
|
disableListener();
|
||||||
|
|
||||||
|
if(spottype == 3) {
|
||||||
|
inversex->hide();
|
||||||
|
sensiex->hide();
|
||||||
|
previewexe->hide();
|
||||||
|
showmaskexpMethod->set_active(0);
|
||||||
|
previewexe->set_active(false);
|
||||||
|
|
||||||
|
resetMaskView();
|
||||||
|
} else {
|
||||||
|
inversex->show();
|
||||||
|
sensiex->show();
|
||||||
|
if(!inversex->get_active()) {
|
||||||
|
previewexe->show();
|
||||||
|
} else {
|
||||||
|
previewexe->hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void LocallabExposure::previewexeChanged()
|
||||||
|
{
|
||||||
|
|
||||||
|
if(previewexe->get_active()) {
|
||||||
|
showmaskexpMethod->set_active(5);
|
||||||
|
} else {
|
||||||
|
showmaskexpMethod->set_active(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isLocActivated) {
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(Evlocallabpreviewexe,"");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void LocallabExposure::resetMaskView()
|
void LocallabExposure::resetMaskView()
|
||||||
{
|
{
|
||||||
showmaskexpMethodConn.block(true);
|
showmaskexpMethodConn.block(true);
|
||||||
@ -2891,6 +3064,16 @@ void LocallabExposure::getMaskView(int &colorMask, int &colorMaskinv, int &expMa
|
|||||||
expMaskinv = showmaskexpMethodinv->get_active_row_number();
|
expMaskinv = showmaskexpMethodinv->get_active_row_number();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Gtk::ToggleButton *LocallabExposure::getPreviewDeltaEButton() const
|
||||||
|
{
|
||||||
|
return previewexe;
|
||||||
|
}
|
||||||
|
|
||||||
|
sigc::connection *LocallabExposure::getPreviewDeltaEButtonConnection()
|
||||||
|
{
|
||||||
|
return &previewexeConn;
|
||||||
|
}
|
||||||
|
|
||||||
void LocallabExposure::updateAdviceTooltips(const bool showTooltips)
|
void LocallabExposure::updateAdviceTooltips(const bool showTooltips)
|
||||||
{
|
{
|
||||||
if (showTooltips) {
|
if (showTooltips) {
|
||||||
@ -3616,6 +3799,7 @@ void LocallabExposure::convertParamToSimple()
|
|||||||
softradiusexp->setValue(defSpot.softradiusexp);
|
softradiusexp->setValue(defSpot.softradiusexp);
|
||||||
enaExpMask->set_active(defSpot.enaExpMask);
|
enaExpMask->set_active(defSpot.enaExpMask);
|
||||||
enaExpMaskaft->set_active(defSpot.enaExpMaskaft);
|
enaExpMaskaft->set_active(defSpot.enaExpMaskaft);
|
||||||
|
showmaskexpMethod->set_active(0);
|
||||||
gamex->setValue(defSpot.gamex);
|
gamex->setValue(defSpot.gamex);
|
||||||
// CCmaskexpshape->setCurve(defSpot.CCmaskexpcurve);
|
// CCmaskexpshape->setCurve(defSpot.CCmaskexpcurve);
|
||||||
// LLmaskexpshape->setCurve(defSpot.CCmaskexpcurve);
|
// LLmaskexpshape->setCurve(defSpot.CCmaskexpcurve);
|
||||||
@ -4040,7 +4224,8 @@ LocallabShadow::LocallabShadow():
|
|||||||
shadows(Gtk::manage(new Adjuster(M("TP_SHADOWSHLIGHTS_SHADOWS"), 0, 100, 1, 0))),
|
shadows(Gtk::manage(new Adjuster(M("TP_SHADOWSHLIGHTS_SHADOWS"), 0, 100, 1, 0))),
|
||||||
s_tonalwidth(Gtk::manage(new Adjuster(M("TP_SHADOWSHLIGHTS_SHTONALW"), 10, 100, 1, 30))),
|
s_tonalwidth(Gtk::manage(new Adjuster(M("TP_SHADOWSHLIGHTS_SHTONALW"), 10, 100, 1, 30))),
|
||||||
sh_radius(Gtk::manage(new Adjuster(M("TP_SHADOWSHLIGHTS_RADIUS"), 0, 100, 1, 40))),
|
sh_radius(Gtk::manage(new Adjuster(M("TP_SHADOWSHLIGHTS_RADIUS"), 0, 100, 1, 40))),
|
||||||
sensihs(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 15))),//unused here, but used for normalize_mean_dt
|
sensihs(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 30))),//reused - unused here, but used for normalize_mean_dt
|
||||||
|
previewsh(Gtk::manage(new Gtk::ToggleButton(M("TP_LOCALLAB_PREVIEW")))),
|
||||||
blurSHde(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLURDE"), 2, 100, 1, 5))),
|
blurSHde(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLURDE"), 2, 100, 1, 5))),
|
||||||
exprecovs(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_DENOI2_EXP")))),
|
exprecovs(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_DENOI2_EXP")))),
|
||||||
maskusables(Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_MASKUSABLE")))),
|
maskusables(Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_MASKUSABLE")))),
|
||||||
@ -4078,6 +4263,9 @@ LocallabShadow::LocallabShadow():
|
|||||||
fatanchorSH(Gtk::manage(new Adjuster(M("TP_LOCALLAB_FATANCHOR"), 1., 100., 1., 50., Gtk::manage(new RTImage("circle-black-small")), Gtk::manage(new RTImage("circle-white-small"))))),
|
fatanchorSH(Gtk::manage(new Adjuster(M("TP_LOCALLAB_FATANCHOR"), 1., 100., 1., 50., Gtk::manage(new RTImage("circle-black-small")), Gtk::manage(new RTImage("circle-white-small"))))),
|
||||||
EvlocallabTePivot(ProcEventMapper::getInstance()->newEvent(AUTOEXP, "HISTORY_MSG_LOCALLAB_TE_PIVOT"))
|
EvlocallabTePivot(ProcEventMapper::getInstance()->newEvent(AUTOEXP, "HISTORY_MSG_LOCALLAB_TE_PIVOT"))
|
||||||
{
|
{
|
||||||
|
auto m = ProcEventMapper::getInstance();
|
||||||
|
Evlocallabpreviewsh = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_PREVIEWSH");
|
||||||
|
|
||||||
set_orientation(Gtk::ORIENTATION_VERTICAL);
|
set_orientation(Gtk::ORIENTATION_VERTICAL);
|
||||||
|
|
||||||
const LocallabParams::LocallabSpot defSpot;
|
const LocallabParams::LocallabSpot defSpot;
|
||||||
@ -4134,6 +4322,11 @@ LocallabShadow::LocallabShadow():
|
|||||||
|
|
||||||
setExpandAlignProperties(expmasksh, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
setExpandAlignProperties(expmasksh, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
||||||
|
|
||||||
|
previewsh->set_active(false);
|
||||||
|
previewshConn = previewsh->signal_clicked().connect(
|
||||||
|
sigc::mem_fun(
|
||||||
|
*this, &LocallabShadow::previewshChanged));
|
||||||
|
|
||||||
showmaskSHMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
|
showmaskSHMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
|
||||||
showmaskSHMethod->append(M("TP_LOCALLAB_SHOWMODIF"));
|
showmaskSHMethod->append(M("TP_LOCALLAB_SHOWMODIF"));
|
||||||
showmaskSHMethod->append(M("TP_LOCALLAB_SHOWMODIFMASK"));
|
showmaskSHMethod->append(M("TP_LOCALLAB_SHOWMODIFMASK"));
|
||||||
@ -4196,6 +4389,9 @@ LocallabShadow::LocallabShadow():
|
|||||||
|
|
||||||
// Add Shadow highlight specific widgets to GUI
|
// Add Shadow highlight specific widgets to GUI
|
||||||
pack_start(*reparsh);
|
pack_start(*reparsh);
|
||||||
|
pack_start(*sensihs);// reused / unused here, but used for normalize_mean_dt
|
||||||
|
pack_start(*previewsh);
|
||||||
|
|
||||||
pack_start(*inverssh);
|
pack_start(*inverssh);
|
||||||
pack_start(*shMethod);
|
pack_start(*shMethod);
|
||||||
|
|
||||||
@ -4210,7 +4406,7 @@ LocallabShadow::LocallabShadow():
|
|||||||
pack_start(*shadows);
|
pack_start(*shadows);
|
||||||
pack_start(*s_tonalwidth);
|
pack_start(*s_tonalwidth);
|
||||||
pack_start(*sh_radius);
|
pack_start(*sh_radius);
|
||||||
// pack_start(*sensihs);//unused here, but used for normalize_mean_dt
|
// pack_start(*sensihs);// reused / unused here, but used for normalize_mean_dt
|
||||||
pack_start(*blurSHde);
|
pack_start(*blurSHde);
|
||||||
ToolParamBlock* const shBox3 = Gtk::manage(new ToolParamBlock());
|
ToolParamBlock* const shBox3 = Gtk::manage(new ToolParamBlock());
|
||||||
shBox3->pack_start(*maskusables, Gtk::PACK_SHRINK, 0);
|
shBox3->pack_start(*maskusables, Gtk::PACK_SHRINK, 0);
|
||||||
@ -4278,6 +4474,90 @@ void LocallabShadow::resetMaskView()
|
|||||||
showmaskSHMethodConninv.block(false);
|
showmaskSHMethodConninv.block(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Gtk::ToggleButton *LocallabShadow::getPreviewDeltaEButton() const
|
||||||
|
{
|
||||||
|
return previewsh;
|
||||||
|
}
|
||||||
|
|
||||||
|
sigc::connection *LocallabShadow::getPreviewDeltaEButtonConnection()
|
||||||
|
{
|
||||||
|
return &previewshConn;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LocallabShadow::previewshChanged()
|
||||||
|
{
|
||||||
|
|
||||||
|
if(previewsh->get_active()) {
|
||||||
|
showmaskSHMethod->set_active(4);
|
||||||
|
} else {
|
||||||
|
showmaskSHMethod->set_active(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isLocActivated) {
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(Evlocallabpreviewsh,"");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//new function Global
|
||||||
|
void LocallabShadow::updateguishad(int spottype)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
idle_register.add(
|
||||||
|
[this, spottype]() -> bool {
|
||||||
|
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||||
|
|
||||||
|
// Update GUI fullimage or main
|
||||||
|
disableListener();
|
||||||
|
|
||||||
|
if(spottype == 3) {
|
||||||
|
inverssh->hide();
|
||||||
|
sensihs->hide();
|
||||||
|
showmaskSHMethod->set_active(0);
|
||||||
|
previewsh->hide();
|
||||||
|
previewsh->set_active(false);
|
||||||
|
resetMaskView();
|
||||||
|
} else {
|
||||||
|
sensihs->show();
|
||||||
|
inverssh->show();
|
||||||
|
if(!inverssh->get_active()) {
|
||||||
|
previewsh->show();
|
||||||
|
} else {
|
||||||
|
previewsh->hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void LocallabShadow::updateguiscopesahd(int scope)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
idle_register.add(
|
||||||
|
[this, scope]() -> bool {
|
||||||
|
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||||
|
|
||||||
|
disableListener();
|
||||||
|
sensihs->setValue(scope);
|
||||||
|
|
||||||
|
enableListener();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void LocallabShadow::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask)
|
void LocallabShadow::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask)
|
||||||
{
|
{
|
||||||
shMask = showmaskSHMethod->get_active_row_number();
|
shMask = showmaskSHMethod->get_active_row_number();
|
||||||
@ -5154,7 +5434,8 @@ LocallabVibrance::LocallabVibrance():
|
|||||||
protectSkins(Gtk::manage(new Gtk::CheckButton(M("TP_VIBRANCE_PROTECTSKINS")))),
|
protectSkins(Gtk::manage(new Gtk::CheckButton(M("TP_VIBRANCE_PROTECTSKINS")))),
|
||||||
avoidColorShift(Gtk::manage(new Gtk::CheckButton(M("TP_VIBRANCE_AVOIDCOLORSHIFT")))),
|
avoidColorShift(Gtk::manage(new Gtk::CheckButton(M("TP_VIBRANCE_AVOIDCOLORSHIFT")))),
|
||||||
pastSatTog(Gtk::manage(new Gtk::CheckButton(M("TP_VIBRANCE_PASTSATTOG")))),
|
pastSatTog(Gtk::manage(new Gtk::CheckButton(M("TP_VIBRANCE_PASTSATTOG")))),
|
||||||
sensiv(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 15))),//unused here, but used for normalize_mean_dt
|
sensiv(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 30))),//reused - unused here, but used for normalize_mean_dt
|
||||||
|
previewvib(Gtk::manage(new Gtk::ToggleButton(M("TP_LOCALLAB_PREVIEW")))),
|
||||||
curveEditorGG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL"))),
|
curveEditorGG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL"))),
|
||||||
skinTonesCurve(static_cast<DiagonalCurveEditor*>(curveEditorGG->addCurve(CT_Diagonal, M("TP_VIBRANCE_CURVEEDITOR_SKINTONES")))),
|
skinTonesCurve(static_cast<DiagonalCurveEditor*>(curveEditorGG->addCurve(CT_Diagonal, M("TP_VIBRANCE_CURVEEDITOR_SKINTONES")))),
|
||||||
exprecovv(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_DENOI2_EXP")))),
|
exprecovv(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_DENOI2_EXP")))),
|
||||||
@ -5186,6 +5467,9 @@ LocallabVibrance::LocallabVibrance():
|
|||||||
mask2vibCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK2"))),
|
mask2vibCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK2"))),
|
||||||
Lmaskvibshape(static_cast<DiagonalCurveEditor*>(mask2vibCurveEditorG->addCurve(CT_Diagonal, "L(L)")))
|
Lmaskvibshape(static_cast<DiagonalCurveEditor*>(mask2vibCurveEditorG->addCurve(CT_Diagonal, "L(L)")))
|
||||||
{
|
{
|
||||||
|
auto m = ProcEventMapper::getInstance();
|
||||||
|
Evlocallabpreviewvib = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_PREVIEWVIB");
|
||||||
|
|
||||||
set_orientation(Gtk::ORIENTATION_VERTICAL);
|
set_orientation(Gtk::ORIENTATION_VERTICAL);
|
||||||
|
|
||||||
float R, G, B;
|
float R, G, B;
|
||||||
@ -5250,6 +5534,11 @@ LocallabVibrance::LocallabVibrance():
|
|||||||
angvib->set_tooltip_text(M("TP_LOCALLAB_GRADANG_TOOLTIP"));
|
angvib->set_tooltip_text(M("TP_LOCALLAB_GRADANG_TOOLTIP"));
|
||||||
angvib->setAdjusterListener(this);
|
angvib->setAdjusterListener(this);
|
||||||
|
|
||||||
|
previewvib->set_active(false);
|
||||||
|
previewvibConn = previewvib->signal_clicked().connect(
|
||||||
|
sigc::mem_fun(
|
||||||
|
*this, &LocallabVibrance::previewvibChanged));
|
||||||
|
|
||||||
setExpandAlignProperties(expmaskvib, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
setExpandAlignProperties(expmaskvib, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
||||||
|
|
||||||
showmaskvibMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
|
showmaskvibMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
|
||||||
@ -5301,6 +5590,8 @@ LocallabVibrance::LocallabVibrance():
|
|||||||
mask2vibCurveEditorG->curveListComplete();
|
mask2vibCurveEditorG->curveListComplete();
|
||||||
|
|
||||||
// Add Vibrance specific widgets to GUI
|
// Add Vibrance specific widgets to GUI
|
||||||
|
pack_start(*sensiv, Gtk::PACK_SHRINK, 0);//reused - nused here, but used for normalize_mean_dt
|
||||||
|
pack_start(*previewvib, Gtk::PACK_SHRINK, 0);
|
||||||
pack_start(*saturated, Gtk::PACK_SHRINK, 0);
|
pack_start(*saturated, Gtk::PACK_SHRINK, 0);
|
||||||
pack_start(*pastels, Gtk::PACK_SHRINK, 0);
|
pack_start(*pastels, Gtk::PACK_SHRINK, 0);
|
||||||
pack_start(*vibgam, Gtk::PACK_SHRINK, 0);
|
pack_start(*vibgam, Gtk::PACK_SHRINK, 0);
|
||||||
@ -5311,7 +5602,7 @@ LocallabVibrance::LocallabVibrance():
|
|||||||
pack_start(*protectSkins, Gtk::PACK_SHRINK, 0);
|
pack_start(*protectSkins, Gtk::PACK_SHRINK, 0);
|
||||||
pack_start(*avoidColorShift, Gtk::PACK_SHRINK, 0);
|
pack_start(*avoidColorShift, Gtk::PACK_SHRINK, 0);
|
||||||
pack_start(*pastSatTog, Gtk::PACK_SHRINK, 0);
|
pack_start(*pastSatTog, Gtk::PACK_SHRINK, 0);
|
||||||
// pack_start(*sensiv, Gtk::PACK_SHRINK, 0);//unused here, but used for normalize_mean_dt
|
// pack_start(*sensiv, Gtk::PACK_SHRINK, 0);//reused - nused here, but used for normalize_mean_dt
|
||||||
pack_start(*curveEditorGG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
|
pack_start(*curveEditorGG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
|
||||||
ToolParamBlock* const vibBox3 = Gtk::manage(new ToolParamBlock());
|
ToolParamBlock* const vibBox3 = Gtk::manage(new ToolParamBlock());
|
||||||
vibBox3->pack_start(*maskusablev, Gtk::PACK_SHRINK, 0);
|
vibBox3->pack_start(*maskusablev, Gtk::PACK_SHRINK, 0);
|
||||||
@ -5365,6 +5656,81 @@ void LocallabVibrance::resetMaskView()
|
|||||||
showmaskvibMethodConn.block(false);
|
showmaskvibMethodConn.block(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Gtk::ToggleButton *LocallabVibrance::getPreviewDeltaEButton() const
|
||||||
|
{
|
||||||
|
return previewvib;
|
||||||
|
}
|
||||||
|
|
||||||
|
sigc::connection *LocallabVibrance::getPreviewDeltaEButtonConnection()
|
||||||
|
{
|
||||||
|
return &previewvibConn;
|
||||||
|
}
|
||||||
|
|
||||||
|
//new function Global
|
||||||
|
void LocallabVibrance::updateguivib(int spottype)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
idle_register.add(
|
||||||
|
[this, spottype]() -> bool {
|
||||||
|
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||||
|
|
||||||
|
// Update GUI fullimage or main
|
||||||
|
disableListener();
|
||||||
|
|
||||||
|
if(spottype == 3) {
|
||||||
|
sensiv->hide();
|
||||||
|
showmaskvibMethod->set_active(0);
|
||||||
|
previewvib->hide();
|
||||||
|
previewvib->set_active(false);
|
||||||
|
resetMaskView();
|
||||||
|
} else {
|
||||||
|
sensiv->show();
|
||||||
|
previewvib->show();
|
||||||
|
}
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void LocallabVibrance::previewvibChanged()
|
||||||
|
{
|
||||||
|
|
||||||
|
if(previewvib->get_active()) {
|
||||||
|
showmaskvibMethod->set_active(4);
|
||||||
|
} else {
|
||||||
|
showmaskvibMethod->set_active(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isLocActivated) {
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(Evlocallabpreviewvib,"");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//new function scope
|
||||||
|
void LocallabVibrance::updateguiscopevib(int scope)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
idle_register.add(
|
||||||
|
[this, scope]() -> bool {
|
||||||
|
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||||
|
|
||||||
|
disableListener();
|
||||||
|
sensiv->setValue(scope);
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void LocallabVibrance::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask)
|
void LocallabVibrance::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask)
|
||||||
{
|
{
|
||||||
vibMask = showmaskvibMethod->get_active_row_number();
|
vibMask = showmaskvibMethod->get_active_row_number();
|
||||||
@ -6188,6 +6554,32 @@ void LocallabSoft::resetMaskView()
|
|||||||
showmasksoftMethodConn.block(false);
|
showmasksoftMethodConn.block(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//new function Global
|
||||||
|
void LocallabSoft::updateguisoft(int spottype)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
idle_register.add(
|
||||||
|
[this, spottype]() -> bool {
|
||||||
|
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||||
|
|
||||||
|
// Update GUI fullimage or main
|
||||||
|
disableListener();
|
||||||
|
|
||||||
|
if(spottype == 3) {
|
||||||
|
sensisf->hide();
|
||||||
|
} else {
|
||||||
|
sensisf->show();
|
||||||
|
}
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void LocallabSoft::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask)
|
void LocallabSoft::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask)
|
||||||
{
|
{
|
||||||
softMask = showmasksoftMethod->get_active_row_number();
|
softMask = showmasksoftMethod->get_active_row_number();
|
||||||
@ -7062,6 +7454,39 @@ void LocallabBlur::resetMaskView()
|
|||||||
showmaskblMethodConn.block(false);
|
showmaskblMethodConn.block(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//new function Global
|
||||||
|
void LocallabBlur::updateguiblur(int spottype)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
idle_register.add(
|
||||||
|
[this, spottype]() -> bool {
|
||||||
|
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||||
|
|
||||||
|
// Update GUI fullimage or main
|
||||||
|
disableListener();
|
||||||
|
|
||||||
|
if(spottype == 3) {
|
||||||
|
sensibn->hide();
|
||||||
|
sensiden->hide();
|
||||||
|
invbl->hide();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
sensibn->show();
|
||||||
|
sensiden->show();
|
||||||
|
invbl->show();
|
||||||
|
|
||||||
|
}
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void LocallabBlur::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask)
|
void LocallabBlur::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask)
|
||||||
{
|
{
|
||||||
blMask = showmaskblMethod->get_active_row_number();
|
blMask = showmaskblMethod->get_active_row_number();
|
||||||
|
@ -55,6 +55,15 @@ protected:
|
|||||||
Normal = 1,
|
Normal = 1,
|
||||||
Simple = 2
|
Simple = 2
|
||||||
};
|
};
|
||||||
|
rtengine::ProcEvent Evlocallabpreviewcol;
|
||||||
|
rtengine::ProcEvent Evlocallabpreviewexe;
|
||||||
|
rtengine::ProcEvent Evlocallabpreviewsh;
|
||||||
|
rtengine::ProcEvent Evlocallabpreviewvib;
|
||||||
|
rtengine::ProcEvent Evlocallabpreviewtm;
|
||||||
|
rtengine::ProcEvent Evlocallabpreviewlc;
|
||||||
|
rtengine::ProcEvent Evlocallabpreviewlog;
|
||||||
|
rtengine::ProcEvent Evlocallabpreviewcie;
|
||||||
|
rtengine::ProcEvent Evlocallabpreviewmas;
|
||||||
rtengine::ProcEvent Evlocallabnormcie;
|
rtengine::ProcEvent Evlocallabnormcie;
|
||||||
rtengine::ProcEvent Evlocallabstrumaskcie;
|
rtengine::ProcEvent Evlocallabstrumaskcie;
|
||||||
rtengine::ProcEvent EvLocallabtoolcie;
|
rtengine::ProcEvent EvLocallabtoolcie;
|
||||||
@ -186,6 +195,9 @@ public:
|
|||||||
virtual void resetMaskView() {};
|
virtual void resetMaskView() {};
|
||||||
virtual void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) {};
|
virtual void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) {};
|
||||||
|
|
||||||
|
virtual Gtk::ToggleButton *getPreviewDeltaEButton() const;
|
||||||
|
virtual sigc::connection *getPreviewDeltaEButtonConnection();
|
||||||
|
|
||||||
// Advice tooltips management function
|
// Advice tooltips management function
|
||||||
virtual void updateAdviceTooltips(const bool showTooltips) {};
|
virtual void updateAdviceTooltips(const bool showTooltips) {};
|
||||||
|
|
||||||
@ -248,6 +260,8 @@ private:
|
|||||||
MyComboBoxText* const gridMethod;
|
MyComboBoxText* const gridMethod;
|
||||||
Adjuster* const strengthgrid;
|
Adjuster* const strengthgrid;
|
||||||
Adjuster* const sensi;
|
Adjuster* const sensi;
|
||||||
|
Gtk::ToggleButton* const previewcol;
|
||||||
|
|
||||||
Adjuster* const structcol;
|
Adjuster* const structcol;
|
||||||
Adjuster* const blurcolde;
|
Adjuster* const blurcolde;
|
||||||
Adjuster* const softradiuscol;
|
Adjuster* const softradiuscol;
|
||||||
@ -326,18 +340,20 @@ private:
|
|||||||
FlatCurveEditor* const LLmaskcolshapewav;
|
FlatCurveEditor* const LLmaskcolshapewav;
|
||||||
ThresholdAdjuster* const csThresholdcol;
|
ThresholdAdjuster* const csThresholdcol;
|
||||||
|
|
||||||
sigc::connection curvactivConn, gridMethodConn, inversConn, qualitycurveMethodConn, toneMethodConn, specialConn, merMethodConn, mergecolMethodConn, showmaskcolMethodConn, showmaskcolMethodConninv, enaColorMaskConn, toolcolConn, fftColorMaskConn;
|
sigc::connection curvactivConn, previewcolConn, gridMethodConn, inversConn, qualitycurveMethodConn, toneMethodConn, specialConn, merMethodConn, mergecolMethodConn, showmaskcolMethodConn, showmaskcolMethodConninv, enaColorMaskConn, toolcolConn, fftColorMaskConn;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
LocallabColor();
|
LocallabColor();
|
||||||
~LocallabColor();
|
~LocallabColor();
|
||||||
|
|
||||||
void setListener(ToolPanelListener* tpl) override;
|
void setListener(ToolPanelListener* tpl) override;
|
||||||
|
|
||||||
bool isMaskViewActive() override;
|
bool isMaskViewActive() override;
|
||||||
void resetMaskView() override;
|
void resetMaskView() override;
|
||||||
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
||||||
|
|
||||||
|
Gtk::ToggleButton *getPreviewDeltaEButton() const override;
|
||||||
|
sigc::connection *getPreviewDeltaEButtonConnection() override;
|
||||||
|
|
||||||
void updateAdviceTooltips(const bool showTooltips) override;
|
void updateAdviceTooltips(const bool showTooltips) override;
|
||||||
|
|
||||||
void setDefaultExpanderVisibility() override;
|
void setDefaultExpanderVisibility() override;
|
||||||
@ -354,6 +370,9 @@ public:
|
|||||||
void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override {}; // Not used
|
void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override {}; // Not used
|
||||||
void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override;
|
void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override;
|
||||||
void curveChanged(CurveEditor* ce) override;
|
void curveChanged(CurveEditor* ce) override;
|
||||||
|
void updateguicolor(int spottype);
|
||||||
|
void updateguiscopecolor(int scope);
|
||||||
|
void previewcolChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void enabledChanged() override;
|
void enabledChanged() override;
|
||||||
@ -362,7 +381,6 @@ private:
|
|||||||
void updateGUIToMode(const modeType new_type) override;
|
void updateGUIToMode(const modeType new_type) override;
|
||||||
|
|
||||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer, const double normHuerjz) override;
|
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer, const double normHuerjz) override;
|
||||||
|
|
||||||
void curvactivChanged();
|
void curvactivChanged();
|
||||||
void gridMethodChanged();
|
void gridMethodChanged();
|
||||||
void inversChanged();
|
void inversChanged();
|
||||||
@ -376,7 +394,6 @@ private:
|
|||||||
void enaColorMaskChanged();
|
void enaColorMaskChanged();
|
||||||
void toolcolChanged();
|
void toolcolChanged();
|
||||||
void fftColorMaskChanged();
|
void fftColorMaskChanged();
|
||||||
|
|
||||||
void updateColorGUI1();
|
void updateColorGUI1();
|
||||||
void updateColorGUI2();
|
void updateColorGUI2();
|
||||||
void updateColorGUI3();
|
void updateColorGUI3();
|
||||||
@ -409,6 +426,8 @@ private:
|
|||||||
Adjuster* const fatanchor;
|
Adjuster* const fatanchor;
|
||||||
Adjuster* const gamex;
|
Adjuster* const gamex;
|
||||||
Adjuster* const sensiex;
|
Adjuster* const sensiex;
|
||||||
|
Gtk::ToggleButton* const previewexe;
|
||||||
|
|
||||||
Adjuster* const structexp;
|
Adjuster* const structexp;
|
||||||
Adjuster* const blurexpde;
|
Adjuster* const blurexpde;
|
||||||
MyExpander* const exptoolexp;
|
MyExpander* const exptoolexp;
|
||||||
@ -456,7 +475,7 @@ private:
|
|||||||
DiagonalCurveEditor* const Lmaskexpshape;
|
DiagonalCurveEditor* const Lmaskexpshape;
|
||||||
rtengine::ProcEvent Evlocallabtmosatur;
|
rtengine::ProcEvent Evlocallabtmosatur;
|
||||||
|
|
||||||
sigc::connection expMethodConn, exnoiseMethodConn, inversexConn, normConn, fatsaturConn, showmaskexpMethodConn, showmaskexpMethodConninv, enaExpMaskConn, enaExpMaskaftConn;
|
sigc::connection expMethodConn, exnoiseMethodConn, previewexeConn, inversexConn, normConn, fatsaturConn, showmaskexpMethodConn, showmaskexpMethodConninv, enaExpMaskConn, enaExpMaskaftConn;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
LocallabExposure();
|
LocallabExposure();
|
||||||
@ -466,6 +485,9 @@ public:
|
|||||||
void resetMaskView() override;
|
void resetMaskView() override;
|
||||||
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
||||||
|
|
||||||
|
Gtk::ToggleButton *getPreviewDeltaEButton() const override;
|
||||||
|
sigc::connection *getPreviewDeltaEButtonConnection() override;
|
||||||
|
|
||||||
void updateAdviceTooltips(const bool showTooltips) override;
|
void updateAdviceTooltips(const bool showTooltips) override;
|
||||||
|
|
||||||
void setDefaultExpanderVisibility() override;
|
void setDefaultExpanderVisibility() override;
|
||||||
@ -476,6 +498,8 @@ public:
|
|||||||
void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
|
void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
|
||||||
void adjusterChanged(Adjuster* a, double newval) override;
|
void adjusterChanged(Adjuster* a, double newval) override;
|
||||||
void curveChanged(CurveEditor* ce) override;
|
void curveChanged(CurveEditor* ce) override;
|
||||||
|
void updateguiexpos(int spottype);
|
||||||
|
void previewexeChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void enabledChanged() override;
|
void enabledChanged() override;
|
||||||
@ -519,6 +543,8 @@ private:
|
|||||||
Adjuster* const s_tonalwidth;
|
Adjuster* const s_tonalwidth;
|
||||||
Adjuster* const sh_radius;
|
Adjuster* const sh_radius;
|
||||||
Adjuster* const sensihs;
|
Adjuster* const sensihs;
|
||||||
|
Gtk::ToggleButton* const previewsh;
|
||||||
|
|
||||||
Adjuster* const blurSHde;
|
Adjuster* const blurSHde;
|
||||||
MyExpander* const exprecovs;
|
MyExpander* const exprecovs;
|
||||||
Gtk::Label* const maskusables;
|
Gtk::Label* const maskusables;
|
||||||
@ -556,7 +582,7 @@ private:
|
|||||||
|
|
||||||
rtengine::ProcEvent EvlocallabTePivot;
|
rtengine::ProcEvent EvlocallabTePivot;
|
||||||
|
|
||||||
sigc::connection shMethodConn, inversshConn, showmaskSHMethodConn, showmaskSHMethodConninv, enaSHMaskConn;
|
sigc::connection shMethodConn, previewshConn, inversshConn, showmaskSHMethodConn, showmaskSHMethodConninv, enaSHMaskConn;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
LocallabShadow();
|
LocallabShadow();
|
||||||
@ -566,8 +592,13 @@ public:
|
|||||||
void resetMaskView() override;
|
void resetMaskView() override;
|
||||||
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
||||||
|
|
||||||
void updateAdviceTooltips(const bool showTooltips) override;
|
Gtk::ToggleButton *getPreviewDeltaEButton() const override;
|
||||||
|
sigc::connection *getPreviewDeltaEButtonConnection() override;
|
||||||
|
|
||||||
|
void updateAdviceTooltips(const bool showTooltips) override;
|
||||||
|
void updateguishad(int spottype);
|
||||||
|
void updateguiscopesahd(int scope);
|
||||||
|
|
||||||
void setDefaultExpanderVisibility() override;
|
void setDefaultExpanderVisibility() override;
|
||||||
void disableListener() override;
|
void disableListener() override;
|
||||||
void enableListener() override;
|
void enableListener() override;
|
||||||
@ -576,6 +607,7 @@ public:
|
|||||||
void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
|
void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
|
||||||
void adjusterChanged(Adjuster* a, double newval) override;
|
void adjusterChanged(Adjuster* a, double newval) override;
|
||||||
void curveChanged(CurveEditor* ce) override;
|
void curveChanged(CurveEditor* ce) override;
|
||||||
|
void previewshChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void enabledChanged() override;
|
void enabledChanged() override;
|
||||||
@ -613,6 +645,8 @@ private:
|
|||||||
Gtk::CheckButton* const avoidColorShift;
|
Gtk::CheckButton* const avoidColorShift;
|
||||||
Gtk::CheckButton* const pastSatTog;
|
Gtk::CheckButton* const pastSatTog;
|
||||||
Adjuster* const sensiv;
|
Adjuster* const sensiv;
|
||||||
|
Gtk::ToggleButton* const previewvib;
|
||||||
|
|
||||||
CurveEditorGroup* const curveEditorGG;
|
CurveEditorGroup* const curveEditorGG;
|
||||||
DiagonalCurveEditor* const skinTonesCurve;
|
DiagonalCurveEditor* const skinTonesCurve;
|
||||||
MyExpander* const exprecovv;
|
MyExpander* const exprecovv;
|
||||||
@ -643,7 +677,7 @@ private:
|
|||||||
CurveEditorGroup* const mask2vibCurveEditorG;
|
CurveEditorGroup* const mask2vibCurveEditorG;
|
||||||
DiagonalCurveEditor* const Lmaskvibshape;
|
DiagonalCurveEditor* const Lmaskvibshape;
|
||||||
|
|
||||||
sigc::connection pskinsConn, ashiftConn, pastsattogConn, showmaskvibMethodConn, enavibMaskConn;
|
sigc::connection pskinsConn, previewvibConn, ashiftConn, pastsattogConn, showmaskvibMethodConn, enavibMaskConn;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
LocallabVibrance();
|
LocallabVibrance();
|
||||||
@ -653,7 +687,12 @@ public:
|
|||||||
void resetMaskView() override;
|
void resetMaskView() override;
|
||||||
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
||||||
|
|
||||||
|
Gtk::ToggleButton *getPreviewDeltaEButton() const override;
|
||||||
|
sigc::connection *getPreviewDeltaEButtonConnection() override;
|
||||||
|
|
||||||
void updateAdviceTooltips(const bool showTooltips) override;
|
void updateAdviceTooltips(const bool showTooltips) override;
|
||||||
|
void updateguivib(int spottype);
|
||||||
|
void updateguiscopevib(int scope);
|
||||||
|
|
||||||
void setDefaultExpanderVisibility() override;
|
void setDefaultExpanderVisibility() override;
|
||||||
void disableListener() override;
|
void disableListener() override;
|
||||||
@ -670,6 +709,7 @@ public:
|
|||||||
void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override {}; // Not used
|
void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override {}; // Not used
|
||||||
std::vector<double> getCurvePoints(ThresholdSelector* tAdjuster) const override;
|
std::vector<double> getCurvePoints(ThresholdSelector* tAdjuster) const override;
|
||||||
void curveChanged(CurveEditor* ce) override;
|
void curveChanged(CurveEditor* ce) override;
|
||||||
|
void previewvibChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void enabledChanged() override;
|
void enabledChanged() override;
|
||||||
@ -712,6 +752,7 @@ public:
|
|||||||
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
||||||
|
|
||||||
void updateAdviceTooltips(const bool showTooltips) override;
|
void updateAdviceTooltips(const bool showTooltips) override;
|
||||||
|
void updateguisoft(int spottype);
|
||||||
|
|
||||||
void disableListener() override;
|
void disableListener() override;
|
||||||
void enableListener() override;
|
void enableListener() override;
|
||||||
@ -765,6 +806,7 @@ private:
|
|||||||
Adjuster* const lowthres;
|
Adjuster* const lowthres;
|
||||||
Adjuster* const higthres;
|
Adjuster* const higthres;
|
||||||
Adjuster* const sensibn;
|
Adjuster* const sensibn;
|
||||||
|
|
||||||
MyComboBoxText* const blurMethod;
|
MyComboBoxText* const blurMethod;
|
||||||
Gtk::CheckButton* const invbl;
|
Gtk::CheckButton* const invbl;
|
||||||
MyComboBoxText* const chroMethod;
|
MyComboBoxText* const chroMethod;
|
||||||
@ -827,6 +869,7 @@ private:
|
|||||||
Adjuster* const nlgam;
|
Adjuster* const nlgam;
|
||||||
Adjuster* const bilateral;
|
Adjuster* const bilateral;
|
||||||
Adjuster* const sensiden;
|
Adjuster* const sensiden;
|
||||||
|
|
||||||
Adjuster* const reparden;
|
Adjuster* const reparden;
|
||||||
Gtk::Button* neutral;
|
Gtk::Button* neutral;
|
||||||
MyExpander* const expmaskbl;
|
MyExpander* const expmaskbl;
|
||||||
@ -863,13 +906,13 @@ public:
|
|||||||
~LocallabBlur();
|
~LocallabBlur();
|
||||||
void updatedenlc(const double highres, const double nres, const double highres46, const double nres46, const double Lhighres, const double Lnres, const double Lhighres46, const double Lnres46);
|
void updatedenlc(const double highres, const double nres, const double highres46, const double nres46, const double Lhighres, const double Lnres, const double Lhighres46, const double Lnres46);
|
||||||
|
|
||||||
|
|
||||||
bool isMaskViewActive() override;
|
bool isMaskViewActive() override;
|
||||||
void resetMaskView() override;
|
void resetMaskView() override;
|
||||||
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
||||||
|
|
||||||
void updateAdviceTooltips(const bool showTooltips) override;
|
void updateAdviceTooltips(const bool showTooltips) override;
|
||||||
void neutral_pressed();
|
void neutral_pressed();
|
||||||
|
void updateguiblur(int spottype);
|
||||||
|
|
||||||
void setDefaultExpanderVisibility() override;
|
void setDefaultExpanderVisibility() override;
|
||||||
void disableListener() override;
|
void disableListener() override;
|
||||||
@ -931,6 +974,8 @@ private:
|
|||||||
Adjuster* const rewei;
|
Adjuster* const rewei;
|
||||||
Adjuster* const softradiustm;
|
Adjuster* const softradiustm;
|
||||||
Adjuster* const sensitm;
|
Adjuster* const sensitm;
|
||||||
|
Gtk::ToggleButton* const previewtm;
|
||||||
|
|
||||||
MyExpander* const exprecovt;
|
MyExpander* const exprecovt;
|
||||||
Gtk::Label* const maskusablet;
|
Gtk::Label* const maskusablet;
|
||||||
Gtk::Label* const maskunusablet;
|
Gtk::Label* const maskunusablet;
|
||||||
@ -955,7 +1000,7 @@ private:
|
|||||||
CurveEditorGroup* const mask2tmCurveEditorG;
|
CurveEditorGroup* const mask2tmCurveEditorG;
|
||||||
DiagonalCurveEditor* const Lmasktmshape;
|
DiagonalCurveEditor* const Lmasktmshape;
|
||||||
|
|
||||||
sigc::connection equiltmConn, showmasktmMethodConn, enatmMaskConn, enatmMaskaftConn;
|
sigc::connection equiltmConn, previewtmConn, showmasktmMethodConn, enatmMaskConn, enatmMaskaftConn;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
LocallabTone();
|
LocallabTone();
|
||||||
@ -965,8 +1010,12 @@ public:
|
|||||||
void resetMaskView() override;
|
void resetMaskView() override;
|
||||||
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
||||||
|
|
||||||
void updateAdviceTooltips(const bool showTooltips) override;
|
Gtk::ToggleButton *getPreviewDeltaEButton() const override;
|
||||||
|
sigc::connection *getPreviewDeltaEButtonConnection() override;
|
||||||
|
|
||||||
|
void updateAdviceTooltips(const bool showTooltips) override;
|
||||||
|
void updateguitone(int spottype);
|
||||||
|
void previewtmChanged();
|
||||||
void setDefaultExpanderVisibility() override;
|
void setDefaultExpanderVisibility() override;
|
||||||
void disableListener() override;
|
void disableListener() override;
|
||||||
void enableListener() override;
|
void enableListener() override;
|
||||||
@ -1062,6 +1111,7 @@ public:
|
|||||||
~LocallabRetinex();
|
~LocallabRetinex();
|
||||||
|
|
||||||
void updateMinMax(const double cdma, const double cdmin, const double mini, const double maxi, const double Tmean, const double Tsigma, const double Tmin, const double Tmax);
|
void updateMinMax(const double cdma, const double cdmin, const double mini, const double maxi, const double Tmean, const double Tsigma, const double Tmin, const double Tmax);
|
||||||
|
void updateguireti(int spottype);
|
||||||
|
|
||||||
bool isMaskViewActive() override;
|
bool isMaskViewActive() override;
|
||||||
void resetMaskView() override;
|
void resetMaskView() override;
|
||||||
@ -1128,6 +1178,7 @@ public:
|
|||||||
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
||||||
|
|
||||||
void updateAdviceTooltips(const bool showTooltips) override;
|
void updateAdviceTooltips(const bool showTooltips) override;
|
||||||
|
void updateguisharp(int spottype);
|
||||||
|
|
||||||
void disableListener() override;
|
void disableListener() override;
|
||||||
void enableListener() override;
|
void enableListener() override;
|
||||||
@ -1176,6 +1227,8 @@ private:
|
|||||||
Adjuster* const residgam;
|
Adjuster* const residgam;
|
||||||
Adjuster* const residslop;
|
Adjuster* const residslop;
|
||||||
Adjuster* const sensilc;
|
Adjuster* const sensilc;
|
||||||
|
Gtk::ToggleButton* const previewlc;
|
||||||
|
|
||||||
Adjuster* const reparw;
|
Adjuster* const reparw;
|
||||||
Gtk::Frame* const clariFrame;
|
Gtk::Frame* const clariFrame;
|
||||||
Adjuster* const clarilres;
|
Adjuster* const clarilres;
|
||||||
@ -1251,7 +1304,7 @@ private:
|
|||||||
CurveEditorGroup* const mask2lcCurveEditorG;
|
CurveEditorGroup* const mask2lcCurveEditorG;
|
||||||
DiagonalCurveEditor* const Lmasklcshape;
|
DiagonalCurveEditor* const Lmasklcshape;
|
||||||
|
|
||||||
sigc::connection localcontMethodConn, origlcConn, wavgradlConn, wavedgConn, localedgMethodConn, waveshowConn, localneiMethodConn, wavblurConn, blurlcConn, wavcontConn, wavcompreConn, wavcompConn, fftwlcConn, showmasklcMethodConn, enalcMaskConn;
|
sigc::connection localcontMethodConn, previewlcConn, origlcConn, wavgradlConn, wavedgConn, localedgMethodConn, waveshowConn, localneiMethodConn, wavblurConn, blurlcConn, wavcontConn, wavcompreConn, wavcompConn, fftwlcConn, showmasklcMethodConn, enalcMaskConn;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
LocallabContrast();
|
LocallabContrast();
|
||||||
@ -1261,8 +1314,11 @@ public:
|
|||||||
void resetMaskView() override;
|
void resetMaskView() override;
|
||||||
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
||||||
|
|
||||||
void updateAdviceTooltips(const bool showTooltips) override;
|
Gtk::ToggleButton *getPreviewDeltaEButton() const override;
|
||||||
|
sigc::connection *getPreviewDeltaEButtonConnection() override;
|
||||||
|
|
||||||
|
void updateAdviceTooltips(const bool showTooltips) override;
|
||||||
|
void updateguicont(int spottype);
|
||||||
void setDefaultExpanderVisibility() override;
|
void setDefaultExpanderVisibility() override;
|
||||||
void disableListener() override;
|
void disableListener() override;
|
||||||
void enableListener() override;
|
void enableListener() override;
|
||||||
@ -1277,6 +1333,7 @@ public:
|
|||||||
void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override {}; // Not used
|
void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override {}; // Not used
|
||||||
void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override;
|
void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override;
|
||||||
void curveChanged(CurveEditor* ce) override;
|
void curveChanged(CurveEditor* ce) override;
|
||||||
|
void previewlcChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void enabledChanged() override;
|
void enabledChanged() override;
|
||||||
@ -1361,6 +1418,7 @@ public:
|
|||||||
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
||||||
|
|
||||||
void updateAdviceTooltips(const bool showTooltips) override;
|
void updateAdviceTooltips(const bool showTooltips) override;
|
||||||
|
void updateguicbdl(int spottype);
|
||||||
|
|
||||||
void setDefaultExpanderVisibility() override;
|
void setDefaultExpanderVisibility() override;
|
||||||
void disableListener() override;
|
void disableListener() override;
|
||||||
@ -1443,6 +1501,8 @@ private:
|
|||||||
Adjuster* const decayl;
|
Adjuster* const decayl;
|
||||||
|
|
||||||
Adjuster* const sensilog;
|
Adjuster* const sensilog;
|
||||||
|
Gtk::ToggleButton* const previewlog;
|
||||||
|
|
||||||
Gtk::Frame* const gradlogFrame;
|
Gtk::Frame* const gradlogFrame;
|
||||||
Adjuster* const strlog;
|
Adjuster* const strlog;
|
||||||
Adjuster* const anglog;
|
Adjuster* const anglog;
|
||||||
@ -1461,7 +1521,7 @@ private:
|
|||||||
|
|
||||||
sigc::connection autoconn, ciecamconn, fullimageConn, AutograyConn;
|
sigc::connection autoconn, ciecamconn, fullimageConn, AutograyConn;
|
||||||
sigc::connection surroundconn, sursourconn, satlogconn;
|
sigc::connection surroundconn, sursourconn, satlogconn;
|
||||||
sigc::connection showmaskLMethodConn, enaLMaskConn;
|
sigc::connection showmaskLMethodConn, enaLMaskConn, previewlogConn;
|
||||||
public:
|
public:
|
||||||
LocallabLog();
|
LocallabLog();
|
||||||
~LocallabLog();
|
~LocallabLog();
|
||||||
@ -1469,6 +1529,11 @@ public:
|
|||||||
bool isMaskViewActive() override;
|
bool isMaskViewActive() override;
|
||||||
void resetMaskView() override;
|
void resetMaskView() override;
|
||||||
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
||||||
|
void updateguilog(int spottype);
|
||||||
|
void previewlogChanged();
|
||||||
|
|
||||||
|
Gtk::ToggleButton *getPreviewDeltaEButton() const override;
|
||||||
|
sigc::connection *getPreviewDeltaEButtonConnection() override;
|
||||||
|
|
||||||
void updateAdviceTooltips(const bool showTooltips) override;
|
void updateAdviceTooltips(const bool showTooltips) override;
|
||||||
void surroundChanged();
|
void surroundChanged();
|
||||||
@ -1514,6 +1579,8 @@ class LocallabMask:
|
|||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
Adjuster* const sensimask;
|
Adjuster* const sensimask;
|
||||||
|
Gtk::ToggleButton* const previewmas;
|
||||||
|
|
||||||
Adjuster* const blendmask;
|
Adjuster* const blendmask;
|
||||||
Adjuster* const blendmaskab;
|
Adjuster* const blendmaskab;
|
||||||
Adjuster* const softradiusmask;
|
Adjuster* const softradiusmask;
|
||||||
@ -1548,7 +1615,7 @@ private:
|
|||||||
Adjuster* const str_mask;
|
Adjuster* const str_mask;
|
||||||
Adjuster* const ang_mask;
|
Adjuster* const ang_mask;
|
||||||
|
|
||||||
sigc::connection showmask_MethodConn, enamaskConn, toolmaskConn, fftmaskConn;
|
sigc::connection showmask_MethodConn, previewmasConn, enamaskConn, toolmaskConn, fftmaskConn;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
LocallabMask();
|
LocallabMask();
|
||||||
@ -1558,7 +1625,12 @@ public:
|
|||||||
void resetMaskView() override;
|
void resetMaskView() override;
|
||||||
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
||||||
|
|
||||||
|
Gtk::ToggleButton *getPreviewDeltaEButton() const override;
|
||||||
|
sigc::connection *getPreviewDeltaEButtonConnection() override;
|
||||||
|
|
||||||
void updateAdviceTooltips(const bool showTooltips) override;
|
void updateAdviceTooltips(const bool showTooltips) override;
|
||||||
|
void updateguimask(int spottype);
|
||||||
|
void previewmasChanged();
|
||||||
|
|
||||||
void disableListener() override;
|
void disableListener() override;
|
||||||
void enableListener() override;
|
void enableListener() override;
|
||||||
@ -1601,6 +1673,8 @@ class Locallabcie:
|
|||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
Adjuster* const sensicie;
|
Adjuster* const sensicie;
|
||||||
|
Gtk::ToggleButton* const previewcie;
|
||||||
|
|
||||||
Adjuster* const reparcie;
|
Adjuster* const reparcie;
|
||||||
Gtk::CheckButton* const jabcie;
|
Gtk::CheckButton* const jabcie;
|
||||||
MyComboBoxText* const modecam;
|
MyComboBoxText* const modecam;
|
||||||
@ -1838,6 +1912,7 @@ private:
|
|||||||
int nextcomprciecount = 0;
|
int nextcomprciecount = 0;
|
||||||
|
|
||||||
sigc::connection AutograycieConn, primMethodconn, illMethodconn, smoothciemetconn, catMethodconn, forcejzConn, forcebwConn, qtojConn, showmaskcieMethodConn, enacieMaskConn, enacieMaskallConn, jabcieConn, sursourcieconn, surroundcieconn, modecieconn, modecamconn, comprcieautoconn, normcieconn, logcieconn, satcieconn, logcieqconn,smoothcieconn, smoothcieybconn,smoothcielumconn, logjzconn, sigjzconn, sigqconn, chjzcieconn, toneMethodcieConn, toneMethodcieConn2, toolcieConn, bwevMethodConn, fftcieMaskConn, gamutcieconn, bwcieconn, expprecamconn, sigcieconn;
|
sigc::connection AutograycieConn, primMethodconn, illMethodconn, smoothciemetconn, catMethodconn, forcejzConn, forcebwConn, qtojConn, showmaskcieMethodConn, enacieMaskConn, enacieMaskallConn, jabcieConn, sursourcieconn, surroundcieconn, modecieconn, modecamconn, comprcieautoconn, normcieconn, logcieconn, satcieconn, logcieqconn,smoothcieconn, smoothcieybconn,smoothcielumconn, logjzconn, sigjzconn, sigqconn, chjzcieconn, toneMethodcieConn, toneMethodcieConn2, toolcieConn, bwevMethodConn, fftcieMaskConn, gamutcieconn, bwcieconn, expprecamconn, sigcieconn;
|
||||||
|
sigc::connection previewcieConn, sigmoidqjcieconn;
|
||||||
public:
|
public:
|
||||||
Locallabcie();
|
Locallabcie();
|
||||||
~Locallabcie();
|
~Locallabcie();
|
||||||
@ -1848,9 +1923,13 @@ public:
|
|||||||
void resetMaskView() override;
|
void resetMaskView() override;
|
||||||
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
void getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask, int &cieMask) override;
|
||||||
|
|
||||||
|
Gtk::ToggleButton *getPreviewDeltaEButton() const override;
|
||||||
|
sigc::connection *getPreviewDeltaEButtonConnection() override;
|
||||||
|
|
||||||
void updateAdviceTooltips(const bool showTooltips) override;
|
void updateAdviceTooltips(const bool showTooltips) override;
|
||||||
void setDefaultExpanderVisibility() override;
|
void setDefaultExpanderVisibility() override;
|
||||||
|
void updateguicie(int spottype);
|
||||||
|
void previewcieChanged();
|
||||||
void disableListener() override;
|
void disableListener() override;
|
||||||
void enableListener() override;
|
void enableListener() override;
|
||||||
void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
|
void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
|
||||||
|
@ -132,6 +132,7 @@ LocallabTone::LocallabTone():
|
|||||||
rewei(Gtk::manage(new Adjuster(M("TP_LOCALLAB_REWEI"), 0, 3, 1, 0))),
|
rewei(Gtk::manage(new Adjuster(M("TP_LOCALLAB_REWEI"), 0, 3, 1, 0))),
|
||||||
softradiustm(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SOFTRADIUSCOL"), 0.0, 100.0, 0.1, 0.))),//unused here, but used for normalize_mean_dt
|
softradiustm(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SOFTRADIUSCOL"), 0.0, 100.0, 0.1, 0.))),//unused here, but used for normalize_mean_dt
|
||||||
sensitm(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 60))),
|
sensitm(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 60))),
|
||||||
|
previewtm(Gtk::manage(new Gtk::ToggleButton(M("TP_LOCALLAB_PREVIEW")))),
|
||||||
exprecovt(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_DENOI2_EXP")))),
|
exprecovt(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_DENOI2_EXP")))),
|
||||||
maskusablet(Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_MASKUSABLE")))),
|
maskusablet(Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_MASKUSABLE")))),
|
||||||
maskunusablet(Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_MASKUNUSABLE")))),
|
maskunusablet(Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_MASKUNUSABLE")))),
|
||||||
@ -157,6 +158,9 @@ LocallabTone::LocallabTone():
|
|||||||
mask2tmCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK2"))),
|
mask2tmCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK2"))),
|
||||||
Lmasktmshape(static_cast<DiagonalCurveEditor*>(mask2tmCurveEditorG->addCurve(CT_Diagonal, "L(L)")))
|
Lmasktmshape(static_cast<DiagonalCurveEditor*>(mask2tmCurveEditorG->addCurve(CT_Diagonal, "L(L)")))
|
||||||
{
|
{
|
||||||
|
auto m = ProcEventMapper::getInstance();
|
||||||
|
Evlocallabpreviewtm = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_PREVIEWTM");
|
||||||
|
|
||||||
set_orientation(Gtk::ORIENTATION_VERTICAL);
|
set_orientation(Gtk::ORIENTATION_VERTICAL);
|
||||||
|
|
||||||
const LocallabParams::LocallabSpot defSpot;
|
const LocallabParams::LocallabSpot defSpot;
|
||||||
@ -191,6 +195,11 @@ LocallabTone::LocallabTone():
|
|||||||
decayt->setAdjusterListener(this);
|
decayt->setAdjusterListener(this);
|
||||||
setExpandAlignProperties(exprecovt, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
setExpandAlignProperties(exprecovt, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
||||||
|
|
||||||
|
previewtm->set_active(false);
|
||||||
|
previewtmConn = previewtm->signal_clicked().connect(
|
||||||
|
sigc::mem_fun(
|
||||||
|
*this, &LocallabTone::previewtmChanged));
|
||||||
|
|
||||||
setExpandAlignProperties(expmasktm, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
setExpandAlignProperties(expmasktm, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
||||||
|
|
||||||
showmasktmMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
|
showmasktmMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
|
||||||
@ -246,6 +255,7 @@ LocallabTone::LocallabTone():
|
|||||||
// Add Tone Mapping specific widgets to GUI
|
// Add Tone Mapping specific widgets to GUI
|
||||||
// pack_start(*amount); // To use if we change transit_shapedetect parameters
|
// pack_start(*amount); // To use if we change transit_shapedetect parameters
|
||||||
pack_start(*sensitm);
|
pack_start(*sensitm);
|
||||||
|
pack_start(*previewtm);
|
||||||
pack_start(*repartm);
|
pack_start(*repartm);
|
||||||
pack_start(*separatortm);
|
pack_start(*separatortm);
|
||||||
pack_start(*stren);
|
pack_start(*stren);
|
||||||
@ -307,6 +317,16 @@ void LocallabTone::getMaskView(int &colorMask, int &colorMaskinv, int &expMask,
|
|||||||
tmMask = showmasktmMethod->get_active_row_number();
|
tmMask = showmasktmMethod->get_active_row_number();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Gtk::ToggleButton *LocallabTone::getPreviewDeltaEButton() const
|
||||||
|
{
|
||||||
|
return previewtm;
|
||||||
|
}
|
||||||
|
|
||||||
|
sigc::connection *LocallabTone::getPreviewDeltaEButtonConnection()
|
||||||
|
{
|
||||||
|
return &previewtmConn;
|
||||||
|
}
|
||||||
|
|
||||||
void LocallabTone::updateAdviceTooltips(const bool showTooltips)
|
void LocallabTone::updateAdviceTooltips(const bool showTooltips)
|
||||||
{
|
{
|
||||||
if (showTooltips) {
|
if (showTooltips) {
|
||||||
@ -395,6 +415,58 @@ void LocallabTone::enableListener()
|
|||||||
enatmMaskaftConn.block(false);
|
enatmMaskaftConn.block(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//new function Global
|
||||||
|
void LocallabTone::updateguitone(int spottype)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
idle_register.add(
|
||||||
|
[this, spottype]() -> bool {
|
||||||
|
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||||
|
|
||||||
|
// Update GUI fullimage or main
|
||||||
|
disableListener();
|
||||||
|
|
||||||
|
if(spottype == 3) {
|
||||||
|
sensitm->hide();
|
||||||
|
// showmasktmMethodConn.block(true);
|
||||||
|
showmasktmMethod->set_active(0);
|
||||||
|
// showmasktmMethodConn.block(false);
|
||||||
|
previewtm->hide();
|
||||||
|
// previewtmConn.block(true);
|
||||||
|
previewtm->set_active(false);
|
||||||
|
// previewtmConn.block(false);
|
||||||
|
resetMaskView();
|
||||||
|
} else {
|
||||||
|
sensitm->show();
|
||||||
|
previewtm->show();
|
||||||
|
}
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void LocallabTone::previewtmChanged()
|
||||||
|
{
|
||||||
|
// showmasktmMethodConn.block(true);
|
||||||
|
|
||||||
|
if(previewtm->get_active()) {
|
||||||
|
showmasktmMethod->set_active(4);
|
||||||
|
} else {
|
||||||
|
showmasktmMethod->set_active(0);
|
||||||
|
}
|
||||||
|
// showmasktmMethodConn.block(false);
|
||||||
|
|
||||||
|
if (isLocActivated) {
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(Evlocallabpreviewtm,"");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void LocallabTone::read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited)
|
void LocallabTone::read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited)
|
||||||
{
|
{
|
||||||
// Disable all listeners
|
// Disable all listeners
|
||||||
@ -945,7 +1017,7 @@ LocallabRetinex::LocallabRetinex():
|
|||||||
showmaskretiMethod->append(M("TP_LOCALLAB_SHOWMODIF"));
|
showmaskretiMethod->append(M("TP_LOCALLAB_SHOWMODIF"));
|
||||||
showmaskretiMethod->append(M("TP_LOCALLAB_SHOWMODIFMASK"));
|
showmaskretiMethod->append(M("TP_LOCALLAB_SHOWMODIFMASK"));
|
||||||
showmaskretiMethod->append(M("TP_LOCALLAB_SHOWMASK"));
|
showmaskretiMethod->append(M("TP_LOCALLAB_SHOWMASK"));
|
||||||
showmaskretiMethod->append(M("TP_LOCALLAB_SHOWREF"));
|
// showmaskretiMethod->append(M("TP_LOCALLAB_SHOWREF"));
|
||||||
showmaskretiMethod->set_active(0);
|
showmaskretiMethod->set_active(0);
|
||||||
showmaskretiMethod->set_tooltip_markup(M("TP_LOCALLAB_SHOWMASKCOL_TOOLTIP"));
|
showmaskretiMethod->set_tooltip_markup(M("TP_LOCALLAB_SHOWMASKCOL_TOOLTIP"));
|
||||||
showmaskretiMethodConn = showmaskretiMethod->signal_changed().connect(sigc::mem_fun(*this, &LocallabRetinex::showmaskretiMethodChanged));
|
showmaskretiMethodConn = showmaskretiMethod->signal_changed().connect(sigc::mem_fun(*this, &LocallabRetinex::showmaskretiMethodChanged));
|
||||||
@ -1103,6 +1175,32 @@ void LocallabRetinex::updateMinMax(const double cdma, const double cdmin, const
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//new function Global
|
||||||
|
void LocallabRetinex::updateguireti(int spottype)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
idle_register.add(
|
||||||
|
[this, spottype]() -> bool {
|
||||||
|
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||||
|
|
||||||
|
// Update GUI fullimage or main
|
||||||
|
disableListener();
|
||||||
|
|
||||||
|
if(spottype == 3) {
|
||||||
|
sensih->hide();
|
||||||
|
} else {
|
||||||
|
sensih->show();
|
||||||
|
}
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool LocallabRetinex::isMaskViewActive()
|
bool LocallabRetinex::isMaskViewActive()
|
||||||
{
|
{
|
||||||
return (showmaskretiMethod->get_active_row_number() != 0);
|
return (showmaskretiMethod->get_active_row_number() != 0);
|
||||||
@ -2109,6 +2207,33 @@ void LocallabSharp::enableListener()
|
|||||||
showmasksharMethodConn.block(false);
|
showmasksharMethodConn.block(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//new function Global
|
||||||
|
void LocallabSharp::updateguisharp(int spottype)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
idle_register.add(
|
||||||
|
[this, spottype]() -> bool {
|
||||||
|
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||||
|
|
||||||
|
// Update GUI fullimage or main
|
||||||
|
disableListener();
|
||||||
|
|
||||||
|
if(spottype == 3) {
|
||||||
|
sensisha->hide();
|
||||||
|
inverssha->hide();
|
||||||
|
} else {
|
||||||
|
sensisha->show();
|
||||||
|
inverssha->show();
|
||||||
|
}
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void LocallabSharp::read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited)
|
void LocallabSharp::read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited)
|
||||||
{
|
{
|
||||||
// Disable all listeners
|
// Disable all listeners
|
||||||
@ -2397,6 +2522,7 @@ LocallabContrast::LocallabContrast():
|
|||||||
residgam(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GAMSH"), 0.25, 15.0, 0.01, 2.4))),
|
residgam(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GAMSH"), 0.25, 15.0, 0.01, 2.4))),
|
||||||
residslop(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SLOSH"), 0.0, 500.0, 0.01, 12.92))),
|
residslop(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SLOSH"), 0.0, 500.0, 0.01, 12.92))),
|
||||||
sensilc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 60))),
|
sensilc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 60))),
|
||||||
|
previewlc(Gtk::manage(new Gtk::ToggleButton(M("TP_LOCALLAB_PREVIEW")))),
|
||||||
reparw(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LOGREPART"), 1.0, 100.0, 1., 100.0))),
|
reparw(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LOGREPART"), 1.0, 100.0, 1., 100.0))),
|
||||||
clariFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_CLARIFRA")))),
|
clariFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_CLARIFRA")))),
|
||||||
clarilres(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CLARILRES"), -20., 100., 0.5, 0.))),
|
clarilres(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CLARILRES"), -20., 100., 0.5, 0.))),
|
||||||
@ -2474,6 +2600,9 @@ LocallabContrast::LocallabContrast():
|
|||||||
mask2lcCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK2"))),
|
mask2lcCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK2"))),
|
||||||
Lmasklcshape(static_cast<DiagonalCurveEditor*>(mask2lcCurveEditorG->addCurve(CT_Diagonal, "L(L)")))
|
Lmasklcshape(static_cast<DiagonalCurveEditor*>(mask2lcCurveEditorG->addCurve(CT_Diagonal, "L(L)")))
|
||||||
{
|
{
|
||||||
|
auto m = ProcEventMapper::getInstance();
|
||||||
|
Evlocallabpreviewlc = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_PREVIEWLC");
|
||||||
|
|
||||||
set_orientation(Gtk::ORIENTATION_VERTICAL);
|
set_orientation(Gtk::ORIENTATION_VERTICAL);
|
||||||
|
|
||||||
const LocallabParams::LocallabSpot defSpot;
|
const LocallabParams::LocallabSpot defSpot;
|
||||||
@ -2720,6 +2849,11 @@ LocallabContrast::LocallabContrast():
|
|||||||
|
|
||||||
setExpandAlignProperties(expmasklc, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
setExpandAlignProperties(expmasklc, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
||||||
|
|
||||||
|
previewlc->set_active(false);
|
||||||
|
previewlcConn = previewlc->signal_clicked().connect(
|
||||||
|
sigc::mem_fun(
|
||||||
|
*this, &LocallabContrast::previewlcChanged));
|
||||||
|
|
||||||
showmasklcMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
|
showmasklcMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
|
||||||
showmasklcMethod->append(M("TP_LOCALLAB_SHOWMODIF"));
|
showmasklcMethod->append(M("TP_LOCALLAB_SHOWMODIF"));
|
||||||
showmasklcMethod->append(M("TP_LOCALLAB_SHOWMODIFMASK"));
|
showmasklcMethod->append(M("TP_LOCALLAB_SHOWMODIFMASK"));
|
||||||
@ -2764,6 +2898,7 @@ LocallabContrast::LocallabContrast():
|
|||||||
|
|
||||||
// Add Local contrast specific widgets to GUI
|
// Add Local contrast specific widgets to GUI
|
||||||
pack_start(*sensilc);
|
pack_start(*sensilc);
|
||||||
|
pack_start(*previewlc);
|
||||||
pack_start(*reparw);
|
pack_start(*reparw);
|
||||||
pack_start(*localcontMethod);
|
pack_start(*localcontMethod);
|
||||||
pack_start(*lcradius);
|
pack_start(*lcradius);
|
||||||
@ -2957,6 +3092,62 @@ void LocallabContrast::getMaskView(int &colorMask, int &colorMaskinv, int &expMa
|
|||||||
lcMask = showmasklcMethod->get_active_row_number();
|
lcMask = showmasklcMethod->get_active_row_number();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Gtk::ToggleButton *LocallabContrast::getPreviewDeltaEButton() const
|
||||||
|
{
|
||||||
|
return previewlc;
|
||||||
|
}
|
||||||
|
|
||||||
|
sigc::connection *LocallabContrast::getPreviewDeltaEButtonConnection()
|
||||||
|
{
|
||||||
|
return &previewlcConn;
|
||||||
|
}
|
||||||
|
|
||||||
|
//new function Global
|
||||||
|
void LocallabContrast::updateguicont(int spottype)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
idle_register.add(
|
||||||
|
[this, spottype]() -> bool {
|
||||||
|
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||||
|
|
||||||
|
// Update GUI fullimage or main
|
||||||
|
disableListener();
|
||||||
|
|
||||||
|
if(spottype == 3) {
|
||||||
|
sensilc->hide();
|
||||||
|
showmasklcMethod->set_active(0);
|
||||||
|
previewlc->hide();
|
||||||
|
previewlc->set_active(false);
|
||||||
|
resetMaskView();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
sensilc->show();
|
||||||
|
previewlc->show();
|
||||||
|
}
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void LocallabContrast::previewlcChanged()
|
||||||
|
{
|
||||||
|
if(previewlc->get_active()) {
|
||||||
|
showmasklcMethod->set_active(4);
|
||||||
|
} else {
|
||||||
|
showmasklcMethod->set_active(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isLocActivated) {
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(Evlocallabpreviewlc,"");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void LocallabContrast::updateAdviceTooltips(const bool showTooltips)
|
void LocallabContrast::updateAdviceTooltips(const bool showTooltips)
|
||||||
{
|
{
|
||||||
if (showTooltips) {
|
if (showTooltips) {
|
||||||
@ -4532,7 +4723,7 @@ lumacontrastPlusButton(Gtk::manage(new Gtk::Button(M("TP_DIRPYREQUALIZER_LUMACON
|
|||||||
showmaskcbMethod->append(M("TP_LOCALLAB_SHOWMODIF"));
|
showmaskcbMethod->append(M("TP_LOCALLAB_SHOWMODIF"));
|
||||||
showmaskcbMethod->append(M("TP_LOCALLAB_SHOWMODIFMASK"));
|
showmaskcbMethod->append(M("TP_LOCALLAB_SHOWMODIFMASK"));
|
||||||
showmaskcbMethod->append(M("TP_LOCALLAB_SHOWMASK"));
|
showmaskcbMethod->append(M("TP_LOCALLAB_SHOWMASK"));
|
||||||
showmaskcbMethod->append(M("TP_LOCALLAB_SHOWREF"));
|
// showmaskcbMethod->append(M("TP_LOCALLAB_SHOWREF"));
|
||||||
showmaskcbMethod->set_active(0);
|
showmaskcbMethod->set_active(0);
|
||||||
showmaskcbMethod->set_tooltip_markup(M("TP_LOCALLAB_SHOWMASKCOL_TOOLTIP"));
|
showmaskcbMethod->set_tooltip_markup(M("TP_LOCALLAB_SHOWMASKCOL_TOOLTIP"));
|
||||||
showmaskcbMethodConn = showmaskcbMethod->signal_changed().connect(sigc::mem_fun(*this, &LocallabCBDL::showmaskcbMethodChanged));
|
showmaskcbMethodConn = showmaskcbMethod->signal_changed().connect(sigc::mem_fun(*this, &LocallabCBDL::showmaskcbMethodChanged));
|
||||||
@ -4662,6 +4853,32 @@ void LocallabCBDL::getMaskView(int &colorMask, int &colorMaskinv, int &expMask,
|
|||||||
cbMask = showmaskcbMethod->get_active_row_number();
|
cbMask = showmaskcbMethod->get_active_row_number();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//new function Global
|
||||||
|
void LocallabCBDL::updateguicbdl(int spottype)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
idle_register.add(
|
||||||
|
[this, spottype]() -> bool {
|
||||||
|
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||||
|
|
||||||
|
// Update GUI fullimage or main
|
||||||
|
disableListener();
|
||||||
|
|
||||||
|
if(spottype == 3) {
|
||||||
|
sensicb->hide();
|
||||||
|
} else {
|
||||||
|
sensicb->show();
|
||||||
|
}
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void LocallabCBDL::updateAdviceTooltips(const bool showTooltips)
|
void LocallabCBDL::updateAdviceTooltips(const bool showTooltips)
|
||||||
{
|
{
|
||||||
if (showTooltips) {
|
if (showTooltips) {
|
||||||
@ -5295,6 +5512,7 @@ LocallabLog::LocallabLog():
|
|||||||
decayl(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKDDECAY"), 0.5, 4., 0.1, 2.))),
|
decayl(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKDDECAY"), 0.5, 4., 0.1, 2.))),
|
||||||
|
|
||||||
sensilog(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 60))),
|
sensilog(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 60))),
|
||||||
|
previewlog(Gtk::manage(new Gtk::ToggleButton(M("TP_LOCALLAB_PREVIEW")))),
|
||||||
gradlogFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_GRADLOGFRA")))),
|
gradlogFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_GRADLOGFRA")))),
|
||||||
strlog(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GRADSTR"), -2.0, 2.0, 0.05, 0.))),
|
strlog(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GRADSTR"), -2.0, 2.0, 0.05, 0.))),
|
||||||
anglog(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GRADANG"), -180, 180, 0.1, 0.))),
|
anglog(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GRADANG"), -180, 180, 0.1, 0.))),
|
||||||
@ -5315,6 +5533,7 @@ LocallabLog::LocallabLog():
|
|||||||
|
|
||||||
{
|
{
|
||||||
auto m = ProcEventMapper::getInstance();
|
auto m = ProcEventMapper::getInstance();
|
||||||
|
Evlocallabpreviewlog = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_PREVIEWLOG");
|
||||||
Evlocallabwhiteslog = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_LOG_WHITES");
|
Evlocallabwhiteslog = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_LOG_WHITES");
|
||||||
Evlocallabblackslog = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_LOG_BLACKS");
|
Evlocallabblackslog = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_LOG_BLACKS");
|
||||||
Evlocallabcomprlog = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_LOG_COMPR");
|
Evlocallabcomprlog = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_LOG_COMPR");
|
||||||
@ -5429,6 +5648,11 @@ LocallabLog::LocallabLog():
|
|||||||
|
|
||||||
setExpandAlignProperties(expmaskL, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
setExpandAlignProperties(expmaskL, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
||||||
|
|
||||||
|
previewlog->set_active(false);
|
||||||
|
previewlogConn = previewlog->signal_clicked().connect(
|
||||||
|
sigc::mem_fun(
|
||||||
|
*this, &LocallabLog::previewlogChanged));
|
||||||
|
|
||||||
showmaskLMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
|
showmaskLMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
|
||||||
showmaskLMethod->append(M("TP_LOCALLAB_SHOWMODIF"));
|
showmaskLMethod->append(M("TP_LOCALLAB_SHOWMODIF"));
|
||||||
showmaskLMethod->append(M("TP_LOCALLAB_SHOWMODIFMASK"));
|
showmaskLMethod->append(M("TP_LOCALLAB_SHOWMODIFMASK"));
|
||||||
@ -5472,6 +5696,8 @@ LocallabLog::LocallabLog():
|
|||||||
|
|
||||||
// Add Log encoding specific widgets to GUI
|
// Add Log encoding specific widgets to GUI
|
||||||
pack_start(*sensilog);
|
pack_start(*sensilog);
|
||||||
|
pack_start(*previewlog);
|
||||||
|
|
||||||
pack_start(*repar);
|
pack_start(*repar);
|
||||||
pack_start(*ciecam);
|
pack_start(*ciecam);
|
||||||
logPFrame->set_label_align(0.025, 0.5);
|
logPFrame->set_label_align(0.025, 0.5);
|
||||||
@ -5582,6 +5808,54 @@ void LocallabLog::setDefaultExpanderVisibility()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//new function Global
|
||||||
|
void LocallabLog::updateguilog(int spottype)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
idle_register.add(
|
||||||
|
[this, spottype]() -> bool {
|
||||||
|
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||||
|
|
||||||
|
// Update GUI fullimage or main
|
||||||
|
disableListener();
|
||||||
|
|
||||||
|
if(spottype == 3) {
|
||||||
|
sensilog->hide();
|
||||||
|
showmaskLMethod->set_active(0);
|
||||||
|
previewlog->hide();
|
||||||
|
previewlog->set_active(false);
|
||||||
|
resetMaskView();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
sensilog->show();
|
||||||
|
previewlog->show();
|
||||||
|
}
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void LocallabLog::previewlogChanged()
|
||||||
|
{
|
||||||
|
|
||||||
|
if(previewlog->get_active()) {
|
||||||
|
showmaskLMethod->set_active(4);
|
||||||
|
} else {
|
||||||
|
showmaskLMethod->set_active(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isLocActivated) {
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(Evlocallabpreviewlog,"");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void LocallabLog::updateAdviceTooltips(const bool showTooltips)
|
void LocallabLog::updateAdviceTooltips(const bool showTooltips)
|
||||||
{
|
{
|
||||||
if (showTooltips) {
|
if (showTooltips) {
|
||||||
@ -5738,6 +6012,16 @@ void LocallabLog::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, i
|
|||||||
logMask = showmaskLMethod->get_active_row_number();
|
logMask = showmaskLMethod->get_active_row_number();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Gtk::ToggleButton *LocallabLog::getPreviewDeltaEButton() const
|
||||||
|
{
|
||||||
|
return previewlog;
|
||||||
|
}
|
||||||
|
|
||||||
|
sigc::connection *LocallabLog::getPreviewDeltaEButtonConnection()
|
||||||
|
{
|
||||||
|
return &previewlogConn;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void LocallabLog::read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited)
|
void LocallabLog::read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited)
|
||||||
{
|
{
|
||||||
@ -5977,6 +6261,7 @@ void LocallabLog::updateGUIToMode(const modeType new_type)
|
|||||||
maskusablel->hide();
|
maskusablel->hide();
|
||||||
maskunusablel->hide();
|
maskunusablel->hide();
|
||||||
decayl->hide();
|
decayl->hide();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Normal:
|
case Normal:
|
||||||
@ -6070,6 +6355,7 @@ void LocallabLog::convertParamToSimple()
|
|||||||
strlog->setValue(defSpot.strlog);
|
strlog->setValue(defSpot.strlog);
|
||||||
anglog->setValue(defSpot.anglog);
|
anglog->setValue(defSpot.anglog);
|
||||||
enaLMask->set_active(false);
|
enaLMask->set_active(false);
|
||||||
|
showmaskLMethod->set_active(0);
|
||||||
recothresl->setValue(defSpot.recothresl);
|
recothresl->setValue(defSpot.recothresl);
|
||||||
lowthresl->setValue(defSpot.lowthresl);
|
lowthresl->setValue(defSpot.lowthresl);
|
||||||
higthresl->setValue(defSpot.higthresl);
|
higthresl->setValue(defSpot.higthresl);
|
||||||
@ -6691,6 +6977,7 @@ LocallabMask::LocallabMask():
|
|||||||
|
|
||||||
// Common mask specific widgets
|
// Common mask specific widgets
|
||||||
sensimask(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 60))),
|
sensimask(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 60))),
|
||||||
|
previewmas(Gtk::manage(new Gtk::ToggleButton(M("TP_LOCALLAB_PREVIEW")))),
|
||||||
blendmask(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLENDMASKMASK"), -100., 100., 0.1, -10.))),
|
blendmask(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLENDMASKMASK"), -100., 100., 0.1, -10.))),
|
||||||
blendmaskab(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLENDMASKMASKAB"), -100., 100., 0.1, -10.))),
|
blendmaskab(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLENDMASKMASKAB"), -100., 100., 0.1, -10.))),
|
||||||
softradiusmask(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SOFTRADIUSCOL"), 0.0, 100.0, 0.5, 1.))),
|
softradiusmask(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SOFTRADIUSCOL"), 0.0, 100.0, 0.5, 1.))),
|
||||||
@ -6727,6 +7014,9 @@ LocallabMask::LocallabMask():
|
|||||||
ang_mask(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GRADANG"), -180., 180., 0.1, 0.)))
|
ang_mask(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GRADANG"), -180., 180., 0.1, 0.)))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
auto m = ProcEventMapper::getInstance();
|
||||||
|
Evlocallabpreviewmas = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_PREVIEWMAS");
|
||||||
|
|
||||||
set_orientation(Gtk::ORIENTATION_VERTICAL);
|
set_orientation(Gtk::ORIENTATION_VERTICAL);
|
||||||
|
|
||||||
const LocallabParams::LocallabSpot defSpot;
|
const LocallabParams::LocallabSpot defSpot;
|
||||||
@ -6742,6 +7032,11 @@ LocallabMask::LocallabMask():
|
|||||||
|
|
||||||
softradiusmask->setAdjusterListener(this);
|
softradiusmask->setAdjusterListener(this);
|
||||||
|
|
||||||
|
previewmas->set_active(false);
|
||||||
|
previewmasConn = previewmas->signal_clicked().connect(
|
||||||
|
sigc::mem_fun(
|
||||||
|
*this, &LocallabMask::previewmasChanged));
|
||||||
|
|
||||||
showmask_Method->append(M("TP_LOCALLAB_SHOWMNONE"));
|
showmask_Method->append(M("TP_LOCALLAB_SHOWMNONE"));
|
||||||
showmask_Method->append(M("TP_LOCALLAB_SHOWMODIFMASK"));
|
showmask_Method->append(M("TP_LOCALLAB_SHOWMODIFMASK"));
|
||||||
showmask_Method->append(M("TP_LOCALLAB_SHOWMASK"));
|
showmask_Method->append(M("TP_LOCALLAB_SHOWMASK"));
|
||||||
@ -6833,6 +7128,7 @@ LocallabMask::LocallabMask():
|
|||||||
|
|
||||||
// Add Common mask specific widgets to GUI
|
// Add Common mask specific widgets to GUI
|
||||||
pack_start(*sensimask);
|
pack_start(*sensimask);
|
||||||
|
pack_start(*previewmas);
|
||||||
pack_start(*blendmask);
|
pack_start(*blendmask);
|
||||||
pack_start(*blendmaskab);
|
pack_start(*blendmaskab);
|
||||||
pack_start(*softradiusmask);
|
pack_start(*softradiusmask);
|
||||||
@ -6895,6 +7191,64 @@ void LocallabMask::getMaskView(int &colorMask, int &colorMaskinv, int &expMask,
|
|||||||
maskMask = showmask_Method->get_active_row_number();
|
maskMask = showmask_Method->get_active_row_number();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Gtk::ToggleButton *LocallabMask::getPreviewDeltaEButton() const
|
||||||
|
{
|
||||||
|
return previewmas;
|
||||||
|
}
|
||||||
|
|
||||||
|
sigc::connection *LocallabMask::getPreviewDeltaEButtonConnection()
|
||||||
|
{
|
||||||
|
return &previewmasConn;
|
||||||
|
}
|
||||||
|
|
||||||
|
//new function Global
|
||||||
|
void LocallabMask::updateguimask(int spottype)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
idle_register.add(
|
||||||
|
[this, spottype]() -> bool {
|
||||||
|
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||||
|
|
||||||
|
// Update GUI fullimage or main
|
||||||
|
disableListener();
|
||||||
|
|
||||||
|
if(spottype == 3) {
|
||||||
|
sensimask->hide();
|
||||||
|
showmask_Method->set_active(0);
|
||||||
|
previewmas->hide();
|
||||||
|
previewmas->set_active(false);
|
||||||
|
resetMaskView();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
sensimask->show();
|
||||||
|
previewmas->show();
|
||||||
|
}
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void LocallabMask::previewmasChanged()
|
||||||
|
{
|
||||||
|
|
||||||
|
if(previewmas->get_active()) {
|
||||||
|
showmask_Method->set_active(3);
|
||||||
|
} else {
|
||||||
|
showmask_Method->set_active(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isLocActivated) {
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(Evlocallabpreviewmas,"");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void LocallabMask::updateAdviceTooltips(const bool showTooltips)
|
void LocallabMask::updateAdviceTooltips(const bool showTooltips)
|
||||||
{
|
{
|
||||||
if (showTooltips) {
|
if (showTooltips) {
|
||||||
@ -7365,6 +7719,7 @@ void LocallabMask::convertParamToSimple()
|
|||||||
// Set hidden specific GUI widgets in Simple mode to default spot values
|
// Set hidden specific GUI widgets in Simple mode to default spot values
|
||||||
gammask->setValue(defSpot.gammask);
|
gammask->setValue(defSpot.gammask);
|
||||||
slopmask->setValue(defSpot.slopmask);
|
slopmask->setValue(defSpot.slopmask);
|
||||||
|
|
||||||
//Lmask_shape->setCurve(defSpot.Lmask_curve);
|
//Lmask_shape->setCurve(defSpot.Lmask_curve);
|
||||||
|
|
||||||
// Enable all listeners
|
// Enable all listeners
|
||||||
@ -7525,6 +7880,8 @@ Locallabcie::Locallabcie():
|
|||||||
LocallabTool(this, M("TP_LOCALLAB_CIE_TOOLNAME"), M("TP_LOCALLAB_CIE"), false),
|
LocallabTool(this, M("TP_LOCALLAB_CIE_TOOLNAME"), M("TP_LOCALLAB_CIE"), false),
|
||||||
// ciecam specific widgets
|
// ciecam specific widgets
|
||||||
sensicie(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 60))),
|
sensicie(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 60))),
|
||||||
|
previewcie(Gtk::manage(new Gtk::ToggleButton(M("TP_LOCALLAB_PREVIEW")))),
|
||||||
|
|
||||||
reparcie(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LOGREPART"), 1.0, 100.0, 1., 100.0))),
|
reparcie(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LOGREPART"), 1.0, 100.0, 1., 100.0))),
|
||||||
jabcie(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_JAB")))),
|
jabcie(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_JAB")))),
|
||||||
modecam(Gtk::manage(new MyComboBoxText())),
|
modecam(Gtk::manage(new MyComboBoxText())),
|
||||||
@ -7755,6 +8112,7 @@ Locallabcie::Locallabcie():
|
|||||||
|
|
||||||
{
|
{
|
||||||
auto m = ProcEventMapper::getInstance();
|
auto m = ProcEventMapper::getInstance();
|
||||||
|
Evlocallabpreviewcie = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_PREVIEWCIE");
|
||||||
Evlocallabnormcie = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_CIE_NORM");
|
Evlocallabnormcie = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_CIE_NORM");
|
||||||
Evlocallabstrumaskcie = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_CIEMASK_STRU");
|
Evlocallabstrumaskcie = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_CIEMASK_STRU");
|
||||||
EvLocallabtoolcie = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_CIEMASK_STRU_TOOL");
|
EvLocallabtoolcie = m->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_CIEMASK_STRU_TOOL");
|
||||||
@ -7819,6 +8177,7 @@ Locallabcie::Locallabcie():
|
|||||||
|
|
||||||
|
|
||||||
pack_start(*sensicie);
|
pack_start(*sensicie);
|
||||||
|
pack_start(*previewcie);
|
||||||
pack_start(*reparcie);
|
pack_start(*reparcie);
|
||||||
modeHBoxcam->set_spacing(2);
|
modeHBoxcam->set_spacing(2);
|
||||||
//modeHBoxcam->set_tooltip_markup (M ("TP_LOCALLAB_CAMMODE_TOOLTIP"));
|
//modeHBoxcam->set_tooltip_markup (M ("TP_LOCALLAB_CAMMODE_TOOLTIP"));
|
||||||
@ -8542,6 +8901,11 @@ Locallabcie::Locallabcie():
|
|||||||
|
|
||||||
setExpandAlignProperties(expmaskcie, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
setExpandAlignProperties(expmaskcie, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
||||||
|
|
||||||
|
previewcie->set_active(false);
|
||||||
|
previewcieConn = previewcie->signal_clicked().connect(
|
||||||
|
sigc::mem_fun(
|
||||||
|
*this, &Locallabcie::previewcieChanged));
|
||||||
|
|
||||||
showmaskcieMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
|
showmaskcieMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
|
||||||
showmaskcieMethod->append(M("TP_LOCALLAB_SHOWMODIF"));
|
showmaskcieMethod->append(M("TP_LOCALLAB_SHOWMODIF"));
|
||||||
showmaskcieMethod->append(M("TP_LOCALLAB_SHOWMODIFMASK"));
|
showmaskcieMethod->append(M("TP_LOCALLAB_SHOWMODIFMASK"));
|
||||||
@ -8720,6 +9084,62 @@ void Locallabcie::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, i
|
|||||||
cieMask = showmaskcieMethod->get_active_row_number();
|
cieMask = showmaskcieMethod->get_active_row_number();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Gtk::ToggleButton *Locallabcie::getPreviewDeltaEButton() const
|
||||||
|
{
|
||||||
|
return previewcie;
|
||||||
|
}
|
||||||
|
|
||||||
|
sigc::connection *Locallabcie::getPreviewDeltaEButtonConnection()
|
||||||
|
{
|
||||||
|
return &previewcieConn;
|
||||||
|
}
|
||||||
|
|
||||||
|
//new function Global
|
||||||
|
void Locallabcie::updateguicie(int spottype)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
idle_register.add(
|
||||||
|
[this, spottype]() -> bool {
|
||||||
|
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||||
|
|
||||||
|
// Update GUI fullimage or main
|
||||||
|
disableListener();
|
||||||
|
|
||||||
|
if(spottype == 3) {
|
||||||
|
sensicie->hide();
|
||||||
|
showmaskcieMethod->set_active(0);
|
||||||
|
previewcie->hide();
|
||||||
|
previewcie->set_active(false);
|
||||||
|
resetMaskView();
|
||||||
|
} else {
|
||||||
|
sensicie->show();
|
||||||
|
previewcie->show();
|
||||||
|
}
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Locallabcie::previewcieChanged()
|
||||||
|
{
|
||||||
|
|
||||||
|
if(previewcie->get_active()) {
|
||||||
|
showmaskcieMethod->set_active(4);
|
||||||
|
} else {
|
||||||
|
showmaskcieMethod->set_active(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isLocActivated) {
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(Evlocallabpreviewcie,"");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Locallabcie::setDefaultExpanderVisibility()
|
void Locallabcie::setDefaultExpanderVisibility()
|
||||||
{
|
{
|
||||||
expLcie->set_expanded(false);
|
expLcie->set_expanded(false);
|
||||||
|
@ -470,6 +470,8 @@ void Options::setDefaults()
|
|||||||
histogramTraceBrightness = 1;
|
histogramTraceBrightness = 1;
|
||||||
curvebboxpos = 1;
|
curvebboxpos = 1;
|
||||||
complexity = 2;
|
complexity = 2;
|
||||||
|
spotmet = 0;
|
||||||
|
|
||||||
inspectorWindow = false;
|
inspectorWindow = false;
|
||||||
zoomOnScroll = true;
|
zoomOnScroll = true;
|
||||||
prevdemo = PD_Sidecar;
|
prevdemo = PD_Sidecar;
|
||||||
@ -1749,6 +1751,10 @@ void Options::readFromFile(Glib::ustring fname)
|
|||||||
complexity = keyFile.get_integer("GUI", "Complexity");
|
complexity = keyFile.get_integer("GUI", "Complexity");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (keyFile.has_key("GUI", "Spotmet")) {
|
||||||
|
spotmet = keyFile.get_integer("GUI", "Spotmet");
|
||||||
|
}
|
||||||
|
|
||||||
if (keyFile.has_key("GUI", "InspectorWindow")) {
|
if (keyFile.has_key("GUI", "InspectorWindow")) {
|
||||||
inspectorWindow = keyFile.get_boolean("GUI", "InspectorWindow");
|
inspectorWindow = keyFile.get_boolean("GUI", "InspectorWindow");
|
||||||
}
|
}
|
||||||
@ -2625,6 +2631,7 @@ void Options::saveToFile(Glib::ustring fname)
|
|||||||
keyFile.set_integer("GUI", "CurveBBoxPosition", curvebboxpos);
|
keyFile.set_integer("GUI", "CurveBBoxPosition", curvebboxpos);
|
||||||
keyFile.set_boolean("GUI", "Showtooltip", showtooltip);
|
keyFile.set_boolean("GUI", "Showtooltip", showtooltip);
|
||||||
keyFile.set_integer("GUI", "Complexity", complexity);
|
keyFile.set_integer("GUI", "Complexity", complexity);
|
||||||
|
keyFile.set_integer("GUI", "Spotmet", spotmet);
|
||||||
keyFile.set_boolean("GUI", "InspectorWindow", inspectorWindow);
|
keyFile.set_boolean("GUI", "InspectorWindow", inspectorWindow);
|
||||||
keyFile.set_boolean("GUI", "ZoomOnScroll", zoomOnScroll);
|
keyFile.set_boolean("GUI", "ZoomOnScroll", zoomOnScroll);
|
||||||
keyFile.set_integer("GUI", "MaxZoom", static_cast<int>(maxZoomLimit));
|
keyFile.set_integer("GUI", "MaxZoom", static_cast<int>(maxZoomLimit));
|
||||||
|
@ -330,6 +330,8 @@ public:
|
|||||||
bool internalThumbIfUntouched;
|
bool internalThumbIfUntouched;
|
||||||
bool overwriteOutputFile;
|
bool overwriteOutputFile;
|
||||||
int complexity;
|
int complexity;
|
||||||
|
int spotmet;
|
||||||
|
|
||||||
bool inspectorWindow; // open inspector in separate window
|
bool inspectorWindow; // open inspector in separate window
|
||||||
bool zoomOnScroll; // translate scroll events to zoom
|
bool zoomOnScroll; // translate scroll events to zoom
|
||||||
|
|
||||||
|
@ -1111,6 +1111,9 @@ Gtk::Widget* Preferences::getGeneralPanel()
|
|||||||
workflowGrid->attach_next_to(*curveBBoxPosL, *flayoutlab, Gtk::POS_BOTTOM, 1, 1);
|
workflowGrid->attach_next_to(*curveBBoxPosL, *flayoutlab, Gtk::POS_BOTTOM, 1, 1);
|
||||||
workflowGrid->attach_next_to(*curveBBoxPosC, *editorLayout, Gtk::POS_BOTTOM, 1, 1);
|
workflowGrid->attach_next_to(*curveBBoxPosC, *editorLayout, Gtk::POS_BOTTOM, 1, 1);
|
||||||
workflowGrid->attach_next_to(*curveBBoxPosRestartL, *lNextStart, Gtk::POS_BOTTOM, 1, 1);
|
workflowGrid->attach_next_to(*curveBBoxPosRestartL, *lNextStart, Gtk::POS_BOTTOM, 1, 1);
|
||||||
|
|
||||||
|
curveBBoxPosS = Gtk::manage(new Gtk::ComboBoxText());
|
||||||
|
setExpandAlignProperties(curveBBoxPosS, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE);
|
||||||
|
|
||||||
Gtk::Label* complexityL = Gtk::manage(new Gtk::Label(M("PREFERENCES_COMPLEXITYLOC") + ":"));
|
Gtk::Label* complexityL = Gtk::manage(new Gtk::Label(M("PREFERENCES_COMPLEXITYLOC") + ":"));
|
||||||
setExpandAlignProperties(complexityL, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE);
|
setExpandAlignProperties(complexityL, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE);
|
||||||
@ -1123,13 +1126,29 @@ Gtk::Widget* Preferences::getGeneralPanel()
|
|||||||
workflowGrid->attach_next_to(*complexityL, *curveBBoxPosL, Gtk::POS_BOTTOM, 1, 1);
|
workflowGrid->attach_next_to(*complexityL, *curveBBoxPosL, Gtk::POS_BOTTOM, 1, 1);
|
||||||
workflowGrid->attach_next_to(*complexitylocal, *curveBBoxPosC, Gtk::POS_BOTTOM, 1, 1);
|
workflowGrid->attach_next_to(*complexitylocal, *curveBBoxPosC, Gtk::POS_BOTTOM, 1, 1);
|
||||||
|
|
||||||
|
|
||||||
|
Gtk::Label* spotlocalL = Gtk::manage(new Gtk::Label(M("PREFERENCES_SPOTLOC") + ":"));
|
||||||
|
setExpandAlignProperties(spotlocalL, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE);
|
||||||
|
spotlocal = Gtk::manage(new Gtk::ComboBoxText());
|
||||||
|
setExpandAlignProperties(spotlocal, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE);
|
||||||
|
spotlocal->append(M("TP_LOCALLAB_EXNORM"));
|
||||||
|
spotlocal->append(M("TP_LOCALLAB_EXECLU"));
|
||||||
|
spotlocal->append(M("TP_LOCALLAB_EXFULL"));
|
||||||
|
spotlocal->append(M("TP_LOCALLAB_EXMAIN"));
|
||||||
|
spotlocal->set_active(2);
|
||||||
|
workflowGrid->attach_next_to(*spotlocalL, *complexityL, Gtk::POS_BOTTOM, 1, 1);
|
||||||
|
workflowGrid->attach_next_to(*spotlocal, *complexitylocal, Gtk::POS_BOTTOM, 1, 1);
|
||||||
|
|
||||||
|
|
||||||
zoomOnScrollCB = Gtk::manage(new Gtk::CheckButton(M("PREFERENCES_ZOOMONSCROLL")));
|
zoomOnScrollCB = Gtk::manage(new Gtk::CheckButton(M("PREFERENCES_ZOOMONSCROLL")));
|
||||||
setExpandAlignProperties(zoomOnScrollCB, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE);
|
setExpandAlignProperties(zoomOnScrollCB, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE);
|
||||||
workflowGrid->attach_next_to(*zoomOnScrollCB, *complexityL, Gtk::POS_BOTTOM, 1, 1);
|
//workflowGrid->attach_next_to(*zoomOnScrollCB, *complexityL, Gtk::POS_BOTTOM, 1, 1);
|
||||||
|
workflowGrid->attach_next_to(*zoomOnScrollCB, *spotlocalL, Gtk::POS_BOTTOM, 1, 1);
|
||||||
|
|
||||||
inspectorWindowCB = Gtk::manage(new Gtk::CheckButton(M("PREFERENCES_INSPECTORWINDOW")));
|
inspectorWindowCB = Gtk::manage(new Gtk::CheckButton(M("PREFERENCES_INSPECTORWINDOW")));
|
||||||
setExpandAlignProperties(inspectorWindowCB, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE);
|
setExpandAlignProperties(inspectorWindowCB, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE);
|
||||||
workflowGrid->attach_next_to(*inspectorWindowCB, *complexitylocal, Gtk::POS_BOTTOM, 1, 1);
|
// workflowGrid->attach_next_to(*inspectorWindowCB, *complexitylocal, Gtk::POS_BOTTOM, 1, 1);
|
||||||
|
workflowGrid->attach_next_to(*inspectorWindowCB, *spotlocal, Gtk::POS_BOTTOM, 1, 1);
|
||||||
Gtk::Label* inspectorNextStartL = Gtk::manage(new Gtk::Label(Glib::ustring("(") + M("PREFERENCES_APPLNEXTSTARTUP") + ")"));
|
Gtk::Label* inspectorNextStartL = Gtk::manage(new Gtk::Label(Glib::ustring("(") + M("PREFERENCES_APPLNEXTSTARTUP") + ")"));
|
||||||
setExpandAlignProperties(inspectorNextStartL, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE);
|
setExpandAlignProperties(inspectorNextStartL, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE);
|
||||||
workflowGrid->attach_next_to(*inspectorNextStartL, *inspectorWindowCB, Gtk::POS_RIGHT, 1, 1);
|
workflowGrid->attach_next_to(*inspectorNextStartL, *inspectorWindowCB, Gtk::POS_RIGHT, 1, 1);
|
||||||
@ -1994,6 +2013,8 @@ void Preferences::storePreferences()
|
|||||||
|
|
||||||
moptions.curvebboxpos = curveBBoxPosC->get_active_row_number();
|
moptions.curvebboxpos = curveBBoxPosC->get_active_row_number();
|
||||||
moptions.complexity = complexitylocal->get_active_row_number();
|
moptions.complexity = complexitylocal->get_active_row_number();
|
||||||
|
moptions.spotmet = spotlocal->get_active_row_number();
|
||||||
|
|
||||||
moptions.inspectorWindow = inspectorWindowCB->get_active();
|
moptions.inspectorWindow = inspectorWindowCB->get_active();
|
||||||
moptions.zoomOnScroll = zoomOnScrollCB->get_active();
|
moptions.zoomOnScroll = zoomOnScrollCB->get_active();
|
||||||
moptions.histogramPosition = ckbHistogramPositionLeft->get_active() ? 1 : 2;
|
moptions.histogramPosition = ckbHistogramPositionLeft->get_active() ? 1 : 2;
|
||||||
@ -2216,6 +2237,7 @@ void Preferences::fillPreferences()
|
|||||||
|
|
||||||
curveBBoxPosC->set_active(moptions.curvebboxpos);
|
curveBBoxPosC->set_active(moptions.curvebboxpos);
|
||||||
complexitylocal->set_active(moptions.complexity);
|
complexitylocal->set_active(moptions.complexity);
|
||||||
|
spotlocal->set_active(moptions.spotmet);
|
||||||
inspectorWindowCB->set_active(moptions.inspectorWindow);
|
inspectorWindowCB->set_active(moptions.inspectorWindow);
|
||||||
zoomOnScrollCB->set_active(moptions.zoomOnScroll);
|
zoomOnScrollCB->set_active(moptions.zoomOnScroll);
|
||||||
|
|
||||||
|
@ -162,8 +162,10 @@ class Preferences final :
|
|||||||
Gtk::ComboBoxText* cprevdemo;
|
Gtk::ComboBoxText* cprevdemo;
|
||||||
Gtk::CheckButton* ctiffserialize;
|
Gtk::CheckButton* ctiffserialize;
|
||||||
Gtk::ComboBoxText* curveBBoxPosC;
|
Gtk::ComboBoxText* curveBBoxPosC;
|
||||||
|
Gtk::ComboBoxText* curveBBoxPosS;
|
||||||
|
|
||||||
Gtk::ComboBoxText* complexitylocal;
|
Gtk::ComboBoxText* complexitylocal;
|
||||||
|
Gtk::ComboBoxText* spotlocal;
|
||||||
|
|
||||||
Gtk::CheckButton* inspectorWindowCB;
|
Gtk::CheckButton* inspectorWindowCB;
|
||||||
Gtk::CheckButton* zoomOnScrollCB;
|
Gtk::CheckButton* zoomOnScrollCB;
|
||||||
|
@ -475,6 +475,11 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), favorit
|
|||||||
toolPanelNotebook->append_page(*favoritePanelSW, *toiF);
|
toolPanelNotebook->append_page(*favoritePanelSW, *toiF);
|
||||||
}
|
}
|
||||||
toolPanelNotebook->append_page (*exposurePanelSW, *toiE);
|
toolPanelNotebook->append_page (*exposurePanelSW, *toiE);
|
||||||
|
/*
|
||||||
|
if (!batch) {
|
||||||
|
toolPanelNotebook->append_page(*locallabPanelSW, *toiL);
|
||||||
|
}
|
||||||
|
*/
|
||||||
toolPanelNotebook->append_page (*detailsPanelSW, *toiD);
|
toolPanelNotebook->append_page (*detailsPanelSW, *toiD);
|
||||||
toolPanelNotebook->append_page (*colorPanelSW, *toiC);
|
toolPanelNotebook->append_page (*colorPanelSW, *toiC);
|
||||||
toolPanelNotebook->append_page (*advancedPanelSW, *toiW);
|
toolPanelNotebook->append_page (*advancedPanelSW, *toiW);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user