diff --git a/rtdata/languages/default b/rtdata/languages/default index 94e33f04b..186f0755c 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1674,12 +1674,12 @@ TP_WAVELET_6;Level 6 TP_WAVELET_7;Level 7 TP_WAVELET_8;Level 8 TP_WAVELET_9;Level 9 -TP_WAVELET_ALL;All levels in all directions TP_WAVELET_APPLYTO;Apply To TP_WAVELET_AVOID;Avoid color shift TP_WAVELET_B0;Black TP_WAVELET_B1;Grey TP_WAVELET_B2;Residual +TP_WAVELET_BACKGROUND;Background TP_WAVELET_BACUR;Curve TP_WAVELET_BALANCE;Contrast balance d/v-h TP_WAVELET_BALANCE_TOOLTIP;Alters the balance between the wavelet directions: vertical-horizontal and diagonal.\nIf contrast, chromaticity or residual tone mapping are activated, the effect due to balance is amplified. @@ -1688,14 +1688,17 @@ TP_WAVELET_BALCHRO_TOOLTIP;If enabled, the 'Contrast balance' curve or slider al TP_WAVELET_BANONE;None TP_WAVELET_BASLI;Slider TP_WAVELET_BATYPE;Contrast balance method +TP_WAVELET_CBENAB;Toning and Color Balance +TP_WAVELET_CBTYPE;Toning and Color Balance +TP_WAVELET_CB_TOOLTIP;For strong values product color-toning by combining it or not with levels decomposition 'toning'\nFor low values you can change the white balance of the background (sky, ...) without changing that of the front plane, generally more contrasted TP_WAVELET_CCURVE;Local contrast TP_WAVELET_CH1;Whole chromaticity range TP_WAVELET_CH2;Saturated/pastel TP_WAVELET_CH3;Link contrast levels TP_WAVELET_CHCU;Curve +TP_WAVELET_CHR;Chroma-contrast link strength TP_WAVELET_CHRO;Saturated/pastel threshold TP_WAVELET_CHRO_TOOLTIP;Sets the wavelet level which will be the threshold between saturated and pastel colors.\n1-x: saturated\nx-9: pastel\n\nIf the value exceeds the amount of wavelet levels you are using then it will be ignored. -TP_WAVELET_CHR;Chroma-contrast link strength TP_WAVELET_CHR_TOOLTIP;Adjusts chromaticity as a function of "contrast levels" and "chroma-contrast link strength" TP_WAVELET_CHSL;Sliders TP_WAVELET_CHTYPE;Chrominance method @@ -1703,16 +1706,16 @@ TP_WAVELET_COLORT;Opacity Red-Green TP_WAVELET_COMBOTH;Both TP_WAVELET_COMPCONT;Contrast TP_WAVELET_COMPGAMMA;Compression gamma -TP_WAVELET_COMPGAMMA_TOOLTIP;Adjusting the gamma of the residual image allow you to equilibrate the data and histogram. TP_WAVELET_COMPGAMMA_TOOLTIP;Adjust gamma for residual image and compression.\nAllow to equilibrate data and histogram +TP_WAVELET_COMPGAMMA_TOOLTIP;Adjusting the gamma of the residual image allow you to equilibrate the data and histogram. TP_WAVELET_COMPTM;Tone mapping TP_WAVELET_CONTEDIT;'After' Contrast curve TP_WAVELET_CONTEDIT;'After' contrast curve +TP_WAVELET_CONTR;Gamut +TP_WAVELET_CONTRA;Contrast TP_WAVELET_CONTRAST_MINUS;Contrast - TP_WAVELET_CONTRAST_PLUS;Contrast + -TP_WAVELET_CONTRA;Contrast TP_WAVELET_CONTRA_TOOLTIP;Changes contrast of the residual image. -TP_WAVELET_CONTR;Gamut TP_WAVELET_CTYPE;Chrominance control TP_WAVELET_CURVEEDITOR_CC_TOOLTIP;Modifies local contrast as a function of the original local contrast (absciss)\nLow absciss represents small local contrast (real values about 10..20)\n50% absciss represents average of local contrast (real value about 100..300)\n66% absciss represents standard deviation of local contrast (real value about 300..800)\n100% represents maximum (real value about 3000..8000) TP_WAVELET_CURVEEDITOR_CH;Contrast levels=f(Hue) @@ -1723,21 +1726,25 @@ TP_WAVELET_CURVEEDITOR_CL_TOOLTIP;Apply a contrast luminance curve at the end of TP_WAVELET_CURVEEDITOR_HH;HH TP_WAVELET_CURVEEDITOR_HH_TOOLTIP;Modifies the residual image's hue as a function of hue. TP_WAVELET_DALL;All directions +TP_WAVELET_DAUB10;D10 - medium +TP_WAVELET_DAUB14;D14 - high +TP_WAVELET_DAUB2;D2 - low +TP_WAVELET_DAUB4;D4 - standard +TP_WAVELET_DAUB6;D6 - standard plus TP_WAVELET_DAUB;Edge performance TP_WAVELET_DAUB_TOOLTIP;Changes Daubechies coefficients:\nD4 = Standard,\nD14 = Often best performance, 10% more time-intensive.\n\nAffects edge detection as well as the general quality of the firsts levels. However the quality is not strictly related to this coefficient and can vary with images and uses. TP_WAVELET_DONE;Vertical TP_WAVELET_DTHR;Diagonal TP_WAVELET_DTWO;Horizontal -TP_WAVELET_DISP;Wavelet settings TP_WAVELET_EDCU;Curve TP_WAVELET_EDGCONT;Local contrast TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima +TP_WAVELET_EDGE;Edge Sharpness +TP_WAVELET_EDGEDETECT;Gradient sensitivity TP_WAVELET_EDGEDETECTTHR2;Threshold high (detection) TP_WAVELET_EDGEDETECTTHR;Threshold low (noise) TP_WAVELET_EDGEDETECTTHR_TOOLTIP;This adjuster lets you target edge detection for example to avoid applying edge sharpness to fine details, such as noise in the sky. -TP_WAVELET_EDGEDETECT;Gradient sensitivity TP_WAVELET_EDGEDETECT_TOOLTIP;Moving the slider to the right increases edge sensitivity. This affects local contrast, edge settings and noise. -TP_WAVELET_EDGE;Edge Sharpness TP_WAVELET_EDGREINF_TOOLTIP;Reinforce or reduce the action of the first level, do the opposite to the second level, and leave the rest unchanged. TP_WAVELET_EDGTHRESH;Detail TP_WAVELET_EDGTHRESH_TOOLTIP;Change the repartition between the first levels and the others. The higher the threshold the more the action is centred on the first levels. Be careful with negative values, they increase the action of high levels and can introduce artifacts. @@ -1755,13 +1762,16 @@ TP_WAVELET_HUESKIN;Skin hue TP_WAVELET_HUESKIN_TOOLTIP;The bottom points set the beginning of the transition zone, and the upper points the end of it, where the effect is at its maximum.\n\nIf you need to move the area significantly, or if there are artifacts, then the white balance is incorrect. TP_WAVELET_HUESKY;Sky hue TP_WAVELET_HUESKY_TOOLTIP;The bottom points set the beginning of the transition zone, and the upper points the end of it, where the effect is at its maximum.\n\nIf you need to move the area significantly, or if there are artifacts, then the white balance is incorrect. -TP_WAVELET_INF;Below or equal the level TP_WAVELET_ITER;Delta balance levels TP_WAVELET_ITER_TOOLTIP;Left: increase low levels and reduce high levels,\nRight: reduce low levels and increase high levels. TP_WAVELET_LABEL;Wavelet Levels TP_WAVELET_LARGEST;Coarsest TP_WAVELET_LEVCH;Chromaticity -TP_WAVELET_LEVELS;Wavelet Levels +TP_WAVELET_LEVDIR_ALL;All levels in all directions +TP_WAVELET_LEVDIR_INF;Below or equal the level +TP_WAVELET_LEVDIR_ONE;One level +TP_WAVELET_LEVDIR_SUP;Above the level +TP_WAVELET_LEVELS;Wavelet levels TP_WAVELET_LEVELS_TOOLTIP;Choose the number of detail levels the image is to be decomposed into. More levels require more RAM and require a longer processing time. TP_WAVELET_LEVF;Contrast TP_WAVELET_LEVLABEL;Preview maximum possible levels = %1 @@ -1773,43 +1783,40 @@ TP_WAVELET_LIPST;Enhanced algorithm TP_WAVELET_LIPST_TOOLTIP;This algorithm uses Lipschitz regularity to increase edge detection quality at a cost of increased processing time and memory requirements. TP_WAVELET_LOWLIGHT;Shadow luminance range TP_WAVELET_MEDGREINF;First level -TP_WAVELET_MEDILEV;Edge detection TP_WAVELET_MEDI;Reduce artifacts in blue sky +TP_WAVELET_MEDILEV;Edge detection TP_WAVELET_NEUTRAL;Neutral -TP_WAVELET_NOISE;Denoise and Refine TP_WAVELET_NOIS;Denoise -TP_WAVELET_ONE;One level +TP_WAVELET_NOISE;Denoise and Refine +TP_WAVELET_OPACITY;Opacity Blue-Yellow +TP_WAVELET_OPACITYW;Contrast balance d/v-h curve TP_WAVELET_OPACITYWL;Final local contrast TP_WAVELET_OPACITYWL_TOOLTIP;Modify final local contrast in function of last local contrast (absciss) for all levels decomposition\nTake into account: \na)contrast levels \nb)edge sharpness \nc)contrast balance\nd)decomposition-recomposition\nLow absciss represents small local contrast (real values about 10..20)\n50% absciss represents average of local contrast (real value about 200..1000)\n66% absciss represents standard deviation of local contrast (real value about 1000..2000)\n100% represents maximum (real value about 5000..13000) TP_WAVELET_OPACITYWL_TOOLTIP;Modify the final local contrast at the end of the wavelet treatment.\n\nThe left side represents the smallest local contrast, progressing to the largest local contrast on the right. -TP_WAVELET_OPACITYW;Contrast balance d/v-h curve -TP_WAVELET_OPACITY;Opacity Blue-Yellow TP_WAVELET_PASTEL;Pastel chromaticity -TP_WAVELET_PREVIEWBACK;Background -TP_WAVELET_PREVIEWLEVELS;Process +TP_WAVELET_PROC;Process TP_WAVELET_RE1;Reinforced TP_WAVELET_RE2;Unchanged TP_WAVELET_RE3;Reduced TP_WAVELET_RESCHRO;Chromaticity -TP_WAVELET_RESCONH;Highlights TP_WAVELET_RESCON;Shadows -TP_WAVELET_RESID;Residual image +TP_WAVELET_RESCONH;Highlights +TP_WAVELET_RESID;Residual Image TP_WAVELET_SAT;Saturated chromaticity TP_WAVELET_SETTINGS;Wavelet Settings TP_WAVELET_SKIN;Skin targetting/protection TP_WAVELET_SKIN_TOOLTIP;At -100 skin-tones are targetted.\nAt 0 all tones are treated equally.\nAt +100 skin-tones are protected while all other tones are affected. TP_WAVELET_SKY;Sky targetting/protection TP_WAVELET_SKY_TOOLTIP;At -100 sky-tones are targetted.\nAt 0 all tones are treated equally.\nAt +100 sky-tones are protected while all other tones are affected. -TP_WAVELET_STRENGTH;Strength TP_WAVELET_STREN;Strength +TP_WAVELET_STRENGTH;Strength TP_WAVELET_SUPE;Extra -TP_WAVELET_SUP;Above the level +TP_WAVELET_THR;Shadows threshold TP_WAVELET_THRESHOLD2;Shadow levels TP_WAVELET_THRESHOLD2_TOOLTIP;Only levels between 9 and 9 minus the value will be affected by the shadow luminance range. Other levels will be fully treated. The highest level possible is limited by the highlight level value (9 minus highlight level value). TP_WAVELET_THRESHOLD;Highlight levels TP_WAVELET_THRESHOLD_TOOLTIP;Only levels beyond the chosen value will be affected by the highlight luminance range. Other levels will be fully treated. The chosen value here limits the highest possible value of the shadow levels. TP_WAVELET_THRH;Highlights threshold -TP_WAVELET_THR;Shadows threshold TP_WAVELET_TILESBIG;Big tiles TP_WAVELET_TILESFULL;Full image TP_WAVELET_TILESIZE;Tiling method @@ -1823,14 +1830,6 @@ TP_WAVELET_TMSTRENGTH;Compression strength TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. TP_WAVELET_TMTYPE;Compression method TP_WAVELET_TON;Toning -TP_WAVELET_daub2;D2 - low -TP_WAVELET_daub4;D4 - standard -TP_WAVELET_daub6;D6 - standard plus -TP_WAVELET_daub10;D10 - medium -TP_WAVELET_daub14;D14 - high -TP_WAVELET_CBTYPE;Toning and Color Balance -TP_WAVELET_CBENAB;Toning and Color Balance -TP_WAVELET_CB_TOOLTIP;For strong values product color-toning by combining it or not with levels decomposition 'toning'\nFor low values you can change the white balance of the background (sky, ...) without changing that of the front plane, generally more contrasted TP_WBALANCE_AUTO;Auto TP_WBALANCE_CAMERA;Camera TP_WBALANCE_CLOUDY;Cloudy diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc index 4b13f1573..eb87c0924 100644 --- a/rtengine/ipwavelet.cc +++ b/rtengine/ipwavelet.cc @@ -211,11 +211,11 @@ SSEFUNCTION void ImProcFunctions::ip_wavelet(LabImage * lab, LabImage * dst, int //int DaubLen = settings->daubech ? 8 : 6; int DaubLen; - if(params->wavelet.choicemethod=="2_") DaubLen=4; - if(params->wavelet.choicemethod=="4_") DaubLen=6; - if(params->wavelet.choicemethod=="6_") DaubLen=8; - if(params->wavelet.choicemethod=="10_") DaubLen=12; - if(params->wavelet.choicemethod=="14_") DaubLen=16; + if(params->wavelet.daubcoeffmethod=="2_") DaubLen=4; + if(params->wavelet.daubcoeffmethod=="4_") DaubLen=6; + if(params->wavelet.daubcoeffmethod=="6_") DaubLen=8; + if(params->wavelet.daubcoeffmethod=="10_") DaubLen=12; + if(params->wavelet.daubcoeffmethod=="14_") DaubLen=16; cp.CHSLmet=1; // if(params->wavelet.CHSLmethod=="SL") cp.CHSLmet=1; @@ -231,7 +231,6 @@ SSEFUNCTION void ImProcFunctions::ip_wavelet(LabImage * lab, LabImage * dst, int cp.grmed=(float)params->wavelet.greenmed; cp.bllow=(float)params->wavelet.bluelow; cp.grlow=(float)params->wavelet.greenlow; - printf("blmed=%f grmed=%f\n",cp.blmed,cp.grmed); cp.curv=false; cp.edgcurv=false; cp.diagcurv=false; diff --git a/rtengine/procevents.h b/rtengine/procevents.h index 5f3e278cc..2f926e545 100644 --- a/rtengine/procevents.h +++ b/rtengine/procevents.h @@ -365,7 +365,7 @@ enum ProcEvent { EvWavedgrad=337, EvWavedgval=338, EvWavStrength=339, - EvWavchoicemet=340, + EvWavdaubcoeffmet=340, EvWavedgreinf=341, EvWaveletch=342, EvWavCHSLmet=343, diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 49b75c672..b6fdad148 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -516,7 +516,7 @@ void WaveletParams::setDefaults() { Backmethod = "grey"; Dirmethod = "all"; Tilesmethod = "full"; - choicemethod = "4_"; + daubcoeffmethod = "4_"; rescon = 0; resconH = 0; reschro = 0; @@ -1629,7 +1629,7 @@ int ProcParams::save (Glib::ustring fname, Glib::ustring fname2, bool fnameAbsol if (!pedited || pedited->wavelet.iter) keyFile.set_integer ("Wavelet", "Iter", wavelet.iter); if (!pedited || pedited->wavelet.thres) keyFile.set_integer ("Wavelet", "MaxLev", wavelet.thres); if (!pedited || pedited->wavelet.Tilesmethod) keyFile.set_string ("Wavelet", "TilesMethod", wavelet.Tilesmethod); - if (!pedited || pedited->wavelet.choicemethod) keyFile.set_string ("Wavelet", "DaubMethod", wavelet.choicemethod); + if (!pedited || pedited->wavelet.daubcoeffmethod) keyFile.set_string ("Wavelet", "DaubMethod", wavelet.daubcoeffmethod); if (!pedited || pedited->wavelet.CLmethod) keyFile.set_string ("Wavelet", "ChoiceLevMethod", wavelet.CLmethod); if (!pedited || pedited->wavelet.Backmethod) keyFile.set_string ("Wavelet", "BackMethod", wavelet.Backmethod); if (!pedited || pedited->wavelet.Lmethod) keyFile.set_string ("Wavelet", "LevMethod", wavelet.Lmethod); @@ -2544,7 +2544,7 @@ if (keyFile.has_group ("Wavelet")) { if (keyFile.has_key ("Wavelet", "ChoiceLevMethod")) {wavelet.CLmethod = keyFile.get_string ("Wavelet", "ChoiceLevMethod"); if (pedited) pedited->wavelet.CLmethod = true; } if (keyFile.has_key ("Wavelet", "BackMethod")) {wavelet.Backmethod = keyFile.get_string ("Wavelet", "BackMethod"); if (pedited) pedited->wavelet.Backmethod = true; } if (keyFile.has_key ("Wavelet", "TilesMethod")) {wavelet.Tilesmethod = keyFile.get_string ("Wavelet", "TilesMethod"); if (pedited) pedited->wavelet.Tilesmethod = true; } - if (keyFile.has_key ("Wavelet", "DaubMethod")) {wavelet.choicemethod = keyFile.get_string ("Wavelet", "DaubMethod"); if (pedited) pedited->wavelet.choicemethod = true; } + if (keyFile.has_key ("Wavelet", "DaubMethod")) {wavelet.daubcoeffmethod = keyFile.get_string ("Wavelet", "DaubMethod"); if (pedited) pedited->wavelet.daubcoeffmethod = true; } if (keyFile.has_key ("Wavelet", "CHromaMethod")) {wavelet.CHmethod = keyFile.get_string ("Wavelet", "CHromaMethod"); if (pedited) pedited->wavelet.CHmethod = true; } if (keyFile.has_key ("Wavelet", "Medgreinf")) {wavelet.Medgreinf = keyFile.get_string ("Wavelet", "Medgreinf"); if (pedited) pedited->wavelet.Medgreinf = true; } if (keyFile.has_key ("Wavelet", "CHSLromaMethod")) {wavelet.CHSLmethod = keyFile.get_string ("Wavelet", "CHSLromaMethod"); if (pedited) pedited->wavelet.CHSLmethod = true; } @@ -3200,7 +3200,7 @@ bool ProcParams::operator== (const ProcParams& other) { && wavelet.CLmethod == other.wavelet.CLmethod && wavelet.Backmethod == other.wavelet.Backmethod && wavelet.Tilesmethod == other.wavelet.Tilesmethod - && wavelet.choicemethod == other.wavelet.choicemethod + && wavelet.daubcoeffmethod == other.wavelet.daubcoeffmethod && wavelet.CHmethod == other.wavelet.CHmethod && wavelet.CHSLmethod == other.wavelet.CHSLmethod && wavelet.EDmethod == other.wavelet.EDmethod diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 8d05a7f3a..d15f39f14 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -896,7 +896,7 @@ class WaveletParams { Glib::ustring CLmethod; Glib::ustring Backmethod; Glib::ustring Tilesmethod; - Glib::ustring choicemethod; + Glib::ustring daubcoeffmethod; Glib::ustring CHmethod; Glib::ustring Medgreinf; Glib::ustring CHSLmethod; diff --git a/rtengine/refreshmap.cc b/rtengine/refreshmap.cc index ecbec5ff2..d2cf58687 100644 --- a/rtengine/refreshmap.cc +++ b/rtengine/refreshmap.cc @@ -362,7 +362,7 @@ DIRPYREQUALIZER, // EvWavHueskin2 DIRPYREQUALIZER, // EvWavedgrad DIRPYREQUALIZER, // EvWavedgval DIRPYREQUALIZER, // EvWavStrngth -DIRPYREQUALIZER, // EvWavchoicemet +DIRPYREQUALIZER, // EvWavdaubcoeffmet DIRPYREQUALIZER, // EvWavedgreinf DIRPYREQUALIZER, // EvWaveletch DIRPYREQUALIZER, //EvWavCHSLmet diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index ac9073a67..debc66216 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -372,7 +372,7 @@ void ParamsEdited::set (bool v) { wavelet.CLmethod = v; wavelet.Backmethod = v; wavelet.Tilesmethod = v; - wavelet.choicemethod = v; + wavelet.daubcoeffmethod = v; wavelet.CHmethod = v; wavelet.CHSLmethod = v; wavelet.EDmethod = v; @@ -803,7 +803,7 @@ void ParamsEdited::initFrom (const std::vector wavelet.CLmethod = wavelet.CLmethod && p.wavelet.CLmethod == other.wavelet.CLmethod; wavelet.Backmethod = wavelet.Backmethod && p.wavelet.Backmethod == other.wavelet.Backmethod; wavelet.Tilesmethod = wavelet.Tilesmethod && p.wavelet.Tilesmethod == other.wavelet.Tilesmethod; - wavelet.choicemethod = wavelet.choicemethod && p.wavelet.choicemethod == other.wavelet.choicemethod; + wavelet.daubcoeffmethod = wavelet.daubcoeffmethod && p.wavelet.daubcoeffmethod == other.wavelet.daubcoeffmethod; wavelet.CHmethod = wavelet.CHmethod && p.wavelet.CHmethod == other.wavelet.CHmethod; wavelet.CHSLmethod = wavelet.CHSLmethod && p.wavelet.CHSLmethod == other.wavelet.CHSLmethod; wavelet.EDmethod = wavelet.EDmethod && p.wavelet.EDmethod == other.wavelet.EDmethod; @@ -1238,7 +1238,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten if (wavelet.CLmethod) toEdit.wavelet.CLmethod = mods.wavelet.CLmethod; if (wavelet.Backmethod) toEdit.wavelet.Backmethod = mods.wavelet.Backmethod; if (wavelet.Tilesmethod) toEdit.wavelet.Tilesmethod = mods.wavelet.Tilesmethod; - if (wavelet.choicemethod) toEdit.wavelet.choicemethod = mods.wavelet.choicemethod; + if (wavelet.daubcoeffmethod) toEdit.wavelet.daubcoeffmethod = mods.wavelet.daubcoeffmethod; if (wavelet.CHmethod) toEdit.wavelet.CHmethod = mods.wavelet.CHmethod; if (wavelet.CHSLmethod) toEdit.wavelet.CHSLmethod = mods.wavelet.CHSLmethod; if (wavelet.EDmethod) toEdit.wavelet.EDmethod = mods.wavelet.EDmethod; diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index 5697de6cd..0aaf0cd99 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -503,7 +503,7 @@ class WaveletParamsEdited { bool CLmethod; bool Backmethod; bool Tilesmethod; - bool choicemethod; + bool daubcoeffmethod; bool Dirmethod; bool rescon; bool resconH; diff --git a/rtgui/wavelet.cc b/rtgui/wavelet.cc index 5dcdb2ff1..fa0c7d030 100644 --- a/rtgui/wavelet.cc +++ b/rtgui/wavelet.cc @@ -28,93 +28,44 @@ using namespace rtengine::procparams; extern Options options; Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), true, true) { - std::vector milestones; - CurveListener::setMulti(true); - nextnlevel=7.; - float r, g, b; - //from -PI to +PI (radians) convert to hsv and draw bottombar - Color::hsv2rgb01(0.4199, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.0 , r, g, b) ); // hsv: 0.4199 rad: -3.14 - Color::hsv2rgb01(0.5000, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.054 , r, g, b) ); // hsv: 0.5 rad: -2.8 - Color::hsv2rgb01(0.6000, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.1336, r, g, b) ); // hsv: 0.60 rad: -2.3 - Color::hsv2rgb01(0.7500, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.3567, r, g, b) ); // hsv: 0.75 rad: -0.9 - Color::hsv2rgb01(0.8560, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.4363, r, g, b) ); // hsv: 0.856 rad: -0.4 - Color::hsv2rgb01(0.9200, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.4841, r, g, b) ); // hsv: 0.92 rad: -0.1 - Color::hsv2rgb01(0.9300, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.5000, r, g, b) ); // hsv: 0.93 rad: 0 - Color::hsv2rgb01(0.9600, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.5366, r, g, b) ); // hsv: 0.96 rad: 0.25 - Color::hsv2rgb01(1.0000, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.5955, r, g, b) ); // hsv: 1. rad: 0.6 - Color::hsv2rgb01(0.0675, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.6911, r, g, b) ); // hsv: 0.0675 rad: 1.2 - Color::hsv2rgb01(0.0900, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.7229, r, g, b) ); // hsv: 0.09 rad: 1.4 - Color::hsv2rgb01(0.1700, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.7707, r, g, b) ); // hsv: 0.17 rad: 1.7 - Color::hsv2rgb01(0.2650, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.8503, r, g, b) ); // hsv: 0.265 rad: 2.1 - Color::hsv2rgb01(0.3240, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.8981, r, g, b) ); // hsv: 0.324 rad: 2.5 - Color::hsv2rgb01(0.4197, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(1. , r, g, b) ); // hsv: 0.419 rad: 3.14 - - std::vector milestones2; - milestones2.push_back( GradientMilestone(0.0, 0.0, 0.0, 0.0) ); - milestones2.push_back( GradientMilestone(1.0, 1.0, 1.0, 1.0) ); - - std::vector defaultCurve; + std::vector milestones; + CurveListener::setMulti(true); + nextnlevel=7.; + float r, g, b; + //from -PI to +PI (radians) convert to hsv and draw bottombar + Color::hsv2rgb01(0.4199, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.0 , r, g, b) ); // hsv: 0.4199 rad: -3.14 + Color::hsv2rgb01(0.5000, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.054 , r, g, b) ); // hsv: 0.5 rad: -2.8 + Color::hsv2rgb01(0.6000, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.1336, r, g, b) ); // hsv: 0.60 rad: -2.3 + Color::hsv2rgb01(0.7500, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.3567, r, g, b) ); // hsv: 0.75 rad: -0.9 + Color::hsv2rgb01(0.8560, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.4363, r, g, b) ); // hsv: 0.856 rad: -0.4 + Color::hsv2rgb01(0.9200, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.4841, r, g, b) ); // hsv: 0.92 rad: -0.1 + Color::hsv2rgb01(0.9300, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.5000, r, g, b) ); // hsv: 0.93 rad: 0 + Color::hsv2rgb01(0.9600, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.5366, r, g, b) ); // hsv: 0.96 rad: 0.25 + Color::hsv2rgb01(1.0000, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.5955, r, g, b) ); // hsv: 1. rad: 0.6 + Color::hsv2rgb01(0.0675, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.6911, r, g, b) ); // hsv: 0.0675 rad: 1.2 + Color::hsv2rgb01(0.0900, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.7229, r, g, b) ); // hsv: 0.09 rad: 1.4 + Color::hsv2rgb01(0.1700, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.7707, r, g, b) ); // hsv: 0.17 rad: 1.7 + Color::hsv2rgb01(0.2650, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.8503, r, g, b) ); // hsv: 0.265 rad: 2.1 + Color::hsv2rgb01(0.3240, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.8981, r, g, b) ); // hsv: 0.324 rad: 2.5 + Color::hsv2rgb01(0.4197, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(1. , r, g, b) ); // hsv: 0.419 rad: 3.14 - // frame and expand - dispFrame = Gtk::manage (new Gtk::Frame () ); - expdisplay = Gtk::manage (new Gtk::Expander (M("TP_WAVELET_DISP"))); - Gtk::HBox* hbdisplay = Gtk::manage( new Gtk::HBox()); - dispFrame->add(*expdisplay); - hbdisplay->set_spacing(8); - - levelFrame = Gtk::manage (new Gtk::Frame () ); - expcontrast = Gtk::manage (new Gtk::Expander (M("TP_WAVELET_LEVF"))); - Gtk::HBox* hbcontrast = Gtk::manage( new Gtk::HBox()); - levelFrame->add(*expcontrast); - hbcontrast->set_spacing(8); + std::vector milestones2; + milestones2.push_back( GradientMilestone(0.0, 0.0, 0.0, 0.0) ); + milestones2.push_back( GradientMilestone(1.0, 1.0, 1.0, 1.0) ); - chromaFrame = Gtk::manage (new Gtk::Frame () ); - expchroma = Gtk::manage (new Gtk::Expander (M("TP_WAVELET_LEVCH"))); - Gtk::HBox* hbchroma = Gtk::manage( new Gtk::HBox()); - chromaFrame->add(*expchroma); - hbchroma->set_spacing(8); + std::vector defaultCurve; - toningFrame = Gtk::manage (new Gtk::Frame () ); - exptoning = Gtk::manage (new Gtk::Expander (M("TP_WAVELET_TON"))); - Gtk::HBox* hbtoning = Gtk::manage( new Gtk::HBox()); - toningFrame->add(*exptoning); - hbtoning->set_spacing(8); + expsettings = new MyExpander (false, M("TP_WAVELET_SETTINGS")); + expcontrast = new MyExpander (false, M("TP_WAVELET_LEVF")); + expchroma = new MyExpander (false, M("TP_WAVELET_LEVCH")); + exptoning = new MyExpander (false,M("TP_WAVELET_TON")); + expnoise = new MyExpander (false, M("TP_WAVELET_NOISE")); + expedge = new MyExpander (false, M("TP_WAVELET_EDGE")); + expgamut = new MyExpander (false, M("TP_WAVELET_CONTR")); + expresid = new MyExpander (false, M("TP_WAVELET_RESID")); + expfinal = new MyExpander (false, M("TP_WAVELET_FINAL")); - noiseFrame = Gtk::manage (new Gtk::Frame () ); - expnoise = Gtk::manage (new Gtk::Expander (M("TP_WAVELET_NOISE"))); - Gtk::HBox* hbnoise = Gtk::manage( new Gtk::HBox()); - noiseFrame->add(*expnoise); - hbnoise->set_spacing(8); - - edgeFrame = Gtk::manage (new Gtk::Frame () ); - expedge = Gtk::manage (new Gtk::Expander (M("TP_WAVELET_EDGE"))); - Gtk::HBox* hbedge = Gtk::manage( new Gtk::HBox()); - edgeFrame->add(*expedge); - hbedge->set_spacing(8); - - controlFrame = Gtk::manage (new Gtk::Frame () ); - expgamut = Gtk::manage (new Gtk::Expander (M("TP_WAVELET_CONTR"))); - Gtk::HBox* hbgamut = Gtk::manage( new Gtk::HBox()); - controlFrame->add(*expgamut); - hbgamut->set_spacing(8); - - residualFrame = Gtk::manage (new Gtk::Frame () ); - expresid = Gtk::manage (new Gtk::Expander (M("TP_WAVELET_RESID"))); - hbresid = Gtk::manage( new Gtk::HBox()); - residualFrame->add(*expresid); - hbresid->set_spacing(8); // set spacing fo the horizontal box. - - - finalFrame = Gtk::manage (new Gtk::Frame () ); - expfinal = Gtk::manage (new Gtk::Expander (M("TP_WAVELET_FINAL"))); - Gtk::HBox* hbfinal = Gtk::manage( new Gtk::HBox()); - finalFrame->add(*expfinal); - hbfinal->set_spacing(8); - - //**************************************************** - - // Wavelet Settings - settingsFrame = Gtk::manage (new Gtk::Frame (M("TP_WAVELET_SETTINGS"))); +// Wavelet Settings settingsVBox = Gtk::manage (new Gtk::VBox()); settingsVBox->set_border_width(4); settingsVBox->set_spacing(2); @@ -122,135 +73,114 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), strength = Gtk::manage (new Adjuster (M("TP_WAVELET_STRENGTH"), 0, 100, 1, 100)); strength->setAdjusterListener (this); - thres = Gtk::manage (new Adjuster (M("TP_WAVELET_LEVELS"), 3, 9, 1, 7)); - thres->set_tooltip_text (M("TP_WAVELET_LEVELS_TOOLTIP")); - thres->setAdjusterListener (this); - - + thres = Gtk::manage (new Adjuster (M("TP_WAVELET_LEVELS"), 3, 9, 1, 7)); + thres->set_tooltip_text (M("TP_WAVELET_LEVELS_TOOLTIP")); + thres->setAdjusterListener (this); + tilesizeHBox = Gtk::manage (new Gtk::HBox()); tilesizeLabel = Gtk::manage (new Gtk::Label (M("TP_WAVELET_TILESIZE") + ":")); - Tilesmethod = Gtk::manage (new MyComboBoxText ()); - Tilesmethod->append_text (M("TP_WAVELET_TILESFULL")); - Tilesmethod->append_text (M("TP_WAVELET_TILESBIG")); - Tilesmethod->append_text (M("TP_WAVELET_TILESLIT")); - Tilesmethodconn = Tilesmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::TilesmethodChanged) ); - Tilesmethod->set_tooltip_text (M("TP_WAVELET_TILES_TOOLTIP")); - tilesizeHBox->pack_start(*tilesizeLabel, Gtk::PACK_SHRINK, 4); - tilesizeHBox->pack_start(*Tilesmethod); + //tilesizeLabel->set_alignment(Gtk::ALIGN_START); + Tilesmethod = Gtk::manage (new MyComboBoxText ()); + Tilesmethod->append_text (M("TP_WAVELET_TILESFULL")); + Tilesmethod->append_text (M("TP_WAVELET_TILESBIG")); + Tilesmethod->append_text (M("TP_WAVELET_TILESLIT")); + Tilesmethodconn = Tilesmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::TilesmethodChanged) ); + Tilesmethod->set_tooltip_text (M("TP_WAVELET_TILES_TOOLTIP")); + tilesizeHBox->pack_start(*tilesizeLabel, Gtk::PACK_SHRINK, 4); + tilesizeHBox->pack_start(*Tilesmethod); - choiceHBox = Gtk::manage (new Gtk::HBox()); - choiceLabel = Gtk::manage (new Gtk::Label (M("TP_WAVELET_DAUB") + ":")); - choicemethod = Gtk::manage (new MyComboBoxText ()); - choicemethod->set_sensitive(true); - choicemethod->append_text (M("TP_WAVELET_daub2")); - choicemethod->append_text (M("TP_WAVELET_daub4")); - choicemethod->append_text (M("TP_WAVELET_daub6")); - choicemethod->append_text (M("TP_WAVELET_daub10")); - choicemethod->append_text (M("TP_WAVELET_daub14")); - choicemethodconn = choicemethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::choicemethodChanged) ); - choicemethod->set_tooltip_text (M("TP_WAVELET_DAUB_TOOLTIP")); - choiceHBox->pack_start(*choiceLabel, Gtk::PACK_SHRINK, 4); - choiceHBox->pack_start(*choicemethod); + daubcoeffHBox = Gtk::manage (new Gtk::HBox()); + daubcoeffLabel = Gtk::manage (new Gtk::Label (M("TP_WAVELET_DAUB") + ":")); + daubcoeffmethod = Gtk::manage (new MyComboBoxText ()); + daubcoeffmethod->set_sensitive(true); + daubcoeffmethod->append_text (M("TP_WAVELET_DAUB2")); + daubcoeffmethod->append_text (M("TP_WAVELET_DAUB4")); + daubcoeffmethod->append_text (M("TP_WAVELET_DAUB6")); + daubcoeffmethod->append_text (M("TP_WAVELET_DAUB10")); + daubcoeffmethod->append_text (M("TP_WAVELET_DAUB14")); + daubcoeffmethodconn = daubcoeffmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::daubcoeffmethodChanged) ); + daubcoeffmethod->set_tooltip_text (M("TP_WAVELET_DAUB_TOOLTIP")); + daubcoeffHBox->pack_start(*daubcoeffLabel, Gtk::PACK_SHRINK, 4); + daubcoeffHBox->pack_start(*daubcoeffmethod); + + backgroundHBox = Gtk::manage (new Gtk::HBox()); + Backmethod = Gtk::manage (new MyComboBoxText ()); + Backmethod->append_text (M("TP_WAVELET_B0")); + Backmethod->append_text (M("TP_WAVELET_B1")); + Backmethod->append_text (M("TP_WAVELET_B2")); + Backmethodconn = Backmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::BackmethodChanged) ); + backgroundLabel = Gtk::manage (new Gtk::Label (M("TP_WAVELET_BACKGROUND") + ":")); + backgroundHBox->pack_start(*backgroundLabel, Gtk::PACK_SHRINK, 4); + backgroundHBox->pack_start(*Backmethod); + + levdirMainHBox = Gtk::manage (new Gtk::HBox()); + CLmethod = Gtk::manage (new MyComboBoxText ()); + CLmethod->append_text (M("TP_WAVELET_LEVDIR_ONE")); + CLmethod->append_text (M("TP_WAVELET_LEVDIR_INF")); + CLmethod->append_text (M("TP_WAVELET_LEVDIR_SUP")); + CLmethod->append_text (M("TP_WAVELET_LEVDIR_ALL")); + CLmethodconn = CLmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::CLmethodChanged) ); + levdirMainLabel = Gtk::manage (new Gtk::Label (M("TP_WAVELET_PROC") + ":")); + levdirMainHBox->pack_start(*levdirMainLabel, Gtk::PACK_SHRINK, 4); + levdirMainHBox->pack_start(*CLmethod); //same + + levdirSubHBox = Gtk::manage (new Gtk::HBox()); + Lmethod = Gtk::manage (new MyComboBoxText ()); + Lmethod->set_sensitive(false); + Lmethod->set_sensitive(false); + Lmethod->append_text (M("TP_WAVELET_1")); + Lmethod->append_text (M("TP_WAVELET_2")); + Lmethod->append_text (M("TP_WAVELET_3")); + Lmethod->append_text (M("TP_WAVELET_4")); + Lmethod->append_text (M("TP_WAVELET_5")); + Lmethod->append_text (M("TP_WAVELET_6")); + Lmethod->append_text (M("TP_WAVELET_7")); + Lmethod->append_text (M("TP_WAVELET_8")); + Lmethod->append_text (M("TP_WAVELET_9")); + Lmethod->append_text (M("TP_WAVELET_SUPE")); + Lmethod->append_text (M("TP_WAVELET_RESID")); + Lmethod->set_active(0); + Dirmethod = Gtk::manage (new MyComboBoxText ()); + Dirmethod->set_sensitive(false); + Dirmethod->append_text (M("TP_WAVELET_DONE")); + Dirmethod->append_text (M("TP_WAVELET_DTWO")); + Dirmethod->append_text (M("TP_WAVELET_DTHR")); + Dirmethod->append_text (M("TP_WAVELET_DALL")); + Lmethodconn = Lmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::LmethodChanged) ); + Dirmethodconn = Dirmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::DirmethodChanged) ); + levdirSubHBox->pack_start(*Lmethod); + levdirSubHBox->pack_start(*Dirmethod, Gtk::PACK_EXPAND_WIDGET, 2); // same, but 2 not 4? - // Gtk::HSeparator *separatorbal = Gtk::manage (new Gtk::HSeparator()); settingsVBox->pack_start(*strength); settingsVBox->pack_start(*thres); settingsVBox->pack_start(*tilesizeHBox); - settingsVBox->pack_start(*choiceHBox); - // settingsVBox->pack_start(*separatorbal, Gtk::PACK_SHRINK, 2); - - settingsFrame->add(*settingsVBox); - pack_start (*settingsFrame, Gtk::PACK_EXPAND_WIDGET, 4); + settingsVBox->pack_start(*daubcoeffHBox); + settingsVBox->pack_start(*backgroundHBox); + settingsVBox->pack_start(*levdirMainHBox); + settingsVBox->pack_start(*levdirSubHBox); - // Preview Settings - Gtk::VBox * diBox = Gtk::manage (new Gtk::VBox()); - diBox->set_border_width(4); - diBox->set_spacing(2); - - previewBackHBox = Gtk::manage (new Gtk::HBox()); - previewBackLabel = Gtk::manage (new Gtk::Label (M("TP_WAVELET_PREVIEWBACK") + ":")); - previewBackHBox->pack_start(*previewBackLabel, Gtk::PACK_SHRINK, 4); - Backmethod = Gtk::manage (new MyComboBoxText ()); - Backmethod->append_text (M("TP_WAVELET_B0")); - Backmethod->append_text (M("TP_WAVELET_B1")); - Backmethod->append_text (M("TP_WAVELET_B2")); - Backmethodconn = Backmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::BackmethodChanged) ); - previewBackHBox->pack_start(*Backmethod); - - - previewLevelsHBox = Gtk::manage (new Gtk::HBox()); - previewLevelsLabel = Gtk::manage (new Gtk::Label (M("TP_WAVELET_PREVIEWLEVELS") + ":")); - previewLevelsHBox->pack_start(*previewLevelsLabel, Gtk::PACK_SHRINK, 4); - CLmethod = Gtk::manage (new MyComboBoxText ()); - CLmethod->append_text (M("TP_WAVELET_ONE")); - CLmethod->append_text (M("TP_WAVELET_INF")); - CLmethod->append_text (M("TP_WAVELET_SUP")); - CLmethod->append_text (M("TP_WAVELET_ALL")); - CLmethodconn = CLmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::CLmethodChanged) ); - previewLevelsHBox->pack_start(*CLmethod); - diBox->pack_start (*previewLevelsHBox); - - previewLDirHBox = Gtk::manage (new Gtk::HBox()); - Lmethod = Gtk::manage (new MyComboBoxText ()); - Lmethod->set_sensitive(false); - Lmethod->set_sensitive(false); - Lmethod->append_text (M("TP_WAVELET_1")); - Lmethod->append_text (M("TP_WAVELET_2")); - Lmethod->append_text (M("TP_WAVELET_3")); - Lmethod->append_text (M("TP_WAVELET_4")); - Lmethod->append_text (M("TP_WAVELET_5")); - Lmethod->append_text (M("TP_WAVELET_6")); - Lmethod->append_text (M("TP_WAVELET_7")); - Lmethod->append_text (M("TP_WAVELET_8")); - Lmethod->append_text (M("TP_WAVELET_9")); - Lmethod->append_text (M("TP_WAVELET_SUPE")); - Lmethod->append_text (M("TP_WAVELET_RESID")); - Lmethod->set_active(0); - Lmethodconn = Lmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::LmethodChanged) ); - - Dirmethod = Gtk::manage (new MyComboBoxText ()); - Dirmethod->set_sensitive(false); - Dirmethod->append_text (M("TP_WAVELET_DONE")); - Dirmethod->append_text (M("TP_WAVELET_DTWO")); - Dirmethod->append_text (M("TP_WAVELET_DTHR")); - Dirmethod->append_text (M("TP_WAVELET_DALL")); - Dirmethodconn = Dirmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::DirmethodChanged) ); - - previewLDirHBox->pack_start(*Lmethod, Gtk::PACK_EXPAND_WIDGET, 2); - previewLDirHBox->pack_start(*Dirmethod); - - diBox->pack_start (*previewLDirHBox, Gtk::PACK_EXPAND_WIDGET, 0); - diBox->pack_start (*previewBackHBox); - - - //levels contrast******************************** +// Contrast Gtk::VBox * levBox = Gtk::manage (new Gtk::VBox()); levBox->set_border_width(4); levBox->set_spacing(2); - - Gtk::HBox * buttonBox = Gtk::manage (new Gtk::HBox()); + Gtk::HBox * buttonBox = Gtk::manage (new Gtk::HBox(true, 10)); wavLabels = Gtk::manage(new Gtk::Label("---", Gtk::ALIGN_CENTER)); - levBox->pack_start(*buttonBox, Gtk::PACK_SHRINK, 2); Gtk::Button * contrastMinusButton = Gtk::manage (new Gtk::Button(M("TP_WAVELET_CONTRAST_MINUS"))); - buttonBox->pack_start(*contrastMinusButton, Gtk::PACK_SHRINK, 2); + buttonBox->pack_start(*contrastMinusButton); contrastMinusPressedConn = contrastMinusButton->signal_pressed().connect( sigc::mem_fun(*this, &Wavelet::contrastMinusPressed)); Gtk::Button * neutralButton = Gtk::manage (new Gtk::Button(M("TP_WAVELET_NEUTRAL"))); - buttonBox->pack_start(*neutralButton, Gtk::PACK_SHRINK, 2); + buttonBox->pack_start(*neutralButton); neutralPressedConn = neutralButton->signal_pressed().connect( sigc::mem_fun(*this, &Wavelet::neutralPressed)); - + Gtk::Button * contrastPlusButton = Gtk::manage (new Gtk::Button(M("TP_WAVELET_CONTRAST_PLUS"))); - buttonBox->pack_start(*contrastPlusButton, Gtk::PACK_SHRINK, 2); + buttonBox->pack_start(*contrastPlusButton); contrastPlusPressedConn = contrastPlusButton->signal_pressed().connect( sigc::mem_fun(*this, &Wavelet::contrastPlusPressed)); buttonBox->show_all_children(); - - Gtk::HSeparator *separator2 = Gtk::manage (new Gtk::HSeparator()); - levBox->pack_start(*separator2, Gtk::PACK_SHRINK, 2); - for(int i = 0; i < 9; i++) { @@ -263,7 +193,7 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), default: ss =Glib::ustring::compose( "%1",(i+1)); } - + correction[i] = Gtk::manage ( new Adjuster (ss, -100, 350, 1, 0) ); correction[i]->setAdjusterListener(this); levBox->pack_start(*correction[i]); @@ -274,11 +204,6 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), wavLabels->show(); levBox->pack_start (*wavLabels); - - Gtk::HSeparator *separatorC = Gtk::manage (new Gtk::HSeparator()); - levBox->pack_start(*separatorC, Gtk::PACK_SHRINK, 2); - - contrastSHFrame = Gtk::manage (new Gtk::Frame (M("TP_WAVELET_APPLYTO"))); contrastSHVBox = Gtk::manage (new Gtk::VBox); contrastSHVBox->set_border_width(4); @@ -313,7 +238,7 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), contrastSHFrame->add(*contrastSHVBox); levBox->pack_start(*contrastSHFrame); - // chroma lev +// Chromaticity Gtk::VBox * chBox = Gtk::manage (new Gtk::VBox()); chBox->set_border_width(4); chBox->set_spacing(2); @@ -340,10 +265,8 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), CHSLmethodconn = CHSLmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::CHSLmethodChanged) ); ctboxCH->pack_start(*CHSLmethod); -// chBox->pack_start (*ctboxCH); - - Gtk::HSeparator *separator22 = Gtk::manage (new Gtk::HSeparator()); - chBox->pack_start(*separator22, Gtk::PACK_SHRINK, 2); + Gtk::HSeparator *separatorChromaMethod = Gtk::manage (new Gtk::HSeparator()); + chBox->pack_start(*separatorChromaMethod, Gtk::PACK_SHRINK, 2); chroma = Gtk::manage (new Adjuster (M("TP_WAVELET_CHRO"), 1, 9, 1, 5)); chroma->set_tooltip_text (M("TP_WAVELET_CHRO_TOOLTIP")); @@ -357,6 +280,7 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), pastlev = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_PASTEL"), 0., 70., 0., 2., 30., 20., 0, false)); pastlev->setAdjusterListener (this); pastlev->setBgGradient(milestones2); + chBox->pack_start(*pastlev); chBox->pack_start(*satlev); @@ -365,23 +289,15 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), chBox->pack_start(*chro); chro->setAdjusterListener (this); - //Chroma curve and sliders levels******************************** - - - Gtk::HBox * buttonchBox = Gtk::manage (new Gtk::HBox()); - wavLabelsch = Gtk::manage(new Gtk::Label("---", Gtk::ALIGN_CENTER)); - + Gtk::HBox * buttonchBox = Gtk::manage (new Gtk::HBox(true, 10)); + neutralchButton = Gtk::manage (new Gtk::Button(M("TP_WAVELET_NEUTRAL"))); + neutralchPressedConn = neutralchButton->signal_pressed().connect( sigc::mem_fun(*this, &Wavelet::neutralchPressed)); + separatorNeutral = Gtk::manage (new Gtk::HSeparator()); + chBox->pack_start(*separatorNeutral, Gtk::PACK_SHRINK, 2); + buttonchBox->pack_start(*neutralchButton); + buttonchBox->show_all_children(); chBox->pack_start(*buttonchBox, Gtk::PACK_SHRINK, 2); - neutralchButton = Gtk::manage (new Gtk::Button(M("TP_WAVELET_NEUTRAL"))); - buttonchBox->pack_start(*neutralchButton, Gtk::PACK_SHRINK, 2); - neutralchPressedConn = neutralchButton->signal_pressed().connect( sigc::mem_fun(*this, &Wavelet::neutralchPressed)); - - buttonchBox->show_all_children(); - - separator3 = Gtk::manage (new Gtk::HSeparator()); - chBox->pack_start(*separator3, Gtk::PACK_SHRINK, 2); - for(int i = 0; i < 9; i++) { Glib::ustring ss; @@ -393,15 +309,13 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), default: ss =Glib::ustring::compose( "%1",(i+1)); } - + correctionch[i] = Gtk::manage ( new Adjuster (ss, -100, 100, 1, 0) ); correctionch[i]->setAdjusterListener(this); chBox->pack_start(*correctionch[i]); } - - - //----------- Color Opacity curve RG ------------------------------ +// Toning Gtk::VBox * tonBox = Gtk::manage (new Gtk::VBox()); tonBox->set_border_width(4); tonBox->set_spacing(2); @@ -416,12 +330,9 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), opaCurveEditorG->curveListComplete(); opaCurveEditorG->show(); - tonBox->pack_start( *opaCurveEditorG, Gtk::PACK_SHRINK, 2); - //----------- Opacity curve BY------------------------------ - opacityCurveEditorG = new CurveEditorGroup (options.lastWaveletCurvesDir, M("TP_WAVELET_OPACITY")); opacityCurveEditorG->setCurveListener (this); @@ -435,7 +346,7 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), tonBox->pack_start( *opacityCurveEditorG, Gtk::PACK_SHRINK, 2); - //----------------Noise +// Denoise and Refine Gtk::VBox * noiseBox = Gtk::manage (new Gtk::VBox()); noiseBox->set_border_width(4); noiseBox->set_spacing(2); @@ -445,11 +356,6 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), linkedgConn = linkedg->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::linkedgToggled) ); noiseBox->pack_start(*linkedg); - - /*ednoisbox = Gtk::manage (new Gtk::HBox ()); - labmednois = Gtk::manage (new Gtk::Label (M("TP_WAVELET_NOISE")+":")); - ednoisbox->pack_start (*labmednois, Gtk::PACK_SHRINK, 1); - */ level0noise = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_LEVZERO"), -30., 100., 0., M("TP_WAVELET_STREN"), 1., 0., 100., 0., M("TP_WAVELET_NOIS"), 1., NULL, false)); level0noise->setAdjusterListener (this); level0noise->setUpdatePolicy(RTUP_DYNAMIC); @@ -462,17 +368,11 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), level2noise->setAdjusterListener (this); level2noise->setUpdatePolicy(RTUP_DYNAMIC); - // Gtk::HSeparator *separatored = Gtk::manage (new Gtk::HSeparator()); - // noiseBox->pack_start(*separatored, Gtk::PACK_SHRINK, 2); - - //noiseBox->pack_start (*ednoisbox); noiseBox->pack_start( *level0noise, Gtk::PACK_SHRINK, 0); - noiseBox->pack_start( *level1noise, Gtk::PACK_SHRINK, 0); - noiseBox->pack_start( *level2noise, Gtk::PACK_SHRINK, 0); - - //----------- Edge------------------------------ + +// Edge Sharpness Gtk::VBox * edgBox = Gtk::manage (new Gtk::VBox()); edgBox->set_border_width(4); edgBox->set_spacing(2); @@ -481,13 +381,11 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), edgval->setAdjusterListener(this); edgBox->pack_start(*edgval); - edgrad = Gtk::manage ( new Adjuster (M("TP_WAVELET_EDRAD"), 0, 100, 1, 15) ); edgrad->setAdjusterListener(this); edgBox->pack_start(*edgrad); edgrad->set_tooltip_markup (M("TP_WAVELET_EDRAD_TOOLTIP")); - // edgthresh = Gtk::manage (new Adjuster (M("TP_WAVELET_EDGTHRESH"), -50, 100, 1, 10 )); edgthresh->setAdjusterListener (this); edgthresh->set_tooltip_markup (M("TP_WAVELET_EDGTHRESH_TOOLTIP")); @@ -519,22 +417,17 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), EDmethodconn = EDmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::EDmethodChanged) ); ctboxED->pack_start(*EDmethod); edgBox->pack_start (*ctboxED); -// edgcont = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_EDGCONT"), 0., 100., 0., 20., 100., 75., 0, false)); tr=options.rtSettings.top_right; br=options.rtSettings.bot_right; tl=options.rtSettings.top_left; bl=options.rtSettings.bot_left; edgcont = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_EDGCONT"), 0., 100., bl, tl, br, tr, 0., false)); - // edgcont = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_EDGCONT"), 0., 100., 0, 10, 75, 40, 0., false)); edgcont->setAdjusterListener (this); edgcont->setBgGradient(milestones2); edgcont->set_tooltip_markup (M("TP_WAVELET_EDGCONT_TOOLTIP")); - - - - //-------------------Curve for Edge + // <-- Edge Sharpness Local Contrast curve CCWcurveEditorG = new CurveEditorGroup (options.lastWaveletCurvesDir, M("TP_WAVELET_CCURVE")); CCWcurveEditorG->setCurveListener (this); @@ -545,9 +438,9 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), ccshape->setResetCurve(FlatCurveType(defaultCurve.at(0)), defaultCurve); ccshape->setTooltip(M("TP_WAVELET_CURVEEDITOR_CC_TOOLTIP")); - CCWcurveEditorG->curveListComplete(); - CCWcurveEditorG->show(); - //---------------- + CCWcurveEditorG->curveListComplete(); + CCWcurveEditorG->show(); + // --> edgBox->pack_start (*edgcont); edgBox->pack_start(*CCWcurveEditorG, Gtk::PACK_SHRINK, 4); @@ -562,7 +455,6 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), eddebox = Gtk::manage (new Gtk::HBox ()); edgBox->pack_start (*eddebox); - edgBox->pack_start(*medianlev); edgedetect = Gtk::manage (new Adjuster (M("TP_WAVELET_EDGEDETECT"), 0, 100, 1, 80)); @@ -578,17 +470,14 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), edgedetectthr2 = Gtk::manage (new Adjuster (M("TP_WAVELET_EDGEDETECTTHR2"), -10, 100, 1, 0)); edgedetectthr2->setAdjusterListener (this); - //edgedetectthr2->set_tooltip_text (M("TP_WAVELET_EDGEDETECTTHR2_TOOLTIP")); edgBox->pack_start(*edgedetectthr2); - lipst = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_LIPST"))); lipst->set_active (true); lipstConn = lipst->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::lipstToggled) ); lipst->set_tooltip_text (M("TP_WAVELET_LIPST_TOOLTIP")); - //edgBox->pack_start(*lipst); - - // gamut control------------------------------------------------- + +// Gamut Gtk::VBox * conBox = Gtk::manage (new Gtk::VBox()); conBox->set_border_width(4); conBox->set_spacing(2); @@ -621,14 +510,12 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), conBox->pack_start (*curveEditorGAM, Gtk::PACK_SHRINK, 4); - avoid = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_AVOID"))); avoid->set_active (true); avoidConn = avoid->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::avoidToggled) ); conBox->pack_start(*avoid); - //************************** - - // residual image + +// Residual Image Gtk::VBox * resBox = Gtk::manage (new Gtk::VBox()); resBox->set_border_width(4); resBox->set_spacing(2); @@ -645,7 +532,6 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), resconH->setAdjusterListener (this); resBox->pack_start(*resconH, Gtk::PACK_SHRINK); - thrH = Gtk::manage (new Adjuster (M("TP_WAVELET_THRH"), 0, 100, 1, 65)); thrH->setAdjusterListener (this); resBox->pack_start(*thrH,Gtk::PACK_SHRINK); @@ -670,11 +556,9 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), TMmethod = Gtk::manage (new MyComboBoxText ()); TMmethod->append_text (M("TP_WAVELET_COMPCONT")); TMmethod->append_text (M("TP_WAVELET_COMPTM")); -// TMmethod->append_text (M("TP_WAVELET_COMBOTH")); TMmethodconn = TMmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::TMmethodChanged) ); ctboxTM->pack_start(*TMmethod); resBox->pack_start (*ctboxTM); - tmrs = Gtk::manage(new Adjuster (M("TP_WAVELET_TMSTRENGTH"), -1.0, 2.0, 0.01, 0.0)); tmrs->set_tooltip_text (M("TP_WAVELET_TMSTRENGTH_TOOLTIP")); @@ -687,12 +571,6 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), resBox->pack_start(*gamma); gamma->setAdjusterListener (this); - /* tmr = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_TMR"))); - tmr->set_active (true); - tmr->set_tooltip_text (M("TP_WAVELET_TMR_TOOLTIP")); - tmrConn = tmr->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::tmrToggled) ); - resBox->pack_start(*tmr); -*/ Gtk::HSeparator *separatorR1 = Gtk::manage (new Gtk::HSeparator()); resBox->pack_start(*separatorR1, Gtk::PACK_SHRINK, 2); @@ -717,7 +595,6 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), milestones.push_back( GradientMilestone(double(x), double(R), double(G), double(B)) ); } - curveEditorRES = new CurveEditorGroup (options.lastWaveletCurvesDir); curveEditorRES->setCurveListener (this); @@ -729,7 +606,7 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), resBox->pack_start (*curveEditorRES, Gtk::PACK_SHRINK, 4); - //color balance + // Toning and Color Balance Gtk::HSeparator *separatorCB = Gtk::manage (new Gtk::HSeparator()); Gtk::VBox *chanMixerHLBox = Gtk::manage (new Gtk::VBox()); @@ -741,7 +618,6 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), cbenabConn = cbenab->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::cbenabToggled) ); cbenab->set_tooltip_text (M("TP_WAVELET_CB_TOOLTIP")); - Gtk::Image* iblueR = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); Gtk::Image* iyelL = Gtk::manage (new RTImage ("ajd-wb-temp2.png")); Gtk::Image* imagL = Gtk::manage (new RTImage ("ajd-wb-green1.png")); @@ -757,8 +633,6 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), Gtk::Image* imagLh = Gtk::manage (new RTImage ("ajd-wb-green1.png")); Gtk::Image* igreenRh = Gtk::manage (new RTImage ("ajd-wb-green2.png")); - - greenhigh = Gtk::manage (new Adjuster ("", -100., 100., 1., 0., igreenRh, imagLh)); bluehigh = Gtk::manage (new Adjuster ("", -100., 100., 1., 0., iblueRh, iyelLh)); @@ -782,7 +656,6 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), greenhigh->setAdjusterListener (this); bluehigh->setAdjusterListener (this); - resBox->pack_start(*separatorCB, Gtk::PACK_SHRINK); chanMixerHLFrame = Gtk::manage (new Gtk::Frame(M("TP_COLORTONING_HIGHLIGHT"))); @@ -798,7 +671,7 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), resBox->pack_start(*chanMixerMidFrame, Gtk::PACK_SHRINK); resBox->pack_start(*chanMixerShadowsFrame, Gtk::PACK_SHRINK); - //--------------------- Reset sliders --------------------------- + // Reset sliders neutrHBox = Gtk::manage (new Gtk::HBox ()); neutrHBox->set_border_width (2); @@ -808,21 +681,15 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), neutral->set_tooltip_text (M("TP_COLORTONING_NEUTRAL_TIP")); neutralconn = neutral->signal_pressed().connect( sigc::mem_fun(*this, &Wavelet::neutral_pressed) ); neutral->show(); - neutrHBox->pack_start (*neutral); + neutrHBox->pack_start (*neutral, Gtk::PACK_EXPAND_WIDGET); resBox->pack_start (*neutrHBox); - - - - -//-------------------------------------- - //final touchup +// Final Touchup ctboxBA = Gtk::manage (new Gtk::HBox ()); labmBA = Gtk::manage (new Gtk::Label (M("TP_WAVELET_BATYPE")+":")); ctboxBA->pack_start (*labmBA, Gtk::PACK_SHRINK, 1); - BAmethod = Gtk::manage (new MyComboBoxText ()); BAmethod->append_text (M("TP_WAVELET_BANONE")); BAmethod->append_text (M("TP_WAVELET_BASLI")); @@ -830,7 +697,6 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), BAmethodconn = BAmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::BAmethodChanged) ); ctboxBA->pack_start(*BAmethod); - balance = Gtk::manage (new Adjuster (M("TP_WAVELET_BALANCE"), -30, 100, 1, 0)); balance->setAdjusterListener (this); balance->set_tooltip_text (M("TP_WAVELET_BALANCE_TOOLTIP")); @@ -853,12 +719,10 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), opacityCurveEditorW->curveListComplete(); opacityCurveEditorW->show(); - - iter = Gtk::manage (new Adjuster (M("TP_WAVELET_ITER"), -3, 3, 1, 0)); iter->setAdjusterListener (this); iter->set_tooltip_text (M("TP_WAVELET_ITER_TOOLTIP")); - + Gtk::HSeparator *separatorbalend = Gtk::manage (new Gtk::HSeparator()); opacityCurveEditorWL = new CurveEditorGroup (options.lastWaveletCurvesDir, M("TP_WAVELET_OPACITYWL")); @@ -870,13 +734,10 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), opacityShapeWL->setResetCurve(FlatCurveType(defaultCurve.at(0)), defaultCurve); opacityShapeWL->setTooltip(M("TP_WAVELET_OPACITYWL_TOOLTIP")); -// opacityShape->setBottomBarBgGradient(milestonesW); - // This will add the reset button at the end of the curveType buttons opacityCurveEditorWL->curveListComplete(); opacityCurveEditorWL->show(); - curveEditorG = new CurveEditorGroup (options.lastWaveletCurvesDir,M("TP_WAVELET_CONTEDIT")); curveEditorG->setCurveListener (this); @@ -889,7 +750,6 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), clshape->setBottomBarBgGradient(milestones22); clshape->setLeftBarBgGradient(milestones22); - curveEditorG->curveListComplete(); tmr = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_BALCHRO"))); @@ -897,7 +757,6 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), tmr->set_tooltip_text (M("TP_WAVELET_BALCHRO_TOOLTIP")); tmrConn = tmr->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::tmrToggled) ); - Gtk::VBox * finalBox = Gtk::manage (new Gtk::VBox()); finalBox->set_border_width(4); finalBox->set_spacing(2); @@ -915,36 +774,33 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), finalBox->pack_start (*curveEditorG, Gtk::PACK_SHRINK, 4); +//----------------------------- + expsettings->add(*settingsVBox); + pack_start (*expsettings); -//----------------------------- - expdisplay->add(*diBox); - pack_start (*dispFrame, Gtk::PACK_EXPAND_WIDGET, 4); + expcontrast->add(*levBox); + pack_start (*expcontrast); - expcontrast->add(*levBox); - pack_start (*levelFrame, Gtk::PACK_EXPAND_WIDGET, 4); - - expchroma->add(*chBox); - pack_start (*chromaFrame, Gtk::PACK_EXPAND_WIDGET, 4); - - exptoning->add(*tonBox); - pack_start (*toningFrame, Gtk::PACK_EXPAND_WIDGET, 4); + expchroma->add(*chBox); + pack_start (*expchroma); - expnoise->add(*noiseBox); - pack_start (*noiseFrame, Gtk::PACK_EXPAND_WIDGET, 4); - - expedge->add(*edgBox); - pack_start (*edgeFrame, Gtk::PACK_EXPAND_WIDGET, 4); - - expgamut->add(*conBox); - pack_start (*controlFrame, Gtk::PACK_EXPAND_WIDGET, 4); - - expresid->add(*resBox); - pack_start(*residualFrame, Gtk::PACK_EXPAND_WIDGET, 4); + exptoning->add(*tonBox); + pack_start (*exptoning); - expfinal->add(*finalBox); - pack_start(*finalFrame, Gtk::PACK_EXPAND_WIDGET, 4); - - show_all_children (); + expnoise->add(*noiseBox); + pack_start (*expnoise); + + expedge->add(*edgBox); + pack_start (*expedge); + + expgamut->add(*conBox); + pack_start (*expgamut); + + expresid->add(*resBox); + pack_start(*expresid); + + expfinal->add(*finalBox); + pack_start(*expfinal); } Wavelet::~Wavelet () { @@ -1010,7 +866,7 @@ void Wavelet::read (const ProcParams* pp, const ParamsEdited* pedited) { CLmethodconn.block(true); Backmethodconn.block(true); Tilesmethodconn.block(true); - choicemethodconn.block(true); + daubcoeffmethodconn.block(true); Dirmethodconn.block(true); CHmethodconn.block(true); CHSLmethodconn.block(true); @@ -1116,18 +972,18 @@ void Wavelet::read (const ProcParams* pp, const ParamsEdited* pedited) { Tilesmethod->set_active (2); TilesmethodChanged(); - choicemethod->set_active (4); - if (pp->wavelet.choicemethod=="2_") - choicemethod->set_active (0); - else if (pp->wavelet.choicemethod=="4_") - choicemethod->set_active (1); - else if (pp->wavelet.choicemethod=="6_") - choicemethod->set_active (2); - else if (pp->wavelet.choicemethod=="10_") - choicemethod->set_active (3); - else if (pp->wavelet.choicemethod=="14_") - choicemethod->set_active (4); - choicemethodChanged(); + daubcoeffmethod->set_active (4); + if (pp->wavelet.daubcoeffmethod=="2_") + daubcoeffmethod->set_active (0); + else if (pp->wavelet.daubcoeffmethod=="4_") + daubcoeffmethod->set_active (1); + else if (pp->wavelet.daubcoeffmethod=="6_") + daubcoeffmethod->set_active (2); + else if (pp->wavelet.daubcoeffmethod=="10_") + daubcoeffmethod->set_active (3); + else if (pp->wavelet.daubcoeffmethod=="14_") + daubcoeffmethod->set_active (4); + daubcoeffmethodChanged(); Dirmethod->set_active (3); if (pp->wavelet.Dirmethod=="one") @@ -1153,8 +1009,8 @@ void Wavelet::read (const ProcParams* pp, const ParamsEdited* pedited) { Backmethod->set_active (2); if (!pedited->wavelet.Tilesmethod) Tilesmethod->set_active (2); - if (!pedited->wavelet.choicemethod) - choicemethod->set_active (4); + if (!pedited->wavelet.daubcoeffmethod) + daubcoeffmethod->set_active (4); if (!pedited->wavelet.Dirmethod) Dirmethod->set_active (3); if (!pedited->wavelet.CHmethod) @@ -1358,7 +1214,7 @@ void Wavelet::read (const ProcParams* pp, const ParamsEdited* pedited) { CLmethodconn.block(false); Backmethodconn.block(false); Tilesmethodconn.block(false); - choicemethodconn.block(false); + daubcoeffmethodconn.block(false); CHmethodconn.block(false); CHSLmethodconn.block(false); EDmethodconn.block(false); @@ -1478,7 +1334,7 @@ void Wavelet::write (ProcParams* pp, ParamsEdited* pedited) { pedited->wavelet.CLmethod = CLmethod->get_active_row_number() != 3; pedited->wavelet.Backmethod = Backmethod->get_active_row_number() != 2; pedited->wavelet.Tilesmethod = Tilesmethod->get_active_row_number() != 2; - pedited->wavelet.choicemethod = choicemethod->get_active_row_number() != 4; + pedited->wavelet.daubcoeffmethod = daubcoeffmethod->get_active_row_number() != 4; pedited->wavelet.CHmethod = CHmethod->get_active_row_number() != 2; pedited->wavelet.CHSLmethod = CHSLmethod->get_active_row_number() != 1; pedited->wavelet.EDmethod = EDmethod->get_active_row_number() != 1; @@ -1611,16 +1467,16 @@ void Wavelet::write (ProcParams* pp, ParamsEdited* pedited) { else if (Tilesmethod->get_active_row_number()==2) pp->wavelet.Tilesmethod = "lit"; - if (choicemethod->get_active_row_number()==0) - pp->wavelet.choicemethod = "2_"; - else if (choicemethod->get_active_row_number()==1) - pp->wavelet.choicemethod = "4_"; - else if (choicemethod->get_active_row_number()==2) - pp->wavelet.choicemethod = "6_"; - else if (choicemethod->get_active_row_number()==3) - pp->wavelet.choicemethod = "10_"; - else if (choicemethod->get_active_row_number()==4) - pp->wavelet.choicemethod = "14_"; + if (daubcoeffmethod->get_active_row_number()==0) + pp->wavelet.daubcoeffmethod = "2_"; + else if (daubcoeffmethod->get_active_row_number()==1) + pp->wavelet.daubcoeffmethod = "4_"; + else if (daubcoeffmethod->get_active_row_number()==2) + pp->wavelet.daubcoeffmethod = "6_"; + else if (daubcoeffmethod->get_active_row_number()==3) + pp->wavelet.daubcoeffmethod = "10_"; + else if (daubcoeffmethod->get_active_row_number()==4) + pp->wavelet.daubcoeffmethod = "14_"; if (Dirmethod->get_active_row_number()==0) pp->wavelet.Dirmethod = "one"; @@ -1874,91 +1730,51 @@ void Wavelet::HSmethodChanged() { } void Wavelet::CHmethodChanged() { - if (!batchMode) { - if(CHmethod->get_active_row_number()==0) {//without - /* if(CHSLmethod->get_active_row_number()==1) {//CU - CHSLmethod->show(); - pastlev->hide(); - satlev->hide(); - chroma->hide(); - chro->hide(); - //CLVcurveEditorG->show(); - separator3->show(); - labmC->show(); - neutralchButton->hide(); - for (int i = 0; i < 9; i++) { - correctionch[i]->hide(); - } - } - */ - // else if(CHSLmethod->get_active_row_number()==0) {//SL - CHSLmethod->show(); - pastlev->hide(); - satlev->hide(); - chroma->hide(); - chro->hide(); - labmC->show(); - neutralchButton->show(); - int y=thres->getValue(); - int z; - for(z=y;z<9;z++) correctionch[z]->hide(); - for(z=0;zshow(); - // } - - } - else if(CHmethod->get_active_row_number()==1) {//with - /* if(CHSLmethod->get_active_row_number()==1) {//CU - CHSLmethod->show(); - pastlev->show(); - satlev->show(); - chroma->show(); - chro->hide(); - //CLVcurveEditorG->show(); - separator3->show(); - - labmC->show(); - neutralchButton->hide(); - for (int i = 0; i < 9; i++) { - correctionch[i]->hide(); - } - } - */ - // else if(CHSLmethod->get_active_row_number()==0) {//SL - CHSLmethod->show(); - pastlev->show(); - satlev->show(); - chroma->show(); - chro->hide(); - labmC->show(); - //CLVcurveEditorG->hide(); - neutralchButton->show(); - int y=thres->getValue(); - int z; - for(z=y;z<9;z++) correctionch[z]->hide(); - for(z=0;zshow(); - // } - } - else {//link - chro->show(); - pastlev->hide(); - satlev->hide(); - chroma->hide(); - //CLVcurveEditorG->hide(); - separator3->hide(); - - CHSLmethod->hide(); - labmC->hide(); - neutralchButton->hide(); - for (int i = 0; i < 9; i++) { - correctionch[i]->hide(); - } - } - - } - - if (listener && (multiImage||getEnabled()) ) { - listener->panelChanged (EvWavCHmet, CHmethod->get_active_text ()); - } + if (!batchMode) { + if(CHmethod->get_active_row_number()==0) { + CHSLmethod->show(); + pastlev->hide(); + satlev->hide(); + chroma->hide(); + chro->hide(); + labmC->show(); + separatorNeutral->hide(); + neutralchButton->show(); + int y=thres->getValue(); + int z; + for(z=y;z<9;z++) correctionch[z]->hide(); + for(z=0;zshow(); + } else if(CHmethod->get_active_row_number()==1) { + CHSLmethod->show(); + pastlev->show(); + satlev->show(); + chroma->show(); + chro->hide(); + labmC->show(); + separatorNeutral->show(); + neutralchButton->show(); + int y=thres->getValue(); + int z; + for(z=y;z<9;z++) correctionch[z]->hide(); + for(z=0;zshow(); + } else { + chro->show(); + pastlev->hide(); + satlev->hide(); + chroma->hide(); + CHSLmethod->hide(); + labmC->hide(); + separatorNeutral->hide(); + neutralchButton->hide(); + for (int i = 0; i < 9; i++) { + correctionch[i]->hide(); + } + } + } + + if (listener && (multiImage||getEnabled()) ) { + listener->panelChanged (EvWavCHmet, CHmethod->get_active_text ()); + } } void Wavelet::CHSLmethodChanged() { @@ -2093,11 +1909,11 @@ void Wavelet::TilesmethodChanged() { } } -void Wavelet::choicemethodChanged() { +void Wavelet::daubcoeffmethodChanged() { if (!batchMode) { } if (listener && (multiImage||getEnabled()) ) { - listener->panelChanged (EvWavchoicemet, choicemethod->get_active_text ()); + listener->panelChanged (EvWavdaubcoeffmet, daubcoeffmethod->get_active_text ()); } } @@ -2130,7 +1946,7 @@ void Wavelet::setBatchMode (bool batchMode) { CLmethod->append_text (M("GENERAL_UNCHANGED")); Backmethod->append_text (M("GENERAL_UNCHANGED")); Tilesmethod->append_text (M("GENERAL_UNCHANGED")); - choicemethod->append_text (M("GENERAL_UNCHANGED")); + daubcoeffmethod->append_text (M("GENERAL_UNCHANGED")); CHmethod->append_text (M("GENERAL_UNCHANGED")); Medgreinf->append_text (M("GENERAL_UNCHANGED")); CHSLmethod->append_text (M("GENERAL_UNCHANGED")); diff --git a/rtgui/wavelet.h b/rtgui/wavelet.h index a14ae5937..e9c4cae3e 100644 --- a/rtgui/wavelet.h +++ b/rtgui/wavelet.h @@ -45,6 +45,7 @@ protected: Gtk::HSeparator* colorSep; Gtk::HSeparator* separator3; Gtk::HSeparator* separatorCB; + Gtk::HSeparator* separatorNeutral; CurveEditorGroup* opaCurveEditorG; FlatCurveEditor* opacityShapeRG; @@ -141,8 +142,8 @@ protected: sigc::connection Backmethodconn; MyComboBoxText* Tilesmethod; sigc::connection Tilesmethodconn; - MyComboBoxText* choicemethod; - sigc::connection choicemethodconn; + MyComboBoxText* daubcoeffmethod; + sigc::connection daubcoeffmethodconn; MyComboBoxText* Dirmethod; sigc::connection Dirmethodconn; MyComboBoxText* Medgreinf; @@ -161,13 +162,13 @@ protected: Gtk::Frame *chanMixerHLFrame; Gtk::Frame *chanMixerMidFrame; Gtk::Frame *chanMixerShadowsFrame; + Gtk::Frame *dFrame; Gtk::Label* colLabel; Gtk::Label* interLabel; Gtk::Label* wavLabels; - Gtk::Label* wavLabelsch; Gtk::Label* hsmethodLabel; - Gtk::Label* choiceLabel; + Gtk::Label* daubcoeffLabel; Gtk::Label* ColorBalanceLabel; Gtk::Label* labmC; Gtk::Label* labmch; @@ -176,26 +177,26 @@ protected: Gtk::Label* labmBA; Gtk::Label* labmedgr; Gtk::Label* labmednois; - Gtk::Expander* expcontrast; - Gtk::Expander* expresid; - Gtk::Expander* expgamut; - Gtk::Expander* expfinal; - Gtk::Expander* expchroma; - Gtk::Expander* exptoning; - Gtk::Expander* expdisplay; - Gtk::Expander* expnoise; - Gtk::Expander* expedge; - Gtk::HBox* hbresid; - Gtk::HBox* tilesizeHBox; - Gtk::HBox* previewLevelsHBox; - Gtk::HBox* previewBackHBox; - Gtk::HBox* previewLDirHBox; - Gtk::HBox* hsmethodHBox; - Gtk::HBox* choiceHBox; + MyExpander* expchroma; + MyExpander* expcontrast; + MyExpander* expedge; + MyExpander* expfinal; + MyExpander* expgamut; + MyExpander* expnoise; + MyExpander* expresid; + MyExpander* expsettings; + MyExpander* exptoning; + Gtk::HBox* ctboxCB; Gtk::HBox* ctboxCH; Gtk::HBox* ctboxED; Gtk::HBox* ctboxTM; - Gtk::HBox* ctboxCB; + Gtk::HBox* hbresid; + Gtk::HBox* backgroundHBox; + Gtk::HBox* daubcoeffHBox; + Gtk::HBox* hsmethodHBox; + Gtk::HBox* levdirMainHBox; + Gtk::HBox* levdirSubHBox; + Gtk::HBox* tilesizeHBox; Gtk::HBox* ctboxBA; Gtk::HBox* ctboxch; @@ -205,8 +206,8 @@ protected: Gtk::VBox* settingsVBox; Gtk::VBox* contrastSHVBox; Gtk::Label* tilesizeLabel; - Gtk::Label* previewLevelsLabel; - Gtk::Label* previewBackLabel; + Gtk::Label* levdirMainLabel; + Gtk::Label* backgroundLabel; Gtk::Button* neutral; Gtk::HBox* neutrHBox; @@ -254,7 +255,7 @@ public: void contrastPlusPressed (); void contrastMinusPressed (); void LmethodChanged (); - void choicemethodChanged (); + void daubcoeffmethodChanged (); void CHmethodChanged (); void MedgreinfChanged (); void CHSLmethodChanged ();