made lensfun-based correction compatible with auto fill mode

This commit is contained in:
Alberto Griggio 2017-09-10 22:02:43 +02:00
parent 489b641c8b
commit e4ba4d19f5
7 changed files with 2 additions and 35 deletions

View File

@ -969,10 +969,6 @@ double ImProcFunctions::getTransformAutoFill (int oW, int oH, const LensCorrecti
return 1; return 1;
} }
if (pLCPMap && !pLCPMap->supportsAutoFill()) {
return 1;
}
double scaleU = 2, scaleL = 0.001; // upper and lower border, iterate inbetween double scaleU = 2, scaleL = 0.001; // upper and lower border, iterate inbetween
do { do {

View File

@ -140,7 +140,6 @@ class LensCorrection {
public: public:
virtual ~LensCorrection() {} virtual ~LensCorrection() {}
virtual void correctDistortion(double &x, double &y, int cx, int cy, double scale) const = 0; virtual void correctDistortion(double &x, double &y, int cx, int cy, double scale) const = 0;
virtual bool supportsAutoFill() const = 0;
virtual bool supportsCA() const = 0; virtual bool supportsCA() const = 0;
virtual void correctCA(double &x, double &y, int channel) const = 0; virtual void correctCA(double &x, double &y, int channel) const = 0;
virtual void processVignetteLine(int width, int y, float *line) const = 0; virtual void processVignetteLine(int width, int y, float *line) const = 0;
@ -167,7 +166,6 @@ public:
void correctDistortion(double &x, double &y, int cx, int cy, double scale) const; // MUST be the first stage void correctDistortion(double &x, double &y, int cx, int cy, double scale) const; // MUST be the first stage
bool supportsCA() const { return enableCA; } bool supportsCA() const { return enableCA; }
bool supportsAutoFill() const { return true; }
void correctCA(double& x, double& y, int channel) const; void correctCA(double& x, double& y, int channel) const;
void processVignetteLine(int width, int y, float *line) const; void processVignetteLine(int width, int y, float *line) const;
void processVignetteLine3Channels(int width, int y, float *line) const; void processVignetteLine3Channels(int width, int y, float *line) const;

View File

@ -72,6 +72,8 @@ void LFModifier::correctDistortion(double &x, double &y, int cx, int cy, double
x -= cx; x -= cx;
y -= cy; y -= cy;
} }
x *= scale;
y *= scale;
} }

View File

@ -34,7 +34,6 @@ public:
bool ok() const; bool ok() const;
void correctDistortion(double &x, double &y, int cx, int cy, double scale) const; void correctDistortion(double &x, double &y, int cx, int cy, double scale) const;
bool supportsAutoFill() const { return false; }
bool supportsCA() const { return false; } bool supportsCA() const { return false; }
void correctCA(double &x, double &y, int channel) const {} void correctCA(double &x, double &y, int channel) const {}
void processVignetteLine(int width, int y, float *line) const; void processVignetteLine(int width, int y, float *line) const;

View File

@ -39,7 +39,6 @@ LensProfilePanel::LensProfilePanel () :
useCAChanged(false), useCAChanged(false),
isRaw(true), isRaw(true),
metadata(nullptr), metadata(nullptr),
lensgeomLcpFill(nullptr),
useLensfunChanged(false), useLensfunChanged(false),
lensfunAutoChanged(false), lensfunAutoChanged(false),
lensfunCameraChanged(false), lensfunCameraChanged(false),
@ -220,7 +219,6 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa
corrOff->set_active(true); corrOff->set_active(true);
} }
setAutoFill();
enableListener (); enableListener ();
conUseDist.block(false); conUseDist.block(false);
} }
@ -516,8 +514,6 @@ void LensProfilePanel::onCorrModeChanged()
mode = M("GENERAL_UNCHANGED"); mode = M("GENERAL_UNCHANGED");
} }
setAutoFill();
if (listener) { if (listener) {
listener->panelChanged(EvLensCorrMode, mode); listener->panelChanged(EvLensCorrMode, mode);
} }
@ -537,23 +533,6 @@ bool LensProfilePanel::checkLensfunCanCorrect(bool automatch)
} }
void LensProfilePanel::setAutoFill()
{
if (lensgeomLcpFill) {
bool b = lensgeomLcpFill->disableListener();
if (corrLensfunAuto->get_active() || corrLensfunManual->get_active()) {
lensgeomLcpFill->getFill()->set_active(true);
lensgeomLcpFill->getFill()->set_sensitive(false);
} else {
lensgeomLcpFill->getFill()->set_sensitive(true);
}
if (b) {
lensgeomLcpFill->enableListener();
}
}
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// LFDbHelper // LFDbHelper
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------

View File

@ -40,7 +40,6 @@ protected:
bool allowFocusDep; bool allowFocusDep;
bool isRaw; bool isRaw;
const rtengine::ImageMetaData* metadata; const rtengine::ImageMetaData* metadata;
LensGeometry *lensgeomLcpFill;
Gtk::RadioButton::Group corrGroup; Gtk::RadioButton::Group corrGroup;
Gtk::RadioButton *corrOff; Gtk::RadioButton *corrOff;
@ -87,7 +86,6 @@ protected:
bool setLensfunCamera(const Glib::ustring &make, const Glib::ustring &model); bool setLensfunCamera(const Glib::ustring &make, const Glib::ustring &model);
bool setLensfunLens(const Glib::ustring &lens); bool setLensfunLens(const Glib::ustring &lens);
bool checkLensfunCanCorrect(bool automatch); bool checkLensfunCanCorrect(bool automatch);
void setAutoFill();
public: public:
@ -102,10 +100,6 @@ public:
void onUseDistChanged(); void onUseDistChanged();
void onUseVignChanged(); void onUseVignChanged();
void onUseCAChanged(); void onUseCAChanged();
void setLensGeomRef( LensGeometry *foo)
{
lensgeomLcpFill = foo ;
};
void setBatchMode(bool yes); void setBatchMode(bool yes);

View File

@ -53,7 +53,6 @@ ToolPanelCoordinator::ToolPanelCoordinator () : ipc (nullptr), hasChanged (false
colortoning = Gtk::manage (new ColorToning ()); colortoning = Gtk::manage (new ColorToning ());
lensgeom = Gtk::manage (new LensGeometry ()); lensgeom = Gtk::manage (new LensGeometry ());
lensProf = Gtk::manage (new LensProfilePanel ()); lensProf = Gtk::manage (new LensProfilePanel ());
lensProf->setLensGeomRef (lensgeom);
distortion = Gtk::manage (new Distortion ()); distortion = Gtk::manage (new Distortion ());
rotate = Gtk::manage (new Rotate ()); rotate = Gtk::manage (new Rotate ());
vibrance = Gtk::manage (new Vibrance ()); vibrance = Gtk::manage (new Vibrance ());