[Bf-blender-cvs] [4fde0910d52] master: Compositor: Cleanup, reduce indentation level in render layer node

Sergey Sharybin noreply at git.blender.org
Wed Sep 13 12:46:58 CEST 2017


Commit: 4fde0910d5236a83845c1f6428a57af723df42d9
Author: Sergey Sharybin
Date:   Wed Sep 13 14:52:24 2017 +0500
Branches: master
https://developer.blender.org/rB4fde0910d5236a83845c1f6428a57af723df42d9

Compositor: Cleanup, reduce indentation level in render layer node

There is absolute no reason to have such an indentation level, it only causes
readability and maintainability issues. It is really simple to make code more
"streamlined".

===================================================================

M	source/blender/compositor/nodes/COM_RenderLayersNode.cpp
M	source/blender/compositor/nodes/COM_RenderLayersNode.h

===================================================================

diff --git a/source/blender/compositor/nodes/COM_RenderLayersNode.cpp b/source/blender/compositor/nodes/COM_RenderLayersNode.cpp
index 75128de2d84..a3b804e4559 100644
--- a/source/blender/compositor/nodes/COM_RenderLayersNode.cpp
+++ b/source/blender/compositor/nodes/COM_RenderLayersNode.cpp
@@ -48,40 +48,82 @@ void RenderLayersNode::testSocketLink(NodeConverter &converter, const Compositor
 		converter.addPreview(operation->getOutputSocket());
 }
 
-void RenderLayersNode::convertToOperations(NodeConverter &converter, const CompositorContext &context) const
+void RenderLayersNode::testRenderLink(NodeConverter &converter,
+                                      const CompositorContext &context,
+                                      Render *re) const
 {
 	Scene *scene = (Scene *)this->getbNode()->id;
-	short layerId = this->getbNode()->custom1;
-	Render *re = (scene) ? RE_GetRender(scene->id.name) : NULL;
-	int numberOfOutputs = this->getNumberOfOutputSockets();
-	
-	if (re) {
-		RenderResult *rr = RE_AcquireResultRead(re);
-		if (rr) {
-			SceneRenderLayer *srl = (SceneRenderLayer *)BLI_findlink(&scene->r.layers, layerId);
-			if (srl) {
-				RenderLayer *rl = RE_GetRenderLayer(rr, srl->name);
-				if (rl) {
-					for (int i = 0; i < numberOfOutputs; i++) {
-						NodeOutput *output = this->getOutputSocket(i);
-						NodeImageLayer *storage = (NodeImageLayer*) output->getbNodeSocket()->storage;
-						RenderPass *rpass = (RenderPass*) BLI_findstring(&rl->passes, storage->pass_name, offsetof(RenderPass, name));
-						if (rpass) {
-							if (STREQ(rpass->name, RE_PASSNAME_COMBINED) && STREQ(output->getbNodeSocket()->name, "Alpha")) {
-								testSocketLink(converter, context, output, new RenderLayersAlphaProg(rpass->name, COM_DT_VALUE, rpass->channels), scene, layerId, false);
-							}
-							else if (STREQ(rpass->name, RE_PASSNAME_Z)) {
-								testSocketLink(converter, context, output, new RenderLayersDepthProg(rpass->name, COM_DT_VALUE, rpass->channels), scene, layerId, false);
-							}
-							else {
-								DataType type = ((rpass->channels == 4)? COM_DT_COLOR : ((rpass->channels == 3)? COM_DT_VECTOR : COM_DT_VALUE));
-								testSocketLink(converter, context, output, new RenderLayersProg(rpass->name, type, rpass->channels), scene, layerId, STREQ(output->getbNodeSocket()->name, "Image"));
-							}
-						}
-					}
-				}
-			}
+	const short layerId = this->getbNode()->custom1;
+	RenderResult *rr = RE_AcquireResultRead(re);
+	if (rr == NULL) {
+		return;
+	}
+	SceneRenderLayer *srl = (SceneRenderLayer *)BLI_findlink(&scene->r.layers, layerId);
+	if (srl == NULL) {
+		return;
+	}
+	RenderLayer *rl = RE_GetRenderLayer(rr, srl->name);
+	if (rl == NULL) {
+		return;
+	}
+	const int numberOfOutputs = this->getNumberOfOutputSockets();
+	for (int i = 0; i < numberOfOutputs; i++) {
+		NodeOutput *output = this->getOutputSocket(i);
+		NodeImageLayer *storage = (NodeImageLayer*) output->getbNodeSocket()->storage;
+		RenderPass *rpass = (RenderPass*) BLI_findstring(
+		        &rl->passes,
+		        storage->pass_name,
+		        offsetof(RenderPass, name));
+		if (rpass == NULL) {
+			continue;
+		}
+		if (STREQ(rpass->name, RE_PASSNAME_COMBINED) &&
+		    STREQ(output->getbNodeSocket()->name, "Alpha"))
+		{
+			testSocketLink(converter,
+			               context,
+			               output,
+			               new RenderLayersAlphaProg(rpass->name,
+			                                         COM_DT_VALUE,
+			                                         rpass->channels),
+			               scene,
+			               layerId,
+			               false);
+		}
+		else if (STREQ(rpass->name, RE_PASSNAME_Z)) {
+			testSocketLink(converter,
+			               context,
+			               output,
+			               new RenderLayersDepthProg(rpass->name,
+			                                         COM_DT_VALUE,
+			                                         rpass->channels),
+			               scene,
+			               layerId,
+			               false);
+		}
+		else {
+			DataType type = ((rpass->channels == 4)? COM_DT_COLOR : ((rpass->channels == 3)? COM_DT_VECTOR : COM_DT_VALUE));
+			testSocketLink(converter,
+			               context,
+			               output,
+			               new RenderLayersProg(rpass->name,
+			                                    type,
+			                                    rpass->channels),
+			               scene,
+			               layerId,
+			               STREQ(output->getbNodeSocket()->name, "Image"));
 		}
+	}
+}
+
+void RenderLayersNode::convertToOperations(NodeConverter &converter,
+                                           const CompositorContext &context) const
+{
+	Scene *scene = (Scene *)this->getbNode()->id;
+	Render *re = (scene) ? RE_GetRender(scene->id.name) : NULL;
+
+	if (re != NULL) {
+		testRenderLink(converter, context, re);
 		RE_ReleaseResult(re);
 	}
 }
diff --git a/source/blender/compositor/nodes/COM_RenderLayersNode.h b/source/blender/compositor/nodes/COM_RenderLayersNode.h
index 1f733a9f4bb..a90e09853c2 100644
--- a/source/blender/compositor/nodes/COM_RenderLayersNode.h
+++ b/source/blender/compositor/nodes/COM_RenderLayersNode.h
@@ -24,6 +24,8 @@
 #include "DNA_node_types.h"
 #include "COM_RenderLayersProg.h"
 
+struct Render;
+
 /**
  * @brief RenderLayersNode
  * @ingroup Node
@@ -31,7 +33,8 @@
 class RenderLayersNode : public Node {
 public:
 	RenderLayersNode(bNode *editorNode);
-	void convertToOperations(NodeConverter &converter, const CompositorContext &context) const;
+	void convertToOperations(NodeConverter &converter,
+	                         const CompositorContext &context) const;
 private:
 	void testSocketLink(NodeConverter &converter,
 	                    const CompositorContext &context,
@@ -40,4 +43,8 @@ private:
 	                    Scene *scene,
 	                    int layerId,
 	                    bool is_preview) const;
+
+	void testRenderLink(NodeConverter &converter,
+	                    const CompositorContext &context,
+	                    Render *re) const;
 };



More information about the Bf-blender-cvs mailing list