Blender V4.3
blender::ed::space_node::viewer_linking Namespace Reference

Functions

Link Viewer Operator
static bool socket_can_be_viewed (const bNode &node, const bNodeSocket &socket)
 
static bNodeSocketnode_link_viewer_get_socket (bNodeTree &ntree, bNode &viewer_node, bNodeSocket &src_socket)
 
static bool is_viewer_node (const bNode &node)
 
static bool is_viewer_socket_in_viewer (const bNodeSocket &socket)
 
static bool is_viewer_socket (const bNodeSocket &socket)
 
static int get_default_viewer_type (const bContext *C)
 
static void remove_links_to_unavailable_viewer_sockets (bNodeTree &btree, bNode &viewer_node)
 
static bNodeSocketdetermine_socket_to_view (bNode &node_to_view)
 
static void finalize_viewer_link (const bContext &C, SpaceNode &snode, bNode &viewer_node, bNodeLink &viewer_link)
 
static const bNodefind_overlapping_node (const bNodeTree &tree, const rctf &rect, const Span< const bNode * > ignored_nodes)
 
static Vector< float2get_viewer_node_position_candidates (const float2 initial, const float step_distance, const float max_distance)
 
static void position_viewer_node (bNodeTree &tree, bNode &viewer_node, const bNode &node_to_view, const ARegion &region)
 
static int view_socket (const bContext &C, SpaceNode &snode, bNodeTree &btree, bNode &bnode_to_view, bNodeSocket &bsocket_to_view)
 
static int node_link_viewer (const bContext &C, bNode &bnode_to_view, bNodeSocket *bsocket_to_view)
 

Function Documentation

◆ determine_socket_to_view()

static bNodeSocket * blender::ed::space_node::viewer_linking::determine_socket_to_view ( bNode & node_to_view)
static

◆ finalize_viewer_link()

static void blender::ed::space_node::viewer_linking::finalize_viewer_link ( const bContext & C,
SpaceNode & snode,
bNode & viewer_node,
bNodeLink & viewer_link )
static

◆ find_overlapping_node()

static const bNode * blender::ed::space_node::viewer_linking::find_overlapping_node ( const bNodeTree & tree,
const rctf & rect,
const Span< const bNode * > ignored_nodes )
static

Definition at line 595 of file node_relationships.cc.

References BLI_rctf_isect(), blender::Span< T >::contains(), node, and tree.

Referenced by position_viewer_node().

◆ get_default_viewer_type()

static int blender::ed::space_node::viewer_linking::get_default_viewer_type ( const bContext * C)
static

◆ get_viewer_node_position_candidates()

static Vector< float2 > blender::ed::space_node::viewer_linking::get_viewer_node_position_candidates ( const float2 initial,
const float step_distance,
const float max_distance )
static

Builds a list of possible locations for the viewer node that follows some search pattern where positions closer to the initial position come first.

Definition at line 617 of file node_relationships.cc.

References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), arc_length(), ceilf, float, and M_PI.

Referenced by position_viewer_node().

◆ is_viewer_node()

static bool blender::ed::space_node::viewer_linking::is_viewer_node ( const bNode & node)
static

Definition at line 462 of file node_relationships.cc.

References ELEM.

Referenced by is_viewer_socket(), is_viewer_socket_in_viewer(), and view_socket().

◆ is_viewer_socket()

static bool blender::ed::space_node::viewer_linking::is_viewer_socket ( const bNodeSocket & socket)
static

Definition at line 477 of file node_relationships.cc.

References is_viewer_node(), and is_viewer_socket_in_viewer().

Referenced by determine_socket_to_view(), and view_socket().

◆ is_viewer_socket_in_viewer()

static bool blender::ed::space_node::viewer_linking::is_viewer_socket_in_viewer ( const bNodeSocket & socket)
static

Definition at line 467 of file node_relationships.cc.

References BLI_assert, and is_viewer_node().

Referenced by is_viewer_socket().

◆ node_link_viewer()

static int blender::ed::space_node::viewer_linking::node_link_viewer ( const bContext & C,
bNode & bnode_to_view,
bNodeSocket * bsocket_to_view )
static

◆ node_link_viewer_get_socket()

static bNodeSocket * blender::ed::space_node::viewer_linking::node_link_viewer_get_socket ( bNodeTree & ntree,
bNode & viewer_node,
bNodeSocket & src_socket )
static

◆ position_viewer_node()

static void blender::ed::space_node::viewer_linking::position_viewer_node ( bNodeTree & tree,
bNode & viewer_node,
const bNode & node_to_view,
const ARegion & region )
static

Positions the viewer node so that it is slightly to the right and top of the node to view. The algorithm tries to avoid moving the viewer to a place where it would overlap with other nodes. For that it iterates over many possible locations with increasing distance to the node to view.

Definition at line 644 of file node_relationships.cc.

References BLI_rctf_inside_rctf(), BLI_rctf_pad(), BLI_rctf_size_x(), BLI_rctf_size_y(), dist_seg_seg_v2(), find_overlapping_node(), get_viewer_node_position_candidates(), bNode::locx, bNode::locy, blender::ed::space_node::node_to_view(), bNode::parent, bNode::runtime, tree, blender::ed::space_node::tree_draw_order_update(), bNode::ui_order, UI_SCALE_FAC, UI_view2d_region_to_view_rctf(), rctf::xmax, rctf::xmin, rctf::ymax, and rctf::ymin.

Referenced by view_socket().

◆ remove_links_to_unavailable_viewer_sockets()

static void blender::ed::space_node::viewer_linking::remove_links_to_unavailable_viewer_sockets ( bNodeTree & btree,
bNode & viewer_node )
static

◆ socket_can_be_viewed()

static bool blender::ed::space_node::viewer_linking::socket_can_be_viewed ( const bNode & node,
const bNodeSocket & socket )
static

◆ view_socket()