81 #ifdef WITH_COMPOSITOR
127 if (
id ==
nullptr ||
ntree ==
nullptr) {
170 bool do_tag_update =
true;
171 if (
node !=
nullptr) {
173 do_tag_update =
false;
203 for (
bNode *parent =
a->parent; parent; parent = parent->parent) {
239 if (!b_active && a_active) {
242 if (!b_select && (a_active || a_select)) {
259 while (k < totnodes) {
261 bNode *first_b = first_a;
265 for (
int b = 0; b < k && first_b; b++) {
266 first_b = first_b->
next;
269 if (first_b ==
nullptr) {
274 bNode *node_a = first_a;
275 bNode *node_b = first_b;
278 while (
a < k && b < k && node_b) {
280 node_a = node_a->
next;
285 node_b = node_b->
next;
296 if (first_b ==
nullptr) {
299 first_b = first_b->
next;
315 BLI_snprintf(uiblockstr,
sizeof(uiblockstr),
"node buttons %p", (
void *)
node);
364 if (
node->outputs.first) {
369 bool add_output_space =
false;
402 nsock->typeinfo->draw((
bContext *)
C, row, &sockptr, &nodeptr,
IFACE_(socket_label));
412 nsock->locy = 0.5f * (dy + buty);
419 add_output_space =
true;
422 if (add_output_space) {
433 if (
node->preview_xsize &&
node->preview_ysize) {
434 aspect = (
float)
node->preview_ysize / (
float)
node->preview_xsize;
438 node->prvr.ymax = dy;
440 if (aspect <= 1.0f) {
449 node->prvr.xmin += 0.5f * dx;
450 node->prvr.xmax -= 0.5f * dx;
456 if (
node->prvr.xmax <
node->prvr.xmin) {
459 if (
node->prvr.ymax <
node->prvr.ymin) {
490 node->typeinfo->draw_buttons(layout, (
bContext *)
C, &nodeptr);
509 float multi_input_socket_offset = 0.0f;
511 if (nsock->total_inputs > 2) {
515 dy -= multi_input_socket_offset * 0.5f;
538 nsock->typeinfo->draw((
bContext *)
C, row, &sockptr, &nodeptr,
IFACE_(socket_label));
548 nsock->locy = 0.5f * (dy + buty);
550 dy = buty - multi_input_socket_offset * 0.5;
561 node->totr.xmin = locx;
563 node->totr.ymax = locy;
580 int totin = 0, totout = 0;
599 float tot =
MAX2(totin, totout);
601 hiddenrad += 5.0f * (
float)(tot - 4);
604 node->totr.xmin = locx;
606 node->totr.ymax = locy + (hiddenrad - 0.5f *
NODE_DY);
607 node->totr.ymin =
node->totr.ymax - 2 * hiddenrad;
610 float rad = (
float)
M_PI / (1.0f + (
float)totout);
615 nsock->locx =
node->totr.xmax - hiddenrad +
sinf(rad) * hiddenrad;
616 nsock->locy =
node->totr.ymin + hiddenrad +
cosf(rad) * hiddenrad;
622 rad = drad = -(
float)
M_PI / (1.0f + (
float)totin);
626 nsock->locx =
node->totr.xmin + hiddenrad +
sinf(rad) * hiddenrad;
627 nsock->locy =
node->totr.ymin + hiddenrad +
cosf(rad) * hiddenrad;
663 switch (
node->typeinfo->nclass) {
715 #define MARKER_SHAPE_DIAMOND 0x1
716 #define MARKER_SHAPE_SQUARE 0xC
717 #define MARKER_SHAPE_CIRCLE 0x2
718 #define MARKER_SHAPE_INNER_DOT 0x10
721 const float color[4],
722 const float color_outline[4],
766 const float color_outline[4],
772 const float outline_width = 1.0f;
775 locx -
width + outline_width * 0.5f,
776 locx +
width - outline_width * 0.5f,
777 locy -
height + outline_width * 0.5f,
778 locy +
height - outline_width * 0.5f,
783 &rect, color,
nullptr, 1.0f, color_outline, outline_width,
width - outline_width * 0.5f);
789 const int socket_type,
790 float r_outline_color[4])
794 r_outline_color[3] = 0.9f;
798 r_outline_color[3] = 0.6f;
838 float outline_color[4];
864 rcti draw_rect = *rect;
865 float outline_color[4] = {0};
921 immUniform4f(
"color1", checker_dark, checker_dark, checker_dark, 1.0f);
922 immUniform4f(
"color2", checker_light, checker_light, checker_light, 1.0f);
933 float xscale = xrect / ((
float)preview->
xsize);
934 float yscale = yrect / ((
float)preview->
ysize);
938 rctf draw_rect = *prv;
939 if (xscale < yscale) {
940 float offset = 0.5f * (yrect - ((
float)preview->
ysize) * xscale);
941 draw_rect.
ymin += offset;
942 draw_rect.
ymax -= offset;
946 float offset = 0.5f * (xrect - ((
float)preview->
xsize) * yscale);
947 draw_rect.
xmin += offset;
948 draw_rect.
xmax -= offset;
984 const char *opname = (
const char *)op_argv;
1009 if (total_input_len + total_output_len == 0) {
1016 bool selected =
false;
1042 short selected_input_len = 0;
1047 if (select_all || (sock->flag &
SELECT)) {
1048 selected_input_len++;
1070 short selected_output_len = 0;
1076 if (select_all || (sock->flag &
SELECT)) {
1077 selected_output_len++;
1100 if (selected_input_len + selected_output_len > 0) {
1107 if (selected_input_len) {
1113 if (select_all || (sock->flag &
SELECT)) {
1125 if (--selected_input_len == 0) {
1132 if (selected_output_len) {
1138 if (select_all || (sock->flag &
SELECT)) {
1150 if (--selected_output_len == 0) {
1180 float outline_color[4];
1224 if (priority > highest_priority) {
1225 highest_priority = priority;
1226 highest_priority_type = warning.type;
1229 return highest_priority_type;
1235 const NodeUIStorage *node_ui_storage = *storage_pointer_alloc;
1238 std::string complete_string;
1241 complete_string += warning.message;
1244 complete_string +=
'.';
1245 complete_string +=
'\n';
1249 complete_string += warnings.
last().message;
1251 return BLI_strdupn(complete_string.c_str(), complete_string.size());
1254 #define NODE_HEADER_ICON_SIZE (0.8f * U.widget_unit)
1268 *storage_pointer_alloc = node_ui_storage;
1304 node->block =
nullptr;
1340 float iconofs = rct->
xmax - 0.35f *
U.widget_unit;
1344 iconofs -= iconbutw;
1370 iconofs -= iconbutw;
1390 iconofs -= iconbutw;
1395 node->typeinfo->ui_icon,
1410 iconofs -= iconbutw;
1426 "Show this node's geometry output in the spreadsheet");
1443 int but_size =
U.widget_unit * 0.8f;
1450 rct->
xmin + 0.35f *
U.widget_unit,
1477 (
short)(iconofs - rct->
xmin - (18.0f *
U.dpi_fac)),
1540 if (preview && (preview->
xsize && preview->
ysize)) {
1549 node->block =
nullptr;
1618 int but_size =
U.widget_unit * 0.8f;
1625 rct->
xmin + 0.35f *
U.widget_unit,
1626 centy - but_size / 2,
1701 node->block =
nullptr;
1706 if (directions == 0) {
1737 int dir =
node->typeinfo->resize_area_func(
node, cursor[0], cursor[1]);
1764 if (
node->typeinfo->draw_nodetype_prepare) {
1818 if (
node->typeinfo->draw_nodetype) {
1819 node->typeinfo->draw_nodetype(
C, region, snode,
ntree,
node, key);
1823 #define USE_DRAW_TOT_UPDATE
1831 if (
ntree ==
nullptr) {
1835 #ifdef USE_DRAW_TOT_UPDATE
1843 #ifdef USE_DRAW_TOT_UPDATE
1978 static const int max_depth = 2;
2001 while (path->
prev && depth < max_depth) {
2007 for (
int curdepth = depth; curdepth > 0; path = path->
next, curdepth--) {
2034 float original_proj[4][4];
typedef float(TangentPoint)[2]
void immDrawPixelsTex(IMMDrawPixelsTexState *state, float x, float y, int img_w, int img_h, eGPUTextureFormat gpu_format, bool use_filter, void *rect, float xzoom, float yzoom, const float color[4])
IMMDrawPixelsTexState immDrawPixelsTexSetup(int builtin)
PointerRNA CTX_data_pointer_get(const bContext *C, const char *member)
struct SpaceNode * CTX_wm_space_node(const bContext *C)
struct ARegion * CTX_wm_region(const bContext *C)
struct wmWindow * CTX_wm_window(const bContext *C)
void id_us_ensure_real(struct ID *id)
void nodeFromView(const struct bNode *node, float x, float y, float *rx, float *ry)
#define NODE_CLASS_OUTPUT
struct bNodeTree * ntreeFromID(struct ID *id)
void ntreeTagUsedSockets(struct bNodeTree *ntree)
bool nodeLinkIsHidden(const struct bNodeLink *link)
#define NODE_CLASS_INTERFACE
bool nodeTypeUndefined(struct bNode *node)
bool ntreeHasTree(const struct bNodeTree *ntree, const struct bNodeTree *lookup)
#define NODE_CLASS_PATTERN
#define NODE_CLASS_CONVERTOR
int nodeSocketIsHidden(const struct bNodeSocket *sock)
#define NODE_CLASS_GEOMETRY
void nodeLabel(struct bNodeTree *ntree, struct bNode *node, char *label, int maxlen)
#define NODE_CLASS_DISTORT
void ntreeTexCheckCyclics(struct bNodeTree *ntree)
#define FOREACH_NODETREE_END
#define NODE_CLASS_OP_VECTOR
#define NODE_CLASS_LAYOUT
#define NODE_RESIZE_BOTTOM
#define FOREACH_NODETREE_BEGIN(bmain, _nodetree, _id)
#define NODE_CLASS_OP_COLOR
#define NODE_CLASS_OP_FILTER
const bNodeInstanceKey NODE_INSTANCE_KEY_NONE
#define NODE_CLASS_ATTRIBUTE
#define NODE_CLASS_TEXTURE
void nodeToView(const struct bNode *node, float x, float y, float *rx, float *ry)
#define NODE_CLASS_SHADER
void * BKE_node_instance_hash_lookup(bNodeInstanceHash *hash, bNodeInstanceKey key)
#define NODE_RESIZE_RIGHT
const char * nodeSocketLabel(const struct bNodeSocket *sock)
bNodeInstanceKey BKE_node_instance_key(bNodeInstanceKey parent_key, const struct bNodeTree *ntree, const struct bNode *node)
#define NODE_CLASS_SCRIPT
const NodeUIStorage * BKE_node_tree_ui_storage_get_from_context(const bContext *C, const bNodeTree &ntree, const bNode &node)
General operations, lookup, etc. for blender objects.
void BLF_draw_default(float x, float y, float z, const char *str, size_t len) ATTR_NONNULL()
#define LISTBASE_FOREACH(type, var, list)
#define LISTBASE_FOREACH_BACKWARD(type, var, list)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_insertlinkbefore(struct ListBase *listbase, void *vnextlink, void *vnewlink) ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int round_fl_to_int(float a)
MINLINE float max_ff(float a, float b)
MINLINE int min_ii(int a, int b)
MINLINE float min_ff(float a, float b)
MINLINE void rgba_float_args_set(float col[4], const float r, const float g, const float b, const float a)
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void copy_v4_fl(float r[4], float f)
bool BLI_rctf_is_empty(const struct rctf *rect)
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
bool BLI_rctf_isect_pt(const struct rctf *rect, const float x, const float y)
BLI_INLINE float BLI_rctf_cent_y(const struct rctf *rct)
bool BLI_rctf_isect(const struct rctf *src1, const struct rctf *src2, struct rctf *dest)
void BLI_rcti_resize(struct rcti *rect, int x, int y)
BLI_INLINE int BLI_rcti_cent_y(const struct rcti *rct)
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
BLI_INLINE float BLI_rctf_size_y(const struct rctf *rct)
BLI_INLINE int BLI_rcti_cent_x(const struct rcti *rct)
void BLI_rctf_union(struct rctf *rct1, const struct rctf *rct2)
void BLI_rctf_init_minmax(struct rctf *rect)
char * BLI_strdupn(const char *str, const size_t len) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
void DEG_id_tag_update(struct ID *id, int flag)
#define NODE_ACTIVE_PREVIEW
#define NODE_CUSTOM_COLOR
@ SOCK_DISPLAY_SHAPE_CIRCLE_DOT
@ SOCK_DISPLAY_SHAPE_CIRCLE
@ SOCK_DISPLAY_SHAPE_SQUARE_DOT
@ SOCK_DISPLAY_SHAPE_SQUARE
@ SOCK_DISPLAY_SHAPE_DIAMOND
@ SOCK_DISPLAY_SHAPE_DIAMOND_DOT
void ED_node_tree_path_get_fixedbuf(struct SpaceNode *snode, char *value, int max_length)
#define REGION_DRAW_POST_VIEW
void ED_region_draw_cb_draw(const struct bContext *, struct ARegion *, int)
#define REGION_DRAW_PRE_VIEW
NSNotificationCenter * center
struct GPUFrameBuffer GPUFrameBuffer
void GPU_framebuffer_bind_no_srgb(GPUFrameBuffer *fb)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei width
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei height
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
void GPU_matrix_pop(void)
void GPU_matrix_push(void)
#define GPU_matrix_projection_get(x)
#define GPU_matrix_projection_set(x)
void GPU_matrix_identity_set(void)
@ GPU_SHADER_2D_UNIFORM_COLOR
@ GPU_SHADER_KEYFRAME_DIAMOND
@ GPU_SHADER_2D_IMAGE_COLOR
void GPU_program_point_size(bool enable)
void GPU_blend(eGPUBlend blend)
void GPU_scissor_test(bool enable)
void GPU_line_width(float width)
void GPU_line_smooth(bool enable)
eGPUBlend GPU_blend_get(void)
void GPU_depth_test(eGPUDepthTest test)
struct GPUFrameBuffer * GPU_viewport_framebuffer_overlay_get(GPUViewport *viewport)
Read Guarded memory(de)allocation.
#define UI_ALPHA_CHECKER_LIGHT
void uiLayoutSetActive(uiLayout *layout, bool active)
void UI_but_func_tooltip_set(uiBut *but, uiButToolTipFunc func, void *argN)
const struct uiStyle * UI_style_get_dpi(void)
uiBut * uiDefIconBut(uiBlock *block, int type, int retval, int icon, int x, int y, short width, short height, void *poin, float min, float max, float a1, float a2, const char *tip)
void UI_draw_icon_tri(float x, float y, char dir, const float[4])
void UI_draw_roundbox_4fv(const struct rctf *rect, bool filled, float rad, const float col[4])
uiBut * uiDefBut(uiBlock *block, int type, int retval, const char *str, int x, int y, short width, short height, void *poin, float min, float max, float a1, float a2, const char *tip)
#define UI_ALPHA_CHECKER_DARK
void UI_draw_roundbox_3fv_alpha(const struct rctf *rect, bool filled, float rad, const float col[3], float alpha)
void uiLayoutSetAlignment(uiLayout *layout, char alignment)
void UI_draw_roundbox_corner_set(int type)
uiLayout * uiLayoutRow(uiLayout *layout, bool align)
void UI_block_end(const struct bContext *C, uiBlock *block)
void UI_block_emboss_set(uiBlock *block, eUIEmbossType emboss)
void UI_block_draw(const struct bContext *C, struct uiBlock *block)
uiLayout * UI_block_layout(uiBlock *block, int dir, int type, int x, int y, int size, int em, int padding, const struct uiStyle *style)
void UI_but_func_set(uiBut *but, uiButHandleFunc func, void *arg1, void *arg2)
void UI_draw_roundbox_aa(const struct rctf *rect, bool filled, float rad, const float color[4])
void uiLayoutSetContextPointer(uiLayout *layout, const char *name, struct PointerRNA *ptr)
uiBlock * UI_block_begin(const struct bContext *C, struct ARegion *region, const char *name, eUIEmbossType emboss)
void UI_draw_roundbox_4fv_ex(const struct rctf *rect, const float inner1[4], const float inner2[4], float shade_dir, const float outline[4], float outline_width, float rad)
void UI_block_layout_resolve(uiBlock *block, int *r_x, int *r_y)
void UI_block_flag_enable(uiBlock *block, int flag)
void UI_but_flag_enable(uiBut *but, int flag)
void UI_block_bounds_set_explicit(uiBlock *block, int minx, int miny, int maxx, int maxy)
void UI_block_align_end(uiBlock *block)
void UI_GetThemeColor3fv(int colorid, float col[3])
int UI_GetThemeValueType(int colorid, int spacetype)
void UI_GetThemeColorBlendShade4fv(int colorid1, int colorid2, float fac, int offset, float col[4])
void UI_ThemeClearColor(int colorid)
void UI_GetThemeColorShadeAlpha4fv(int colorid, int coloffset, int alphaoffset, float col[4])
void UI_GetThemeColor4fv(int colorid, float col[4])
void UI_FontThemeColor(int fontid, int colorid)
void UI_view2d_center_set(struct View2D *v2d, float x, float y)
void UI_view2d_scale_get(const struct View2D *v2d, float *r_x, float *r_y)
void UI_view2d_view_restore(const struct bContext *C)
void UI_view2d_multi_grid_draw(const struct View2D *v2d, int colorid, float step, int level_size, int totlevels)
void UI_view2d_view_ortho(const struct View2D *v2d)
void UI_view2d_region_to_view(const struct View2D *v2d, float x, float y, float *r_view_x, float *r_view_y) ATTR_NONNULL()
void UI_view2d_scrollers_draw(struct View2D *v2d, const struct rcti *mask_custom)
void UI_view2d_center_get(const struct View2D *v2d, float *r_x, float *r_y)
@ WM_GIZMOMAP_DRAWSTEP_2D
void ED_annotation_draw_view2d(const bContext *C, bool onlyv2d)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Value lookup_default(const Key &key, const Value &default_value) const
Value & lookup_or_add(const Key &key, const Value &value)
constexpr const T & last() const
constexpr Span drop_back(int64_t n) const
static CCL_NAMESPACE_BEGIN const double alpha
void node_draw_link(View2D *v2d, SpaceNode *snode, bNodeLink *link)
void node_draw_link_bezier(const View2D *v2d, const SpaceNode *snode, const bNodeLink *link, int th_col1, int th_col2, int th_col3)
void nodelink_batch_start(SpaceNode *UNUSED(snode))
void nodelink_batch_end(SpaceNode *snode)
void draw_nodespace_back_pix(const bContext *C, ARegion *region, SpaceNode *snode, bNodeInstanceKey parent_key)
void *(* MEM_mallocN)(size_t len, const char *str)
#define NODE_HEADER_ICON_SIZE
#define MARKER_SHAPE_SQUARE
static NodeWarningType node_error_highest_priority(Span< NodeWarning > warnings)
static void count_mutli_input_socket_links(bNodeTree *ntree, SpaceNode *snode)
#define MARKER_SHAPE_DIAMOND
void node_from_view(const bNode *node, float x, float y, float *rx, float *ry)
static void draw_group_overlay(const bContext *C, ARegion *region)
static int node_error_type_to_icon(const NodeWarningType type)
float ED_node_grid_size(void)
static void snode_setup_v2d(SpaceNode *snode, ARegion *region, const float center[2])
#define MARKER_SHAPE_INNER_DOT
static void draw_nodetree(const bContext *C, ARegion *region, bNodeTree *ntree, bNodeInstanceKey parent_key)
static void node_draw_preview_background(rctf *rect)
void node_set_cursor(wmWindow *win, SpaceNode *snode, float cursor[2])
static void node_add_error_message_button(const bContext *C, bNodeTree &ntree, bNode &node, const rctf &rect, float &icon_offset)
static void node_socket_draw(const bNodeSocket *sock, const float color[4], const float color_outline[4], float size, int locx, int locy, uint pos_id, uint col_id, uint shape_id, uint size_id, uint outline_col_id)
static void node_draw_preview(bNodePreview *preview, rctf *prv)
void node_update_nodetree(const bContext *C, bNodeTree *ntree)
void node_draw_default(const bContext *C, ARegion *region, SpaceNode *snode, bNodeTree *ntree, bNode *node, bNodeInstanceKey key)
static void node_draw_basis(const bContext *C, const View2D *v2d, const SpaceNode *snode, bNodeTree *ntree, bNode *node, bNodeInstanceKey key)
int node_get_resize_cursor(int directions)
void node_draw_nodetree(const bContext *C, ARegion *region, SpaceNode *snode, bNodeTree *ntree, bNodeInstanceKey parent_key)
int node_get_colorid(bNode *node)
void node_socket_color_get(bContext *C, bNodeTree *ntree, PointerRNA *node_ptr, bNodeSocket *sock, float r_color[4])
static char * node_errors_tooltip_fn(bContext *UNUSED(C), void *argN, const char *UNUSED(tip))
static void node_socket_draw_nested(const bContext *C, bNodeTree *ntree, PointerRNA *node_ptr, bNodeSocket *sock, uint pos_id, uint col_id, uint shape_id, uint size_id, uint outline_col_id, float size, bool selected)
void node_to_view(const bNode *node, float x, float y, float *rx, float *ry)
void ED_node_tag_update_nodetree(Main *bmain, bNodeTree *ntree, bNode *node)
void ED_node_socket_draw(bNodeSocket *sock, const rcti *rect, const float color[4], float scale)
static void node_toggle_button_cb(struct bContext *C, void *node_argv, void *op_argv)
void ui_draw_dropshadow(const rctf *rct, float radius, float aspect, float alpha, int select)
static void node_draw(const bContext *C, ARegion *region, SpaceNode *snode, bNodeTree *ntree, bNode *node, bNodeInstanceKey key)
static bool compare_nodes(const bNode *a, const bNode *b)
static uint8_t node_error_type_priority(const NodeWarningType type)
static void node_draw_mute_line(const View2D *v2d, const SpaceNode *snode, const bNode *node)
static void node_update_basis(const bContext *C, bNodeTree *ntree, bNode *node)
static const float virtual_node_socket_outline_color[4]
int node_tweak_area_default(bNode *node, int x, int y)
void node_draw_sockets(const View2D *v2d, const bContext *C, bNodeTree *ntree, bNode *node, bool draw_outputs, bool select_all)
static void node_draw_hidden(const bContext *C, const View2D *v2d, const SpaceNode *snode, bNodeTree *ntree, bNode *node, bNodeInstanceKey UNUSED(key))
static void node_uiblocks_init(const bContext *C, bNodeTree *ntree)
static void node_socket_draw_multi_input(const float color[4], const float color_outline[4], const float width, const float height, const int locx, const int locy)
void ED_node_tag_update_id(ID *id)
static void node_socket_outline_color_get(const bool selected, const int socket_type, float r_outline_color[4])
void node_draw_shadow(const SpaceNode *snode, const bNode *node, float radius, float alpha)
void node_to_updated_rect(const bNode *node, rctf *r_rect)
void node_draw_space(const bContext *C, ARegion *region)
static void node_update(const bContext *C, bNodeTree *ntree, bNode *node)
static void node_update_hidden(bNode *node)
#define MARKER_SHAPE_CIRCLE
int node_select_area_default(bNode *node, int x, int y)
static bNodeTree * node_tree_from_ID(ID *id)
void ED_node_sort(bNodeTree *ntree)
void ED_node_tree_update(const bContext *C)
void node_update_default(const bContext *C, bNodeTree *ntree, bNode *node)
static void draw_tree_path(SpaceNode *snode)
void snode_set_context(const bContext *C)
float node_socket_calculate_height(const bNodeSocket *socket)
int node_find_indicated_socket(SpaceNode *snode, bNode **nodep, bNodeSocket **sockp, const float cursor[2], int in_out)
#define NODE_MULTI_INPUT_LINK_GAP
bool node_connected_to_output(struct Main *bmain, struct bNodeTree *ntree, struct bNode *node)
void node_select_single(struct bContext *C, struct bNode *node)
bool RNA_struct_is_a(const StructRNA *type, const StructRNA *srna)
void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
struct wmGizmoMap * gizmo_map
blender::Vector< NodeWarning > warnings
SpaceNode_Runtime * runtime
struct bNodeTree * edittree
struct bNodeTree * nodetree
void(* draw_color)(struct bContext *C, struct PointerRNA *ptr, struct PointerRNA *node_ptr, float *r_color)
struct bNodeSocketType * typeinfo
struct bNodeTree * nodetree
struct bNodeTreePath * next
struct bNodeTreePath * prev
bNodeInstanceKey parent_key
struct wmEvent * eventstate
__forceinline const avxb select(const avxb &m, const avxb &t, const avxb &f)
void WM_cursor_set(wmWindow *win, int curs)
GPUViewport * WM_draw_region_get_viewport(ARegion *region)
void WM_main_add_notifier(unsigned int type, void *reference)
int WM_operator_name_call(bContext *C, const char *opstring, short context, PointerRNA *properties)
void WM_gizmomap_draw(wmGizmoMap *gzmap, const bContext *C, const eWM_GizmoFlagMapDrawStep drawstep)
void wmOrtho2_pixelspace(const float x, const float y)