Committing patch from issue 1240: "Partial profile handling"

This commit is contained in:
natureh
2012-02-26 03:23:08 +01:00
parent c21fa69aea
commit dd93fff44c
60 changed files with 2243 additions and 2214 deletions

View File

@@ -18,11 +18,12 @@
*/
#include "partialpastedlg.h"
#include "multilangmgr.h"
#include "paramsedited.h"
PartialPasteDlg::PartialPasteDlg () {
PartialPasteDlg::PartialPasteDlg (Glib::ustring title) {
set_modal (true);
set_title (M("PARTIALPASTE_DIALOGLABEL"));
set_title (title);
everything = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_EVERYTHING")));
everything ->set_name("partialPasteHeader");
@@ -47,6 +48,7 @@ PartialPasteDlg::PartialPasteDlg () {
exposure = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_EXPOSURE")));
hlrec = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_HLRECONSTRUCTION")));
sh = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_SHADOWSHIGHLIGHTS")));
epd = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_EPD")));
labcurve = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_LABCURVE")));
// options in detail:
@@ -56,7 +58,6 @@ PartialPasteDlg::PartialPasteDlg () {
impden = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_IMPULSEDENOISE")));
dirpyreq = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DIRPYREQUALIZER")));
defringe = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DEFRINGE")));
edgePreservingDecompositionUI = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_EPD")));
// options in color:
vibrance = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_VIBRANCE")));
@@ -122,6 +123,7 @@ PartialPasteDlg::PartialPasteDlg () {
vboxes[0]->pack_start (*exposure, Gtk::PACK_SHRINK, 2);
vboxes[0]->pack_start (*hlrec, Gtk::PACK_SHRINK, 2);
vboxes[0]->pack_start (*sh, Gtk::PACK_SHRINK, 2);
vboxes[0]->pack_start (*epd, Gtk::PACK_SHRINK, 2);
vboxes[0]->pack_start (*labcurve, Gtk::PACK_SHRINK, 2);
vboxes[1]->pack_start (*detail, Gtk::PACK_SHRINK, 2);
@@ -132,7 +134,6 @@ PartialPasteDlg::PartialPasteDlg () {
vboxes[1]->pack_start (*impden, Gtk::PACK_SHRINK, 2);
vboxes[1]->pack_start (*dirpyrden, Gtk::PACK_SHRINK, 2);
vboxes[1]->pack_start (*defringe, Gtk::PACK_SHRINK, 2);
vboxes[1]->pack_start (*edgePreservingDecompositionUI, Gtk::PACK_SHRINK, 2);
vboxes[1]->pack_start (*dirpyreq, Gtk::PACK_SHRINK, 2);
//vboxes[1]->pack_start (*waveq, Gtk::PACK_SHRINK, 2);
@@ -239,6 +240,7 @@ PartialPasteDlg::PartialPasteDlg () {
exposureConn = exposure->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true));
hlrecConn = hlrec->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true));
shConn = sh->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true));
epdConn = epd->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true));
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));
@@ -249,7 +251,6 @@ PartialPasteDlg::PartialPasteDlg () {
dirpyreqConn = dirpyreq->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true));
//waveqConn = waveq->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true));
defringeConn = defringe->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true));
edgePreservingDecompositionUIConn = edgePreservingDecompositionUI->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true));
vibranceConn = vibrance->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true));
chmixerConn = chmixer->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true));
@@ -294,10 +295,10 @@ PartialPasteDlg::PartialPasteDlg () {
ff_BlurRadiusConn = ff_BlurRadius->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
ff_BlurTypeConn = ff_BlurType->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
add_button (Gtk::StockID("gtk-ok"), 1);
add_button (Gtk::StockID("gtk-cancel"), 0);
set_response_sensitive (1);
set_default_response (1);
add_button (Gtk::StockID("gtk-ok"), Gtk::RESPONSE_OK);
add_button (Gtk::StockID("gtk-cancel"), Gtk::RESPONSE_CANCEL);
set_response_sensitive (Gtk::RESPONSE_OK);
set_default_response (Gtk::RESPONSE_OK);
show_all_children ();
}
@@ -414,6 +415,7 @@ void PartialPasteDlg::basicToggled () {
exposureConn.block (true);
hlrecConn.block (true);
shConn.block (true);
epdConn.block(true);
labcurveConn.block (true);
basic->set_inconsistent (false);
@@ -422,13 +424,15 @@ void PartialPasteDlg::basicToggled () {
exposure->set_active (basic->get_active ());
hlrec->set_active (basic->get_active ());
sh->set_active (basic->get_active ());
epd->set_active (basic->get_active ());
labcurve->set_active (basic->get_active ());
wbConn.block (false);
exposureConn.block (false);
hlrecConn.block (false);
labcurveConn.block (false);
shConn.block (false);
epdConn.block (false);
labcurveConn.block (false);
}
void PartialPasteDlg::detailToggled () {
@@ -439,7 +443,6 @@ void PartialPasteDlg::detailToggled () {
impdenConn.block (true);
dirpyrdenConn.block (true);
defringeConn.block (true);
edgePreservingDecompositionUIConn.block(true);
dirpyreqConn.block (true);
//waveqConn.block (true);
@@ -448,10 +451,9 @@ void PartialPasteDlg::detailToggled () {
sharpen->set_active (detail->get_active ());
sharpenedge->set_active (detail->get_active ());
sharpenmicro->set_active (detail->get_active ());
impden->set_active (detail->get_active ());
impden->set_active (detail->get_active ());
dirpyrden->set_active (detail->get_active ());
defringe->set_active (detail->get_active ());
edgePreservingDecompositionUI->set_active (detail->get_active ());
dirpyreq->set_active (detail->get_active ());
//waveq->set_active (detail->get_active ());
@@ -461,32 +463,31 @@ void PartialPasteDlg::detailToggled () {
impdenConn.block (false);
dirpyrdenConn.block (false);
defringeConn.block (false);
edgePreservingDecompositionUIConn.block (false);
dirpyreqConn.block (false);
//waveqConn.block (false);
}
void PartialPasteDlg::colorToggled () {
vibranceConn.block (true);
vibranceConn.block (true);
chmixerConn.block (true);
hsveqConn.block (true);
rgbcurvesConn.block (true);
gamcsconn.block (true);
gamcsconn.block (true);
color->set_inconsistent (false);
vibrance->set_active (color->get_active ());
chmixer->set_active (color->get_active ());
hsveq->set_active (color->get_active ());
rgbcurves->set_active (color->get_active ());
icm->set_active (color->get_active ());
vibranceConn.block (false);
hsveq->set_active (color->get_active ());
rgbcurves->set_active (color->get_active ());
icm->set_active (color->get_active ());
vibranceConn.block (false);
chmixerConn.block (false);
hsveqConn.block (false);
rgbcurvesConn.block (false);
gamcsconn.block (false);
gamcsconn.block (false);
}
void PartialPasteDlg::lensToggled () {
@@ -537,7 +538,7 @@ void PartialPasteDlg::metaicmToggled () {
exifchConn.block (true);
iptcConn.block (true);
icmConn.block (true);
gamcsconn.block (true);
gamcsconn.block (true);
metaicm->set_inconsistent (false);
exifch->set_active (metaicm->get_active ());
@@ -548,75 +549,99 @@ void PartialPasteDlg::metaicmToggled () {
exifchConn.block (false);
iptcConn.block (false);
icmConn.block (false);
gamcsconn.block (false);
gamcsconn.block (false);
}
void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dst, const rtengine::procparams::ProcParams* src) {
/*
* Copies the selected items from the source ProcParams+ParamsEdited(optional)
* to the destination ProcParams.
*/
void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dstPP, ParamsEdited* dstPE, const rtengine::procparams::ProcParams* srcPP, const ParamsEdited* srcPE) {
if (wb->get_active ()) dst->wb = src->wb;
if (exposure->get_active ()) dst->toneCurve = src->toneCurve;
if (hlrec->get_active ()) dst->hlrecovery = src->hlrecovery;
if (sh->get_active ()) dst->sh = src->sh;
if (labcurve->get_active ()) dst->labCurve = src->labCurve;
if (sharpen->get_active ()) dst->sharpening = src->sharpening;
if (sharpenedge->get_active ()) dst->sharpenEdge = src->sharpenEdge;
if (sharpenmicro->get_active()) dst->sharpenMicro = src->sharpenMicro;
if (impden->get_active ()) dst->impulseDenoise = src->impulseDenoise;
if (dirpyreq->get_active ()) dst->dirpyrequalizer = src->dirpyrequalizer;
if (defringe->get_active ()) dst->defringe = src->defringe;
if (dirpyrden->get_active ()) dst->dirpyrDenoise = src->dirpyrDenoise;
if (vibrance->get_active ()) dst->vibrance = src->vibrance;
if (chmixer->get_active ()) dst->chmixer = src->chmixer;
if (hsveq->get_active ()) dst->hsvequalizer = src->hsvequalizer;
if (rgbcurves->get_active ()) dst->rgbCurves = src->rgbCurves;
if (icm->get_active ()) dst->icm = src->icm;
if (distortion->get_active ()) dst->distortion = src->distortion;
if (cacorr->get_active ()) dst->cacorrection = src->cacorrection;
if (vignetting->get_active ()) dst->vignetting = src->vignetting;
if (coarserot->get_active ()) dst->coarse = src->coarse;
if (finerot->get_active ()) dst->rotate = src->rotate;
if (crop->get_active ()) dst->crop = src->crop;
if (resize->get_active ()) dst->resize = src->resize;
if (perspective->get_active ()) dst->perspective = src->perspective;
if (commonTrans->get_active ()) dst->commonTrans = src->commonTrans;
if (exifch->get_active ()) dst->exif = src->exif;
if (iptc->get_active ()) dst->iptc = src->iptc;
if (icm->get_active ()) dst->icm = src->icm;
if (gam->get_active ()) dst->gam = src->gam;
if (raw_dmethod->get_active ()) dst->raw.dmethod =src->raw.dmethod;
if (raw_ccSteps->get_active ()) dst->raw.ccSteps =src->raw.ccSteps;
if (raw_dcb_iterations->get_active ()) dst->raw.dcb_iterations =src->raw.dcb_iterations;
if (raw_dcb_enhance->get_active ()) dst->raw.dcb_enhance =src->raw.dcb_enhance;
if (raw_all_enhance->get_active ()) dst->raw.all_enhance =src->raw.all_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;
ParamsEdited falsePE; // falsePE is a workaround to set a group of ParamsEdited to false
ParamsEdited filterPE; // Contains the initial information about the loaded values
if (srcPE) {
filterPE = *srcPE;
}
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;
if (raw_hotdeadpix_filt->get_active ()) dst->raw.hotdeadpix_filt=src->raw.hotdeadpix_filt;
if (raw_linenoise->get_active ()) dst->raw.linenoise =src->raw.linenoise;
if (raw_greenthresh->get_active ()) dst->raw.greenthresh =src->raw.greenthresh;
if (df_file->get_active ()) dst->raw.dark_frame = src->raw.dark_frame;
if (df_AutoSelect->get_active ()) dst->raw.df_autoselect = src->raw.df_autoselect;
if (ff_file->get_active ()) dst->raw.ff_file = src->raw.ff_file;
if (ff_AutoSelect->get_active ()) dst->raw.ff_AutoSelect = src->raw.ff_AutoSelect;
if (ff_BlurRadius->get_active ()) dst->raw.ff_BlurRadius = src->raw.ff_BlurRadius;
if (ff_BlurType->get_active ()) dst->raw.ff_BlurType = src->raw.ff_BlurType;
else {
// By default, everything has to be copied
filterPE.set(true);
}
// the general section is always ignored, whichever operation we use the PartialPaste for
filterPE.general = falsePE.general;
// Now we filter out the filter depending on the checked items
if (!wb->get_active ()) filterPE.wb = falsePE.wb;
if (!exposure->get_active ()) filterPE.toneCurve = falsePE.toneCurve;
if (!hlrec->get_active ()) filterPE.hlrecovery = falsePE.hlrecovery;
if (!sh->get_active ()) filterPE.sh = falsePE.sh;
if (!epd->get_active ()) filterPE.edgePreservingDecompositionUI = falsePE.edgePreservingDecompositionUI;
if (!labcurve->get_active ()) filterPE.labCurve = falsePE.labCurve;
if (!sharpen->get_active ()) filterPE.sharpening = falsePE.sharpening;
if (!sharpenedge->get_active ()) filterPE.sharpenEdge = falsePE.sharpenEdge;
if (!sharpenmicro->get_active()) filterPE.sharpenMicro = falsePE.sharpenMicro;
if (!impden->get_active ()) filterPE.impulseDenoise = falsePE.impulseDenoise;
if (!dirpyreq->get_active ()) filterPE.dirpyrequalizer = falsePE.dirpyrequalizer;
if (!defringe->get_active ()) filterPE.defringe = falsePE.defringe;
if (!dirpyrden->get_active ()) filterPE.dirpyrDenoise = falsePE.dirpyrDenoise;
if (!vibrance->get_active ()) filterPE.vibrance = falsePE.vibrance;
if (!chmixer->get_active ()) filterPE.chmixer = falsePE.chmixer;
if (!hsveq->get_active ()) filterPE.hsvequalizer = falsePE.hsvequalizer;
if (!rgbcurves->get_active ()) filterPE.rgbCurves = falsePE.rgbCurves;
if (!icm->get_active ()) filterPE.icm = falsePE.icm;
if (!distortion->get_active ()) filterPE.distortion = falsePE.distortion;
if (!cacorr->get_active ()) filterPE.cacorrection = falsePE.cacorrection;
if (!vignetting->get_active ()) filterPE.vignetting = falsePE.vignetting;
if (!coarserot->get_active ()) filterPE.coarse = falsePE.coarse;
if (!finerot->get_active ()) filterPE.rotate = falsePE.rotate;
if (!crop->get_active ()) filterPE.crop = falsePE.crop;
if (!resize->get_active ()) filterPE.resize = falsePE.resize;
if (!perspective->get_active ()) filterPE.perspective = falsePE.perspective;
if (!commonTrans->get_active ()) filterPE.commonTrans = falsePE.commonTrans;
if (!exifch->get_active ()) filterPE.exif = falsePE.exif;
if (!iptc->get_active ()) filterPE.iptc = falsePE.iptc;
if (!icm->get_active ()) filterPE.icm = falsePE.icm;
if (!raw_dmethod->get_active ()) filterPE.raw.dmethod = falsePE.raw.dmethod;
if (!raw_ccSteps->get_active ()) filterPE.raw.ccSteps = falsePE.raw.ccSteps;
if (!raw_dcb_iterations->get_active ()) filterPE.raw.dcbIterations = falsePE.raw.dcbIterations;
if (!raw_dcb_enhance->get_active ()) filterPE.raw.dcbEnhance = falsePE.raw.dcbEnhance;
if (!raw_all_enhance->get_active ()) filterPE.raw.allEnhance = falsePE.raw.allEnhance;
if (!raw_expos->get_active ()) filterPE.raw.exPos = falsePE.raw.exPos;
if (!raw_preser->get_active ()) filterPE.raw.exPreser = falsePE.raw.exPreser;
if (!raw_black->get_active ()) { filterPE.raw.exBlackzero = falsePE.raw.exBlackzero;
filterPE.raw.exBlackone = falsePE.raw.exBlackone;
filterPE.raw.exBlacktwo = falsePE.raw.exBlacktwo;
filterPE.raw.exBlackthree = falsePE.raw.exBlackthree;
filterPE.raw.exTwoGreen = falsePE.raw.exTwoGreen; }
if (!raw_ca_autocorrect->get_active ()) filterPE.raw.caCorrection = falsePE.raw.caCorrection;
if (!raw_cared->get_active ()) filterPE.raw.caRed = falsePE.raw.caRed;
if (!raw_cablue->get_active ()) filterPE.raw.caBlue = falsePE.raw.caBlue;
if (!raw_hotdeadpix_filt->get_active ()) { filterPE.raw.hotDeadPixelFilter = falsePE.raw.hotDeadPixelFilter;
filterPE.raw.hotDeadPixelThresh = falsePE.raw.hotDeadPixelThresh; }
if (!raw_linenoise->get_active ()) filterPE.raw.linenoise = falsePE.raw.linenoise;
if (!raw_greenthresh->get_active ()) filterPE.raw.greenEq = falsePE.raw.greenEq;
if (!df_file->get_active ()) filterPE.raw.darkFrame = falsePE.raw.darkFrame;
if (!df_AutoSelect->get_active ()) filterPE.raw.dfAuto = falsePE.raw.dfAuto;
if (!ff_file->get_active ()) filterPE.raw.ff_file = falsePE.raw.ff_file;
if (!ff_AutoSelect->get_active ()) filterPE.raw.ff_AutoSelect = falsePE.raw.ff_AutoSelect;
if (!ff_BlurRadius->get_active ()) filterPE.raw.ff_BlurRadius = falsePE.raw.ff_BlurRadius;
if (!ff_BlurType->get_active ()) filterPE.raw.ff_BlurType = falsePE.raw.ff_BlurType;
if (dstPE) *dstPE = filterPE;
// Apply the filter!
filterPE.combine(*dstPP, *srcPP, true);
}