diff options
author | Dorian <BD3D> | 2021-10-26 16:54:52 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2021-10-26 16:55:44 +0300 |
commit | f41d4735e99aae2a5247092b91106b1afcf52085 (patch) | |
tree | 1329d45a35208170149dea0f0f0e3bcb95acbff7 | |
parent | 567bcb93871cf7b1097db212dafb782caf502f66 (diff) |
Nodes: support transparency for link highlight color
Node links that are connected to selected nodes are highlighted
using the Wire Select theme color. Now it is possible to change the
transparency of this color to allow the actual link color to be visible
through the highlight (or to turn of the highlight entirely).
Differential Revision: https://developer.blender.org/D12973
-rw-r--r-- | source/blender/editors/space_node/drawnode.cc | 28 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_userdef.c | 2 |
2 files changed, 20 insertions, 10 deletions
diff --git a/source/blender/editors/space_node/drawnode.cc b/source/blender/editors/space_node/drawnode.cc index dfbb2132f1b..24f5decacdf 100644 --- a/source/blender/editors/space_node/drawnode.cc +++ b/source/blender/editors/space_node/drawnode.cc @@ -4329,6 +4329,25 @@ void node_draw_link_bezier(const View2D *v2d, UI_GetThemeColor4fv(th_col2, colors[2]); } + /* Highlight links connected to selected nodes. */ + const bool is_fromnode_selected = link->fromnode && link->fromnode->flag & SELECT; + const bool is_tonode_selected = link->tonode && link->tonode->flag & SELECT; + if (is_fromnode_selected || is_tonode_selected) { + float color_selected[4]; + UI_GetThemeColor4fv(TH_EDGE_SELECT, color_selected); + const float alpha = color_selected[3]; + + /* Interpolate color if highlight color is not fully transparent. */ + if (alpha != 0.0) { + if (is_fromnode_selected) { + interp_v3_v3v3(colors[1], colors[1], color_selected, alpha); + } + if (is_tonode_selected) { + interp_v3_v3v3(colors[2], colors[2], color_selected, alpha); + } + } + } + if (g_batch_link.enabled && !highlighted) { /* Add link to batch. */ nodelink_batch_add_link(snode, @@ -4402,15 +4421,6 @@ void node_draw_link(View2D *v2d, SpaceNode *snode, bNodeLink *link) else if (link->flag & NODE_LINK_MUTED) { th_col1 = th_col2 = TH_REDALERT; } - else { - /* Regular link, highlight if connected to selected node. */ - if (link->fromnode && link->fromnode->flag & SELECT) { - th_col1 = TH_EDGE_SELECT; - } - if (link->tonode && link->tonode->flag & SELECT) { - th_col2 = TH_EDGE_SELECT; - } - } } else { /* Invalid link. */ diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index d6a46cbcc82..2514a604087 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -2844,7 +2844,7 @@ static void rna_def_userdef_theme_space_node(BlenderRNA *brna) prop = RNA_def_property(srna, "wire_select", PROP_FLOAT, PROP_COLOR_GAMMA); RNA_def_property_float_sdna(prop, NULL, "edge_select"); - RNA_def_property_array(prop, 3); + RNA_def_property_array(prop, 4); RNA_def_property_ui_text(prop, "Wire Select", ""); RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); |