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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to