diff --git a/rtgui/lensgeomlistener.h b/rtgui/lensgeomlistener.h index b9979f9a2..7f437c170 100644 --- a/rtgui/lensgeomlistener.h +++ b/rtgui/lensgeomlistener.h @@ -35,5 +35,4 @@ public: virtual void autoCropRequested () = 0; virtual double autoDistorRequested () = 0; virtual void autoPerspRequested (bool corr_pitch, bool corr_yaw, double& rot, double& pitch, double& yaw, const std::vector *lines = nullptr) = 0; - virtual void updateTransformPreviewRequested (rtengine::ProcEvent event, bool render_perspective) = 0; }; diff --git a/rtgui/perspective.cc b/rtgui/perspective.cc index b3fabd31a..8db91ee2e 100644 --- a/rtgui/perspective.cc +++ b/rtgui/perspective.cc @@ -543,6 +543,11 @@ void PerspCorrection::applyControlLines(void) adjusterChanged(camera_pitch, pitch); } +void PerspCorrection::tweakParams(rtengine::procparams::ProcParams &pparams) +{ + pparams.perspective.render = render; +} + void PerspCorrection::autoCorrectionPressed(Gtk::Button* b) { if (!lens_geom_listener) { @@ -754,8 +759,9 @@ void PerspCorrection::linesEditButtonPressed(void) lines->setActive(true); lines->setDrawMode(true); render = false; - if (lens_geom_listener) { - lens_geom_listener->updateTransformPreviewRequested(EvPerspRender, false); + if (listener) { + listener->setTweakOperator(this); + listener->refreshPreview(EvPerspRender); } lines_button_apply->set_sensitive(true); lines_button_erase->set_sensitive(true); @@ -768,8 +774,9 @@ void PerspCorrection::linesEditButtonPressed(void) lines_button_apply->set_sensitive(false); lines_button_erase->set_sensitive(false); render = true; - if (lens_geom_listener) { - lens_geom_listener->updateTransformPreviewRequested(EvPerspRender, true); + if (listener) { + listener->unsetTweakOperator(this); + listener->refreshPreview(EvPerspRender); } lines->setDrawMode(false); lines->setActive(false); diff --git a/rtgui/perspective.h b/rtgui/perspective.h index 3c677ba6e..6f4a4ff52 100644 --- a/rtgui/perspective.h +++ b/rtgui/perspective.h @@ -24,6 +24,7 @@ #include "controllines.h" #include "lensgeomlistener.h" #include "toolpanel.h" +#include "../rtengine/tweakoperator.h" class PerspCorrectionPanelListener { @@ -34,6 +35,7 @@ public: }; class PerspCorrection final : + public rtengine::TweakOperator, public ToolParamBlock, public AdjusterListener, public FoldableToolPanel @@ -91,6 +93,7 @@ protected: const rtengine::FramesMetaData* metadata; void applyControlLines (void); + void tweakParams(rtengine::procparams::ProcParams &pparams) override; void setCamBasedEventsActive (bool active = true); void setFocalLengthValue (const rtengine::procparams::ProcParams* pparams, const rtengine::FramesMetaData* metadata); diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 12e780cca..00fcb208d 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -1037,16 +1037,6 @@ double ToolPanelCoordinator::autoDistorRequested() return rtengine::ImProcFunctions::getAutoDistor(ipc->getInitialImage()->getFileName(), 400); } -void ToolPanelCoordinator::updateTransformPreviewRequested(rtengine::ProcEvent event, bool render_perspective) -{ - if (!ipc) { - return; - } - - ipc->beginUpdateParams()->perspective.render = render_perspective; - ipc->endUpdateParams(event); -} - void ToolPanelCoordinator::spotWBRequested(int size) { diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h index 28bfed5ab..13686d6e3 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -321,7 +321,6 @@ public: void autoCropRequested () override; void autoPerspRequested (bool corr_pitch, bool corr_yaw, double& rot, double& pitch, double& yaw, const std::vector *lines = nullptr) override; double autoDistorRequested () override; - void updateTransformPreviewRequested (rtengine::ProcEvent event, bool render_perspective) override; // spotwblistener interface void spotWBRequested (int size) override;