CbDL badly interacts with Graduated and Vignetting Filter if CbDL is set to 'before Black-and-White', fixes #3473
This commit is contained in:
@@ -678,7 +678,7 @@ void Crop::update (int todo)
|
|||||||
createBuffer(cropw, croph);
|
createBuffer(cropw, croph);
|
||||||
|
|
||||||
// transform
|
// transform
|
||||||
if (needstransform) {
|
if (needstransform || ((todo & (M_TRANSFORM)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled)) {
|
||||||
if (!transCrop) {
|
if (!transCrop) {
|
||||||
transCrop = new Imagefloat (cropw, croph);
|
transCrop = new Imagefloat (cropw, croph);
|
||||||
}
|
}
|
||||||
@@ -687,6 +687,8 @@ void Crop::update (int todo)
|
|||||||
parent->ipf.transform (baseCrop, transCrop, cropx / skip, cropy / skip, trafx / skip, trafy / skip, SKIPS(parent->fw, skip), SKIPS(parent->fh, skip), parent->getFullWidth(), parent->getFullHeight(),
|
parent->ipf.transform (baseCrop, transCrop, cropx / skip, cropy / skip, trafx / skip, trafy / skip, SKIPS(parent->fw, skip), SKIPS(parent->fh, skip), parent->getFullWidth(), parent->getFullHeight(),
|
||||||
parent->imgsrc->getMetaData()->getFocalLen(), parent->imgsrc->getMetaData()->getFocalLen35mm(),
|
parent->imgsrc->getMetaData()->getFocalLen(), parent->imgsrc->getMetaData()->getFocalLen35mm(),
|
||||||
parent->imgsrc->getMetaData()->getFocusDist(), parent->imgsrc->getRotateDegree(), false);
|
parent->imgsrc->getMetaData()->getFocusDist(), parent->imgsrc->getRotateDegree(), false);
|
||||||
|
else
|
||||||
|
baseCrop->copyData(transCrop);
|
||||||
|
|
||||||
if (transCrop) {
|
if (transCrop) {
|
||||||
baseCrop = transCrop;
|
baseCrop = transCrop;
|
||||||
@@ -1107,8 +1109,6 @@ bool Crop::setCropSizes (int rcx, int rcy, int rcw, int rch, int skip, bool inte
|
|||||||
ProcParams& params = parent->params;
|
ProcParams& params = parent->params;
|
||||||
parent->ipf.transCoord (parent->fw, parent->fh, bx1, by1, bw, bh, orx, ory, orw, orh);
|
parent->ipf.transCoord (parent->fw, parent->fh, bx1, by1, bw, bh, orx, ory, orw, orh);
|
||||||
|
|
||||||
int tr = getCoarseBitMask(params.coarse);
|
|
||||||
|
|
||||||
PreviewProps cp (orx, ory, orw, orh, skip);
|
PreviewProps cp (orx, ory, orw, orh, skip);
|
||||||
int orW, orH;
|
int orW, orH;
|
||||||
parent->imgsrc->getSize (cp, orW, orH);
|
parent->imgsrc->getSize (cp, orW, orH);
|
||||||
|
@@ -372,19 +372,21 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
|
|||||||
// Remove transformation if unneeded
|
// Remove transformation if unneeded
|
||||||
bool needstransform = ipf.needsTransform();
|
bool needstransform = ipf.needsTransform();
|
||||||
|
|
||||||
if (!needstransform && orig_prev != oprevi) {
|
if (!needstransform && !((todo & (M_TRANSFORM)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled) && orig_prev != oprevi) {
|
||||||
delete oprevi;
|
delete oprevi;
|
||||||
oprevi = orig_prev;
|
oprevi = orig_prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (needstransform && orig_prev == oprevi) {
|
if ((needstransform || ((todo & (M_TRANSFORM)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled)) ) {
|
||||||
oprevi = new Imagefloat (pW, pH);
|
if(!oprevi || oprevi == orig_prev)
|
||||||
|
oprevi = new Imagefloat (pW, pH);
|
||||||
|
if ((todo & M_TRANSFORM) && needstransform)
|
||||||
|
ipf.transform (orig_prev, oprevi, 0, 0, 0, 0, pW, pH, fw, fh, imgsrc->getMetaData()->getFocalLen(),
|
||||||
|
imgsrc->getMetaData()->getFocalLen35mm(), imgsrc->getMetaData()->getFocusDist(), imgsrc->getRotateDegree(), false);
|
||||||
|
else
|
||||||
|
orig_prev->copyData(oprevi);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((todo & M_TRANSFORM) && needstransform)
|
|
||||||
ipf.transform (orig_prev, oprevi, 0, 0, 0, 0, pW, pH, fw, fh, imgsrc->getMetaData()->getFocalLen(),
|
|
||||||
imgsrc->getMetaData()->getFocalLen35mm(), imgsrc->getMetaData()->getFocusDist(), imgsrc->getRotateDegree(), false);
|
|
||||||
|
|
||||||
if ((todo & (M_TRANSFORM)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled) {
|
if ((todo & (M_TRANSFORM)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled) {
|
||||||
const int W = oprevi->getWidth();
|
const int W = oprevi->getWidth();
|
||||||
const int H = oprevi->getHeight();
|
const int H = oprevi->getHeight();
|
||||||
|
Reference in New Issue
Block a user