Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Toenne <lukas.toenne@googlemail.com>2012-05-22 18:13:33 +0400
committerLukas Toenne <lukas.toenne@googlemail.com>2012-05-22 18:13:33 +0400
commit53b01d90023a850b17ded5deb9cace354c8e298a (patch)
treeab8ce43ddf8046dc54e2cacc5ff46cbc5806910b /source/blender/blenkernel
parent85923aff288da072750447b44e492ebe5c59bcce (diff)
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).
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/BKE_blender.h2
-rw-r--r--source/blender/blenkernel/BKE_node.h9
-rw-r--r--source/blender/blenkernel/BKE_screen.h2
-rw-r--r--source/blender/blenkernel/intern/node.c42
4 files changed, 37 insertions, 18 deletions
diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h
index 7cc5d16dcc1..596c4a7d7b8 100644
--- a/source/blender/blenkernel/BKE_blender.h
+++ b/source/blender/blenkernel/BKE_blender.h
@@ -42,7 +42,7 @@ extern "C" {
* 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
diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h
index cb899dcc902..2632a982a01 100644
--- a/source/blender/blenkernel/BKE_node.h
+++ b/source/blender/blenkernel/BKE_node.h
@@ -248,6 +248,12 @@ typedef struct bNodeType {
#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 nodeRemLink(struct bNodeTree *ntree, struct bNodeLink *link);
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);
diff --git a/source/blender/blenkernel/BKE_screen.h b/source/blender/blenkernel/BKE_screen.h
index 7223008afad..e99fc413ca1 100644
--- a/source/blender/blenkernel/BKE_screen.h
+++ b/source/blender/blenkernel/BKE_screen.h
@@ -153,6 +153,8 @@ typedef struct ARegionType {
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 */
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index fc62d69d002..445105d254a 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -336,6 +336,7 @@ bNode *nodeAddNode(bNodeTree *ntree, struct bNodeTemplate *ntemp)
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 @@ void nodeInternalRelink(bNodeTree *ntree, bNode *node)
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;
}
}