[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56584] trunk/blender/source/blender: Change to socket draw functions: instead of always only drawing the socket label for connected sockets, leave this check up to the socket draw function itself.

Lukas Toenne lukas.toenne at googlemail.com
Wed May 8 16:58:38 CEST 2013


Revision: 56584
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56584
Author:   lukastoenne
Date:     2013-05-08 14:58:37 +0000 (Wed, 08 May 2013)
Log Message:
-----------
Change to socket draw functions: instead of always only drawing the socket label for connected sockets, leave this check up to the socket draw function itself. This allows future socket types to draw buttons or other info in all cases and handle connected/unconnected state more flexibly.

The drawinputfunc/drawoutputfunc callbacks in bNodeType are pretty much empty wrappers now and should be removed at some point. This per-node differentiation should rather be implemented as a specialized socket type if necessary. The only use case for this feature that remains is the file output node in compositor, which displays shortened file format info for each socket.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_node.h
    trunk/blender/source/blender/editors/space_node/drawnode.c
    trunk/blender/source/blender/editors/space_node/node_draw.c

Modified: trunk/blender/source/blender/blenkernel/BKE_node.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_node.h	2013-05-08 14:33:02 UTC (rev 56583)
+++ trunk/blender/source/blender/blenkernel/BKE_node.h	2013-05-08 14:58:37 UTC (rev 56584)
@@ -131,7 +131,7 @@
 	int type, subtype;
 } bNodeSocketType;
 
-typedef void (*NodeSocketDrawFunction)(struct bContext *C, struct uiLayout *layout, struct PointerRNA *ptr, struct PointerRNA *node_ptr, int linked);
+typedef void (*NodeSocketDrawFunction)(struct bContext *C, struct uiLayout *layout, struct PointerRNA *ptr, struct PointerRNA *node_ptr);
 
 typedef void *(*NodeInitExecFunction)(struct bNodeExecContext *context, struct bNode *node, bNodeInstanceKey key);
 typedef void (*NodeFreeExecFunction)(struct bNode *node, void *nodedata);

Modified: trunk/blender/source/blender/editors/space_node/drawnode.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/drawnode.c	2013-05-08 14:33:02 UTC (rev 56583)
+++ trunk/blender/source/blender/editors/space_node/drawnode.c	2013-05-08 14:58:37 UTC (rev 56584)
@@ -86,16 +86,13 @@
 	uiItemL(layout, IFACE_(sock->name), 0);
 }
 
-static void node_draw_input_default(bContext *C, uiLayout *layout, PointerRNA *ptr, PointerRNA *node_ptr, int linked)
+static void node_draw_input_default(bContext *C, uiLayout *layout, PointerRNA *ptr, PointerRNA *node_ptr)
 {
 	bNodeSocket *sock = (bNodeSocket *)ptr->data;
-	if (linked || (sock->flag & SOCK_HIDE_VALUE))
-		node_socket_button_label(C, layout, ptr, node_ptr);
-	else
-		sock->typeinfo->draw(C, layout, ptr, node_ptr);
+	sock->typeinfo->draw(C, layout, ptr, node_ptr);
 }
 
-static void node_draw_output_default(bContext *C, uiLayout *layout, PointerRNA *ptr, PointerRNA *node_ptr, int UNUSED(linked))
+static void node_draw_output_default(bContext *C, uiLayout *layout, PointerRNA *ptr, PointerRNA *node_ptr)
 {
 	node_socket_button_label(C, layout, ptr, node_ptr);
 }
@@ -1518,7 +1515,7 @@
 }
 
 /* draw function for file output node sockets, displays only sub-path and format, no value button */
-static void node_draw_input_file_output(bContext *C, uiLayout *layout, PointerRNA *ptr, PointerRNA *node_ptr, int UNUSED(linked))
+static void node_draw_input_file_output(bContext *C, uiLayout *layout, PointerRNA *ptr, PointerRNA *node_ptr)
 {
 	bNodeTree *ntree = ptr->id.data;
 	bNodeSocket *sock = ptr->data;
@@ -2736,6 +2733,11 @@
 	int type = sock->typeinfo->type;
 	/*int subtype = sock->typeinfo->subtype;*/
 	
+	if ((sock->flag & SOCK_IN_USE) || (sock->flag & SOCK_HIDE_VALUE)) {
+		node_socket_button_label(C, layout, ptr, node_ptr);
+		return;
+	}
+	
 	switch (type) {
 		case SOCK_FLOAT:
 		case SOCK_INT:

Modified: trunk/blender/source/blender/editors/space_node/node_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_draw.c	2013-05-08 14:33:02 UTC (rev 56583)
+++ trunk/blender/source/blender/editors/space_node/node_draw.c	2013-05-08 14:58:37 UTC (rev 56584)
@@ -351,7 +351,7 @@
 		row = uiLayoutRow(layout, 1);
 		uiLayoutSetAlignment(row, UI_LAYOUT_ALIGN_RIGHT);
 		
-		node->typeinfo->drawoutputfunc((bContext *)C, row, &sockptr, &nodeptr, (nsock->flag & SOCK_IN_USE));
+		node->typeinfo->drawoutputfunc((bContext *)C, row, &sockptr, &nodeptr);
 		
 		uiBlockEndAlign(node->block);
 		uiBlockLayoutResolve(node->block, NULL, &buty);
@@ -438,7 +438,7 @@
 		uiLayoutSetContextPointer(layout, "node", &nodeptr);
 		uiLayoutSetContextPointer(layout, "socket", &sockptr);
 		
-		node->typeinfo->drawinputfunc((bContext *)C, layout, &sockptr, &nodeptr, (nsock->flag & SOCK_IN_USE));
+		node->typeinfo->drawinputfunc((bContext *)C, layout, &sockptr, &nodeptr);
 		
 		uiBlockEndAlign(node->block);
 		uiBlockLayoutResolve(node->block, NULL, &buty);




More information about the Bf-blender-cvs mailing list