diff --git a/rtdata/languages/default b/rtdata/languages/default
index 7ae4d2165..35a10b6d7 100644
--- a/rtdata/languages/default
+++ b/rtdata/languages/default
@@ -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;Fast Export Options
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.
diff --git a/rtgui/exportpanel.cc b/rtgui/exportpanel.cc
index fe18cdef7..53d93f8ba 100644
--- a/rtgui/exportpanel.cc
+++ b/rtgui/exportpanel.cc
@@ -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
diff --git a/rtgui/exportpanel.h b/rtgui/exportpanel.h
index ce7639921..db4431ca5 100644
--- a/rtgui/exportpanel.h
+++ b/rtgui/exportpanel.h
@@ -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();
diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc
index b9818a839..cdba10316 100644
--- a/rtgui/filecatalog.cc
+++ b/rtgui/filecatalog.cc
@@ -1095,41 +1095,41 @@ void FileCatalog::developRequested (std::vector 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 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 ;