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