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:
authorOmar Emara <mail@OmarEmara.dev>2021-11-02 19:29:35 +0300
committerOmar Emara <mail@OmarEmara.dev>2021-11-02 19:29:35 +0300
commit980bc5a707551f6db18deeeb29c5f59f7a7c98bc (patch)
tree85324e0809e5c709350a32d563106bc148405458 /source/blender/editors/space_node/node_draw.cc
parentdabfac37e35274bd68d74d4edb18b2827a6eec4e (diff)
UI: Use socket type info color to draw links
Currently, colored links overlay only supports standard sockets defined by Blender. Some add-ons like Animation Nodes defines custom sockets for everything and hence doesn't get colored sockets. This patch uses the draw color from the socket type info to draw links in order to support custom sockets. Differential Revision: https://developer.blender.org/D13044 Reviewed By: Hans Goudey
Diffstat (limited to 'source/blender/editors/space_node/node_draw.cc')
-rw-r--r--source/blender/editors/space_node/node_draw.cc23
1 files changed, 13 insertions, 10 deletions
diff --git a/source/blender/editors/space_node/node_draw.cc b/source/blender/editors/space_node/node_draw.cc
index a6496294f96..f76c29ef0d9 100644
--- a/source/blender/editors/space_node/node_draw.cc
+++ b/source/blender/editors/space_node/node_draw.cc
@@ -725,12 +725,15 @@ int node_get_colorid(bNode *node)
}
}
-static void node_draw_mute_line(const View2D *v2d, const SpaceNode *snode, const bNode *node)
+static void node_draw_mute_line(const bContext *C,
+ const View2D *v2d,
+ const SpaceNode *snode,
+ const bNode *node)
{
GPU_blend(GPU_BLEND_ALPHA);
LISTBASE_FOREACH (const bNodeLink *, link, &node->internal_links) {
- node_draw_link_bezier(v2d, snode, link, TH_WIRE_INNER, TH_WIRE_INNER, TH_WIRE);
+ node_draw_link_bezier(C, v2d, snode, link, TH_WIRE_INNER, TH_WIRE_INNER, TH_WIRE);
}
GPU_blend(GPU_BLEND_NONE);
@@ -825,13 +828,13 @@ static void node_socket_outline_color_get(const bool selected,
/* Usual convention here would be node_socket_get_color(), but that's already used (for setting a
* color property socket). */
void node_socket_color_get(
- bContext *C, bNodeTree *ntree, PointerRNA *node_ptr, bNodeSocket *sock, float r_color[4])
+ const bContext *C, bNodeTree *ntree, PointerRNA *node_ptr, bNodeSocket *sock, float r_color[4])
{
PointerRNA ptr;
BLI_assert(RNA_struct_is_a(node_ptr->type, &RNA_Node));
RNA_pointer_create((ID *)ntree, &RNA_NodeSocket, sock, &ptr);
- sock->typeinfo->draw_color(C, &ptr, node_ptr, r_color);
+ sock->typeinfo->draw_color((bContext *)C, &ptr, node_ptr, r_color);
}
struct SocketTooltipData {
@@ -1049,7 +1052,7 @@ static void node_socket_draw_nested(const bContext *C,
float color[4];
float outline_color[4];
- node_socket_color_get((bContext *)C, ntree, node_ptr, sock, color);
+ node_socket_color_get(C, ntree, node_ptr, sock, color);
node_socket_outline_color_get(selected, sock->type, outline_color);
node_socket_draw(sock,
@@ -1464,7 +1467,7 @@ void node_draw_sockets(const View2D *v2d,
float color[4];
float outline_color[4];
- node_socket_color_get((bContext *)C, ntree, &node_ptr, socket, color);
+ node_socket_color_get(C, ntree, &node_ptr, socket, color);
node_socket_outline_color_get(selected, socket->type, outline_color);
node_socket_draw_multi_input(color, outline_color, width, height, socket->locx, socket->locy);
@@ -1762,7 +1765,7 @@ static void node_draw_basis(const bContext *C,
/* Wire across the node when muted/disabled. */
if (node->flag & NODE_MUTED) {
- node_draw_mute_line(v2d, snode, node);
+ node_draw_mute_line(C, v2d, snode, node);
}
/* Body. */
@@ -1891,7 +1894,7 @@ static void node_draw_hidden(const bContext *C,
/* Wire across the node when muted/disabled. */
if (node->flag & NODE_MUTED) {
- node_draw_mute_line(v2d, snode, node);
+ node_draw_mute_line(C, v2d, snode, node);
}
/* Body. */
@@ -2202,7 +2205,7 @@ void node_draw_nodetree(const bContext *C,
LISTBASE_FOREACH (bNodeLink *, link, &ntree->links) {
if (!nodeLinkIsHidden(link)) {
- node_draw_link(&region->v2d, snode, link);
+ node_draw_link(C, &region->v2d, snode, link);
}
}
nodelink_batch_end(snode);
@@ -2387,7 +2390,7 @@ void node_draw_space(const bContext *C, ARegion *region)
GPU_line_smooth(true);
LISTBASE_FOREACH (bNodeLinkDrag *, nldrag, &snode->runtime->linkdrag) {
LISTBASE_FOREACH (LinkData *, linkdata, &nldrag->links) {
- node_draw_link(v2d, snode, (bNodeLink *)linkdata->data);
+ node_draw_link(C, v2d, snode, (bNodeLink *)linkdata->data);
}
}
GPU_line_smooth(false);