[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34866] branches/particles-2010/source/ blender: Group code cleanup: Most of the group functions in node. c have been moved to node_common.c ( which is supposed to contain other shared node types in future, may also get its own file).

Lukas Toenne lukas.toenne at googlemail.com
Tue Feb 15 14:18:34 CET 2011


Revision: 34866
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34866
Author:   lukastoenne
Date:     2011-02-15 13:18:33 +0000 (Tue, 15 Feb 2011)
Log Message:
-----------
Group code cleanup: Most of the group functions in node.c have been moved to node_common.c (which is supposed to contain other shared node types in future, may also get its own file). Functions that need to be accessed by operators and drawing code are in BKE_node.h still, but renamed to lower case to indicate they are internal and shouldn't be used by core code.

Modified Paths:
--------------
    branches/particles-2010/source/blender/blenkernel/BKE_node.h
    branches/particles-2010/source/blender/blenkernel/intern/node.c
    branches/particles-2010/source/blender/blenloader/intern/readfile.c
    branches/particles-2010/source/blender/editors/space_node/drawnode.c
    branches/particles-2010/source/blender/editors/space_node/node_draw.c
    branches/particles-2010/source/blender/editors/space_node/node_edit.c
    branches/particles-2010/source/blender/editors/space_node/node_intern.h
    branches/particles-2010/source/blender/editors/space_node/node_state.c
    branches/particles-2010/source/blender/makesdna/DNA_node_types.h
    branches/particles-2010/source/blender/makesrna/intern/rna_nodetree.c
    branches/particles-2010/source/blender/nodes/intern/node_common.c
    branches/particles-2010/source/blender/nodes/intern/node_common.h
    branches/particles-2010/source/blender/nodes/intern/node_exec.c

Modified: branches/particles-2010/source/blender/blenkernel/BKE_node.h
===================================================================
--- branches/particles-2010/source/blender/blenkernel/BKE_node.h	2011-02-15 12:43:34 UTC (rev 34865)
+++ branches/particles-2010/source/blender/blenkernel/BKE_node.h	2011-02-15 13:18:33 UTC (rev 34866)
@@ -64,6 +64,8 @@
 struct Scene;
 struct Tex;
 struct uiLayout;
+struct SpaceNode;
+struct ARegion;
 struct Object;
 struct DerivedMesh;
 struct ParticleSystem;
@@ -108,6 +110,9 @@
 	void (*execfunc)(void *data, struct bNode *, struct bNodeStack **, struct bNodeStack **);
 	
 	/* this line is set on startup of blender */
+	/* basic drawing */
+	void (*drawfunc)(const struct bContext *C, struct ARegion *ar, struct SpaceNode *snode, struct bNodeTree *ntree, struct bNode *node);
+	void (*drawupdatefunc)(const struct bContext *C, struct bNodeTree *ntree, struct bNode *node);
 	/* node options ui */
 	void (*uifunc)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr);
 	/* detail buttons on panel */
@@ -123,6 +128,7 @@
 	struct bNodeTemplate (*templatefunc)(struct bNode *);
 	
 	int (*validfunc)(struct bNodeTree *ntree, struct bNodeTemplate *ntemp);
+	void (*verifyfunc)(struct bNodeTree *ntree, struct bNode *node);
 	
 	/* gpu */
 	int (*gpufunc)(struct GPUMaterial *mat, struct bNode *node, struct GPUNodeStack *in, struct GPUNodeStack *out);
@@ -240,13 +246,6 @@
 struct bNode	*nodeAddNode(struct bNodeTree *ntree, struct bNodeTemplate *ntemp);
 void			nodeUnlinkNode(struct bNodeTree *ntree, struct bNode *node);
 void			nodeUniqueName(struct bNodeTree *ntree, struct bNode *node);
-struct bNodeSocket *nodeAddInputSocket(struct bNodeTree *ntree, struct bNode *node, const char *name, int type);
-struct bNodeSocket *nodeAddOutputSocket(struct bNodeTree *ntree, struct bNode *node, const char *name, int type);
-struct bNodeSocket *nodeInsertInputSocket(struct bNodeTree *ntree, struct bNode *node, struct bNodeSocket *next_sock, const char *name, int type);
-struct bNodeSocket *nodeInsertOutputSocket(struct bNodeTree *ntree, struct bNode *node, struct bNodeSocket *next_sock, const char *name, int type);
-void			nodeRemoveInputSocket(struct bNodeTree *ntree, struct bNode *node, struct bNodeSocket *sock);
-void			nodeRemoveOutputSocket(struct bNodeTree *ntree, struct bNode *node, struct bNodeSocket *sock);
-void			nodeRemoveAllSockets(struct bNodeTree *ntree, struct bNode *node);
 
 struct bNodeSocketPanel *nodeFindInputPanel(struct bNode *node, const char *name);
 struct bNodeSocketPanel *nodeFindOutputPanel(struct bNode *node, const char *name);
@@ -288,25 +287,6 @@
 
 void			nodeFreePreview(struct bNode *node);
 
-/* ************** Groups ****************** */
-
-int				ntreeGroupAllowed(struct bNodeTree *ntree, int type, struct bNodeTree *ngroup);
-
-struct bNode	*nodeMakeGroupFromSelected(struct bNodeTree *ntree);
-int				nodeGroupUnGroup(struct bNodeTree *ntree, struct bNode *gnode);
-
-void			nodeVerifyGroup(struct bNodeTree *ngroup);
-void			nodeGroupSocketUseFlags(struct bNodeTree *ngroup);
-
-void			nodeCopyGroup(struct bNode *gnode);
-
-struct bNodeSocket *nodeAddGroupSocket(struct bNodeTree *ngroup, const char *name, int type, int in_out);
-struct bNodeSocket *nodeAddGroupSocketCopy(struct bNodeTree *ngroup, struct bNodeSocket *copy, int in_out);
-void			nodeAddAllGroupSockets(struct bNodeTree *ngroup);
-void			nodeRemGroupSocket(struct bNodeTree *ngroup, struct bNodeSocket *gsock, int in_out);
-struct bNodeSocket *nodeFindGroupNodeInput(struct bNode *gnode, struct bNodeSocket *gsock);
-struct bNodeSocket *nodeFindGroupNodeOutput(struct bNode *gnode, struct bNodeSocket *gsock);
-
 /* ************** NODE TYPE ACCESS *************** */
 
 struct bNodeTemplate nodeMakeTemplate(struct bNode *node);
@@ -327,15 +307,39 @@
 void			node_type_gpu(struct bNodeType *ntype, int (*gpufunc)(struct GPUMaterial *mat, struct bNode *node, struct GPUNodeStack *in, struct GPUNodeStack *out));
 void			node_type_label(struct bNodeType *ntype, const char *(*labelfunc)(struct bNode *));
 void			node_type_template(struct bNodeType *ntype, struct bNodeTemplate (*templatefunc)(struct bNode *));
+void			node_type_verify(struct bNodeType *ntype, void (*verifyfunc)(struct bNodeTree *, struct bNode *));
 
+/* ************** INTERNAL EDITOR FUNCTIONS *************** */
+
+struct bNodeSocket *node_add_socket(struct bNodeTree *ntree, ListBase *lb, int in_out, const char *name, int type);
+struct bNodeSocket *node_insert_socket(struct bNodeTree *ntree, ListBase *lb, int in_out, struct bNodeSocket *next_sock, const char *name, int type);
+void node_remove_socket(struct bNodeTree *ntree, ListBase *lb, struct bNodeSocket *sock);
+void node_remove_all_sockets(struct bNodeTree *ntree, struct bNode *node);
+
 /* ************** COMMON NODES *************** */
 
 #define NODE_GROUP		2
 #define NODE_GROUP_MENU		10000
 #define NODE_DYNAMIC_MENU	20000
 
+/* Group */
+
 void register_node_type_group(ListBase *lb);
 
+/* look up a socket on a group node by the internal group socket */
+struct bNodeSocket *node_group_find_input(struct bNode *gnode, struct bNodeSocket *gsock);
+struct bNodeSocket *node_group_find_output(struct bNode *gnode, struct bNodeSocket *gsock);
+
+struct bNodeSocket *node_group_add_socket(struct bNodeTree *ngroup, const char *name, int type, int in_out);
+struct bNodeSocket *node_group_add_socket_copy(struct bNodeTree *ngroup, struct bNodeSocket *copy, int in_out);
+void node_group_add_all_sockets(struct bNodeTree *ngroup);
+void node_group_remove_socket(struct bNodeTree *ngroup, struct bNodeSocket *gsock, int in_out);
+
+struct bNode	*node_group_make_from_selected(struct bNodeTree *ntree);
+int				node_group_ungroup(struct bNodeTree *ntree, struct bNode *gnode);
+
+void			node_group_verify(struct bNodeTree *ngroup);
+
 /* ************** SHADER NODES *************** */
 
 struct ShadeInput;

Modified: branches/particles-2010/source/blender/blenkernel/intern/node.c
===================================================================
--- branches/particles-2010/source/blender/blenkernel/intern/node.c	2011-02-15 12:43:34 UTC (rev 34865)
+++ branches/particles-2010/source/blender/blenkernel/intern/node.c	2011-02-15 13:18:33 UTC (rev 34866)
@@ -60,14 +60,11 @@
 #include "BKE_node.h"
 #include "BKE_utildefines.h"
 
-#include "MEM_guardedalloc.h"
-
-//#include "PIL_time.h"
-
 #include "BLI_listbase.h"
 
 #include "RNA_access.h"
 
+#include "intern/node_common.h"
 #include "intern/node_exec.h"
 
 #include "CMP_node.h"
@@ -156,33 +153,21 @@
 	return sock;
 }
 
-bNodeSocket *nodeAddInputSocket(bNodeTree *ntree, bNode *node, const char *name, int type)
+bNodeSocket *node_add_socket(bNodeTree *ntree, ListBase *lb, int in_out, const char *name, int type)
 {
-	bNodeSocket *sock = make_socket(ntree, SOCK_IN, name, type);
-	BLI_addtail(&node->inputs, sock);
+	bNodeSocket *sock = make_socket(ntree, in_out, name, type);
+	BLI_addtail(lb, sock);
 	return sock;
 }
-bNodeSocket *nodeAddOutputSocket(bNodeTree *ntree, bNode *node, const char *name, int type)
-{
-	bNodeSocket *sock = make_socket(ntree, SOCK_OUT, name, type);
-	BLI_addtail(&node->outputs, sock);
-	return sock;
-}
 
-bNodeSocket *nodeInsertInputSocket(bNodeTree *ntree, bNode *node, bNodeSocket *next_sock, const char *name, int type)
+bNodeSocket *node_insert_socket(bNodeTree *ntree, ListBase *lb, int in_out, bNodeSocket *next_sock, const char *name, int type)
 {
-	bNodeSocket *sock = make_socket(ntree, SOCK_IN, name, type);
-	BLI_insertlinkbefore(&node->inputs, next_sock, sock);
+	bNodeSocket *sock = make_socket(ntree, in_out, name, type);
+	BLI_insertlinkbefore(lb, next_sock, sock);
 	return sock;
 }
-bNodeSocket *nodeInsertOutputSocket(bNodeTree *ntree, bNode *node, bNodeSocket *next_sock, const char *name, int type)
-{
-	bNodeSocket *sock = make_socket(ntree, SOCK_OUT, name, type);
-	BLI_insertlinkbefore(&node->outputs, next_sock, sock);
-	return sock;
-}
 
-static void node_rem_socket(bNodeTree *ntree, ListBase *lb, bNodeSocket *sock)
+void node_remove_socket(bNodeTree *ntree, ListBase *lb, bNodeSocket *sock)
 {
 	bNodeLink *link, *next;
 	
@@ -197,16 +182,8 @@
 	MEM_freeN(sock);
 }
 
-void nodeRemoveInputSocket(bNodeTree *ntree, bNode *node, bNodeSocket *sock)
+void node_remove_all_sockets(bNodeTree *ntree, bNode *node)
 {
-	node_rem_socket(ntree, &node->inputs, sock);
-}
-void nodeRemoveOutputSocket(bNodeTree *ntree, bNode *node, bNodeSocket *sock)
-{
-	node_rem_socket(ntree, &node->outputs, sock);
-}
-void nodeRemoveAllSockets(bNodeTree *ntree, bNode *node)
-{
 	bNodeLink *link, *next;
 	
 	for(link= ntree->links.first; link; link= next) {
@@ -220,90 +197,10 @@
 	BLI_freelistN(&node->outputs);
 }
 
-static bNodeSocket *node_add_group_socket(ListBase *lb, bNodeSocket *gsock)
-{
-	bNodeSocket *sock= MEM_callocN(sizeof(bNodeSocket), "sock");
-	
-	/* make a copy of the group socket */
-	*sock = *gsock;
-	sock->link = NULL;
-	sock->next = sock->prev = NULL;
-	sock->new_sock = NULL;
-	sock->ns.data = NULL;
-	
-	sock->own_index = gsock->own_index;
-	sock->groupsock = gsock;
-	/* XXX hack: group socket input/output roles are inverted internally,
-	 * need to change the limit value when making actual node sockets from them.
-	 */
-	sock->limit = (gsock->limit==1 ? 0xFFF : 1);
-	
-	if(lb)
-		BLI_addtail(lb, sock);
-	
-	return sock;
-}
-
-static bNodeSocket *verify_group_socket(ListBase *lb, bNodeSocket *gsock)
-{
-	bNodeSocket *sock;
-	
-	for(sock= lb->first; sock; sock= sock->next) {
-		if(sock->own_index==gsock->own_index)
-				break;
-	}
-	if(sock) {
-		sock->groupsock = gsock;
-		
-		strcpy(sock->name, gsock->name);
-		sock->type= gsock->type;
-		
-		/* XXX hack: group socket input/output roles are inverted internally,
-		 * need to change the limit value when making actual node sockets from them.
-		 */
-		sock->limit = (gsock->limit==1 ? 0xFFF : 1);
-		
-		sock->ns.min= gsock->ns.min;
-		sock->ns.max= gsock->ns.max;
-		
-		BLI_remlink(lb, sock);
-		
-		return sock;
-	}
-	else {
-		return node_add_group_socket(NULL, gsock);
-	}
-}
-
-static void verify_group_socket_list(bNodeTree *ntree, ListBase *lb, ListBase *glb)
-{
-	bNodeSocket *gsock;
-	
-	/* step by step compare */
-	for (gsock= glb->first; gsock; gsock=gsock->next) {
-		/* abusing new_sock pointer for verification here! only used inside this function */
-		gsock->new_sock= verify_group_socket(lb, gsock);
-	}
-	/* leftovers are removed */
-	while(lb->first)

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list