Fix for [#32536] Mixing with translated images in compositor produces

garbage strips for each tile

Promoted the behaviour of combine channels to node operation so that all
nodes use the same implementation. (CombineChannel had a better
implementation)
This commit is contained in:
2012-09-11 16:57:05 +00:00
parent becd442a36
commit 773ea9b93d
3 changed files with 18 additions and 39 deletions

View File

@@ -124,19 +124,26 @@ bool NodeOperation::determineDependingAreaOfInterest(rcti *input, ReadBufferOper
return false;
}
else {
unsigned int index;
vector<InputSocket *> &inputsockets = this->getInputSockets();
for (index = 0; index < inputsockets.size(); index++) {
InputSocket *inputsocket = inputsockets[index];
if (inputsocket->isConnected()) {
NodeOperation *inputoperation = (NodeOperation *)inputsocket->getConnection()->getFromNode();
bool result = inputoperation->determineDependingAreaOfInterest(input, readOperation, output);
if (result) {
return true;
rcti tempOutput;
bool first = true;
for (int i = 0 ; i < getNumberOfInputSockets() ; i ++) {
NodeOperation * inputOperation = this->getInputOperation(i);
if (inputOperation && inputOperation->determineDependingAreaOfInterest(input, readOperation, &tempOutput)) {
if (first) {
output->xmin = tempOutput.xmin;
output->ymin = tempOutput.ymin;
output->xmax = tempOutput.xmax;
output->ymax = tempOutput.ymax;
first = false;
}
else {
output->xmin = MIN2(output->xmin, tempOutput.xmin);
output->ymin = MIN2(output->ymin, tempOutput.ymin);
output->xmax = MAX2(output->xmax, tempOutput.xmax);
output->ymax = MAX2(output->ymax, tempOutput.ymax);
}
}
}
return false;
return !first;
}
}