[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