Partial paste support for gradient sharpening, microcotrast and raw black levels

This commit is contained in:
michael
2011-07-08 06:49:10 -04:00
parent 4b6d0b9cbd
commit 80706b0da1
3 changed files with 54 additions and 6 deletions

View File

@@ -508,6 +508,7 @@ PARTIALPASTE_FLATFIELDAUTOSELECT;FF Auto Select
PARTIALPASTE_FLATFIELDBLURRADIUS;FF Blur Radius
PARTIALPASTE_FLATFIELDBLURTYPE;FF Blur Type
PARTIALPASTE_FLATFIELDFILE;Flat field (FF) File
PARTIALPASTE_GRADIENTSHARPEN;Gradient Sharpening (border)
PARTIALPASTE_HLRECONSTRUCTION;Highlight reconstruction
PARTIALPASTE_HLRECOVERY;Highlight recovery
PARTIALPASTE_HLRECOVERYAMOUNT;Highlight recovery amount
@@ -521,6 +522,7 @@ PARTIALPASTE_LENSGROUP;Lens related settings
PARTIALPASTE_LUMADENOISE;Luminance noise reduction
PARTIALPASTE_LUMINANCEGROUP;Luminance related settings
PARTIALPASTE_METAICMGROUP;Metadata/ICM settings
PARTIALPASTE_MICROCONTRAST;Microcontrast
PARTIALPASTE_PERSPECTIVE;Perspective
PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
PARTIALPASTE_PREPROCESS_HOTDEADPIXFILT;Apply hot/dead pixel filter
@@ -529,6 +531,7 @@ PARTIALPASTE_RAWCACORR_AUTO;CA auto correction
PARTIALPASTE_RAWCACORR_CABLUE;CA Blue
PARTIALPASTE_RAWCACORR_CARED;CA Red
PARTIALPASTE_RAWEXPOS_LINEAR;Raw white point linear corr. factor
PARTIALPASTE_RAWEXPOS_BLACK;Black Level
PARTIALPASTE_RAWEXPOS_PRESER;Raw white point HL preserving corr. (EV)
PARTIALPASTE_RAWGROUP;Raw settings
PARTIALPASTE_RAW_DCBENHANCE;Apply DCB enhancement step
@@ -538,7 +541,7 @@ PARTIALPASTE_RAW_FALSECOLOR;Demosaic False color suppression steps
PARTIALPASTE_RESIZE;Resize
PARTIALPASTE_ROTATION;Rotation
PARTIALPASTE_SHADOWSHIGHLIGHTS;Shadows/Highlights
PARTIALPASTE_SHARPENING;Sharpening
PARTIALPASTE_SHARPENING;Sharpening (USM/RL)
PARTIALPASTE_VIGNETTING;Vignetting correction
PARTIALPASTE_WAVELETEQUALIZER;Wavelet equalizer
PARTIALPASTE_WHITEBALANCE;White balance

View File

@@ -43,7 +43,9 @@ PartialPasteDlg::PartialPasteDlg () {
// options in detail:
sharpen = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_SHARPENING")));
impden = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_IMPULSEDENOISE")));
gradsharpen = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_GRADIENTSHARPEN")));
microcontrast = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_MICROCONTRAST")));
impden = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_IMPULSEDENOISE")));
//lumaden = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_LUMADENOISE")));
dirpyreq = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DIRPYREQUALIZER")));
//waveq = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_WAVELETEQUALIZER")));
@@ -78,6 +80,7 @@ PartialPasteDlg::PartialPasteDlg () {
// options in raw:
raw_expos = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWEXPOS_LINEAR")));
raw_preser = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWEXPOS_PRESER")));
raw_black = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWEXPOS_BLACK")));
raw_ca_autocorrect = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWCACORR_AUTO")));
raw_cared = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWCACORR_CARED")));
raw_cablue = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWCACORR_CABLUE")));
@@ -114,6 +117,8 @@ PartialPasteDlg::PartialPasteDlg () {
vboxes[1]->pack_start (*detail, Gtk::PACK_SHRINK, 2);
vboxes[1]->pack_start (*hseps[1], Gtk::PACK_SHRINK, 2);
vboxes[1]->pack_start (*sharpen, Gtk::PACK_SHRINK, 2);
vboxes[1]->pack_start (*gradsharpen, Gtk::PACK_SHRINK, 2);
vboxes[1]->pack_start (*microcontrast, Gtk::PACK_SHRINK, 2);
vboxes[1]->pack_start (*impden, Gtk::PACK_SHRINK, 2);
//vboxes[1]->pack_start (*lumaden, Gtk::PACK_SHRINK, 2);
//vboxes[1]->pack_start (*colorden, Gtk::PACK_SHRINK, 2);
@@ -156,17 +161,23 @@ PartialPasteDlg::PartialPasteDlg () {
vboxes[6]->pack_start (*raw_ccSteps, Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start (*raw_dcb_iterations, Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start (*raw_dcb_enhance, Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
vboxes[6]->pack_start (*raw_linenoise, Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start (*raw_greenthresh, Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start (*raw_hotdeadpix_filt, Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
vboxes[6]->pack_start (*raw_expos, Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start (*raw_preser, Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start (*raw_black, Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
vboxes[6]->pack_start (*df_file, Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start (*df_AutoSelect, Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
vboxes[6]->pack_start (*ff_file, Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start (*ff_AutoSelect, Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start (*ff_BlurType, Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start (*ff_BlurRadius, Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
vboxes[6]->pack_start (*raw_ca_autocorrect, Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start (*raw_cared, Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start (*raw_cablue, Gtk::PACK_SHRINK, 2);
@@ -220,6 +231,8 @@ PartialPasteDlg::PartialPasteDlg () {
labcurveConn = labcurve->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true));
sharpenConn = sharpen->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true));
gradsharpenConn = gradsharpen->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true));
microcontrastConn = microcontrast->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true));
impdenConn = impden->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true));
//lumadenConn = lumaden->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true));
//colordenConn = colorden->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true));
@@ -254,6 +267,7 @@ PartialPasteDlg::PartialPasteDlg () {
raw_dcb_enhanceConn = raw_dcb_enhance->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
raw_exposConn = raw_expos->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
raw_preserConn = raw_preser->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
raw_blackConn = raw_black->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
raw_ca_autocorrectConn = raw_ca_autocorrect->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
raw_caredConn = raw_cared->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
raw_cablueConn = raw_cablue->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
@@ -321,6 +335,7 @@ void PartialPasteDlg::rawToggled () {
raw_dcb_enhanceConn.block (true);
raw_exposConn.block (true);
raw_preserConn.block (true);
raw_blackConn.block (true);
raw_ca_autocorrectConn.block (true);
raw_caredConn.block (true);
raw_cablueConn.block (true);
@@ -342,6 +357,7 @@ void PartialPasteDlg::rawToggled () {
raw_dcb_enhance->set_active (raw->get_active ());
raw_expos->set_active (raw->get_active ());
raw_preser->set_active (raw->get_active ());
raw_black->set_active (raw->get_active ());
raw_ca_autocorrect->set_active (raw->get_active ());
raw_cared->set_active (raw->get_active ());
raw_cablue->set_active (raw->get_active ());
@@ -361,6 +377,7 @@ void PartialPasteDlg::rawToggled () {
raw_dcb_enhanceConn.block (false);
raw_exposConn.block (false);
raw_preserConn.block (false);
raw_blackConn.block (false);
raw_ca_autocorrectConn.block (false);
raw_caredConn.block (false);
raw_cablueConn.block (false);
@@ -401,7 +418,9 @@ void PartialPasteDlg::basicToggled () {
void PartialPasteDlg::detailToggled () {
sharpenConn.block (true);
impdenConn.block (true);
gradsharpenConn.block(true);
microcontrastConn.block(true);
impdenConn.block (true);
dirpyrdenConn.block (true);
//lumadenConn.block (true);
//colordenConn.block (true);
@@ -412,6 +431,8 @@ void PartialPasteDlg::detailToggled () {
detail->set_inconsistent (false);
sharpen->set_active (detail->get_active ());
gradsharpen->set_active (detail->get_active ());
microcontrast->set_active (detail->get_active ());
impden->set_active (detail->get_active ());
dirpyrden->set_active (detail->get_active ());
//lumaden->set_active (detail->get_active ());
@@ -421,7 +442,9 @@ void PartialPasteDlg::detailToggled () {
//waveq->set_active (detail->get_active ());
sharpenConn.block (false);
impdenConn.block (false);
gradsharpenConn.block(false);
microcontrastConn.block(false);
impdenConn.block (false);
dirpyrdenConn.block (false);
//lumadenConn.block (false);
//colordenConn.block (false);
@@ -520,6 +543,18 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dst, const r
if (labcurve->get_active ()) dst->labCurve = src->labCurve;
if (sharpen->get_active ()) dst->sharpening = src->sharpening;
if (gradsharpen->get_active ()){
dst->clarity.enabled = src->clarity.enabled;
dst->clarity.clstrength = src->clarity.clstrength;
dst->clarity.clpasses = src->clarity.clpasses;
dst->clarity.clthreechannels = src->clarity.clthreechannels;
}
if (microcontrast->get_active ()){
dst->clarity.enabledtwo = src->clarity.enabledtwo;
dst->clarity.MLmicromatrix = src->clarity.MLmicromatrix;
dst->clarity.mlstrength = src->clarity.mlstrength;
dst->clarity.uniformity = src->clarity.uniformity;
}
if (impden->get_active ()) dst->impulseDenoise = src->impulseDenoise;
//if (lumaden->get_active ()) dst->lumaDenoise = src->lumaDenoise;
if (dirpyreq->get_active ()) dst->dirpyrequalizer = src->dirpyrequalizer;
@@ -554,6 +589,13 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dst, const r
if (raw_dcb_enhance->get_active ()) dst->raw.dcb_enhance =src->raw.dcb_enhance;
if (raw_expos->get_active ()) dst->raw.expos =src->raw.expos;
if (raw_preser->get_active ()) dst->raw.preser =src->raw.preser;
if (raw_black->get_active ()){
dst->raw.blackzero =src->raw.blackzero;
dst->raw.blackone =src->raw.blackone;
dst->raw.blacktwo =src->raw.blacktwo;
dst->raw.blackthree =src->raw.blackthree;
dst->raw.twogreen =src->raw.twogreen;
}
if (raw_ca_autocorrect->get_active ()) dst->raw.ca_autocorrect =src->raw.ca_autocorrect;
if (raw_cared->get_active ()) dst->raw.cared =src->raw.cared;
if (raw_cablue->get_active ()) dst->raw.cablue =src->raw.cablue;

View File

@@ -46,6 +46,8 @@ class PartialPasteDlg : public Gtk::Dialog {
// options in detail:
Gtk::CheckButton* sharpen;
Gtk::CheckButton* gradsharpen;
Gtk::CheckButton* microcontrast;
Gtk::CheckButton* impden;
Gtk::CheckButton* lumaden;
Gtk::CheckButton* waveq;
@@ -81,6 +83,7 @@ class PartialPasteDlg : public Gtk::Dialog {
// options in raw:
Gtk::CheckButton* raw_expos;
Gtk::CheckButton* raw_preser;
Gtk::CheckButton* raw_black;
Gtk::CheckButton* raw_ca_autocorrect;
Gtk::CheckButton* raw_cared;
Gtk::CheckButton* raw_cablue;
@@ -101,13 +104,13 @@ class PartialPasteDlg : public Gtk::Dialog {
sigc::connection everythingConn, basicConn, detailConn, colorConn, lensConn, compositionConn, metaicmConn, rawConn;;
sigc::connection wbConn, exposureConn, hlrecConn, shConn, labcurveConn;
sigc::connection sharpenConn, impdenConn, lumadenConn, dirpyrdenConn, colordenConn, waveqConn, defringeConn, dirpyreqConn;
sigc::connection sharpenConn, gradsharpenConn, microcontrastConn, impdenConn, lumadenConn, dirpyrdenConn, colordenConn, waveqConn, defringeConn, dirpyreqConn;
sigc::connection chmixerConn, colorshiftConn, colorboostConn, hsveqConn;
sigc::connection distortionConn, cacorrConn, vignettingConn;
sigc::connection coarserotConn, finerotConn, cropConn, resizeConn, perspectiveConn, commonTransConn;
sigc::connection exifchConn, iptcConn, icmConn;
sigc::connection df_fileConn, df_AutoSelectConn, ff_fileConn, ff_AutoSelectConn, ff_BlurRadiusConn, ff_BlurTypeConn;
sigc::connection raw_caredConn, raw_cablueConn, raw_ca_autocorrectConn, raw_hotdeadpix_filtConn, raw_linenoiseConn, raw_greenthreshConn, raw_ccStepsConn, raw_dmethodConn, raw_dcb_iterationsConn, raw_dcb_enhanceConn, raw_exposConn, raw_preserConn;
sigc::connection raw_caredConn, raw_cablueConn, raw_ca_autocorrectConn, raw_hotdeadpix_filtConn, raw_linenoiseConn, raw_greenthreshConn, raw_ccStepsConn, raw_dmethodConn, raw_dcb_iterationsConn, raw_dcb_enhanceConn, raw_exposConn, raw_preserConn, raw_blackConn;
public:
PartialPasteDlg ();