* FIX for

- [#31777] Border Crop gives black 
   - [#31768] Crash when connecting a Math node to a translate node in Tiles comp
   - [#31638] View node in new node compo system crashes when inside a group
 * make sure a very fast vignette can be made by using a EliipseMask + Fast Gaussian blur
This commit is contained in:
2012-06-12 04:23:21 +00:00
parent 7977078227
commit ac5a735e3f
29 changed files with 214 additions and 76 deletions

View File

@@ -35,16 +35,20 @@
#include "COM_GroupNode.h"
#include "COM_WriteBufferOperation.h"
#include "COM_ReadBufferOperation.h"
#include "COM_ViewerBaseOperation.h"
Node *ExecutionSystemHelper::addbNodeTree(ExecutionSystem &system, int nodes_start, bNodeTree *tree)
Node *ExecutionSystemHelper::addbNodeTree(ExecutionSystem &system, int nodes_start, bNodeTree * tree, bNode *groupnode)
{
vector<Node*>& nodes = system.getNodes();
vector<SocketConnection*>& links = system.getConnections();
Node *mainnode = NULL;
const bNode * activeGroupNode = system.getContext().getActivegNode();
bool isActiveGroup = activeGroupNode == groupnode;
/* add all nodes of the tree to the node list */
bNode *node = (bNode*)tree->nodes.first;
while (node != NULL) {
Node *execnode = addNode(nodes, node);
Node *execnode = addNode(nodes, node, isActiveGroup);
if (node->type == CMP_NODE_COMPOSITE) {
mainnode = execnode;
}
@@ -77,11 +81,12 @@ void ExecutionSystemHelper::addNode(vector<Node*>& nodes, Node *node)
nodes.push_back(node);
}
Node *ExecutionSystemHelper::addNode(vector<Node*>& nodes, bNode *bNode)
Node *ExecutionSystemHelper::addNode(vector<Node*>& nodes, bNode *bNode, bool inActiveGroup)
{
Converter converter;
Node * node;
node = converter.convert(bNode);
node->setIsInActiveGroup(inActiveGroup);
if (node != NULL) {
addNode(nodes, node);
return node;
@@ -232,7 +237,12 @@ void ExecutionSystemHelper::debugDump(ExecutionSystem *system)
printf("|");
}
if (operation->isViewerOperation()) {
printf("Viewer");
ViewerBaseOperation * viewer = (ViewerBaseOperation*)operation;
if (viewer->isActiveViewerOutput()) {
printf("Active viewer");
} else {
printf("Viewer");
}
}
else if (operation->isOutputOperation(system->getContext().isRendering())) {
printf("Output");
@@ -249,6 +259,7 @@ void ExecutionSystemHelper::debugDump(ExecutionSystem *system)
else {
printf("O_%p", operation);
}
printf(" (%d,%d)", operation->getWidth(), operation->getHeight());
tot2 = operation->getNumberOfOutputSockets();
if (tot2 != 0) {
printf("|");