diff --git a/rtengine/ipsharpen.cc b/rtengine/ipsharpen.cc index 7d6b0f90a..214397d37 100644 --- a/rtengine/ipsharpen.cc +++ b/rtengine/ipsharpen.cc @@ -251,14 +251,8 @@ void ImProcFunctions::deconvsharpeningloc (float** luminance, float** tmp, int W if (amo < 1) { return; } + JaggedArray tmpI(W, H); - float *tmpI[H] ALIGNED16; - - tmpI[0] = new float[W * H]; - - for (int i = 1; i < H; i++) { - tmpI[i] = tmpI[i - 1] + W; - } for (int i = 0; i < H; i++) { for (int j = 0; j < W; j++) { @@ -271,8 +265,12 @@ void ImProcFunctions::deconvsharpeningloc (float** luminance, float** tmp, int W float contras = contrast / 100.f; buildBlendMask(luminance, blend, W, H, contras, 1.f); JaggedArray blur(W, H); - + + JaggedArray* blurbuffer = nullptr; + if (blurrad >= 0.25) { + blurbuffer = new JaggedArray(W, H); + JaggedArray &blur = *blurbuffer; #ifdef _OPENMP #pragma omp parallel #endif @@ -340,8 +338,8 @@ void ImProcFunctions::deconvsharpeningloc (float** luminance, float** tmp, int W } } // end parallel + delete blurbuffer; - delete [] tmpI[0]; } diff --git a/rtgui/locallabtools.h b/rtgui/locallabtools.h index b3c076cf9..e18f9f6f3 100644 --- a/rtgui/locallabtools.h +++ b/rtgui/locallabtools.h @@ -894,11 +894,11 @@ class LocallabSharp: { private: Adjuster* const sharcontrast; - Adjuster* const sharradius; + Adjuster* const sharblur; Adjuster* const sharamount; Adjuster* const shardamping; Adjuster* const shariter; - Adjuster* const sharblur; + Adjuster* const sharradius; Adjuster* const sensisha; Gtk::CheckButton* const inverssha; MyComboBoxText* const showmasksharMethod; diff --git a/rtgui/locallabtools2.cc b/rtgui/locallabtools2.cc index 850d0c00d..53c0e39f5 100644 --- a/rtgui/locallabtools2.cc +++ b/rtgui/locallabtools2.cc @@ -1741,11 +1741,11 @@ LocallabSharp::LocallabSharp(): // Sharpening specific widgets sharcontrast(Gtk::manage(new Adjuster(M("TP_SHARPENING_CONTRAST"), 0, 200, 1, 20))), - sharradius(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SHARRADIUS"), 0.4, 2.5, 0.01, 0.75))), + sharblur(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SHARBLUR"), 0.2, 2.0, 0.05, 0.2))), sharamount(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SHARAMOUNT"), 0, 100, 1, 100))), shardamping(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SHARDAMPING"), 0, 100, 1, 0))), shariter(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SHARITER"), 5, 100, 1, 30))), - sharblur(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SHARBLUR"), 0.2, 2.0, 0.05, 0.2))), + sharradius(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SHARRADIUS"), 0.4, 2.5, 0.01, 0.75))), sensisha(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSIS"), 0, 100, 1, 40))), inverssha(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_INVERS")))), showmasksharMethod(Gtk::manage(new MyComboBoxText())) @@ -1776,11 +1776,11 @@ LocallabSharp::LocallabSharp(): // Add Sharpening specific widgets to GUI pack_start(*sharcontrast); + pack_start(*sharblur); pack_start(*sharradius); pack_start(*sharamount); pack_start(*shardamping); pack_start(*shariter); - pack_start(*sharblur); pack_start(*sensisha); pack_start(*inverssha); Gtk::Frame* const sharFrame = Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_SHARFRAME"))); @@ -1995,6 +1995,7 @@ void LocallabSharp::convertParamToNormal() shardamping->setValue((double)defSpot.shardamping); shariter->setValue((double)defSpot.shariter); sharblur->setValue(defSpot.sharblur); + sharamount->setValue(defSpot.sharamount); // Enable all listeners enableListener(); @@ -2007,11 +2008,15 @@ void LocallabSharp::updateGUIToMode(const modeType new_type) shardamping->hide(); shariter->hide(); sharblur->hide(); + sharcontrast->hide(); + sharamount->hide(); } else { // Advanced widgets are shown in Expert mode shardamping->show(); shariter->show(); - sharblur->show(); + sharblur->hide(); + sharcontrast->hide(); + sharamount->show(); } }