[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24440] trunk/blender/source/blender: * Finished (well, almost ; ) RNA wrapping and layout-engine-ing all the nodes.

Matt Ebb matt at mke3.net
Tue Nov 10 05:01:45 CET 2009


Revision: 24440
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24440
Author:   broken
Date:     2009-11-10 05:01:44 +0100 (Tue, 10 Nov 2009)

Log Message:
-----------
* Finished (well, almost ;) RNA wrapping and layout-engine-ing all the nodes.

Still a few quirks, including redraw issues on multilayer image input nodes, but it's pretty much there.
Would also be good to wrap the input/output sockets, too, will check on it.

This fixes bug [#19740] INPUT NODE: Cannot load images / motion pictures

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_node.h
    trunk/blender/source/blender/blenkernel/intern/node.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/editors/space_node/drawnode.c
    trunk/blender/source/blender/editors/space_node/node_draw.c
    trunk/blender/source/blender/editors/space_node/node_edit.c
    trunk/blender/source/blender/makesdna/DNA_node_types.h
    trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
    trunk/blender/source/blender/makesrna/intern/rna_nodetree_types.h
    trunk/blender/source/blender/nodes/intern/CMP_nodes/CMP_channelMatte.c
    trunk/blender/source/blender/render/intern/source/pipeline.c

Modified: trunk/blender/source/blender/blenkernel/BKE_node.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_node.h	2009-11-10 03:48:02 UTC (rev 24439)
+++ trunk/blender/source/blender/blenkernel/BKE_node.h	2009-11-10 04:01:44 UTC (rev 24440)
@@ -53,6 +53,7 @@
 struct GPUNode;
 struct GPUNodeStack;
 struct PointerRNA;
+struct bContext;
 
 /* ************** NODE TYPE DEFINITIONS ***** */
 
@@ -83,7 +84,7 @@
 	void (*execfunc)(void *data, struct bNode *, struct bNodeStack **, struct bNodeStack **);
 	
 	/* this line is set on startup of blender */
-	void (*uifunc)(struct uiLayout *, struct PointerRNA *ptr);
+	void (*uifunc)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr);
 
 	void (*initfunc)(struct bNode *);
 	void (*freestoragefunc)(struct bNode *);

Modified: trunk/blender/source/blender/blenkernel/intern/node.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/node.c	2009-11-10 03:48:02 UTC (rev 24439)
+++ trunk/blender/source/blender/blenkernel/intern/node.c	2009-11-10 04:01:44 UTC (rev 24440)
@@ -1054,7 +1054,7 @@
     if(ntree->type==NTREE_SHADER)
 		BLI_strncpy(ntree->id.name, "NTShader Nodetree", sizeof(ntree->id.name));
     else if(ntree->type==NTREE_COMPOSIT)
-		BLI_strncpy(ntree->id.name, "NTComposit Nodetree", sizeof(ntree->id.name));
+		BLI_strncpy(ntree->id.name, "NTCompositing Nodetree", sizeof(ntree->id.name));
     else if(ntree->type==NTREE_TEXTURE)
 		BLI_strncpy(ntree->id.name, "NTTexture Nodetree", sizeof(ntree->id.name));
 	

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2009-11-10 03:48:02 UTC (rev 24439)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2009-11-10 04:01:44 UTC (rev 24440)
@@ -9527,7 +9527,7 @@
 		/* and composit trees */
 		for(sce= main->scene.first; sce; sce= sce->id.next) {
 			if(sce->nodetree && strlen(sce->nodetree->id.name)==0)
-				strcpy(sce->nodetree->id.name, "NTComposit Nodetree");
+				strcpy(sce->nodetree->id.name, "NTCompositing Nodetree");
 
 			/* move to cameras */
 			if(sce->r.mode & R_PANORAMA) {

Modified: trunk/blender/source/blender/editors/space_node/drawnode.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/drawnode.c	2009-11-10 03:48:02 UTC (rev 24439)
+++ trunk/blender/source/blender/editors/space_node/drawnode.c	2009-11-10 04:01:44 UTC (rev 24440)
@@ -161,7 +161,7 @@
 
 /* ****************** BUTTON CALLBACKS FOR ALL TREES ***************** */
 
-static void node_buts_group(uiLayout *layout, PointerRNA *ptr)
+static void node_buts_group(uiLayout *layout, bContext *C, PointerRNA *ptr)
 {
 	uiBlock *block= uiLayoutAbsoluteBlock(layout);
 	bNode *node= ptr->data;
@@ -195,7 +195,7 @@
 }
 #endif
 
-static void node_buts_value(uiLayout *layout, PointerRNA *ptr)
+static void node_buts_value(uiLayout *layout, bContext *C, PointerRNA *ptr)
 {
 	uiBlock *block= uiLayoutAbsoluteBlock(layout);
 	bNode *node= ptr->data;
@@ -207,7 +207,7 @@
 			  sock->ns.vec, sock->ns.min, sock->ns.max, 10, 2, "");
 }
 
-static void node_buts_rgb(uiLayout *layout, PointerRNA *ptr)
+static void node_buts_rgb(uiLayout *layout, bContext *C, PointerRNA *ptr)
 {
 	uiBlock *block= uiLayoutAbsoluteBlock(layout);
 	bNode *node= ptr->data;
@@ -233,7 +233,7 @@
 	}
 }
 
-static void node_buts_mix_rgb(uiLayout *layout, PointerRNA *ptr)
+static void node_buts_mix_rgb(uiLayout *layout, bContext *C, PointerRNA *ptr)
 {	
 	uiLayout *row;
 
@@ -245,7 +245,7 @@
 		uiItemR(row, "", ICON_IMAGE_RGB_ALPHA, ptr, "alpha", 0);
 }
 
-static void node_buts_time(uiLayout *layout, PointerRNA *ptr)
+static void node_buts_time(uiLayout *layout, bContext *C, PointerRNA *ptr)
 {
 	uiLayout *row;
 #if 0
@@ -267,18 +267,12 @@
 	uiItemR(row, "End", 0, ptr, "end", 0);
 }
 
-static void node_buts_valtorgb(uiLayout *layout, PointerRNA *ptr)
+static void node_buts_colorramp(uiLayout *layout, bContext *C, PointerRNA *ptr)
 {
-	uiBlock *block= uiLayoutAbsoluteBlock(layout);
-	bNode *node= ptr->data;
-	rctf *butr= &node->butr;
-
-	if(node->storage) {
-		uiBlockColorbandButtons(block, node->storage, butr, B_NODE_EXEC);
-	}
+	uiTemplateColorRamp(layout, ptr, "color_ramp", 0);
 }
 
-static void node_buts_curvevec(uiLayout *layout, PointerRNA *ptr)
+static void node_buts_curvevec(uiLayout *layout, bContext *C, PointerRNA *ptr)
 {
 	uiTemplateCurveMapping(layout, ptr, "mapping", 'v', 0);
 }
@@ -289,7 +283,7 @@
 	_sample_col= col;
 }
 
-static void node_buts_curvecol(uiLayout *layout, PointerRNA *ptr)
+static void node_buts_curvecol(uiLayout *layout, bContext *C, PointerRNA *ptr)
 {
 	bNode *node= ptr->data;
 	CurveMapping *cumap= node->storage;
@@ -304,7 +298,7 @@
 	uiTemplateCurveMapping(layout, ptr, "mapping", 'c', 0);
 }
 
-static void node_buts_normal(uiLayout *layout, PointerRNA *ptr)
+static void node_buts_normal(uiLayout *layout, bContext *C, PointerRNA *ptr)
 {
 	uiBlock *block= uiLayoutAbsoluteBlock(layout);
 	bNode *node= ptr->data;
@@ -377,7 +371,7 @@
 	// XXX BIF_preview_changed(ID_MA);
 }
 
-static void node_buts_texture(uiLayout *layout, PointerRNA *ptr)
+static void node_buts_texture(uiLayout *layout, bContext *C, PointerRNA *ptr)
 {
 	bNode *node= ptr->data;
 
@@ -396,7 +390,7 @@
 	}
 }
 
-static void node_buts_math(uiLayout *layout, PointerRNA *ptr)
+static void node_buts_math(uiLayout *layout, bContext *C, PointerRNA *ptr)
 { 
 	uiItemR(layout, "", 0, ptr, "operation", 0);
 }
@@ -429,223 +423,67 @@
 	node->menunr= 0;
 }
 
-static void node_mat_alone_cb(bContext *C, void *node_v, void *unused)
-{
-	bNode *node= node_v;
-	
-	node->id= (ID *)copy_material((Material *)node->id);
-	
-	//BIF_undo_push("Single user material");
-	// allqueue(REDRAWBUTSSHADING, 0);
-	// allqueue(REDRAWNODE, 0);
-	// allqueue(REDRAWOOPS, 0);
-}
-
-static void node_browse_mat_cb(bContext *C, void *ntree_v, void *node_v)
-{
-	bNodeTree *ntree= ntree_v;
-	bNode *node= node_v;
-	
-	if(node->menunr<1) return;
-	
-	if(node->menunr==32767) {	/* code for Add New */
-		if(node->id) {
-			/* make copy, but make sure it doesnt have the node tag nor nodes */
-			Material *ma= (Material *)node->id;
-			ma->id.us--;
-			ma= copy_material(ma);
-			ma->use_nodes= 0;
-			if(ma->nodetree) {
-				ntreeFreeTree(ma->nodetree);
-				MEM_freeN(ma->nodetree);
-			}
-			ma->nodetree= NULL;
-			node->id= (ID *)ma;
-		}
-		else node->id= (ID *)add_material("MatNode");
-	}
-	else {
-		if(node->id) node->id->us--;
-		node->id= BLI_findlink(&G.main->mat, node->menunr-1);
-		id_us_plus(node->id);
-	}
-	BLI_strncpy(node->name, node->id->name+2, 21);
-	
-	nodeSetActive(ntree, node);
-
-	// allqueue(REDRAWBUTSSHADING, 0);
-	// allqueue(REDRAWNODE, 0);
-	// XXX BIF_preview_changed(ID_MA);
-
-	node->menunr= 0;
-}
-
-static void node_new_mat_cb(bContext *C, void *ntree_v, void *node_v)
-{
-	bNodeTree *ntree= ntree_v;
-	bNode *node= node_v;
-	
-	node->id= (ID *)add_material("MatNode");
-	BLI_strncpy(node->name, node->id->name+2, 21);
-
-	nodeSetActive(ntree, node);
-
-	// allqueue(REDRAWBUTSSHADING, 0);
-	// allqueue(REDRAWNODE, 0);
-	// XXX BIF_preview_changed(ID_MA);
-
-}
-
 static void node_texmap_cb(bContext *C, void *texmap_v, void *unused_v)
 {
 	init_mapping(texmap_v);
 }
 
-static void node_shader_buts_material(uiLayout *layout, PointerRNA *ptr)
+static void node_shader_buts_material(uiLayout *layout, bContext *C, PointerRNA *ptr)
 {
-	uiBlock *block= uiLayoutAbsoluteBlock(layout);
 	bNode *node= ptr->data;
-	bNodeTree *ntree= ptr->id.data;
-	rctf *butr= &node->butr;
-	uiBut *bt;
-	short dx= (short)((butr->xmax-butr->xmin)/3.0f), has_us= (node->id && node->id->us>1);
-	short dy= (short)butr->ymin;
-	char *strp;
+	uiLayout *col;
 	
-	/* WATCH IT: we use this callback in material buttons, but then only want first row */
-	if(butr->ymax-butr->ymin > 21.0f) dy+= 19;
+	uiTemplateID(layout, C, ptr, "material", "MATERIAL_OT_new", NULL, NULL);
 	
-	uiBlockBeginAlign(block);
-	/* XXX
-	if(node->id==NULL) uiBlockSetCol(block, TH_REDALERT);
-	else if(has_us) uiBlockSetCol(block, TH_BUT_SETTING1);
-	else uiBlockSetCol(block, TH_BUT_SETTING2);
-	*/
+	if(!node->id) return;
 	
-	/* browse button */
-	IDnames_to_pupstring(&strp, NULL, "ADD NEW %x32767", &(G.main->mat), NULL, NULL);
-	node->menunr= 0;
-	bt= uiDefButS(block, MENU, B_NOP, strp, 
-			  butr->xmin, dy, 19, 19, 
-			  &node->menunr, 0, 0, 0, 0, "Browses existing choices or adds NEW");
-	uiButSetFunc(bt, node_browse_mat_cb, ntree, node);
-	if(strp) MEM_freeN(strp);
-	
-	/* Add New button */
-	if(node->id==NULL) {
-		bt= uiDefBut(block, BUT, B_NOP, "Add New",
-					 butr->xmin+19, dy, (short)(butr->xmax-butr->xmin-19.0f), 19, 
-					 NULL, 0.0, 0.0, 0, 0, "Add new Material");
-		uiButSetFunc(bt, node_new_mat_cb, ntree, node);
-	}
-	else {
-		/* name button */
-		short width= (short)(butr->xmax-butr->xmin-19.0f - (has_us?19.0f:0.0f));
-		bt= uiDefBut(block, TEX, B_NOP, "MA:",
-					  butr->xmin+19, dy, width, 19, 
-					  node->id->name+2, 0.0, 19.0, 0, 0, "Material name");
-		uiButSetFunc(bt, node_ID_title_cb, node, NULL);
-		
-		/* user amount */
-		if(has_us) {
-			char str1[32];
-			sprintf(str1, "%d", node->id->us);
-			bt= uiDefBut(block, BUT, B_NOP, str1, 
-						  butr->xmax-19, dy, 19, 19, 
-						  NULL, 0, 0, 0, 0, "Displays number of users. Click to make a single-user copy.");
-			uiButSetFunc(bt, node_mat_alone_cb, node, NULL);
-		}
-		
-		/* WATCH IT: we use this callback in material buttons, but then only want first row */
-		if(butr->ymax-butr->ymin > 21.0f) {
-			/* node options */
-			uiDefButBitS(block, TOG, SH_NODE_MAT_DIFF, B_NODE_EXEC, "Diff",
-						 butr->xmin, butr->ymin, dx, 19, 
-						 &node->custom1, 0, 0, 0, 0, "Material Node outputs Diffuse");
-			uiDefButBitS(block, TOG, SH_NODE_MAT_SPEC, B_NODE_EXEC, "Spec",
-						 butr->xmin+dx, butr->ymin, dx, 19, 
-						 &node->custom1, 0, 0, 0, 0, "Material Node outputs Specular");
-			uiDefButBitS(block, TOG, SH_NODE_MAT_NEG, B_NODE_EXEC, "Neg Normal",
-						 butr->xmax-dx, butr->ymin, dx, 19,
-						 &node->custom1, 0, 0, 0, 0, "Material Node uses inverted Normal");
-		}
-	}
-	uiBlockEndAlign(block);
+	col= uiLayoutColumn(layout, 0);
+	uiItemR(col, NULL, 0, ptr, "diffuse", 0);
+	uiItemR(col, NULL, 0, ptr, "specular", 0);
+	uiItemR(col, NULL, 0, ptr, "invert_normal", 0);
 }
 

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list