Revision: 46884
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46884
Author:   lukastoenne
Date:     2012-05-22 14:13:33 +0000 (Tue, 22 May 2012)
Log Message:
-----------
A number of new features for the node editor in general and the Frame node in 
particular.
For an detailed user-level description of new features see the following 
blogpost:

http://code.blender.org/index.php/2012/05/node-editing-tweaks/

TL;DR:
* Frame node gets more usable bounding-box behavior
* Node resizing has helpful mouse cursor indicators and works on all borders
* Node selection/active colors are themeable independently
* Customizable background colors for nodes (useful for frames visual
distinction).

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_operators/presets.py
    trunk/blender/release/scripts/startup/bl_ui/space_node.py
    trunk/blender/source/blender/blenkernel/BKE_blender.h
    trunk/blender/source/blender/blenkernel/BKE_node.h
    trunk/blender/source/blender/blenkernel/BKE_screen.h
    trunk/blender/source/blender/blenkernel/intern/node.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/editors/datafiles/startup.blend.c
    trunk/blender/source/blender/editors/include/ED_node.h
    trunk/blender/source/blender/editors/interface/resources.c
    trunk/blender/source/blender/editors/screen/screen_edit.c
    trunk/blender/source/blender/editors/space_node/drawnode.c
    trunk/blender/source/blender/editors/space_node/node_buttons.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/editors/space_node/node_intern.h
    trunk/blender/source/blender/editors/space_node/node_ops.c
    trunk/blender/source/blender/editors/space_node/node_select.c
    trunk/blender/source/blender/editors/space_node/space_node.c
    trunk/blender/source/blender/editors/transform/transform_conversions.c
    trunk/blender/source/blender/editors/transform/transform_ops.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_userdef.c
    trunk/blender/source/blender/nodes/intern/node_common.c
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: trunk/blender/release/scripts/startup/bl_operators/presets.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_operators/presets.py       
2012-05-22 13:59:58 UTC (rev 46883)
+++ trunk/blender/release/scripts/startup/bl_operators/presets.py       
2012-05-22 14:13:33 UTC (rev 46884)
@@ -452,6 +452,24 @@
     preset_subdir = "tracking_settings"
 
 
+class AddPresetNodeColor(AddPresetBase, Operator):
+    '''Add a Node Color Preset'''
+    bl_idname = "node.node_color_preset_add"
+    bl_label = "Add Node Color Preset"
+    preset_menu = "NODE_MT_node_color_presets"
+
+    preset_defines = [
+        "node = bpy.context.active_node"
+    ]
+
+    preset_values = [
+        "node.color",
+        "node.use_custom_color"
+    ]
+
+    preset_subdir = "node_color"
+
+
 class AddPresetInterfaceTheme(AddPresetBase, Operator):
     '''Add a theme preset'''
     bl_idname = "wm.interface_theme_preset_add"

Modified: trunk/blender/release/scripts/startup/bl_ui/space_node.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_node.py   2012-05-22 
13:59:58 UTC (rev 46883)
+++ trunk/blender/release/scripts/startup/bl_ui/space_node.py   2012-05-22 
14:13:33 UTC (rev 46884)
@@ -225,5 +225,23 @@
         layout.prop(tree, "chunksize")
         layout.prop(tree, "use_opencl")
 
+        
+class NODE_MT_node_color_presets(Menu):
+    """Predefined node color"""
+    bl_label = "Color Presets"
+    preset_subdir = "node_color"
+    preset_operator = "script.execute_preset"
+    draw = Menu.draw_preset
+
+
+class NODE_MT_node_color_specials(Menu):
+    bl_label = "Node Color Specials"
+
+    def draw(self, context):
+        layout = self.layout
+
+        layout.operator('node.node_copy_color', icon='COPY_ID')
+
+        
 if __name__ == "__main__":  # only for live edit.
     bpy.utils.register_module(__name__)

Modified: trunk/blender/source/blender/blenkernel/BKE_blender.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_blender.h       2012-05-22 
13:59:58 UTC (rev 46883)
+++ trunk/blender/source/blender/blenkernel/BKE_blender.h       2012-05-22 
14:13:33 UTC (rev 46884)
@@ -42,7 +42,7 @@
  * and keep comment above the defines.
  * Use STRINGIFY() rather than defining with quotes */
 #define BLENDER_VERSION         263
-#define BLENDER_SUBVERSION      5
+#define BLENDER_SUBVERSION      6
 
 #define BLENDER_MINVERSION      250
 #define BLENDER_MINSUBVERSION   0

Modified: trunk/blender/source/blender/blenkernel/BKE_node.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_node.h  2012-05-22 13:59:58 UTC 
(rev 46883)
+++ trunk/blender/source/blender/blenkernel/BKE_node.h  2012-05-22 14:13:33 UTC 
(rev 46884)
@@ -248,6 +248,12 @@
 #define NODE_OLD_SHADING       1
 #define NODE_NEW_SHADING       2
 
+/* node resize directions */
+#define NODE_RESIZE_TOP                1
+#define NODE_RESIZE_BOTTOM     2
+#define NODE_RESIZE_RIGHT      4
+#define NODE_RESIZE_LEFT       8
+
 /* enum values for input/output */
 #define SOCK_IN                1
 #define SOCK_OUT       2
@@ -348,7 +354,8 @@
 void                   nodeRemSocketLinks(struct bNodeTree *ntree, struct 
bNodeSocket *sock);
 void                   nodeInternalRelink(struct bNodeTree *ntree, struct 
bNode *node);
 
-void                   nodeSpaceCoords(struct bNode *node, float *locx, float 
*locy);
+void                   nodeToView(struct bNode *node, float x, float y, float 
*rx, float *ry);
+void                   nodeFromView(struct bNode *node, float x, float y, 
float *rx, float *ry);
 void                   nodeAttachNode(struct bNode *node, struct bNode 
*parent);
 void                   nodeDetachNode(struct bNode *node);
 

Modified: trunk/blender/source/blender/blenkernel/BKE_screen.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_screen.h        2012-05-22 
13:59:58 UTC (rev 46883)
+++ trunk/blender/source/blender/blenkernel/BKE_screen.h        2012-05-22 
14:13:33 UTC (rev 46884)
@@ -153,6 +153,8 @@
        int keymapflag;
        /* return without drawing. lock is set by region definition, and copied 
to do_lock by render. can become flag */
        short do_lock, lock;
+       /* call cursor function on each move event */
+       short event_cursor;
 } ARegionType;
 
 /* panel types */

Modified: trunk/blender/source/blender/blenkernel/intern/node.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/node.c       2012-05-22 
13:59:58 UTC (rev 46883)
+++ trunk/blender/source/blender/blenkernel/intern/node.c       2012-05-22 
14:13:33 UTC (rev 46884)
@@ -336,6 +336,7 @@
        node->width= ntype->width;
        node->miniwidth= 42.0f;
        node->height= ntype->height;
+       node->color[0] = node->color[1] = node->color[2] = 0.608;       /* 
default theme color */
        
        node_add_sockets_from_type(ntree, node, ntype);
        
@@ -591,40 +592,49 @@
        BLI_freelistN(&intlinks);
 }
 
-/* transforms node location to area coords */
-void nodeSpaceCoords(bNode *node, float *locx, float *locy)
+void nodeToView(bNode *node, float x, float y, float *rx, float *ry)
 {
        if (node->parent) {
-               nodeSpaceCoords(node->parent, locx, locy);
-               *locx += node->locx;
-               *locy += node->locy;
+               nodeToView(node->parent, x + node->locx, y + node->locy, rx, 
ry);
        }
        else {
-               *locx = node->locx;
-               *locy = node->locy;
+               *rx = x + node->locx;
+               *ry = y + node->locy;
        }
 }
 
+void nodeFromView(bNode *node, float x, float y, float *rx, float *ry)
+{
+       if (node->parent) {
+               nodeFromView(node->parent, x, y, rx, ry);
+               *rx -= node->locx;
+               *ry -= node->locy;
+       }
+       else {
+               *rx = x - node->locx;
+               *ry = y - node->locy;
+       }
+}
+
 void nodeAttachNode(bNode *node, bNode *parent)
 {
-       float parentx, parenty;
+       float locx, locy;
+       nodeToView(node, 0.0f, 0.0f, &locx, &locy);
        
        node->parent = parent;
        /* transform to parent space */
-       nodeSpaceCoords(parent, &parentx, &parenty);
-       node->locx -= parentx;
-       node->locy -= parenty;
+       nodeFromView(parent, locx, locy, &node->locx, &node->locy);
 }
 
 void nodeDetachNode(struct bNode *node)
 {
-       float parentx, parenty;
+       float locx, locy;
        
        if (node->parent) {
-               /* transform to "global" (area) space */
-               nodeSpaceCoords(node->parent, &parentx, &parenty);
-               node->locx += parentx;
-               node->locy += parenty;
+               /* transform to view space */
+               nodeToView(node, 0.0f, 0.0f, &locx, &locy);
+               node->locx = locx;
+               node->locy = locy;
                node->parent = NULL;
        }
 }

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c   2012-05-22 
13:59:58 UTC (rev 46883)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c   2012-05-22 
14:13:33 UTC (rev 46884)
@@ -6795,6 +6795,29 @@
        }
 }
 
+static void do_versions_nodetree_frame_2_64_6(bNodeTree *ntree)
+{
+       bNode *node;
+       
+       for (node=ntree->nodes.first; node; node=node->next) {
+               if (node->type==NODE_FRAME) {
+                       /* initialize frame node storage data */
+                       if (node->storage == NULL) {
+                               NodeFrame *data = (NodeFrame 
*)MEM_callocN(sizeof(NodeFrame), "frame node storage");
+                               node->storage = data;
+                               
+                               /* copy current flags */
+                               data->flag = node->custom1;
+                               
+                               data->label_size = 20;
+                       }
+               }
+               
+               /* initialize custom node color */
+               node->color[0] = node->color[1] = node->color[2] = 0.608;       
/* default theme color */
+       }
+}
+
 static void do_versions(FileData *fd, Library *lib, Main *main)
 {
        /* WATCH IT!!!: pointers from libdata have not been converted */
@@ -7441,6 +7464,40 @@
                        }
                }
        }
+
+       if (main->versionfile < 263 || (main->versionfile == 263 && 
main->subversionfile < 6))
+       {
+               /* update use flags for node sockets (was only temporary 
before) */
+               Scene *sce;
+               Material *mat;
+               Tex *tex;
+               Lamp *lamp;
+               World *world;
+               bNodeTree *ntree;
+               
+               for (sce=main->scene.first; sce; sce=sce->id.next)
+                       if (sce->nodetree)
+                               
do_versions_nodetree_frame_2_64_6(sce->nodetree);
+               
+               for (mat=main->mat.first; mat; mat=mat->id.next)
+                       if (mat->nodetree)
+                               
do_versions_nodetree_frame_2_64_6(mat->nodetree);
+               
+               for (tex=main->tex.first; tex; tex=tex->id.next)
+                       if (tex->nodetree)
+                               
do_versions_nodetree_frame_2_64_6(tex->nodetree);
+               
+               for (lamp=main->lamp.first; lamp; lamp=lamp->id.next)
+                       if (lamp->nodetree)
+                               
do_versions_nodetree_frame_2_64_6(lamp->nodetree);
+               
+               for (world=main->world.first; world; world=world->id.next)
+                       if (world->nodetree)
+                               
do_versions_nodetree_frame_2_64_6(world->nodetree);
+               
+               for (ntree=main->nodetree.first; ntree; ntree=ntree->id.next)
+                       do_versions_nodetree_frame_2_64_6(ntree);
+       }
        
        /* WATCH IT!!!: pointers from libdata have not been converted yet here! 
*/
        /* WATCH IT 2!: Userdef struct init has to be in 
editors/interface/resources.c! */

Modified: trunk/blender/source/blender/editors/datafiles/startup.blend.c
===================================================================
--- trunk/blender/source/blender/editors/datafiles/startup.blend.c      
2012-05-22 13:59:58 UTC (rev 46883)
+++ trunk/blender/source/blender/editors/datafiles/startup.blend.c      
2012-05-22 14:13:33 UTC (rev 46884)
@@ -1,14 +1,14 @@
 /* DataToC output of file <startup_blend> */
 
-int datatoc_startup_blend_size = 374884;
+int datatoc_startup_blend_size = 375392;
 char datatoc_startup_blend[] = {
- 66, 76, 69, 78,
- 68, 69, 82, 45,118, 50, 54, 51, 82, 69, 78, 68, 72,  0,  0,  0, 16,174, 
63,189,255,127,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,
-  1,  0,  0,  0,250,  0,  0,  0, 83, 99,101,110,101,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+
+ 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 54, 51, 82, 69, 78, 68, 72,  0,  0,  
0,  0,201,255,255,255,127,  0,  0,  0,  0,  0,  0,
+  1,  0,  0,  0,  1,  0,  0,  0,250,  0,  0,  0, 83, 99,101,110,101,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-  0,  0,  0,  0,  0,  0,  0,  0, 71, 76, 79, 66, 48,  4,  0,  0, 96,170, 
63,189,255,127,  0,  0,217,  0,  0,  0,  1,  0,  0,  0,
- 32, 32, 32, 53,  5,  0,  0,  0,250,  0,  0,  0,  1,  0,  0,  1,  8,234, 27,  
7,  0,  0,  0,  0,120,101, 30,  7,  0,  0,  0,  0,
-  0, 16,  0,  0,128, 32,  4,  0,240,181,  0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  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