Use in place tranformations when using only luminance transformations. Fixes #4037
This commit is contained in:
@@ -203,7 +203,7 @@ public:
|
||||
ImProcFunctions (const ProcParams* iparams, bool imultiThread = true)
|
||||
: monitorTransform (nullptr), lab2outputTransform (nullptr), output2monitorTransform (nullptr), params (iparams), scale (1), multiThread (imultiThread), lumimul{} {}
|
||||
~ImProcFunctions ();
|
||||
|
||||
bool needsLuminanceOnly() { return !(needsCA() || needsDistortion() || needsRotation() || needsPerspective() || needsLCP() || needsLensfun()) && (needsVignetting() || needsPCVignetting() || needsGradient());}
|
||||
void setScale (double iscale);
|
||||
|
||||
bool needsTransform ();
|
||||
|
@@ -812,11 +812,17 @@ private:
|
||||
|
||||
// perform transform (excepted resizing)
|
||||
if (ipf.needsTransform()) {
|
||||
Imagefloat* trImg = new Imagefloat (fw, fh);
|
||||
ipf.transform (baseImg, trImg, 0, 0, 0, 0, fw, fh, fw, fh,
|
||||
Imagefloat* trImg = nullptr;
|
||||
if (ipf.needsLuminanceOnly()) {
|
||||
trImg = baseImg;
|
||||
} else {
|
||||
trImg = new Imagefloat (fw, fh);
|
||||
} ipf.transform (baseImg, trImg, 0, 0, 0, 0, fw, fh, fw, fh,
|
||||
imgsrc->getMetaData(), imgsrc->getRotateDegree(), true);
|
||||
delete baseImg;
|
||||
baseImg = trImg;
|
||||
if(trImg != baseImg) {
|
||||
delete baseImg;
|
||||
baseImg = trImg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user