Cleanup: comment line length (editors)
[blender.git] / source / blender / compositor / nodes / COM_CompositorNode.cpp
index e3313750e6652e07690d3734f3f8f48f81ffe20c..f6a3b62b62bf25c255c7d5da40371edcca360216 100644 (file)
@@ -15,9 +15,9 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
- * Contributor: 
- *             Jeroen Bakker 
- *             Monique Dewanchand
+ * Contributor:
+ *      Jeroen Bakker
+ *      Monique Dewanchand
  */
 
 #include "COM_CompositorNode.h"
@@ -29,21 +29,35 @@ CompositorNode::CompositorNode(bNode *editorNode) : Node(editorNode)
        /* pass */
 }
 
-void CompositorNode::convertToOperations(ExecutionSystem *graph, CompositorContext *context)
+void CompositorNode::convertToOperations(NodeConverter &converter, const CompositorContext &context) const
 {
        bNode *editorNode = this->getbNode();
+       bool is_active = (editorNode->flag & NODE_DO_OUTPUT_RECALC) ||
+                        context.isRendering();
+       bool ignore_alpha = (editorNode->custom2 & CMP_NODE_OUTPUT_IGNORE_ALPHA) != 0;
 
-       InputSocket *imageSocket = this->getInputSocket(0);
-       InputSocket *alphaSocket = this->getInputSocket(1);
-       InputSocket *depthSocket = this->getInputSocket(2);
+       NodeInput *imageSocket = this->getInputSocket(0);
+       NodeInput *alphaSocket = this->getInputSocket(1);
+       NodeInput *depthSocket = this->getInputSocket(2);
 
        CompositorOperation *compositorOperation = new CompositorOperation();
-       compositorOperation->setSceneName(editorNode->id->name);
-       compositorOperation->setRenderData(context->getRenderData());
-       compositorOperation->setbNodeTree(context->getbNodeTree());
-       imageSocket->relinkConnections(compositorOperation->getInputSocket(0), 0, graph);
-       alphaSocket->relinkConnections(compositorOperation->getInputSocket(1));
-       depthSocket->relinkConnections(compositorOperation->getInputSocket(2));
-       graph->addOperation(compositorOperation);
-       addPreviewOperation(graph, context, compositorOperation->getInputSocket(0));
+       compositorOperation->setScene(context.getScene());
+       compositorOperation->setSceneName(context.getScene()->id.name);
+       compositorOperation->setRenderData(context.getRenderData());
+       compositorOperation->setViewName(context.getViewName());
+       compositorOperation->setbNodeTree(context.getbNodeTree());
+       /* alpha socket gives either 1 or a custom alpha value if "use alpha" is enabled */
+       compositorOperation->setUseAlphaInput(ignore_alpha || alphaSocket->isLinked());
+       compositorOperation->setActive(is_active);
+
+       converter.addOperation(compositorOperation);
+       converter.mapInputSocket(imageSocket, compositorOperation->getInputSocket(0));
+       /* only use alpha link if "use alpha" is enabled */
+       if (ignore_alpha)
+               converter.addInputValue(compositorOperation->getInputSocket(1), 1.0f);
+       else
+               converter.mapInputSocket(alphaSocket, compositorOperation->getInputSocket(1));
+       converter.mapInputSocket(depthSocket, compositorOperation->getInputSocket(2));
+
+       converter.addNodeInputPreview(imageSocket);
 }