use radio buttons to select between normal and custom pipeline for Fast Export

as suggested by @michaelezra
This commit is contained in:
Alberto Griggio 2017-03-13 16:39:10 +01:00
parent 7a69ff84a4
commit f99da0c1ef
4 changed files with 94 additions and 69 deletions

View File

@ -89,7 +89,10 @@ EXPORT_BYPASS_SHARPENEDGE;Bypass Edge Sharpening
EXPORT_BYPASS_SHARPENING;Bypass Sharpening
EXPORT_BYPASS_SHARPENMICRO;Bypass Microcontrast
EXPORT_BYPASS_SH_HQ;Bypass Sharp Mask Shadows/Highlights
EXPORT_USE_FAST_PIPELINE;Enable Special "Fast-Export" Processing Pipeline
EXPORT_PIPELINE;Processing pipeline
EXPORT_BYPASS;Processing steps to bypass
EXPORT_USE_NORMAL_PIPELINE;Standard (bypass some steps, resize at the end)
EXPORT_USE_FAST_PIPELINE;Dedicated (full processing on resized image)
EXPORT_USE_FAST_PIPELINE_TIP;Use a dedicated processing pipeline for images in Fast Export mode, that trades speed for quality. Resizing of the image is done as early as possible, instead of doing it at the end like in the normal pipeline. The speedup can be significant, but be prepared to see artifacts and a general degradation of output quality.
EXPORT_FASTEXPORTOPTIONS;<b>Fast Export Options</b>
EXPORT_INSTRUCTIONS;Fast Export options provide overrides to bypass time and resource consuming development settings and to run queue processing using the fast export settings instead. This method is recommended for quicker generation of lower resolution images when speed is a priority or when resized output is desired for one or many images without making modifications to their saved development parameters.

View File

@ -38,8 +38,11 @@ ExportPanel::ExportPanel () : listener (nullptr)
labExportTitle->set_alignment(Gtk::ALIGN_START);
pack_start(*labExportTitle, Gtk::PACK_SHRINK, 4);
Gtk::RadioButton::Group pipeline_group;
use_fast_pipeline = Gtk::manage ( new Gtk::RadioButton (pipeline_group, M("EXPORT_USE_FAST_PIPELINE")));
use_normal_pipeline = Gtk::manage ( new Gtk::RadioButton (pipeline_group, M("EXPORT_USE_NORMAL_PIPELINE")));
bypass_box = Gtk::manage(new Gtk::VBox());
bypass_ALL = Gtk::manage ( new Gtk::CheckButton (M("EXPORT_BYPASS_ALL")));
use_fast_pipeline = Gtk::manage ( new Gtk::CheckButton (M("EXPORT_USE_FAST_PIPELINE")));
use_fast_pipeline->set_tooltip_text(M("EXPORT_USE_FAST_PIPELINE_TIP"));
bypass_sharpening = Gtk::manage ( new Gtk::CheckButton (M("EXPORT_BYPASS_SHARPENING")));
bypass_sharpenEdge = Gtk::manage ( new Gtk::CheckButton (M("EXPORT_BYPASS_SHARPENEDGE")));
@ -98,19 +101,28 @@ ExportPanel::ExportPanel () : listener (nullptr)
// ----------------------------------------------------------------
// start global packing
Gtk::HBox* lblbox = Gtk::manage (new Gtk::HBox ());
lblbox->pack_start (*Gtk::manage (new Gtk::Label (M("EXPORT_PIPELINE"))), Gtk::PACK_SHRINK, 4);
pack_start (*lblbox, Gtk::PACK_SHRINK, 4);
pack_start(*use_fast_pipeline , Gtk::PACK_SHRINK, 4);
pack_start(*bypass_ALL , Gtk::PACK_SHRINK, 4);
pack_start(*Gtk::manage(new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 4);
pack_start(*bypass_sharpening , Gtk::PACK_SHRINK, 4);
pack_start(*bypass_sharpenEdge , Gtk::PACK_SHRINK, 4);
pack_start(*bypass_sharpenMicro , Gtk::PACK_SHRINK, 4);
pack_start(*use_normal_pipeline , Gtk::PACK_SHRINK, 4);
bypass_box->pack_start(*Gtk::manage(new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 4);
lblbox = Gtk::manage (new Gtk::HBox ());
lblbox->pack_start (*Gtk::manage (new Gtk::Label (M("EXPORT_BYPASS"))), Gtk::PACK_SHRINK, 4);
bypass_box->pack_start (*lblbox, Gtk::PACK_SHRINK, 4);
bypass_box->pack_start(*bypass_ALL , Gtk::PACK_SHRINK, 4);
// bypass_box->pack_start(*Gtk::manage(new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 4);
bypass_box->pack_start(*bypass_sharpening , Gtk::PACK_SHRINK, 4);
bypass_box->pack_start(*bypass_sharpenEdge , Gtk::PACK_SHRINK, 4);
bypass_box->pack_start(*bypass_sharpenMicro , Gtk::PACK_SHRINK, 4);
//pack_start(*bypass_lumaDenoise , Gtk::PACK_SHRINK, 4);
//pack_start(*bypass_colorDenoise , Gtk::PACK_SHRINK, 4);
pack_start(*bypass_defringe , Gtk::PACK_SHRINK, 4);
pack_start(*bypass_dirpyrDenoise, Gtk::PACK_SHRINK, 4);
pack_start(*bypass_sh_hq , Gtk::PACK_SHRINK, 4);
pack_start(*bypass_dirpyrequalizer , Gtk::PACK_SHRINK, 4);
pack_start(*bypass_wavelet , Gtk::PACK_SHRINK, 4);
bypass_box->pack_start(*bypass_defringe , Gtk::PACK_SHRINK, 4);
bypass_box->pack_start(*bypass_dirpyrDenoise, Gtk::PACK_SHRINK, 4);
bypass_box->pack_start(*bypass_sh_hq , Gtk::PACK_SHRINK, 4);
bypass_box->pack_start(*bypass_dirpyrequalizer , Gtk::PACK_SHRINK, 4);
bypass_box->pack_start(*bypass_wavelet , Gtk::PACK_SHRINK, 4);
bayerFrameVBox->pack_start(*hb_raw_bayer_method, Gtk::PACK_SHRINK, 4);
//bayerFrameVBox->pack_start(*bypass_raw_all_enhance , Gtk::PACK_SHRINK, 4);
@ -124,12 +136,14 @@ ExportPanel::ExportPanel () : listener (nullptr)
xtransFrameVBox->pack_start(*hb_raw_xtrans_method, Gtk::PACK_SHRINK, 4);
xtransFrame->add(*xtransFrameVBox);
pack_start(*bypass_raw_ccSteps , Gtk::PACK_SHRINK, 4);
pack_start(*bypass_raw_ca , Gtk::PACK_SHRINK, 4);
bypass_box->pack_start(*bypass_raw_ccSteps , Gtk::PACK_SHRINK, 4);
bypass_box->pack_start(*bypass_raw_ca , Gtk::PACK_SHRINK, 4);
pack_start(*bypass_raw_df , Gtk::PACK_SHRINK, 4);
pack_start(*bypass_raw_ff , Gtk::PACK_SHRINK, 4);
bypass_box->pack_start(*bypass_raw_df , Gtk::PACK_SHRINK, 4);
bypass_box->pack_start(*bypass_raw_ff , Gtk::PACK_SHRINK, 4);
pack_start(*bypass_box, Gtk::PACK_SHRINK);
pack_start (*Gtk::manage(new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 2);
// Resize options
@ -179,6 +193,7 @@ ExportPanel::ExportPanel () : listener (nullptr)
pack_start(*vboxpe, Gtk::PACK_SHRINK, 0);
use_fast_pipeline->signal_toggled().connect(sigc::mem_fun(*this, &ExportPanel::use_fast_pipeline_toggled));
btnFastExport->signal_clicked().connect( sigc::mem_fun(*this, &ExportPanel::FastExportPressed) );
//btnExportLoadSettings->signal_clicked().connect( sigc::mem_fun(*this, &ExportPanel::LoadSettings) );
//btnExportSaveSettings->signal_clicked().connect( sigc::mem_fun(*this, &ExportPanel::SaveSettings) );
@ -347,6 +362,7 @@ void ExportPanel::LoadDefaultSettings()
MaxHeight->set_value(options.fastexport_resize_height);
use_fast_pipeline->set_active(options.fastexport_use_fast_pipeline);
bypass_box->set_sensitive(!options.fastexport_use_fast_pipeline);
}
void ExportPanel::LoadSettings()
@ -428,6 +444,11 @@ void ExportPanel::bypassALL_Toggled()
bypass_raw_ffConn.block (false);
}
void ExportPanel::use_fast_pipeline_toggled()
{
bypass_box->set_sensitive(!use_fast_pipeline->get_active());
}
/*
fastexport_bypass_sharpening
fastexport_bypass_sharpenEdge

View File

@ -36,9 +36,11 @@ class ExportPanel : public Gtk::VBox
protected:
Gtk::VBox *bypass_box;
//Gtk::CheckButton* enabled;
Gtk::RadioButton* use_fast_pipeline;
Gtk::RadioButton* use_normal_pipeline;
Gtk::CheckButton* bypass_ALL;
Gtk::CheckButton* use_fast_pipeline;
Gtk::CheckButton* bypass_sharpenEdge;
Gtk::CheckButton* bypass_sharpenMicro;
Gtk::CheckButton* bypass_sharpening;
@ -106,6 +108,7 @@ protected:
ExportPanelListener* listener;
void bypassALL_Toggled();
void use_fast_pipeline_toggled();
void SaveSettingsAsDefault();
void LoadDefaultSettings();
void LoadSettings();

View File

@ -1095,41 +1095,41 @@ void FileCatalog::developRequested (std::vector<FileBrowserEntry*> tbe, bool fas
// and also those which effect is not pronounced after reducing the image size
// TODO!!! could expose selections below via preferences
if (fastmode) {
if (options.fastexport_bypass_sharpening ) {
params.sharpening.enabled = false;
}
if (options.fastexport_bypass_sharpenEdge ) {
params.sharpenEdge.enabled = false;
}
if (options.fastexport_bypass_sharpenMicro ) {
params.sharpenMicro.enabled = false;
}
//if (options.fastexport_bypass_lumaDenoise ) params.lumaDenoise.enabled = false;
//if (options.fastexport_bypass_colorDenoise ) params.colorDenoise.enabled = false;
if (options.fastexport_bypass_defringe ) {
params.defringe.enabled = false;
}
if (options.fastexport_bypass_dirpyrDenoise ) {
params.dirpyrDenoise.enabled = false;
}
if (options.fastexport_bypass_sh_hq ) {
params.sh.hq = false;
}
if (options.fastexport_bypass_dirpyrequalizer ) {
params.dirpyrequalizer.enabled = false;
}
if (options.fastexport_bypass_wavelet ) {
params.wavelet.enabled = false;
}
if (!options.fastexport_use_fast_pipeline) {
if (options.fastexport_bypass_sharpening ) {
params.sharpening.enabled = false;
}
if (options.fastexport_bypass_sharpenEdge ) {
params.sharpenEdge.enabled = false;
}
if (options.fastexport_bypass_sharpenMicro ) {
params.sharpenMicro.enabled = false;
}
//if (options.fastexport_bypass_lumaDenoise ) params.lumaDenoise.enabled = false;
//if (options.fastexport_bypass_colorDenoise ) params.colorDenoise.enabled = false;
if (options.fastexport_bypass_defringe ) {
params.defringe.enabled = false;
}
if (options.fastexport_bypass_dirpyrDenoise ) {
params.dirpyrDenoise.enabled = false;
}
if (options.fastexport_bypass_sh_hq ) {
params.sh.hq = false;
}
if (options.fastexport_bypass_dirpyrequalizer ) {
params.dirpyrequalizer.enabled = false;
}
if (options.fastexport_bypass_wavelet ) {
params.wavelet.enabled = false;
}
//if (options.fastexport_bypass_raw_bayer_all_enhance ) params.raw.bayersensor.all_enhance = false;
if (options.fastexport_bypass_raw_bayer_dcb_iterations ) {
params.raw.bayersensor.dcb_iterations = 0;
@ -1150,30 +1150,28 @@ void FileCatalog::developRequested (std::vector<FileBrowserEntry*> tbe, bool fas
if (options.fastexport_bypass_raw_bayer_greenthresh ) {
params.raw.bayersensor.greenthresh = 0;
}
}
if (options.fastexport_bypass_raw_ccSteps ) {
params.raw.bayersensor.ccSteps = params.raw.xtranssensor.ccSteps = 0;
}
if (options.fastexport_bypass_raw_ccSteps ) {
params.raw.bayersensor.ccSteps = params.raw.xtranssensor.ccSteps = 0;
}
if (options.fastexport_bypass_raw_ca ) {
params.raw.ca_autocorrect = false;
params.raw.cared = 0;
params.raw.cablue = 0;
}
if (options.fastexport_bypass_raw_ca ) {
params.raw.ca_autocorrect = false;
params.raw.cared = 0;
params.raw.cablue = 0;
}
if (options.fastexport_bypass_raw_df ) {
params.raw.df_autoselect = false;
params.raw.dark_frame = "";
}
if (options.fastexport_bypass_raw_df ) {
params.raw.df_autoselect = false;
params.raw.dark_frame = "";
}
if (options.fastexport_bypass_raw_ff ) {
params.raw.ff_AutoSelect = false;
params.raw.ff_file = "";
}
if (options.fastexport_bypass_raw_ff ) {
params.raw.ff_AutoSelect = false;
params.raw.ff_file = "";
}
if (!options.fastexport_use_fast_pipeline) {
params.raw.bayersensor.method = options.fastexport_raw_bayer_method ;
params.raw.xtranssensor.method = options.fastexport_raw_xtrans_method;
params.icm.input = options.fastexport_icm_input ;