Blender V5.0
blender::ed::space_node::viewer_linking Namespace Reference

Functions

Link Viewer Operator
static bool socket_can_be_viewed (const bNodeSocket &socket)
static void ensure_geometry_nodes_viewer_starts_with_geometry_socket (bNodeTree &tree, bNode &viewer_node)
static int ensure_geometry_nodes_viewer_has_non_geometry_socket (bNodeTree &ntree, bNode &viewer_node, const eNodeSocketDatatype socket_type)
static std::string get_viewer_source_name (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 (const bContext &C, bNodeTree &tree, bNode &viewer_node, const bNode &node_to_view)
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()

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

◆ ensure_geometry_nodes_viewer_has_non_geometry_socket()

int blender::ed::space_node::viewer_linking::ensure_geometry_nodes_viewer_has_non_geometry_socket ( bNodeTree & ntree,
bNode & viewer_node,
const eNodeSocketDatatype socket_type )
static

◆ ensure_geometry_nodes_viewer_starts_with_geometry_socket()

void blender::ed::space_node::viewer_linking::ensure_geometry_nodes_viewer_starts_with_geometry_socket ( bNodeTree & tree,
bNode & viewer_node )
static

◆ finalize_viewer_link()

◆ find_overlapping_node()

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 722 of file node_relationships.cc.

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

Referenced by position_viewer_node().

◆ get_default_viewer_type()

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

◆ get_viewer_node_position_candidates()

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 744 of file node_relationships.cc.

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

Referenced by position_viewer_node().

◆ get_viewer_source_name()

std::string blender::ed::space_node::viewer_linking::get_viewer_source_name ( const bNodeSocket & socket)
static

Definition at line 520 of file node_relationships.cc.

References IFACE_, bNodeSocket::name, and bNodeSocket::typeinfo.

Referenced by node_link_viewer_get_socket().

◆ is_viewer_node()

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

◆ is_viewer_socket()

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

Definition at line 585 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()

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

Definition at line 575 of file node_relationships.cc.

References BLI_assert, GEO_NODE_VIEWER, is_viewer_node(), and bNode::typeinfo.

Referenced by is_viewer_socket().

◆ node_link_viewer()

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()

◆ position_viewer_node()

void blender::ed::space_node::viewer_linking::position_viewer_node ( const bContext & C,
bNodeTree & tree,
bNode & viewer_node,
const bNode & node_to_view )
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 771 of file node_relationships.cc.

References BKE_area_find_region_type(), BLI_rctf_inside_rctf(), BLI_rctf_pad(), BLI_rctf_size_x(), BLI_rctf_size_y(), C, CTX_wm_area(), CTX_wm_region(), find_overlapping_node(), get_viewer_node_position_candidates(), bNode::location, blender::ed::space_node::node_to_view(), bNode::parent, RGN_TYPE_UI, bNode::runtime, tree, blender::ed::space_node::tree_draw_order_update(), U, bNode::ui_order, UI_SCALE_FAC, UI_view2d_region_to_view_rctf(), USER_REGION_OVERLAP, ARegion::v2d, bNode::width, ARegion::winx, ARegion::winy, rctf::xmax, rctf::xmin, rctf::ymax, and rctf::ymin.

Referenced by view_socket().

◆ remove_links_to_unavailable_viewer_sockets()

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

◆ socket_can_be_viewed()

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

Definition at line 437 of file node_relationships.cc.

References bNodeSocket::idname, and STREQ.

Referenced by determine_socket_to_view().

◆ view_socket()