[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13703] trunk/blender/source/blender: Simple but useful compositor feature:

Ton Roosendaal ton at blender.org
Fri Feb 15 16:20:52 CET 2008


Revision: 13703
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13703
Author:   ton
Date:     2008-02-15 16:20:50 +0100 (Fri, 15 Feb 2008)

Log Message:
-----------
Simple but useful compositor feature:

CTRL+click on node will not only select it, but also connect the active
viewer to the top output of the node.
To evaluate: make viewing option to have this as a default on select. 
Could work nice for collapsed nodes.

Modified Paths:
--------------
    trunk/blender/source/blender/include/BSE_node.h
    trunk/blender/source/blender/src/editnode.c
    trunk/blender/source/blender/src/header_node.c

Modified: trunk/blender/source/blender/include/BSE_node.h
===================================================================
--- trunk/blender/source/blender/include/BSE_node.h	2008-02-15 14:56:56 UTC (rev 13702)
+++ trunk/blender/source/blender/include/BSE_node.h	2008-02-15 15:20:50 UTC (rev 13703)
@@ -76,6 +76,7 @@
 void node_read_fullsamplelayers(struct SpaceNode *snode);
 void clear_scene_in_nodes(struct Scene *sce);
 void node_make_link(struct SpaceNode *snode);
+void node_active_link_viewer(struct SpaceNode *snode);
 
 void node_transform_ext(int mode, int unused);
 void node_shader_default(struct Material *ma);

Modified: trunk/blender/source/blender/src/editnode.c
===================================================================
--- trunk/blender/source/blender/src/editnode.c	2008-02-15 14:56:56 UTC (rev 13702)
+++ trunk/blender/source/blender/src/editnode.c	2008-02-15 15:20:50 UTC (rev 13703)
@@ -1316,7 +1316,48 @@
 	return 0;
 }
 
+static void node_link_viewer(SpaceNode *snode, bNode *tonode)
+{
+	bNode *node;
 
+	/* context check */
+	if(tonode==NULL || tonode->outputs.first==NULL)
+		return;
+	if( ELEM(tonode->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) 
+		return;
+	
+	/* get viewer */
+	for(node= snode->edittree->nodes.first; node; node= node->next)
+		if( ELEM(node->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) 
+			if(node->flag & NODE_DO_OUTPUT)
+				break;
+		
+	if(node) {
+		bNodeLink *link;
+		
+		/* get link to viewer */
+		for(link= snode->edittree->links.first; link; link= link->next)
+			if(link->tonode==node)
+				break;
+
+		if(link) {
+			link->fromnode= tonode;
+			link->fromsock= tonode->outputs.first;
+			NodeTagChanged(snode->edittree, node);
+			
+			snode_handle_recalc(snode);
+		}
+	}
+}
+
+
+void node_active_link_viewer(SpaceNode *snode)
+{
+	bNode *node= editnode_get_active(snode->edittree);
+	if(node)
+		node_link_viewer(snode, node);
+}
+
 /* return 0: nothing done */
 static int node_mouse_select(SpaceNode *snode, unsigned short event)
 {
@@ -1358,6 +1399,10 @@
 		
 		node_set_active(snode, node);
 		
+		/* viewer linking */
+		if(G.qual & LR_CTRLKEY)
+			node_link_viewer(snode, node);
+		
 		/* not so nice (no event), but function below delays redraw otherwise */
 		force_draw(0);
 		

Modified: trunk/blender/source/blender/src/header_node.c
===================================================================
--- trunk/blender/source/blender/src/header_node.c	2008-02-15 14:56:56 UTC (rev 13702)
+++ trunk/blender/source/blender/src/header_node.c	2008-02-15 15:20:50 UTC (rev 13703)
@@ -545,6 +545,9 @@
 		case 13: /* read saved full sample layers */
 			node_read_fullsamplelayers(snode);
 			break;
+		case 14: /* connect viewer */
+			node_active_link_viewer(snode);
+			break;
 			
 	}
 	
@@ -590,6 +593,12 @@
 		uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Execute Composite|E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, "");
 		uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Read Saved Render Results|R", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, "");
 		uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Read Saved Full Sample Results|R", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 13, "");
+		
+		uiDefBut(block, SEPR, 0, "",        0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
+		
+		uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Connect Node to Viewer|Ctrl LMB", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 14, "");
+		
+		uiDefBut(block, SEPR, 0, "",        0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
 	}
 	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Show Cyclic Dependencies|C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, "");
 	





More information about the Bf-blender-cvs mailing list