LA - new tool - Color appearance (Cam16 & JzCzHz) (#6377)
* Gui improvments * Several improvments GUI Jz algo * Change function La for lightess Jz * SH jzazbz first * enable Jz SH * Clean code * Disabled Munsell correction when Jz * Change tooltip and Cam16 Munsell * GUI for CzHz and HzHz curves * Enable curves Hz(Hz) Cz(Hz) * Improve Cz chroma * Jz100 reference refine * Change limit Jz100 * Refine link between jz100 and peak adaptation * Improve GUI * Various improvment PQ PU gamut * Change defaults settings * forgotten PL in gamutjz * Small changes and comment * Change gamujz parameter * disabled gamut Jz too slow * Jzazbz curve Jz(Hz) * reenable gamutjz * small changes * Change tooltip * Change labels tooltips * Jzazbz only on advanced mode * GUI improvments * Change tooltip * Change default values and tooltip * Added tooltip Jz * Disabled Jz gamut * Change gamma color and light - remove exposure * Gamma for exposure and DR * gamma Sharp * Gamma vibrance * gamma optimizations * Change tooltips * Optimization PQ * LA GUI for tone curve Ciecam * LA ciecam Enable curve lightness - brightness * LA ciecam GUI color curve * LA ciecam enable color curve * Change tooltip and default values * Enable Jz curve * Enable Cz(Cz) curve * Enable Cz(Jz) curve * Added Log encoding to ciecam * Improvment algorithm remapping * Reenable forgotten listener logencodchanged * Change Jz tooltips * Reenable dynamic range and exposure * First change GUI auto ciecam * 2nd fixed ciecam auto * Improve GUI maskbackground curves * Enable activspot for la ciecam * set sensitive sliders La ciecam when auto scene conditions * Change internal calculations see comments * Checcbox ForceJz to 1 * Change tool position - change order CAM model * Expander for Jzczhz * Remove unused code * GUI changes * Change labels CAM16 Jzazbz * Change slider brightness parameters * improvment SH jz * Some changes to brightness Jz * Fixed scene conditions auto * Renable forgotten change * Prepare calculation Zcam * Prepare Iz for zcam * First GUI Zcam * Improve GUI Zcam * Calculate Qz white - brightness of the reference white * Prepare for PQ - eventually * Init LUT ZCAMBrightCurveJz and ZCAMBrightCurveQz * prepare zcam achromatic variables * First zcam * Change algo step 5 zcam * Another change original algo * Another change to original algo * first colorfullness * Fixed bad behavior threshold and change c c2 surround parameters * added saturation Zcam * Change parameters surround * Enable chroma zcam * change chroma and lightness formula * disable OMP for 2nd process Zcam * Improvment zcam for some high-light images * Change parameters overflow zcam * Change parmeters high datas * another change to retrieve... * Simplify code matrix conversion xyz-jzazbz * Adjust internam parameters zcam * Change some parameters - clean code * Enable PQCam16 * Enable PQ Cam16 - disable ZCAM * remove warning compilation message * Change GUI jzczhz * Fixed bad behavior remaping jz * Remove forgotten parameter - hide Jz100 - PU adaptation- chnage tooltips * Another change to chroma parameter * Small changes * If verbose display in console Cam16 informations * If verbose display in console source saturation colorfullness * Change to La calculation for ciecam * Change GUI cam16 - jzczhz - remove cam16 and jzczhz * Disable exposure compensation to calculate La for all Ciecam and Log encoding * Change label Cam16 and jzczhz * Improve GUI Jz * Other improvment GUI Jz Cam16 * verify nan Jz and ciecam matrix to avoid crash * Enable La manual for Jz to change PU-adaptation * Improve calculation to avoid crash Jz and Cam16 matrix * Fixed crash with local contrast in cam16 * Clean code loccont * First step GUI Cie mask * GUI part 2 - Cie * Build cieMask * Gui part 3 cie * Valid llcieMask * Valid llcieMask * Pass GUI curves parameters to iplocallab.cc * 2nd pass parameters from GUI to iplocallab.cc * Init first functions modifications * Add expander to cam16 adjustments * First test mask cie * Various improvment GUI - tooltips - process * Take into account Yb cam16 for Jz - reenable warm-cool * Surround source Cam16 before Jz * Improve GUI and process * Fixed bug and bad behavior last commit * Fixed bug chroma mask - improve GUI - Relative luminance for Jz * Increase sensitivity mask chroma * Improve Jz with saturation Z - improve GUI Jzczhz * Small code improvment * Another change mask C and enable mask for Cam16 and Jz * Some changes * Enable denoise chroma mask * Small change LIM01 normchromar * Enable Zcam matrix * Improve chroma curves...mask and boudaries * take into account recursive slider in settings * Change tooltip - improvment to C curve (denoise C - best value in curves - etc.) - remove Zcam button * Change tooltips * First part GUI - local contrast wavelet Jz * Passed parameters GUI local contrast wav jz to rtengine * save config wavelet jz * first try wavelet local contrast Jz * Add tooltips * Simplify code wavelet local contrast * take into account edge wavelet performance in Wavelet Jz * Fixed overflow jz when usig botth contradt and wavelt local jz contrast * Adapt size winGdiHandles in filepanel to avoid crash in Windows multieditor * First GUI part Clarity wavelet Jz * First try wavelet Jz Cz clarity * Added tooltips * Small change to enable wavelet jz * Disabled (commented) all Zcam code * Improve behavior when SH local-contrast and Clarity are use both * Change limit PQremap jz * Clean and optimize code * Reenable mjjz * Change settings guidedfilter wavelet Jz * Fixed crash when revory based on lum mask negative * Change tooltip * Fixed ad behavior auto mean and absolute luminance * Remove warning in console * Fixed bad behavior auto Log encoding - bad behavior curves L(H) Jz * Fixed another bad behavior - reenable curves color and light L(H) C(H) * first transposition Lab Jz for curves H * Change mask boundary for Jz * Various improvment to H curves Jz * Add amountchrom to Hcurve Color and Light * Improve gray boundary curves behavior * reenable Jz curve H(H) - soft radius * Improve guidefilter Jz H curve * Threshold chroma Jz(Hz) * Enable guidedfilter chroma curve H * improve GUI curves Hz * Checkbutton chroma for curve Jz(Hz) * Change event selectspot * Clean and small optimization code * Another clean code * Change calculation Hz references for curves Hz * Clean code * Various changes to GF and GUI * Another change to Chroma for Jz(H) * Change GUI sensitive Jz100 adapdjzcie * Improve code for Jz100 * Change default value skin-protection to 0 instead of 50 * Clean code * Remove BENCHFUN for ciecam * small correction to huejz_to_huehsv2 conversion * Added missing plum parameter for jch2xyz_ciecam02float * another small change to huejz_to_huehsv2 * Improvment to huelab_to_huehsv2 and some double functions * Fixed warning hide parameters in lgtm-com * Fixed ? Missing retuen statement in lgtm-com * Change behavior Log encoding whith PQ Cam16 * Small improvment to Jz PU adaptation * Added forgoten to_one for Cz slider * Replace 0.707... by RT_SQRT1_2 - change some settings chroma * Improvment to getAutoLogloc * Fixed crash with array in getAutoLogloc * First try Jz Log encoding * Forgotten Cz * Various improvment GUI setlogscale - Jz log encoding * Change labels tooltips Jz log * Change wrong clipcz value * Change tooltip auto scene conditions * Fixed bad behavior blackevjz whiteevjz * Small improvment to LA Log encoding std * Avoid bad behavior Jz log when enable Relative luminance * Change sourcegray jz calculation * Revert last change * Clean and comment code * Review tooltips thanks to Wayne - harmonize response La log encoding and Jz Log encoding * Always force Dynamic Range evaluation in full frame mode for Jz log encoding * Remove unused code * Small optimizations sigmoid Cam16 and Jz * Comment code * Change parameters deltaE for HDR * Various improvment to Jz - La - sigmoid - log encoding * Basic support for Sony ILCE-7M4 in camconst.json * German translation Spot Removal (#6388) * Filmnegative German translation (#6389) * (Temporarily) disable `ftree-loop-vectorize` for GCC 11 because of #6384 * Added BlacEv WhiteEv to sigmoidJz * Improve GUI for BlackEv WhiteEv * Change location SigmoidJz in Iplocallab * Improvment GUI and sensitivity sliders strength sigmoid * Change labels Co-authored-by: Thanatomanic <6567747+Thanatomanic@users.noreply.github.com> Co-authored-by: Anna <simonanna@gmx.net>
This commit is contained in:
parent
4b8481f1c9
commit
1e4f41bc05
@ -1297,6 +1297,118 @@ HISTORY_MSG_1047;Local - SH and Tone Equalizer strength
|
||||
HISTORY_MSG_1048;Local - DR and Exposure strength
|
||||
HISTORY_MSG_1049;Local - TM strength
|
||||
HISTORY_MSG_1050;Local - Log encoding chroma
|
||||
HISTORY_MSG_1051;Local - Residual wavelet gamma
|
||||
HISTORY_MSG_1052;Local - Residual wavelet slope
|
||||
HISTORY_MSG_1053;Local - Denoise gamma
|
||||
HISTORY_MSG_1054;Local - Wavelet gamma
|
||||
HISTORY_MSG_1055;Local - Color and Light gamma
|
||||
HISTORY_MSG_1056;Local - DR and Exposure gamma
|
||||
HISTORY_MSG_1057;Local - CIECAM Enabled
|
||||
HISTORY_MSG_1058;Local - CIECAM Overall strength
|
||||
HISTORY_MSG_1059;Local - CIECAM Autogray
|
||||
HISTORY_MSG_1060;Local - CIECAM Mean luminance source
|
||||
HISTORY_MSG_1061;Local - CIECAM Source absolute
|
||||
HISTORY_MSG_1062;Local - CIECAM Surround Source
|
||||
HISTORY_MSG_1063;Local - CIECAM Saturation
|
||||
HISTORY_MSG_1064;Local - CIECAM Chroma
|
||||
HISTORY_MSG_1062;Local - CIECAM Lightness
|
||||
HISTORY_MSG_1063;Local - CIECAM Brightness
|
||||
HISTORY_MSG_1064;Local - CIECAM threshold
|
||||
HISTORY_MSG_1065;Local - CIECAM lightness J
|
||||
HISTORY_MSG_1066;Local - CIECAM brightness
|
||||
HISTORY_MSG_1067;Local - CIECAM Contrast J
|
||||
HISTORY_MSG_1068;Local - CIECAM threshold
|
||||
HISTORY_MSG_1069;Local - CIECAM contrast Q
|
||||
HISTORY_MSG_1070;Local - CIECAM colorfullness
|
||||
HISTORY_MSG_1071;Local - CIECAM Absolute luminance
|
||||
HISTORY_MSG_1072;Local - CIECAM Mean luminance
|
||||
HISTORY_MSG_1073;Local - CIECAM Cat16
|
||||
HISTORY_MSG_1074;Local - CIECAM Local contrast
|
||||
HISTORY_MSG_1075;Local - CIECAM Surround viewing
|
||||
HISTORY_MSG_1076;Local - CIECAM Scope
|
||||
HISTORY_MSG_1077;Local - CIECAM Mode
|
||||
HISTORY_MSG_1078;Local - Red and skin protection
|
||||
HISTORY_MSG_1079;Local - CIECAM Sigmoid strength J
|
||||
HISTORY_MSG_1080;Local - CIECAM Sigmoid threshold
|
||||
HISTORY_MSG_1081;Local - CIECAM Sigmoid blend
|
||||
HISTORY_MSG_1082;Local - CIECAM Sigmoid Q J
|
||||
HISTORY_MSG_1083;Local - CIECAM Hue
|
||||
HISTORY_MSG_1084;Local - Uses Black Ev - White Ev
|
||||
HISTORY_MSG_1085;Local - Jz lightness
|
||||
HISTORY_MSG_1086;Local - Jz contrast
|
||||
HISTORY_MSG_1087;Local - Jz chroma
|
||||
HISTORY_MSG_1088;Local - Jz hue
|
||||
HISTORY_MSG_1089;Local - Jz Sigmoid strength
|
||||
HISTORY_MSG_1090;Local - Jz Sigmoid threshold
|
||||
HISTORY_MSG_1091;Local - Jz Sigmoid blend
|
||||
HISTORY_MSG_1092;Local - Jz adaptation
|
||||
HISTORY_MSG_1093;Local - CAM model
|
||||
HISTORY_MSG_1094;Local - Jz highligths
|
||||
HISTORY_MSG_1095;Local - Jz highligths thr
|
||||
HISTORY_MSG_1096;Local - Jz shadows
|
||||
HISTORY_MSG_1097;Local - Jz shadows thr
|
||||
HISTORY_MSG_1098;Local - Jz radius SH
|
||||
//HISTORY_MSG_1099;Local - Hz(Hz) Curve
|
||||
HISTORY_MSG_1099;Local - Cz(Hz) Curve
|
||||
HISTORY_MSG_1100;Local - Jz reference 100
|
||||
HISTORY_MSG_1101;Local - Jz PQ remap
|
||||
HISTORY_MSG_1102;Local - Jz(Hz) Curve
|
||||
HISTORY_MSG_1103;Local - Vibrance gamma
|
||||
HISTORY_MSG_1104;Local - Sharp gamma
|
||||
HISTORY_MSG_1105;Local - CIECAM Tone method
|
||||
HISTORY_MSG_1106;Local - CIECAM Tone curve
|
||||
HISTORY_MSG_1107;Local - CIECAM Color method
|
||||
HISTORY_MSG_1108;Local - CIECAM Color curve
|
||||
HISTORY_MSG_1109;Local - Jz(Jz) curve
|
||||
HISTORY_MSG_1110;Local - Cz(Cz) curve
|
||||
HISTORY_MSG_1111;Local - Cz(Jz) curve
|
||||
HISTORY_MSG_1112;Local - forcejz
|
||||
/*
|
||||
HISTORY_MSG_1114;Local - ZCAM lightness
|
||||
HISTORY_MSG_1115;Local - ZCAM brightness
|
||||
HISTORY_MSG_1116;Local - ZCAM contrast J
|
||||
HISTORY_MSG_1117;Local - ZCAM contrast Q
|
||||
HISTORY_MSG_1118;Local - ZCAM contrast threshold
|
||||
HISTORY_MSG_1119;Local - ZCAM colorfullness
|
||||
HISTORY_MSG_1120;Local - ZCAM saturation
|
||||
HISTORY_MSG_1121;Local - ZCAM chroma
|
||||
*/
|
||||
HISTORY_MSG_1113;Local - HDR PQ
|
||||
HISTORY_MSG_1114;Local - Cie mask enable
|
||||
HISTORY_MSG_1115;Local - Cie mask curve C
|
||||
HISTORY_MSG_1116;Local - Cie mask curve L
|
||||
HISTORY_MSG_1117;Local - Cie mask curve H
|
||||
HISTORY_MSG_1118;Local - Cie mask blend
|
||||
HISTORY_MSG_1119;Local - Cie mask radius
|
||||
HISTORY_MSG_1120;Local - Cie mask chroma
|
||||
HISTORY_MSG_1121;Local - Cie mask contrast curve
|
||||
HISTORY_MSG_1122;Local - Cie mask recovery threshold
|
||||
HISTORY_MSG_1123;Local - Cie mask recovery dark
|
||||
HISTORY_MSG_1124;Local - Cie mask recovery light
|
||||
HISTORY_MSG_1125;Local - Cie mask recovery decay
|
||||
HISTORY_MSG_1126;Local - Cie mask laplacian
|
||||
HISTORY_MSG_1127;Local - Cie mask gamma
|
||||
HISTORY_MSG_1128;Local - Cie mask slope
|
||||
HISTORY_MSG_1129;Local - Cie Relative luminance
|
||||
HISTORY_MSG_1130;Local - Cie Saturation Jz
|
||||
HISTORY_MSG_1131;Local - Mask denoise chroma
|
||||
HISTORY_MSG_1132;Local - Cie Wav sigma Jz
|
||||
HISTORY_MSG_1133;Local - Cie Wav level Jz
|
||||
HISTORY_MSG_1134;Local - Cie Wav local contrast Jz
|
||||
HISTORY_MSG_1135;Local - Cie Wav clarity Jz
|
||||
HISTORY_MSG_1136;Local - Cie Wav clarity Cz
|
||||
HISTORY_MSG_1137;Local - Cie Wav clarity Soft
|
||||
HISTORY_MSG_1138;Local - Local - Hz(Hz) Curve
|
||||
HISTORY_MSG_1139;Local - Jz soft Curves H
|
||||
HISTORY_MSG_1140;Local - Jz Threshold chroma
|
||||
HISTORY_MSG_1141;Local - chroma curve Jz(Hz)
|
||||
HISTORY_MSG_1142;Local - strength soft
|
||||
HISTORY_MSG_1143;Local - Jz blackev
|
||||
HISTORY_MSG_1144;Local - Jz whiteev
|
||||
HISTORY_MSG_1145;Local - Jz Log encoding
|
||||
HISTORY_MSG_1146;Local - Jz Log encoding target gray
|
||||
HISTORY_MSG_1147;Local - Jz BlackEv WhiteEv
|
||||
HISTORY_MSG_1148;Local - Jz Sigmoid
|
||||
HISTORY_MSG_BLSHAPE;Blur by level
|
||||
HISTORY_MSG_BLURCWAV;Blur chroma
|
||||
HISTORY_MSG_BLURWAV;Blur luminance
|
||||
@ -2172,8 +2284,8 @@ TP_COLORAPP_VIEWINGF_TOOLTIP;Takes into account the support on which the final i
|
||||
TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²).
|
||||
TP_COLORAPP_WBCAM;WB [RT+CAT02/16] + [output]
|
||||
TP_COLORAPP_WBRT;WB [RT] + [output]
|
||||
TP_COLORAPP_YBOUT_TOOLTIP;Yb is the relative luminance of the background, expressed in % of gray. A gray at 18% corresponds to a background luminance expressed in CIE L of 50%.\nThis data must take into account the average luminance of the image
|
||||
TP_COLORAPP_YBSCEN_TOOLTIP;Yb is the relative luminance of the background, expressed in % of gray. A gray at 18% corresponds to a background luminance expressed in CIE L of 50%.\nThis data is calculated from the average luminance of the image
|
||||
TP_COLORAPP_YBOUT_TOOLTIP;Yb is the relative luminance of the background, expressed in % of gray. 18% gray corresponds to a background luminance of 50% expressed in CIE L.\nThe data is based on the mean luminance of the image
|
||||
TP_COLORAPP_YBSCEN_TOOLTIP;Yb is the relative luminance of the background, expressed in % of gray. 18% gray corresponds to a background luminance of 50% expressed in CIE L.\nThe data is based on the mean luminance of the image
|
||||
TP_COLORTONING_AB;o C/L
|
||||
TP_COLORTONING_AUTOSAT;Automatic
|
||||
TP_COLORTONING_BALANCE;Balance
|
||||
@ -2578,9 +2690,13 @@ TP_LOCALLAB_AMOUNT;Amount
|
||||
TP_LOCALLAB_ARTIF;Shape detection
|
||||
TP_LOCALLAB_ARTIF_TOOLTIP;ΔE scope threshold increases the range of deltaE scope. High values are for very wide gamut images.\nIncreasing deltaE decay can improve shape detection, but can also reduce the scope.
|
||||
TP_LOCALLAB_AUTOGRAY;Auto mean luminance (Yb%)
|
||||
TP_LOCALLAB_AUTOGRAYCIE;Auto
|
||||
TP_LOCALLAB_AUTOGRAYCIE_TOOLTIP;Automatically calculates the “Mean luminance” and “Absolute luminance”.\nFor Jz Cz Hz: automatically calculates "PU adaptation", "Black Ev" and "White Ev".
|
||||
TP_LOCALLAB_AVOID;Avoid color shift
|
||||
TP_LOCALLAB_AVOIDCOLORSHIFT_TOOLTIP;Fit colors into gamut of the working color space and apply Munsell correction (Uniform Perceptual Lab).\nMunsell correction always disabled when Jz or CAM16 is used.
|
||||
TP_LOCALLAB_AVOIDRAD;Soft radius
|
||||
TP_LOCALLAB_AVOIDMUN;Munsell correction only
|
||||
TP_LOCALLAB_AVOIDMUN_TOOLTIP;Munsell correction always disabled when Jz or CAM16 is used
|
||||
TP_LOCALLAB_BALAN;ab-L balance (ΔE)
|
||||
TP_LOCALLAB_BALANEXP;Laplacian balance
|
||||
TP_LOCALLAB_BALANH;C-H balance (ΔE)
|
||||
@ -2623,6 +2739,15 @@ TP_LOCALLAB_BUTTON_DEL;Delete
|
||||
TP_LOCALLAB_BUTTON_DUPL;Duplicate
|
||||
TP_LOCALLAB_BUTTON_REN;Rename
|
||||
TP_LOCALLAB_BUTTON_VIS;Show/Hide
|
||||
TP_LOCALLAB_BWFORCE;Uses Black Ev & White Ev
|
||||
TP_LOCALLAB_CAM16_FRA;Cam16 Image Adjustments
|
||||
TP_LOCALLAB_CAM16PQREMAP;HDR PQ (Peak Luminance)
|
||||
TP_LOCALLAB_CAM16PQREMAP_TOOLTIP;PQ (Perceptual Quantizer) adapted to CAM16. Allows you to change the internal PQ function (usually 10000 cd/m2 - default 100 cd/m2 - disabled for 100 cd/m2).\nCan be used to adapt to different devices and images.
|
||||
TP_LOCALLAB_CAMMODE;CAM model
|
||||
TP_LOCALLAB_CAMMODE_ALL;CAM 16 + Jz Cz Hz
|
||||
TP_LOCALLAB_CAMMODE_CAM16;CAM 16
|
||||
TP_LOCALLAB_CAMMODE_ZCAM;ZCAM only
|
||||
TP_LOCALLAB_CAMMODE_JZ;Jz Cz Hz
|
||||
TP_LOCALLAB_CATAD;Chromatic adaptation/Cat16
|
||||
TP_LOCALLAB_CBDL;Contrast by Detail Levels
|
||||
TP_LOCALLAB_CBDLCLARI_TOOLTIP;Enhances local contrast of the midtones.
|
||||
@ -2642,19 +2767,36 @@ TP_LOCALLAB_CHROMASKCOL;Chroma
|
||||
TP_LOCALLAB_CHROMASK_TOOLTIP;Changes the chroma of the mask if one exists (i.e. C(C) or LC(H) is activated).
|
||||
TP_LOCALLAB_CHROML;Chroma (C)
|
||||
TP_LOCALLAB_CHRRT;Chroma
|
||||
TP_LOCALLAB_CIE_TOOLNAME;Color appearance (Cam16 & JzCzHz)
|
||||
TP_LOCALLAB_CIE;Color appearance (Cam16 & JzCzHz)
|
||||
TP_LOCALLAB_CIEC;Use Ciecam environment parameters
|
||||
TP_LOCALLAB_CIECAMLOG_TOOLTIP;This module is based on the CIECAM color appearance model which was designed to better simulate how human vision perceives colors under different lighting conditions.\nThe first Ciecam process 'Scene conditions' is carried out by Log encoding, it also uses 'Absolute luminance' at the time of shooting.\nThe second Ciecam process 'Image adjustments' is simplified and uses only 3 variables (local contrast, contrast J, saturation s).\nThe third Ciecam process 'Viewing conditions' adapts the output to the intended viewing conditions (monitor, TV, projector, printer, etc.) so that the chromatic and contrast appearance is preserved across the display environment.
|
||||
TP_LOCALLAB_CIEMODE;Change tool position
|
||||
TP_LOCALLAB_CIEMODE_COM;Default
|
||||
TP_LOCALLAB_CIEMODE_DR;Dynamic Range
|
||||
TP_LOCALLAB_CIEMODE_TM;Tone-Mapping
|
||||
TP_LOCALLAB_CIEMODE_WAV;Wavelet
|
||||
TP_LOCALLAB_CIEMODE_LOG;Log Encoding
|
||||
TP_LOCALLAB_CIEMODE_TOOLTIP;In Default mode, Ciecam is added at the end of the process. "Mask and modifications" and "Recovery based on luminance mask" are available for"Cam16 and JzCzHz" at your disposal .\nYou can also integrate Ciecam into other tools if you wish (TM, Wavelet, Dynamic Range, Log Encoding). The results for these tools will be different to those without Ciecam. In this mode, you can also use "Mask and modifications" and "Recovery based on luminance mask"
|
||||
TP_LOCALLAB_CIETOOLEXP;Curves
|
||||
TP_LOCALLAB_CIECOLORFRA;Color
|
||||
TP_LOCALLAB_CIECONTFRA;Contrast
|
||||
TP_LOCALLAB_CIELIGHTFRA;Lighting
|
||||
TP_LOCALLAB_CIELIGHTCONTFRA;Lighting & Contrast
|
||||
TP_LOCALLAB_CIRCRADIUS;Spot size
|
||||
TP_LOCALLAB_CIRCRAD_TOOLTIP;Contains the references of the RT-spot, useful for shape detection (hue, luma, chroma, Sobel).\nLow values may be useful for processing foliage.\nHigh values may be useful for processing skin.
|
||||
TP_LOCALLAB_CLARICRES;Merge chroma
|
||||
TP_LOCALLAB_CLARIFRA;Clarity & Sharp mask/Blend & Soften Images
|
||||
TP_LOCALLAB_CLARILRES;Merge luma
|
||||
TP_LOCALLAB_CLARISOFT;Soft radius
|
||||
TP_LOCALLAB_CLARISOFT_TOOLTIP;The ‘Soft radius’ slider (guided filter algorithm) reduces halos and irregularities for both Clarity and Sharp Mask and for all pyramid wavelet processes. To deactivate, set slider to zero.
|
||||
TP_LOCALLAB_CLARISOFT_TOOLTIP;The ‘Soft radius’ slider (guided filter algorithm) reduces halos and irregularities for Clarity, Sharp Mask and all wavelet pyramid processes. To deactivate, set slider to zero.
|
||||
TP_LOCALLAB_CLARISOFTJZ_TOOLTIP;The ‘Soft radius’ slider (guided filter algorithm) reduces halos and irregularities for Clarity, Sharp Mask and Local contrast wavelets Jz.
|
||||
TP_LOCALLAB_CLARITYML;Clarity
|
||||
TP_LOCALLAB_CLARI_TOOLTIP;Levels 0 to 4 (included): ‘Sharp mask’ is enabled\nLevels 5 and above: 'Clarity' is enabled.\nUseful if you use 'Wavelet level tone mapping'
|
||||
TP_LOCALLAB_CLARIJZ_TOOLTIP;Levels 0 to 4 (included): ‘Sharp mask’ is enabled\nLevels 5 and above: 'Clarity' is enabled.
|
||||
TP_LOCALLAB_CLIPTM;Clip restored data (gain)
|
||||
TP_LOCALLAB_COFR;Color & Light
|
||||
TP_LOCALLAB_COLOR_CIE;Color curve
|
||||
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_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.
|
||||
@ -2694,6 +2836,7 @@ TP_LOCALLAB_CURVENH;Super
|
||||
TP_LOCALLAB_CURVENHSU;Combined HueChroma (experimental)
|
||||
TP_LOCALLAB_CURVENSOB2;Combined HueChroma + Contrast threshold (experimental)
|
||||
TP_LOCALLAB_CURVNONE;Disable curves
|
||||
TP_LOCALLAB_CURVES_CIE;Tone curve
|
||||
TP_LOCALLAB_DARKRETI;Darkness
|
||||
TP_LOCALLAB_DEHAFRA;Dehaze
|
||||
TP_LOCALLAB_DEHAZ;Strength
|
||||
@ -2710,6 +2853,8 @@ TP_LOCALLAB_DENOIEQUAL_TOOLTIP;Allows you to carry out more or less noise reduct
|
||||
TP_LOCALLAB_DENOI1_EXP;Denoise based on luminance mask
|
||||
TP_LOCALLAB_DENOI2_EXP;Recovery based on luminance mask
|
||||
TP_LOCALLAB_DENOILUMDETAIL_TOOLTIP;Allows you to recover luminance detail by progressively applying a Fourier transform (DCT).
|
||||
TP_LOCALLAB_DENOIMASK;Denoise chroma mask
|
||||
TP_LOCALLAB_DENOIMASK_TOOLTIP;For all tools, allows you to control the chromatic noise level of the mask.\nUseful for better control of chrominance and to avoid artifacts when using the LC(h) curve.
|
||||
TP_LOCALLAB_DENOIQUA_TOOLTIP;Conservative mode preserves low frequency detail. Aggressive mode removes low frequency detail.\nConservative and Aggressive modes use wavelets and DCT and can be used in conjunction with ‘Non-local Means – Luminance’.
|
||||
TP_LOCALLAB_DENOIS;Denoise
|
||||
TP_LOCALLAB_DENOITHR_TOOLTIP;Adjusts edge detection to help reduce noise in uniform, low-contrast areas.
|
||||
@ -2754,7 +2899,7 @@ TP_LOCALLAB_EXPCOLOR_TOOLTIP;Adjust color, lightness, contrast and correct small
|
||||
TP_LOCALLAB_EXPCOMP;Exposure compensation ƒ
|
||||
TP_LOCALLAB_EXPCOMPINV;Exposure compensation
|
||||
TP_LOCALLAB_EXPCOMP_TOOLTIP;For portraits or images with a low color gradient. You can change ‘Shape detection’ in "Settings":\n\nIncrease 'ΔE scope threshold'\nReduce 'ΔE decay'\nIncrease 'ab-L balance (ΔE)’
|
||||
TP_LOCALLAB_EXPCONTRASTPYR_TOOLTIP;See the documentation for Wavelet Levels.\nThere are some differences in the Locallab version: more tools and more possibilities for working on individual detail levels.\ne.g. Wavelet-level tone mapping.
|
||||
TP_LOCALLAB_EXPCONTRASTPYR_TOOLTIP;See the documentation for Wavelet Levels.\nThere are some differences in the Local Adjustments version, which has more tools and more possibilities for working on individual detail levels.\ne.g. Wavelet-level tone mapping.
|
||||
TP_LOCALLAB_EXPCONTRAST_TOOLTIP;Avoid spots that are too small ( < 32x32 pixels).\nUse low ‘Transition value’ and high ‘Transition decay’ and ‘Scope’ to simulate small RT-spots and deal with defects.\nUse 'Clarity and Sharp mask and Blend and Soften Images' if necessary by adjusting 'Soft radius' to reduce artifacts.
|
||||
TP_LOCALLAB_EXPCURV;Curves
|
||||
TP_LOCALLAB_EXPGRAD;Graduated Filter
|
||||
@ -2792,6 +2937,10 @@ TP_LOCALLAB_FFTWBLUR;ƒ - Always Use Fast Fourier Transform
|
||||
TP_LOCALLAB_FULLIMAGE;Black-Ev and White-Ev for whole image
|
||||
TP_LOCALLAB_FULLIMAGELOG_TOOLTIP;Calculates the Ev levels for the whole image.
|
||||
TP_LOCALLAB_GAM;Gamma
|
||||
TP_LOCALLAB_GAMW;Gamma (wavelet pyramids)
|
||||
TP_LOCALLAB_GAMC;Gamma
|
||||
TP_LOCALLAB_GAMCOL_TOOLTIP;Apply a gamma on Luminance L*a*b* datas.\nIf gamma = 3.0 Luminance "linear" is used.
|
||||
TP_LOCALLAB_GAMC_TOOLTIP;Apply a gamma on Luminance L*a*b* datas before and after treatment Pyramid 1 and Pyramid 2.\nIf gamma = 3.0 Luminance "linear" is used.
|
||||
TP_LOCALLAB_GAMFRA;Tone response curve (TRC)
|
||||
TP_LOCALLAB_GAMM;Gamma
|
||||
TP_LOCALLAB_GAMMASKCOL;Gamma
|
||||
@ -2827,6 +2976,8 @@ TP_LOCALLAB_GUIDSTRBL_TOOLTIP;Intensity of the guided filter
|
||||
TP_LOCALLAB_HHMASK_TOOLTIP;Fine hue adjustments for example for the skin.
|
||||
TP_LOCALLAB_HIGHMASKCOL;Highlights
|
||||
TP_LOCALLAB_HLH;H
|
||||
TP_LOCALLAB_HLHZ;Hz
|
||||
TP_LOCALLAB_HUECIE;Hue
|
||||
TP_LOCALLAB_IND;Independent (mouse)
|
||||
TP_LOCALLAB_INDSL;Independent (mouse + sliders)
|
||||
TP_LOCALLAB_INVBL;Inverse
|
||||
@ -2835,6 +2986,40 @@ TP_LOCALLAB_INVERS;Inverse
|
||||
TP_LOCALLAB_INVERS_TOOLTIP;Fewer possibilities if selected (Inverse).\n\nAlternative: use two spots\nFirst Spot:\n Full Image\n \nSecond spot: Excluding spot
|
||||
TP_LOCALLAB_INVMASK;Inverse algorithm
|
||||
TP_LOCALLAB_ISOGR;Distribution (ISO)
|
||||
TP_LOCALLAB_JAB;Uses Black Ev & White Ev
|
||||
TP_LOCALLAB_JABADAP_TOOLTIP;Perceptual Uniform adaptation.\nAutomatically adjusts the relationship between Jz and saturation taking into account "Absolute luminance".
|
||||
TP_LOCALLAB_JZ100;Jz reference 100cd/m2
|
||||
TP_LOCALLAB_JZLOGYBOUT_TOOLTIP;Yb is the relative luminance of the background, expressed as a percentage of gray. 18% gray corresponds to a background luminance of 50% when expressed in CIE L.\nThe data is based on the mean luminance of the image.\nWhen used with Log Encoding, the mean luminance is used to determine the amount of gain that needs to be applied to the signal prior to the log encoding. Lower values of mean luminance will result in increased gain.
|
||||
TP_LOCALLAB_JZCLARILRES;Merge Jz
|
||||
TP_LOCALLAB_JZCLARICRES;Merge chroma Cz
|
||||
TP_LOCALLAB_JZFORCE;Force max Jz to 1
|
||||
TP_LOCALLAB_JZFORCE_TOOLTIP;Allows you to force the maximum Jz value to 1 for better slider and curve response
|
||||
TP_LOCALLAB_JZMODECAM_TOOLTIP;Jz (only in 'Advanced' mode). Only operational if the output device (monitor) is HDR (peak luminance higher than 100 cd/m2 - ideally between 4000 and 10000 cd/m2. Black point luminance inferior to 0.005 cd/m2). This supposes a) the ICC-PCS for the screen uses Jzazbz (or XYZ), b) works in real precision, c) that the monitor is calibrated (if possible with a DCI-P3 or Rec-2020 gamut), d) that the usual gamma (sRGB or BT709) is replaced by a Perceptual Quantiser (PQ) function.
|
||||
TP_LOCALLAB_JZPQFRA;Jz remapping
|
||||
TP_LOCALLAB_JZPQFRA_TOOLTIP;Allows you to adapt the Jz algorithm to an SDR environment or to the characteristics (performance) of an HDR environment as follows:\n a) for luminance values between 0 and 100 cd/m2, the system behaves as if it were in an SDR environment.\n b) for luminance values between 100 and 10000 cd/m2, you can adapt the algorithm to the HDR characteristics of the image and the monitor.\n\nIf “PQ - Peak luminance” is set to 10000, “Jz remappping” behaves in the same way as the original Jzazbz algorithm.
|
||||
TP_LOCALLAB_JZPQREMAP;PQ - Peak luminance
|
||||
TP_LOCALLAB_JZPQREMAP_TOOLTIP;PQ (Perceptual Quantizer) - allows you to change the internal PQ function (usually 10000 cd/m2 - default 120 cd/m2).\nCan be used to adapt to different images, processes and devices.
|
||||
TP_LOCALLAB_JZ100_TOOLTIP;Automatically adjusts the reference Jz 100 cd/m2 level (image signal).\nChanges the saturation level and action of “PU adaptation” (Perceptual Uniform adaptation).
|
||||
TP_LOCALLAB_JZADAP;PU adaptation
|
||||
TP_LOCALLAB_JZFRA;Jz Cz Hz Image Adjustments
|
||||
TP_LOCALLAB_JZLIGHT;Brightness
|
||||
TP_LOCALLAB_JZCONT;Contrast
|
||||
TP_LOCALLAB_JZCH;Chroma
|
||||
TP_LOCALLAB_JZCHROM;Chroma
|
||||
TP_LOCALLAB_JZHFRA;Curves Hz
|
||||
TP_LOCALLAB_JZHJZFRA;Curve Jz(Hz)
|
||||
TP_LOCALLAB_JZHUECIE;Hue Rotation
|
||||
TP_LOCALLAB_JZLOGWB_TOOLTIP;If Auto is enabled, it will calculate and adjust the Ev levels and the 'Mean luminance Yb%' for the spot area. The resulting values will be used by all Jz operations including "Log Encoding Jz".\nAlso calculates the absolute luminance at the time of shooting.
|
||||
TP_LOCALLAB_JZSAT;Saturation
|
||||
TP_LOCALLAB_JZSHFRA;Shadows/Highlights Jz
|
||||
TP_LOCALLAB_JZSOFTCIE;Soft radius (GuidedFilter)
|
||||
TP_LOCALLAB_JZTARGET_EV;Viewing Mean luminance (Yb%)
|
||||
TP_LOCALLAB_JZSTRSOFTCIE;Strength GuidedFilter
|
||||
TP_LOCALLAB_JZQTOJ;Relative luminance
|
||||
TP_LOCALLAB_JZQTOJ_TOOLTIP;Allows you to use "Relative luminance" instead of "Absolute luminance" - Brightness becomes Lightness.\nThe changes affect: the Brightness slider, the Contrast slider and the Jz(Jz) curve.
|
||||
TP_LOCALLAB_JZTHRHCIE;Threshold Chroma for Jz(Hz)
|
||||
TP_LOCALLAB_JZWAVEXP;Wavelet Jz
|
||||
TP_LOCALLAB_JZLOG;Log encoding Jz
|
||||
TP_LOCALLAB_LABBLURM;Blur Mask
|
||||
TP_LOCALLAB_LABEL;Local Adjustments
|
||||
TP_LOCALLAB_LABGRID;Color correction grid
|
||||
@ -2846,8 +3031,8 @@ TP_LOCALLAB_LAPLACE;Laplacian threshold ΔE
|
||||
TP_LOCALLAB_LAPLACEXP;Laplacian threshold
|
||||
TP_LOCALLAB_LAPMASKCOL;Laplacian threshold
|
||||
TP_LOCALLAB_LAPRAD1_TOOLTIP;Increases the contrast of the mask by increasing the luminance values of the lighter areas. Can be used in conjunction with the L(L) and LC(H) curves.
|
||||
TP_LOCALLAB_LAPRAD2_TOOLTIP;Smooth radius uses a guided filter to decrease artifacts and smooth out the transition
|
||||
TP_LOCALLAB_LAPRAD_TOOLTIP;Smooth radius uses a guided filter to decrease artifacts and smooth out the transition
|
||||
TP_LOCALLAB_LAPRAD2_TOOLTIP;Smooth radius uses a guided filter to decrease artifacts and smooth out the transition.
|
||||
TP_LOCALLAB_LAPRAD_TOOLTIP;Smooth radius uses a guided filter to decrease artifacts and smooth out the transition.
|
||||
TP_LOCALLAB_LAP_MASK_TOOLTIP;Solves PDEs for all Laplacian masks.\nIf enabled the Laplacian threshold mask reduces artifacts and smooths the result.\nIf disabled the response is linear.
|
||||
TP_LOCALLAB_LC_FFTW_TOOLTIP;FFT improves quality and allows the use of large radii, but increases processing time (depends on the area to be processed). Preferable to use only for large radii. The size of the area can be reduced by a few pixels to optimize the FFTW. This can reduce the processing time by a factor of 1.5 to 10.
|
||||
TP_LOCALLAB_LC_TOOLNAME;Local Contrast & Wavelets
|
||||
@ -2871,14 +3056,14 @@ TP_LOCALLAB_LOC_CONTRASTPYR2LAB; Contrast by level/TM/Directional contrast
|
||||
TP_LOCALLAB_LOC_CONTRASTPYRLAB; Graduated Filter/Edge Sharpness/Blur
|
||||
TP_LOCALLAB_LOC_RESIDPYR;Residual image (Main)
|
||||
TP_LOCALLAB_LOG;Log Encoding
|
||||
TP_LOCALLAB_LOG1FRA;Image Adjustments
|
||||
TP_LOCALLAB_LOG1FRA;CAM16 Image Adjustments
|
||||
TP_LOCALLAB_LOG2FRA;Viewing Conditions
|
||||
TP_LOCALLAB_LOGAUTO;Automatic
|
||||
TP_LOCALLAB_LOGAUTOGRAY_TOOLTIP;Automatically calculates the 'Mean luminance' for the scene conditions when the ‘Automatic’ button in Relative Exposure Levels is pressed.
|
||||
TP_LOCALLAB_LOGAUTO_TOOLTIP;Pressing this button will calculate the dynamic range and 'Mean luminance' for the scene conditions if the "Auto mean luminance (Yb%)” is checked).\nAlso calculates the absolute luminance at the time of shooting.\nPress the button again to adjust the automatically calculated values.
|
||||
TP_LOCALLAB_LOGBASE_TOOLTIP;Default = 2.\nValues less than 2 reduce the action of the algorithm making the shadows darker and the highlights brighter.\nWith values greater than 2, the shadows are grayer and the highlights become more washed out.
|
||||
TP_LOCALLAB_LOGBLACKWHEV_TOOLTIP;Estimated values of dynamic range i.e. Black Ev and White Ev
|
||||
TP_LOCALLAB_LOGCATAD_TOOLTIP;The chromatic adaptation allows us to interpret a color according to its spatio-temporal environment.\nUseful when the white balance deviates significantly from the D50 reference.\nAdapts colors to the illuminant of the output device.
|
||||
TP_LOCALLAB_LOGCATAD_TOOLTIP;Chromatic adaptation allows us to interpret a color according to its spatio-temporal environment.\nUseful when the white balance deviates significantly from the D50 reference.\nAdapts colors to the illuminant of the output device.
|
||||
TP_LOCALLAB_LOGCOLORFL;Colorfulness (M)
|
||||
TP_LOCALLAB_LOGCOLORF_TOOLTIP;Perceived amount of hue in relation to gray.\nIndicator that a stimulus appears more or less colored.
|
||||
TP_LOCALLAB_LOGCONQL;Contrast (Q)
|
||||
@ -2888,25 +3073,25 @@ TP_LOCALLAB_LOGCONTL_TOOLTIP;Contrast (J) in CIECAM16 takes into account the inc
|
||||
TP_LOCALLAB_LOGCONTQ_TOOLTIP;Contrast (Q) in CIECAM16 takes into account the increase in perceived coloration with brightness.
|
||||
TP_LOCALLAB_LOGCONTTHRES_TOOLTIP;Adjusts the mid-tone contrast range (J & Q).\nPositive values progressively reduce the effect of the Contrast sliders (J & Q). Negative values progressively increase the effect of the Contrast sliders.
|
||||
TP_LOCALLAB_LOGDETAIL_TOOLTIP;Acts mainly on high frequencies.
|
||||
TP_LOCALLAB_LOGENCOD_TOOLTIP;Tone Mapping with Logarithmic encoding (ACES).\nUseful for underexposed images or images with high dynamic range.\n\nTwo-step process : 1) Dynamic Range calculation 2) Manual adjustment
|
||||
TP_LOCALLAB_LOGENCOD_TOOLTIP;Tone Mapping with Logarithmic encoding (ACES).\nUseful for underexposed images or images with high dynamic range.\n\nTwo-step process: 1) Dynamic Range calculation 2) Manual adjustment
|
||||
TP_LOCALLAB_LOGEXP;All tools
|
||||
TP_LOCALLAB_LOGFRA;Scene Conditions
|
||||
TP_LOCALLAB_LOGFRAME_TOOLTIP;Allows you to calculate and adjust the Ev levels and the 'Mean luminance Yb%' (source gray point) for the spot area. The resulting values will be used by all Lab operations and most RGB operations in the pipeline.\nTakes into account exposure compensation in the main-menu Exposure tab.\nAlso calculates the absolute luminance at the time of shooting.
|
||||
TP_LOCALLAB_LOGIMAGE_TOOLTIP;Takes into account corresponding Ciecam variables (mainly Contrast 'J' and Saturation 's', and also Contrast (Q) , Brightness (Q), Lightness (J), Colorfulness (M) in Advanced mode).
|
||||
TP_LOCALLAB_LOGFRAME_TOOLTIP;Allows you to calculate and adjust the Ev levels and the 'Mean luminance Yb%' (source gray point) for the spot area. The resulting values will be used by all Lab operations and most RGB operations in the pipeline.\nAlso calculates the absolute luminance at the time of shooting.
|
||||
TP_LOCALLAB_LOGIMAGE_TOOLTIP;Takes into account corresponding Ciecam variables: i.e. Contrast (J) and Saturation (s), as well as Contrast (Q), Brightness (Q), Lightness (J) and Colorfulness (M) (in Advanced mode)
|
||||
TP_LOCALLAB_LOGLIGHTL;Lightness (J)
|
||||
TP_LOCALLAB_LOGLIGHTL_TOOLTIP;Close to lightness (L*a*b*), takes into account the increase in perceived coloration.
|
||||
TP_LOCALLAB_LOGLIGHTL_TOOLTIP;Close to lightness (L*a*b*). Takes into account the increase in perceived coloration.
|
||||
TP_LOCALLAB_LOGLIGHTQ;Brightness (Q)
|
||||
TP_LOCALLAB_LOGLIGHTQ_TOOLTIP;Perceived amount of light emanating from a stimulus.\nIndicator that a stimulus appears to be more or less bright, clear.
|
||||
TP_LOCALLAB_LOGLIN;Logarithm mode
|
||||
TP_LOCALLAB_LOGPFRA;Relative Exposure Levels
|
||||
TP_LOCALLAB_LOGREPART;Overall strength
|
||||
TP_LOCALLAB_LOGREPART_TOOLTIP;Allows you to adjust the relative strength of the log-encoded image with respect to the original image.\nDoes not affect the Ciecam component.
|
||||
TP_LOCALLAB_LOGSATURL_TOOLTIP;Saturation (s) in CIECAM16 corresponds to the color of a stimulus in relation to its own brightness.\nActs mainly on medium and highlights tones
|
||||
TP_LOCALLAB_LOGSATURL_TOOLTIP;Saturation (s) in CIECAM16 corresponds to the color of a stimulus in relation to its own brightness.\nActs mainly on medium tones and on the highlights.
|
||||
TP_LOCALLAB_LOGSCENE_TOOLTIP;Corresponds to the shooting conditions.
|
||||
TP_LOCALLAB_LOGSRCGREY_TOOLTIP;Estimated gray point value of the image.
|
||||
TP_LOCALLAB_LOGSURSOUR_TOOLTIP;Changes tones and colors to take into account the Scene conditions.\n\n<b>Average</b>: Average light environment (standard). The image will not change.\n\n<b>Dim</b>: Dim environment. The image will become slightly brighter.\n\n<b>Dark</b>: Dark environment. The image will become more bright.
|
||||
TP_LOCALLAB_LOGSURSOUR_TOOLTIP;Changes tones and colors to take into account the Scene conditions.\n\n<b>Average</b>: Average light conditions (standard). The image will not change.\n\n<b>Dim</b>: Dim conditions. The image will become slightly brighter.\n\n<b>Dark</b>: Dark conditions. The image will become more bright.
|
||||
TP_LOCALLAB_LOGTARGGREY_TOOLTIP;You can adjust this value to suit.
|
||||
TP_LOCALLAB_LOGVIEWING_TOOLTIP;Corresponds to the medium on which the final image will be viewed (monitor, TV, projector, printer,..), as well as its environment.
|
||||
TP_LOCALLAB_LOGVIEWING_TOOLTIP;Corresponds to the medium on which the final image will be viewed (monitor, TV, projector, printer, etc.), as well as the surrounding conditions..
|
||||
TP_LOCALLAB_LOG_TOOLNAME;Log Encoding
|
||||
TP_LOCALLAB_LUM;LL - CC
|
||||
TP_LOCALLAB_LUMADARKEST;Darkest
|
||||
@ -2972,7 +3157,7 @@ TP_LOCALLAB_MASKLCTHRMIDCH;Gray area chroma denoise
|
||||
TP_LOCALLAB_MASKUSABLE;Mask enabled (Mask & modifications)
|
||||
TP_LOCALLAB_MASKUNUSABLE;Mask disabled (Mask & modifications)
|
||||
TP_LOCALLAB_MASKRECOTHRES;Recovery threshold
|
||||
TP_LOCALLAB_MASK_TOOLTIP;You can enable multiple masks for a tool by activating another tool and using only the mask (set the tool sliders to 0 ).\n\nYou can also duplicate the RT-spot and place it close to the first spot. The small variations in the spot references allows you to make fine adjustments.
|
||||
TP_LOCALLAB_MASK_TOOLTIP;You can enable multiple masks for a tool by activating another tool and using only the mask (set the tool sliders to 0 ).\n\nYou can also duplicate the RT-spot and place it close to the first spot. The small variations in the spot references allow you to make fine adjustments.
|
||||
TP_LOCALLAB_MED;Medium
|
||||
TP_LOCALLAB_MEDIAN;Median Low
|
||||
TP_LOCALLAB_MEDIANITER_TOOLTIP;The number of successive iterations carried out by the median filter.
|
||||
@ -3030,7 +3215,7 @@ TP_LOCALLAB_NEIGH;Radius
|
||||
TP_LOCALLAB_NLDENOISE_TOOLTIP;“Detail recovery” acts on a Laplacian transform to target uniform areas rather than areas with detail.
|
||||
TP_LOCALLAB_NLDENOISENLPAT_TOOLTIP;Use this slider to adapt the amount of denoise to the size of the objects to be processed.
|
||||
TP_LOCALLAB_NLDENOISENLRAD_TOOLTIP;Higher values increase denoise at the expense of processing time.
|
||||
TP_LOCALLAB_NLDENOISENLGAM_TOOLTIP;Lower values preserve details and texture, higher values increase denoise.
|
||||
TP_LOCALLAB_NLDENOISENLGAM_TOOLTIP;Lower values preserve details and texture, higher values increase denoise.\nIf gamma = 3.0 Luminance "linear" is used.
|
||||
TP_LOCALLAB_NLFRA;Non-local Means - Luminance
|
||||
TP_LOCALLAB_NLFRAME_TOOLTIP;Non-local means denoising takes a mean of all pixels in the image, weighted by how similar they are to the target pixel.\nReduces loss of detail compared with local mean algorithms.\nOnly luminance noise is taken into account. Chrominance noise is best processed using wavelets and Fourier transforms (DCT).\nCan be used in conjunction with 'Luminance denoise by level' or on its own.
|
||||
TP_LOCALLAB_NLLUM;Strength
|
||||
@ -3043,6 +3228,8 @@ TP_LOCALLAB_NOISECHROC_TOOLTIP;If superior to zero, high quality algorithm is en
|
||||
TP_LOCALLAB_NOISECHRODETAIL;Chroma detail recovery
|
||||
TP_LOCALLAB_NOISECHROFINE;Fine chroma (Wav)
|
||||
TP_LOCALLAB_NOISEDETAIL_TOOLTIP;Disabled if slider = 100
|
||||
TP_LOCALLAB_NOISEGAM;Gamma
|
||||
TP_LOCALLAB_NOISEGAM_TOOLTIP;If gamma = 1 Luminance "Lab" is used. If gamma = 3.0 Luminance "linear" is used.\nLower values preserve details and texture, higher values increase denoise.
|
||||
TP_LOCALLAB_NOISELEQUAL;Equalizer white-black
|
||||
TP_LOCALLAB_NOISELUMCOARSE;Luminance coarse (Wav)
|
||||
TP_LOCALLAB_NOISELUMDETAIL;Luma detail recovery
|
||||
@ -3077,6 +3264,7 @@ TP_LOCALLAB_RADIUS;Radius
|
||||
TP_LOCALLAB_RADIUS_TOOLTIP;Uses a Fast Fourier Transform for radius > 30
|
||||
TP_LOCALLAB_RADMASKCOL;Smooth radius
|
||||
TP_LOCALLAB_RECT;Rectangle
|
||||
TP_LOCALLAB_RECOTHRES02_TOOLTIP;If the “Recovery threshold” value is greater than 1, the mask in Mask and Modifications takes into account any previous modifications made to the image but not those made with the current tool (e.g. Color and Light, Wavelet, Cam16, etc.)\nIf the value of the “Recovery threshold” is less than 1, the mask in Mask and Modifications does not take into account any previous modifications to the image.\n\nIn both cases, the “Recovery threshold” acts on the masked image as modified by the current tool (Color and Light, Wavelet, Cam16, etc.).
|
||||
TP_LOCALLAB_RECURS;Recursive references
|
||||
TP_LOCALLAB_RECURS_TOOLTIP;Forces the algorithm to recalculate the references after each tool is applied.\nAlso useful for working with masks.
|
||||
TP_LOCALLAB_REFLABEL;Ref. (0..1) Chroma=%1 Luma=%2 Hue=%3
|
||||
@ -3115,6 +3303,7 @@ TP_LOCALLAB_RGB;RGB Tone Curve
|
||||
TP_LOCALLAB_RGBCURVE_TOOLTIP;In RGB mode you have 4 choices : Standard, Weighted standard, Luminance & Film-like.
|
||||
TP_LOCALLAB_ROW_NVIS;Not visible
|
||||
TP_LOCALLAB_ROW_VIS;Visible
|
||||
TP_LOCALLAB_RSTPROTECT_TOOLTIP;Red and skin-tone protection affects the Saturation, Chroma and Colorfulness sliders.
|
||||
TP_LOCALLAB_SATUR;Saturation
|
||||
TP_LOCALLAB_SATURV;Saturation (s)
|
||||
TP_LOCALLAB_SAVREST;Save - Restore Current Image
|
||||
@ -3180,10 +3369,17 @@ TP_LOCALLAB_SHOWSTRUC;Show spot structure(Advanced)
|
||||
TP_LOCALLAB_SHOWSTRUCEX;Show spot structure(Advanced)
|
||||
TP_LOCALLAB_SHOWT;Mask and modifications
|
||||
TP_LOCALLAB_SHOWVI;Mask and modifications
|
||||
TP_LOCALLAB_SHRESFRA;Shadows/Highlights
|
||||
TP_LOCALLAB_SHRESFRA;Shadows/Highlights & TRC
|
||||
TP_LOCALLAB_SHTRC_TOOLTIP;Based on 'working profile' (only those provided), modifies the tones of the image by acting on a TRC (Tone Response Curve).\nGamma acts mainly on light tones.\nSlope acts mainly on dark tones.\nIt is recommended that the TRC of both devices (monitor and output profile) be sRGB (default).
|
||||
TP_LOCALLAB_SH_TOOLNAME;Shadows/Highlights & Tone Equalizer
|
||||
TP_LOCALLAB_SIGMAWAV;Attenuation response
|
||||
TP_LOCALLAB_SIGFRA;Sigmoid J & Q
|
||||
TP_LOCALLAB_SIGJZFRA;Sigmoid Jz
|
||||
TP_LOCALLAB_SIGMOIDLAMBDA;Contrast
|
||||
TP_LOCALLAB_SIGMOIDTH;Threshold (Gray point)
|
||||
TP_LOCALLAB_SIGMOIDBL;Blend
|
||||
TP_LOCALLAB_SIGMOIDQJ;Use Q instead of J
|
||||
TP_LOCALLAB_SIGMOID_TOOLTIP;Allows you to simulate a Tone-mapping appearance using both the'Ciecam' and 'Sigmoid' function.\nThree sliders: a) Strength acts on the shape of the sigmoid curve and consequently on the strength; b) Threshold distributes the action according to the luminance; c)Blend acts on the final aspect of the image, contrast and luminance.
|
||||
TP_LOCALLAB_SIM;Simple
|
||||
TP_LOCALLAB_SLOMASKCOL;Slope
|
||||
TP_LOCALLAB_SLOMASK_TOOLTIP;Adjusting Gamma and Slope can provide a soft and artifact-free transformation of the mask by progressively modifying ‘L’ to avoid any discontinuities.
|
||||
@ -3268,20 +3464,22 @@ TP_LOCALLAB_WAT_BALTHRES_TOOLTIP;Balances the action within each level.
|
||||
TP_LOCALLAB_WAT_BLURLC_TOOLTIP;The default blur setting affects all 3 L*a* b* components (luminance and colour).\nWhen checked, only luminance is blurred.
|
||||
TP_LOCALLAB_WAT_CLARIC_TOOLTIP;“Merge chroma” is used to select the intensity of the desired effect on chrominance.
|
||||
TP_LOCALLAB_WAT_CLARIL_TOOLTIP;“Merge luma” is used to select the intensity of the desired effect on luminance.
|
||||
TP_LOCALLAB_WAT_CLARICJZ_TOOLTIP;“Merge chroma” is used to select the intensity of the desired effect on chrominance.\nOnly the maximum value of wavelet levels (bottom-right) is taken into account.
|
||||
TP_LOCALLAB_WAT_CLARILJZ_TOOLTIP;“Merge luma” is used to select the intensity of the desired effect on luminance.\nOnly the maximum value of wavelet levels (bottom-right) is taken into account.
|
||||
TP_LOCALLAB_WAT_CONTCHROMALEV_TOOLTIP;‘Chroma levels’: adjusts the “a” and “b” components of Lab* as a proportion of the luminance value.
|
||||
TP_LOCALLAB_WAT_CONTOFFSET_TOOLTIP;Offset modifies the balance between low-contrast and high-contrast details.\nHigh values will amplify contrast changes to the higher-contrast details, whereas low values will amplify contrast changes to low-contrast details.\nBy using a low ‘Attenuation response’ value you can select which contrast values will be enhanced.
|
||||
TP_LOCALLAB_WAT_DELTABAL_TOOLTIP;By moving the slider to the left, the lower levels are accentuated. To the right, the lower levels are reduced and the higher levels accentuated.
|
||||
TP_LOCALLAB_WAT_EXPRESID_TOOLTIP;The residual image behaves in the same way as the main image when making adjustments to contrast, chroma etc.
|
||||
TP_LOCALLAB_WAT_GRADW_TOOLTIP;The more you move the slider to the right, the more effective the detection algorithm will be and the less noticeable the effects of local contrast.
|
||||
TP_LOCALLAB_WAT_LEVELLOCCONTRAST_TOOLTIP;Low to high local contrast from left to right on the x-axis.\nIncrease or decrease local contrast on the y-axis.
|
||||
TP_LOCALLAB_WAT_LEVELLOCCONTRAST_TOOLTIP;Low to high local contrast from left to right on the x-axis.\nIncreases or decreases local contrast on the y-axis.
|
||||
TP_LOCALLAB_WAT_LOCCONTRASTEDG_TOOLTIP;You can adjust the distribution of local contrast by wavelet level based on the initial intensity of the contrast. This will modify the effects of perspective and relief in the image, and/or reduce the contrast values for very low initial contrast levels.
|
||||
TP_LOCALLAB_WAT_ORIGLC_TOOLTIP;‘Merge only with original image’, prevents the ‘Wavelet Pyramid’ settings from interfering with ‘Clarity’ and ‘Sharp mask’.
|
||||
TP_LOCALLAB_WAT_RESIDBLUR_TOOLTIP;Blurs the residual image, independent of the levels.
|
||||
TP_LOCALLAB_WAT_RESIDCOMP_TOOLTIP;Compresses the residual image to increase or reduce contrast.
|
||||
TP_LOCALLAB_WAT_SIGMALC_TOOLTIP;The effect of the local contrast adjustment is stronger for medium-contrast details, and weaker for high and low-contrast details.\n This slider controls how quickly the effect dampens towards the extreme contrasts.\nThe higher the value of the slider, the wider the range of contrasts that will receive the full effect of the local contrast adjustment, and the higher the risk of generating artifacts.\nThe lower the value, the more the effect will be pinpointed towards a narrow range of contrast values.
|
||||
TP_LOCALLAB_WAT_SIGMALC_TOOLTIP;The effect of the local contrast adjustment is stronger for medium-contrast details and weaker for high and low-contrast details.\n This slider controls how quickly the effect dampens towards the extreme contrasts.\nThe higher the value of the slider, the wider the range of contrasts that will receive the full effect of the local contrast adjustment and the higher the risk of generating artifacts.\nThe lower the value, the more the effect will be pinpointed towards a narrow range of contrast values.
|
||||
TP_LOCALLAB_WAT_STRENGTHW_TOOLTIP;Intensity of edge-effect detection.
|
||||
TP_LOCALLAB_WAT_STRWAV_TOOLTIP;Allows the local contrast to be varied according to a chosen gradient and angle. The variation of the luminance signal is taken into account and not the luminance.
|
||||
TP_LOCALLAB_WAT_THRESHOLDWAV_TOOLTIP;Range of wavelet levels used throughout the ‘Wavelets’ module.
|
||||
TP_LOCALLAB_WAT_THRESHOLDWAV_TOOLTIP;Range of wavelet levels used throughout the Wavelets module.
|
||||
TP_LOCALLAB_WAT_WAVBLURCURV_TOOLTIP;Allows you to blur each level of decomposition.\nThe finest to coarsest levels of decomposition are from left to right.
|
||||
TP_LOCALLAB_WAT_WAVCBDL_TOOLTIP;Similar to Contrast By Detail Levels. Fine to coarse detail levels from left to right on the x-axis.
|
||||
TP_LOCALLAB_WAT_WAVDELTABAL_TOOLTIP;Acts on the balance of the three directions (horizontal, vertical and diagonal) based on the luminance of the image.\nBy default the shadows or highlights are reduced to avoid artifacts.
|
||||
@ -3313,6 +3511,8 @@ TP_LOCALLAB_WAVMASK_TOOLTIP;Uses wavelets to modify the local contrast of the ma
|
||||
TP_LOCALLAB_WAVMED;Wavelet normal
|
||||
TP_LOCALLAB_WEDIANHI;Median Hi
|
||||
TP_LOCALLAB_WHITE_EV;White Ev
|
||||
TP_LOCALLAB_ZCAMFRA;ZCAM Image Adjustments
|
||||
TP_LOCALLAB_ZCAMTHRES;Retrieve high datas
|
||||
TP_LOCAL_HEIGHT;Bottom
|
||||
TP_LOCAL_HEIGHT_T;Top
|
||||
TP_LOCAL_WIDTH;Right
|
||||
|
@ -25,6 +25,19 @@
|
||||
#undef CLIPD
|
||||
#define CLIPD(a) ((a)>0.f?((a)<1.f?(a):1.f):0.f)
|
||||
#define MAXR(a,b) ((a) > (b) ? (a) : (b))
|
||||
#define Jzazbz_b 1.15
|
||||
#define Jzazbz_g 0.66
|
||||
#define Jzazbz_c1 (3424/4096.0)
|
||||
#define Jzazbz_c2 (2413/128.0)
|
||||
#define Jzazbz_c3 (2392/128.0)
|
||||
#define Jzazbz_n (2610/16384.0)
|
||||
#define Jzazbz_p (1.7*2523/32.0)
|
||||
#define Jzazbz_d (-0.56)
|
||||
#define Jzazbz_d0 (1.6295499532821566e-11)
|
||||
#define Jzazbz_ni (16384.0/2610.0)
|
||||
#define Jzazbz_pi (32.0/4289.1) //4289.1 = 2523 * 1.7
|
||||
|
||||
|
||||
|
||||
namespace rtengine
|
||||
{
|
||||
@ -67,10 +80,12 @@ void Ciecam02::curveJfloat (float br, float contr, float thr, const LUTu & histo
|
||||
brightcurvePoints[5] = 0.7f; // shoulder point
|
||||
brightcurvePoints[6] = min (1.0f, 0.7f + br / 300.0f); //value at shoulder point
|
||||
} else {
|
||||
brightcurvePoints[3] = 0.1f - br / 150.0f; // toe point
|
||||
brightcurvePoints[3] = max(0.0, 0.1 - (double) br / 150.0); // toe point
|
||||
// brightcurvePoints[3] = 0.1f - br / 150.0f; // toe point
|
||||
brightcurvePoints[4] = 0.1f; // value at toe point
|
||||
|
||||
brightcurvePoints[5] = min (1.0f, 0.7f - br / 300.0f); // shoulder point
|
||||
// brightcurvePoints[5] = min (1.0f, 0.7f - br / 300.0f); // shoulder point
|
||||
brightcurvePoints[5] = 0.7f - br / 300.0f; // shoulder point
|
||||
brightcurvePoints[6] = 0.7f; // value at shoulder point
|
||||
}
|
||||
|
||||
@ -109,6 +124,7 @@ void Ciecam02::curveJfloat (float br, float contr, float thr, const LUTu & histo
|
||||
}
|
||||
|
||||
avg /= sum;
|
||||
// printf("avg=%f \n", (double) avg);
|
||||
float thrmin = (thr - contr / 250.0f);
|
||||
float thrmax = (thr + contr / 250.0f);
|
||||
|
||||
@ -184,14 +200,14 @@ float Ciecam02::calculate_fl_from_la_ciecam02float ( float la )
|
||||
return (0.2f * k * la5) + (0.1f * (1.0f - k) * (1.0f - k) * std::cbrt (la5));
|
||||
}
|
||||
|
||||
float Ciecam02::achromatic_response_to_whitefloat ( float x, float y, float z, float d, float fl, float nbb, int c16)
|
||||
float Ciecam02::achromatic_response_to_whitefloat ( float x, float y, float z, float d, float fl, float nbb, int c16, float plum)
|
||||
{
|
||||
float r, g, b;
|
||||
float rc, gc, bc;
|
||||
float rp, gp, bp;
|
||||
float rpa, gpa, bpa;
|
||||
// gamu = 1;
|
||||
xyz_to_cat02float ( r, g, b, x, y, z, c16);
|
||||
xyz_to_cat02float ( r, g, b, x, y, z, c16, plum);
|
||||
|
||||
rc = r * (((y * d) / r) + (1.0f - d));
|
||||
gc = g * (((y * d) / g) + (1.0f - d));
|
||||
@ -216,71 +232,253 @@ float Ciecam02::achromatic_response_to_whitefloat ( float x, float y, float z, f
|
||||
return ((2.0f * rpa) + gpa + ((1.0f / 20.0f) * bpa) - 0.305f) * nbb;
|
||||
}
|
||||
|
||||
void Ciecam02::xyz_to_cat02float ( float &r, float &g, float &b, float x, float y, float z, int c16)
|
||||
{
|
||||
void Ciecam02::xyz_to_cat02float ( float &r, float &g, float &b, float x, float y, float z, int c16, float plum)
|
||||
{ //I use isnan() because I have tested others solutions with std::max(xxx,0) and in some cases crash
|
||||
//original cat02
|
||||
//r = ( 0.7328 * x) + (0.4296 * y) - (0.1624 * z);
|
||||
//g = (-0.7036 * x) + (1.6975 * y) + (0.0061 * z);
|
||||
//b = ( 0.0000 * x) + (0.0000 * y) + (1.0000 * z);
|
||||
float peakLum = 1.f/ plum;
|
||||
if(c16 == 1) {//cat02
|
||||
r = ( 1.007245f * x) + (0.011136f * y) - (0.018381f * z); //Changjun Li
|
||||
g = (-0.318061f * x) + (1.314589f * y) + (0.003471f * z);
|
||||
b = ( 0.0000f * x) + (0.0000f * y) + (1.0000f * z);
|
||||
} else {//cat16
|
||||
} else if (c16 == 16) {//cat16
|
||||
r = ( 0.401288f * x) + (0.650173f * y) - (0.051461f * z); //cat16
|
||||
g = (-0.250268f * x) + (1.204414f * y) + (0.045854f * z);
|
||||
b = ( -0.002079f * x) + (0.048952f * y) + (0.953127f * z);
|
||||
} else if (c16 == 21) {//cam16 PQ
|
||||
float rp = ( 0.401288f * x) + (0.650173f * y) - (0.051461f * z); //cat16
|
||||
float gp = (-0.250268f * x) + (1.204414f * y) + (0.045854f * z);
|
||||
float bp = ( -0.002079f * x) + (0.048952f * y) + (0.953127f * z);
|
||||
rp *= 0.01f;
|
||||
gp *= 0.01f;
|
||||
bp *= 0.01f;
|
||||
float tmp = pow_F(rp * peakLum, Jzazbz_n);
|
||||
if(std::isnan(tmp)) {//to avoid crash
|
||||
tmp = 0.f;
|
||||
}
|
||||
r = 100.f * pow((Jzazbz_c1 + Jzazbz_c2 * tmp) / (1. + Jzazbz_c3 * tmp), Jzazbz_p);
|
||||
if(std::isnan(r) || r < 0.f) {
|
||||
r = 0.f;
|
||||
}
|
||||
|
||||
tmp = pow_F(gp * peakLum, Jzazbz_n);
|
||||
if(std::isnan(tmp)) {//to avoid crash
|
||||
tmp = 0.f;
|
||||
}
|
||||
g = 100.f * pow((Jzazbz_c1 + Jzazbz_c2 * tmp) / (1. + Jzazbz_c3 * tmp), Jzazbz_p);
|
||||
if(std::isnan(g) || g < 0.f) {
|
||||
g = 0.f;
|
||||
}
|
||||
tmp = pow_F(bp * peakLum, Jzazbz_n);
|
||||
if(std::isnan(tmp)) {//to avoid crash
|
||||
tmp = 0.f;
|
||||
}
|
||||
|
||||
b = 100.f * pow((Jzazbz_c1 + Jzazbz_c2 * tmp) / (1. + Jzazbz_c3 * tmp), Jzazbz_p);
|
||||
if(std::isnan(b) || b < 0.f) {
|
||||
b = 0.f;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#ifdef __SSE2__
|
||||
void Ciecam02::xyz_to_cat02float ( vfloat &r, vfloat &g, vfloat &b, vfloat x, vfloat y, vfloat z, int c16)
|
||||
{
|
||||
void Ciecam02::xyz_to_cat02float ( vfloat &r, vfloat &g, vfloat &b, vfloat x, vfloat y, vfloat z, int c16, vfloat plum)
|
||||
{ //I use isnan() because I have tested others solutions with std::max(xxx,0) and in some cases crash
|
||||
//gamut correction M.H.Brill S.Susstrunk
|
||||
if(c16 == 1) {
|
||||
r = ( F2V (1.007245f) * x) + (F2V (0.011136f) * y) - (F2V (0.018381f) * z); //Changjun Li
|
||||
g = (F2V (-0.318061f) * x) + (F2V (1.314589f) * y) + (F2V (0.003471f) * z);
|
||||
b = z;
|
||||
} else {
|
||||
} else if (c16 == 16) {
|
||||
//cat16
|
||||
r = ( F2V (0.401288f) * x) + (F2V (0.650173f) * y) - (F2V (0.051461f) * z); //Changjun Li
|
||||
r = ( F2V (0.401288f) * x) + (F2V (0.650173f) * y) - (F2V (0.051461f) * z);
|
||||
g = -(F2V (0.250268f) * x) + (F2V (1.204414f) * y) + (F2V (0.045854f) * z);
|
||||
b = -(F2V(0.002079f) * x) + (F2V(0.048952f) * y) + (F2V(0.953127f) * z);
|
||||
} else if (c16 == 21) {
|
||||
vfloat rp = ( F2V (0.401288f) * x) + (F2V (0.650173f) * y) - (F2V (0.051461f) * z);
|
||||
vfloat gp = -(F2V (0.250268f) * x) + (F2V (1.204414f) * y) + (F2V (0.045854f) * z);
|
||||
vfloat bp = -(F2V(0.002079f) * x) + (F2V(0.048952f) * y) + (F2V(0.953127f) * z);
|
||||
vfloat Jzazbz_c1v = F2V(Jzazbz_c1);
|
||||
vfloat Jzazbz_c2v = F2V(Jzazbz_c2);
|
||||
vfloat Jzazbz_nv = F2V(Jzazbz_n);
|
||||
vfloat Jzazbz_c3v = F2V(Jzazbz_c3);
|
||||
vfloat Jzazbz_pv = F2V(Jzazbz_p);
|
||||
vfloat mulone = F2V(0.01f);
|
||||
vfloat mulhund = F2V(100.f);
|
||||
float RR, GG, BB;
|
||||
vfloat one = F2V(1.);
|
||||
vfloat peakLumv = one / plum;
|
||||
rp *= mulone;
|
||||
gp *= mulone;
|
||||
bp *= mulone;
|
||||
vfloat tmp = pow_F(rp * peakLumv, Jzazbz_nv );
|
||||
STVF(RR, tmp);
|
||||
if(std::isnan(RR)) {//to avoid crash
|
||||
tmp = F2V(0.f);;
|
||||
}
|
||||
r = mulhund * pow_F((Jzazbz_c1v + Jzazbz_c2v * tmp) / (one + Jzazbz_c3v * tmp), Jzazbz_pv);
|
||||
STVF(RR, r);
|
||||
if(std::isnan(RR) || RR < 0.f) {//to avoid crash
|
||||
r = F2V(0.f);;
|
||||
}
|
||||
tmp = pow_F(gp * peakLumv, Jzazbz_nv );
|
||||
STVF(RR, tmp);
|
||||
if(std::isnan(RR)) {//to avoid crash
|
||||
tmp = F2V(0.f);;
|
||||
}
|
||||
|
||||
g = mulhund * pow_F((Jzazbz_c1v + Jzazbz_c2v * tmp) / (one + Jzazbz_c3v * tmp), Jzazbz_pv);
|
||||
STVF(GG, g);
|
||||
if(std::isnan(GG) || GG < 0.f) {//to avoid crash
|
||||
g = F2V(0.f);;
|
||||
}
|
||||
|
||||
tmp = pow_F(bp * peakLumv, Jzazbz_nv );
|
||||
STVF(RR, tmp);
|
||||
if(std::isnan(RR)) {//to avoid crash
|
||||
tmp = F2V(0.f);;
|
||||
}
|
||||
|
||||
b = mulhund * pow_F((Jzazbz_c1v + Jzazbz_c2v * tmp) / (one + Jzazbz_c3v * tmp), Jzazbz_pv);
|
||||
STVF(BB, b);
|
||||
if(std::isnan(BB) || BB < 0.f) {//to avoid crash
|
||||
b = F2V(0.f);;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void Ciecam02::cat02_to_xyzfloat ( float &x, float &y, float &z, float r, float g, float b, int c16)
|
||||
{
|
||||
void Ciecam02::cat02_to_xyzfloat ( float &x, float &y, float &z, float r, float g, float b, int c16, float plum)
|
||||
{ //I use isnan() because I have tested others solutions with std::max(xxx,0) and in some cases crash
|
||||
//original cat02
|
||||
//x = ( 1.0978566 * r) - (0.277843 * g) + (0.179987 * b);
|
||||
//y = ( 0.455053 * r) + (0.473938 * g) + (0.0710096* b);
|
||||
//z = ( 0.000000 * r) - (0.000000 * g) + (1.000000 * b);
|
||||
float pl = plum;
|
||||
if(c16 == 1) {
|
||||
x = ( 0.99015849f * r) - (0.00838772f * g) + (0.018229217f * b); //Changjun Li
|
||||
y = ( 0.239565979f * r) + (0.758664642f * g) + (0.001770137f * b);
|
||||
z = ( 0.000000f * r) - (0.000000f * g) + (1.000000f * b);
|
||||
} else {//cat16
|
||||
} else if(c16 == 16){//cat16
|
||||
x = ( 1.86206786f * r) - (1.01125463f * g) + (0.14918677f * b); //Cat16
|
||||
y = ( 0.38752654f * r) + (0.62144744f * g) + (-0.00897398f * b);
|
||||
z = ( -0.0158415f * r) - (0.03412294f * g) + (1.04996444f * b);
|
||||
}else if(c16 == 21){//cam16 PQ
|
||||
float lp = ( 1.86206786f * r) - (1.01125463f * g) + (0.14918677f * b); //Cat16
|
||||
float mp = ( 0.38752654f * r) + (0.62144744f * g) + (-0.00897398f * b);
|
||||
float sp = ( -0.0158415f * r) - (0.03412294f * g) + (1.04996444f * b);
|
||||
lp *= 0.01f;
|
||||
float tmp = pow_F(lp, Jzazbz_pi);
|
||||
if(std::isnan(tmp)) {//to avoid crash
|
||||
tmp = 0.f;
|
||||
}
|
||||
|
||||
float prov = (Jzazbz_c1 - tmp) / ((Jzazbz_c3 * tmp) - Jzazbz_c2);
|
||||
x = pl * pow_F(prov, Jzazbz_ni);
|
||||
if(std::isnan(x)) {//to avoid crash
|
||||
x = 0.f;
|
||||
}
|
||||
x *= 100.f;
|
||||
mp *= 0.01f;
|
||||
tmp = pow_F(mp, Jzazbz_pi);
|
||||
if(std::isnan(tmp)) {//to avoid crash
|
||||
tmp = 0.f;
|
||||
}
|
||||
prov = (Jzazbz_c1 - tmp) / ((Jzazbz_c3 * tmp) - Jzazbz_c2);
|
||||
y = pl * pow_F(prov, Jzazbz_ni);
|
||||
if(std::isnan(y)) {
|
||||
y = 0.f;
|
||||
}
|
||||
y *= 100.f;
|
||||
sp *= 0.01f;
|
||||
tmp = pow_F(sp, Jzazbz_pi);
|
||||
if(std::isnan(tmp)) {//to avoid crash
|
||||
tmp = 0.f;
|
||||
}
|
||||
prov = (Jzazbz_c1 - tmp) / ((Jzazbz_c3 * tmp) - Jzazbz_c2);
|
||||
z = pl * pow_F(prov, Jzazbz_ni);
|
||||
if(std::isnan(z)) {
|
||||
z = 0.;
|
||||
}
|
||||
z *= 100.f;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
#ifdef __SSE2__
|
||||
void Ciecam02::cat02_to_xyzfloat ( vfloat &x, vfloat &y, vfloat &z, vfloat r, vfloat g, vfloat b, int c16 )
|
||||
{
|
||||
void Ciecam02::cat02_to_xyzfloat ( vfloat &x, vfloat &y, vfloat &z, vfloat r, vfloat g, vfloat b, int c16, vfloat plum )
|
||||
{ //I use isnan() because I have tested others solutions with std::max(xxx,0) and in some cases crash
|
||||
vfloat plv = plum;
|
||||
//gamut correction M.H.Brill S.Susstrunk
|
||||
if(c16 == 1) {//cat02
|
||||
x = ( F2V (0.99015849f) * r) - (F2V (0.00838772f) * g) + (F2V (0.018229217f) * b); //Changjun Li
|
||||
y = ( F2V (0.239565979f) * r) + (F2V (0.758664642f) * g) + (F2V (0.001770137f) * b);
|
||||
z = b;
|
||||
} else {
|
||||
} else if(c16 == 16) {
|
||||
//cat16
|
||||
x = ( F2V (1.86206786f) * r) - (F2V (1.01125463f) * g) + (F2V (0.14918677f) * b);
|
||||
y = ( F2V (0.38752654f) * r) + (F2V (0.621447744f) * g) - (F2V (0.00897398f) * b);
|
||||
z = -(F2V(0.0158415f) * r) - (F2V(0.03412294f) * g) + (F2V(1.04996444f) * b);
|
||||
}else if(c16 == 21){//cam16 PQ
|
||||
vfloat lp = ( F2V (1.86206786f) * r) - (F2V (1.01125463f) * g) + (F2V (0.14918677f) * b);
|
||||
vfloat mp = ( F2V (0.38752654f) * r) + (F2V (0.621447744f) * g) - (F2V (0.00897398f) * b);
|
||||
vfloat sp = -(F2V(0.0158415f) * r) - (F2V(0.03412294f) * g) + (F2V(1.04996444f) * b);
|
||||
float XX,YY,ZZ;
|
||||
vfloat Jzazbz_c1v = F2V(Jzazbz_c1);
|
||||
vfloat Jzazbz_c2v = F2V(Jzazbz_c2);
|
||||
vfloat Jzazbz_c3v = F2V(Jzazbz_c3);
|
||||
vfloat Jzazbz_piv = F2V(Jzazbz_pi);
|
||||
vfloat Jzazbz_niv = F2V(Jzazbz_ni);
|
||||
vfloat mulone = F2V(0.01f);
|
||||
vfloat mulhund = F2V(100.f);
|
||||
lp *= mulone;
|
||||
float pro;
|
||||
vfloat tmp = pow_F(lp, Jzazbz_piv);
|
||||
STVF(XX, tmp);
|
||||
if(std::isnan(XX)) {//to avoid crash
|
||||
tmp = F2V(0.f);;
|
||||
}
|
||||
vfloat prov = (Jzazbz_c1v - tmp) / ((Jzazbz_c3v * tmp) - Jzazbz_c2v);
|
||||
x = plv * pow_F(prov, Jzazbz_niv);
|
||||
STVF(XX, x);
|
||||
if(std::isnan(XX)) {//to avoid crash
|
||||
x = F2V(0.f);;
|
||||
}
|
||||
x *= mulhund;
|
||||
mp *= mulone;
|
||||
tmp = pow_F(mp, Jzazbz_piv);
|
||||
STVF(YY, tmp);
|
||||
if(std::isnan(YY)) {//to avoid crash
|
||||
tmp = F2V(0.f);;
|
||||
}
|
||||
prov = (Jzazbz_c1v - tmp) / ((Jzazbz_c3v * tmp) - Jzazbz_c2v);
|
||||
y = plv * pow_F(prov, Jzazbz_niv);
|
||||
STVF(YY, y);
|
||||
if(std::isnan(YY)) {//to avoid crash
|
||||
y = F2V(0.f);;
|
||||
}
|
||||
y *= mulhund;
|
||||
sp *= mulone;
|
||||
tmp = pow_F(sp, Jzazbz_piv);
|
||||
STVF(ZZ, tmp);
|
||||
if(std::isnan(ZZ)) {//to avoid crash
|
||||
tmp = F2V(0.f);;
|
||||
}
|
||||
prov = (Jzazbz_c1v - tmp) / ((Jzazbz_c3v * tmp) - Jzazbz_c2v);
|
||||
STVF(pro, prov);
|
||||
z = plv * pow_F(prov, Jzazbz_niv);
|
||||
STVF(ZZ, z);
|
||||
if(std::isnan(ZZ)) {//to avoid crash
|
||||
z = F2V(0.f);;
|
||||
}
|
||||
z *= mulhund;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -429,7 +627,7 @@ void Ciecam02::calculate_abfloat ( vfloat &aa, vfloat &bb, vfloat h, vfloat e, v
|
||||
#endif
|
||||
|
||||
void Ciecam02::initcam1float (float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb,
|
||||
float &cz, float &aw, float &wh, float &pfl, float &fl, float c, int c16)
|
||||
float &cz, float &aw, float &wh, float &pfl, float &fl, float c, int c16, float plum)
|
||||
{
|
||||
n = yb / yw;
|
||||
|
||||
@ -442,13 +640,13 @@ void Ciecam02::initcam1float (float yb, float pilotd, float f, float la, float x
|
||||
fl = calculate_fl_from_la_ciecam02float ( la );
|
||||
nbb = ncb = 0.725f * pow_F ( 1.0f / n, 0.2f );
|
||||
cz = 1.48f + sqrt ( n );
|
||||
aw = achromatic_response_to_whitefloat ( xw, yw, zw, d, fl, nbb, c16);
|
||||
aw = achromatic_response_to_whitefloat ( xw, yw, zw, d, fl, nbb, c16, plum);
|
||||
wh = ( 4.0f / c ) * ( aw + 4.0f ) * pow_F ( fl, 0.25f );
|
||||
pfl = pow_F ( fl, 0.25f );
|
||||
}
|
||||
|
||||
void Ciecam02::initcam2float (float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb,
|
||||
float &cz, float &aw, float &fl, int c16)
|
||||
float &cz, float &aw, float &fl, int c16, float plum)
|
||||
{
|
||||
n = yb / yw;
|
||||
|
||||
@ -462,12 +660,135 @@ void Ciecam02::initcam2float (float yb, float pilotd, float f, float la, float x
|
||||
fl = calculate_fl_from_la_ciecam02float ( la );
|
||||
nbb = ncb = 0.725f * pow_F ( 1.0f / n, 0.2f );
|
||||
cz = 1.48f + sqrt ( n );
|
||||
aw = achromatic_response_to_whitefloat ( xw, yw, zw, d, fl, nbb, c16);
|
||||
aw = achromatic_response_to_whitefloat ( xw, yw, zw, d, fl, nbb, c16, plum);
|
||||
}
|
||||
|
||||
|
||||
void Ciecam02::xyz2jzczhz ( double &Jz, double &az, double &bz, double x, double y, double z, double pl, double &Lp, double &Mp, double &Sp, bool zcam)
|
||||
{ //from various web
|
||||
double Xp, Yp, Zp, L, M, S, Iz;
|
||||
double peakLum = 1. / pl;
|
||||
//I change 10000 for peaklum function of la (absolute luminance)- default 10000
|
||||
Xp = Jzazbz_b * x - ((Jzazbz_b - 1.) * z);
|
||||
Yp = Jzazbz_g * y - ((Jzazbz_g - 1.) * x);
|
||||
Zp = z;
|
||||
|
||||
L = 0.41478972 * Xp + 0.579999 * Yp + 0.0146480 * Zp;
|
||||
M = -0.2015100 * Xp + 1.120649 * Yp + 0.0531008 * Zp;
|
||||
S = -0.0166008 * Xp + 0.264800 * Yp + 0.6684799 * Zp;
|
||||
|
||||
//I use isnan() because I have tested others solutions with std::max(xxx,0) and in some cases crash
|
||||
// Lp = pow((Jzazbz_c1 + Jzazbz_c2 * pow(std::max((L * peakLum), 0.), Jzazbz_n)) / (1. + Jzazbz_c3 * pow((L * peakLum), Jzazbz_n)), Jzazbz_p);
|
||||
// Mp = pow((Jzazbz_c1 + Jzazbz_c2 * pow(std::max((M * peakLum),0.), Jzazbz_n)) / (1. + Jzazbz_c3 * pow((M * peakLum), Jzazbz_n)), Jzazbz_p);
|
||||
// Sp = pow((Jzazbz_c1 + Jzazbz_c2 * pow(std::max((S * peakLum), 0.), Jzazbz_n)) / (1. + Jzazbz_c3 * pow((S * peakLum), Jzazbz_n)), Jzazbz_p);
|
||||
double temp = pow(L * peakLum, Jzazbz_n);
|
||||
if(std::isnan(temp)) {//to avoid crash
|
||||
temp = 0.;
|
||||
}
|
||||
Lp = pow((Jzazbz_c1 + Jzazbz_c2 * temp) / (1. + Jzazbz_c3 * temp), Jzazbz_p);
|
||||
if(std::isnan(Lp)) {//to avoid crash
|
||||
Lp = 0.;
|
||||
}
|
||||
|
||||
temp = pow(M * peakLum, Jzazbz_n);
|
||||
if(std::isnan(temp)) {//to avoid crash
|
||||
temp = 0.;
|
||||
}
|
||||
Mp = pow((Jzazbz_c1 + Jzazbz_c2 * temp) / (1. + Jzazbz_c3 * temp), Jzazbz_p);
|
||||
if(std::isnan(Mp)) {//to avoid crash
|
||||
Mp = 0.;
|
||||
}
|
||||
|
||||
temp = pow(S * peakLum, Jzazbz_n);
|
||||
if(std::isnan(temp)) {//to avoid crash
|
||||
temp = 0.;
|
||||
}
|
||||
Sp = pow((Jzazbz_c1 + Jzazbz_c2 * temp) / (1. + Jzazbz_c3 * temp), Jzazbz_p);
|
||||
if(std::isnan(Sp)) {//to avoid crash
|
||||
Sp = 0.;
|
||||
}
|
||||
|
||||
Iz = 0.5 * Lp + 0.5 * Mp;
|
||||
az = 3.524000 * Lp - 4.066708 * Mp + 0.542708 * Sp;
|
||||
bz = 0.199076 * Lp + 1.096799 * Mp - 1.295875 * Sp;
|
||||
if(!zcam) {
|
||||
Jz = (((1. + Jzazbz_d) * Iz) / (1. + Jzazbz_d * Iz)) - Jzazbz_d0;
|
||||
// Jz = std::max((((1. + Jzazbz_d) * Iz) / (1. + Jzazbz_d * Iz)) - Jzazbz_d0, 0.);
|
||||
} else {
|
||||
//or if we use ZCAM Jz = Mp - Jzazbz_d0
|
||||
Jz = Mp - Jzazbz_d0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Ciecam02::jzczhzxyz (double &x, double &y, double &z, double jz, double az, double bz, double pl, double &L, double &M, double &S, bool zcam)
|
||||
{ //from various web
|
||||
//I use isnan() because I have tested others solutions with std::max(xxx,0) and in some cases crash
|
||||
|
||||
double Xp, Yp, Zp, Lp, Mp, Sp, Iz, tmp;
|
||||
|
||||
if(!zcam) {
|
||||
// Iz = std::max((jz + Jzazbz_d0) / (1. + Jzazbz_d - Jzazbz_d * (jz + Jzazbz_d0)), 0.);
|
||||
Iz = (jz + Jzazbz_d0) / (1. + Jzazbz_d - Jzazbz_d * (jz + Jzazbz_d0));
|
||||
} else {
|
||||
//or if we use ZCAM Iz = Jz + Jzazbz_d0
|
||||
Iz = jz + Jzazbz_d0;
|
||||
}
|
||||
|
||||
Lp = Iz + 0.138605043271539 * az + 0.0580473161561189 * bz;
|
||||
Mp = Iz - 0.138605043271539 * az - 0.0580473161561189 * bz;
|
||||
Sp = Iz - 0.0960192420263189 * az - 0.811891896056039 * bz;
|
||||
//I change optionnaly 10000 for pl function of la(absolute luminance) default 10000
|
||||
|
||||
tmp = pow(Lp, Jzazbz_pi);
|
||||
if(std::isnan(tmp)) {//to avoid crash
|
||||
tmp = 0.;
|
||||
}
|
||||
L = pl * pow((Jzazbz_c1 - tmp) / ((Jzazbz_c3 * tmp) - Jzazbz_c2), Jzazbz_ni);
|
||||
if(std::isnan(L)) {//to avoid crash
|
||||
L = 0.;
|
||||
}
|
||||
|
||||
tmp = pow(Mp, Jzazbz_pi);
|
||||
if(std::isnan(tmp)) {//to avoid crash
|
||||
tmp = 0.;
|
||||
}
|
||||
M = pl * pow((Jzazbz_c1 - tmp) / ((Jzazbz_c3 * tmp) - Jzazbz_c2), Jzazbz_ni);
|
||||
if(std::isnan(M)) {//to avoid crash
|
||||
M = 0.;
|
||||
}
|
||||
|
||||
tmp = pow(Sp, Jzazbz_pi);
|
||||
if(std::isnan(tmp)) {//to avoid crash
|
||||
tmp = 0.;
|
||||
}
|
||||
S = pl * pow((Jzazbz_c1 - tmp) / ((Jzazbz_c3 * tmp) - Jzazbz_c2), Jzazbz_ni);
|
||||
if(std::isnan(S)) {//to avoid crash
|
||||
S = 0.;
|
||||
}
|
||||
|
||||
Xp = 1.9242264357876067 * L - 1.0047923125953657 * M + 0.0376514040306180 * S;
|
||||
Yp = 0.3503167620949991 * L + 0.7264811939316552 * M - 0.0653844229480850 * S;
|
||||
Zp = -0.0909828109828475 * L - 0.3127282905230739 * M + 1.5227665613052603 * S;
|
||||
|
||||
x = (Xp + (Jzazbz_b - 1.) * Zp) / Jzazbz_b;
|
||||
|
||||
if(std::isnan(x)) {//to avoid crash
|
||||
x = 0.;
|
||||
}
|
||||
y = (Yp + (Jzazbz_g - 1.) * x) / Jzazbz_g;
|
||||
if(std::isnan(y)) {
|
||||
y = 0.;
|
||||
}
|
||||
z = Zp;
|
||||
if(std::isnan(z)) {
|
||||
z = 0.;
|
||||
}
|
||||
}
|
||||
|
||||
void Ciecam02::xyz2jchqms_ciecam02float ( float &J, float &C, float &h, float &Q, float &M, float &s, float aw, float fl, float wh,
|
||||
float x, float y, float z, float xw, float yw, float zw,
|
||||
float c, float nc, float pow1, float nbb, float ncb, float pfl, float cz, float d, int c16)
|
||||
float c, float nc, float pow1, float nbb, float ncb, float pfl, float cz, float d, int c16, float plum)
|
||||
|
||||
{
|
||||
float r, g, b;
|
||||
@ -478,8 +799,8 @@ void Ciecam02::xyz2jchqms_ciecam02float ( float &J, float &C, float &h, float &Q
|
||||
float a, ca, cb;
|
||||
float e, t;
|
||||
float myh;
|
||||
xyz_to_cat02float ( r, g, b, x, y, z, c16);
|
||||
xyz_to_cat02float ( rw, gw, bw, xw, yw, zw, c16);
|
||||
xyz_to_cat02float ( r, g, b, x, y, z, c16, plum);
|
||||
xyz_to_cat02float ( rw, gw, bw, xw, yw, zw, c16, plum);
|
||||
rc = r * (((yw * d) / rw) + (1.f - d));
|
||||
gc = g * (((yw * d) / gw) + (1.f - d));
|
||||
bc = b * (((yw * d) / bw) + (1.f - d));
|
||||
@ -530,7 +851,7 @@ void Ciecam02::xyz2jchqms_ciecam02float ( float &J, float &C, float &h, float &Q
|
||||
#ifdef __SSE2__
|
||||
void Ciecam02::xyz2jchqms_ciecam02float ( vfloat &J, vfloat &C, vfloat &h, vfloat &Q, vfloat &M, vfloat &s, vfloat aw, vfloat fl, vfloat wh,
|
||||
vfloat x, vfloat y, vfloat z, vfloat xw, vfloat yw, vfloat zw,
|
||||
vfloat c, vfloat nc, vfloat pow1, vfloat nbb, vfloat ncb, vfloat pfl, vfloat cz, vfloat d, int c16)
|
||||
vfloat c, vfloat nc, vfloat pow1, vfloat nbb, vfloat ncb, vfloat pfl, vfloat cz, vfloat d, int c16, vfloat plum)
|
||||
|
||||
{
|
||||
vfloat r, g, b;
|
||||
@ -541,8 +862,8 @@ void Ciecam02::xyz2jchqms_ciecam02float ( vfloat &J, vfloat &C, vfloat &h, vfloa
|
||||
vfloat a, ca, cb;
|
||||
vfloat e, t;
|
||||
|
||||
xyz_to_cat02float ( r, g, b, x, y, z, c16);
|
||||
xyz_to_cat02float ( rw, gw, bw, xw, yw, zw, c16);
|
||||
xyz_to_cat02float ( r, g, b, x, y, z, c16, plum);
|
||||
xyz_to_cat02float ( rw, gw, bw, xw, yw, zw, c16, plum);
|
||||
vfloat onev = F2V (1.f);
|
||||
rc = r * (((yw * d) / rw) + (onev - d));
|
||||
gc = g * (((yw * d) / gw) + (onev - d));
|
||||
@ -595,7 +916,7 @@ void Ciecam02::xyz2jchqms_ciecam02float ( vfloat &J, vfloat &C, vfloat &h, vfloa
|
||||
|
||||
void Ciecam02::xyz2jch_ciecam02float ( float &J, float &C, float &h, float aw, float fl,
|
||||
float x, float y, float z, float xw, float yw, float zw,
|
||||
float c, float nc, float pow1, float nbb, float ncb, float cz, float d, int c16)
|
||||
float c, float nc, float pow1, float nbb, float ncb, float cz, float d, int c16, float plum)
|
||||
|
||||
{
|
||||
float r, g, b;
|
||||
@ -606,8 +927,8 @@ void Ciecam02::xyz2jch_ciecam02float ( float &J, float &C, float &h, float aw, f
|
||||
float a, ca, cb;
|
||||
float e, t;
|
||||
float myh;
|
||||
xyz_to_cat02float ( r, g, b, x, y, z, c16);
|
||||
xyz_to_cat02float ( rw, gw, bw, xw, yw, zw, c16);
|
||||
xyz_to_cat02float ( r, g, b, x, y, z, c16, plum);
|
||||
xyz_to_cat02float ( rw, gw, bw, xw, yw, zw, c16, plum);
|
||||
rc = r * (((yw * d) / rw) + (1.f - d));
|
||||
gc = g * (((yw * d) / gw) + (1.f - d));
|
||||
bc = b * (((yw * d) / bw) + (1.f - d));
|
||||
@ -664,7 +985,7 @@ void Ciecam02::xyz2jch_ciecam02float ( float &J, float &C, float &h, float aw, f
|
||||
|
||||
void Ciecam02::jch2xyz_ciecam02float ( float &x, float &y, float &z, float J, float C, float h,
|
||||
float xw, float yw, float zw,
|
||||
float c, float nc, float pow1, float nbb, float ncb, float fl, float cz, float d, float aw, int c16)
|
||||
float c, float nc, float pow1, float nbb, float ncb, float fl, float cz, float d, float aw, int c16, float plum)
|
||||
{
|
||||
float r, g, b;
|
||||
float rc, gc, bc;
|
||||
@ -673,7 +994,7 @@ void Ciecam02::jch2xyz_ciecam02float ( float &x, float &y, float &z, float J, fl
|
||||
float rw, gw, bw;
|
||||
float a, ca, cb;
|
||||
float e, t;
|
||||
xyz_to_cat02float(rw, gw, bw, xw, yw, zw, c16);
|
||||
xyz_to_cat02float(rw, gw, bw, xw, yw, zw, c16, plum);
|
||||
e = ((961.53846f) * nc * ncb) * (xcosf(h * rtengine::RT_PI_F_180 + 2.0f) + 3.8f);
|
||||
|
||||
#ifdef __SSE2__
|
||||
@ -705,7 +1026,7 @@ void Ciecam02::jch2xyz_ciecam02float ( float &x, float &y, float &z, float J, fl
|
||||
|
||||
if(c16 == 1) {//cat02
|
||||
hpe_to_xyzfloat(x, y, z, rp, gp, bp, c16);
|
||||
xyz_to_cat02float(rc, gc, bc, x, y, z, c16);
|
||||
xyz_to_cat02float(rc, gc, bc, x, y, z, c16, plum);
|
||||
|
||||
r = rc / (((yw * d) / rw) + (1.0f - d));
|
||||
g = gc / (((yw * d) / gw) + (1.0f - d));
|
||||
@ -716,13 +1037,13 @@ void Ciecam02::jch2xyz_ciecam02float ( float &x, float &y, float &z, float J, fl
|
||||
b = bp / (((yw * d) / bw) + (1.0f - d));
|
||||
}
|
||||
|
||||
cat02_to_xyzfloat(x, y, z, r, g, b, c16);
|
||||
cat02_to_xyzfloat(x, y, z, r, g, b, c16, plum);
|
||||
}
|
||||
|
||||
#ifdef __SSE2__
|
||||
void Ciecam02::jch2xyz_ciecam02float ( vfloat &x, vfloat &y, vfloat &z, vfloat J, vfloat C, vfloat h,
|
||||
vfloat xw, vfloat yw, vfloat zw,
|
||||
vfloat nc, vfloat pow1, vfloat nbb, vfloat ncb, vfloat fl, vfloat d, vfloat aw, vfloat reccmcz, int c16)
|
||||
vfloat nc, vfloat pow1, vfloat nbb, vfloat ncb, vfloat fl, vfloat d, vfloat aw, vfloat reccmcz, int c16, vfloat plum)
|
||||
{
|
||||
vfloat r, g, b;
|
||||
vfloat rc, gc, bc;
|
||||
@ -731,7 +1052,7 @@ void Ciecam02::jch2xyz_ciecam02float ( vfloat &x, vfloat &y, vfloat &z, vfloat J
|
||||
vfloat rw, gw, bw;
|
||||
vfloat a, ca, cb;
|
||||
vfloat e, t;
|
||||
xyz_to_cat02float ( rw, gw, bw, xw, yw, zw, c16);
|
||||
xyz_to_cat02float ( rw, gw, bw, xw, yw, zw, c16, plum);
|
||||
e = ((F2V (961.53846f)) * nc * ncb) * (xcosf ( ((h * F2V (rtengine::RT_PI)) / F2V (180.0f)) + F2V (2.0f) ) + F2V (3.8f));
|
||||
a = pow_F ( J / F2V (100.0f), reccmcz ) * aw;
|
||||
t = pow_F ( F2V (10.f) * C / (vsqrtf ( J ) * pow1), F2V (1.1111111f) );
|
||||
@ -745,7 +1066,7 @@ void Ciecam02::jch2xyz_ciecam02float ( vfloat &x, vfloat &y, vfloat &z, vfloat J
|
||||
|
||||
if(c16 == 1) {//cat02
|
||||
hpe_to_xyzfloat ( x, y, z, rp, gp, bp, c16);
|
||||
xyz_to_cat02float ( rc, gc, bc, x, y, z, c16 );
|
||||
xyz_to_cat02float ( rc, gc, bc, x, y, z, c16, plum );
|
||||
|
||||
r = rc / (((yw * d) / rw) + (F2V (1.0f) - d));
|
||||
g = gc / (((yw * d) / gw) + (F2V (1.0f) - d));
|
||||
@ -756,7 +1077,7 @@ void Ciecam02::jch2xyz_ciecam02float ( vfloat &x, vfloat &y, vfloat &z, vfloat J
|
||||
b = bp / (((yw * d) / bw) + (F2V (1.0f) - d));
|
||||
}
|
||||
|
||||
cat02_to_xyzfloat ( x, y, z, r, g, b, c16 );
|
||||
cat02_to_xyzfloat ( x, y, z, r, g, b, c16, plum );
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -37,12 +37,12 @@ class Ciecam02
|
||||
private:
|
||||
static float d_factorfloat ( float f, float la );
|
||||
static float calculate_fl_from_la_ciecam02float ( float la );
|
||||
static float achromatic_response_to_whitefloat ( float x, float y, float z, float d, float fl, float nbb, int c16);
|
||||
static void xyz_to_cat02float ( float &r, float &g, float &b, float x, float y, float z, int c16);
|
||||
static float achromatic_response_to_whitefloat ( float x, float y, float z, float d, float fl, float nbb, int c16, float plum);
|
||||
static void xyz_to_cat02float ( float &r, float &g, float &b, float x, float y, float z, int c16, float plum);
|
||||
static void cat02_to_hpefloat ( float &rh, float &gh, float &bh, float r, float g, float b, int c16);
|
||||
|
||||
#ifdef __SSE2__
|
||||
static void xyz_to_cat02float ( vfloat &r, vfloat &g, vfloat &b, vfloat x, vfloat y, vfloat z, int c16);
|
||||
static void xyz_to_cat02float ( vfloat &r, vfloat &g, vfloat &b, vfloat x, vfloat y, vfloat z, int c16, vfloat plum);
|
||||
static void cat02_to_hpefloat ( vfloat &rh, vfloat &gh, vfloat &bh, vfloat r, vfloat g, vfloat b, int c16);
|
||||
static vfloat nonlinear_adaptationfloat ( vfloat c, vfloat fl );
|
||||
#endif
|
||||
@ -53,13 +53,13 @@ private:
|
||||
static void calculate_abfloat ( float &aa, float &bb, float h, float e, float t, float nbb, float a );
|
||||
static void Aab_to_rgbfloat ( float &r, float &g, float &b, float A, float aa, float bb, float nbb );
|
||||
static void hpe_to_xyzfloat ( float &x, float &y, float &z, float r, float g, float b, int c16);
|
||||
static void cat02_to_xyzfloat ( float &x, float &y, float &z, float r, float g, float b, int c16);
|
||||
static void cat02_to_xyzfloat ( float &x, float &y, float &z, float r, float g, float b, int c16, float plum);
|
||||
#ifdef __SSE2__
|
||||
static vfloat inverse_nonlinear_adaptationfloat ( vfloat c, vfloat fl );
|
||||
static void calculate_abfloat ( vfloat &aa, vfloat &bb, vfloat h, vfloat e, vfloat t, vfloat nbb, vfloat a );
|
||||
static void Aab_to_rgbfloat ( vfloat &r, vfloat &g, vfloat &b, vfloat A, vfloat aa, vfloat bb, vfloat nbb );
|
||||
static void hpe_to_xyzfloat ( vfloat &x, vfloat &y, vfloat &z, vfloat r, vfloat g, vfloat b, int c16);
|
||||
static void cat02_to_xyzfloat ( vfloat &x, vfloat &y, vfloat &z, vfloat r, vfloat g, vfloat b, int c16);
|
||||
static void cat02_to_xyzfloat ( vfloat &x, vfloat &y, vfloat &z, vfloat r, vfloat g, vfloat b, int c16, vfloat plum);
|
||||
#endif
|
||||
|
||||
public:
|
||||
@ -67,46 +67,52 @@ public:
|
||||
static void curvecolorfloat (float satind, float satval, float &sres, float parsat);
|
||||
static void curveJfloat (float br, float contr, float thr, const LUTu & histogram, LUTf & outCurve ) ;
|
||||
|
||||
static void xyz2jzczhz (double &Jz, double &az, double &bz, double x, double y, double z, double pl, double &Lp, double &Mp, double &Sp, bool zcam);
|
||||
|
||||
static void jzczhzxyz (double &x, double &y, double &z, double Jz, double az, double bz, double pl, double &L, double &M, double &S, bool zcam);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Inverse transform from CIECAM02 JCh to XYZ.
|
||||
*/
|
||||
static void jch2xyz_ciecam02float ( float &x, float &y, float &z,
|
||||
float J, float C, float h,
|
||||
float xw, float yw, float zw,
|
||||
float c, float nc, float n, float nbb, float ncb, float fl, float cz, float d, float aw, int c16);
|
||||
float c, float nc, float n, float nbb, float ncb, float fl, float cz, float d, float aw, int c16, float plum);
|
||||
#ifdef __SSE2__
|
||||
static void jch2xyz_ciecam02float ( vfloat &x, vfloat &y, vfloat &z,
|
||||
vfloat J, vfloat C, vfloat h,
|
||||
vfloat xw, vfloat yw, vfloat zw,
|
||||
vfloat nc, vfloat n, vfloat nbb, vfloat ncb, vfloat fl, vfloat d, vfloat aw, vfloat reccmcz, int c16 );
|
||||
vfloat nc, vfloat n, vfloat nbb, vfloat ncb, vfloat fl, vfloat d, vfloat aw, vfloat reccmcz, int c16, vfloat plum );
|
||||
#endif
|
||||
/**
|
||||
* Forward transform from XYZ to CIECAM02 JCh.
|
||||
*/
|
||||
static void initcam1float (float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb,
|
||||
float &cz, float &aw, float &wh, float &pfl, float &fl, float c, int c16);
|
||||
float &cz, float &aw, float &wh, float &pfl, float &fl, float c, int c16, float plum);
|
||||
|
||||
static void initcam2float (float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb,
|
||||
float &cz, float &aw, float &fl, int c16);
|
||||
float &cz, float &aw, float &fl, int c16, float plum);
|
||||
|
||||
static void xyz2jch_ciecam02float ( float &J, float &C, float &h,
|
||||
float aw, float fl,
|
||||
float x, float y, float z,
|
||||
float xw, float yw, float zw,
|
||||
float c, float nc, float n, float nbb, float ncb, float cz, float d, int c16);
|
||||
float c, float nc, float n, float nbb, float ncb, float cz, float d, int c16, float plum);
|
||||
|
||||
static void xyz2jchqms_ciecam02float ( float &J, float &C, float &h,
|
||||
float &Q, float &M, float &s, float aw, float fl, float wh,
|
||||
float x, float y, float z,
|
||||
float xw, float yw, float zw,
|
||||
float c, float nc, float n, float nbb, float ncb, float pfl, float cz, float d, int c16);
|
||||
float c, float nc, float n, float nbb, float ncb, float pfl, float cz, float d, int c16, float plum);
|
||||
|
||||
#ifdef __SSE2__
|
||||
static void xyz2jchqms_ciecam02float ( vfloat &J, vfloat &C, vfloat &h,
|
||||
vfloat &Q, vfloat &M, vfloat &s, vfloat aw, vfloat fl, vfloat wh,
|
||||
vfloat x, vfloat y, vfloat z,
|
||||
vfloat xw, vfloat yw, vfloat zw,
|
||||
vfloat c, vfloat nc, vfloat n, vfloat nbb, vfloat ncb, vfloat pfl, vfloat cz, vfloat d, int c16);
|
||||
vfloat c, vfloat nc, vfloat n, vfloat nbb, vfloat ncb, vfloat pfl, vfloat cz, vfloat d, int c16, vfloat plum);
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -1889,6 +1889,59 @@ static inline void Lab2XYZ(vfloat L, vfloat a, vfloat b, vfloat &x, vfloat &y, v
|
||||
return (hr);
|
||||
}
|
||||
|
||||
static inline double huejz_to_huehsv2 (float HH)
|
||||
{
|
||||
//hr=translate Hue Jz value (-Pi +Pi) in approximative hr (hsv values) (0 1)
|
||||
// with multi linear correspondences (I expect another time with Jz there is no error !!)
|
||||
double hr = 0.0;
|
||||
//always put h between 0 and 1
|
||||
// make with my chart 468 colors...
|
||||
// HH ==> Hz value ; hr HSv value
|
||||
if (HH >= 0.2f && HH < 0.75f) {
|
||||
hr = 0.12727273 * double(HH) + 0.90454551;//hr 0.93 1.00 full red
|
||||
} else if (HH >= 0.75f && HH < 1.35f) {
|
||||
hr = 0.15 * double(HH) - 0.1125;//hr 0.00 0.09 red yellow orange
|
||||
} else if (HH >= 1.35f && HH < 1.85f) {
|
||||
hr = 0.32 * double(HH) - 0.342; //hr 0.09 0.25 orange yellow
|
||||
} else if (HH >= 1.85f && HH < 2.46f) {
|
||||
hr = 0.23442623 * double(HH) -0.18368853;//hr 0.25 0.393 yellow green green
|
||||
} else if (HH >= 2.46f && HH < 3.14159f) {
|
||||
hr = 0.177526 * double(HH) -0.043714;//hr 0.393 0.51315 green ==> 0.42 Lab
|
||||
} else if (HH >= -3.14159f && HH < -2.89f) {
|
||||
hr = 0.3009078 * double(HH) + 1.459329;//hr 0.51315 0.5897 green cyan ==> -2.30 Lab
|
||||
} else if (HH >= -2.89f && HH < -2.7f) {
|
||||
hr = 0.204542 * double(HH) + 1.1808264;//hr 0.5897 0.628563 cyan
|
||||
} else if (HH >= -2.7f && HH < -2.17f) {
|
||||
hr = 0.121547 * double(HH) + 0.956399;//hr 0.628563 0.692642 blue blue-sky
|
||||
} else if (HH >= -2.17f && HH < -0.9f) {
|
||||
hr = 0.044882 * double(HH) + 0.789901;//hr 0.692642 0.749563 blue blue-sky
|
||||
} else if (HH >= -0.9f && HH < -0.1f) {
|
||||
hr = 0.2125 * double(HH) + 0.940813;//hr 0.749563 0.919563 purple magenta
|
||||
} else if (HH >= -0.1f && HH < 0.2f) {
|
||||
hr = 0.03479 * double(HH) + 0.923042;//hr 0.919563 0.93 red
|
||||
}
|
||||
// in case of !
|
||||
if (hr < 0.0) {
|
||||
hr += 1.0;
|
||||
} else if(hr > 1.0) {
|
||||
hr -= 1.0;
|
||||
}
|
||||
|
||||
return (hr);
|
||||
}
|
||||
|
||||
// HSV 0.93 1.0 red - Lab 0.0 0.6 Jz 0.20 0.75
|
||||
// HSV 0.00 0.9 red orange - Lab 0.6 1.4 Jz 0.50 1.35
|
||||
// HSV 0.09 0.25 oran - yellow - Lab 1.4 2.0 Jz 1.35 1.85
|
||||
// HSV 0.25 0.39 yellow - gree - Lab 2.0 3.0 Jz 1.85 2.40
|
||||
// HSV 0.39 0.50 green - cyan Lab 3.0 -2.8 Jz 2.40 3.10
|
||||
// HSV 0.50 0.58 cyan Lab-2.8 -2.3 Jz 3.10 -2.90
|
||||
// HSV 0.58 0.69 blue - sky Lab-2.3 -1.3 Jz -2.90 -2.17
|
||||
// HSV 0.69 0.75 blue - Lab-1.3 -0.9 Jz -2.17 -0.90
|
||||
// HSV 0.75 0.92 purple - Lab-0.9 -0.1 Jz -0.9 -0.10
|
||||
// HSV 0.92 0.93 magenta Lab-0.1 0.0 Jz -0.1 0.20
|
||||
|
||||
|
||||
static inline void RGB2Y(const float* R, const float* G, const float* B, float* Y1, float * Y2, int W) {
|
||||
int i = 0;
|
||||
#ifdef __SSE2__
|
||||
|
@ -3460,12 +3460,13 @@ void PerceptualToneCurve::BatchApply(const size_t start, const size_t end, float
|
||||
Color::Prophotoxyz(r, g, b, x, y, z);
|
||||
|
||||
float J, C, h;
|
||||
int c16 = 1;
|
||||
int c16 = 1;//always Cat02....to reserve compatibility
|
||||
float plum = 100.f;
|
||||
Ciecam02::xyz2jch_ciecam02float(J, C, h,
|
||||
aw, fl,
|
||||
x * 0.0015259022f, y * 0.0015259022f, z * 0.0015259022f,
|
||||
xw, yw, zw,
|
||||
c, nc, pow1, nbb, ncb, cz, d, c16);
|
||||
c, nc, pow1, nbb, ncb, cz, d, c16, plum);
|
||||
|
||||
|
||||
if (!isfinite(J) || !isfinite(C) || !isfinite(h)) {
|
||||
@ -3583,7 +3584,7 @@ void PerceptualToneCurve::BatchApply(const size_t start, const size_t end, float
|
||||
Ciecam02::jch2xyz_ciecam02float(x, y, z,
|
||||
J, C, h,
|
||||
xw, yw, zw,
|
||||
c, nc, pow1, nbb, ncb, fl, cz, d, aw, c16);
|
||||
c, nc, pow1, nbb, ncb, fl, cz, d, aw, c16, plum);
|
||||
|
||||
if (!isfinite(x) || !isfinite(y) || !isfinite(z)) {
|
||||
// can happen for colours on the rim of being outside gamut, that worked without chroma scaling but not with. Then we return only the curve's result.
|
||||
@ -3699,8 +3700,9 @@ void PerceptualToneCurve::init()
|
||||
c = 0.69f;
|
||||
nc = 1.00f;
|
||||
int c16 = 1;//with cat02 for compatibility
|
||||
float plum = 100.f;
|
||||
Ciecam02::initcam1float(yb, 1.f, f, la, xw, yw, zw, n, d, nbb, ncb,
|
||||
cz, aw, wh, pfl, fl, c, c16);
|
||||
cz, aw, wh, pfl, fl, c, c16, plum);
|
||||
pow1 = pow_F(1.64f - pow_F(0.29f, n), 0.73f);
|
||||
|
||||
{
|
||||
|
@ -872,6 +872,12 @@ void Crop::update(int todo)
|
||||
auto& lmaskbllocalcurve2 = parent->lmaskbllocalcurve;
|
||||
auto& lmasklclocalcurve2 = parent->lmasklclocalcurve;
|
||||
auto& lmaskloglocalcurve2 = parent->lmaskloglocalcurve;
|
||||
auto& lmaskcielocalcurve2 = parent->lmaskcielocalcurve;
|
||||
auto& cielocalcurve2 = parent->cielocalcurve;
|
||||
auto& cielocalcurve22 = parent->cielocalcurve2;
|
||||
auto& jzlocalcurve2 = parent->jzlocalcurve;
|
||||
auto& czlocalcurve2 = parent->czlocalcurve;
|
||||
auto& czjzlocalcurve2 = parent->czjzlocalcurve;
|
||||
auto& hltonecurveloc2 = parent->hltonecurveloc;
|
||||
auto& shtonecurveloc2 = parent->shtonecurveloc;
|
||||
auto& tonecurveloc2 = parent->tonecurveloc;
|
||||
@ -881,6 +887,9 @@ void Crop::update(int todo)
|
||||
auto& loclhCurve = parent->loclhCurve;
|
||||
auto& lochhCurve = parent->lochhCurve;
|
||||
auto& locchCurve = parent->locchCurve;
|
||||
auto& lochhCurvejz = parent->lochhCurvejz;
|
||||
auto& locchCurvejz = parent->locchCurvejz;
|
||||
auto& loclhCurvejz = parent->loclhCurvejz;
|
||||
auto& locccmasCurve = parent->locccmasCurve;
|
||||
auto& locllmasCurve = parent->locllmasCurve;
|
||||
auto& lochhmasCurve = parent->lochhmasCurve;
|
||||
@ -912,12 +921,16 @@ void Crop::update(int todo)
|
||||
auto& locccmaslogCurve = parent->locccmaslogCurve;
|
||||
auto& locllmaslogCurve = parent->locllmaslogCurve;
|
||||
auto& lochhmaslogCurve = parent->lochhmaslogCurve;
|
||||
auto& locccmascieCurve = parent->locccmascieCurve;
|
||||
auto& locllmascieCurve = parent->locllmascieCurve;
|
||||
auto& lochhmascieCurve = parent->lochhmascieCurve;
|
||||
|
||||
auto& locccmas_Curve = parent->locccmas_Curve;
|
||||
auto& locllmas_Curve = parent->locllmas_Curve;
|
||||
auto& lochhmas_Curve = parent->lochhmas_Curve;
|
||||
auto& lochhhmas_Curve = parent->lochhhmas_Curve;
|
||||
auto& locwavCurve = parent->locwavCurve;
|
||||
auto& locwavCurvejz = parent->locwavCurvejz;
|
||||
auto& loclmasCurveblwav = parent->loclmasCurveblwav;
|
||||
auto& loclmasCurvecolwav = parent->loclmasCurvecolwav;
|
||||
auto& loclevwavCurve = parent->loclevwavCurve;
|
||||
@ -929,13 +942,25 @@ void Crop::update(int todo)
|
||||
auto& locwavCurveden = parent->locwavCurveden;
|
||||
auto& lmasklocal_curve2 = parent->lmasklocal_curve;
|
||||
auto& loclmasCurve_wav = parent->loclmasCurve_wav;
|
||||
|
||||
// const int sizespot = (int)params.locallab.spots.size();
|
||||
/* float *huerefp = nullptr;
|
||||
huerefp = new float[sizespot];
|
||||
float *chromarefp = nullptr;
|
||||
chromarefp = new float[sizespot];
|
||||
float *lumarefp = nullptr;
|
||||
lumarefp = new float[sizespot];
|
||||
float *fabrefp = nullptr;
|
||||
fabrefp = new float[sizespot];
|
||||
*/
|
||||
for (int sp = 0; sp < (int)params.locallab.spots.size(); sp++) {
|
||||
locRETgainCurve.Set(params.locallab.spots.at(sp).localTgaincurve);
|
||||
locRETtransCurve.Set(params.locallab.spots.at(sp).localTtranscurve);
|
||||
const bool LHutili = loclhCurve.Set(params.locallab.spots.at(sp).LHcurve);
|
||||
const bool HHutili = lochhCurve.Set(params.locallab.spots.at(sp).HHcurve);
|
||||
const bool CHutili = locchCurve.Set(params.locallab.spots.at(sp).CHcurve);
|
||||
const bool HHutilijz = lochhCurvejz.Set(params.locallab.spots.at(sp).HHcurvejz);
|
||||
const bool CHutilijz = locchCurvejz.Set(params.locallab.spots.at(sp).CHcurvejz);
|
||||
const bool LHutilijz = loclhCurvejz.Set(params.locallab.spots.at(sp).LHcurvejz);
|
||||
const bool lcmasutili = locccmasCurve.Set(params.locallab.spots.at(sp).CCmaskcurve);
|
||||
const bool llmasutili = locllmasCurve.Set(params.locallab.spots.at(sp).LLmaskcurve);
|
||||
const bool lhmasutili = lochhmasCurve.Set(params.locallab.spots.at(sp).HHmaskcurve);
|
||||
@ -964,6 +989,9 @@ void Crop::update(int todo)
|
||||
const bool lcmaslogutili = locccmaslogCurve.Set(params.locallab.spots.at(sp).CCmaskcurveL);
|
||||
const bool llmaslogutili = locllmaslogCurve.Set(params.locallab.spots.at(sp).LLmaskcurveL);
|
||||
const bool lhmaslogutili = lochhmaslogCurve.Set(params.locallab.spots.at(sp).HHmaskcurveL);
|
||||
const bool lcmascieutili = locccmascieCurve.Set(params.locallab.spots.at(sp).CCmaskciecurve);
|
||||
const bool llmascieutili = locllmascieCurve.Set(params.locallab.spots.at(sp).LLmaskciecurve);
|
||||
const bool lhmascieutili = lochhmascieCurve.Set(params.locallab.spots.at(sp).HHmaskciecurve);
|
||||
|
||||
const bool lcmas_utili = locccmas_Curve.Set(params.locallab.spots.at(sp).CCmask_curve);
|
||||
const bool llmas_utili = locllmas_Curve.Set(params.locallab.spots.at(sp).LLmask_curve);
|
||||
@ -976,6 +1004,7 @@ void Crop::update(int todo)
|
||||
const bool llmaslcutili = locllmaslcCurve.Set(params.locallab.spots.at(sp).LLmasklccurve);
|
||||
const bool lhmaslcutili = lochhmaslcCurve.Set(params.locallab.spots.at(sp).HHmasklccurve);
|
||||
const bool locwavutili = locwavCurve.Set(params.locallab.spots.at(sp).locwavcurve);
|
||||
const bool locwavutilijz = locwavCurvejz.Set(params.locallab.spots.at(sp).locwavcurvejz);
|
||||
const bool locwavhueutili = locwavCurvehue.Set(params.locallab.spots.at(sp).locwavcurvehue);
|
||||
const bool locwavdenutili = locwavCurveden.Set(params.locallab.spots.at(sp).locwavcurveden);
|
||||
const bool loclevwavutili = loclevwavCurve.Set(params.locallab.spots.at(sp).loclevwavcurve);
|
||||
@ -1000,6 +1029,12 @@ void Crop::update(int todo)
|
||||
const bool localmaskblutili = CurveFactory::diagonalCurve2Lut(params.locallab.spots.at(sp).Lmaskblcurve, lmaskbllocalcurve2, skip);
|
||||
const bool localmasklogutili = CurveFactory::diagonalCurve2Lut(params.locallab.spots.at(sp).LmaskcurveL, lmaskloglocalcurve2, skip);
|
||||
const bool localmask_utili = CurveFactory::diagonalCurve2Lut(params.locallab.spots.at(sp).Lmask_curve, lmasklocal_curve2, skip);
|
||||
const bool localmaskcieutili = CurveFactory::diagonalCurve2Lut(params.locallab.spots.at(sp).Lmaskciecurve, lmaskcielocalcurve2, skip);
|
||||
const bool localcieutili = CurveFactory::diagonalCurve2Lut(params.locallab.spots.at(sp).ciecurve, cielocalcurve2, skip);
|
||||
const bool localcieutili2 = CurveFactory::diagonalCurve2Lut(params.locallab.spots.at(sp).ciecurve2, cielocalcurve22, skip);
|
||||
const bool localjzutili = CurveFactory::diagonalCurve2Lut(params.locallab.spots.at(sp).jzcurve, jzlocalcurve2, skip);
|
||||
const bool localczutili = CurveFactory::diagonalCurve2Lut(params.locallab.spots.at(sp).czcurve, czlocalcurve2, skip);
|
||||
const bool localczjzutili = CurveFactory::diagonalCurve2Lut(params.locallab.spots.at(sp).czjzcurve, czjzlocalcurve2, skip);
|
||||
|
||||
double ecomp = params.locallab.spots.at(sp).expcomp;
|
||||
double black = params.locallab.spots.at(sp).black;
|
||||
@ -1025,7 +1060,7 @@ void Crop::update(int todo)
|
||||
float stdtme = parent->stdtms[sp];
|
||||
float meanretie = parent->meanretis[sp];
|
||||
float stdretie = parent->stdretis[sp];
|
||||
|
||||
float fab = 1.f;
|
||||
float minCD;
|
||||
float maxCD;
|
||||
float mini;
|
||||
@ -1035,6 +1070,11 @@ void Crop::update(int todo)
|
||||
float Tmin;
|
||||
float Tmax;
|
||||
int lastsav;
|
||||
|
||||
/* huerefp[sp] = huere;
|
||||
chromarefp[sp] = chromare;
|
||||
lumarefp[sp] = lumare;
|
||||
*/
|
||||
CurveFactory::complexCurvelocal(ecomp, black / 65535., hlcompr, hlcomprthresh, shcompr, br, cont, lumare,
|
||||
hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, avge,
|
||||
skip);
|
||||
@ -1049,6 +1089,8 @@ void Crop::update(int todo)
|
||||
cllocalcurve2, localclutili,
|
||||
lclocalcurve2, locallcutili,
|
||||
loclhCurve, lochhCurve, locchCurve,
|
||||
lochhCurvejz, locchCurvejz, loclhCurvejz,
|
||||
|
||||
lmasklocalcurve2, localmaskutili,
|
||||
lmaskexplocalcurve2, localmaskexputili,
|
||||
lmaskSHlocalcurve2, localmaskSHutili,
|
||||
@ -1060,6 +1102,12 @@ void Crop::update(int todo)
|
||||
lmasklclocalcurve2, localmasklcutili,
|
||||
lmaskloglocalcurve2, localmasklogutili,
|
||||
lmasklocal_curve2, localmask_utili,
|
||||
lmaskcielocalcurve2, localmaskcieutili,
|
||||
cielocalcurve2,localcieutili,
|
||||
cielocalcurve22,localcieutili2,
|
||||
jzlocalcurve2,localjzutili,
|
||||
czlocalcurve2,localczutili,
|
||||
czjzlocalcurve2,localczjzutili,
|
||||
|
||||
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, lochhhmasCurve, lhhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
||||
@ -1072,10 +1120,13 @@ void Crop::update(int todo)
|
||||
locccmaslogCurve, lcmaslogutili, locllmaslogCurve, llmaslogutili, lochhmaslogCurve, lhmaslogutili,
|
||||
|
||||
locccmas_Curve, lcmas_utili, locllmas_Curve, llmas_utili, lochhmas_Curve, lhmas_utili,
|
||||
locccmascieCurve, lcmascieutili, locllmascieCurve, llmasSHutili, lochhmascieCurve, lhmascieutili,
|
||||
|
||||
lochhhmas_Curve, lhhmas_utili,
|
||||
loclmasCurveblwav,lmasutiliblwav,
|
||||
loclmasCurvecolwav,lmasutilicolwav,
|
||||
locwavCurve, locwavutili,
|
||||
locwavCurvejz, locwavutilijz,
|
||||
loclevwavCurve, loclevwavutili,
|
||||
locconwavCurve, locconwavutili,
|
||||
loccompwavCurve, loccompwavutili,
|
||||
@ -1084,12 +1135,14 @@ void Crop::update(int todo)
|
||||
locwavCurveden, locwavdenutili,
|
||||
locedgwavCurve, locedgwavutili,
|
||||
loclmasCurve_wav,lmasutili_wav,
|
||||
LHutili, HHutili, CHutili, cclocalcurve2, localcutili, rgblocalcurve2, localrgbutili, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2,
|
||||
LHutili, HHutili, CHutili, HHutilijz, CHutilijz, LHutilijz, cclocalcurve2, localcutili, rgblocalcurve2, localrgbutili, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2,
|
||||
huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav,
|
||||
parent->previewDeltaE, parent->locallColorMask, parent->locallColorMaskinv, parent->locallExpMask, parent->locallExpMaskinv, parent->locallSHMask, parent->locallSHMaskinv, parent->locallvibMask, parent->localllcMask, parent->locallsharMask, parent->locallcbMask, parent->locallretiMask, parent->locallsoftMask, parent->localltmMask, parent->locallblMask,
|
||||
parent->localllogMask, parent->locall_Mask, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax,
|
||||
meantme, stdtme, meanretie, stdretie);
|
||||
if (parent->previewDeltaE || parent->locallColorMask == 5 || parent->locallvibMask == 4 || parent->locallExpMask == 5 || parent->locallSHMask == 4 || parent->localllcMask == 4 || parent->localltmMask == 4 || parent->localllogMask == 4 || parent->locallsoftMask == 6 || parent->localllcMask == 4) {
|
||||
parent->localllogMask, parent->locall_Mask, parent->locallcieMask, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax,
|
||||
meantme, stdtme, meanretie, stdretie, fab);
|
||||
// fabrefp[sp] = fab;
|
||||
|
||||
if (parent->previewDeltaE || parent->locallColorMask == 5 || parent->locallvibMask == 4 || parent->locallExpMask == 5 || parent->locallSHMask == 4 || parent->localllcMask == 4 || parent->localltmMask == 4 || parent->localllogMask == 4 || parent->locallsoftMask == 6 || parent->localllcMask == 4 || parent->locallcieMask == 4) {
|
||||
params.blackwhite.enabled = false;
|
||||
params.colorToning.enabled = false;
|
||||
params.rgbCurves.enabled = false;
|
||||
@ -1112,12 +1165,20 @@ void Crop::update(int todo)
|
||||
params.epd.enabled = false;
|
||||
params.softlight.enabled = false;
|
||||
}
|
||||
/*
|
||||
if (parent->locallListener) {
|
||||
parent->locallListener->refChanged2(huerefp, chromarefp, lumarefp, fabrefp, params.locallab.selspot);
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
} else {
|
||||
parent->ipf.Lab_Local(1, sp, (float**)shbuffer, labnCrop, labnCrop, reservCrop.get(), savenormtmCrop.get(), savenormretiCrop.get(), lastorigCrop.get(), fw, fh, cropx / skip, cropy / skip, skips(parent->fw, skip), skips(parent->fh, skip), skip, locRETgainCurve, locRETtransCurve,
|
||||
lllocalcurve2,locallutili,
|
||||
cllocalcurve2, localclutili,
|
||||
lclocalcurve2, locallcutili,
|
||||
loclhCurve, lochhCurve, locchCurve,
|
||||
lochhCurvejz, locchCurvejz, loclhCurvejz,
|
||||
lmasklocalcurve2, localmaskutili,
|
||||
lmaskexplocalcurve2, localmaskexputili,
|
||||
lmaskSHlocalcurve2, localmaskSHutili,
|
||||
@ -1129,6 +1190,12 @@ void Crop::update(int todo)
|
||||
lmasklclocalcurve2, localmasklcutili,
|
||||
lmaskloglocalcurve2, localmasklogutili,
|
||||
lmasklocal_curve2, localmask_utili,
|
||||
lmaskcielocalcurve2, localmaskcieutili,
|
||||
cielocalcurve2,localcieutili,
|
||||
cielocalcurve22,localcieutili2,
|
||||
jzlocalcurve2,localjzutili,
|
||||
czlocalcurve2,localczutili,
|
||||
czjzlocalcurve2,localczjzutili,
|
||||
|
||||
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili,lochhhmasCurve, lhhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
||||
@ -1141,11 +1208,13 @@ void Crop::update(int todo)
|
||||
locccmaslogCurve, lcmaslogutili, locllmaslogCurve, llmaslogutili, lochhmaslogCurve, lhmaslogutili,
|
||||
|
||||
locccmas_Curve, lcmas_utili, locllmas_Curve, llmas_utili, lochhmas_Curve, lhmas_utili,
|
||||
locccmascieCurve, lcmascieutili, locllmascieCurve, llmascieutili, lochhmascieCurve, lhmascieutili,
|
||||
lochhhmas_Curve, lhhmas_utili,
|
||||
|
||||
loclmasCurveblwav,lmasutiliblwav,
|
||||
loclmasCurvecolwav,lmasutilicolwav,
|
||||
locwavCurve, locwavutili,
|
||||
locwavCurvejz, locwavutilijz,
|
||||
loclevwavCurve, loclevwavutili,
|
||||
locconwavCurve, locconwavutili,
|
||||
loccompwavCurve, loccompwavutili,
|
||||
@ -1154,10 +1223,10 @@ void Crop::update(int todo)
|
||||
locwavCurveden, locwavdenutili,
|
||||
locedgwavCurve, locedgwavutili,
|
||||
loclmasCurve_wav,lmasutili_wav,
|
||||
LHutili, HHutili, CHutili, cclocalcurve2, localcutili, rgblocalcurve2, localrgbutili, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2,
|
||||
huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, false, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
LHutili, HHutili, CHutili, HHutilijz, CHutilijz, LHutilijz, cclocalcurve2, localcutili, rgblocalcurve2, localrgbutili, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2,
|
||||
huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, false, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax,
|
||||
meantme, stdtme, meanretie, stdretie);
|
||||
meantme, stdtme, meanretie, stdretie, fab);
|
||||
}
|
||||
if (sp + 1u < params.locallab.spots.size()) {
|
||||
// do not copy for last spot as it is not needed anymore
|
||||
@ -1168,6 +1237,13 @@ void Crop::update(int todo)
|
||||
Glib::usleep(settings->cropsleep); //wait to avoid crash when crop 100% and move window
|
||||
}
|
||||
}
|
||||
/*
|
||||
delete [] huerefp;
|
||||
delete [] chromarefp;
|
||||
delete [] lumarefp;
|
||||
delete [] fabrefp;
|
||||
*/
|
||||
|
||||
parent->ipf.lab2rgb(*labnCrop, *baseCrop, params.icm.workingProfile);
|
||||
}
|
||||
|
||||
@ -1548,8 +1624,9 @@ void Crop::update(int todo)
|
||||
adap = 2000.;
|
||||
} else {
|
||||
double E_V = fcomp + log2(double ((fnum * fnum) / fspeed / (fiso / 100.f)));
|
||||
E_V += params.toneCurve.expcomp;// exposure compensation in tonecurve ==> direct EV
|
||||
E_V += log2(params.raw.expos); // exposure raw white point ; log2 ==> linear to EV
|
||||
double kexp = 0.;
|
||||
E_V += kexp * params.toneCurve.expcomp;// exposure compensation in tonecurve ==> direct EV
|
||||
E_V += 0.5 * log2(params.raw.expos); // exposure raw white point ; log2 ==> linear to EV
|
||||
adap = pow(2., E_V - 3.); // cd / m2
|
||||
// end calculation adaptation scene luminosity
|
||||
}
|
||||
|
@ -216,6 +216,12 @@ ImProcCoordinator::ImProcCoordinator() :
|
||||
lmasklclocalcurve(65536, LUT_CLIP_OFF),
|
||||
lmaskloglocalcurve(65536, LUT_CLIP_OFF),
|
||||
lmasklocal_curve(65536, LUT_CLIP_OFF),
|
||||
lmaskcielocalcurve(65536, LUT_CLIP_OFF),
|
||||
cielocalcurve(65536, LUT_CLIP_OFF),
|
||||
cielocalcurve2(65536, LUT_CLIP_OFF),
|
||||
jzlocalcurve(65536, LUT_CLIP_OFF),
|
||||
czlocalcurve(65536, LUT_CLIP_OFF),
|
||||
czjzlocalcurve(65536, LUT_CLIP_OFF),
|
||||
lastspotdup(false),
|
||||
previewDeltaE(false),
|
||||
locallColorMask(0),
|
||||
@ -234,6 +240,7 @@ ImProcCoordinator::ImProcCoordinator() :
|
||||
locallsharMask(0),
|
||||
localllogMask(0),
|
||||
locall_Mask(0),
|
||||
locallcieMask(0),
|
||||
retistrsav(nullptr)
|
||||
{
|
||||
}
|
||||
@ -785,6 +792,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
// Encoding log with locallab
|
||||
if (params->locallab.enabled && !params->locallab.spots.empty()) {
|
||||
const int sizespot = (int)params->locallab.spots.size();
|
||||
const LocallabParams::LocallabSpot defSpot;
|
||||
|
||||
float *sourceg = nullptr;
|
||||
sourceg = new float[sizespot];
|
||||
@ -794,6 +802,8 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
targetg = new float[sizespot];
|
||||
bool *log = nullptr;
|
||||
log = new bool[sizespot];
|
||||
bool *cie = nullptr;
|
||||
cie = new bool[sizespot];
|
||||
bool *autocomput = nullptr;
|
||||
autocomput = new bool[sizespot];
|
||||
float *blackev = nullptr;
|
||||
@ -802,7 +812,10 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
whiteev = new float[sizespot];
|
||||
bool *Autogr = nullptr;
|
||||
Autogr = new bool[sizespot];
|
||||
|
||||
bool *autocie = nullptr;
|
||||
autocie = new bool[sizespot];
|
||||
|
||||
|
||||
float *locx = nullptr;
|
||||
locx = new float[sizespot];
|
||||
float *locy = nullptr;
|
||||
@ -818,7 +831,9 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
|
||||
for (int sp = 0; sp < sizespot; sp++) {
|
||||
log[sp] = params->locallab.spots.at(sp).explog;
|
||||
cie[sp] = params->locallab.spots.at(sp).expcie;
|
||||
autocomput[sp] = params->locallab.spots.at(sp).autocompute;
|
||||
autocie[sp] = params->locallab.spots.at(sp).Autograycie;
|
||||
blackev[sp] = params->locallab.spots.at(sp).blackEv;
|
||||
whiteev[sp] = params->locallab.spots.at(sp).whiteEv;
|
||||
sourceg[sp] = params->locallab.spots.at(sp).sourceGray;
|
||||
@ -832,9 +847,10 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
centx[sp] = params->locallab.spots.at(sp).centerX / 2000.0 + 0.5;
|
||||
centy[sp] = params->locallab.spots.at(sp).centerY / 2000.0 + 0.5;
|
||||
|
||||
const bool fullim = params->locallab.spots.at(sp).fullimage;
|
||||
const bool fullimstd = params->locallab.spots.at(sp).fullimage;//for log encoding standard
|
||||
const bool fullimjz = true;//always force fullimage in log encoding Jz - always possible to put a checkbox if need
|
||||
|
||||
if (log[sp] && autocomput[sp]) {
|
||||
if ((log[sp] && autocomput[sp]) || (cie[sp] && autocie[sp])) {
|
||||
constexpr int SCALE = 10;
|
||||
int fw, fh, tr = TR_NONE;
|
||||
imgsrc->getFullSize(fw, fh, tr);
|
||||
@ -845,7 +861,14 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
float xsta = std::max(static_cast<float>(centx[sp] - locxL[sp]), 0.f);
|
||||
float xend = std::min(static_cast<float>(centx[sp] + locx[sp]), 1.f);
|
||||
|
||||
if (fullim) {
|
||||
if (fullimstd && (log[sp] && autocomput[sp])) {
|
||||
ysta = 0.f;
|
||||
yend = 1.f;
|
||||
xsta = 0.f;
|
||||
xend = 1.f;
|
||||
}
|
||||
|
||||
if (fullimjz && (cie[sp] && autocie[sp])) {
|
||||
ysta = 0.f;
|
||||
yend = 1.f;
|
||||
xsta = 0.f;
|
||||
@ -853,14 +876,18 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
}
|
||||
|
||||
ipf.getAutoLogloc(sp, imgsrc, sourceg, blackev, whiteev, Autogr, sourceab, fw, fh, xsta, xend, ysta, yend, SCALE);
|
||||
//printf("sg=%f sab=%f\n", sourceg[sp], sourceab[sp]);
|
||||
// printf("sp=%i sg=%f sab=%f\n", sp, sourceg[sp], sourceab[sp]);
|
||||
params->locallab.spots.at(sp).blackEv = blackev[sp];
|
||||
params->locallab.spots.at(sp).whiteEv = whiteev[sp];
|
||||
params->locallab.spots.at(sp).blackEvjz = blackev[sp];
|
||||
params->locallab.spots.at(sp).whiteEvjz = whiteev[sp];
|
||||
params->locallab.spots.at(sp).sourceGray = sourceg[sp];
|
||||
params->locallab.spots.at(sp).sourceabs = sourceab[sp];
|
||||
|
||||
params->locallab.spots.at(sp).sourceGraycie = sourceg[sp];
|
||||
params->locallab.spots.at(sp).sourceabscie = sourceab[sp];
|
||||
float jz1 = defSpot.jz100;
|
||||
if (locallListener) {
|
||||
locallListener->logencodChanged(blackev[sp], whiteev[sp], sourceg[sp], sourceab[sp], targetg[sp]);
|
||||
locallListener->logencodChanged(blackev[sp], whiteev[sp], sourceg[sp], sourceab[sp], targetg[sp], autocomput[sp], autocie[sp], jz1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -872,12 +899,14 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
delete [] centx;
|
||||
delete [] centy;
|
||||
|
||||
delete [] autocie;
|
||||
delete [] Autogr;
|
||||
delete [] whiteev;
|
||||
delete [] blackev;
|
||||
delete [] targetg;
|
||||
delete [] sourceab;
|
||||
delete [] sourceg;
|
||||
delete [] cie;
|
||||
delete [] log;
|
||||
delete [] autocomput;
|
||||
}
|
||||
@ -923,7 +952,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
int sca = 1;
|
||||
double huere, chromare, lumare, huerefblu, chromarefblu, lumarefblu, sobelre;
|
||||
float avge, meantme, stdtme, meanretie, stdretie;
|
||||
std::vector<LocallabListener::locallabRef> locallref;
|
||||
//std::vector<LocallabListener::locallabRef> locallref;
|
||||
std::vector<LocallabListener::locallabRetiMinMax> locallretiminmax;
|
||||
huerefs.resize(params->locallab.spots.size());
|
||||
huerefblurs.resize(params->locallab.spots.size());
|
||||
@ -937,6 +966,16 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
stdtms.resize(params->locallab.spots.size());
|
||||
meanretis.resize(params->locallab.spots.size());
|
||||
stdretis.resize(params->locallab.spots.size());
|
||||
const int sizespot = (int)params->locallab.spots.size();
|
||||
|
||||
float *huerefp = nullptr;
|
||||
huerefp = new float[sizespot];
|
||||
float *chromarefp = nullptr;
|
||||
chromarefp = new float[sizespot];
|
||||
float *lumarefp = nullptr;
|
||||
lumarefp = new float[sizespot];
|
||||
float *fabrefp = nullptr;
|
||||
fabrefp = new float[sizespot];
|
||||
|
||||
for (int sp = 0; sp < (int)params->locallab.spots.size(); sp++) {
|
||||
|
||||
@ -953,6 +992,9 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
const bool LHutili = loclhCurve.Set(params->locallab.spots.at(sp).LHcurve);
|
||||
const bool HHutili = lochhCurve.Set(params->locallab.spots.at(sp).HHcurve);
|
||||
const bool CHutili = locchCurve.Set(params->locallab.spots.at(sp).CHcurve);
|
||||
const bool HHutilijz = lochhCurvejz.Set(params->locallab.spots.at(sp).HHcurvejz);
|
||||
const bool CHutilijz = locchCurvejz.Set(params->locallab.spots.at(sp).CHcurvejz);
|
||||
const bool LHutilijz = loclhCurvejz.Set(params->locallab.spots.at(sp).LHcurvejz);
|
||||
const bool lcmasutili = locccmasCurve.Set(params->locallab.spots.at(sp).CCmaskcurve);
|
||||
const bool llmasutili = locllmasCurve.Set(params->locallab.spots.at(sp).LLmaskcurve);
|
||||
const bool lhmasutili = lochhmasCurve.Set(params->locallab.spots.at(sp).HHmaskcurve);
|
||||
@ -984,6 +1026,9 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
const bool llmaslogutili = locllmaslogCurve.Set(params->locallab.spots.at(sp).LLmaskcurveL);
|
||||
const bool lcmaslogutili = locccmaslogCurve.Set(params->locallab.spots.at(sp).CCmaskcurveL);
|
||||
const bool lhmaslogutili = lochhmaslogCurve.Set(params->locallab.spots.at(sp).HHmaskcurveL);
|
||||
const bool llmascieutili = locllmascieCurve.Set(params->locallab.spots.at(sp).LLmaskciecurve);
|
||||
const bool lcmascieutili = locccmascieCurve.Set(params->locallab.spots.at(sp).CCmaskciecurve);
|
||||
const bool lhmascieutili = lochhmascieCurve.Set(params->locallab.spots.at(sp).HHmaskciecurve);
|
||||
|
||||
const bool lcmas_utili = locccmas_Curve.Set(params->locallab.spots.at(sp).CCmask_curve);
|
||||
const bool llmas_utili = locllmas_Curve.Set(params->locallab.spots.at(sp).LLmask_curve);
|
||||
@ -992,6 +1037,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
const bool lmasutiliblwav = loclmasCurveblwav.Set(params->locallab.spots.at(sp).LLmaskblcurvewav);
|
||||
const bool lmasutilicolwav = loclmasCurvecolwav.Set(params->locallab.spots.at(sp).LLmaskcolcurvewav);
|
||||
const bool locwavutili = locwavCurve.Set(params->locallab.spots.at(sp).locwavcurve);
|
||||
const bool locwavutilijz = locwavCurvejz.Set(params->locallab.spots.at(sp).locwavcurvejz);
|
||||
const bool loclevwavutili = loclevwavCurve.Set(params->locallab.spots.at(sp).loclevwavcurve);
|
||||
const bool locconwavutili = locconwavCurve.Set(params->locallab.spots.at(sp).locconwavcurve);
|
||||
const bool loccompwavutili = loccompwavCurve.Set(params->locallab.spots.at(sp).loccompwavcurve);
|
||||
@ -1017,6 +1063,12 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
const bool localmasklcutili = CurveFactory::diagonalCurve2Lut(params->locallab.spots.at(sp).Lmasklccurve, lmasklclocalcurve, sca);
|
||||
const bool localmasklogutili = CurveFactory::diagonalCurve2Lut(params->locallab.spots.at(sp).LmaskcurveL, lmaskloglocalcurve, sca);
|
||||
const bool localmask_utili = CurveFactory::diagonalCurve2Lut(params->locallab.spots.at(sp).Lmask_curve, lmasklocal_curve, sca);
|
||||
const bool localmaskcieutili = CurveFactory::diagonalCurve2Lut(params->locallab.spots.at(sp).Lmaskciecurve, lmaskcielocalcurve, sca);
|
||||
const bool localcieutili = CurveFactory::diagonalCurve2Lut(params->locallab.spots.at(sp).ciecurve, cielocalcurve, sca);
|
||||
const bool localcieutili2 = CurveFactory::diagonalCurve2Lut(params->locallab.spots.at(sp).ciecurve2, cielocalcurve2, sca);
|
||||
const bool localjzutili = CurveFactory::diagonalCurve2Lut(params->locallab.spots.at(sp).jzcurve, jzlocalcurve, sca);
|
||||
const bool localczutili = CurveFactory::diagonalCurve2Lut(params->locallab.spots.at(sp).czcurve, czlocalcurve, sca);
|
||||
const bool localczjzutili = CurveFactory::diagonalCurve2Lut(params->locallab.spots.at(sp).czjzcurve, czjzlocalcurve, sca);
|
||||
double ecomp = params->locallab.spots.at(sp).expcomp;
|
||||
double black = params->locallab.spots.at(sp).black;
|
||||
double hlcompr = params->locallab.spots.at(sp).hlcompr;
|
||||
@ -1040,7 +1092,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
stdtme = 0.f;
|
||||
meanretie = 0.f;
|
||||
stdretie = 0.f;
|
||||
|
||||
float fab = 1.f;
|
||||
bool istm = params->locallab.spots.at(sp).equiltm && params->locallab.spots.at(sp).exptonemap;
|
||||
bool isreti = params->locallab.spots.at(sp).equilret && params->locallab.spots.at(sp).expreti;
|
||||
//preparation for mean and sigma on current RT-spot
|
||||
@ -1093,17 +1145,24 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
float stdtm = stdtms[sp] = stdtme;
|
||||
float meanreti = meanretis[sp] = meanretie;
|
||||
float stdreti = stdretis[sp] = stdretie;
|
||||
|
||||
huerefp[sp] = huer;
|
||||
chromarefp[sp] = chromar;
|
||||
lumarefp[sp] = lumar;
|
||||
|
||||
CurveFactory::complexCurvelocal(ecomp, black / 65535., hlcompr, hlcomprthresh, shcompr, br, cont, lumar,
|
||||
hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, avg,
|
||||
sca);
|
||||
|
||||
// Save Locallab mask curve references for current spot
|
||||
/*
|
||||
LocallabListener::locallabRef spotref;
|
||||
spotref.huer = huer;
|
||||
spotref.lumar = lumar;
|
||||
spotref.chromar = chromar;
|
||||
spotref.fab = 1.f;
|
||||
locallref.push_back(spotref);
|
||||
*/
|
||||
// Locallab tools computation
|
||||
/* Notes:
|
||||
* - shbuffer is used as nullptr
|
||||
@ -1125,6 +1184,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
cllocalcurve, localclutili,
|
||||
lclocalcurve, locallcutili,
|
||||
loclhCurve, lochhCurve, locchCurve,
|
||||
lochhCurvejz, locchCurvejz, loclhCurvejz,
|
||||
lmasklocalcurve, localmaskutili,
|
||||
lmaskexplocalcurve, localmaskexputili,
|
||||
lmaskSHlocalcurve, localmaskSHutili,
|
||||
@ -1136,6 +1196,12 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
lmasklclocalcurve, localmasklcutili,
|
||||
lmaskloglocalcurve, localmasklogutili,
|
||||
lmasklocal_curve, localmask_utili,
|
||||
lmaskcielocalcurve, localmaskcieutili,
|
||||
cielocalcurve, localcieutili,
|
||||
cielocalcurve2, localcieutili2,
|
||||
jzlocalcurve, localjzutili,
|
||||
czlocalcurve, localczutili,
|
||||
czjzlocalcurve, localczjzutili,
|
||||
|
||||
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, lochhhmasCurve, lhhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
||||
@ -1148,10 +1214,13 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
locccmaslogCurve, lcmaslogutili, locllmaslogCurve, llmaslogutili, lochhmaslogCurve, lhmaslogutili,
|
||||
|
||||
locccmas_Curve, lcmas_utili, locllmas_Curve, llmas_utili, lochhmas_Curve, lhmas_utili,
|
||||
locccmascieCurve, lcmascieutili, locllmascieCurve, llmascieutili, lochhmascieCurve, lhmascieutili,
|
||||
|
||||
lochhhmas_Curve, lhhmas_utili,
|
||||
loclmasCurveblwav, lmasutiliblwav,
|
||||
loclmasCurvecolwav, lmasutilicolwav,
|
||||
locwavCurve, locwavutili,
|
||||
locwavCurvejz, locwavutilijz,
|
||||
loclevwavCurve, loclevwavutili,
|
||||
locconwavCurve, locconwavutili,
|
||||
loccompwavCurve, loccompwavutili,
|
||||
@ -1160,13 +1229,13 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
locwavCurveden, locwavdenutili,
|
||||
locedgwavCurve, locedgwavutili,
|
||||
loclmasCurve_wav, lmasutili_wav,
|
||||
LHutili, HHutili, CHutili, cclocalcurve, localcutili, rgblocalcurve, localrgbutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
|
||||
huerblu, chromarblu, lumarblu, huer, chromar, lumar, sobeler, lastsav, false, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
LHutili, HHutili, CHutili, HHutilijz, CHutilijz, LHutilijz, cclocalcurve, localcutili, rgblocalcurve, localrgbutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
|
||||
huerblu, chromarblu, lumarblu, huer, chromar, lumar, sobeler, lastsav, false, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax,
|
||||
meantm, stdtm, meanreti, stdreti);
|
||||
meantm, stdtm, meanreti, stdreti, fab);
|
||||
|
||||
|
||||
|
||||
fabrefp[sp] = fab;
|
||||
if (istm) { //calculate mean and sigma on full image for use by normalize_mean_dt
|
||||
float meanf = 0.f;
|
||||
float stdf = 0.f;
|
||||
@ -1212,17 +1281,44 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
}
|
||||
// Update Locallab reference values according to recurs parameter
|
||||
if (params->locallab.spots.at(sp).recurs) {
|
||||
/*
|
||||
spotref.huer = huer;
|
||||
spotref.lumar = lumar;
|
||||
spotref.chromar = chromar;
|
||||
spotref.fab = fab;
|
||||
locallref.at(sp).chromar = chromar;
|
||||
locallref.at(sp).lumar = lumar;
|
||||
locallref.at(sp).huer = huer;
|
||||
locallref.at(sp).fab = fab;
|
||||
*/
|
||||
huerefp[sp] = huer;
|
||||
chromarefp[sp] = chromar;
|
||||
lumarefp[sp] = lumar;
|
||||
fabrefp[sp] = fab;
|
||||
|
||||
}
|
||||
// spotref.fab = fab;
|
||||
// locallref.at(sp).fab = fab;
|
||||
|
||||
// locallref.push_back(spotref);
|
||||
if (locallListener) {
|
||||
// locallListener->refChanged(locallref, params->locallab.selspot);
|
||||
locallListener->refChanged2(huerefp, chromarefp, lumarefp, fabrefp, params->locallab.selspot);
|
||||
locallListener->minmaxChanged(locallretiminmax, params->locallab.selspot);
|
||||
}
|
||||
|
||||
}
|
||||
delete [] huerefp;
|
||||
delete [] chromarefp;
|
||||
delete [] lumarefp;
|
||||
delete [] fabrefp;
|
||||
// Transmit Locallab reference values and Locallab Retinex min/max to LocallabListener
|
||||
/*
|
||||
if (locallListener) {
|
||||
locallListener->refChanged(locallref, params->locallab.selspot);
|
||||
locallListener->minmaxChanged(locallretiminmax, params->locallab.selspot);
|
||||
}
|
||||
*/
|
||||
ipf.lab2rgb(*nprevl, *oprevi, params->icm.workingProfile);
|
||||
//*************************************************************
|
||||
// end locallab
|
||||
@ -1802,8 +1898,9 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
adap = 2000.;
|
||||
} else {
|
||||
double E_V = fcomp + log2(double ((fnum * fnum) / fspeed / (fiso / 100.f)));
|
||||
E_V += params->toneCurve.expcomp;// exposure compensation in tonecurve ==> direct EV
|
||||
E_V += log2(params->raw.expos); // exposure raw white point ; log2 ==> linear to EV
|
||||
double kexp = 0.;
|
||||
E_V += kexp * params->toneCurve.expcomp;// exposure compensation in tonecurve ==> direct EV
|
||||
E_V += 0.5 * log2(params->raw.expos); // exposure raw white point ; log2 ==> linear to EV
|
||||
adap = pow(2.0, E_V - 3.0); // cd / m2
|
||||
// end calculation adaptation scene luminosity
|
||||
}
|
||||
|
@ -284,6 +284,12 @@ protected:
|
||||
LUTf lmasklclocalcurve;
|
||||
LUTf lmaskloglocalcurve;
|
||||
LUTf lmasklocal_curve;
|
||||
LUTf lmaskcielocalcurve;
|
||||
LUTf cielocalcurve;
|
||||
LUTf cielocalcurve2;
|
||||
LUTf jzlocalcurve;
|
||||
LUTf czlocalcurve;
|
||||
LUTf czjzlocalcurve;
|
||||
|
||||
LocretigainCurve locRETgainCurve;
|
||||
LocretitransCurve locRETtransCurve;
|
||||
@ -291,6 +297,9 @@ protected:
|
||||
LocLHCurve loclhCurve;
|
||||
LocHHCurve lochhCurve;
|
||||
LocCHCurve locchCurve;
|
||||
LocHHCurve lochhCurvejz;
|
||||
LocCHCurve locchCurvejz;
|
||||
LocLHCurve loclhCurvejz;
|
||||
LocCCmaskCurve locccmasCurve;
|
||||
LocLLmaskCurve locllmasCurve;
|
||||
LocHHmaskCurve lochhmasCurve;
|
||||
@ -326,6 +335,9 @@ protected:
|
||||
LocCCmaskCurve locccmaslogCurve;
|
||||
LocLLmaskCurve locllmaslogCurve;
|
||||
LocHHmaskCurve lochhmaslogCurve;
|
||||
LocCCmaskCurve locccmascieCurve;
|
||||
LocLLmaskCurve locllmascieCurve;
|
||||
LocHHmaskCurve lochhmascieCurve;
|
||||
|
||||
LocwavCurve locwavCurve;
|
||||
LocwavCurve loclmasCurveblwav;
|
||||
@ -338,6 +350,7 @@ protected:
|
||||
LocwavCurve locedgwavCurve;
|
||||
LocwavCurve loclmasCurve_wav;
|
||||
LocwavCurve locwavCurvehue;
|
||||
LocwavCurve locwavCurvejz;
|
||||
|
||||
std::vector<float> huerefs;
|
||||
std::vector<float> huerefblurs;
|
||||
@ -369,6 +382,7 @@ protected:
|
||||
int locallsharMask;
|
||||
int localllogMask;
|
||||
int locall_Mask;
|
||||
int locallcieMask;
|
||||
|
||||
public:
|
||||
|
||||
@ -440,7 +454,7 @@ public:
|
||||
updaterThreadStart.unlock();
|
||||
}
|
||||
|
||||
void setLocallabMaskVisibility(bool previewDeltaE, int locallColorMask, int locallColorMaskinv, int locallExpMask, int locallExpMaskinv, int locallSHMask, int locallSHMaskinv, int locallvibMask, int locallsoftMask, int locallblMask, int localltmMask, int locallretiMask, int locallsharMask, int localllcMask, int locallcbMask, int localllogMask, int locall_Mask) override
|
||||
void setLocallabMaskVisibility(bool previewDeltaE, int locallColorMask, int locallColorMaskinv, int locallExpMask, int locallExpMaskinv, int locallSHMask, int locallSHMaskinv, int locallvibMask, int locallsoftMask, int locallblMask, int localltmMask, int locallretiMask, int locallsharMask, int localllcMask, int locallcbMask, int localllogMask, int locall_Mask, int locallcieMask) override
|
||||
{
|
||||
this->previewDeltaE = previewDeltaE;
|
||||
this->locallColorMask = locallColorMask;
|
||||
@ -459,6 +473,7 @@ public:
|
||||
this->locallcbMask = locallcbMask;
|
||||
this->localllogMask = localllogMask;
|
||||
this->locall_Mask = locall_Mask;
|
||||
this->locallcieMask = locallcieMask;
|
||||
}
|
||||
|
||||
void setProgressListener (ProgressListener* pl) override
|
||||
|
@ -960,14 +960,14 @@ void ImProcFunctions::ciecam_02float(CieImage* ncie, float adap, int pW, int pwb
|
||||
c16 = 1;
|
||||
}else if (params->colorappearance.modelmethod == "16") {
|
||||
c16 = 16;
|
||||
}
|
||||
|
||||
Ciecam02::initcam1float (yb, pilot, f, la, xw, yw, zw, n, d, nbb, ncb, cz, aw, wh, pfl, fl, c, c16);
|
||||
} //I don't use PQ here...hence no 21
|
||||
float plum = 100.f;
|
||||
Ciecam02::initcam1float (yb, pilot, f, la, xw, yw, zw, n, d, nbb, ncb, cz, aw, wh, pfl, fl, c, c16, plum);
|
||||
//printf ("wh=%f \n", wh);
|
||||
|
||||
const float pow1 = pow_F(1.64f - pow_F(0.29f, n), 0.73f);
|
||||
float nj, nbbj, ncbj, czj, awj, flj;
|
||||
Ciecam02::initcam2float (yb2, pilotout, f2, la2, xw2, yw2, zw2, nj, dj, nbbj, ncbj, czj, awj, flj, c16);
|
||||
Ciecam02::initcam2float (yb2, pilotout, f2, la2, xw2, yw2, zw2, nj, dj, nbbj, ncbj, czj, awj, flj, c16, plum);
|
||||
#ifdef __SSE2__
|
||||
const float reccmcz = 1.f / (c2 * czj);
|
||||
#endif
|
||||
@ -1054,11 +1054,13 @@ void ImProcFunctions::ciecam_02float(CieImage* ncie, float adap, int pW, int pwb
|
||||
x = x / c655d35;
|
||||
y = y / c655d35;
|
||||
z = z / c655d35;
|
||||
float plum = 100.f;
|
||||
vfloat plumv = F2V(plum);
|
||||
Ciecam02::xyz2jchqms_ciecam02float(J, C, h,
|
||||
Q, M, s, F2V(aw), F2V(fl), F2V(wh),
|
||||
x, y, z,
|
||||
F2V(xw1), F2V(yw1), F2V(zw1),
|
||||
F2V(c), F2V(nc), F2V(pow1), F2V(nbb), F2V(ncb), F2V(pfl), F2V(cz), F2V(d), c16);
|
||||
F2V(c), F2V(nc), F2V(pow1), F2V(nbb), F2V(ncb), F2V(pfl), F2V(cz), F2V(d), c16, plumv);
|
||||
STVF(Jbuffer[k], J);
|
||||
STVF(Cbuffer[k], C);
|
||||
STVF(hbuffer[k], h);
|
||||
@ -1082,7 +1084,7 @@ void ImProcFunctions::ciecam_02float(CieImage* ncie, float adap, int pW, int pwb
|
||||
Q, M, s, aw, fl, wh,
|
||||
x, y, z,
|
||||
xw1, yw1, zw1,
|
||||
c, nc, pow1, nbb, ncb, pfl, cz, d, c16);
|
||||
c, nc, pow1, nbb, ncb, pfl, cz, d, c16, plum);
|
||||
Jbuffer[k] = J;
|
||||
Cbuffer[k] = C;
|
||||
hbuffer[k] = h;
|
||||
@ -1120,7 +1122,7 @@ void ImProcFunctions::ciecam_02float(CieImage* ncie, float adap, int pW, int pwb
|
||||
Q, M, s, aw, fl, wh,
|
||||
x, y, z,
|
||||
xw1, yw1, zw1,
|
||||
c, nc, pow1, nbb, ncb, pfl, cz, d, c16);
|
||||
c, nc, pow1, nbb, ncb, pfl, cz, d, c16, plum);
|
||||
#endif
|
||||
float Jpro, Cpro, hpro, Qpro, Mpro, spro;
|
||||
Jpro = J;
|
||||
@ -1458,7 +1460,7 @@ void ImProcFunctions::ciecam_02float(CieImage* ncie, float adap, int pW, int pwb
|
||||
Ciecam02::jch2xyz_ciecam02float(xx, yy, zz,
|
||||
J, C, h,
|
||||
xw2, yw2, zw2,
|
||||
c2, nc2, pow1n, nbbj, ncbj, flj, czj, dj, awj, c16);
|
||||
c2, nc2, pow1n, nbbj, ncbj, flj, czj, dj, awj, c16, plum);
|
||||
float x, y, z;
|
||||
x = xx * 655.35f;
|
||||
y = yy * 655.35f;
|
||||
@ -1510,7 +1512,7 @@ void ImProcFunctions::ciecam_02float(CieImage* ncie, float adap, int pW, int pwb
|
||||
Ciecam02::jch2xyz_ciecam02float(x, y, z,
|
||||
LVF(Jbuffer[k]), LVF(Cbuffer[k]), LVF(hbuffer[k]),
|
||||
F2V(xw2), F2V(yw2), F2V(zw2),
|
||||
F2V(nc2), F2V(pow1n), F2V(nbbj), F2V(ncbj), F2V(flj), F2V(dj), F2V(awj), F2V(reccmcz), c16);
|
||||
F2V(nc2), F2V(pow1n), F2V(nbbj), F2V(ncbj), F2V(flj), F2V(dj), F2V(awj), F2V(reccmcz), c16, F2V(plum));
|
||||
STVF(xbuffer[k], x * c655d35);
|
||||
STVF(ybuffer[k], y * c655d35);
|
||||
STVF(zbuffer[k], z * c655d35);
|
||||
@ -1767,7 +1769,7 @@ void ImProcFunctions::ciecam_02float(CieImage* ncie, float adap, int pW, int pwb
|
||||
Ciecam02::jch2xyz_ciecam02float(xx, yy, zz,
|
||||
ncie->J_p[i][j], ncie_C_p, ncie->h_p[i][j],
|
||||
xw2, yw2, zw2,
|
||||
c2, nc2, pow1n, nbbj, ncbj, flj, czj, dj, awj, c16);
|
||||
c2, nc2, pow1n, nbbj, ncbj, flj, czj, dj, awj, c16, plum);
|
||||
float x = (float)xx * 655.35f;
|
||||
float y = (float)yy * 655.35f;
|
||||
float z = (float)zz * 655.35f;
|
||||
@ -1815,7 +1817,7 @@ void ImProcFunctions::ciecam_02float(CieImage* ncie, float adap, int pW, int pwb
|
||||
Ciecam02::jch2xyz_ciecam02float(x, y, z,
|
||||
LVF(Jbuffer[k]), LVF(Cbuffer[k]), LVF(hbuffer[k]),
|
||||
F2V(xw2), F2V(yw2), F2V(zw2),
|
||||
F2V(nc2), F2V(pow1n), F2V(nbbj), F2V(ncbj), F2V(flj), F2V(dj), F2V(awj), F2V(reccmcz), c16);
|
||||
F2V(nc2), F2V(pow1n), F2V(nbbj), F2V(ncbj), F2V(flj), F2V(dj), F2V(awj), F2V(reccmcz), c16, F2V(plum));
|
||||
x *= c655d35;
|
||||
y *= c655d35;
|
||||
z *= c655d35;
|
||||
|
@ -191,12 +191,14 @@ enum class BlurType {
|
||||
void moyeqt(Imagefloat* working, float &moyS, float &eqty);
|
||||
|
||||
void luminanceCurve(LabImage* lold, LabImage* lnew, const LUTf &curve);
|
||||
void ciecamloc_02float(int sp, LabImage* lab, int call);
|
||||
void ciecamloc_02float(const struct local_params& lp, int sp, LabImage* lab, int bfw, int bfh, int call, int sk, const LUTf& cielocalcurve, bool localcieutili, const LUTf& cielocalcurve2, bool localcieutili2, const LUTf& jzlocalcurve, bool localjzutili, const LUTf& czlocalcurve, bool localczutili, const LUTf& czjzlocalcurve, bool localczjzutili, const LocCHCurve& locchCurvejz, const LocHHCurve& lochhCurve, const LocLHCurve& loclhCurve, bool HHcurvejz, bool CHcurvejz, bool LHcurvejz, const LocwavCurve& locwavCurvejz, bool locwavutilijz);
|
||||
|
||||
void ciecam_02float(CieImage* ncie, float adap, int pW, int pwb, LabImage* lab, const procparams::ProcParams* params,
|
||||
const ColorAppearance & customColCurve1, const ColorAppearance & customColCurve, const ColorAppearance & customColCurve3,
|
||||
LUTu &histLCAM, LUTu &histCCAM, LUTf & CAMBrightCurveJ, LUTf & CAMBrightCurveQ, float &mean, int Iterates, int scale, bool execsharp, float &d, float &dj, float &yb, int rtt,
|
||||
bool showSharpMask = false);
|
||||
void clarimerge(const struct local_params& lp, float &mL, float &mC, bool &exec, LabImage *tmpresid, int wavelet_level, int sk, int numThreads);
|
||||
|
||||
void chromiLuminanceCurve(PipetteBuffer *pipetteBuffer, int pW, LabImage* lold, LabImage* lnew, const LUTf& acurve, const LUTf& bcurve, const LUTf& satcurve, const LUTf& satclcurve, const LUTf& clcurve, LUTf &curve, bool utili, bool autili, bool butili, bool ccutili, bool cclutili, bool clcutili, LUTu &histCCurve, LUTu &histLurve);
|
||||
void vibrance(LabImage* lab, const procparams::VibranceParams &vibranceParams, bool highlight, const Glib::ustring &workingProfile); //Jacques' vibrance
|
||||
void softprocess(const LabImage* bufcolorig, array2D<float> &buflight, /* float ** bufchro, float ** buf_a, float ** buf_b, */ float rad, int bfh, int bfw, double epsilmax, double epsilmin, float thres, int sk, bool multiThread);
|
||||
@ -253,7 +255,7 @@ enum class BlurType {
|
||||
const LUTf& lmasklocalcurve, bool localmaskutili,
|
||||
const LocwavCurve & loclmasCurvecolwav, bool lmasutilicolwav, int level_bl, int level_hl, int level_br, int level_hr,
|
||||
int shortcu, bool delt, const float hueref, const float chromaref, const float lumaref,
|
||||
float maxdE, float mindE, float maxdElim, float mindElim, float iterat, float limscope, int scope, bool fftt, float blu_ma, float cont_ma, int indic);
|
||||
float maxdE, float mindE, float maxdElim, float mindElim, float iterat, float limscope, int scope, bool fftt, float blu_ma, float cont_ma, int indic, float &fab);
|
||||
|
||||
void avoidcolshi(const struct local_params& lp, int sp, LabImage * original, LabImage *transformed, int cy, int cx, int sk);
|
||||
|
||||
@ -263,6 +265,7 @@ enum class BlurType {
|
||||
void laplacian(const array2D<float> &src, array2D<float> &dst, int bfw, int bfh, float threshold, float ceiling, float factor, bool multiThread);
|
||||
void detail_mask(const array2D<float> &src, array2D<float> &mask, int bfw, int bfh, float scaling, float threshold, float ceiling, float factor, BlurType blur_type, float blur, bool multithread);
|
||||
void NLMeans(float **img, int strength, int detail_thresh, int patch, int radius, float gam, int bfw, int bfh, float scale, bool multithread);
|
||||
void loccont(int bfw, int bfh, LabImage* tmp1, float rad, float stren, int sk);
|
||||
|
||||
void rex_poisson_dct(float * data, size_t nx, size_t ny, double m);
|
||||
void mean_dt(const float * data, size_t size, double& mean_p, double& dt_p);
|
||||
@ -307,6 +310,7 @@ enum class BlurType {
|
||||
const LUTf& cllocalcurve, bool localclutili,
|
||||
const LUTf& lclocalcurve, bool locallcutili,
|
||||
const LocLHCurve& loclhCurve, const LocHHCurve& lochhCurve, const LocCHCurve& locchCurve,
|
||||
const LocHHCurve& lochhCurvejz, const LocCHCurve& locchCurvejz, const LocLHCurve& loclhCurvejz,
|
||||
const LUTf& lmasklocalcurve, bool localmaskutili,
|
||||
const LUTf& lmaskexplocalcurve, bool localmaskexputili,
|
||||
const LUTf& lmaskSHlocalcurve, bool localmaskSHutili,
|
||||
@ -318,6 +322,12 @@ enum class BlurType {
|
||||
const LUTf& lmasklclocalcurve, bool localmasklcutili,
|
||||
const LUTf& lmaskloglocalcurve, bool localmasklogutili,
|
||||
const LUTf& lmasklocal_curve, bool localmask_utili,
|
||||
const LUTf& lmaskcielocalcurve, bool localmaskcieutili,
|
||||
const LUTf& cielocalcurve, bool localcieutili,
|
||||
const LUTf& cielocalcurve2, bool localcieutili2,
|
||||
const LUTf& jzlocalcurve, bool localjzutili,
|
||||
const LUTf& czlocalcurve, bool localczutili,
|
||||
const LUTf& czjzlocalcurve, bool localczjzutili,
|
||||
|
||||
const LocCCmaskCurve& locccmasCurve, bool lcmasutili, const LocLLmaskCurve& locllmasCurve, bool llmasutili, const LocHHmaskCurve& lochhmasCurve, bool lhmasutili, const LocHHmaskCurve& llochhhmasCurve, bool lhhmasutili,
|
||||
const LocCCmaskCurve& locccmasexpCurve, bool lcmasexputili, const LocLLmaskCurve& locllmasexpCurve, bool llmasexputili, const LocHHmaskCurve& lochhmasexpCurve, bool lhmasexputili,
|
||||
@ -330,11 +340,14 @@ enum class BlurType {
|
||||
const LocCCmaskCurve& locccmaslcCurve, bool lcmaslcutili, const LocLLmaskCurve& locllmaslcCurve, bool llmaslcutili, const LocHHmaskCurve& lochhmaslcCurve, bool lhmaslcutili,
|
||||
const LocCCmaskCurve& locccmaslogCurve, bool lcmaslogutili, const LocLLmaskCurve& locllmaslogCurve, bool llmaslogutili, const LocHHmaskCurve& lochhmaslogCurve, bool lhmaslogutili,
|
||||
const LocCCmaskCurve& locccmas_Curve, bool lcmas_utili, const LocLLmaskCurve& locllmas_Curve, bool llmas_utili, const LocHHmaskCurve& lochhmas_Curve, bool lhmas_utili,
|
||||
const LocCCmaskCurve& locccmascieCurve, bool lcmascieutili, const LocLLmaskCurve& locllmascieCurve, bool llmascieutili, const LocHHmaskCurve& lochhmascieCurve, bool lhmascieutili,
|
||||
|
||||
const LocHHmaskCurve& lochhhmas_Curve, bool lhhmas_utili,
|
||||
|
||||
const LocwavCurve& loclmasCurveblwav, bool lmasutiliblwav,
|
||||
const LocwavCurve& loclmasCurvecolwav, bool lmasutilicolwav,
|
||||
const LocwavCurve& locwavCurve, bool locwavutili,
|
||||
const LocwavCurve& locwavCurvejz, bool locwavutilijz,
|
||||
const LocwavCurve& loclevwavCurve, bool loclevwavutili,
|
||||
const LocwavCurve& locconwavCurve, bool locconwavutili,
|
||||
const LocwavCurve& loccompwavCurve, bool loccompwavutili,
|
||||
@ -343,11 +356,11 @@ enum class BlurType {
|
||||
const LocwavCurve& locwavCurveden, bool locwavdenutili,
|
||||
const LocwavCurve& locedgwavCurve, bool locedgwavutili,
|
||||
const LocwavCurve& loclmasCurve_wav, bool lmasutili_wav,
|
||||
bool LHutili, bool HHutili, bool CHutili, const LUTf& cclocalcurve, bool localcutili, const LUTf& rgblocalcurve, bool localrgbutili, bool localexutili, const LUTf& exlocalcurve, const LUTf& hltonecurveloc, const LUTf& shtonecurveloc, const LUTf& tonecurveloc, const LUTf& lightCurveloc,
|
||||
bool LHutili, bool HHutili, bool CHutili, bool HHutilijz, bool CHutilijz, bool LHutilijz, const LUTf& cclocalcurve, bool localcutili, const LUTf& rgblocalcurve, bool localrgbutili, bool localexutili, const LUTf& exlocalcurve, const LUTf& hltonecurveloc, const LUTf& shtonecurveloc, const LUTf& tonecurveloc, const LUTf& lightCurveloc,
|
||||
double& huerefblur, double &chromarefblur, double& lumarefblur, double &hueref, double &chromaref, double &lumaref, double &sobelref, int &lastsav,
|
||||
bool prevDeltaE, int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int lllcMask, int llsharMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask, int lllogMask, int ll_Mask,
|
||||
bool prevDeltaE, int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int lllcMask, int llsharMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask, int lllogMask, int ll_Mask, int llcieMask,
|
||||
float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax,
|
||||
float& meantm, float& stdtm, float& meanreti, float& stdreti);
|
||||
float& meantm, float& stdtm, float& meanreti, float& stdreti, float &fab);
|
||||
|
||||
void addGaNoise(LabImage *lab, LabImage *dst, const float mean, const float variance, const int sk);
|
||||
void BlurNoise_Localold(int call, const struct local_params& lp, LabImage* original, LabImage* transformed, const LabImage* const tmp1, int cx, int cy);
|
||||
@ -371,6 +384,8 @@ enum class BlurType {
|
||||
const LocwavCurve & loccomprewavCurve, bool loccomprewavutili,
|
||||
float radlevblur, int process, float chromablu, float thres, float sigmadc, float deltad);
|
||||
|
||||
void wavlc(wavelet_decomposition& wdspot, int level_bl, int level_hl, int maxlvl, int level_hr, int level_br, float ahigh, float bhigh, float alow, float blow, float sigmalc, float strength, const LocwavCurve & locwavCurve, int numThreads);
|
||||
|
||||
void wavcbd(wavelet_decomposition &wdspot, int level_bl, int maxlvl,
|
||||
const LocwavCurve& locconwavCurve, bool locconwavutili, float sigm, float offs, float chromalev, int sk);
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1073,9 +1073,119 @@ enum ProcEventCode {
|
||||
Evlocallabreparexp = 1047,
|
||||
Evlocallabrepartm = 1048,
|
||||
Evlocallabchroml = 1049,
|
||||
Evlocallabresidgam = 1050,
|
||||
Evlocallabresidslop = 1051,
|
||||
Evlocallabnoisegam = 1052,
|
||||
Evlocallabgamlc = 1053,
|
||||
Evlocallabgamc = 1054,
|
||||
Evlocallabgamex = 1055,
|
||||
EvLocenacie = 1056,
|
||||
Evlocallabreparcie = 1057,
|
||||
EvlocallabAutograycie = 1058,
|
||||
EvlocallabsourceGraycie = 1059,
|
||||
Evlocallabsourceabscie = 1060,
|
||||
Evlocallabsursourcie = 1061,
|
||||
Evlocallabsaturlcie = 1062,
|
||||
Evlocallabchromlcie = 1063,
|
||||
Evlocallablightlcie = 1064,
|
||||
Evlocallablightqcie = 1065,
|
||||
Evlocallabcontlcie = 1066,
|
||||
Evlocallabcontthrescie = 1067,
|
||||
Evlocallabcontqcie = 1068,
|
||||
Evlocallabcolorflcie = 1069,
|
||||
Evlocallabtargabscie = 1070,
|
||||
EvlocallabtargetGraycie = 1071,
|
||||
Evlocallabcatadcie = 1072,
|
||||
Evlocallabdetailcie = 1073,
|
||||
Evlocallabsurroundcie = 1074,
|
||||
Evlocallabsensicie = 1075,
|
||||
Evlocallabmodecie = 1076,
|
||||
Evlocallabrstprotectcie = 1077,
|
||||
Evlocallabsigmoidldacie = 1078,
|
||||
Evlocallabsigmoidthcie = 1079,
|
||||
Evlocallabsigmoidblcie = 1080,
|
||||
Evlocallabsigmoidqjcie = 1081,
|
||||
Evlocallabhuecie = 1082,
|
||||
Evlocallabjabcie = 1083,
|
||||
Evlocallablightjzcie = 1084,
|
||||
Evlocallabcontjzcie = 1085,
|
||||
Evlocallabchromjzcie = 1086,
|
||||
Evlocallabhuejzcie = 1087,
|
||||
Evlocallabsigmoidldajzcie = 1088,
|
||||
Evlocallabsigmoidthjzcie = 1089,
|
||||
Evlocallabsigmoidbljzcie = 1090,
|
||||
Evlocallabadapjzcie = 1091,
|
||||
Evlocallabmodecam = 1092,
|
||||
Evlocallabhljzcie = 1093,
|
||||
Evlocallabhlthjzcie = 1094,
|
||||
Evlocallabshjzcie = 1095,
|
||||
Evlocallabshthjzcie = 1096,
|
||||
Evlocallabradjzcie = 1097,
|
||||
// EvlocallabHHshapejz = 1098,
|
||||
EvlocallabCHshapejz = 1098,
|
||||
Evlocallabjz100 = 1099,
|
||||
Evlocallabpqremap = 1100,
|
||||
EvlocallabLHshapejz = 1101,
|
||||
Evlocallabshargam = 1102,
|
||||
Evlocallabvibgam = 1103,
|
||||
EvLocallabtoneMethodcie = 1104,
|
||||
Evlocallabshapecie = 1105,
|
||||
EvLocallabtoneMethodcie2 = 1106,
|
||||
Evlocallabshapecie2 = 1107,
|
||||
Evlocallabshapejz = 1108,
|
||||
Evlocallabshapecz = 1109,
|
||||
Evlocallabshapeczjz = 1110,
|
||||
Evlocallabforcejz = 1111,
|
||||
//Evlocallablightlzcam = 1113,
|
||||
//Evlocallablightqzcam = 1114,
|
||||
//Evlocallabcontlzcam = 1115,
|
||||
//Evlocallabcontqzcam = 1116,
|
||||
//Evlocallabcontthreszcam = 1117,
|
||||
//Evlocallabcolorflzcam = 1118,
|
||||
//Evlocallabsaturzcam = 1119,
|
||||
//Evlocallabchromzcam = 1120,
|
||||
Evlocallabpqremapcam16 = 1112,
|
||||
EvLocallabEnacieMask = 1113,
|
||||
EvlocallabCCmaskcieshape = 1114,
|
||||
EvlocallabLLmaskcieshape = 1115,
|
||||
EvlocallabHHmaskcieshape = 1116,
|
||||
Evlocallabblendmaskcie = 1117,
|
||||
Evlocallabradmaskcie = 1118,
|
||||
Evlocallabchromaskcie = 1119,
|
||||
EvlocallabLmaskcieshape = 1120,
|
||||
Evlocallabrecothrescie = 1121,
|
||||
Evlocallablowthrescie = 1122,
|
||||
Evlocallabhigthrescie = 1123,
|
||||
Evlocallabdecaycie = 1124,
|
||||
Evlocallablapmaskcie = 1125,
|
||||
Evlocallabgammaskcie = 1126,
|
||||
Evlocallabslomaskcie = 1127,
|
||||
Evlocallabqtoj = 1128,
|
||||
Evlocallabsaturjzcie = 1129,
|
||||
EvLocallabSpotdenoichmask = 1130,
|
||||
Evlocallabsigmalcjz = 1131,
|
||||
EvlocallabcsThresholdjz = 1132,
|
||||
EvlocallabwavCurvejz = 1133,
|
||||
Evlocallabclarilresjz = 1134,
|
||||
Evlocallabclaricresjz = 1135,
|
||||
Evlocallabclarisoftjz = 1136,
|
||||
EvlocallabHHshapejz = 1137,
|
||||
Evlocallabsoftjzcie = 1138,
|
||||
Evlocallabthrhjzcie = 1139,
|
||||
Evlocallabchjzcie = 1140,
|
||||
Evlocallabstrsoftjzcie = 1141,
|
||||
EvlocallabblackEvjz = 1142,
|
||||
EvlocallabwhiteEvjz = 1143,
|
||||
Evlocallablogjz = 1144,
|
||||
Evlocallabtargetjz = 1145,
|
||||
Evlocallabforcebw = 1146,
|
||||
Evlocallabsigjz = 1147,
|
||||
NUMOFEVENTS
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
class ProcEvent
|
||||
{
|
||||
public:
|
||||
|
@ -2876,6 +2876,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
||||
shortc(false),
|
||||
savrest(false),
|
||||
scopemask(60),
|
||||
denoichmask(0.),
|
||||
lumask(10),
|
||||
// Color & Light
|
||||
visicolor(false),
|
||||
@ -2884,6 +2885,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
||||
curvactiv(false),
|
||||
lightness(0),
|
||||
reparcol(100.),
|
||||
gamc(1.),
|
||||
contrast(0),
|
||||
chroma(0),
|
||||
labgridALow(0.0),
|
||||
@ -3131,7 +3133,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
||||
expexpose(false),
|
||||
complexexpose(0),
|
||||
expcomp(0.0),
|
||||
hlcompr(20),
|
||||
hlcompr(0),
|
||||
hlcomprthresh(0),
|
||||
black(0),
|
||||
shadex(0),
|
||||
@ -3140,6 +3142,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
||||
sensiex(60),
|
||||
structexp(0),
|
||||
blurexpde(5),
|
||||
gamex(1.),
|
||||
strexp(0.),
|
||||
angexp(0.),
|
||||
excurve{
|
||||
@ -3319,6 +3322,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
||||
complexvibrance(0),
|
||||
saturated(0),
|
||||
pastels(0),
|
||||
vibgam(1.0),
|
||||
warm(0),
|
||||
psthreshold({0, 75, false}),
|
||||
protectskins(false),
|
||||
@ -3445,6 +3449,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
||||
noiselumc(0.),
|
||||
noiselumdetail(50.),
|
||||
noiselequal(7),
|
||||
noisegam(1.),
|
||||
noisechrof(0.),
|
||||
noisechroc(0.),
|
||||
noisechrodetail(50.),
|
||||
@ -3785,6 +3790,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
||||
shardamping(0),
|
||||
shariter(30),
|
||||
sharblur(0.2),
|
||||
shargam(1.0),
|
||||
sensisha(40),
|
||||
inverssha(false),
|
||||
// Local Contrast
|
||||
@ -3802,6 +3808,9 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
||||
residshathr(30.0),
|
||||
residhi(0.0),
|
||||
residhithr(70.0),
|
||||
gamlc(1.0),
|
||||
residgam(2.40),
|
||||
residslop(12.94),
|
||||
residblur(0.0),
|
||||
levelblur(0.0),
|
||||
sigmabl(1.0),
|
||||
@ -4261,7 +4270,276 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
||||
0.35,
|
||||
0.35
|
||||
},
|
||||
csthresholdmask(0, 0, 6, 5, false)
|
||||
csthresholdmask(0, 0, 6, 5, false),
|
||||
// ciecam
|
||||
visicie(false),
|
||||
expcie(false),
|
||||
complexcie(0),
|
||||
reparcie(100.),
|
||||
sensicie(60),
|
||||
Autograycie(true),
|
||||
forcejz(true),
|
||||
forcebw(true),
|
||||
qtoj(false),
|
||||
jabcie(true),
|
||||
sigmoidqjcie(false),
|
||||
logjz(false),
|
||||
sigjz(false),
|
||||
chjzcie(true),
|
||||
sourceGraycie(18.),
|
||||
sourceabscie(2000.),
|
||||
sursourcie("Average"),
|
||||
modecie("com"),
|
||||
modecam("cam16"),
|
||||
saturlcie(0.),
|
||||
rstprotectcie(0.),
|
||||
chromlcie(0.),
|
||||
huecie(0.),
|
||||
toneMethodcie("one"),
|
||||
ciecurve{
|
||||
static_cast<double>(DCT_NURBS),
|
||||
0.0,
|
||||
0.0,
|
||||
1.0,
|
||||
1.0
|
||||
},
|
||||
toneMethodcie2("onec"),
|
||||
ciecurve2{
|
||||
static_cast<double>(DCT_NURBS),
|
||||
0.0,
|
||||
0.0,
|
||||
1.0,
|
||||
1.0
|
||||
},
|
||||
chromjzcie(0.),
|
||||
saturjzcie(0.),
|
||||
huejzcie(0.),
|
||||
softjzcie(0.),
|
||||
strsoftjzcie(100.),
|
||||
thrhjzcie(60.),
|
||||
jzcurve{
|
||||
static_cast<double>(DCT_NURBS),
|
||||
0.0,
|
||||
0.0,
|
||||
1.0,
|
||||
1.0
|
||||
},
|
||||
czcurve{
|
||||
static_cast<double>(DCT_NURBS),
|
||||
0.0,
|
||||
0.0,
|
||||
1.0,
|
||||
1.0
|
||||
},
|
||||
czjzcurve{
|
||||
static_cast<double>(DCT_NURBS),
|
||||
0.0,
|
||||
0.0,
|
||||
1.0,
|
||||
1.0
|
||||
},
|
||||
HHcurvejz{
|
||||
static_cast<double>(FCT_MinMaxCPoints),
|
||||
0.0,
|
||||
0.50,
|
||||
0.35,
|
||||
0.35,
|
||||
0.166,
|
||||
0.50,
|
||||
0.35,
|
||||
0.35,
|
||||
0.333,
|
||||
0.50,
|
||||
0.35,
|
||||
0.35,
|
||||
0.50,
|
||||
0.50,
|
||||
0.35,
|
||||
0.35,
|
||||
0.666,
|
||||
0.50,
|
||||
0.35,
|
||||
0.35,
|
||||
0.833,
|
||||
0.50,
|
||||
0.35,
|
||||
0.35
|
||||
},
|
||||
CHcurvejz{
|
||||
static_cast<double>(FCT_MinMaxCPoints),
|
||||
0.0,
|
||||
0.50,
|
||||
0.35,
|
||||
0.35,
|
||||
0.166,
|
||||
0.50,
|
||||
0.35,
|
||||
0.35,
|
||||
0.333,
|
||||
0.50,
|
||||
0.35,
|
||||
0.35,
|
||||
0.50,
|
||||
0.50,
|
||||
0.35,
|
||||
0.35,
|
||||
0.666,
|
||||
0.50,
|
||||
0.35,
|
||||
0.35,
|
||||
0.833,
|
||||
0.50,
|
||||
0.35,
|
||||
0.35
|
||||
},
|
||||
LHcurvejz{
|
||||
static_cast<double>(FCT_MinMaxCPoints),
|
||||
0.0,
|
||||
0.50,
|
||||
0.35,
|
||||
0.35,
|
||||
0.166,
|
||||
0.50,
|
||||
0.35,
|
||||
0.35,
|
||||
0.333,
|
||||
0.50,
|
||||
0.35,
|
||||
0.35,
|
||||
0.50,
|
||||
0.50,
|
||||
0.35,
|
||||
0.35,
|
||||
0.666,
|
||||
0.50,
|
||||
0.35,
|
||||
0.35,
|
||||
0.833,
|
||||
0.50,
|
||||
0.35,
|
||||
0.35
|
||||
},
|
||||
lightlcie(0.),
|
||||
lightjzcie(0.),
|
||||
lightqcie(0.),
|
||||
contlcie(0.),
|
||||
contjzcie(0.),
|
||||
adapjzcie(4.0),
|
||||
jz100(0.25),
|
||||
pqremap(120.),
|
||||
pqremapcam16(100.),
|
||||
hljzcie(0.0),
|
||||
hlthjzcie(70.0),
|
||||
shjzcie(0.0),
|
||||
shthjzcie(40.0),
|
||||
radjzcie(40.0),
|
||||
sigmalcjz(1.),
|
||||
clarilresjz(0.),
|
||||
claricresjz(0.),
|
||||
clarisoftjz(0.),
|
||||
locwavcurvejz{
|
||||
static_cast<double>(FCT_MinMaxCPoints),
|
||||
0.0,
|
||||
0.5,
|
||||
0.35,
|
||||
0.35,
|
||||
1.,
|
||||
0.5,
|
||||
0.35,
|
||||
0.35
|
||||
},
|
||||
csthresholdjz(0, 0, 7, 4, false),
|
||||
contthrescie(0.),
|
||||
blackEvjz(-5.0),
|
||||
whiteEvjz(10.0),
|
||||
targetjz(18.0),
|
||||
sigmoidldacie(0.),
|
||||
sigmoidthcie(1.),
|
||||
sigmoidblcie(1.),
|
||||
sigmoidldajzcie(0.5),
|
||||
sigmoidthjzcie(1.),
|
||||
sigmoidbljzcie(1.),
|
||||
contqcie(0.),
|
||||
colorflcie(0.),
|
||||
/*
|
||||
lightlzcam(0.),
|
||||
lightqzcam(0.),
|
||||
contlzcam(0.),
|
||||
contqzcam(0.),
|
||||
contthreszcam(0.),
|
||||
colorflzcam(0.),
|
||||
saturzcam(0.),
|
||||
chromzcam(0.),
|
||||
*/
|
||||
targabscie(16.),
|
||||
targetGraycie(18.),
|
||||
catadcie(0.),
|
||||
detailcie(0.),
|
||||
surroundcie("Average"),
|
||||
enacieMask(false),
|
||||
CCmaskciecurve{
|
||||
static_cast<double>(FCT_MinMaxCPoints),
|
||||
0.0,
|
||||
1.0,
|
||||
0.35,
|
||||
0.35,
|
||||
0.50,
|
||||
1.0,
|
||||
0.35,
|
||||
0.35,
|
||||
1.0,
|
||||
1.0,
|
||||
0.35,
|
||||
0.35
|
||||
},
|
||||
LLmaskciecurve{
|
||||
static_cast<double>(FCT_MinMaxCPoints),
|
||||
0.0,
|
||||
1.0,
|
||||
0.35,
|
||||
0.35,
|
||||
0.50,
|
||||
1.0,
|
||||
0.35,
|
||||
0.35,
|
||||
1.0,
|
||||
1.0,
|
||||
0.35,
|
||||
0.35
|
||||
},
|
||||
HHmaskciecurve{
|
||||
static_cast<double>(FCT_MinMaxCPoints),
|
||||
0.0,
|
||||
1.0,
|
||||
0.35,
|
||||
0.35,
|
||||
0.50,
|
||||
1.0,
|
||||
0.35,
|
||||
0.35,
|
||||
1.0,
|
||||
1.0,
|
||||
0.35,
|
||||
0.35
|
||||
},
|
||||
blendmaskcie(0),
|
||||
radmaskcie(0.0),
|
||||
chromaskcie(0.0),
|
||||
lapmaskcie(0.0),
|
||||
gammaskcie(1.0),
|
||||
slomaskcie(0.0),
|
||||
Lmaskciecurve{
|
||||
static_cast<double>(DCT_NURBS),
|
||||
0.0,
|
||||
0.0,
|
||||
1.0,
|
||||
1.0
|
||||
},
|
||||
recothrescie(1.),
|
||||
lowthrescie(12.),
|
||||
higthrescie(85.),
|
||||
decaycie(2.)
|
||||
|
||||
|
||||
{
|
||||
}
|
||||
@ -4308,6 +4586,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
||||
&& shortc == other.shortc
|
||||
&& savrest == other.savrest
|
||||
&& scopemask == other.scopemask
|
||||
&& denoichmask == other.denoichmask
|
||||
&& lumask == other.lumask
|
||||
// Color & Light
|
||||
&& visicolor == other.visicolor
|
||||
@ -4316,6 +4595,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
||||
&& curvactiv == other.curvactiv
|
||||
&& lightness == other.lightness
|
||||
&& reparcol == other.reparcol
|
||||
&& gamc == other.gamc
|
||||
&& contrast == other.contrast
|
||||
&& chroma == other.chroma
|
||||
&& labgridALow == other.labgridALow
|
||||
@ -4392,6 +4672,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
||||
&& sensiex == other.sensiex
|
||||
&& structexp == other.structexp
|
||||
&& blurexpde == other.blurexpde
|
||||
&& gamex == other.gamex
|
||||
&& strexp == other.strexp
|
||||
&& angexp == other.angexp
|
||||
&& excurve == other.excurve
|
||||
@ -4478,6 +4759,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
||||
&& complexvibrance == other.complexvibrance
|
||||
&& saturated == other.saturated
|
||||
&& pastels == other.pastels
|
||||
&& vibgam == other.vibgam
|
||||
&& warm == other.warm
|
||||
&& psthreshold == other.psthreshold
|
||||
&& protectskins == other.protectskins
|
||||
@ -4554,6 +4836,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
||||
&& noiselumc == other.noiselumc
|
||||
&& noiselumdetail == other.noiselumdetail
|
||||
&& noiselequal == other.noiselequal
|
||||
&& noisegam == other.noisegam
|
||||
&& noisechrof == other.noisechrof
|
||||
&& noisechroc == other.noisechroc
|
||||
&& noisechrodetail == other.noisechrodetail
|
||||
@ -4672,6 +4955,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
||||
&& shardamping == other.shardamping
|
||||
&& shariter == other.shariter
|
||||
&& sharblur == other.sharblur
|
||||
&& shargam == other.shargam
|
||||
&& sensisha == other.sensisha
|
||||
&& inverssha == other.inverssha
|
||||
// Local contrast
|
||||
@ -4689,6 +4973,9 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
||||
&& residshathr == other.residshathr
|
||||
&& residhi == other.residhi
|
||||
&& residhithr == other.residhithr
|
||||
&& gamlc == other.gamlc
|
||||
&& residgam == other.residgam
|
||||
&& residslop == other.residslop
|
||||
&& residblur == other.residblur
|
||||
&& levelblur == other.levelblur
|
||||
&& sigmabl == other.sigmabl
|
||||
@ -4859,7 +5146,109 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
||||
&& HHhmask_curve == other.HHhmask_curve
|
||||
&& Lmask_curve == other.Lmask_curve
|
||||
&& LLmask_curvewav == other.LLmask_curvewav
|
||||
&& csthresholdmask == other.csthresholdmask;
|
||||
&& csthresholdmask == other.csthresholdmask
|
||||
//ciecam
|
||||
&& visicie == other.visicie
|
||||
&& expcie == other.expcie
|
||||
&& complexcie == other.complexcie
|
||||
&& reparcie == other.reparcie
|
||||
&& sensicie == other.sensicie
|
||||
&& Autograycie == other.Autograycie
|
||||
&& forcejz == other.forcejz
|
||||
&& forcebw == other.forcebw
|
||||
&& qtoj == other.qtoj
|
||||
&& jabcie == other.jabcie
|
||||
&& sigmoidqjcie == other.sigmoidqjcie
|
||||
&& logjz == other.logjz
|
||||
&& sigjz == other.sigjz
|
||||
&& chjzcie == other.chjzcie
|
||||
&& sourceGraycie == other.sourceGraycie
|
||||
&& sourceabscie == other.sourceabscie
|
||||
&& sursourcie == other.sursourcie
|
||||
&& modecie == other.modecie
|
||||
&& modecam == other.modecam
|
||||
&& saturlcie == other.saturlcie
|
||||
&& rstprotectcie == other.rstprotectcie
|
||||
&& chromlcie == other.chromlcie
|
||||
&& huecie == other.huecie
|
||||
&& toneMethodcie == other.toneMethodcie
|
||||
&& ciecurve == other.ciecurve
|
||||
&& toneMethodcie2 == other.toneMethodcie2
|
||||
&& ciecurve2 == other.ciecurve2
|
||||
&& chromjzcie == other.chromjzcie
|
||||
&& saturjzcie == other.saturjzcie
|
||||
&& huejzcie == other.huejzcie
|
||||
&& softjzcie == other.softjzcie
|
||||
&& strsoftjzcie == other.strsoftjzcie
|
||||
&& thrhjzcie == other.thrhjzcie
|
||||
&& jzcurve == other.jzcurve
|
||||
&& czcurve == other.czcurve
|
||||
&& czjzcurve == other.czjzcurve
|
||||
&& HHcurvejz == other.HHcurvejz
|
||||
&& CHcurvejz == other.CHcurvejz
|
||||
&& LHcurvejz == other.LHcurvejz
|
||||
&& lightlcie == other.lightlcie
|
||||
&& lightjzcie == other.lightjzcie
|
||||
&& lightqcie == other.lightqcie
|
||||
&& contlcie == other.contlcie
|
||||
&& contjzcie == other.contjzcie
|
||||
&& adapjzcie == other.adapjzcie
|
||||
&& jz100 == other.jz100
|
||||
&& pqremap == other.pqremap
|
||||
&& pqremapcam16 == other.pqremapcam16
|
||||
&& hljzcie == other.hljzcie
|
||||
&& hlthjzcie == other.hlthjzcie
|
||||
&& shjzcie == other.shjzcie
|
||||
&& shthjzcie == other.shthjzcie
|
||||
&& radjzcie == other.radjzcie
|
||||
&& sigmalcjz == other.sigmalcjz
|
||||
&& clarilresjz == other.clarilresjz
|
||||
&& claricresjz == other.claricresjz
|
||||
&& clarisoftjz == other.clarisoftjz
|
||||
&& locwavcurvejz == other.locwavcurvejz
|
||||
&& csthresholdjz == other.csthresholdjz
|
||||
&& contthrescie == other.contthrescie
|
||||
&& blackEvjz == other.blackEvjz
|
||||
&& whiteEvjz == other.whiteEvjz
|
||||
&& targetjz == other.targetjz
|
||||
&& sigmoidldacie == other.sigmoidldacie
|
||||
&& sigmoidthcie == other.sigmoidthcie
|
||||
&& sigmoidblcie == other.sigmoidblcie
|
||||
&& sigmoidldajzcie == other.sigmoidldajzcie
|
||||
&& sigmoidthjzcie == other.sigmoidthjzcie
|
||||
&& sigmoidbljzcie == other.sigmoidbljzcie
|
||||
&& contqcie == other.contqcie
|
||||
&& colorflcie == other.colorflcie
|
||||
/* && lightlzcam == other.lightlzcam
|
||||
&& lightqzcam == other.lightqzcam
|
||||
&& contlzcam == other.contlzcam
|
||||
&& contqzcam == other.contqzcam
|
||||
&& contthreszcam == other.contthreszcam
|
||||
&& colorflzcam == other.colorflzcam
|
||||
&& saturzcam == other.saturzcam
|
||||
&& chromzcam == other.chromzcam
|
||||
*/
|
||||
&& targabscie == other.targabscie
|
||||
&& targetGraycie == other.targetGraycie
|
||||
&& catadcie == other.catadcie
|
||||
&& detailcie == other.detailcie
|
||||
&& surroundcie == other.surroundcie
|
||||
&& enacieMask == other.enacieMask
|
||||
&& CCmaskciecurve == other.CCmaskciecurve
|
||||
&& LLmaskciecurve == other.LLmaskciecurve
|
||||
&& HHmaskciecurve == other.HHmaskciecurve
|
||||
&& blendmaskcie == other.blendmaskcie
|
||||
&& radmaskcie == other.radmaskcie
|
||||
&& chromaskcie == other.chromaskcie
|
||||
&& lapmaskcie == other.lapmaskcie
|
||||
&& gammaskcie == other.gammaskcie
|
||||
&& slomaskcie == other.slomaskcie
|
||||
&& Lmaskciecurve == other.Lmaskciecurve
|
||||
&& recothrescie == other.recothrescie
|
||||
&& lowthrescie == other.lowthrescie
|
||||
&& higthrescie == other.higthrescie
|
||||
&& decaycie == other.decaycie;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -5981,6 +6370,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
||||
saveToKeyfile(!pedited || spot_edited->shortc, "Locallab", "Shortc_" + index_str, spot.shortc, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->savrest, "Locallab", "Savrest_" + index_str, spot.savrest, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->scopemask, "Locallab", "Scopemask_" + index_str, spot.scopemask, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->denoichmask, "Locallab", "Denoichmask_" + index_str, spot.denoichmask, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->lumask, "Locallab", "Lumask_" + index_str, spot.lumask, keyFile);
|
||||
// Color & Light
|
||||
if ((!pedited || spot_edited->visicolor) && spot.visicolor) {
|
||||
@ -5989,6 +6379,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
||||
saveToKeyfile(!pedited || spot_edited->curvactiv, "Locallab", "Curvactiv_" + index_str, spot.curvactiv, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->lightness, "Locallab", "Lightness_" + index_str, spot.lightness, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->reparcol, "Locallab", "Reparcol_" + index_str, spot.reparcol, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->gamc, "Locallab", "Gamc_" + index_str, spot.gamc, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->contrast, "Locallab", "Contrast_" + index_str, spot.contrast, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->chroma, "Locallab", "Chroma_" + index_str, spot.chroma, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->labgridALow, "Locallab", "labgridALow_" + index_str, spot.labgridALow, keyFile);
|
||||
@ -6066,6 +6457,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
||||
saveToKeyfile(!pedited || spot_edited->sensiex, "Locallab", "Sensiex_" + index_str, spot.sensiex, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->structexp, "Locallab", "Structexp_" + index_str, spot.structexp, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->blurexpde, "Locallab", "Blurexpde_" + index_str, spot.blurexpde, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->gamex, "Locallab", "Gamex_" + index_str, spot.gamex, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->strexp, "Locallab", "Strexp_" + index_str, spot.strexp, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->angexp, "Locallab", "Angexp_" + index_str, spot.angexp, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->excurve, "Locallab", "ExCurve_" + index_str, spot.excurve, keyFile);
|
||||
@ -6149,6 +6541,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
||||
saveToKeyfile(!pedited || spot_edited->complexvibrance, "Locallab", "Complexvibrance_" + index_str, spot.complexvibrance, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->saturated, "Locallab", "Saturated_" + index_str, spot.saturated, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->pastels, "Locallab", "Pastels_" + index_str, spot.pastels, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->vibgam, "Locallab", "Vibgam_" + index_str, spot.vibgam, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->warm, "Locallab", "Warm_" + index_str, spot.warm, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->psthreshold, "Locallab", "PSThreshold_" + index_str, spot.psthreshold.toVector(), keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->protectskins, "Locallab", "ProtectSkins_" + index_str, spot.protectskins, keyFile);
|
||||
@ -6227,6 +6620,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
||||
saveToKeyfile(!pedited || spot_edited->noiselumc, "Locallab", "noiselumc_" + index_str, spot.noiselumc, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->noiselumdetail, "Locallab", "noiselumdetail_" + index_str, spot.noiselumdetail, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->noiselequal, "Locallab", "noiselequal_" + index_str, spot.noiselequal, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->noisegam, "Locallab", "noisegam_" + index_str, spot.noisegam, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->noisechrof, "Locallab", "noisechrof_" + index_str, spot.noisechrof, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->noisechroc, "Locallab", "noisechroc_" + index_str, spot.noisechroc, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->noisechrodetail, "Locallab", "noisechrodetail_" + index_str, spot.noisechrodetail, keyFile);
|
||||
@ -6348,6 +6742,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
||||
saveToKeyfile(!pedited || spot_edited->shardamping, "Locallab", "Shardamping_" + index_str, spot.shardamping, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->shariter, "Locallab", "Shariter_" + index_str, spot.shariter, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->sharblur, "Locallab", "Sharblur_" + index_str, spot.sharblur, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->shargam, "Locallab", "Shargam_" + index_str, spot.shargam, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->sensisha, "Locallab", "Sensisha_" + index_str, spot.sensisha, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->inverssha, "Locallab", "Inverssha_" + index_str, spot.inverssha, keyFile);
|
||||
}
|
||||
@ -6366,6 +6761,9 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
||||
saveToKeyfile(!pedited || spot_edited->residshathr, "Locallab", "Residshathr_" + index_str, spot.residshathr, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->residhi, "Locallab", "Residhi_" + index_str, spot.residhi, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->residhithr, "Locallab", "Residhithr_" + index_str, spot.residhithr, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->gamlc, "Locallab", "Gamlc_" + index_str, spot.gamlc, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->residgam, "Locallab", "Residgam_" + index_str, spot.residgam, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->residslop, "Locallab", "Residslop_" + index_str, spot.residslop, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->residblur, "Locallab", "Residblur_" + index_str, spot.residblur, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->levelblur, "Locallab", "Levelblur_" + index_str, spot.levelblur, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->sigmabl, "Locallab", "Sigmabl_" + index_str, spot.sigmabl, keyFile);
|
||||
@ -6472,7 +6870,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
||||
saveToKeyfile(!pedited || spot_edited->targetGray, "Locallab", "TargetGray_" + index_str, spot.targetGray, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->catad, "Locallab", "Catad_" + index_str, spot.catad, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->saturl, "Locallab", "Saturl_" + index_str, spot.saturl, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->saturl, "Locallab", "Chroml_" + index_str, spot.chroml, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->chroml, "Locallab", "Chroml_" + index_str, spot.chroml, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->LcurveL, "Locallab", "LCurveL_" + index_str, spot.LcurveL, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->lightl, "Locallab", "Lightl_" + index_str, spot.lightl, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->lightq, "Locallab", "Brightq_" + index_str, spot.lightq, keyFile);
|
||||
@ -6480,7 +6878,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
||||
saveToKeyfile(!pedited || spot_edited->contthres, "Locallab", "Contthres_" + index_str, spot.contthres, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->contq, "Locallab", "Contq_" + index_str, spot.contq, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->colorfl, "Locallab", "Colorfl_" + index_str, spot.colorfl, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->Autogray, "Locallab", "Autogray_" + index_str, spot.Autogray, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->Autogray, "Locallab", "AutoGray_" + index_str, spot.Autogray, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->fullimage, "Locallab", "Fullimage_" + index_str, spot.fullimage, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->repar, "Locallab", "Repart_" + index_str, spot.repar, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->ciecam, "Locallab", "Ciecam_" + index_str, spot.ciecam, keyFile);
|
||||
@ -6537,6 +6935,113 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
||||
saveToKeyfile(!pedited || spot_edited->LLmask_curvewav, "Locallab", "LLmask_Curvewav_" + index_str, spot.LLmask_curvewav, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->csthresholdmask, "Locallab", "CSThresholdmask_" + index_str, spot.csthresholdmask.toVector(), keyFile);
|
||||
}
|
||||
//ciecam
|
||||
if ((!pedited || spot_edited->visicie) && spot.visicie) {
|
||||
saveToKeyfile(!pedited || spot_edited->expcie, "Locallab", "Expcie_" + index_str, spot.expcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->complexcie, "Locallab", "Complexcie_" + index_str, spot.complexcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->reparcie, "Locallab", "Reparcie_" + index_str, spot.reparcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->sensicie, "Locallab", "Sensicie_" + index_str, spot.sensicie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->Autograycie, "Locallab", "AutoGraycie_" + index_str, spot.Autograycie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->forcejz, "Locallab", "Forcejz_" + index_str, spot.forcejz, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->forcebw, "Locallab", "Forcebw_" + index_str, spot.forcebw, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->qtoj, "Locallab", "Qtoj_" + index_str, spot.qtoj, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->jabcie, "Locallab", "jabcie_" + index_str, spot.jabcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->sigmoidqjcie, "Locallab", "sigmoidqjcie_" + index_str, spot.sigmoidqjcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->logjz, "Locallab", "Logjz_" + index_str, spot.logjz, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->sigjz, "Locallab", "Sigjz_" + index_str, spot.sigjz, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->chjzcie, "Locallab", "chjzcie_" + index_str, spot.chjzcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->sourceGraycie, "Locallab", "SourceGraycie_" + index_str, spot.sourceGraycie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->sourceabscie, "Locallab", "Sourceabscie_" + index_str, spot.sourceabscie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->sursourcie, "Locallab", "Sursourcie_" + index_str, spot.sursourcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->modecie, "Locallab", "Modecie_" + index_str, spot.modecie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->modecam, "Locallab", "Modecam_" + index_str, spot.modecam, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->saturlcie, "Locallab", "Saturlcie_" + index_str, spot.saturlcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->rstprotectcie, "Locallab", "Rstprotectcie_" + index_str, spot.rstprotectcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->chromlcie, "Locallab", "Chromlcie_" + index_str, spot.chromlcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->huecie, "Locallab", "Huecie_" + index_str, spot.huecie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->toneMethodcie, "Locallab", "ToneMethodcie_" + index_str, spot.toneMethodcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->ciecurve, "Locallab", "Ciecurve_" + index_str, spot.ciecurve, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->toneMethodcie2, "Locallab", "ToneMethodcie2_" + index_str, spot.toneMethodcie2, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->ciecurve2, "Locallab", "Ciecurve2_" + index_str, spot.ciecurve2, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->chromjzcie, "Locallab", "Chromjzcie_" + index_str, spot.chromjzcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->saturjzcie, "Locallab", "Saturjzcie_" + index_str, spot.saturjzcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->huejzcie, "Locallab", "Huejzcie_" + index_str, spot.huejzcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->softjzcie, "Locallab", "Softjzcie_" + index_str, spot.softjzcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->strsoftjzcie, "Locallab", "strSoftjzcie_" + index_str, spot.strsoftjzcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->thrhjzcie, "Locallab", "Thrhjzcie_" + index_str, spot.thrhjzcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->CHcurvejz, "Locallab", "JzCurve_" + index_str, spot.jzcurve, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->CHcurvejz, "Locallab", "CzCurve_" + index_str, spot.czcurve, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->CHcurvejz, "Locallab", "CzJzCurve_" + index_str, spot.czjzcurve, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->HHcurvejz, "Locallab", "HHCurvejz_" + index_str, spot.HHcurvejz, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->CHcurvejz, "Locallab", "CHCurvejz_" + index_str, spot.CHcurvejz, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->CHcurvejz, "Locallab", "LHCurvejz_" + index_str, spot.LHcurvejz, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->lightlcie, "Locallab", "Lightlcie_" + index_str, spot.lightlcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->lightjzcie, "Locallab", "Lightjzcie_" + index_str, spot.lightjzcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->lightqcie, "Locallab", "Brightqcie_" + index_str, spot.lightqcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->contlcie, "Locallab", "Contlcie_" + index_str, spot.contlcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->contjzcie, "Locallab", "Contjzcie_" + index_str, spot.contjzcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->adapjzcie, "Locallab", "Adapjzcie_" + index_str, spot.adapjzcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->jz100, "Locallab", "Jz100_" + index_str, spot.jz100, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->pqremap, "Locallab", "PQremap_" + index_str, spot.pqremap, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->pqremapcam16, "Locallab", "PQremapcam16_" + index_str, spot.pqremapcam16, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->hljzcie, "Locallab", "Hljzcie_" + index_str, spot.hljzcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->hlthjzcie, "Locallab", "Hlthjzcie_" + index_str, spot.hlthjzcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->shjzcie, "Locallab", "Shjzcie_" + index_str, spot.shjzcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->shthjzcie, "Locallab", "Shthjzcie_" + index_str, spot.shthjzcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->radjzcie, "Locallab", "Radjzcie_" + index_str, spot.radjzcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->sigmalcjz, "Locallab", "Sigmalcjz_" + index_str, spot.sigmalcjz, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->clarilresjz, "Locallab", "Clarilresjz_" + index_str, spot.clarilresjz, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->claricresjz, "Locallab", "Claricresjz_" + index_str, spot.claricresjz, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->clarisoftjz, "Locallab", "Clarisoftjz_" + index_str, spot.clarisoftjz, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->locwavcurvejz, "Locallab", "LocwavCurvejz_" + index_str, spot.locwavcurvejz, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->csthresholdjz, "Locallab", "CSThresholdjz_" + index_str, spot.csthresholdjz.toVector(), keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->contthrescie, "Locallab", "Contthrescie_" + index_str, spot.contthrescie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->blackEvjz, "Locallab", "BlackEvjz_" + index_str, spot.blackEvjz, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->whiteEvjz, "Locallab", "WhiteEvjz_" + index_str, spot.whiteEvjz, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->targetjz, "Locallab", "Targetjz_" + index_str, spot.targetjz, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->sigmoidldacie, "Locallab", "Sigmoidldacie_" + index_str, spot.sigmoidldacie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->sigmoidthcie, "Locallab", "Sigmoidthcie_" + index_str, spot.sigmoidthcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->sigmoidblcie, "Locallab", "Sigmoidblcie_" + index_str, spot.sigmoidblcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->sigmoidldajzcie, "Locallab", "Sigmoidldajzcie_" + index_str, spot.sigmoidldajzcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->sigmoidthjzcie, "Locallab", "Sigmoidthjzcie_" + index_str, spot.sigmoidthjzcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->sigmoidbljzcie, "Locallab", "Sigmoidbljzcie_" + index_str, spot.sigmoidbljzcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->contqcie, "Locallab", "Contqcie_" + index_str, spot.contqcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->colorflcie, "Locallab", "Colorflcie_" + index_str, spot.colorflcie, keyFile);
|
||||
/*
|
||||
saveToKeyfile(!pedited || spot_edited->lightlzcam, "Locallab", "Lightlzcam_" + index_str, spot.lightlzcam, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->lightqzcam, "Locallab", "Lightqzcam_" + index_str, spot.lightqzcam, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->contlzcam, "Locallab", "Contlzcam_" + index_str, spot.contlzcam, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->contqzcam, "Locallab", "Contqzcam_" + index_str, spot.contqzcam, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->contthreszcam, "Locallab", "Contthreszcam_" + index_str, spot.contthreszcam, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->colorflzcam, "Locallab", "Colorflzcam_" + index_str, spot.colorflzcam, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->saturzcam, "Locallab", "Saturzcam_" + index_str, spot.saturzcam, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->chromzcam, "Locallab", "Chromzcam_" + index_str, spot.chromzcam, keyFile);
|
||||
*/
|
||||
saveToKeyfile(!pedited || spot_edited->targabscie, "Locallab", "Targabscie_" + index_str, spot.targabscie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->targetGraycie, "Locallab", "TargetGraycie_" + index_str, spot.targetGraycie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->catadcie, "Locallab", "Catadcie_" + index_str, spot.catadcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->detailcie, "Locallab", "Detailcie_" + index_str, spot.detailcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->surroundcie, "Locallab", "Surroundcie_" + index_str, spot.surroundcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->enacieMask, "Locallab", "EnacieMask_" + index_str, spot.enacieMask, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->CCmaskciecurve, "Locallab", "CCmaskcieCurve_" + index_str, spot.CCmaskciecurve, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->LLmaskciecurve, "Locallab", "LLmaskcieCurve_" + index_str, spot.LLmaskciecurve, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->HHmaskciecurve, "Locallab", "HHmaskcieCurve_" + index_str, spot.HHmaskciecurve, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->blendmaskcie, "Locallab", "Blendmaskcie_" + index_str, spot.blendmaskcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->radmaskcie, "Locallab", "Radmaskcie_" + index_str, spot.radmaskcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->chromaskcie, "Locallab", "Chromaskcie_" + index_str, spot.chromaskcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->lapmaskcie, "Locallab", "Lapmaskcie_" + index_str, spot.lapmaskcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->gammaskcie, "Locallab", "Gammaskcie_" + index_str, spot.gammaskcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->slomaskcie, "Locallab", "Slomaskcie_" + index_str, spot.slomaskcie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->Lmaskciecurve, "Locallab", "LmaskcieCurve_" + index_str, spot.Lmaskciecurve, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->recothrescie, "Locallab", "Recothrescie_" + index_str, spot.recothrescie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->lowthrescie, "Locallab", "Lowthrescie_" + index_str, spot.lowthrescie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->higthrescie, "Locallab", "Higthrescie_" + index_str, spot.higthrescie, keyFile);
|
||||
saveToKeyfile(!pedited || spot_edited->decaycie, "Locallab", "Decaycie_" + index_str, spot.decaycie, keyFile);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -7938,6 +8443,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
||||
assignFromKeyfile(keyFile, "Locallab", "Shortc_" + index_str, pedited, spot.shortc, spotEdited.shortc);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Savrest_" + index_str, pedited, spot.savrest, spotEdited.savrest);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Scopemask_" + index_str, pedited, spot.scopemask, spotEdited.scopemask);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Denoichmask_" + index_str, pedited, spot.denoichmask, spotEdited.denoichmask);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Lumask_" + index_str, pedited, spot.lumask, spotEdited.lumask);
|
||||
// Color & Light
|
||||
spot.visicolor = assignFromKeyfile(keyFile, "Locallab", "Expcolor_" + index_str, pedited, spot.expcolor, spotEdited.expcolor);
|
||||
@ -7950,6 +8456,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
||||
assignFromKeyfile(keyFile, "Locallab", "Curvactiv_" + index_str, pedited, spot.curvactiv, spotEdited.curvactiv);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Lightness_" + index_str, pedited, spot.lightness, spotEdited.lightness);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Reparcol_" + index_str, pedited, spot.reparcol, spotEdited.reparcol);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Gamc_" + index_str, pedited, spot.gamc, spotEdited.gamc);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Contrast_" + index_str, pedited, spot.contrast, spotEdited.contrast);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Chroma_" + index_str, pedited, spot.chroma, spotEdited.chroma);
|
||||
assignFromKeyfile(keyFile, "Locallab", "labgridALow_" + index_str, pedited, spot.labgridALow, spotEdited.labgridALow);
|
||||
@ -8040,6 +8547,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
||||
assignFromKeyfile(keyFile, "Locallab", "Sensiex_" + index_str, pedited, spot.sensiex, spotEdited.sensiex);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Structexp_" + index_str, pedited, spot.structexp, spotEdited.structexp);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Blurexpde_" + index_str, pedited, spot.blurexpde, spotEdited.blurexpde);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Gamex_" + index_str, pedited, spot.gamex, spotEdited.gamex);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Strexp_" + index_str, pedited, spot.strexp, spotEdited.strexp);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Angexp_" + index_str, pedited, spot.angexp, spotEdited.angexp);
|
||||
assignFromKeyfile(keyFile, "Locallab", "ExCurve_" + index_str, pedited, spot.excurve, spotEdited.excurve);
|
||||
@ -8131,6 +8639,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
||||
assignFromKeyfile(keyFile, "Locallab", "Complexvibrance_" + index_str, pedited, spot.complexvibrance, spotEdited.complexvibrance);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Saturated_" + index_str, pedited, spot.saturated, spotEdited.saturated);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Pastels_" + index_str, pedited, spot.pastels, spotEdited.pastels);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Vibgam_" + index_str, pedited, spot.vibgam, spotEdited.vibgam);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Warm_" + index_str, pedited, spot.warm, spotEdited.warm);
|
||||
|
||||
if (keyFile.has_key("Locallab", "PSThreshold_" + index_str)) {
|
||||
@ -8225,6 +8734,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
||||
assignFromKeyfile(keyFile, "Locallab", "noiselumc_" + index_str, pedited, spot.noiselumc, spotEdited.noiselumc);
|
||||
assignFromKeyfile(keyFile, "Locallab", "noiselumdetail_" + index_str, pedited, spot.noiselumdetail, spotEdited.noiselumdetail);
|
||||
assignFromKeyfile(keyFile, "Locallab", "noiselequal_" + index_str, pedited, spot.noiselequal, spotEdited.noiselequal);
|
||||
assignFromKeyfile(keyFile, "Locallab", "noisegam_" + index_str, pedited, spot.noisegam, spotEdited.noisegam);
|
||||
assignFromKeyfile(keyFile, "Locallab", "noisechrof_" + index_str, pedited, spot.noisechrof, spotEdited.noisechrof);
|
||||
assignFromKeyfile(keyFile, "Locallab", "noisechroc_" + index_str, pedited, spot.noisechroc, spotEdited.noisechroc);
|
||||
assignFromKeyfile(keyFile, "Locallab", "noisechrodetail_" + index_str, pedited, spot.noisechrodetail, spotEdited.noisechrodetail);
|
||||
@ -8364,6 +8874,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
||||
assignFromKeyfile(keyFile, "Locallab", "Shardamping_" + index_str, pedited, spot.shardamping, spotEdited.shardamping);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Shariter_" + index_str, pedited, spot.shariter, spotEdited.shariter);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Sharblur_" + index_str, pedited, spot.sharblur, spotEdited.sharblur);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Shargam_" + index_str, pedited, spot.shargam, spotEdited.shargam);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Sensisha_" + index_str, pedited, spot.sensisha, spotEdited.sensisha);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Inverssha_" + index_str, pedited, spot.inverssha, spotEdited.inverssha);
|
||||
// Local Contrast
|
||||
@ -8384,7 +8895,10 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
||||
assignFromKeyfile(keyFile, "Locallab", "Residsha_" + index_str, pedited, spot.residsha, spotEdited.residsha);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Residshathr_" + index_str, pedited, spot.residshathr, spotEdited.residshathr);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Residhi_" + index_str, pedited, spot.residhi, spotEdited.residhi);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Gamlc_" + index_str, pedited, spot.gamlc, spotEdited.gamlc);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Residhithr_" + index_str, pedited, spot.residhithr, spotEdited.residhithr);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Residgam_" + index_str, pedited, spot.residgam, spotEdited.residgam);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Residslop_" + index_str, pedited, spot.residslop, spotEdited.residslop);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Residblur_" + index_str, pedited, spot.residblur, spotEdited.residblur);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Levelblur_" + index_str, pedited, spot.levelblur, spotEdited.levelblur);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Sigmabl_" + index_str, pedited, spot.sigmabl, spotEdited.sigmabl);
|
||||
@ -8584,6 +9098,122 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
||||
spotEdited.visimask = true;
|
||||
}
|
||||
|
||||
// ciecam
|
||||
spot.visicie = assignFromKeyfile(keyFile, "Locallab", "Expcie_" + index_str, pedited, spot.expcie, spotEdited.expcie);
|
||||
|
||||
if (spot.visicie) {
|
||||
spotEdited.visicie = true;
|
||||
}
|
||||
assignFromKeyfile(keyFile, "Locallab", "Complexcie_" + index_str, pedited, spot.complexcie, spotEdited.complexcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Reparcie_" + index_str, pedited, spot.reparcie, spotEdited.reparcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Sensicie_" + index_str, pedited, spot.sensicie, spotEdited.sensicie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "AutoGraycie_" + index_str, pedited, spot.Autograycie, spotEdited.Autograycie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Forcejz_" + index_str, pedited, spot.forcejz, spotEdited.forcejz);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Forcebw_" + index_str, pedited, spot.forcebw, spotEdited.forcebw);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Qtoj_" + index_str, pedited, spot.qtoj, spotEdited.qtoj);
|
||||
assignFromKeyfile(keyFile, "Locallab", "jabcie_" + index_str, pedited, spot.jabcie, spotEdited.jabcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "sigmoidqjcie_" + index_str, pedited, spot.sigmoidqjcie, spotEdited.sigmoidqjcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Logjz_" + index_str, pedited, spot.logjz, spotEdited.logjz);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Sigjz_" + index_str, pedited, spot.sigjz, spotEdited.sigjz);
|
||||
assignFromKeyfile(keyFile, "Locallab", "chjzcie_" + index_str, pedited, spot.chjzcie, spotEdited.chjzcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "SourceGraycie_" + index_str, pedited, spot.sourceGraycie, spotEdited.sourceGraycie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Sourceabscie_" + index_str, pedited, spot.sourceabscie, spotEdited.sourceabscie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Sursourcie_" + index_str, pedited, spot.sursourcie, spotEdited.sursourcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Modecie_" + index_str, pedited, spot.modecie, spotEdited.modecie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Modecam_" + index_str, pedited, spot.modecam, spotEdited.modecam);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Saturlcie_" + index_str, pedited, spot.saturlcie, spotEdited.saturlcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Rstprotectcie_" + index_str, pedited, spot.rstprotectcie, spotEdited.rstprotectcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Chromlcie_" + index_str, pedited, spot.chromlcie, spotEdited.chromlcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Huecie_" + index_str, pedited, spot.huecie, spotEdited.huecie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "ToneMethodcie_" + index_str, pedited, spot.toneMethodcie, spotEdited.toneMethodcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Ciecurve_" + index_str, pedited, spot.ciecurve, spotEdited.ciecurve);
|
||||
assignFromKeyfile(keyFile, "Locallab", "ToneMethodcie2_" + index_str, pedited, spot.toneMethodcie2, spotEdited.toneMethodcie2);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Ciecurve2_" + index_str, pedited, spot.ciecurve2, spotEdited.ciecurve2);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Chromjzcie_" + index_str, pedited, spot.chromjzcie, spotEdited.chromjzcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Saturjzcie_" + index_str, pedited, spot.saturjzcie, spotEdited.saturjzcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Huejzcie_" + index_str, pedited, spot.huejzcie, spotEdited.huejzcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Softjzcie_" + index_str, pedited, spot.softjzcie, spotEdited.softjzcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "strSoftjzcie_" + index_str, pedited, spot.strsoftjzcie, spotEdited.strsoftjzcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Thrhjzcie_" + index_str, pedited, spot.thrhjzcie, spotEdited.thrhjzcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "JzCurve_" + index_str, pedited, spot.jzcurve, spotEdited.jzcurve);
|
||||
assignFromKeyfile(keyFile, "Locallab", "CzCurve_" + index_str, pedited, spot.czcurve, spotEdited.czcurve);
|
||||
assignFromKeyfile(keyFile, "Locallab", "CzJzCurve_" + index_str, pedited, spot.czjzcurve, spotEdited.czjzcurve);
|
||||
assignFromKeyfile(keyFile, "Locallab", "HHCurvejz_" + index_str, pedited, spot.HHcurvejz, spotEdited.HHcurvejz);
|
||||
assignFromKeyfile(keyFile, "Locallab", "CHCurvejz_" + index_str, pedited, spot.CHcurvejz, spotEdited.CHcurvejz);
|
||||
assignFromKeyfile(keyFile, "Locallab", "LHCurvejz_" + index_str, pedited, spot.LHcurvejz, spotEdited.LHcurvejz);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Lightlcie_" + index_str, pedited, spot.lightlcie, spotEdited.lightlcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Lightjzcie_" + index_str, pedited, spot.lightjzcie, spotEdited.lightjzcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Brightqcie_" + index_str, pedited, spot.lightqcie, spotEdited.lightqcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Contlcie_" + index_str, pedited, spot.contlcie, spotEdited.contlcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Contjzcie_" + index_str, pedited, spot.contjzcie, spotEdited.contjzcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Adapjzcie_" + index_str, pedited, spot.adapjzcie, spotEdited.adapjzcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Jz100_" + index_str, pedited, spot.jz100, spotEdited.jz100);
|
||||
assignFromKeyfile(keyFile, "Locallab", "PQremap_" + index_str, pedited, spot.pqremap, spotEdited.pqremap);
|
||||
assignFromKeyfile(keyFile, "Locallab", "PQremapcam16_" + index_str, pedited, spot.pqremapcam16, spotEdited.pqremapcam16);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Hljzcie_" + index_str, pedited, spot.hljzcie, spotEdited.hljzcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Hlthjzcie_" + index_str, pedited, spot.hlthjzcie, spotEdited.hlthjzcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Shjzcie_" + index_str, pedited, spot.shjzcie, spotEdited.shjzcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Shthjzcie_" + index_str, pedited, spot.shthjzcie, spotEdited.shthjzcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Radjzcie_" + index_str, pedited, spot.radjzcie, spotEdited.radjzcie);
|
||||
if (keyFile.has_key("Locallab", "CSThresholdjz_" + index_str)) {
|
||||
|
||||
const std::vector<int> thresh = keyFile.get_integer_list("Locallab", "CSThresholdjz_" + index_str);
|
||||
|
||||
if (thresh.size() >= 4) {
|
||||
spot.csthresholdjz.setValues(thresh[0], thresh[1], min(thresh[2], 10), min(thresh[3], 10));
|
||||
}
|
||||
|
||||
spotEdited.csthresholdjz = true;
|
||||
}
|
||||
assignFromKeyfile(keyFile, "Locallab", "Sigmalcjz_" + index_str, pedited, spot.sigmalcjz, spotEdited.sigmalcjz);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Clarilresjz_" + index_str, pedited, spot.clarilresjz, spotEdited.clarilresjz);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Claricresjz_" + index_str, pedited, spot.claricresjz, spotEdited.claricresjz);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Clarisoftjz_" + index_str, pedited, spot.clarisoftjz, spotEdited.clarisoftjz);
|
||||
assignFromKeyfile(keyFile, "Locallab", "LocwavCurvejz_" + index_str, pedited, spot.locwavcurvejz, spotEdited.locwavcurvejz);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Contthrescie_" + index_str, pedited, spot.contthrescie, spotEdited.contthrescie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Contthrescie_" + index_str, pedited, spot.contthrescie, spotEdited.contthrescie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "BlackEvjz_" + index_str, pedited, spot.blackEvjz, spotEdited.blackEvjz);
|
||||
assignFromKeyfile(keyFile, "Locallab", "WhiteEvjz_" + index_str, pedited, spot.whiteEvjz, spotEdited.whiteEvjz);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Targetjz_" + index_str, pedited, spot.targetjz, spotEdited.targetjz);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Sigmoidthcie_" + index_str, pedited, spot.sigmoidthcie, spotEdited.sigmoidthcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Sigmoidblcie_" + index_str, pedited, spot.sigmoidblcie, spotEdited.sigmoidblcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Sigmoidldajzcie_" + index_str, pedited, spot.sigmoidldajzcie, spotEdited.sigmoidldajzcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Sigmoidthjzcie_" + index_str, pedited, spot.sigmoidthjzcie, spotEdited.sigmoidthjzcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Sigmoidbljzcie_" + index_str, pedited, spot.sigmoidbljzcie, spotEdited.sigmoidbljzcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Contqcie_" + index_str, pedited, spot.contqcie, spotEdited.contqcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Colorflcie_" + index_str, pedited, spot.colorflcie, spotEdited.colorflcie);
|
||||
/*
|
||||
assignFromKeyfile(keyFile, "Locallab", "Lightlzcam_" + index_str, pedited, spot.lightlzcam, spotEdited.lightlzcam);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Lightqzcam_" + index_str, pedited, spot.lightqzcam, spotEdited.lightqzcam);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Contlzcam_" + index_str, pedited, spot.contlzcam, spotEdited.contlzcam);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Contqzcam_" + index_str, pedited, spot.contqzcam, spotEdited.contqzcam);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Contthreszcam_" + index_str, pedited, spot.contthreszcam, spotEdited.contthreszcam);
|
||||
*/
|
||||
assignFromKeyfile(keyFile, "Locallab", "Targabscie_" + index_str, pedited, spot.targabscie, spotEdited.targabscie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "TargetGraycie_" + index_str, pedited, spot.targetGraycie, spotEdited.targetGraycie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Catadcie_" + index_str, pedited, spot.catadcie, spotEdited.catadcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Detailcie_" + index_str, pedited, spot.detailcie, spotEdited.detailcie);
|
||||
/*
|
||||
assignFromKeyfile(keyFile, "Locallab", "Colorflzcam_" + index_str, pedited, spot.colorflzcam, spotEdited.colorflzcam);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Saturzcam_" + index_str, pedited, spot.saturzcam, spotEdited.saturzcam);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Chromzcam_" + index_str, pedited, spot.chromzcam, spotEdited.chromzcam);
|
||||
*/
|
||||
assignFromKeyfile(keyFile, "Locallab", "EnacieMask_" + index_str, pedited, spot.enacieMask, spotEdited.enacieMask);
|
||||
assignFromKeyfile(keyFile, "Locallab", "CCmaskcieCurve_" + index_str, pedited, spot.CCmaskciecurve, spotEdited.CCmaskciecurve);
|
||||
assignFromKeyfile(keyFile, "Locallab", "LLmaskcieCurve_" + index_str, pedited, spot.LLmaskciecurve, spotEdited.LLmaskciecurve);
|
||||
assignFromKeyfile(keyFile, "Locallab", "HHmaskcieCurve_" + index_str, pedited, spot.HHmaskciecurve, spotEdited.HHmaskciecurve);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Blendmaskcie_" + index_str, pedited, spot.blendmaskcie, spotEdited.blendmaskcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Radmaskcie_" + index_str, pedited, spot.radmaskcie, spotEdited.radmaskcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Chromaskcie_" + index_str, pedited, spot.chromaskcie, spotEdited.chromaskcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Lapmaskcie_" + index_str, pedited, spot.lapmaskcie, spotEdited.lapmaskcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Gammaskcie_" + index_str, pedited, spot.gammaskcie, spotEdited.gammaskcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Slomaskcie_" + index_str, pedited, spot.slomaskcie, spotEdited.slomaskcie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "LmaskcieCurve_" + index_str, pedited, spot.Lmaskciecurve, spotEdited.Lmaskciecurve);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Recothrescie_" + index_str, pedited, spot.recothrescie, spotEdited.recothrescie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Lowthrescie_" + index_str, pedited, spot.lowthrescie, spotEdited.lowthrescie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Higthrescie_" + index_str, pedited, spot.higthrescie, spotEdited.higthrescie);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Decaycie_" + index_str, pedited, spot.decaycie, spotEdited.decaycie);
|
||||
|
||||
// Append LocallabSpot and LocallabParamsEdited
|
||||
locallab.spots.push_back(spot);
|
||||
|
||||
|
@ -1037,6 +1037,7 @@ struct LocallabParams {
|
||||
bool shortc;
|
||||
bool savrest;
|
||||
int scopemask;
|
||||
double denoichmask;
|
||||
int lumask;
|
||||
// Color & Light
|
||||
bool visicolor;
|
||||
@ -1045,6 +1046,7 @@ struct LocallabParams {
|
||||
bool curvactiv;
|
||||
int lightness;
|
||||
double reparcol;
|
||||
double gamc;
|
||||
int contrast;
|
||||
int chroma;
|
||||
double labgridALow;
|
||||
@ -1121,6 +1123,7 @@ struct LocallabParams {
|
||||
int sensiex;
|
||||
int structexp;
|
||||
int blurexpde;
|
||||
double gamex;
|
||||
double strexp;
|
||||
double angexp;
|
||||
std::vector<double> excurve;
|
||||
@ -1199,6 +1202,7 @@ struct LocallabParams {
|
||||
int complexvibrance;
|
||||
int saturated;
|
||||
int pastels;
|
||||
double vibgam;
|
||||
int warm;
|
||||
Threshold<int> psthreshold;
|
||||
bool protectskins;
|
||||
@ -1275,6 +1279,7 @@ struct LocallabParams {
|
||||
double noiselumc;
|
||||
double noiselumdetail;
|
||||
int noiselequal;
|
||||
double noisegam;
|
||||
double noisechrof;
|
||||
double noisechroc;
|
||||
double noisechrodetail;
|
||||
@ -1393,6 +1398,7 @@ struct LocallabParams {
|
||||
int shardamping;
|
||||
int shariter;
|
||||
double sharblur;
|
||||
double shargam;
|
||||
int sensisha;
|
||||
bool inverssha;
|
||||
// Local Contrast
|
||||
@ -1410,6 +1416,9 @@ struct LocallabParams {
|
||||
double residshathr;
|
||||
double residhi;
|
||||
double residhithr;
|
||||
double gamlc;
|
||||
double residgam;
|
||||
double residslop;
|
||||
double residblur;
|
||||
double levelblur;
|
||||
double sigmabl;
|
||||
@ -1573,6 +1582,108 @@ struct LocallabParams {
|
||||
std::vector<double> Lmask_curve;
|
||||
std::vector<double> LLmask_curvewav;
|
||||
Threshold<int> csthresholdmask;
|
||||
//ciecam
|
||||
bool visicie;
|
||||
bool expcie;
|
||||
int complexcie;
|
||||
double reparcie;
|
||||
int sensicie;
|
||||
bool Autograycie;
|
||||
bool forcejz;
|
||||
bool forcebw;
|
||||
bool qtoj;
|
||||
bool jabcie;
|
||||
bool sigmoidqjcie;
|
||||
bool logjz;
|
||||
bool sigjz;
|
||||
bool chjzcie;
|
||||
double sourceGraycie;
|
||||
double sourceabscie;
|
||||
Glib::ustring sursourcie;
|
||||
Glib::ustring modecie;
|
||||
Glib::ustring modecam;
|
||||
double saturlcie;
|
||||
double rstprotectcie;
|
||||
double chromlcie;
|
||||
double huecie;
|
||||
Glib::ustring toneMethodcie;
|
||||
std::vector<double> ciecurve;
|
||||
Glib::ustring toneMethodcie2;
|
||||
std::vector<double> ciecurve2;
|
||||
double chromjzcie;
|
||||
double saturjzcie;
|
||||
double huejzcie;
|
||||
double softjzcie;
|
||||
double strsoftjzcie;
|
||||
double thrhjzcie;
|
||||
std::vector<double> jzcurve;
|
||||
std::vector<double> czcurve;
|
||||
std::vector<double> czjzcurve;
|
||||
std::vector<double> HHcurvejz;
|
||||
std::vector<double> CHcurvejz;
|
||||
std::vector<double> LHcurvejz;
|
||||
double lightlcie;
|
||||
double lightjzcie;
|
||||
double lightqcie;
|
||||
double contlcie;
|
||||
double contjzcie;
|
||||
double adapjzcie;
|
||||
double jz100;
|
||||
double pqremap;
|
||||
double pqremapcam16;
|
||||
double hljzcie;
|
||||
double hlthjzcie;
|
||||
double shjzcie;
|
||||
double shthjzcie;
|
||||
double radjzcie;
|
||||
double sigmalcjz;
|
||||
double clarilresjz;
|
||||
double claricresjz;
|
||||
double clarisoftjz;
|
||||
std::vector<double> locwavcurvejz;
|
||||
Threshold<int> csthresholdjz;
|
||||
double contthrescie;
|
||||
double blackEvjz;
|
||||
double whiteEvjz;
|
||||
double targetjz;
|
||||
double sigmoidldacie;
|
||||
double sigmoidthcie;
|
||||
double sigmoidblcie;
|
||||
double sigmoidldajzcie;
|
||||
double sigmoidthjzcie;
|
||||
double sigmoidbljzcie;
|
||||
double contqcie;
|
||||
double colorflcie;
|
||||
/*
|
||||
double lightlzcam;
|
||||
double lightqzcam;
|
||||
double contlzcam;
|
||||
double contqzcam;
|
||||
double contthreszcam;
|
||||
double colorflzcam;
|
||||
double saturzcam;
|
||||
double chromzcam;
|
||||
*/
|
||||
double targabscie;
|
||||
double targetGraycie;
|
||||
double catadcie;
|
||||
double detailcie;
|
||||
Glib::ustring surroundcie;
|
||||
bool enacieMask;
|
||||
std::vector<double> CCmaskciecurve;
|
||||
std::vector<double> LLmaskciecurve;
|
||||
std::vector<double> HHmaskciecurve;
|
||||
int blendmaskcie;
|
||||
double radmaskcie;
|
||||
double chromaskcie;
|
||||
double lapmaskcie;
|
||||
double gammaskcie;
|
||||
double slomaskcie;
|
||||
std::vector<double> Lmaskciecurve;
|
||||
double recothrescie;
|
||||
double lowthrescie;
|
||||
double higthrescie;
|
||||
double decaycie;
|
||||
|
||||
LocallabSpot();
|
||||
|
||||
|
@ -524,7 +524,7 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
||||
DEMOSAIC, // EvPdShrEnabled
|
||||
CAPTURESHARPEN, // EvPdShrMaskToggled
|
||||
AUTOEXP, // EvLocallabSpotDeleted
|
||||
M_VOID, // EvLocallabSpotSelected
|
||||
HDR, // EvLocallabSpotSelected
|
||||
M_VOID, // EvLocallabSpotName
|
||||
M_VOID, // EvLocallabSpotVisibility
|
||||
AUTOEXP, // EvLocallabSpotShape
|
||||
@ -1077,8 +1077,114 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
||||
AUTOEXP, // Evlocallabreparsh
|
||||
AUTOEXP, // Evlocallabreparexp
|
||||
AUTOEXP, // Evlocallabrepartm
|
||||
AUTOEXP // Evlocallabchroml
|
||||
|
||||
AUTOEXP, // Evlocallabchroml
|
||||
AUTOEXP, // Evlocallabresidgam
|
||||
AUTOEXP, // Evlocallabresidslop
|
||||
AUTOEXP, // Evlocallabnoisegam
|
||||
AUTOEXP, //Evlocallabgamlc
|
||||
AUTOEXP, //Evlocallabgamc
|
||||
AUTOEXP, //Evlocallabgamex
|
||||
AUTOEXP | M_AUTOEXP, // EvLocenacie
|
||||
AUTOEXP, //Evlocallabreparcie
|
||||
HDR, //EvlocallabAutograycie
|
||||
HDR, //EvlocallabsourceGraycie
|
||||
HDR, //Evlocallabsourceabscie
|
||||
AUTOEXP, //Evlocallabsursourcie
|
||||
AUTOEXP, //Evlocallabsaturlcie
|
||||
AUTOEXP, //Evlocallabchromlcie
|
||||
AUTOEXP, //Evlocallablightlcie
|
||||
AUTOEXP, //Evlocallablightqcie
|
||||
AUTOEXP, //Evlocallabcontlcie
|
||||
AUTOEXP, //Evlocallabcontthrescie
|
||||
AUTOEXP, //Evlocallabcontqcie
|
||||
AUTOEXP, //Evlocallabcolorflcie
|
||||
AUTOEXP, //Evlocallabtargabscie
|
||||
AUTOEXP, //EvlocallabtargetGraycie
|
||||
AUTOEXP, //Evlocallabcatadcie
|
||||
AUTOEXP, //Evlocallabdetailcie
|
||||
AUTOEXP, //Evlocallabsurroundcie
|
||||
AUTOEXP, //Evlocallabsensicie
|
||||
AUTOEXP, //Evlocallabmodecie
|
||||
AUTOEXP, //Evlocallabrstprotectcie
|
||||
AUTOEXP, //Evlocallabsigmoidldacie
|
||||
AUTOEXP, //Evlocallabsigmoidthcie
|
||||
AUTOEXP, //Evlocallabsigmoidblcie
|
||||
AUTOEXP, //Evlocallabsigmoidqjcie
|
||||
AUTOEXP, //Evlocallabhuecie
|
||||
AUTOEXP, //Evlocallabjabcie
|
||||
AUTOEXP, //Evlocallablightjzcie
|
||||
AUTOEXP, //Evlocallabcontjzcie
|
||||
AUTOEXP, //Evlocallabchromjzcie
|
||||
AUTOEXP, //Evlocallabhuejzcie
|
||||
AUTOEXP, //Evlocallabsigmoidldajzcie
|
||||
AUTOEXP, //Evlocallabsigmoidthjzcie
|
||||
AUTOEXP, //Evlocallabsigmoidbljzcie
|
||||
AUTOEXP, //Evlocallabadapjzcie
|
||||
AUTOEXP, //Evlocallabmodecam
|
||||
AUTOEXP, //Evlocallabhljzcie
|
||||
AUTOEXP, //Evlocallabhlthjzcie
|
||||
AUTOEXP, //Evlocallabshjzcie
|
||||
AUTOEXP, //Evlocallabshthjzcie
|
||||
AUTOEXP, //Evlocallabradjzcie
|
||||
// AUTOEXP, //EvlocallabHHshapejz
|
||||
AUTOEXP, //EvlocallabCHshapejz
|
||||
AUTOEXP, //Evlocallabjz100
|
||||
AUTOEXP, //Evlocallabpqremap
|
||||
AUTOEXP, //EvlocallabLHshapejz
|
||||
AUTOEXP, //Evlocallabshargam
|
||||
AUTOEXP, //Evlocallabvibgam
|
||||
AUTOEXP, //EvLocallabtoneMethodcie
|
||||
AUTOEXP, //Evlocallabshapecie
|
||||
AUTOEXP, //EvLocallabtoneMethodcie2
|
||||
AUTOEXP, //Evlocallabshapecie2
|
||||
AUTOEXP, //Evlocallabshapejz
|
||||
AUTOEXP, //Evlocallabshapecz
|
||||
AUTOEXP, //Evlocallabshapeczjz
|
||||
AUTOEXP, //Evlocallabforcejz
|
||||
// AUTOEXP, //Evlocallablightlzcam
|
||||
// AUTOEXP, //Evlocallablightqzcam
|
||||
// AUTOEXP, //Evlocallabcontlzcam
|
||||
// AUTOEXP, //Evlocallabcontqzcam
|
||||
// AUTOEXP, //Evlocallabcontthreszcam
|
||||
// AUTOEXP, //Evlocallabcolorflzcam
|
||||
// AUTOEXP, //Evlocallabsaturzcam
|
||||
// AUTOEXP, //Evlocallabchromzcam
|
||||
AUTOEXP, //Evlocallabpqremapcam16
|
||||
AUTOEXP, //EvLocallabEnacieMask
|
||||
AUTOEXP, //EvlocallabCCmaskcieshape
|
||||
AUTOEXP, //EvlocallabLLmaskcieshape
|
||||
AUTOEXP, //EvlocallabHHmaskcieshape
|
||||
AUTOEXP, //Evlocallabblendmaskcie
|
||||
AUTOEXP, //Evlocallabradmaskcie
|
||||
AUTOEXP, //Evlocallabchromaskcie
|
||||
AUTOEXP, //EvlocallabLmaskcieshape
|
||||
AUTOEXP, //Evlocallabrecothrescie
|
||||
AUTOEXP, //Evlocallablowthrescie
|
||||
AUTOEXP, //Evlocallabhigthrescie
|
||||
AUTOEXP, //Evlocallabdecaycie
|
||||
AUTOEXP, //Evlocallablapmaskcie
|
||||
AUTOEXP, //Evlocallabgammaskcie
|
||||
AUTOEXP, //Evlocallabslomaskcie
|
||||
AUTOEXP, //Evlocallabqtoj
|
||||
AUTOEXP, //Evlocallabsaturjzcie
|
||||
AUTOEXP, //EvLocallabSpotdenoichmask
|
||||
AUTOEXP, //Evlocallabsigmalcjz
|
||||
AUTOEXP, //EvlocallabcsThresholdjz
|
||||
AUTOEXP, //EvlocallabwavCurvejz
|
||||
AUTOEXP, //Evlocallabclarilresjz
|
||||
AUTOEXP, //Evlocallabclaricresjz
|
||||
AUTOEXP, //Evlocallabclarisoftjz
|
||||
AUTOEXP, //EvlocallabHHshapejz
|
||||
AUTOEXP, //Evlocallabsoftjzcie
|
||||
AUTOEXP, //Evlocallabthrhjzcie
|
||||
AUTOEXP, //Evlocallabchjzcie
|
||||
AUTOEXP, //Evlocallabstrsoftjzcie
|
||||
AUTOEXP, //EvlocallabblackEvjz
|
||||
AUTOEXP, //EvlocallabwhiteEvjz
|
||||
AUTOEXP, //Evlocallablogjz
|
||||
AUTOEXP, //Evlocallabtargetjz
|
||||
AUTOEXP, //Evlocallabforcebw
|
||||
AUTOEXP //Evlocallabsigjz
|
||||
|
||||
};
|
||||
|
||||
|
@ -424,6 +424,7 @@ public:
|
||||
double huer;
|
||||
double lumar;
|
||||
double chromar;
|
||||
float fab;
|
||||
};
|
||||
|
||||
struct locallabRetiMinMax {
|
||||
@ -438,9 +439,10 @@ public:
|
||||
};
|
||||
|
||||
virtual ~LocallabListener() = default;
|
||||
virtual void refChanged(const std::vector<locallabRef> &ref, int selspot) = 0;
|
||||
// virtual void refChanged(const std::vector<locallabRef> &ref, int selspot) = 0;
|
||||
virtual void minmaxChanged(const std::vector<locallabRetiMinMax> &minmax, int selspot) = 0;
|
||||
virtual void logencodChanged(const float blackev, const float whiteev, const float sourceg, const float sourceab, const float targetg) = 0;
|
||||
virtual void logencodChanged(const float blackev, const float whiteev, const float sourceg, const float sourceab, const float targetg, const bool autocomput, const bool autocie, const float jz1) = 0;
|
||||
virtual void refChanged2(float *huerefp, float *chromarefp, float *lumarefp, float *fabrefp, int selspot) = 0;
|
||||
};
|
||||
|
||||
class AutoColorTonListener
|
||||
@ -610,7 +612,7 @@ public:
|
||||
|
||||
virtual void updateUnLock() = 0;
|
||||
|
||||
virtual void setLocallabMaskVisibility(bool previewDeltaE, int locallColorMask, int locallColorMaskinv, int locallExpMask, int locallExpMaskinv, int locallSHMask, int locallSHMaskinv, int locallvibMask, int locallsoftMask, int locallblMask, int localltmMask, int locallretiMask, int locallsharMask, int localllcMask, int locallcbMask, int localllogMask, int locall_Mask) = 0;
|
||||
virtual void setLocallabMaskVisibility(bool previewDeltaE, int locallColorMask, int locallColorMaskinv, int locallExpMask, int locallExpMaskinv, int locallSHMask, int locallSHMaskinv, int locallvibMask, int locallsoftMask, int locallblMask, int localltmMask, int locallretiMask, int locallsharMask, int localllcMask, int locallcbMask, int localllogMask, int locall_Mask, int locallcieMask) = 0;
|
||||
|
||||
/** Creates and returns a Crop instance that acts as a window on the image
|
||||
* @param editDataProvider pointer to the EditDataProvider that communicates with the EditSubscriber
|
||||
|
@ -1489,10 +1489,11 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT
|
||||
adap = 2000.f;
|
||||
} else {
|
||||
float E_V = fcomp + log2 ((fnum * fnum) / fspeed / (fiso / 100.f));
|
||||
float expo2 = params.toneCurve.expcomp; // exposure compensation in tonecurve ==> direct EV
|
||||
double kexp = 0.;
|
||||
float expo2 = kexp * params.toneCurve.expcomp; // exposure compensation in tonecurve ==> direct EV
|
||||
E_V += expo2;
|
||||
float expo1;//exposure raw white point
|
||||
expo1 = log2 (params.raw.expos); //log2 ==>linear to EV
|
||||
expo1 = 0.5 * log2 (params.raw.expos); //log2 ==>linear to EV
|
||||
E_V += expo1;
|
||||
adap = powf (2.f, E_V - 3.f); //cd / m2
|
||||
//end calculation adaptation scene luminosity
|
||||
|
@ -65,6 +65,7 @@ public:
|
||||
bool HistogramWorking; // true: histogram is display the value of the image computed in the Working profile
|
||||
// false: histogram is display the value of the image computed in the Output profile
|
||||
int amchroma;
|
||||
int amchromajz;
|
||||
int protectred;
|
||||
double protectredh;
|
||||
double nrauto;
|
||||
|
@ -952,6 +952,9 @@ private:
|
||||
LocLHCurve loclhCurve;
|
||||
LocHHCurve lochhCurve;
|
||||
LocCHCurve locchCurve;
|
||||
LocHHCurve lochhCurvejz;
|
||||
LocCHCurve locchCurvejz;
|
||||
LocLHCurve loclhCurvejz;
|
||||
LocCCmaskCurve locccmasCurve;
|
||||
LocLLmaskCurve locllmasCurve;
|
||||
LocHHmaskCurve lochhmasCurve;
|
||||
@ -983,6 +986,9 @@ private:
|
||||
LocCCmaskCurve locccmaslogCurve;
|
||||
LocLLmaskCurve locllmaslogCurve;
|
||||
LocHHmaskCurve lochhmaslogCurve;
|
||||
LocCCmaskCurve locccmascieCurve;
|
||||
LocLLmaskCurve locllmascieCurve;
|
||||
LocHHmaskCurve lochhmascieCurve;
|
||||
|
||||
LocCCmaskCurve locccmas_Curve;
|
||||
LocLLmaskCurve locllmas_Curve;
|
||||
@ -993,6 +999,7 @@ private:
|
||||
LocwavCurve loclmasCurvecolwav;
|
||||
LocwavCurve loclmasCurve_wav;
|
||||
LocwavCurve locwavCurve;
|
||||
LocwavCurve locwavCurvejz;
|
||||
LocwavCurve loclevwavCurve;
|
||||
LocwavCurve locconwavCurve;
|
||||
LocwavCurve loccompwavCurve;
|
||||
@ -1021,6 +1028,12 @@ private:
|
||||
LUTf lmasklclocalcurve(65536, LUT_CLIP_OFF);
|
||||
LUTf lmaskloglocalcurve(65536, LUT_CLIP_OFF);
|
||||
LUTf lmasklocal_curve(65536, LUT_CLIP_OFF);
|
||||
LUTf lmaskcielocalcurve(65536, LUT_CLIP_OFF);
|
||||
LUTf cielocalcurve(65536, LUT_CLIP_OFF);
|
||||
LUTf cielocalcurve2(65536, LUT_CLIP_OFF);
|
||||
LUTf jzlocalcurve(65536, LUT_CLIP_OFF);
|
||||
LUTf czlocalcurve(65536, LUT_CLIP_OFF);
|
||||
LUTf czjzlocalcurve(65536, LUT_CLIP_OFF);
|
||||
|
||||
array2D<float> shbuffer;
|
||||
for (size_t sp = 0; sp < params.locallab.spots.size(); sp++) {
|
||||
@ -1038,6 +1051,9 @@ private:
|
||||
const bool LHutili = loclhCurve.Set(params.locallab.spots.at(sp).LHcurve);
|
||||
const bool HHutili = lochhCurve.Set(params.locallab.spots.at(sp).HHcurve);
|
||||
const bool CHutili = locchCurve.Set(params.locallab.spots.at(sp).CHcurve);
|
||||
const bool HHutilijz = lochhCurvejz.Set(params.locallab.spots.at(sp).HHcurvejz);
|
||||
const bool CHutilijz = locchCurvejz.Set(params.locallab.spots.at(sp).CHcurvejz);
|
||||
const bool LHutilijz = loclhCurvejz.Set(params.locallab.spots.at(sp).LHcurvejz);
|
||||
const bool lcmasutili = locccmasCurve.Set(params.locallab.spots.at(sp).CCmaskcurve);
|
||||
const bool llmasutili = locllmasCurve.Set(params.locallab.spots.at(sp).LLmaskcurve);
|
||||
const bool lhmasutili = lochhmasCurve.Set(params.locallab.spots.at(sp).HHmaskcurve);
|
||||
@ -1067,6 +1083,9 @@ private:
|
||||
const bool lcmaslogutili = locccmaslogCurve.Set(params.locallab.spots.at(sp).CCmaskcurveL);
|
||||
const bool llmaslogutili = locllmaslogCurve.Set(params.locallab.spots.at(sp).LLmaskcurveL);
|
||||
const bool lhmaslogutili = lochhmaslogCurve.Set(params.locallab.spots.at(sp).HHmaskcurveL);
|
||||
const bool lcmascieutili = locccmascieCurve.Set(params.locallab.spots.at(sp).CCmaskciecurve);
|
||||
const bool llmascieutili = locllmascieCurve.Set(params.locallab.spots.at(sp).LLmaskciecurve);
|
||||
const bool lhmascieutili = lochhmascieCurve.Set(params.locallab.spots.at(sp).HHmaskciecurve);
|
||||
|
||||
const bool lcmas_utili = locccmas_Curve.Set(params.locallab.spots.at(sp).CCmask_curve);
|
||||
const bool llmas_utili = locllmas_Curve.Set(params.locallab.spots.at(sp).LLmask_curve);
|
||||
@ -1078,6 +1097,7 @@ private:
|
||||
const bool llmaslcutili = locllmaslcCurve.Set(params.locallab.spots.at(sp).LLmasklccurve);
|
||||
const bool lmasutili_wav = loclmasCurve_wav.Set(params.locallab.spots.at(sp).LLmask_curvewav);
|
||||
const bool locwavutili = locwavCurve.Set(params.locallab.spots.at(sp).locwavcurve);
|
||||
const bool locwavutilijz = locwavCurvejz.Set(params.locallab.spots.at(sp).locwavcurvejz);
|
||||
const bool locwavhueutili = locwavCurvehue.Set(params.locallab.spots.at(sp).locwavcurvehue);
|
||||
const bool locwavdenutili = locwavCurveden.Set(params.locallab.spots.at(sp).locwavcurveden);
|
||||
const bool loclevwavutili = loclevwavCurve.Set(params.locallab.spots.at(sp).loclevwavcurve);
|
||||
@ -1102,6 +1122,12 @@ private:
|
||||
const bool localmasklcutili = CurveFactory::diagonalCurve2Lut(params.locallab.spots.at(sp).Lmasklccurve, lmasklclocalcurve, 1);
|
||||
const bool localmasklogutili = CurveFactory::diagonalCurve2Lut(params.locallab.spots.at(sp).LmaskcurveL, lmaskloglocalcurve, 1);
|
||||
const bool localmask_utili = CurveFactory::diagonalCurve2Lut(params.locallab.spots.at(sp).Lmask_curve, lmasklocal_curve, 1);
|
||||
const bool localmaskcieutili = CurveFactory::diagonalCurve2Lut(params.locallab.spots.at(sp).Lmaskciecurve, lmaskcielocalcurve, 1);
|
||||
const bool localcieutili = CurveFactory::diagonalCurve2Lut(params.locallab.spots.at(sp).ciecurve, cielocalcurve, 1);
|
||||
const bool localcieutili2 = CurveFactory::diagonalCurve2Lut(params.locallab.spots.at(sp).ciecurve2, cielocalcurve2, 1);
|
||||
const bool localjzutili = CurveFactory::diagonalCurve2Lut(params.locallab.spots.at(sp).jzcurve, jzlocalcurve, 1);
|
||||
const bool localczutili = CurveFactory::diagonalCurve2Lut(params.locallab.spots.at(sp).czcurve, czlocalcurve, 1);
|
||||
const bool localczjzutili = CurveFactory::diagonalCurve2Lut(params.locallab.spots.at(sp).czjzcurve, czjzlocalcurve, 1);
|
||||
|
||||
//provisory
|
||||
double ecomp = params.locallab.spots.at(sp).expcomp;
|
||||
@ -1123,6 +1149,7 @@ private:
|
||||
float stdtme;
|
||||
float meanretie;
|
||||
float stdretie;
|
||||
float fab = 1.f;
|
||||
|
||||
if (params.locallab.spots.at(sp).spotMethod == "exc") {
|
||||
ipf.calc_ref(sp, reservView.get(), reservView.get(), 0, 0, fw, fh, 1, huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, avge, locwavCurveden, locwavdenutili);
|
||||
@ -1147,6 +1174,7 @@ private:
|
||||
cllocalcurve, localclutili,
|
||||
lclocalcurve, locallcutili,
|
||||
loclhCurve, lochhCurve, locchCurve,
|
||||
lochhCurvejz, locchCurvejz,loclhCurvejz,
|
||||
lmasklocalcurve, localmaskutili,
|
||||
lmaskexplocalcurve, localmaskexputili,
|
||||
lmaskSHlocalcurve, localmaskSHutili,
|
||||
@ -1158,6 +1186,12 @@ private:
|
||||
lmasklclocalcurve, localmasklcutili,
|
||||
lmaskloglocalcurve, localmasklogutili,
|
||||
lmasklocal_curve, localmask_utili,
|
||||
lmaskcielocalcurve, localmaskcieutili,
|
||||
cielocalcurve, localcieutili,
|
||||
cielocalcurve2, localcieutili2,
|
||||
jzlocalcurve, localjzutili,
|
||||
czlocalcurve, localczutili,
|
||||
czjzlocalcurve, localczjzutili,
|
||||
|
||||
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, lochhhmasCurve, lhhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
||||
@ -1170,10 +1204,12 @@ private:
|
||||
locccmaslogCurve, lcmaslogutili, locllmaslogCurve, llmaslogutili, lochhmaslogCurve, lhmaslogutili,
|
||||
|
||||
locccmas_Curve, lcmas_utili, locllmas_Curve, llmas_utili, lochhmas_Curve, lhmas_utili,
|
||||
locccmascieCurve, lcmascieutili, locllmascieCurve, llmascieutili, lochhmascieCurve, lhmascieutili,
|
||||
lochhhmas_Curve, lhhmas_utili,
|
||||
loclmasCurveblwav,lmasutiliblwav,
|
||||
loclmasCurvecolwav,lmasutilicolwav,
|
||||
locwavCurve, locwavutili,
|
||||
locwavCurvejz, locwavutilijz,
|
||||
loclevwavCurve, loclevwavutili,
|
||||
locconwavCurve, locconwavutili,
|
||||
loccompwavCurve, loccompwavutili,
|
||||
@ -1182,10 +1218,10 @@ private:
|
||||
locwavCurveden, locwavdenutili,
|
||||
locedgwavCurve, locedgwavutili,
|
||||
loclmasCurve_wav,lmasutili_wav,
|
||||
LHutili, HHutili, CHutili, cclocalcurve, localcutili, rgblocalcurve, localrgbutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
|
||||
huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, false, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
LHutili, HHutili, CHutili, HHutilijz, CHutilijz, LHutilijz, cclocalcurve, localcutili, rgblocalcurve, localrgbutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
|
||||
huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, false, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax,
|
||||
meantme, stdtme, meanretie, stdretie
|
||||
meantme, stdtme, meanretie, stdretie, fab
|
||||
);
|
||||
|
||||
if (sp + 1u < params.locallab.spots.size()) {
|
||||
@ -1653,8 +1689,9 @@ private:
|
||||
}//if no exif data or wrong
|
||||
else {
|
||||
double E_V = fcomp + log2 ((fnum * fnum) / fspeed / (fiso / 100.f));
|
||||
E_V += params.toneCurve.expcomp;// exposure compensation in tonecurve ==> direct EV
|
||||
E_V += log2(params.raw.expos); // exposure raw white point ; log2 ==> linear to EV
|
||||
double kexp = 0.;
|
||||
E_V += kexp * params.toneCurve.expcomp;// exposure compensation in tonecurve ==> direct EV
|
||||
E_V += 0.5 * log2(params.raw.expos); // exposure raw white point ; log2 ==> linear to EV
|
||||
adap = std::pow(2.0, E_V - 3.0); //cd / m2
|
||||
}
|
||||
|
||||
|
@ -78,6 +78,7 @@ ControlSpotPanel::ControlSpotPanel():
|
||||
colorscope_(Gtk::manage(new Adjuster(M("TP_LOCALLAB_COLORSCOPE"), 0., 100.0, 1., 30.))),
|
||||
avoidrad_(Gtk::manage(new Adjuster(M("TP_LOCALLAB_AVOIDRAD"), 0., 30.0, 0.1, 0.7))),
|
||||
scopemask_(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SCOPEMASK"), 0, 100, 1, 60))),
|
||||
denoichmask_(Gtk::manage(new Adjuster(M("TP_LOCALLAB_DENOIMASK"), 0., 100., 0.5, 0))),
|
||||
lumask_(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LUMASK"), -50, 30, 1, 10, Gtk::manage(new RTImage("circle-yellow-small.png")), Gtk::manage(new RTImage("circle-gray-small.png")) ))),
|
||||
|
||||
hishow_(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_PREVSHOW")))),
|
||||
@ -330,6 +331,7 @@ ControlSpotPanel::ControlSpotPanel():
|
||||
feather_->set_tooltip_text(M("TP_LOCALLAB_FEATH_TOOLTIP"));
|
||||
transitgrad_->set_tooltip_text(M("TP_LOCALLAB_TRANSITGRAD_TOOLTIP"));
|
||||
scopemask_->set_tooltip_text(M("TP_LOCALLAB_SCOPEMASK_TOOLTIP"));
|
||||
denoichmask_->set_tooltip_text(M("TP_LOCALLAB_DENOIMASK_TOOLTIP"));
|
||||
}
|
||||
|
||||
transit_->setAdjusterListener(this);
|
||||
@ -337,6 +339,7 @@ ControlSpotPanel::ControlSpotPanel():
|
||||
transitgrad_->setAdjusterListener(this);
|
||||
feather_->setAdjusterListener(this);
|
||||
scopemask_->setAdjusterListener(this);
|
||||
denoichmask_->setAdjusterListener(this);
|
||||
transitBox->pack_start(*transit_);
|
||||
transitBox->pack_start(*transitweak_);
|
||||
transitBox->pack_start(*transitgrad_);
|
||||
@ -408,6 +411,10 @@ ControlSpotPanel::ControlSpotPanel():
|
||||
avFrame->add(*avbox);
|
||||
specCaseBox->pack_start(*avFrame);
|
||||
|
||||
if (showtooltip) {
|
||||
avoidmun_->set_tooltip_text(M("TP_LOCALLAB_AVOIDMUN_TOOLTIP"));
|
||||
}
|
||||
|
||||
blwhConn_ = blwh_->signal_toggled().connect(
|
||||
sigc::mem_fun(*this, &ControlSpotPanel::blwhChanged));
|
||||
|
||||
@ -422,7 +429,7 @@ ControlSpotPanel::ControlSpotPanel():
|
||||
|
||||
if (showtooltip) {
|
||||
recurs_->set_tooltip_text(M("TP_LOCALLAB_RECURS_TOOLTIP"));
|
||||
avoid_->set_tooltip_text(M("TP_LABCURVE_AVOIDCOLORSHIFT_TOOLTIP"));
|
||||
avoid_->set_tooltip_text(M("TP_LOCALLAB_AVOIDCOLORSHIFT_TOOLTIP"));
|
||||
}
|
||||
|
||||
specCaseBox->pack_start(*recurs_);
|
||||
@ -481,6 +488,7 @@ ControlSpotPanel::ControlSpotPanel():
|
||||
// maskBox->pack_start(*laplac_);
|
||||
maskBox->pack_start(*deltae_);
|
||||
maskBox->pack_start(*scopemask_);
|
||||
maskBox->pack_start(*denoichmask_);
|
||||
// maskBox->pack_start(*shortc_);
|
||||
maskBox->pack_start(*lumask_);
|
||||
// maskBox->pack_start(*savrest_);
|
||||
@ -854,6 +862,7 @@ void ControlSpotPanel::load_ControlSpot_param()
|
||||
laplac_->set_active(true);
|
||||
deltae_->set_active(row[spots_.deltae]);
|
||||
scopemask_->setValue((double)row[spots_.scopemask]);
|
||||
denoichmask_->setValue(row[spots_.denoichmask]);
|
||||
shortc_->set_active(row[spots_.shortc]);
|
||||
lumask_->setValue((double)row[spots_.lumask]);
|
||||
savrest_->set_active(row[spots_.savrest]);
|
||||
@ -1516,6 +1525,14 @@ void ControlSpotPanel::adjusterChanged(Adjuster* a, double newval)
|
||||
}
|
||||
}
|
||||
|
||||
if (a == denoichmask_) {
|
||||
row[spots_.denoichmask] = denoichmask_->getValue();
|
||||
|
||||
if (listener) {
|
||||
listener->panelChanged(EvLocallabSpotdenoichmask, denoichmask_->getTextValue());
|
||||
}
|
||||
}
|
||||
|
||||
if (a == lumask_) {
|
||||
row[spots_.lumask] = lumask_->getIntValue();
|
||||
|
||||
@ -1849,6 +1866,7 @@ void ControlSpotPanel::disableParamlistener(bool cond)
|
||||
laplacConn_.block(cond);
|
||||
deltaeConn_.block(cond);
|
||||
scopemask_->block(cond);
|
||||
denoichmask_->block(cond);
|
||||
shortcConn_.block(cond);
|
||||
lumask_->block(cond);
|
||||
savrestConn_.block(cond);
|
||||
@ -1895,6 +1913,7 @@ void ControlSpotPanel::setParamEditable(bool cond)
|
||||
laplac_->set_sensitive(cond);
|
||||
deltae_->set_sensitive(cond);
|
||||
scopemask_->set_sensitive(cond);
|
||||
denoichmask_->set_sensitive(cond);
|
||||
shortc_->set_sensitive(cond);
|
||||
lumask_->set_sensitive(cond);
|
||||
savrest_->set_sensitive(cond);
|
||||
@ -2569,6 +2588,7 @@ ControlSpotPanel::SpotRow* ControlSpotPanel::getSpot(const int index)
|
||||
r->transitweak = row[spots_.transitweak];
|
||||
r->transitgrad = row[spots_.transitgrad];
|
||||
r->scopemask = row[spots_.scopemask];
|
||||
r->denoichmask = row[spots_.denoichmask];
|
||||
r->lumask = row[spots_.lumask];
|
||||
r->hishow = row[spots_.hishow];
|
||||
r->activ = row[spots_.activ];
|
||||
@ -2712,6 +2732,7 @@ void ControlSpotPanel::addControlSpot(SpotRow* newSpot)
|
||||
row[spots_.laplac] = newSpot->laplac;
|
||||
row[spots_.deltae] = newSpot->deltae;
|
||||
row[spots_.scopemask] = newSpot->scopemask;
|
||||
row[spots_.denoichmask] = newSpot->denoichmask;
|
||||
row[spots_.shortc] = newSpot->shortc;
|
||||
row[spots_.lumask] = newSpot->lumask;
|
||||
row[spots_.savrest] = newSpot->savrest;
|
||||
@ -2779,6 +2800,7 @@ void ControlSpotPanel::setDefaults(const rtengine::procparams::ProcParams * defP
|
||||
colorscope_->setDefault(defSpot.colorscope);
|
||||
avoidrad_->setDefault(defSpot.avoidrad);
|
||||
scopemask_->setDefault((double)defSpot.scopemask);
|
||||
denoichmask_->setDefault((double)defSpot.denoichmask);
|
||||
lumask_->setDefault((double)defSpot.lumask);
|
||||
}
|
||||
|
||||
@ -2830,6 +2852,7 @@ ControlSpotPanel::ControlSpots::ControlSpots()
|
||||
add(laplac);
|
||||
add(deltae);
|
||||
add(scopemask);
|
||||
add(denoichmask);
|
||||
add(shortc);
|
||||
add(lumask);
|
||||
add(savrest);
|
||||
|
@ -86,6 +86,7 @@ public:
|
||||
bool laplac;
|
||||
bool deltae;
|
||||
int scopemask;
|
||||
double denoichmask;
|
||||
bool shortc;
|
||||
int lumask;
|
||||
bool savrest;
|
||||
@ -321,6 +322,7 @@ private:
|
||||
Gtk::TreeModelColumn<bool> laplac;
|
||||
Gtk::TreeModelColumn<bool> deltae;
|
||||
Gtk::TreeModelColumn<int> scopemask;
|
||||
Gtk::TreeModelColumn<int> denoichmask;
|
||||
Gtk::TreeModelColumn<bool> shortc;
|
||||
Gtk::TreeModelColumn<int> lumask;
|
||||
Gtk::TreeModelColumn<bool> savrest;
|
||||
@ -402,6 +404,7 @@ private:
|
||||
Adjuster* const colorscope_;
|
||||
Adjuster* const avoidrad_;
|
||||
Adjuster* const scopemask_;
|
||||
Adjuster* const denoichmask_;
|
||||
Adjuster* const lumask_;
|
||||
|
||||
Gtk::CheckButton* const hishow_;
|
||||
|
@ -304,7 +304,8 @@ bool FilePanel::imageLoaded( Thumbnail* thm, ProgressConnector<rtengine::Initial
|
||||
{
|
||||
#ifdef WIN32
|
||||
int winGdiHandles = GetGuiResources( GetCurrentProcess(), GR_GDIOBJECTS);
|
||||
if(winGdiHandles > 0 && winGdiHandles <= 8500) // 0 means we don't have the rights to access the function, 8500 because the limit is 10000 and we need about 1500 free handles
|
||||
if(winGdiHandles > 0 && winGdiHandles <= 6500) //(old settings 8500) 0 means we don't have the rights to access the function, 8500 because the limit is 10000 and we need about 1500 free handles
|
||||
//J.Desmis october 2021 I change 8500 to 6500..Why ? because whitout while increasing size GUI system crash in multieditor
|
||||
#endif
|
||||
{
|
||||
GThreadLock lock; // Acquiring the GUI... not sure that it's necessary, but it shouldn't harm
|
||||
|
@ -150,6 +150,7 @@ Locallab::Locallab():
|
||||
// Tool list widget
|
||||
toollist(Gtk::manage(new LocallabToolList())),
|
||||
|
||||
// expcie(Gtk::manage(new Locallabcie())),
|
||||
// Other widgets
|
||||
resetshowButton(Gtk::manage(new Gtk::Button(M("TP_LOCALLAB_RESETSHOW"))))
|
||||
{
|
||||
@ -179,6 +180,7 @@ Locallab::Locallab():
|
||||
addTool(toolpanel, &expshadhigh);
|
||||
addTool(toolpanel, &expvibrance);
|
||||
addTool(toolpanel, &explog);
|
||||
addTool(toolpanel, &expcie);
|
||||
addTool(toolpanel, &expexpose);
|
||||
addTool(toolpanel, &expmask);
|
||||
addTool(toolpanel, &expsoft);
|
||||
@ -311,6 +313,7 @@ void Locallab::read(const rtengine::procparams::ProcParams* pp, const ParamsEdit
|
||||
r->laplac = true; //pp->locallab.spots.at(i).laplac;
|
||||
r->deltae = pp->locallab.spots.at(i).deltae;
|
||||
r->scopemask = pp->locallab.spots.at(i).scopemask;
|
||||
r->denoichmask = pp->locallab.spots.at(i).denoichmask;
|
||||
r->shortc = pp->locallab.spots.at(i).shortc;
|
||||
r->lumask = pp->locallab.spots.at(i).lumask;
|
||||
r->savrest = pp->locallab.spots.at(i).savrest;
|
||||
@ -492,6 +495,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
||||
r->laplac = newSpot->laplac;
|
||||
r->deltae = newSpot->deltae;
|
||||
r->scopemask = newSpot->scopemask;
|
||||
r->denoichmask = newSpot->denoichmask;
|
||||
r->shortc = newSpot->shortc;
|
||||
r->lumask = newSpot->lumask;
|
||||
r->savrest = newSpot->savrest;
|
||||
@ -651,18 +655,19 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
||||
toollist->addToolRow(tool->getToolName(), toolNb);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
// Update locallab tools mask background
|
||||
if (pp->locallab.selspot < (int)maskBackRef.size()) {
|
||||
const double huer = maskBackRef.at(pp->locallab.selspot).huer;
|
||||
const double lumar = maskBackRef.at(pp->locallab.selspot).lumar;
|
||||
const double chromar = maskBackRef.at(pp->locallab.selspot).chromar;
|
||||
const float fab = maskBackRef.at(pp->locallab.selspot).fab;
|
||||
|
||||
for (auto tool : locallabTools) {
|
||||
tool->refChanged(huer, lumar, chromar);
|
||||
tool->refChanged(huer, lumar, chromar, fab);
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
// Update Locallab Retinex tool min/max
|
||||
if (pp->locallab.selspot < (int)retiMinMax.size()) {
|
||||
const double cdma = retiMinMax.at(pp->locallab.selspot).cdma;
|
||||
@ -801,6 +806,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
||||
r->laplac = newSpot->laplac;
|
||||
r->deltae = newSpot->deltae;
|
||||
r->scopemask = newSpot->scopemask;
|
||||
r->denoichmask = newSpot->denoichmask;
|
||||
r->shortc = newSpot->shortc;
|
||||
r->lumask = newSpot->lumask;
|
||||
r->savrest = newSpot->savrest;
|
||||
@ -956,6 +962,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
||||
pp->locallab.spots.at(pp->locallab.selspot).laplac = r->laplac;
|
||||
pp->locallab.spots.at(pp->locallab.selspot).deltae = r->deltae;
|
||||
pp->locallab.spots.at(pp->locallab.selspot).scopemask = r->scopemask;
|
||||
pp->locallab.spots.at(pp->locallab.selspot).denoichmask = r->denoichmask;
|
||||
pp->locallab.spots.at(pp->locallab.selspot).shortc = r->shortc;
|
||||
pp->locallab.spots.at(pp->locallab.selspot).lumask = r->lumask;
|
||||
pp->locallab.spots.at(pp->locallab.selspot).savrest = r->savrest;
|
||||
@ -1036,7 +1043,7 @@ void Locallab::minmaxChanged(const std::vector<locallabRetiMinMax> &minmax, int
|
||||
const double cdmin = retiMinMax.at(selspot).cdmin;
|
||||
const double mini = retiMinMax.at(selspot).mini;
|
||||
const double maxi = retiMinMax.at(selspot).maxi;
|
||||
const double Tmean = retiMinMax.at(selspot).Tmean;
|
||||
const double Tmean = retiMinMax.at(selspot).Tmean;
|
||||
const double Tsigma = retiMinMax.at(selspot).Tsigma;
|
||||
const double Tmin = retiMinMax.at(selspot).Tmin;
|
||||
const double Tmax = retiMinMax.at(selspot).Tmax;
|
||||
@ -1045,12 +1052,28 @@ void Locallab::minmaxChanged(const std::vector<locallabRetiMinMax> &minmax, int
|
||||
}
|
||||
}
|
||||
|
||||
void Locallab::logencodChanged(const float blackev, const float whiteev, const float sourceg, const float sourceab, const float targetg)
|
||||
void Locallab::logencodChanged(const float blackev, const float whiteev, const float sourceg, const float sourceab, const float targetg, const bool autocomput, const bool autocie, const float jz1)
|
||||
{
|
||||
// Update Locallab Log Encoding accordingly
|
||||
explog.updateAutocompute(blackev, whiteev, sourceg, sourceab, targetg);
|
||||
}
|
||||
// Update Locallab Log Encoding and Ciecam accordingly
|
||||
if(autocomput) {
|
||||
explog.updateAutocompute(blackev, whiteev, sourceg, sourceab, targetg, jz1);
|
||||
}
|
||||
if(autocie) {
|
||||
expcie.updateAutocompute(blackev, whiteev, sourceg, sourceab, targetg, jz1);
|
||||
}
|
||||
|
||||
}
|
||||
void Locallab::refChanged2(float *huerefp, float *chromarefp, float *lumarefp, float *fabrefp, int selspot)
|
||||
{
|
||||
const double huer = huerefp[selspot];
|
||||
const double lumar = lumarefp[selspot];
|
||||
const double chromar = chromarefp[selspot];
|
||||
const float fab = fabrefp[selspot];
|
||||
for (auto tool : locallabTools) {
|
||||
tool->refChanged(huer, lumar, chromar, fab);
|
||||
}
|
||||
}
|
||||
/*
|
||||
void Locallab::refChanged(const std::vector<locallabRef> &ref, int selspot)
|
||||
{
|
||||
// Saving transmitted mask background data
|
||||
@ -1061,13 +1084,14 @@ void Locallab::refChanged(const std::vector<locallabRef> &ref, int selspot)
|
||||
const double huer = maskBackRef.at(selspot).huer;
|
||||
const double lumar = maskBackRef.at(selspot).lumar;
|
||||
const double chromar = maskBackRef.at(selspot).chromar;
|
||||
const float fab = maskBackRef.at(selspot).fab;
|
||||
|
||||
for (auto tool : locallabTools) {
|
||||
tool->refChanged(huer, lumar, chromar);
|
||||
tool->refChanged(huer, lumar, chromar, fab);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
void Locallab::resetMaskVisibility()
|
||||
{
|
||||
// Indicate to spot control panel that no more mask preview is active
|
||||
@ -1088,20 +1112,20 @@ Locallab::llMaskVisibility Locallab::getMaskVisibility() const
|
||||
const bool prevDeltaE = expsettings->isDeltaEPrevActive();
|
||||
|
||||
// Get mask preview from Locallab tools
|
||||
int colorMask, colorMaskinv, expMask, expMaskinv, shMask, shMaskinv, vibMask, softMask, blMask, tmMask, retiMask, sharMask, lcMask, cbMask, logMask, maskMask;
|
||||
int colorMask, colorMaskinv, expMask, expMaskinv, shMask, shMaskinv, vibMask, softMask, blMask, tmMask, retiMask, sharMask, lcMask, cbMask, logMask, maskMask, cieMask;
|
||||
|
||||
for (auto tool : locallabTools) {
|
||||
tool->getMaskView(colorMask, colorMaskinv, expMask, expMaskinv, shMask, shMaskinv, vibMask, softMask, blMask, tmMask, retiMask, sharMask, lcMask, cbMask, logMask, maskMask);
|
||||
tool->getMaskView(colorMask, colorMaskinv, expMask, expMaskinv, shMask, shMaskinv, vibMask, softMask, blMask, tmMask, retiMask, sharMask, lcMask, cbMask, logMask, maskMask, cieMask);
|
||||
}
|
||||
|
||||
// Indicate to spot control panel if one mask preview is active
|
||||
const bool isMaskActive = (colorMask == 0) || (colorMaskinv == 0) || (expMask == 0) || (expMaskinv == 0) ||
|
||||
(shMask == 0) || (shMaskinv == 0) || (vibMask == 0) || (softMask == 0) ||
|
||||
(blMask == 0) || (tmMask == 0) || (retiMask == 0) || (sharMask == 0) ||
|
||||
(lcMask == 0) || (cbMask == 0) || (logMask == 0) || (maskMask == 0);
|
||||
(lcMask == 0) || (cbMask == 0) || (logMask == 0) || (maskMask == 0) || (cieMask == 0);
|
||||
expsettings->setMaskPrevActive(isMaskActive);
|
||||
|
||||
return {prevDeltaE, colorMask, colorMaskinv, expMask, expMaskinv, shMask, shMaskinv, vibMask, softMask, blMask, tmMask, retiMask, sharMask, lcMask, cbMask, logMask, maskMask};
|
||||
return {prevDeltaE, colorMask, colorMaskinv, expMask, expMaskinv, shMask, shMaskinv, vibMask, softMask, blMask, tmMask, retiMask, sharMask, lcMask, cbMask, logMask, maskMask, cieMask};
|
||||
}
|
||||
|
||||
void Locallab::resetshowPressed()
|
||||
|
@ -116,6 +116,7 @@ private:
|
||||
LocallabCBDL expcbdl;
|
||||
LocallabLog explog;
|
||||
LocallabMask expmask;
|
||||
Locallabcie expcie;
|
||||
|
||||
std::vector<LocallabTool*> locallabTools;
|
||||
|
||||
@ -143,10 +144,11 @@ public:
|
||||
void minmaxChanged(const std::vector<locallabRetiMinMax> &minmax, int selspot) override;
|
||||
|
||||
// Locallab Log Encoding autocompute function
|
||||
void logencodChanged(const float blackev, const float whiteev, const float sourceg, const float sourceab, const float targetg) override;
|
||||
void logencodChanged(const float blackev, const float whiteev, const float sourceg, const float sourceab, const float targetg, const bool autocomput, const bool autocie, const float jz1) override;
|
||||
|
||||
// Locallab tools mask background management function
|
||||
void refChanged(const std::vector<locallabRef> &ref, int selspot) override;
|
||||
// void refChanged(const std::vector<locallabRef> &ref, int selspot) override;
|
||||
void refChanged2(float *huerefp, float *chromarefp, float *lumarefp, float *fabrefp, int selspot)override;
|
||||
|
||||
// Mask visibility management functions
|
||||
struct llMaskVisibility {
|
||||
@ -167,6 +169,7 @@ public:
|
||||
int cbMask;
|
||||
int logMask;
|
||||
int maskMask;
|
||||
int cieMask;
|
||||
};
|
||||
|
||||
void resetMaskVisibility();
|
||||
|
@ -266,7 +266,7 @@ bool LocallabTool::isLocallabToolAdded()
|
||||
return exp->get_visible();
|
||||
}
|
||||
|
||||
void LocallabTool::refChanged(const double huer, const double lumar, const double chromar)
|
||||
void LocallabTool::refChanged(const double huer, const double lumar, const double chromar, const float fab)
|
||||
{
|
||||
// Hue reference normalization (between 0 and 1)
|
||||
double normHuer = huer;
|
||||
@ -279,14 +279,25 @@ void LocallabTool::refChanged(const double huer, const double lumar, const doubl
|
||||
|
||||
normHuer = h;
|
||||
|
||||
double normHuerjz = huer;
|
||||
|
||||
float hz = Color::huejz_to_huehsv2(normHuerjz);
|
||||
|
||||
if (hz > 1.f) {
|
||||
hz -= 1.f;
|
||||
}
|
||||
normHuerjz = hz;
|
||||
|
||||
// Luma reference normalization (between 0 and 1)
|
||||
const double normLumar = lumar / 100.f;
|
||||
|
||||
// Chroma reference normalization (between 0 and 1)
|
||||
const double normChromar = chromar / 137.4f;
|
||||
const double corfap = (65535.) / (double) fab;
|
||||
//printf("FAB=%f corfap=%f chromar=%f chroret=%f\n", (double) fab, corfap, chromar, (double) corfap * (chromar / 195.f));
|
||||
const double normChromar = LIM01(corfap * (chromar / 195.f));//195 a little more than 128 * 1.414 = 181
|
||||
|
||||
// Update mask curve backgrounds
|
||||
updateMaskBackground(normChromar, normLumar, normHuer);
|
||||
updateMaskBackground(normChromar, normLumar, normHuer, normHuerjz);
|
||||
}
|
||||
|
||||
void LocallabTool::colorForValue(double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller)
|
||||
@ -425,6 +436,7 @@ LocallabColor::LocallabColor():
|
||||
// Color & Light specific widgets
|
||||
lumFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_LUMFRA")))),
|
||||
reparcol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LOGREPART"), 1.0, 100.0, 1., 100.0))),
|
||||
gamc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GAMC"), 0.5, 3.0, 0.05, 1.))),
|
||||
lightness(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LIGHTNESS"), -100, 500, 1, 0))),
|
||||
contrast(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CONTRAST"), -100, 100, 1, 0))),
|
||||
chroma(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CHROMA"), -100, 150, 1, 0))),
|
||||
@ -440,7 +452,7 @@ LocallabColor::LocallabColor():
|
||||
exprecov(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_DENOI2_EXP")))),
|
||||
maskusablec(Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_MASKUSABLE")))),
|
||||
maskunusablec(Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_MASKUNUSABLE")))),
|
||||
recothresc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKRECOTHRES"), 1., 2., 0.01, 1.))),
|
||||
recothresc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKRECOTHRES"), 0., 2., 0.01, 1.))),
|
||||
lowthresc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKLCTHRLOW"), 1., 80., 0.5, 12.))),
|
||||
higthresc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKLCTHR"), 20., 99., 0.5, 85.))),
|
||||
decayc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKDDECAY"), 0.5, 4., 0.1, 2.))),
|
||||
@ -534,6 +546,8 @@ LocallabColor::LocallabColor():
|
||||
|
||||
lightness->setAdjusterListener(this);
|
||||
|
||||
gamc->setAdjusterListener(this);
|
||||
|
||||
reparcol->setAdjusterListener(this);
|
||||
|
||||
contrast->setAdjusterListener(this);
|
||||
@ -804,6 +818,7 @@ LocallabColor::LocallabColor():
|
||||
lumBox->pack_start(*lightness);
|
||||
lumBox->pack_start(*contrast);
|
||||
lumBox->pack_start(*chroma);
|
||||
lumBox->pack_start(*gamc);
|
||||
lumFrame->add(*lumBox);
|
||||
pack_start(*lumFrame);
|
||||
Gtk::Frame* const superFrame = Gtk::manage(new Gtk::Frame());
|
||||
@ -959,7 +974,7 @@ void LocallabColor::resetMaskView()
|
||||
showmaskcolMethodConninv.block(false);
|
||||
}
|
||||
|
||||
void LocallabColor::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)
|
||||
void LocallabColor::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)
|
||||
{
|
||||
colorMask = showmaskcolMethod->get_active_row_number();
|
||||
colorMaskinv = showmaskcolMethodinv->get_active_row_number();
|
||||
@ -969,6 +984,8 @@ void LocallabColor::updateAdviceTooltips(const bool showTooltips)
|
||||
{
|
||||
if (showTooltips) {
|
||||
lumFrame->set_tooltip_text(M("TP_LOCALLAB_EXPCOLOR_TOOLTIP"));
|
||||
recothresc->set_tooltip_text(M("TP_LOCALLAB_RECOTHRES02_TOOLTIP"));
|
||||
gamc->set_tooltip_text(M("TP_LOCALLAB_GAMCOL_TOOLTIP"));
|
||||
lightness->set_tooltip_text(M("TP_LOCALLAB_LIGHTN_TOOLTIP"));
|
||||
reparcol->set_tooltip_text(M("TP_LOCALLAB_REPARCOL_TOOLTIP"));
|
||||
gridMethod->set_tooltip_text(M("TP_LOCALLAB_GRIDMETH_TOOLTIP"));
|
||||
@ -1021,7 +1038,9 @@ void LocallabColor::updateAdviceTooltips(const bool showTooltips)
|
||||
higthresc->set_tooltip_text(M("TP_LOCALLAB_MASKHIGTHRESC_TOOLTIP"));
|
||||
} else {
|
||||
lumFrame->set_tooltip_text("");
|
||||
recothresc->set_tooltip_text("");
|
||||
lightness->set_tooltip_text("");
|
||||
gamc->set_tooltip_text("");
|
||||
reparcol->set_tooltip_text("");
|
||||
gridMethod->set_tooltip_text("");
|
||||
strengthgrid->set_tooltip_text("");
|
||||
@ -1137,6 +1156,7 @@ void LocallabColor::read(const rtengine::procparams::ProcParams* pp, const Param
|
||||
complexity->set_active(spot.complexcolor);
|
||||
|
||||
lightness->setValue(spot.lightness);
|
||||
gamc->setValue(spot.gamc);
|
||||
reparcol->setValue(spot.reparcol);
|
||||
contrast->setValue(spot.contrast);
|
||||
chroma->setValue(spot.chroma);
|
||||
@ -1312,6 +1332,7 @@ void LocallabColor::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pe
|
||||
spot.complexcolor = complexity->get_active_row_number();
|
||||
|
||||
spot.lightness = lightness->getIntValue();
|
||||
spot.gamc = gamc->getValue();
|
||||
spot.reparcol = reparcol->getValue();
|
||||
spot.contrast = contrast->getIntValue();
|
||||
spot.chroma = chroma->getIntValue();
|
||||
@ -1480,6 +1501,7 @@ void LocallabColor::setDefaults(const rtengine::procparams::ProcParams* defParam
|
||||
|
||||
// Set default value for adjuster, labgrid and threshold adjuster widgets
|
||||
lightness->setDefault((double)defSpot.lightness);
|
||||
gamc->setDefault((double)defSpot.gamc);
|
||||
reparcol->setDefault(defSpot.reparcol);
|
||||
contrast->setDefault((double)defSpot.contrast);
|
||||
chroma->setDefault((double)defSpot.chroma);
|
||||
@ -1535,6 +1557,13 @@ void LocallabColor::adjusterChanged(Adjuster* a, double newval)
|
||||
}
|
||||
}
|
||||
|
||||
if (a == gamc) {
|
||||
if (listener) {
|
||||
listener->panelChanged(Evlocallabgamc,
|
||||
gamc->getTextValue() + " (" + escapeHtmlChars(getSpotName()) + ")");
|
||||
}
|
||||
}
|
||||
|
||||
if (a == reparcol) {
|
||||
if (listener) {
|
||||
listener->panelChanged(Evlocallabreparcol,
|
||||
@ -1885,6 +1914,7 @@ void LocallabColor::convertParamToNormal()
|
||||
|
||||
// Disable all listeners
|
||||
disableListener();
|
||||
gamc->setValue(defSpot.gamc);
|
||||
|
||||
// Set hidden GUI widgets in Normal mode to default spot values
|
||||
blurcolde->setValue((double)defSpot.blurcolde);
|
||||
@ -2009,6 +2039,7 @@ void LocallabColor::convertParamToSimple()
|
||||
softradiuscol->setValue(defSpot.softradiuscol);
|
||||
strcol->setValue(defSpot.strcol);
|
||||
angcol->setValue(defSpot.angcol);
|
||||
gamc->setValue(defSpot.gamc);
|
||||
|
||||
if (defSpot.qualitycurveMethod == "none") {
|
||||
qualitycurveMethod->set_active(0);
|
||||
@ -2053,6 +2084,7 @@ void LocallabColor::updateGUIToMode(const modeType new_type)
|
||||
maskusablec->hide();
|
||||
maskunusablec->hide();
|
||||
decayc->hide();
|
||||
gamc->hide();
|
||||
break;
|
||||
|
||||
case Normal:
|
||||
@ -2093,6 +2125,7 @@ void LocallabColor::updateGUIToMode(const modeType new_type)
|
||||
if (!invers->get_active()) { // Keep widget hidden when invers is toggled
|
||||
expgradcol->show();
|
||||
exprecov->show();
|
||||
gamc->hide();
|
||||
}
|
||||
|
||||
expcurvcol->show();
|
||||
@ -2110,6 +2143,7 @@ void LocallabColor::updateGUIToMode(const modeType new_type)
|
||||
softradiuscol->show();
|
||||
expgradcol->show();
|
||||
exprecov->show();
|
||||
gamc->show();
|
||||
}
|
||||
|
||||
strcolab->show();
|
||||
@ -2155,7 +2189,7 @@ void LocallabColor::updateGUIToMode(const modeType new_type)
|
||||
}
|
||||
}
|
||||
|
||||
void LocallabColor::updateMaskBackground(const double normChromar, const double normLumar, const double normHuer)
|
||||
void LocallabColor::updateMaskBackground(const double normChromar, const double normLumar, const double normHuer, const double normHuerjz)
|
||||
{
|
||||
idle_register.add(
|
||||
[this, normHuer, normLumar, normChromar]() -> bool {
|
||||
@ -2406,8 +2440,10 @@ void LocallabColor::updateColorGUI1()
|
||||
contcol->hide();
|
||||
blurcol->hide();
|
||||
reparcol->hide();
|
||||
gamc->hide();
|
||||
} else {
|
||||
gridFrame->show();
|
||||
gamc->show();
|
||||
|
||||
if (mode == Expert) { // Keep widget hidden in Normal and Simple mode
|
||||
structcol->show();
|
||||
@ -2532,13 +2568,14 @@ LocallabExposure::LocallabExposure():
|
||||
norm(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_EQUIL")))),
|
||||
fatlevel(Gtk::manage(new Adjuster(M("TP_LOCALLAB_FATLEVEL"), 0.5, 2.0, 0.01, 1.))),
|
||||
fatanchor(Gtk::manage(new Adjuster(M("TP_LOCALLAB_FATANCHOR"), 0.1, 100.0, 0.01, 50., Gtk::manage(new RTImage("circle-black-small.png")), Gtk::manage(new RTImage("circle-white-small.png"))))),
|
||||
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))),
|
||||
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))),
|
||||
exptoolexp(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_EXPTOOL")))),
|
||||
expcomp(Gtk::manage(new Adjuster(M("TP_LOCALLAB_EXPCOMP"), MINEXP, MAXEXP, 0.01, 0.))),
|
||||
black(Gtk::manage(new Adjuster(M("TP_EXPOSURE_BLACKLEVEL"), -16384, 32768, 10, 0))),
|
||||
hlcompr(Gtk::manage(new Adjuster(M("TP_EXPOSURE_COMPRHIGHLIGHTS"), 0, 500, 1, 20))),
|
||||
hlcompr(Gtk::manage(new Adjuster(M("TP_EXPOSURE_COMPRHIGHLIGHTS"), 0, 500, 1, 0))),
|
||||
hlcomprthresh(Gtk::manage(new Adjuster(M("TP_EXPOSURE_COMPRHIGHLIGHTSTHRESHOLD"), 0, 100, 1, 0))),
|
||||
shadex(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SHADEX"), 0, 100, 1, 0))),
|
||||
shcompr(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SHADEXCOMP"), 0, 100, 1, 50))),
|
||||
@ -2548,7 +2585,7 @@ LocallabExposure::LocallabExposure():
|
||||
exprecove(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_DENOI2_EXP")))),
|
||||
maskusablee(Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_MASKUSABLE")))),
|
||||
maskunusablee(Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_MASKUNUSABLE")))),
|
||||
recothrese(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKRECOTHRES"), 1., 2., 0.01, 1.))),
|
||||
recothrese(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKRECOTHRES"), 0., 2., 0.01, 1.))),
|
||||
lowthrese(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKLCTHRLOW"), 1., 80., 0.5, 12.))),
|
||||
higthrese(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKLCTHR"), 20., 99., 0.5, 85.))),
|
||||
decaye(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKDDECAY"), 0.5, 4., 0.1, 2.))),
|
||||
@ -2620,6 +2657,8 @@ LocallabExposure::LocallabExposure():
|
||||
|
||||
sensiex->setAdjusterListener(this);
|
||||
|
||||
gamex->setAdjusterListener(this);
|
||||
|
||||
structexp->setAdjusterListener(this);
|
||||
|
||||
blurexpde->setAdjusterListener(this);
|
||||
@ -2762,6 +2801,7 @@ LocallabExposure::LocallabExposure():
|
||||
// pack_start(*fatFrame);
|
||||
pack_start(*expfat);
|
||||
pack_start(*expcomp);
|
||||
pack_start(*gamex);
|
||||
pack_start(*structexp);
|
||||
pack_start(*blurexpde);
|
||||
ToolParamBlock* const toolBox = Gtk::manage(new ToolParamBlock());
|
||||
@ -2837,7 +2877,7 @@ void LocallabExposure::resetMaskView()
|
||||
showmaskexpMethodConninv.block(false);
|
||||
}
|
||||
|
||||
void LocallabExposure::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)
|
||||
void LocallabExposure::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)
|
||||
{
|
||||
expMask = showmaskexpMethod->get_active_row_number();
|
||||
expMaskinv = showmaskexpMethodinv->get_active_row_number();
|
||||
@ -2850,6 +2890,7 @@ void LocallabExposure::updateAdviceTooltips(const bool showTooltips)
|
||||
// expMethod->set_tooltip_text(M("TP_LOCALLAB_EXPMETHOD_TOOLTIP"));
|
||||
// pdeFrame->set_tooltip_text(M("TP_LOCALLAB_PDEFRAME_TOOLTIP"));
|
||||
exppde->set_tooltip_text(M("TP_LOCALLAB_PDEFRAME_TOOLTIP"));
|
||||
recothrese->set_tooltip_text(M("TP_LOCALLAB_RECOTHRES02_TOOLTIP"));
|
||||
exprecove->set_tooltip_markup(M("TP_LOCALLAB_MASKREEXP_TOOLTIP"));
|
||||
decaye->set_tooltip_text(M("TP_LOCALLAB_MASKDECAY_TOOLTIP"));
|
||||
lowthrese->set_tooltip_text(M("TP_LOCALLAB_MASKLOWTHRESE_TOOLTIP"));
|
||||
@ -2865,6 +2906,7 @@ void LocallabExposure::updateAdviceTooltips(const bool showTooltips)
|
||||
// fatFrame->set_tooltip_text(M("TP_LOCALLAB_FATFRAME_TOOLTIP"));
|
||||
expfat->set_tooltip_text(M("TP_LOCALLAB_FATFRAME_TOOLTIP"));
|
||||
expcomp->set_tooltip_text(M("TP_LOCALLAB_EXPCOMP_TOOLTIP"));
|
||||
gamex->set_tooltip_text(M("TP_LOCALLAB_GAMCOL_TOOLTIP"));
|
||||
sensiex->set_tooltip_text(M("TP_LOCALLAB_SENSI_TOOLTIP"));
|
||||
structexp->set_tooltip_text(M("TP_LOCALLAB_STRUCT_TOOLTIP"));
|
||||
expchroma->set_tooltip_text(M("TP_LOCALLAB_EXPCHROMA_TOOLTIP"));
|
||||
@ -2887,6 +2929,7 @@ void LocallabExposure::updateAdviceTooltips(const bool showTooltips)
|
||||
lapmaskexp->set_tooltip_text(M("TP_LOCALLAB_LAPRAD1_TOOLTIP"));
|
||||
} else {
|
||||
exp->set_tooltip_text("");
|
||||
recothrese->set_tooltip_text("");
|
||||
exppde->set_tooltip_text("");
|
||||
blurexpde->set_tooltip_text("");
|
||||
exprecove->set_tooltip_markup("");
|
||||
@ -2917,6 +2960,7 @@ void LocallabExposure::updateAdviceTooltips(const bool showTooltips)
|
||||
chromaskexp->set_tooltip_text("");
|
||||
slomaskexp->set_tooltip_text("");
|
||||
lapmaskexp->set_tooltip_text("");
|
||||
gamex->set_tooltip_text("");
|
||||
}
|
||||
}
|
||||
|
||||
@ -3005,6 +3049,7 @@ void LocallabExposure::read(const rtengine::procparams::ProcParams* pp, const Pa
|
||||
// fatlevel->setValue(1.);
|
||||
// fatanchor->setValue(1.);
|
||||
sensiex->setValue(spot.sensiex);
|
||||
gamex->setValue(spot.gamex);
|
||||
structexp->setValue(spot.structexp);
|
||||
blurexpde->setValue(spot.blurexpde);
|
||||
expcomp->setValue(spot.expcomp);
|
||||
@ -3094,6 +3139,7 @@ void LocallabExposure::write(rtengine::procparams::ProcParams* pp, ParamsEdited*
|
||||
spot.fatlevel = fatlevel->getValue();
|
||||
spot.fatanchor = fatanchor->getValue();
|
||||
spot.sensiex = sensiex->getIntValue();
|
||||
spot.gamex = gamex->getValue();
|
||||
spot.structexp = structexp->getIntValue();
|
||||
spot.blurexpde = blurexpde->getIntValue();
|
||||
spot.expcomp = expcomp->getValue();
|
||||
@ -3146,6 +3192,7 @@ void LocallabExposure::setDefaults(const rtengine::procparams::ProcParams* defPa
|
||||
fatlevel->setDefault(defSpot.fatlevel);
|
||||
fatanchor->setDefault(defSpot.fatanchor);
|
||||
sensiex->setDefault((double)defSpot.sensiex);
|
||||
gamex->setDefault((double)defSpot.gamex);
|
||||
structexp->setDefault((double)defSpot.structexp);
|
||||
blurexpde->setDefault((double)defSpot.blurexpde);
|
||||
expcomp->setDefault(defSpot.expcomp);
|
||||
@ -3246,6 +3293,13 @@ void LocallabExposure::adjusterChanged(Adjuster* a, double newval)
|
||||
}
|
||||
}
|
||||
|
||||
if (a == gamex) {
|
||||
if (listener) {
|
||||
listener->panelChanged(Evlocallabgamex,
|
||||
gamex->getTextValue() + " (" + escapeHtmlChars(getSpotName()) + ")");
|
||||
}
|
||||
}
|
||||
|
||||
if (a == recothrese) {
|
||||
if (listener) {
|
||||
listener->panelChanged(Evlocallabrecothrese,
|
||||
@ -3484,6 +3538,7 @@ void LocallabExposure::convertParamToNormal()
|
||||
|
||||
// Disable all listeners
|
||||
disableListener();
|
||||
gamex->setValue(defSpot.gamex);
|
||||
|
||||
// Set hidden GUI widgets in Normal mode to default spot values
|
||||
structexp->setValue((double)defSpot.structexp);
|
||||
@ -3516,6 +3571,7 @@ void LocallabExposure::convertParamToSimple()
|
||||
softradiusexp->setValue(defSpot.softradiusexp);
|
||||
enaExpMask->set_active(defSpot.enaExpMask);
|
||||
enaExpMaskaft->set_active(defSpot.enaExpMaskaft);
|
||||
gamex->setValue(defSpot.gamex);
|
||||
// CCmaskexpshape->setCurve(defSpot.CCmaskexpcurve);
|
||||
// LLmaskexpshape->setCurve(defSpot.CCmaskexpcurve);
|
||||
// HHmaskexpshape->setCurve(defSpot.HHmaskexpcurve);
|
||||
@ -3549,6 +3605,7 @@ void LocallabExposure::updateGUIToMode(const modeType new_type)
|
||||
norm->hide();
|
||||
fatlevel->hide();
|
||||
fatanchor->hide();
|
||||
gamex->hide();
|
||||
|
||||
break;
|
||||
|
||||
@ -3581,6 +3638,7 @@ void LocallabExposure::updateGUIToMode(const modeType new_type)
|
||||
expgradexp->show();
|
||||
softradiusexp->show();
|
||||
exprecove->show();
|
||||
gamex->hide();
|
||||
blurexpde->show();
|
||||
}
|
||||
|
||||
@ -3607,6 +3665,7 @@ void LocallabExposure::updateGUIToMode(const modeType new_type)
|
||||
expgradexp->show();
|
||||
softradiusexp->show();
|
||||
exprecove->show();
|
||||
gamex->show();
|
||||
blurexpde->show();
|
||||
|
||||
}
|
||||
@ -3628,7 +3687,7 @@ void LocallabExposure::updateGUIToMode(const modeType new_type)
|
||||
}
|
||||
}
|
||||
|
||||
void LocallabExposure::updateMaskBackground(const double normChromar, const double normLumar, const double normHuer)
|
||||
void LocallabExposure::updateMaskBackground(const double normChromar, const double normLumar, const double normHuer, const double normHuerjz)
|
||||
{
|
||||
idle_register.add(
|
||||
[this, normHuer, normLumar, normChromar]() -> bool {
|
||||
@ -3829,6 +3888,7 @@ void LocallabExposure::updateExposureGUI3()
|
||||
expcomp->setLabel(M("TP_LOCALLAB_EXPCOMPINV"));
|
||||
exprecove->hide();
|
||||
reparexp->hide();
|
||||
gamex->hide();
|
||||
expfat->hide();
|
||||
exppde->hide();
|
||||
structexp->hide();
|
||||
@ -3855,6 +3915,7 @@ void LocallabExposure::updateExposureGUI3()
|
||||
} else {
|
||||
expMethod->show();
|
||||
expcomp->setLabel(M("TP_LOCALLAB_EXPCOMP"));
|
||||
gamex->show();
|
||||
expfat->show();
|
||||
exppde->show();
|
||||
|
||||
@ -3920,7 +3981,7 @@ LocallabShadow::LocallabShadow():
|
||||
exprecovs(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_DENOI2_EXP")))),
|
||||
maskusables(Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_MASKUSABLE")))),
|
||||
maskunusables(Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_MASKUNUSABLE")))),
|
||||
recothress(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKRECOTHRES"), 1., 2., 0.01, 1.))),
|
||||
recothress(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKRECOTHRES"), 0., 2., 0.01, 1.))),
|
||||
lowthress(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKLCTHRLOW"), 1., 80., 0.5, 12.))),
|
||||
higthress(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKLCTHR"), 20., 99., 0.5, 85.))),
|
||||
decays(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKDDECAY"), 0.5, 4., 0.1, 2.))),
|
||||
@ -4150,7 +4211,7 @@ void LocallabShadow::resetMaskView()
|
||||
showmaskSHMethodConninv.block(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)
|
||||
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();
|
||||
shMaskinv = showmaskSHMethodinv->get_active_row_number();
|
||||
@ -4164,7 +4225,7 @@ void LocallabShadow::updateAdviceTooltips(const bool showTooltips)
|
||||
for (const auto multiplier : multipliersh) {
|
||||
multiplier->set_tooltip_text(M("TP_LOCALLAB_MULTIPL_TOOLTIP"));
|
||||
}
|
||||
|
||||
recothress->set_tooltip_text(M("TP_LOCALLAB_RECOTHRES02_TOOLTIP"));
|
||||
gamSH->set_tooltip_text(M("TP_LOCALLAB_SHTRC_TOOLTIP"));
|
||||
reparsh->set_tooltip_text(M("TP_LOCALLAB_REPARSH_TOOLTIP"));
|
||||
sloSH->set_tooltip_text(M("TP_LOCALLAB_SHTRC_TOOLTIP"));
|
||||
@ -4206,6 +4267,7 @@ void LocallabShadow::updateAdviceTooltips(const bool showTooltips)
|
||||
for (const auto multiplier : multipliersh) {
|
||||
multiplier->set_tooltip_text("");
|
||||
}
|
||||
recothress->set_tooltip_text("");
|
||||
gamSH->set_tooltip_text("");
|
||||
reparsh->set_tooltip_text("");
|
||||
sloSH->set_tooltip_text("");
|
||||
@ -4813,7 +4875,7 @@ void LocallabShadow::updateGUIToMode(const modeType new_type)
|
||||
}
|
||||
}
|
||||
|
||||
void LocallabShadow::updateMaskBackground(const double normChromar, const double normLumar, const double normHuer)
|
||||
void LocallabShadow::updateMaskBackground(const double normChromar, const double normLumar, const double normHuer, const double normHuerjz)
|
||||
{
|
||||
idle_register.add(
|
||||
[this, normHuer, normLumar, normChromar]() -> bool {
|
||||
@ -5006,6 +5068,7 @@ LocallabVibrance::LocallabVibrance():
|
||||
// Vibrance specific widgets
|
||||
saturated(Gtk::manage(new Adjuster(M("TP_VIBRANCE_SATURATED"), -100., 100., 1., 0.))),
|
||||
pastels(Gtk::manage(new Adjuster(M("TP_VIBRANCE_PASTELS"), -100., 100., 1., 0.))),
|
||||
vibgam(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GAMC"), 0.5, 3., 0.05, 1.))),
|
||||
warm(Gtk::manage(new Adjuster(M("TP_LOCALLAB_WARM"), -100., 100., 1., 0., Gtk::manage(new RTImage("circle-blue-small.png")), Gtk::manage(new RTImage("circle-orange-small.png"))))),
|
||||
psThreshold(Gtk::manage(new ThresholdAdjuster(M("TP_VIBRANCE_PSTHRESHOLD"), -100., 100., 0., M("TP_VIBRANCE_PSTHRESHOLD_WEIGTHING"), 0, 0., 100., 75., M("TP_VIBRANCE_PSTHRESHOLD_SATTHRESH"), 0, this, false))),
|
||||
protectSkins(Gtk::manage(new Gtk::CheckButton(M("TP_VIBRANCE_PROTECTSKINS")))),
|
||||
@ -5017,7 +5080,7 @@ LocallabVibrance::LocallabVibrance():
|
||||
exprecovv(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_DENOI2_EXP")))),
|
||||
maskusablev(Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_MASKUSABLE")))),
|
||||
maskunusablev(Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_MASKUNUSABLE")))),
|
||||
recothresv(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKRECOTHRES"), 1., 2., 0.01, 1.))),
|
||||
recothresv(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKRECOTHRES"), 0., 2., 0.01, 1.))),
|
||||
lowthresv(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKLCTHRLOW"), 1., 80., 0.5, 12.))),
|
||||
higthresv(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKLCTHR"), 20., 99., 0.5, 85.))),
|
||||
decayv(Gtk::manage(new Adjuster(M("TP_LOCALLAB_MASKDDECAY"), 0.5, 4., 0.1, 2.))),
|
||||
@ -5054,6 +5117,8 @@ LocallabVibrance::LocallabVibrance():
|
||||
|
||||
pastels->setAdjusterListener(this);
|
||||
|
||||
vibgam->setAdjusterListener(this);
|
||||
|
||||
warm->setAdjusterListener(this);
|
||||
|
||||
psThreshold->set_tooltip_markup(M("TP_VIBRANCE_PSTHRESHOLD_TOOLTIP"));
|
||||
@ -5158,6 +5223,9 @@ LocallabVibrance::LocallabVibrance():
|
||||
// Add Vibrance specific widgets to GUI
|
||||
pack_start(*saturated, Gtk::PACK_SHRINK, 0);
|
||||
pack_start(*pastels, Gtk::PACK_SHRINK, 0);
|
||||
pack_start(*vibgam, Gtk::PACK_SHRINK, 0);
|
||||
Gtk::Separator* const separatorvib = Gtk::manage(new Gtk::Separator(Gtk::ORIENTATION_HORIZONTAL));
|
||||
pack_start(*separatorvib, Gtk::PACK_SHRINK, 2);
|
||||
pack_start(*warm, Gtk::PACK_SHRINK, 0);
|
||||
pack_start(*psThreshold, Gtk::PACK_SHRINK, 0);
|
||||
pack_start(*protectSkins, Gtk::PACK_SHRINK, 0);
|
||||
@ -5217,7 +5285,7 @@ void LocallabVibrance::resetMaskView()
|
||||
showmaskvibMethodConn.block(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)
|
||||
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();
|
||||
}
|
||||
@ -5227,6 +5295,7 @@ void LocallabVibrance::updateAdviceTooltips(const bool showTooltips)
|
||||
if (showTooltips) {
|
||||
exp->set_tooltip_text(M("TP_LOCALLAB_VIBRA_TOOLTIP"));
|
||||
warm->set_tooltip_text(M("TP_LOCALLAB_WARM_TOOLTIP"));
|
||||
recothresv->set_tooltip_text(M("TP_LOCALLAB_RECOTHRES02_TOOLTIP"));
|
||||
strvib->set_tooltip_text(M("TP_LOCALLAB_GRADGEN_TOOLTIP"));
|
||||
exprecovv->set_tooltip_markup(M("TP_LOCALLAB_MASKRESVIB_TOOLTIP"));
|
||||
expmaskvib->set_tooltip_markup(M("TP_LOCALLAB_MASK_TOOLTIP"));
|
||||
@ -5241,6 +5310,8 @@ void LocallabVibrance::updateAdviceTooltips(const bool showTooltips)
|
||||
chromaskvib->set_tooltip_text(M("TP_LOCALLAB_CHROMASK_TOOLTIP"));
|
||||
slomaskvib->set_tooltip_text(M("TP_LOCALLAB_SLOMASK_TOOLTIP"));
|
||||
lapmaskvib->set_tooltip_text(M("TP_LOCALLAB_LAPRAD1_TOOLTIP"));
|
||||
vibgam->set_tooltip_text(M("TP_LOCALLAB_GAMCOL_TOOLTIP"));
|
||||
|
||||
/*
|
||||
saturated->set_tooltip_text(M("TP_LOCALLAB_NUL_TOOLTIP"));
|
||||
pastels->set_tooltip_text(M("TP_LOCALLAB_NUL_TOOLTIP"));
|
||||
@ -5268,6 +5339,7 @@ void LocallabVibrance::updateAdviceTooltips(const bool showTooltips)
|
||||
exp->set_tooltip_text("");
|
||||
warm->set_tooltip_text("");
|
||||
strvib->set_tooltip_text("");
|
||||
recothresv->set_tooltip_text("");
|
||||
expmaskvib->set_tooltip_markup("");
|
||||
CCmaskvibshape->setTooltip("");
|
||||
LLmaskvibshape->setTooltip("");
|
||||
@ -5292,6 +5364,7 @@ void LocallabVibrance::updateAdviceTooltips(const bool showTooltips)
|
||||
decayv->set_tooltip_text("");
|
||||
lowthresv->set_tooltip_text("");
|
||||
higthresv->set_tooltip_text("");
|
||||
vibgam->set_tooltip_text("");
|
||||
}
|
||||
}
|
||||
|
||||
@ -5341,6 +5414,7 @@ void LocallabVibrance::read(const rtengine::procparams::ProcParams* pp, const Pa
|
||||
|
||||
saturated->setValue(spot.saturated);
|
||||
pastels->setValue(spot.pastels);
|
||||
vibgam->setValue(spot.vibgam);
|
||||
warm->setValue(spot.warm);
|
||||
psThreshold->setValue<int>(spot.psthreshold);
|
||||
protectSkins->set_active(spot.protectskins);
|
||||
@ -5394,6 +5468,7 @@ void LocallabVibrance::write(rtengine::procparams::ProcParams* pp, ParamsEdited*
|
||||
|
||||
spot.saturated = saturated->getIntValue();
|
||||
spot.pastels = pastels->getIntValue();
|
||||
spot.vibgam = vibgam->getValue();
|
||||
spot.warm = warm->getIntValue();
|
||||
spot.psthreshold = psThreshold->getValue<int>();
|
||||
spot.protectskins = protectSkins->get_active();
|
||||
@ -5435,6 +5510,7 @@ void LocallabVibrance::setDefaults(const rtengine::procparams::ProcParams* defPa
|
||||
// Set default values for adjuster and threshold adjuster widgets
|
||||
saturated->setDefault((double)defSpot.saturated);
|
||||
pastels->setDefault((double)defSpot.pastels);
|
||||
vibgam->setDefault((double)defSpot.vibgam);
|
||||
warm->setDefault((double)defSpot.warm);
|
||||
psThreshold->setDefault<int>(defSpot.psthreshold);
|
||||
sensiv->setDefault((double)defSpot.sensiv);
|
||||
@ -5479,6 +5555,13 @@ void LocallabVibrance::adjusterChanged(Adjuster* a, double newval)
|
||||
}
|
||||
}
|
||||
|
||||
if (a == vibgam) {
|
||||
if (listener) {
|
||||
listener->panelChanged(Evlocallabvibgam,
|
||||
vibgam->getTextValue() + " (" + escapeHtmlChars(getSpotName()) + ")");
|
||||
}
|
||||
}
|
||||
|
||||
if (a == warm) {
|
||||
if (listener) {
|
||||
listener->panelChanged(Evlocallabwarm,
|
||||
@ -5716,6 +5799,8 @@ void LocallabVibrance::convertParamToNormal()
|
||||
|
||||
// Set hidden GUI widgets in Normal mode to default spot values
|
||||
saturated->setValue((double)defSpot.saturated);
|
||||
vibgam->setValue(defSpot.vibgam);
|
||||
|
||||
psThreshold->setValue<int>(defSpot.psthreshold);
|
||||
protectSkins->set_active(defSpot.protectskins);
|
||||
avoidColorShift->set_active(defSpot.avoidcolorshift);
|
||||
@ -5771,6 +5856,7 @@ void LocallabVibrance::updateGUIToMode(const modeType new_type)
|
||||
// Expert and Normal mode widgets are hidden in Simple mode
|
||||
saturated->hide();
|
||||
pastels->setLabel(M("TP_LOCALLAB_PASTELS2"));
|
||||
vibgam->hide();
|
||||
psThreshold->hide();
|
||||
protectSkins->hide();
|
||||
avoidColorShift->hide();
|
||||
@ -5788,6 +5874,7 @@ void LocallabVibrance::updateGUIToMode(const modeType new_type)
|
||||
case Normal:
|
||||
// Expert mode widgets are hidden in Normal mode
|
||||
saturated->hide();
|
||||
vibgam->hide();
|
||||
pastels->setLabel(M("TP_LOCALLAB_PASTELS2"));
|
||||
psThreshold->hide();
|
||||
protectSkins->hide();
|
||||
@ -5818,6 +5905,7 @@ void LocallabVibrance::updateGUIToMode(const modeType new_type)
|
||||
case Expert:
|
||||
// Show widgets hidden in Normal and Simple mode
|
||||
saturated->show();
|
||||
vibgam->show();
|
||||
pastels->setLabel(M("TP_VIBRANCE_PASTELS"));
|
||||
psThreshold->show();
|
||||
protectSkins->show();
|
||||
@ -5844,7 +5932,7 @@ void LocallabVibrance::updateGUIToMode(const modeType new_type)
|
||||
}
|
||||
}
|
||||
|
||||
void LocallabVibrance::updateMaskBackground(const double normChromar, const double normLumar, const double normHuer)
|
||||
void LocallabVibrance::updateMaskBackground(const double normChromar, const double normLumar, const double normHuer, const double normHuerjz)
|
||||
{
|
||||
idle_register.add(
|
||||
[this, normHuer, normLumar, normChromar]() -> bool {
|
||||
@ -6020,7 +6108,7 @@ void LocallabSoft::resetMaskView()
|
||||
showmasksoftMethodConn.block(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)
|
||||
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();
|
||||
}
|
||||
@ -6402,6 +6490,7 @@ LocallabBlur::LocallabBlur():
|
||||
noiselumc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISELUMCOARSE"), MINCHRO, MAXCHROCC, 0.01, 0.))),//unused here, but used for normalize_mean_dt
|
||||
noiselumdetail(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISELUMDETAIL"), 0., 100., 0.01, 50.))),
|
||||
noiselequal(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISELEQUAL"), -2, 10, 1, 7, Gtk::manage(new RTImage("circle-white-small.png")), Gtk::manage(new RTImage("circle-black-small.png"))))),
|
||||
noisegam(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISEGAM"), 1.0, 5., 0.1, 1.))),
|
||||
LocalcurveEditorwavhue(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_WAVELET_DENOISEHUE"))),
|
||||
wavhue(static_cast<FlatCurveEditor*>(LocalcurveEditorwavhue->addCurve(CT_Flat, "", nullptr, false, true))),
|
||||
noisechrof(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NOISECHROFINE"), MINCHRO, MAXCHRO, 0.01, 0.))),
|
||||
@ -6571,6 +6660,8 @@ LocallabBlur::LocallabBlur():
|
||||
|
||||
noiselequal->setAdjusterListener(this);
|
||||
|
||||
noisegam->setAdjusterListener(this);
|
||||
|
||||
LocalcurveEditorwavhue->setCurveListener(this);
|
||||
|
||||
wavhue->setIdentityValue(0.);
|
||||
@ -6748,6 +6839,7 @@ LocallabBlur::LocallabBlur():
|
||||
// wavBox->pack_start(*noiselumc);//unused here, but used for normalize_mean_dt
|
||||
wavBox->pack_start(*noiselumdetail);
|
||||
wavBox->pack_start(*noiselequal);
|
||||
wavBox->pack_start(*noisegam);
|
||||
wavBox->pack_start(*LocalcurveEditorwavhue, Gtk::PACK_SHRINK, 4);
|
||||
ToolParamBlock* const wavBox1 = Gtk::manage(new ToolParamBlock());
|
||||
wavBox1->pack_start(*maskusable, Gtk::PACK_SHRINK, 0);
|
||||
@ -6851,7 +6943,7 @@ void LocallabBlur::resetMaskView()
|
||||
showmaskblMethodConn.block(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)
|
||||
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();
|
||||
}
|
||||
@ -6884,6 +6976,7 @@ void LocallabBlur::updateAdviceTooltips(const bool showTooltips)
|
||||
invmaskd->set_tooltip_text(M("TP_LOCALLAB_MASKDEINV_TOOLTIP"));
|
||||
LocalcurveEditorwavden->setTooltip(M("TP_LOCALLAB_WASDEN_TOOLTIP"));
|
||||
noiselequal->set_tooltip_text(M("TP_LOCALLAB_DENOIEQUAL_TOOLTIP"));
|
||||
noisegam->set_tooltip_text(M("TP_LOCALLAB_NOISEGAM_TOOLTIP"));
|
||||
noiselumdetail->set_tooltip_text(M("TP_LOCALLAB_DENOILUMDETAIL_TOOLTIP"));
|
||||
noisechrof->set_tooltip_text(M("TP_LOCALLAB_DENOICHROF_TOOLTIP"));
|
||||
noisechroc->set_tooltip_text(M("TP_LOCALLAB_DENOICHROC_TOOLTIP"));
|
||||
@ -6950,6 +7043,7 @@ void LocallabBlur::updateAdviceTooltips(const bool showTooltips)
|
||||
invmaskd->set_tooltip_text("");
|
||||
LocalcurveEditorwavden->setTooltip("");
|
||||
noiselequal->set_tooltip_text("");
|
||||
noisegam->set_tooltip_text("");
|
||||
noiselumdetail->set_tooltip_text("");
|
||||
noisechrof->set_tooltip_text("");
|
||||
noisechroc->set_tooltip_text("");
|
||||
@ -7007,6 +7101,7 @@ void LocallabBlur::neutral_pressed ()
|
||||
noiselumf0->setValue(defSpot.noiselumf0);
|
||||
noiselumdetail->setValue(defSpot.noiselumdetail);
|
||||
noiselequal->setValue(defSpot.noiselequal);
|
||||
noisegam->setValue(defSpot.noisegam);
|
||||
noisechrof->setValue(defSpot.noisechrof);
|
||||
noisechroc->setValue(defSpot.noisechroc);
|
||||
noisechrodetail->setValue(defSpot.noisechrodetail);
|
||||
@ -7189,6 +7284,7 @@ void LocallabBlur::read(const rtengine::procparams::ProcParams* pp, const Params
|
||||
lnoiselow->setValue(spot.lnoiselow);
|
||||
levelthrlow->setValue(spot.levelthrlow);
|
||||
noiselequal->setValue((double)spot.noiselequal);
|
||||
noisegam->setValue((double)spot.noisegam);
|
||||
noisechrof->setValue(spot.noisechrof);
|
||||
noisechroc->setValue(spot.noisechroc);
|
||||
noisechrodetail->setValue(spot.noisechrodetail);
|
||||
@ -7336,6 +7432,7 @@ void LocallabBlur::write(rtengine::procparams::ProcParams* pp, ParamsEdited* ped
|
||||
spot.lnoiselow = lnoiselow->getValue();
|
||||
spot.levelthrlow = levelthrlow->getValue();
|
||||
spot.noiselequal = noiselequal->getIntValue();
|
||||
spot.noisegam = noisegam->getValue();
|
||||
spot.noisechrof = noisechrof->getValue();
|
||||
spot.noisechroc = noisechroc->getValue();
|
||||
spot.noisechrodetail = noisechrodetail->getValue();
|
||||
@ -7418,6 +7515,7 @@ void LocallabBlur::setDefaults(const rtengine::procparams::ProcParams* defParams
|
||||
lnoiselow->setDefault(defSpot.lnoiselow);
|
||||
levelthrlow->setDefault(defSpot.levelthrlow);
|
||||
noiselequal->setDefault((double)defSpot.noiselequal);
|
||||
noisegam->setDefault(defSpot.noisegam);
|
||||
noisechrof->setDefault(defSpot.noisechrof);
|
||||
noisechroc->setDefault(defSpot.noisechroc);
|
||||
noisechrodetail->setDefault(defSpot.noisechrodetail);
|
||||
@ -7642,6 +7740,13 @@ void LocallabBlur::adjusterChanged(Adjuster* a, double newval)
|
||||
}
|
||||
}
|
||||
|
||||
if (a == noisegam) {
|
||||
if (listener) {
|
||||
listener->panelChanged(Evlocallabnoisegam,
|
||||
noisegam->getTextValue() + " (" + escapeHtmlChars(getSpotName()) + ")");
|
||||
}
|
||||
}
|
||||
|
||||
if (a == levelthr) {
|
||||
if (listener) {
|
||||
listener->panelChanged(Evlocallablevelthr,
|
||||
@ -7926,6 +8031,7 @@ void LocallabBlur::convertParamToNormal()
|
||||
csThresholdblur->setValue<int>(defSpot.csthresholdblur);
|
||||
lnoiselow->setValue(defSpot.lnoiselow);
|
||||
nlrad->setValue(defSpot.nlrad);
|
||||
noisegam->setValue(defSpot.noisegam);
|
||||
|
||||
// Enable all listeners
|
||||
enableListener();
|
||||
@ -7981,6 +8087,7 @@ void LocallabBlur::convertParamToSimple()
|
||||
nlpat->setValue(defSpot.nlpat);
|
||||
nlrad->setValue(defSpot.nlrad);
|
||||
nlgam->setValue(defSpot.nlgam);
|
||||
noisegam->setValue(defSpot.noisegam);
|
||||
|
||||
// Enable all listeners
|
||||
enableListener();
|
||||
@ -8012,6 +8119,7 @@ void LocallabBlur::updateGUIToMode(const modeType new_type)
|
||||
nlrad->hide();
|
||||
nlgam->hide();
|
||||
scalegr->hide();
|
||||
noisegam->hide();
|
||||
break;
|
||||
|
||||
case Normal:
|
||||
@ -8037,6 +8145,7 @@ void LocallabBlur::updateGUIToMode(const modeType new_type)
|
||||
nlrad->hide();
|
||||
nlgam->show();
|
||||
scalegr->show();
|
||||
noisegam->hide();
|
||||
|
||||
if (blMethod->get_active_row_number() == 2) {
|
||||
expdenoise2->show();
|
||||
@ -8116,6 +8225,7 @@ void LocallabBlur::updateGUIToMode(const modeType new_type)
|
||||
nlpat->show();
|
||||
nlrad->show();
|
||||
nlgam->show();
|
||||
noisegam->show();
|
||||
|
||||
if(lnoiselow->getValue()!= 1.) {
|
||||
if (showmaskblMethodtyp->get_active_row_number() == 0) {
|
||||
@ -8152,7 +8262,7 @@ void LocallabBlur::updateGUIToMode(const modeType new_type)
|
||||
}
|
||||
}
|
||||
|
||||
void LocallabBlur::updateMaskBackground(const double normChromar, const double normLumar, const double normHuer)
|
||||
void LocallabBlur::updateMaskBackground(const double normChromar, const double normLumar, const double normHuer, const double normHuerjz)
|
||||
{
|
||||
idle_register.add(
|
||||
[this, normHuer, normLumar, normChromar]() -> bool {
|
||||
|
@ -118,7 +118,7 @@ public:
|
||||
bool isLocallabToolAdded();
|
||||
|
||||
// Mask background management function
|
||||
void refChanged(const double huer, const double lumar, const double chromar);
|
||||
void refChanged(const double huer, const double lumar, const double chromar, const float fab);
|
||||
|
||||
// Mask preview functions
|
||||
virtual bool isMaskViewActive()
|
||||
@ -126,7 +126,7 @@ public:
|
||||
return false;
|
||||
};
|
||||
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) {};
|
||||
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) {};
|
||||
|
||||
// Advice tooltips management function
|
||||
virtual void updateAdviceTooltips(const bool showTooltips) {};
|
||||
@ -151,7 +151,7 @@ public:
|
||||
|
||||
protected:
|
||||
// To be implemented
|
||||
virtual void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) {}; // Only necessary when using mask
|
||||
virtual void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer, const double normHuerjz) {}; // Only necessary when using mask
|
||||
|
||||
private:
|
||||
// Remove button event function
|
||||
@ -180,6 +180,7 @@ private:
|
||||
// Color & Light specific widgets
|
||||
Gtk::Frame* const lumFrame;
|
||||
Adjuster* const reparcol;
|
||||
Adjuster* const gamc;
|
||||
Adjuster* const lightness;
|
||||
Adjuster* const contrast;
|
||||
Adjuster* const chroma;
|
||||
@ -277,7 +278,7 @@ public:
|
||||
|
||||
bool isMaskViewActive() 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) 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;
|
||||
|
||||
@ -302,7 +303,7 @@ private:
|
||||
void convertParamToSimple() override;
|
||||
void updateGUIToMode(const modeType new_type) override;
|
||||
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer, const double normHuerjz) override;
|
||||
|
||||
void curvactivChanged();
|
||||
void gridMethodChanged();
|
||||
@ -347,6 +348,7 @@ private:
|
||||
Gtk::CheckButton* const norm;
|
||||
Adjuster* const fatlevel;
|
||||
Adjuster* const fatanchor;
|
||||
Adjuster* const gamex;
|
||||
Adjuster* const sensiex;
|
||||
Adjuster* const structexp;
|
||||
Adjuster* const blurexpde;
|
||||
@ -402,7 +404,7 @@ public:
|
||||
|
||||
bool isMaskViewActive() 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) 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;
|
||||
|
||||
@ -421,7 +423,7 @@ private:
|
||||
void convertParamToSimple() override;
|
||||
void updateGUIToMode(const modeType new_type) override;
|
||||
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer, const double normHuerjz) override;
|
||||
|
||||
void expMethodChanged();
|
||||
void exnoiseMethodChanged();
|
||||
@ -438,7 +440,7 @@ private:
|
||||
};
|
||||
|
||||
|
||||
/* ==== LocallabShadow ==== */
|
||||
/* ==== LocallabjShadow ==== */
|
||||
class LocallabShadow:
|
||||
public Gtk::Box,
|
||||
public LocallabTool
|
||||
@ -498,7 +500,7 @@ public:
|
||||
|
||||
bool isMaskViewActive() 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) 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;
|
||||
|
||||
@ -517,7 +519,7 @@ private:
|
||||
void convertParamToSimple() override;
|
||||
void updateGUIToMode(const modeType new_type) override;
|
||||
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer, const double normHuerjz) override;
|
||||
|
||||
void shMethodChanged();
|
||||
void inversshChanged();
|
||||
@ -540,6 +542,7 @@ private:
|
||||
// Vibrance specific widgets
|
||||
Adjuster* const saturated;
|
||||
Adjuster* const pastels;
|
||||
Adjuster* const vibgam;
|
||||
Adjuster* const warm;
|
||||
ThresholdAdjuster* const psThreshold;
|
||||
Gtk::CheckButton* const protectSkins;
|
||||
@ -584,7 +587,7 @@ public:
|
||||
|
||||
bool isMaskViewActive() 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) 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;
|
||||
|
||||
@ -610,7 +613,7 @@ private:
|
||||
void convertParamToSimple() override;
|
||||
void updateGUIToMode(const modeType new_type) override;
|
||||
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer, const double normHuerjz) override;
|
||||
|
||||
void protectskins_toggled();
|
||||
void avoidcolorshift_toggled();
|
||||
@ -642,7 +645,7 @@ public:
|
||||
|
||||
bool isMaskViewActive() 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) 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;
|
||||
|
||||
@ -724,6 +727,7 @@ private:
|
||||
Adjuster* const noiselumc;
|
||||
Adjuster* const noiselumdetail;
|
||||
Adjuster* const noiselequal;
|
||||
Adjuster* const noisegam;
|
||||
CurveEditorGroup* const LocalcurveEditorwavhue;
|
||||
FlatCurveEditor* wavhue;
|
||||
Adjuster* const noisechrof;
|
||||
@ -787,7 +791,7 @@ public:
|
||||
|
||||
bool isMaskViewActive() 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) 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 neutral_pressed();
|
||||
@ -813,7 +817,7 @@ private:
|
||||
void convertParamToSimple() override;
|
||||
void updateGUIToMode(const modeType new_type) override;
|
||||
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer, const double normHuerjz) override;
|
||||
|
||||
void blMethodChanged();
|
||||
void fftwblChanged();
|
||||
@ -884,7 +888,7 @@ public:
|
||||
|
||||
bool isMaskViewActive() 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) 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;
|
||||
|
||||
@ -903,7 +907,7 @@ private:
|
||||
void convertParamToSimple() override;
|
||||
void updateGUIToMode(const modeType new_type) override;
|
||||
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer, const double normHuerjz) override;
|
||||
|
||||
void equiltmChanged();
|
||||
void showmasktmMethodChanged();
|
||||
@ -983,7 +987,7 @@ public:
|
||||
|
||||
bool isMaskViewActive() 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) 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;
|
||||
|
||||
@ -1002,7 +1006,7 @@ private:
|
||||
void convertParamToSimple() override;
|
||||
void updateGUIToMode(const modeType new_type) override;
|
||||
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer, const double normHuerjz) override;
|
||||
|
||||
void loglinChanged();
|
||||
void retinexMethodChanged();
|
||||
@ -1026,6 +1030,7 @@ class LocallabSharp:
|
||||
private:
|
||||
Adjuster* const sharcontrast;
|
||||
Adjuster* const sharblur;
|
||||
Adjuster* const shargam;
|
||||
Adjuster* const sharamount;
|
||||
Adjuster* const shardamping;
|
||||
Adjuster* const shariter;
|
||||
@ -1042,7 +1047,7 @@ public:
|
||||
|
||||
bool isMaskViewActive() 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) 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;
|
||||
|
||||
@ -1089,6 +1094,9 @@ private:
|
||||
Adjuster* const residshathr;
|
||||
Adjuster* const residhi;
|
||||
Adjuster* const residhithr;
|
||||
Adjuster* const gamlc;
|
||||
Adjuster* const residgam;
|
||||
Adjuster* const residslop;
|
||||
Adjuster* const sensilc;
|
||||
Adjuster* const reparw;
|
||||
Gtk::Frame* const clariFrame;
|
||||
@ -1173,7 +1181,7 @@ public:
|
||||
|
||||
bool isMaskViewActive() 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) 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;
|
||||
|
||||
@ -1198,7 +1206,7 @@ private:
|
||||
void convertParamToSimple() override;
|
||||
void updateGUIToMode(const modeType new_type) override;
|
||||
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer, const double normHuerjz) override;
|
||||
|
||||
void localcontMethodChanged();
|
||||
void origlcChanged();
|
||||
@ -1272,7 +1280,7 @@ public:
|
||||
|
||||
bool isMaskViewActive() 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) 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;
|
||||
|
||||
@ -1291,7 +1299,7 @@ private:
|
||||
void convertParamToSimple() override;
|
||||
void updateGUIToMode(const modeType new_type) override;
|
||||
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer, const double normHuerjz) override;
|
||||
|
||||
void showmaskcbMethodChanged();
|
||||
void enacbMaskChanged();
|
||||
@ -1375,7 +1383,7 @@ public:
|
||||
|
||||
bool isMaskViewActive() 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) 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 surroundChanged();
|
||||
@ -1390,7 +1398,7 @@ public:
|
||||
void adjusterChanged(Adjuster* a, double newval) override;
|
||||
void curveChanged(CurveEditor* ce) override;
|
||||
|
||||
void updateAutocompute(const float blackev, const float whiteev, const float sourceg, const float sourceab, const float targetg);
|
||||
void updateAutocompute(const float blackev, const float whiteev, const float sourceg, const float sourceab, const float targetg, const float jz1);
|
||||
|
||||
private:
|
||||
void enabledChanged() override;
|
||||
@ -1405,7 +1413,7 @@ private:
|
||||
void ciecamChanged();
|
||||
void showmaskLMethodChanged();
|
||||
void enaLMaskChanged();
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer, const double normHuerjz) override;
|
||||
|
||||
void updateLogGUI();
|
||||
void updateLogGUI2();
|
||||
@ -1462,7 +1470,7 @@ public:
|
||||
|
||||
bool isMaskViewActive() 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) 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;
|
||||
|
||||
@ -1488,7 +1496,7 @@ private:
|
||||
void convertParamToSimple() override;
|
||||
void updateGUIToMode(const modeType new_type) override;
|
||||
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer, const double normHuerjz) override;
|
||||
|
||||
void showmask_MethodChanged();
|
||||
void enamaskChanged();
|
||||
@ -1498,4 +1506,221 @@ private:
|
||||
void updateMaskGUI();
|
||||
};
|
||||
|
||||
|
||||
/* ==== Locallabcie ==== */
|
||||
class Locallabcie:
|
||||
public Gtk::Box,
|
||||
public ThresholdAdjusterListener,
|
||||
public LocallabTool
|
||||
{
|
||||
private:
|
||||
Adjuster* const sensicie;
|
||||
Adjuster* const reparcie;
|
||||
Gtk::CheckButton* const jabcie;
|
||||
MyComboBoxText* const modecam;
|
||||
MyComboBoxText* const modecie;
|
||||
Gtk::Frame* const jzFrame;
|
||||
Gtk::Box* const modeHBoxcam;
|
||||
Gtk::Box* const modeHBoxcie;
|
||||
Gtk::Frame* const cieFrame;
|
||||
Gtk::CheckButton* const Autograycie;
|
||||
Adjuster* const sourceGraycie;
|
||||
Adjuster* const sourceabscie;
|
||||
MyComboBoxText* const sursourcie;
|
||||
Gtk::Box* const surHBoxcie;
|
||||
Gtk::Frame* const cie1Frame;
|
||||
Gtk::Frame* const cie1lightFrame;
|
||||
Gtk::Frame* const cie1contFrame;
|
||||
Gtk::Frame* const cie1colorFrame;
|
||||
Gtk::Frame* const czlightFrame;
|
||||
// Gtk::Frame* const czcontFrame;
|
||||
Gtk::Frame* const czcolorFrame;
|
||||
Gtk::Frame* const PQFrame;
|
||||
Gtk::CheckButton* const qtoj;
|
||||
Adjuster* const lightlcie;
|
||||
Adjuster* const lightjzcie;
|
||||
Adjuster* const contjzcie;
|
||||
Adjuster* const adapjzcie;
|
||||
Adjuster* const jz100;
|
||||
Adjuster* const pqremap;
|
||||
Adjuster* const pqremapcam16;
|
||||
Gtk::CheckButton* const forcejz;
|
||||
MyExpander* const expjz;
|
||||
Gtk::Frame* const jzshFrame;
|
||||
Adjuster* const hljzcie;
|
||||
Adjuster* const hlthjzcie;
|
||||
Adjuster* const shjzcie;
|
||||
Adjuster* const shthjzcie;
|
||||
Adjuster* const radjzcie;
|
||||
|
||||
MyExpander* const expwavjz;
|
||||
|
||||
Gtk::Frame* const contFramejz;
|
||||
Adjuster* const sigmalcjz;
|
||||
CurveEditorGroup* const LocalcurveEditorwavjz;
|
||||
FlatCurveEditor* const wavshapejz;
|
||||
ThresholdAdjuster* const csThresholdjz;
|
||||
Gtk::Frame* const clariFramejz;
|
||||
Adjuster* const clarilresjz;
|
||||
Adjuster* const claricresjz;
|
||||
Adjuster* const clarisoftjz;
|
||||
|
||||
MyExpander* const expcam16;
|
||||
|
||||
Adjuster* const lightqcie;
|
||||
Adjuster* const contlcie;
|
||||
Adjuster* const contqcie;
|
||||
Adjuster* const contthrescie;
|
||||
Gtk::Frame* const logjzFrame;
|
||||
Gtk::CheckButton* const logjz;
|
||||
Adjuster* const blackEvjz;
|
||||
Adjuster* const whiteEvjz;
|
||||
Adjuster* const targetjz;
|
||||
Gtk::Frame* const bevwevFrame;
|
||||
Gtk::CheckButton* const forcebw;
|
||||
|
||||
Gtk::Frame* const sigmoidFrame;
|
||||
Adjuster* const sigmoidldacie;
|
||||
Adjuster* const sigmoidthcie;
|
||||
Adjuster* const sigmoidblcie;
|
||||
Gtk::CheckButton* const sigmoidqjcie;
|
||||
Gtk::Frame* const sigmoidjzFrame;
|
||||
Gtk::CheckButton* const sigjz;
|
||||
Adjuster* const sigmoidldajzcie;
|
||||
Adjuster* const sigmoidthjzcie;
|
||||
Adjuster* const sigmoidbljzcie;
|
||||
|
||||
Adjuster* const colorflcie;
|
||||
Adjuster* const saturlcie;
|
||||
Adjuster* const rstprotectcie;
|
||||
Adjuster* const chromlcie;
|
||||
Adjuster* const huecie;
|
||||
CurveEditorGroup* const cieCurveEditorG;
|
||||
MyComboBoxText* const toneMethodcie;
|
||||
DiagonalCurveEditor* const shapecie;
|
||||
CurveEditorGroup* const cieCurveEditorG2;
|
||||
MyComboBoxText* const toneMethodcie2;
|
||||
DiagonalCurveEditor* const shapecie2;
|
||||
|
||||
Adjuster* const chromjzcie;
|
||||
Adjuster* const saturjzcie;
|
||||
Adjuster* const huejzcie;
|
||||
CurveEditorGroup* const jz1CurveEditorG;
|
||||
DiagonalCurveEditor* const shapejz;
|
||||
DiagonalCurveEditor* const shapecz;
|
||||
|
||||
|
||||
Gtk::Frame* const HFramejz;
|
||||
Gtk::Frame* const JzHFramejz;
|
||||
CurveEditorGroup* const jz2CurveEditorG;
|
||||
CurveEditorGroup* const jz3CurveEditorG;
|
||||
DiagonalCurveEditor* const shapeczjz;
|
||||
FlatCurveEditor* const HHshapejz;
|
||||
FlatCurveEditor* const CHshapejz;
|
||||
FlatCurveEditor* const LHshapejz;
|
||||
Adjuster* const softjzcie;
|
||||
Adjuster* const thrhjzcie;
|
||||
Gtk::CheckButton* const chjzcie;
|
||||
Adjuster* const strsoftjzcie;
|
||||
|
||||
/*
|
||||
Gtk::Frame* const ciezFrame;
|
||||
Adjuster* const lightlzcam;
|
||||
Adjuster* const lightqzcam;
|
||||
Adjuster* const contlzcam;
|
||||
Adjuster* const contqzcam;
|
||||
Adjuster* const contthreszcam;
|
||||
Adjuster* const colorflzcam;
|
||||
Adjuster* const saturzcam;
|
||||
Adjuster* const chromzcam;
|
||||
*/
|
||||
MyExpander* const expLcie;
|
||||
Gtk::Frame* const cie2Frame;
|
||||
Adjuster* const targetGraycie;
|
||||
Adjuster* const targabscie;
|
||||
Adjuster* const detailcie;
|
||||
Adjuster* const catadcie;
|
||||
MyComboBoxText* const surroundcie;
|
||||
Gtk::Box* const surrHBoxcie;
|
||||
|
||||
MyExpander* const exprecovcie;
|
||||
Gtk::Label* const maskusablecie;
|
||||
Gtk::Label* const maskunusablecie;
|
||||
Adjuster* const recothrescie;
|
||||
Adjuster* const lowthrescie;
|
||||
Adjuster* const higthrescie;
|
||||
Adjuster* const decaycie;
|
||||
|
||||
MyExpander* const expmaskcie;
|
||||
MyComboBoxText* const showmaskcieMethod;
|
||||
Gtk::CheckButton* const enacieMask;
|
||||
CurveEditorGroup* const maskcieCurveEditorG;
|
||||
FlatCurveEditor* const CCmaskcieshape;
|
||||
FlatCurveEditor* const LLmaskcieshape;
|
||||
FlatCurveEditor* const HHmaskcieshape;
|
||||
Adjuster* const blendmaskcie;
|
||||
Adjuster* const radmaskcie;
|
||||
Adjuster* const lapmaskcie;
|
||||
Adjuster* const chromaskcie;
|
||||
Adjuster* const gammaskcie;
|
||||
Adjuster* const slomaskcie;
|
||||
|
||||
CurveEditorGroup* const mask2cieCurveEditorG;
|
||||
DiagonalCurveEditor* const Lmaskcieshape;
|
||||
|
||||
sigc::connection AutograycieConn, forcejzConn, forcebwConn, qtojConn, showmaskcieMethodConn, enacieMaskConn, jabcieConn, sursourcieconn, surroundcieconn, modecieconn, modecamconn, sigmoidqjcieconn, logjzconn, sigjzconn, chjzcieconn, toneMethodcieConn, toneMethodcieConn2;
|
||||
public:
|
||||
Locallabcie();
|
||||
~Locallabcie();
|
||||
|
||||
bool isMaskViewActive() 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 updateAdviceTooltips(const bool showTooltips) override;
|
||||
void setDefaultExpanderVisibility() override;
|
||||
|
||||
void disableListener() override;
|
||||
void enableListener() override;
|
||||
void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
|
||||
void write(rtengine::procparams::ProcParams* pp, 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(ThresholdAdjuster* a, double newBottom, double newTop) override {}; // Not used
|
||||
// void adjusterChanged3(ThresholdAdjuster* a, double newBottom, double newTop) override {};
|
||||
void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override {}; // Not used
|
||||
void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop) 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 sursourcieChanged();
|
||||
void surroundcieChanged();
|
||||
void modecieChanged();
|
||||
void modecamChanged();
|
||||
void curveChanged(CurveEditor* ce) override;
|
||||
void toneMethodcieChanged();
|
||||
void toneMethodcie2Changed();
|
||||
void updateAutocompute(const float blackev, const float whiteev, const float sourceg, const float sourceab, const float targetg, const float jz1);
|
||||
|
||||
private:
|
||||
void enabledChanged() override;
|
||||
void convertParamToNormal() override;
|
||||
void convertParamToSimple() override;
|
||||
void updateGUIToMode(const modeType new_type) override;
|
||||
void complexityModeChanged();
|
||||
void AutograycieChanged();
|
||||
void forcejzChanged();
|
||||
void forcebwChanged();
|
||||
void qtojChanged();
|
||||
void jabcieChanged();
|
||||
void sigmoidqjcieChanged();
|
||||
void logjzChanged();
|
||||
void sigjzChanged();
|
||||
void chjzcieChanged();
|
||||
void updatecieGUI();
|
||||
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer, const double normHuerjz) override;
|
||||
void showmaskcieMethodChanged();
|
||||
void enacieMaskChanged();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -606,6 +606,7 @@ void Options::setDefaults()
|
||||
rtSettings.gamutICC = true;
|
||||
rtSettings.gamutLch = true;
|
||||
rtSettings.amchroma = 40;//between 20 and 140 low values increase effect..and also artifacts, high values reduces
|
||||
rtSettings.amchromajz = 40;//between 5 and 100 low values increase effect..and also artifacts, high values reduces
|
||||
rtSettings.level0_cbdl = 0;
|
||||
rtSettings.level123_cbdl = 30;
|
||||
//locallab
|
||||
@ -1748,6 +1749,10 @@ void Options::readFromFile(Glib::ustring fname)
|
||||
rtSettings.amchroma = keyFile.get_integer("Color Management", "Amountchroma");
|
||||
}
|
||||
|
||||
if (keyFile.has_key("Color Management", "JzAmountchroma")) {
|
||||
rtSettings.amchromajz = keyFile.get_integer("Color Management", "JzAmountchroma");
|
||||
}
|
||||
|
||||
if (keyFile.has_key("Color Management", "ClutsDirectory")) {
|
||||
clutsDir = keyFile.get_string("Color Management", "ClutsDirectory");
|
||||
}
|
||||
@ -2376,6 +2381,7 @@ void Options::saveToFile(Glib::ustring fname)
|
||||
keyFile.set_boolean("Color Management", "GamutLch", rtSettings.gamutLch);
|
||||
keyFile.set_integer("Color Management", "ProtectRed", rtSettings.protectred);
|
||||
keyFile.set_integer("Color Management", "Amountchroma", rtSettings.amchroma);
|
||||
keyFile.set_integer("Color Management", "JzAmountchroma", rtSettings.amchromajz);
|
||||
keyFile.set_double("Color Management", "ProtectRedH", rtSettings.protectredh);
|
||||
keyFile.set_integer("Color Management", "CRI", rtSettings.CRI_color);
|
||||
keyFile.set_integer("Color Management", "DenoiseLabgamma", rtSettings.denoiselabgamma);
|
||||
|
@ -1118,12 +1118,15 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
||||
locallab.spots.at(j).shortc = locallab.spots.at(j).shortc && pSpot.shortc == otherSpot.shortc;
|
||||
locallab.spots.at(j).savrest = locallab.spots.at(j).savrest && pSpot.savrest == otherSpot.savrest;
|
||||
locallab.spots.at(j).scopemask = locallab.spots.at(j).scopemask && pSpot.scopemask == otherSpot.scopemask;
|
||||
locallab.spots.at(j).denoichmask = locallab.spots.at(j).denoichmask && pSpot.denoichmask == otherSpot.denoichmask;
|
||||
locallab.spots.at(j).lumask = locallab.spots.at(j).lumask && pSpot.lumask == otherSpot.lumask;
|
||||
// Color & Light
|
||||
locallab.spots.at(j).visicolor = locallab.spots.at(j).visicolor && pSpot.visicolor == otherSpot.visicolor;
|
||||
locallab.spots.at(j).expcolor = locallab.spots.at(j).expcolor && pSpot.expcolor == otherSpot.expcolor;
|
||||
locallab.spots.at(j).complexcolor = locallab.spots.at(j).complexcolor && pSpot.complexcolor == otherSpot.complexcolor;
|
||||
locallab.spots.at(j).curvactiv = locallab.spots.at(j).curvactiv && pSpot.curvactiv == otherSpot.curvactiv;
|
||||
locallab.spots.at(j).reparcol = locallab.spots.at(j).reparcol && pSpot.reparcol == otherSpot.reparcol;
|
||||
locallab.spots.at(j).gamc = locallab.spots.at(j).gamc && pSpot.gamc == otherSpot.gamc;
|
||||
locallab.spots.at(j).lightness = locallab.spots.at(j).lightness && pSpot.lightness == otherSpot.lightness;
|
||||
locallab.spots.at(j).contrast = locallab.spots.at(j).contrast && pSpot.contrast == otherSpot.contrast;
|
||||
locallab.spots.at(j).chroma = locallab.spots.at(j).chroma && pSpot.chroma == otherSpot.chroma;
|
||||
@ -1200,6 +1203,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
||||
locallab.spots.at(j).expchroma = locallab.spots.at(j).expchroma && pSpot.expchroma == otherSpot.expchroma;
|
||||
locallab.spots.at(j).sensiex = locallab.spots.at(j).sensiex && pSpot.sensiex == otherSpot.sensiex;
|
||||
locallab.spots.at(j).structexp = locallab.spots.at(j).structexp && pSpot.structexp == otherSpot.structexp;
|
||||
locallab.spots.at(j).gamex = locallab.spots.at(j).gamex && pSpot.gamex == otherSpot.gamex;
|
||||
locallab.spots.at(j).blurexpde = locallab.spots.at(j).blurexpde && pSpot.blurexpde == otherSpot.blurexpde;
|
||||
locallab.spots.at(j).strexp = locallab.spots.at(j).strexp && pSpot.strexp == otherSpot.strexp;
|
||||
locallab.spots.at(j).angexp = locallab.spots.at(j).angexp && pSpot.angexp == otherSpot.angexp;
|
||||
@ -1283,6 +1287,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
||||
locallab.spots.at(j).complexvibrance = locallab.spots.at(j).complexvibrance && pSpot.complexvibrance == otherSpot.complexvibrance;
|
||||
locallab.spots.at(j).saturated = locallab.spots.at(j).saturated && pSpot.saturated == otherSpot.saturated;
|
||||
locallab.spots.at(j).pastels = locallab.spots.at(j).pastels && pSpot.pastels == otherSpot.pastels;
|
||||
locallab.spots.at(j).vibgam = locallab.spots.at(j).vibgam && pSpot.vibgam == otherSpot.vibgam;
|
||||
locallab.spots.at(j).warm = locallab.spots.at(j).warm && pSpot.warm == otherSpot.warm;
|
||||
locallab.spots.at(j).psthreshold = locallab.spots.at(j).psthreshold && pSpot.psthreshold == otherSpot.psthreshold;
|
||||
locallab.spots.at(j).protectskins = locallab.spots.at(j).protectskins && pSpot.protectskins == otherSpot.protectskins;
|
||||
@ -1359,6 +1364,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
||||
locallab.spots.at(j).noiselumc = locallab.spots.at(j).noiselumc && pSpot.noiselumc == otherSpot.noiselumc;
|
||||
locallab.spots.at(j).noiselumdetail = locallab.spots.at(j).noiselumdetail && pSpot.noiselumdetail == otherSpot.noiselumdetail;
|
||||
locallab.spots.at(j).noiselequal = locallab.spots.at(j).noiselequal && pSpot.noiselequal == otherSpot.noiselequal;
|
||||
locallab.spots.at(j).noisegam = locallab.spots.at(j).noisegam && pSpot.noisegam == otherSpot.noisegam;
|
||||
locallab.spots.at(j).noisechrof = locallab.spots.at(j).noisechrof && pSpot.noisechrof == otherSpot.noisechrof;
|
||||
locallab.spots.at(j).noisechroc = locallab.spots.at(j).noisechroc && pSpot.noisechroc == otherSpot.noisechroc;
|
||||
locallab.spots.at(j).noisechrodetail = locallab.spots.at(j).noisechrodetail && pSpot.noisechrodetail == otherSpot.noisechrodetail;
|
||||
@ -1477,6 +1483,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
||||
locallab.spots.at(j).shardamping = locallab.spots.at(j).shardamping && pSpot.shardamping == otherSpot.shardamping;
|
||||
locallab.spots.at(j).shariter = locallab.spots.at(j).shariter && pSpot.shariter == otherSpot.shariter;
|
||||
locallab.spots.at(j).sharblur = locallab.spots.at(j).sharblur && pSpot.sharblur == otherSpot.sharblur;
|
||||
locallab.spots.at(j).shargam = locallab.spots.at(j).shargam && pSpot.shargam == otherSpot.shargam;
|
||||
locallab.spots.at(j).sensisha = locallab.spots.at(j).sensisha && pSpot.sensisha == otherSpot.sensisha;
|
||||
locallab.spots.at(j).inverssha = locallab.spots.at(j).inverssha && pSpot.inverssha == otherSpot.inverssha;
|
||||
// Local Contrast
|
||||
@ -1494,6 +1501,9 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
||||
locallab.spots.at(j).residshathr = locallab.spots.at(j).residshathr && pSpot.residshathr == otherSpot.residshathr;
|
||||
locallab.spots.at(j).residhi = locallab.spots.at(j).residhi && pSpot.residhi == otherSpot.residhi;
|
||||
locallab.spots.at(j).residhithr = locallab.spots.at(j).residhithr && pSpot.residhithr == otherSpot.residhithr;
|
||||
locallab.spots.at(j).gamlc = locallab.spots.at(j).gamlc && pSpot.gamlc == otherSpot.gamlc;
|
||||
locallab.spots.at(j).residgam = locallab.spots.at(j).residgam && pSpot.residgam == otherSpot.residgam;
|
||||
locallab.spots.at(j).residslop = locallab.spots.at(j).residslop && pSpot.residslop == otherSpot.residslop;
|
||||
locallab.spots.at(j).residblur = locallab.spots.at(j).residblur && pSpot.residblur == otherSpot.residblur;
|
||||
locallab.spots.at(j).levelblur = locallab.spots.at(j).levelblur && pSpot.levelblur == otherSpot.levelblur;
|
||||
locallab.spots.at(j).sigmabl = locallab.spots.at(j).sigmabl && pSpot.sigmabl == otherSpot.sigmabl;
|
||||
@ -1662,6 +1672,111 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
||||
locallab.spots.at(j).Lmask_curve = locallab.spots.at(j).Lmask_curve && pSpot.Lmask_curve == otherSpot.Lmask_curve;
|
||||
locallab.spots.at(j).LLmask_curvewav = locallab.spots.at(j).LLmask_curvewav && pSpot.LLmask_curvewav == otherSpot.LLmask_curvewav;
|
||||
locallab.spots.at(j).csthresholdmask = locallab.spots.at(j).csthresholdmask && pSpot.csthresholdmask == otherSpot.csthresholdmask;
|
||||
|
||||
//ciecam
|
||||
locallab.spots.at(j).visicie = locallab.spots.at(j).visicie && pSpot.visicie == otherSpot.visicie;
|
||||
locallab.spots.at(j).expcie = locallab.spots.at(j).expcie && pSpot.expcie == otherSpot.expcie;
|
||||
locallab.spots.at(j).complexcie = locallab.spots.at(j).complexcie && pSpot.complexcie == otherSpot.complexcie;
|
||||
locallab.spots.at(j).reparcie = locallab.spots.at(j).reparcie && pSpot.reparcie == otherSpot.reparcie;
|
||||
locallab.spots.at(j).sensicie = locallab.spots.at(j).sensicie && pSpot.sensicie == otherSpot.sensicie;
|
||||
locallab.spots.at(j).Autograycie = locallab.spots.at(j).Autograycie && pSpot.Autograycie == otherSpot.Autograycie;
|
||||
locallab.spots.at(j).forcejz = locallab.spots.at(j).forcejz && pSpot.forcejz == otherSpot.forcejz;
|
||||
locallab.spots.at(j).forcebw = locallab.spots.at(j).forcebw && pSpot.forcebw == otherSpot.forcebw;
|
||||
locallab.spots.at(j).qtoj = locallab.spots.at(j).qtoj && pSpot.qtoj == otherSpot.qtoj;
|
||||
locallab.spots.at(j).jabcie = locallab.spots.at(j).jabcie && pSpot.jabcie == otherSpot.jabcie;
|
||||
locallab.spots.at(j).sigmoidqjcie = locallab.spots.at(j).sigmoidqjcie && pSpot.sigmoidqjcie == otherSpot.sigmoidqjcie;
|
||||
locallab.spots.at(j).logjz = locallab.spots.at(j).logjz && pSpot.logjz == otherSpot.logjz;
|
||||
locallab.spots.at(j).sigjz = locallab.spots.at(j).sigjz && pSpot.sigjz == otherSpot.sigjz;
|
||||
locallab.spots.at(j).chjzcie = locallab.spots.at(j).chjzcie && pSpot.chjzcie == otherSpot.chjzcie;
|
||||
locallab.spots.at(j).sourceGraycie = locallab.spots.at(j).sourceGraycie && pSpot.sourceGraycie == otherSpot.sourceGraycie;
|
||||
locallab.spots.at(j).sourceabscie = locallab.spots.at(j).sourceabscie && pSpot.sourceabscie == otherSpot.sourceabscie;
|
||||
locallab.spots.at(j).sursourcie = locallab.spots.at(j).sursourcie && pSpot.sursourcie == otherSpot.sursourcie;
|
||||
locallab.spots.at(j).modecam = locallab.spots.at(j).modecam && pSpot.modecam == otherSpot.modecam;
|
||||
locallab.spots.at(j).modecie = locallab.spots.at(j).modecie && pSpot.modecie == otherSpot.modecie;
|
||||
locallab.spots.at(j).saturlcie = locallab.spots.at(j).saturlcie && pSpot.saturlcie == otherSpot.saturlcie;
|
||||
locallab.spots.at(j).rstprotectcie = locallab.spots.at(j).rstprotectcie && pSpot.rstprotectcie == otherSpot.rstprotectcie;
|
||||
locallab.spots.at(j).chromlcie = locallab.spots.at(j).chromlcie && pSpot.chromlcie == otherSpot.chromlcie;
|
||||
locallab.spots.at(j).huecie = locallab.spots.at(j).huecie && pSpot.huecie == otherSpot.huecie;
|
||||
locallab.spots.at(j).toneMethodcie = locallab.spots.at(j).toneMethodcie && pSpot.toneMethodcie == otherSpot.toneMethodcie;
|
||||
locallab.spots.at(j).ciecurve = locallab.spots.at(j).ciecurve && pSpot.ciecurve == otherSpot.ciecurve;
|
||||
locallab.spots.at(j).toneMethodcie2 = locallab.spots.at(j).toneMethodcie2 && pSpot.toneMethodcie2 == otherSpot.toneMethodcie2;
|
||||
locallab.spots.at(j).ciecurve2 = locallab.spots.at(j).ciecurve2 && pSpot.ciecurve2 == otherSpot.ciecurve2;
|
||||
locallab.spots.at(j).chromjzcie = locallab.spots.at(j).chromjzcie && pSpot.chromjzcie == otherSpot.chromjzcie;
|
||||
locallab.spots.at(j).saturjzcie = locallab.spots.at(j).saturjzcie && pSpot.saturjzcie == otherSpot.saturjzcie;
|
||||
locallab.spots.at(j).huejzcie = locallab.spots.at(j).huejzcie && pSpot.huejzcie == otherSpot.huejzcie;
|
||||
locallab.spots.at(j).softjzcie = locallab.spots.at(j).softjzcie && pSpot.softjzcie == otherSpot.softjzcie;
|
||||
locallab.spots.at(j).strsoftjzcie = locallab.spots.at(j).strsoftjzcie && pSpot.strsoftjzcie == otherSpot.strsoftjzcie;
|
||||
locallab.spots.at(j).thrhjzcie = locallab.spots.at(j).thrhjzcie && pSpot.thrhjzcie == otherSpot.thrhjzcie;
|
||||
locallab.spots.at(j).jzcurve = locallab.spots.at(j).jzcurve && pSpot.jzcurve == otherSpot.jzcurve;
|
||||
locallab.spots.at(j).czcurve = locallab.spots.at(j).czcurve && pSpot.czcurve == otherSpot.czcurve;
|
||||
locallab.spots.at(j).czjzcurve = locallab.spots.at(j).czjzcurve && pSpot.czjzcurve == otherSpot.czjzcurve;
|
||||
locallab.spots.at(j).HHcurvejz = locallab.spots.at(j).HHcurvejz && pSpot.HHcurvejz == otherSpot.HHcurvejz;
|
||||
locallab.spots.at(j).CHcurvejz = locallab.spots.at(j).CHcurvejz && pSpot.CHcurvejz == otherSpot.CHcurvejz;
|
||||
locallab.spots.at(j).LHcurvejz = locallab.spots.at(j).LHcurvejz && pSpot.LHcurvejz == otherSpot.LHcurvejz;
|
||||
locallab.spots.at(j).lightlcie = locallab.spots.at(j).lightlcie && pSpot.lightlcie == otherSpot.lightlcie;
|
||||
locallab.spots.at(j).lightjzcie = locallab.spots.at(j).lightjzcie && pSpot.lightjzcie == otherSpot.lightjzcie;
|
||||
locallab.spots.at(j).lightqcie = locallab.spots.at(j).lightqcie && pSpot.lightqcie == otherSpot.lightqcie;
|
||||
locallab.spots.at(j).contlcie = locallab.spots.at(j).contlcie && pSpot.contlcie == otherSpot.contlcie;
|
||||
locallab.spots.at(j).contjzcie = locallab.spots.at(j).contjzcie && pSpot.contjzcie == otherSpot.contjzcie;
|
||||
locallab.spots.at(j).adapjzcie = locallab.spots.at(j).adapjzcie && pSpot.adapjzcie == otherSpot.adapjzcie;
|
||||
locallab.spots.at(j).jz100 = locallab.spots.at(j).jz100 && pSpot.jz100 == otherSpot.jz100;
|
||||
locallab.spots.at(j).pqremap = locallab.spots.at(j).pqremap && pSpot.pqremap == otherSpot.pqremap;
|
||||
locallab.spots.at(j).pqremapcam16 = locallab.spots.at(j).pqremapcam16 && pSpot.pqremapcam16 == otherSpot.pqremapcam16;
|
||||
locallab.spots.at(j).hljzcie = locallab.spots.at(j).hljzcie && pSpot.hljzcie == otherSpot.hljzcie;
|
||||
locallab.spots.at(j).hlthjzcie = locallab.spots.at(j).hlthjzcie && pSpot.hlthjzcie == otherSpot.hlthjzcie;
|
||||
locallab.spots.at(j).shjzcie = locallab.spots.at(j).shjzcie && pSpot.shjzcie == otherSpot.shjzcie;
|
||||
locallab.spots.at(j).shthjzcie = locallab.spots.at(j).shthjzcie && pSpot.shthjzcie == otherSpot.shthjzcie;
|
||||
locallab.spots.at(j).radjzcie = locallab.spots.at(j).radjzcie && pSpot.radjzcie == otherSpot.radjzcie;
|
||||
locallab.spots.at(j).contthrescie = locallab.spots.at(j).contthrescie && pSpot.contthrescie == otherSpot.contthrescie;
|
||||
locallab.spots.at(j).blackEvjz = locallab.spots.at(j).blackEvjz && pSpot.blackEvjz == otherSpot.blackEvjz;
|
||||
locallab.spots.at(j).whiteEvjz = locallab.spots.at(j).whiteEvjz && pSpot.whiteEvjz == otherSpot.whiteEvjz;
|
||||
locallab.spots.at(j).targetjz = locallab.spots.at(j).targetjz && pSpot.targetjz == otherSpot.targetjz;
|
||||
locallab.spots.at(j).sigmoidldacie = locallab.spots.at(j).sigmoidldacie && pSpot.sigmoidldacie == otherSpot.sigmoidldacie;
|
||||
locallab.spots.at(j).sigmoidthcie = locallab.spots.at(j).sigmoidthcie && pSpot.sigmoidthcie == otherSpot.sigmoidthcie;
|
||||
locallab.spots.at(j).sigmoidblcie = locallab.spots.at(j).sigmoidblcie && pSpot.sigmoidblcie == otherSpot.sigmoidblcie;
|
||||
locallab.spots.at(j).sigmoidldajzcie = locallab.spots.at(j).sigmoidldajzcie && pSpot.sigmoidldajzcie == otherSpot.sigmoidldajzcie;
|
||||
locallab.spots.at(j).sigmoidthjzcie = locallab.spots.at(j).sigmoidthjzcie && pSpot.sigmoidthjzcie == otherSpot.sigmoidthjzcie;
|
||||
locallab.spots.at(j).sigmoidbljzcie = locallab.spots.at(j).sigmoidbljzcie && pSpot.sigmoidbljzcie == otherSpot.sigmoidbljzcie;
|
||||
locallab.spots.at(j).contqcie = locallab.spots.at(j).contqcie && pSpot.contqcie == otherSpot.contqcie;
|
||||
locallab.spots.at(j).colorflcie = locallab.spots.at(j).colorflcie && pSpot.colorflcie == otherSpot.colorflcie;
|
||||
locallab.spots.at(j).targabscie = locallab.spots.at(j).targabscie && pSpot.targabscie == otherSpot.targabscie;
|
||||
locallab.spots.at(j).targetGraycie = locallab.spots.at(j).targetGraycie && pSpot.targetGraycie == otherSpot.targetGraycie;
|
||||
locallab.spots.at(j).catadcie = locallab.spots.at(j).catadcie && pSpot.catadcie == otherSpot.catadcie;
|
||||
locallab.spots.at(j).detailcie = locallab.spots.at(j).detailcie && pSpot.detailcie == otherSpot.detailcie;
|
||||
locallab.spots.at(j).surroundcie = locallab.spots.at(j).surroundcie && pSpot.surroundcie == otherSpot.surroundcie;
|
||||
/*
|
||||
locallab.spots.at(j).lightlzcam = locallab.spots.at(j).lightlzcam && pSpot.lightlzcam == otherSpot.lightlzcam;
|
||||
locallab.spots.at(j).lightqzcam = locallab.spots.at(j).lightqzcam && pSpot.lightqzcam == otherSpot.lightqzcam;
|
||||
locallab.spots.at(j).contlzcam = locallab.spots.at(j).contlzcam && pSpot.contlzcam == otherSpot.contlzcam;
|
||||
locallab.spots.at(j).contqzcam = locallab.spots.at(j).contqzcam && pSpot.contqzcam == otherSpot.contqzcam;
|
||||
locallab.spots.at(j).contthreszcam = locallab.spots.at(j).contthreszcam && pSpot.contthreszcam == otherSpot.contthreszcam;
|
||||
locallab.spots.at(j).colorflzcam = locallab.spots.at(j).colorflzcam && pSpot.colorflzcam == otherSpot.colorflzcam;
|
||||
locallab.spots.at(j).saturzcam = locallab.spots.at(j).saturzcam && pSpot.saturzcam == otherSpot.saturzcam;
|
||||
locallab.spots.at(j).chromzcam = locallab.spots.at(j).chromzcam && pSpot.chromzcam == otherSpot.chromzcam;
|
||||
*/
|
||||
locallab.spots.at(j).enacieMask = locallab.spots.at(j).enaSHMask && pSpot.enaSHMask == otherSpot.enaSHMask;
|
||||
locallab.spots.at(j).CCmaskciecurve = locallab.spots.at(j).CCmaskciecurve && pSpot.CCmaskciecurve == otherSpot.CCmaskciecurve;
|
||||
locallab.spots.at(j).LLmaskciecurve = locallab.spots.at(j).LLmaskciecurve && pSpot.LLmaskciecurve == otherSpot.LLmaskciecurve;
|
||||
locallab.spots.at(j).HHmaskciecurve = locallab.spots.at(j).HHmaskciecurve && pSpot.HHmaskciecurve == otherSpot.HHmaskciecurve;
|
||||
locallab.spots.at(j).blendmaskcie = locallab.spots.at(j).blendmaskcie && pSpot.blendmaskcie == otherSpot.blendmaskcie;
|
||||
locallab.spots.at(j).radmaskcie = locallab.spots.at(j).radmaskcie && pSpot.radmaskcie == otherSpot.radmaskcie;
|
||||
locallab.spots.at(j).chromaskcie = locallab.spots.at(j).chromaskcie && pSpot.chromaskcie == otherSpot.chromaskcie;
|
||||
locallab.spots.at(j).lapmaskcie = locallab.spots.at(j).lapmaskcie && pSpot.lapmaskcie == otherSpot.lapmaskcie;
|
||||
locallab.spots.at(j).gammaskcie = locallab.spots.at(j).gammaskcie && pSpot.gammaskcie == otherSpot.gammaskcie;
|
||||
locallab.spots.at(j).slomaskcie = locallab.spots.at(j).slomaskcie && pSpot.slomaskcie == otherSpot.slomaskcie;
|
||||
locallab.spots.at(j).Lmaskciecurve = locallab.spots.at(j).Lmaskciecurve && pSpot.Lmaskciecurve == otherSpot.Lmaskciecurve;
|
||||
locallab.spots.at(j).recothrescie = locallab.spots.at(j).recothrescie && pSpot.recothrescie == otherSpot.recothrescie;
|
||||
locallab.spots.at(j).lowthrescie = locallab.spots.at(j).lowthrescie && pSpot.lowthrescie == otherSpot.lowthrescie;
|
||||
locallab.spots.at(j).higthrescie = locallab.spots.at(j).higthrescie && pSpot.higthrescie == otherSpot.higthrescie;
|
||||
locallab.spots.at(j).decaycie = locallab.spots.at(j).decaycie && pSpot.decaycie == otherSpot.decaycie;
|
||||
locallab.spots.at(j).locwavcurvejz = locallab.spots.at(j).locwavcurvejz && pSpot.locwavcurvejz == otherSpot.locwavcurvejz;
|
||||
locallab.spots.at(j).csthresholdjz = locallab.spots.at(j).csthresholdjz && pSpot.csthresholdjz == otherSpot.csthresholdjz;
|
||||
locallab.spots.at(j).sigmalcjz = locallab.spots.at(j).sigmalcjz && pSpot.sigmalcjz == otherSpot.sigmalcjz;
|
||||
locallab.spots.at(j).clarilresjz = locallab.spots.at(j).clarilresjz && pSpot.clarilresjz == otherSpot.clarilresjz;
|
||||
locallab.spots.at(j).claricresjz = locallab.spots.at(j).claricresjz && pSpot.claricresjz == otherSpot.claricresjz;
|
||||
locallab.spots.at(j).clarisoftjz = locallab.spots.at(j).clarisoftjz && pSpot.clarisoftjz == otherSpot.clarisoftjz;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -3425,6 +3540,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
||||
toEdit.locallab.spots.at(i).savrest = mods.locallab.spots.at(i).savrest;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).denoichmask) {
|
||||
toEdit.locallab.spots.at(i).denoichmask = mods.locallab.spots.at(i).denoichmask;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).scopemask) {
|
||||
toEdit.locallab.spots.at(i).scopemask = mods.locallab.spots.at(i).scopemask;
|
||||
}
|
||||
@ -3458,6 +3577,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
||||
toEdit.locallab.spots.at(i).reparcol = mods.locallab.spots.at(i).reparcol;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).gamc) {
|
||||
toEdit.locallab.spots.at(i).gamc = mods.locallab.spots.at(i).gamc;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).contrast) {
|
||||
toEdit.locallab.spots.at(i).contrast = mods.locallab.spots.at(i).contrast;
|
||||
}
|
||||
@ -3755,10 +3878,18 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
||||
toEdit.locallab.spots.at(i).structexp = mods.locallab.spots.at(i).structexp;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).gamex) {
|
||||
toEdit.locallab.spots.at(i).gamex = mods.locallab.spots.at(i).gamex;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).blurexpde) {
|
||||
toEdit.locallab.spots.at(i).blurexpde = mods.locallab.spots.at(i).blurexpde;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).gamex) {
|
||||
toEdit.locallab.spots.at(i).gamex = mods.locallab.spots.at(i).gamex;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).strexp) {
|
||||
toEdit.locallab.spots.at(i).strexp = mods.locallab.spots.at(i).strexp;
|
||||
}
|
||||
@ -4067,6 +4198,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
||||
toEdit.locallab.spots.at(i).pastels = mods.locallab.spots.at(i).pastels;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).vibgam) {
|
||||
toEdit.locallab.spots.at(i).vibgam = mods.locallab.spots.at(i).vibgam;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).warm) {
|
||||
toEdit.locallab.spots.at(i).warm = mods.locallab.spots.at(i).warm;
|
||||
}
|
||||
@ -4365,6 +4500,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
||||
toEdit.locallab.spots.at(i).noiselequal = mods.locallab.spots.at(i).noiselequal;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).noisegam) {
|
||||
toEdit.locallab.spots.at(i).noisegam = mods.locallab.spots.at(i).noisegam;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).noisechrof) {
|
||||
toEdit.locallab.spots.at(i).noisechrof = mods.locallab.spots.at(i).noisechrof;
|
||||
}
|
||||
@ -4829,6 +4968,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
||||
toEdit.locallab.spots.at(i).sharblur = mods.locallab.spots.at(i).sharblur;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).shargam) {
|
||||
toEdit.locallab.spots.at(i).shargam = mods.locallab.spots.at(i).shargam;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).sensisha) {
|
||||
toEdit.locallab.spots.at(i).sensisha = mods.locallab.spots.at(i).sensisha;
|
||||
}
|
||||
@ -4894,6 +5037,18 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
||||
toEdit.locallab.spots.at(i).residhithr = mods.locallab.spots.at(i).residhithr;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).gamlc) {
|
||||
toEdit.locallab.spots.at(i).gamlc = mods.locallab.spots.at(i).gamlc;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).residgam) {
|
||||
toEdit.locallab.spots.at(i).residgam = mods.locallab.spots.at(i).residgam;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).residslop) {
|
||||
toEdit.locallab.spots.at(i).residslop = mods.locallab.spots.at(i).residslop;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).residblur) {
|
||||
toEdit.locallab.spots.at(i).residblur = mods.locallab.spots.at(i).residblur;
|
||||
}
|
||||
@ -5536,6 +5691,400 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
||||
toEdit.locallab.spots.at(i).csthresholdmask = mods.locallab.spots.at(i).csthresholdmask;
|
||||
}
|
||||
|
||||
//ciecam
|
||||
if (locallab.spots.at(i).visicie) {
|
||||
toEdit.locallab.spots.at(i).visicie = mods.locallab.spots.at(i).visicie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).expcie) {
|
||||
toEdit.locallab.spots.at(i).expcie = mods.locallab.spots.at(i).expcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).complexcie) {
|
||||
toEdit.locallab.spots.at(i).complexcie = mods.locallab.spots.at(i).complexcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).reparcie) {
|
||||
toEdit.locallab.spots.at(i).reparcie = mods.locallab.spots.at(i).reparcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).sensicie) {
|
||||
toEdit.locallab.spots.at(i).sensicie = mods.locallab.spots.at(i).sensicie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).Autograycie) {
|
||||
toEdit.locallab.spots.at(i).Autograycie = mods.locallab.spots.at(i).Autograycie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).forcejz) {
|
||||
toEdit.locallab.spots.at(i).forcejz = mods.locallab.spots.at(i).forcejz;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).forcebw) {
|
||||
toEdit.locallab.spots.at(i).forcebw = mods.locallab.spots.at(i).forcebw;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).qtoj) {
|
||||
toEdit.locallab.spots.at(i).qtoj = mods.locallab.spots.at(i).qtoj;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).jabcie) {
|
||||
toEdit.locallab.spots.at(i).jabcie = mods.locallab.spots.at(i).jabcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).sigmoidqjcie) {
|
||||
toEdit.locallab.spots.at(i).sigmoidqjcie = mods.locallab.spots.at(i).sigmoidqjcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).logjz) {
|
||||
toEdit.locallab.spots.at(i).logjz = mods.locallab.spots.at(i).logjz;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).sigjz) {
|
||||
toEdit.locallab.spots.at(i).sigjz = mods.locallab.spots.at(i).sigjz;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).chjzcie) {
|
||||
toEdit.locallab.spots.at(i).chjzcie = mods.locallab.spots.at(i).chjzcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).sourceGraycie) {
|
||||
toEdit.locallab.spots.at(i).sourceGraycie = mods.locallab.spots.at(i).sourceGraycie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).sourceabscie) {
|
||||
toEdit.locallab.spots.at(i).sourceabscie = mods.locallab.spots.at(i).sourceabscie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).sursourcie) {
|
||||
toEdit.locallab.spots.at(i).sursourcie = mods.locallab.spots.at(i).sursourcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).modecam) {
|
||||
toEdit.locallab.spots.at(i).modecam = mods.locallab.spots.at(i).modecam;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).modecie) {
|
||||
toEdit.locallab.spots.at(i).modecie = mods.locallab.spots.at(i).modecie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).saturlcie) {
|
||||
toEdit.locallab.spots.at(i).saturlcie = mods.locallab.spots.at(i).saturlcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).rstprotectcie) {
|
||||
toEdit.locallab.spots.at(i).rstprotectcie = mods.locallab.spots.at(i).rstprotectcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).chromlcie) {
|
||||
toEdit.locallab.spots.at(i).chromlcie = mods.locallab.spots.at(i).chromlcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).huecie) {
|
||||
toEdit.locallab.spots.at(i).huecie = mods.locallab.spots.at(i).huecie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).toneMethodcie) {
|
||||
toEdit.locallab.spots.at(i).toneMethodcie = mods.locallab.spots.at(i).toneMethodcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).toneMethodcie2) {
|
||||
toEdit.locallab.spots.at(i).toneMethodcie2 = mods.locallab.spots.at(i).toneMethodcie2;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).chromjzcie) {
|
||||
toEdit.locallab.spots.at(i).chromjzcie = mods.locallab.spots.at(i).chromjzcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).saturjzcie) {
|
||||
toEdit.locallab.spots.at(i).saturjzcie = mods.locallab.spots.at(i).saturjzcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).huejzcie) {
|
||||
toEdit.locallab.spots.at(i).huejzcie = mods.locallab.spots.at(i).huejzcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).softjzcie) {
|
||||
toEdit.locallab.spots.at(i).softjzcie = mods.locallab.spots.at(i).softjzcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).strsoftjzcie) {
|
||||
toEdit.locallab.spots.at(i).strsoftjzcie = mods.locallab.spots.at(i).strsoftjzcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).thrhjzcie) {
|
||||
toEdit.locallab.spots.at(i).thrhjzcie = mods.locallab.spots.at(i).thrhjzcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).ciecurve) {
|
||||
toEdit.locallab.spots.at(i).ciecurve = mods.locallab.spots.at(i).ciecurve;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).ciecurve2) {
|
||||
toEdit.locallab.spots.at(i).ciecurve2 = mods.locallab.spots.at(i).ciecurve2;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).jzcurve) {
|
||||
toEdit.locallab.spots.at(i).jzcurve = mods.locallab.spots.at(i).jzcurve;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).czjzcurve) {
|
||||
toEdit.locallab.spots.at(i).czjzcurve = mods.locallab.spots.at(i).czjzcurve;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).HHcurvejz) {
|
||||
toEdit.locallab.spots.at(i).HHcurvejz = mods.locallab.spots.at(i).HHcurvejz;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).CHcurvejz) {
|
||||
toEdit.locallab.spots.at(i).CHcurvejz = mods.locallab.spots.at(i).CHcurvejz;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).LHcurvejz) {
|
||||
toEdit.locallab.spots.at(i).LHcurvejz = mods.locallab.spots.at(i).LHcurvejz;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).lightlcie) {
|
||||
toEdit.locallab.spots.at(i).lightlcie = mods.locallab.spots.at(i).lightlcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).lightjzcie) {
|
||||
toEdit.locallab.spots.at(i).lightjzcie = mods.locallab.spots.at(i).lightjzcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).lightqcie) {
|
||||
toEdit.locallab.spots.at(i).lightqcie = mods.locallab.spots.at(i).lightqcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).contlcie) {
|
||||
toEdit.locallab.spots.at(i).contlcie = mods.locallab.spots.at(i).contlcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).contjzcie) {
|
||||
toEdit.locallab.spots.at(i).contjzcie = mods.locallab.spots.at(i).contjzcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).adapjzcie) {
|
||||
toEdit.locallab.spots.at(i).adapjzcie = mods.locallab.spots.at(i).adapjzcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).jz100) {
|
||||
toEdit.locallab.spots.at(i).jz100 = mods.locallab.spots.at(i).jz100;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).pqremap) {
|
||||
toEdit.locallab.spots.at(i).pqremap = mods.locallab.spots.at(i).pqremap;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).pqremapcam16) {
|
||||
toEdit.locallab.spots.at(i).pqremapcam16 = mods.locallab.spots.at(i).pqremapcam16;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).hljzcie) {
|
||||
toEdit.locallab.spots.at(i).hljzcie = mods.locallab.spots.at(i).hljzcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).hlthjzcie) {
|
||||
toEdit.locallab.spots.at(i).hlthjzcie = mods.locallab.spots.at(i).hlthjzcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).shjzcie) {
|
||||
toEdit.locallab.spots.at(i).shjzcie = mods.locallab.spots.at(i).shjzcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).shthjzcie) {
|
||||
toEdit.locallab.spots.at(i).shthjzcie = mods.locallab.spots.at(i).shthjzcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).radjzcie) {
|
||||
toEdit.locallab.spots.at(i).radjzcie = mods.locallab.spots.at(i).radjzcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).contthrescie) {
|
||||
toEdit.locallab.spots.at(i).contthrescie = mods.locallab.spots.at(i).contthrescie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).blackEvjz) {
|
||||
toEdit.locallab.spots.at(i).blackEvjz = mods.locallab.spots.at(i).blackEvjz;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).whiteEvjz) {
|
||||
toEdit.locallab.spots.at(i).whiteEvjz = mods.locallab.spots.at(i).whiteEvjz;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).targetjz) {
|
||||
toEdit.locallab.spots.at(i).targetjz = mods.locallab.spots.at(i).targetjz;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).sigmoidldacie) {
|
||||
toEdit.locallab.spots.at(i).sigmoidldacie = mods.locallab.spots.at(i).sigmoidldacie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).sigmoidthcie) {
|
||||
toEdit.locallab.spots.at(i).sigmoidthcie = mods.locallab.spots.at(i).sigmoidthcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).sigmoidblcie) {
|
||||
toEdit.locallab.spots.at(i).sigmoidblcie = mods.locallab.spots.at(i).sigmoidblcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).sigmoidldajzcie) {
|
||||
toEdit.locallab.spots.at(i).sigmoidldajzcie = mods.locallab.spots.at(i).sigmoidldajzcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).sigmoidthjzcie) {
|
||||
toEdit.locallab.spots.at(i).sigmoidthjzcie = mods.locallab.spots.at(i).sigmoidthjzcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).sigmoidbljzcie) {
|
||||
toEdit.locallab.spots.at(i).sigmoidbljzcie = mods.locallab.spots.at(i).sigmoidbljzcie;
|
||||
}
|
||||
|
||||
|
||||
if (locallab.spots.at(i).contqcie) {
|
||||
toEdit.locallab.spots.at(i).contqcie = mods.locallab.spots.at(i).contqcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).colorflcie) {
|
||||
toEdit.locallab.spots.at(i).colorflcie = mods.locallab.spots.at(i).colorflcie;
|
||||
}
|
||||
/*
|
||||
if (locallab.spots.at(i).lightlzcam) {
|
||||
toEdit.locallab.spots.at(i).lightlzcam = mods.locallab.spots.at(i).lightlzcam;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).lightqzcam) {
|
||||
toEdit.locallab.spots.at(i).lightqzcam = mods.locallab.spots.at(i).lightqzcam;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).contlzcam) {
|
||||
toEdit.locallab.spots.at(i).contlzcam = mods.locallab.spots.at(i).contlzcam;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).contqzcam) {
|
||||
toEdit.locallab.spots.at(i).contqzcam = mods.locallab.spots.at(i).contqzcam;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).contthreszcam) {
|
||||
toEdit.locallab.spots.at(i).contthreszcam = mods.locallab.spots.at(i).contthreszcam;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).colorflzcam) {
|
||||
toEdit.locallab.spots.at(i).colorflzcam = mods.locallab.spots.at(i).colorflzcam;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).saturzcam) {
|
||||
toEdit.locallab.spots.at(i).saturzcam = mods.locallab.spots.at(i).saturzcam;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).chromzcam) {
|
||||
toEdit.locallab.spots.at(i).chromzcam = mods.locallab.spots.at(i).chromzcam;
|
||||
}
|
||||
*/
|
||||
if (locallab.spots.at(i).targabscie) {
|
||||
toEdit.locallab.spots.at(i).targabscie = mods.locallab.spots.at(i).targabscie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).targetGraycie) {
|
||||
toEdit.locallab.spots.at(i).targetGraycie = mods.locallab.spots.at(i).targetGraycie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).catadcie) {
|
||||
toEdit.locallab.spots.at(i).catadcie = mods.locallab.spots.at(i).catadcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).locwavcurvejz) {
|
||||
toEdit.locallab.spots.at(i).locwavcurvejz = mods.locallab.spots.at(i).locwavcurvejz;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).csthresholdjz) {
|
||||
toEdit.locallab.spots.at(i).csthresholdjz = mods.locallab.spots.at(i).csthresholdjz;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).sigmalcjz) {
|
||||
toEdit.locallab.spots.at(i).sigmalcjz = mods.locallab.spots.at(i).sigmalcjz;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).clarilresjz) {
|
||||
toEdit.locallab.spots.at(i).clarilresjz = mods.locallab.spots.at(i).clarilresjz;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).claricresjz) {
|
||||
toEdit.locallab.spots.at(i).claricresjz = mods.locallab.spots.at(i).claricresjz;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).clarisoftjz) {
|
||||
toEdit.locallab.spots.at(i).clarisoftjz = mods.locallab.spots.at(i).clarisoftjz;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).detailcie) {
|
||||
toEdit.locallab.spots.at(i).detailcie = mods.locallab.spots.at(i).detailcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).surroundcie) {
|
||||
toEdit.locallab.spots.at(i).surroundcie = mods.locallab.spots.at(i).surroundcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).enacieMask) {
|
||||
toEdit.locallab.spots.at(i).enacieMask = mods.locallab.spots.at(i).enacieMask;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).CCmaskciecurve) {
|
||||
toEdit.locallab.spots.at(i).CCmaskciecurve = mods.locallab.spots.at(i).CCmaskciecurve;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).LLmaskciecurve) {
|
||||
toEdit.locallab.spots.at(i).LLmaskciecurve = mods.locallab.spots.at(i).LLmaskciecurve;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).HHmaskciecurve) {
|
||||
toEdit.locallab.spots.at(i).HHmaskciecurve = mods.locallab.spots.at(i).HHmaskciecurve;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).blendmaskcie) {
|
||||
toEdit.locallab.spots.at(i).blendmaskcie = mods.locallab.spots.at(i).blendmaskcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).radmaskcie) {
|
||||
toEdit.locallab.spots.at(i).radmaskcie = mods.locallab.spots.at(i).radmaskcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).chromaskcie) {
|
||||
toEdit.locallab.spots.at(i).chromaskcie = mods.locallab.spots.at(i).chromaskcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).lapmaskcie) {
|
||||
toEdit.locallab.spots.at(i).lapmaskcie = mods.locallab.spots.at(i).lapmaskcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).gammaskcie) {
|
||||
toEdit.locallab.spots.at(i).gammaskcie = mods.locallab.spots.at(i).gammaskcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).slomaskcie) {
|
||||
toEdit.locallab.spots.at(i).slomaskcie = mods.locallab.spots.at(i).slomaskcie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).Lmaskciecurve) {
|
||||
toEdit.locallab.spots.at(i).Lmaskciecurve = mods.locallab.spots.at(i).Lmaskciecurve;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).recothrescie) {
|
||||
toEdit.locallab.spots.at(i).recothrescie = mods.locallab.spots.at(i).recothrescie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).lowthrescie) {
|
||||
toEdit.locallab.spots.at(i).lowthrescie = mods.locallab.spots.at(i).lowthrescie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).higthrescie) {
|
||||
toEdit.locallab.spots.at(i).higthrescie = mods.locallab.spots.at(i).higthrescie;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).decaycie) {
|
||||
toEdit.locallab.spots.at(i).decaycie = mods.locallab.spots.at(i).decaycie;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (spot.enabled) {
|
||||
@ -6873,6 +7422,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
||||
shortc(v),
|
||||
savrest(v),
|
||||
scopemask(v),
|
||||
denoichmask(v),
|
||||
lumask(v),
|
||||
// Color & Light
|
||||
visicolor(v),
|
||||
@ -6881,6 +7431,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
||||
curvactiv(v),
|
||||
lightness(v),
|
||||
reparcol(v),
|
||||
gamc(v),
|
||||
contrast(v),
|
||||
chroma(v),
|
||||
labgridALow(v),
|
||||
@ -6956,6 +7507,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
||||
expchroma(v),
|
||||
sensiex(v),
|
||||
structexp(v),
|
||||
gamex(v),
|
||||
blurexpde(v),
|
||||
strexp(v),
|
||||
angexp(v),
|
||||
@ -7035,6 +7587,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
||||
complexvibrance(v),
|
||||
saturated(v),
|
||||
pastels(v),
|
||||
vibgam(v),
|
||||
warm(v),
|
||||
psthreshold(v),
|
||||
protectskins(v),
|
||||
@ -7111,6 +7664,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
||||
noiselumc(v),
|
||||
noiselumdetail(v),
|
||||
noiselequal(v),
|
||||
noisegam(v),
|
||||
noisechrof(v),
|
||||
noisechroc(v),
|
||||
noisechrodetail(v),
|
||||
@ -7229,6 +7783,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
||||
shardamping(v),
|
||||
shariter(v),
|
||||
sharblur(v),
|
||||
shargam(v),
|
||||
sensisha(v),
|
||||
inverssha(v),
|
||||
// Local Contrast
|
||||
@ -7246,6 +7801,9 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
||||
residshathr(v),
|
||||
residhi(v),
|
||||
residhithr(v),
|
||||
gamlc(v),
|
||||
residgam(v),
|
||||
residslop(v),
|
||||
residblur(v),
|
||||
levelblur(v),
|
||||
sigmabl(v),
|
||||
@ -7407,7 +7965,109 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
||||
HHhmask_curve(v),
|
||||
Lmask_curve(v),
|
||||
LLmask_curvewav(v),
|
||||
csthresholdmask(v)
|
||||
csthresholdmask(v),
|
||||
//ciecam
|
||||
visicie(v),
|
||||
complexcie(v),
|
||||
expcie(v),
|
||||
reparcie(v),
|
||||
sensicie(v),
|
||||
Autograycie(v),
|
||||
forcejz(v),
|
||||
forcebw(v),
|
||||
qtoj(v),
|
||||
jabcie(v),
|
||||
sigmoidqjcie(v),
|
||||
logjz(v),
|
||||
sigjz(v),
|
||||
chjzcie(v),
|
||||
sourceGraycie(v),
|
||||
sourceabscie(v),
|
||||
sursourcie(v),
|
||||
modecam(v),
|
||||
modecie(v),
|
||||
saturlcie(v),
|
||||
rstprotectcie(v),
|
||||
chromlcie(v),
|
||||
huecie(v),
|
||||
toneMethodcie(v),
|
||||
ciecurve(v),
|
||||
toneMethodcie2(v),
|
||||
ciecurve2(v),
|
||||
chromjzcie(v),
|
||||
saturjzcie(v),
|
||||
huejzcie(v),
|
||||
softjzcie(v),
|
||||
strsoftjzcie(v),
|
||||
thrhjzcie(v),
|
||||
jzcurve(v),
|
||||
czcurve(v),
|
||||
czjzcurve(v),
|
||||
HHcurvejz(v),
|
||||
CHcurvejz(v),
|
||||
LHcurvejz(v),
|
||||
lightlcie(v),
|
||||
lightjzcie(v),
|
||||
lightqcie(v),
|
||||
contlcie(v),
|
||||
contjzcie(v),
|
||||
adapjzcie(v),
|
||||
jz100(v),
|
||||
pqremap(v),
|
||||
pqremapcam16(v),
|
||||
hljzcie(v),
|
||||
hlthjzcie(v),
|
||||
shjzcie(v),
|
||||
shthjzcie(v),
|
||||
radjzcie(v),
|
||||
contthrescie(v),
|
||||
blackEvjz(v),
|
||||
whiteEvjz(v),
|
||||
targetjz(v),
|
||||
sigmoidldacie(v),
|
||||
sigmoidthcie(v),
|
||||
sigmoidblcie(v),
|
||||
sigmoidldajzcie(v),
|
||||
sigmoidthjzcie(v),
|
||||
sigmoidbljzcie(v),
|
||||
contqcie(v),
|
||||
colorflcie(v),
|
||||
/*
|
||||
lightlzcam(v),
|
||||
lightqzcam(v),
|
||||
contlzcam(v),
|
||||
contqzcam(v),
|
||||
contthreszcam(v),
|
||||
colorflzcam(v),
|
||||
saturzcam(v),
|
||||
chromzcam(v),
|
||||
*/
|
||||
targabscie(v),
|
||||
targetGraycie(v),
|
||||
catadcie(v),
|
||||
detailcie(v),
|
||||
surroundcie(v),
|
||||
enacieMask(v),
|
||||
CCmaskciecurve(v),
|
||||
LLmaskciecurve(v),
|
||||
HHmaskciecurve(v),
|
||||
blendmaskcie(v),
|
||||
radmaskcie(v),
|
||||
sigmalcjz(v),
|
||||
clarilresjz(v),
|
||||
claricresjz(v),
|
||||
clarisoftjz(v),
|
||||
locwavcurvejz(v),
|
||||
csthresholdjz(v),
|
||||
chromaskcie(v),
|
||||
lapmaskcie(v),
|
||||
gammaskcie(v),
|
||||
slomaskcie(v),
|
||||
Lmaskciecurve(v),
|
||||
recothrescie(v),
|
||||
lowthrescie(v),
|
||||
higthrescie(v),
|
||||
decaycie(v)
|
||||
|
||||
{
|
||||
}
|
||||
@ -7452,6 +8112,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
||||
shortc = v;
|
||||
savrest = v;
|
||||
scopemask = v;
|
||||
denoichmask = v;
|
||||
lumask = v;
|
||||
// Color & Light
|
||||
visicolor = v;
|
||||
@ -7460,6 +8121,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
||||
curvactiv = v;
|
||||
lightness = v;
|
||||
reparcol = v;
|
||||
gamc = v;
|
||||
contrast = v;
|
||||
chroma = v;
|
||||
labgridALow = v;
|
||||
@ -7535,6 +8197,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
||||
expchroma = v;
|
||||
sensiex = v;
|
||||
structexp = v;
|
||||
gamex = v;
|
||||
blurexpde = v;
|
||||
strexp = v;
|
||||
angexp = v;
|
||||
@ -7618,6 +8281,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
||||
complexvibrance = v;
|
||||
saturated = v;
|
||||
pastels = v;
|
||||
vibgam = v;
|
||||
warm = v;
|
||||
psthreshold = v;
|
||||
protectskins = v;
|
||||
@ -7694,6 +8358,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
||||
noiselumc = v;
|
||||
noiselumdetail = v;
|
||||
noiselequal = v;
|
||||
noisegam = v;
|
||||
noisechrof = v;
|
||||
noisechroc = v;
|
||||
noisechrodetail = v;
|
||||
@ -7811,6 +8476,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
||||
shardamping = v;
|
||||
shariter = v;
|
||||
sharblur = v;
|
||||
shargam = v;
|
||||
sensisha = v;
|
||||
inverssha = v;
|
||||
// Local Contrast
|
||||
@ -7828,6 +8494,9 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
||||
residshathr = v;
|
||||
residhi = v;
|
||||
residhithr = v;
|
||||
gamlc = v;
|
||||
residgam = v;
|
||||
residslop = v;
|
||||
residblur = v;
|
||||
levelblur = v;
|
||||
sigmabl = v;
|
||||
@ -7990,10 +8659,113 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
||||
shadmask = v;
|
||||
str_mask = v;
|
||||
ang_mask = v;
|
||||
HHhmask_curve =(v);
|
||||
Lmask_curve =(v);
|
||||
LLmask_curvewav =(v);
|
||||
HHhmask_curve = v;
|
||||
Lmask_curve = v;
|
||||
LLmask_curvewav = v;
|
||||
csthresholdmask = v;
|
||||
//ciecam
|
||||
visicie= v;
|
||||
complexcie= v;
|
||||
expcie = v;
|
||||
reparcie = v;
|
||||
sensicie = v;
|
||||
Autograycie = v;
|
||||
forcejz = v;
|
||||
forcebw = v;
|
||||
qtoj = v;
|
||||
jabcie = v;
|
||||
sigmoidqjcie = v;
|
||||
logjz = v;
|
||||
sigjz = v;
|
||||
chjzcie = v;
|
||||
sourceGraycie = v;
|
||||
sourceabscie = v;
|
||||
sursourcie = v;
|
||||
modecam = v;
|
||||
modecie = v;
|
||||
saturlcie = v;
|
||||
rstprotectcie = v;
|
||||
chromlcie = v;
|
||||
huecie = v;
|
||||
toneMethodcie = v;
|
||||
ciecurve = v;
|
||||
toneMethodcie2 = v;
|
||||
ciecurve2 = v;
|
||||
chromjzcie = v;
|
||||
saturjzcie = v;
|
||||
huejzcie = v;
|
||||
softjzcie = v;
|
||||
strsoftjzcie = v;
|
||||
thrhjzcie = v;
|
||||
jzcurve = v;
|
||||
czcurve = v;
|
||||
czjzcurve = v;
|
||||
HHcurvejz = v;
|
||||
CHcurvejz = v;
|
||||
LHcurvejz = v;
|
||||
lightlcie = v;
|
||||
lightjzcie = v;
|
||||
lightqcie = v;
|
||||
contlcie = v;
|
||||
contjzcie = v;
|
||||
adapjzcie = v;
|
||||
jz100 = v;
|
||||
pqremap = v;
|
||||
pqremapcam16 = v;
|
||||
hljzcie = v;
|
||||
hlthjzcie = v;
|
||||
shjzcie = v;
|
||||
shthjzcie = v;
|
||||
radjzcie = v;
|
||||
contthrescie = v;
|
||||
blackEvjz = v;
|
||||
whiteEvjz = v;
|
||||
targetjz = v;
|
||||
sigmoidldacie = v;
|
||||
sigmoidthcie = v;
|
||||
sigmoidblcie = v;
|
||||
sigmoidldajzcie = v;
|
||||
sigmoidthjzcie = v;
|
||||
sigmoidbljzcie = v;
|
||||
contqcie = v;
|
||||
colorflcie = v;
|
||||
/*
|
||||
lightlzcam = v;
|
||||
lightqzcam = v;
|
||||
contlzcam = v;
|
||||
contqzcam = v;
|
||||
contthreszcam = v;
|
||||
colorflzcam = v;
|
||||
saturzcam = v;
|
||||
chromzcam = v;
|
||||
*/
|
||||
targabscie = v;
|
||||
targetGraycie = v;
|
||||
catadcie = v;
|
||||
detailcie = v;
|
||||
surroundcie = v;
|
||||
enacieMask = v;
|
||||
CCmaskciecurve = v;
|
||||
LLmaskciecurve = v;
|
||||
HHmaskciecurve = v;
|
||||
blendmaskcie = v;
|
||||
radmaskcie = v;
|
||||
sigmalcjz = v;
|
||||
clarilresjz = v;
|
||||
claricresjz = v;
|
||||
clarisoftjz = v;
|
||||
locwavcurvejz = v;
|
||||
csthresholdjz = v;
|
||||
chromaskcie = v;
|
||||
lapmaskcie = v;
|
||||
gammaskcie = v;
|
||||
slomaskcie = v;
|
||||
Lmaskciecurve = v;
|
||||
recothrescie = v;
|
||||
lowthrescie = v;
|
||||
higthrescie = v;
|
||||
decaycie = v;
|
||||
|
||||
}
|
||||
|
||||
bool CaptureSharpeningParamsEdited::isUnchanged() const
|
||||
|
@ -431,6 +431,7 @@ public:
|
||||
bool shortc;
|
||||
bool savrest;
|
||||
bool scopemask;
|
||||
bool denoichmask;
|
||||
bool lumask;
|
||||
// Color & Light
|
||||
bool visicolor;
|
||||
@ -439,6 +440,7 @@ public:
|
||||
bool curvactiv;
|
||||
bool lightness;
|
||||
bool reparcol;
|
||||
bool gamc;
|
||||
bool contrast;
|
||||
bool chroma;
|
||||
bool labgridALow;
|
||||
@ -514,6 +516,7 @@ public:
|
||||
bool expchroma;
|
||||
bool sensiex;
|
||||
bool structexp;
|
||||
bool gamex;
|
||||
bool blurexpde;
|
||||
bool strexp;
|
||||
bool angexp;
|
||||
@ -593,6 +596,7 @@ public:
|
||||
bool complexvibrance;
|
||||
bool saturated;
|
||||
bool pastels;
|
||||
bool vibgam;
|
||||
bool warm;
|
||||
bool psthreshold;
|
||||
bool protectskins;
|
||||
@ -669,6 +673,7 @@ public:
|
||||
bool noiselumc;
|
||||
bool noiselumdetail;
|
||||
bool noiselequal;
|
||||
bool noisegam;
|
||||
bool noisechrof;
|
||||
bool noisechroc;
|
||||
bool noisechrodetail;
|
||||
@ -787,6 +792,7 @@ public:
|
||||
bool shardamping;
|
||||
bool shariter;
|
||||
bool sharblur;
|
||||
bool shargam;
|
||||
bool sensisha;
|
||||
bool inverssha;
|
||||
// Local Contrast
|
||||
@ -804,6 +810,9 @@ public:
|
||||
bool residshathr;
|
||||
bool residhi;
|
||||
bool residhithr;
|
||||
bool gamlc;
|
||||
bool residgam;
|
||||
bool residslop;
|
||||
bool residblur;
|
||||
bool levelblur;
|
||||
bool sigmabl;
|
||||
@ -966,6 +975,108 @@ public:
|
||||
bool Lmask_curve;
|
||||
bool LLmask_curvewav;
|
||||
bool csthresholdmask;
|
||||
//locallabcie
|
||||
bool visicie;
|
||||
bool complexcie;
|
||||
bool expcie;
|
||||
bool reparcie;
|
||||
bool sensicie;
|
||||
bool Autograycie;
|
||||
bool forcejz;
|
||||
bool forcebw;
|
||||
bool qtoj;
|
||||
bool jabcie;
|
||||
bool sigmoidqjcie;
|
||||
bool logjz;
|
||||
bool sigjz;
|
||||
bool chjzcie;
|
||||
bool sourceGraycie;
|
||||
bool sourceabscie;
|
||||
bool sursourcie;
|
||||
bool modecam;
|
||||
bool modecie;
|
||||
bool saturlcie;
|
||||
bool rstprotectcie;
|
||||
bool chromlcie;
|
||||
bool huecie;
|
||||
bool toneMethodcie;
|
||||
bool ciecurve;
|
||||
bool toneMethodcie2;
|
||||
bool ciecurve2;
|
||||
bool chromjzcie;
|
||||
bool saturjzcie;
|
||||
bool huejzcie;
|
||||
bool softjzcie;
|
||||
bool strsoftjzcie;
|
||||
bool thrhjzcie;
|
||||
bool jzcurve;
|
||||
bool czcurve;
|
||||
bool czjzcurve;
|
||||
bool HHcurvejz;
|
||||
bool CHcurvejz;
|
||||
bool LHcurvejz;
|
||||
bool lightlcie;
|
||||
bool lightjzcie;
|
||||
bool lightqcie;
|
||||
bool contlcie;
|
||||
bool contjzcie;
|
||||
bool adapjzcie;
|
||||
bool jz100;
|
||||
bool pqremap;
|
||||
bool pqremapcam16;
|
||||
bool hljzcie;
|
||||
bool hlthjzcie;
|
||||
bool shjzcie;
|
||||
bool shthjzcie;
|
||||
bool radjzcie;
|
||||
bool contthrescie;
|
||||
bool blackEvjz;
|
||||
bool whiteEvjz;
|
||||
bool targetjz;
|
||||
bool sigmoidldacie;
|
||||
bool sigmoidthcie;
|
||||
bool sigmoidblcie;
|
||||
bool sigmoidldajzcie;
|
||||
bool sigmoidthjzcie;
|
||||
bool sigmoidbljzcie;
|
||||
bool contqcie;
|
||||
bool colorflcie;
|
||||
/*
|
||||
bool lightlzcam;
|
||||
bool lightqzcam;
|
||||
bool contlzcam;
|
||||
bool contqzcam;
|
||||
bool contthreszcam;
|
||||
bool colorflzcam;
|
||||
bool saturzcam;
|
||||
bool chromzcam;
|
||||
*/
|
||||
bool targabscie;
|
||||
bool targetGraycie;
|
||||
bool catadcie;
|
||||
bool detailcie;
|
||||
bool surroundcie;
|
||||
bool enacieMask;
|
||||
bool CCmaskciecurve;
|
||||
bool LLmaskciecurve;
|
||||
bool HHmaskciecurve;
|
||||
bool blendmaskcie;
|
||||
bool radmaskcie;
|
||||
bool sigmalcjz;
|
||||
bool clarilresjz;
|
||||
bool claricresjz;
|
||||
bool clarisoftjz;
|
||||
bool locwavcurvejz;
|
||||
bool csthresholdjz;
|
||||
bool chromaskcie;
|
||||
bool lapmaskcie;
|
||||
bool gammaskcie;
|
||||
bool slomaskcie;
|
||||
bool Lmaskciecurve;
|
||||
bool recothrescie;
|
||||
bool lowthrescie;
|
||||
bool higthrescie;
|
||||
bool decaycie;
|
||||
|
||||
LocallabSpotEdited(bool v);
|
||||
|
||||
|
@ -555,12 +555,12 @@ void ToolPanelCoordinator::panelChanged(const rtengine::ProcEvent& event, const
|
||||
ipc->setLocallabMaskVisibility(maskStruc.previewDeltaE, maskStruc.colorMask, maskStruc.colorMaskinv, maskStruc.expMask, maskStruc.expMaskinv,
|
||||
maskStruc.SHMask, maskStruc.SHMaskinv, maskStruc.vibMask, maskStruc.softMask,
|
||||
maskStruc.blMask, maskStruc.tmMask, maskStruc.retiMask, maskStruc.sharMask,
|
||||
maskStruc.lcMask, maskStruc.cbMask, maskStruc.logMask, maskStruc.maskMask);
|
||||
maskStruc.lcMask, maskStruc.cbMask, maskStruc.logMask, maskStruc.maskMask, maskStruc.cieMask);
|
||||
} else if (event == rtengine::EvLocallabSpotCreated || event == rtengine::EvLocallabSpotSelectedWithMask ||
|
||||
event == rtengine::EvLocallabSpotDeleted || event == rtengine::Evlocallabshowreset ||
|
||||
event == rtengine::EvlocallabToolRemovedWithRefresh) {
|
||||
locallab->resetMaskVisibility();
|
||||
ipc->setLocallabMaskVisibility(false, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
ipc->setLocallabMaskVisibility(false, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
ipc->endUpdateParams(changeFlags); // starts the IPC processing
|
||||
@ -670,7 +670,7 @@ void ToolPanelCoordinator::profileChange(
|
||||
|
||||
// Reset Locallab mask visibility
|
||||
locallab->resetMaskVisibility();
|
||||
ipc->setLocallabMaskVisibility(false, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
ipc->setLocallabMaskVisibility(false, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
|
||||
// start the IPC processing
|
||||
if (filterRawRefresh) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user