made lensfun-based correction compatible with auto fill mode
This commit is contained in:
parent
489b641c8b
commit
e4ba4d19f5
@ -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 {
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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 ());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user