diff options
Diffstat (limited to 'source/blender/editors/space_node')
-rw-r--r-- | source/blender/editors/space_node/CMakeLists.txt | 1 | ||||
-rw-r--r-- | source/blender/editors/space_node/drawnode.c | 18 | ||||
-rw-r--r-- | source/blender/editors/space_node/node_add.c | 3 | ||||
-rw-r--r-- | source/blender/editors/space_node/node_draw.c | 15 | ||||
-rw-r--r-- | source/blender/editors/space_node/node_select.c | 12 | ||||
-rw-r--r-- | source/blender/editors/space_node/node_templates.c | 28 | ||||
-rw-r--r-- | source/blender/editors/space_node/space_node.c | 10 |
7 files changed, 52 insertions, 35 deletions
diff --git a/source/blender/editors/space_node/CMakeLists.txt b/source/blender/editors/space_node/CMakeLists.txt index 30c7b5de2f1..6b0460ce5cd 100644 --- a/source/blender/editors/space_node/CMakeLists.txt +++ b/source/blender/editors/space_node/CMakeLists.txt @@ -32,7 +32,6 @@ set(INC ../../windowmanager ../../compositor ../../../../intern/guardedalloc - ../../../../intern/opennl/extern ) set(INC_SYS diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c index 50a4b515490..da599f8608d 100644 --- a/source/blender/editors/space_node/drawnode.c +++ b/source/blender/editors/space_node/drawnode.c @@ -406,7 +406,7 @@ static void node_draw_frame_label(bNodeTree *ntree, bNode *node, const float asp /* title color */ UI_ThemeColorBlendShade(TH_TEXT, color_id, 0.8f, 10); - width = BLF_width(fontid, label); + width = BLF_width(fontid, label, sizeof(label)); ascender = BLF_ascender(fontid); /* 'x' doesn't need aspect correction */ @@ -753,6 +753,11 @@ static void node_shader_buts_geometry(uiLayout *layout, bContext *C, PointerRNA } } +static void node_shader_buts_lamp(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) +{ + uiItemR(layout, ptr, "lamp_object", 0, IFACE_("Lamp Object"), ICON_NONE); +} + static void node_shader_buts_attribute(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) { uiItemR(layout, ptr, "attribute_name", 0, IFACE_("Name"), ICON_NONE); @@ -1002,6 +1007,9 @@ static void node_shader_set_butfunc(bNodeType *ntype) case SH_NODE_GEOMETRY: ntype->draw_buttons = node_shader_buts_geometry; break; + case SH_NODE_LAMP: + ntype->draw_buttons = node_shader_buts_lamp; + break; case SH_NODE_ATTRIBUTE: ntype->draw_buttons = node_shader_buts_attribute; break; @@ -1635,7 +1643,7 @@ static void node_composit_buts_file_output_ex(uiLayout *layout, bContext *C, Poi else { col = uiLayoutColumn(layout, TRUE); - uiItemL(col, IFACE_("File Path:"), ICON_NONE); + uiItemL(col, IFACE_("File Subpath:"), ICON_NONE); row = uiLayoutRow(col, FALSE); uiItemR(row, &active_input_ptr, "path", 0, "", ICON_NONE); uiItemFullO(row, "NODE_OT_output_file_remove_active_socket", "", @@ -2002,7 +2010,7 @@ static void node_composit_backdrop_boxmask(SpaceNode *snode, ImBuf *backdrop, bN const float backdropWidth = backdrop->x; const float backdropHeight = backdrop->y; const float aspect = backdropWidth / backdropHeight; - const float rad = DEG2RADF(-boxmask->rotation); + const float rad = -boxmask->rotation; const float cosine = cosf(rad); const float sine = sinf(rad); const float halveBoxWidth = backdropWidth * (boxmask->width / 2.0f); @@ -2040,7 +2048,7 @@ static void node_composit_backdrop_ellipsemask(SpaceNode *snode, ImBuf *backdrop const float backdropWidth = backdrop->x; const float backdropHeight = backdrop->y; const float aspect = backdropWidth / backdropHeight; - const float rad = DEG2RADF(-ellipsemask->rotation); + const float rad = -ellipsemask->rotation; const float cosine = cosf(rad); const float sine = sinf(rad); const float halveBoxWidth = backdropWidth * (ellipsemask->width / 2.0f); @@ -3115,7 +3123,7 @@ int node_link_bezier_points(View2D *v2d, SpaceNode *snode, bNodeLink *link, floa toreroute = 0; } - dist = UI_GetThemeValue(TH_NODE_CURVING) * 0.10f * ABS(vec[0][0] - vec[3][0]); + dist = UI_GetThemeValue(TH_NODE_CURVING) * 0.10f * fabsf(vec[0][0] - vec[3][0]); deltax = vec[3][0] - vec[0][0]; deltay = vec[3][1] - vec[0][1]; /* check direction later, for top sockets */ diff --git a/source/blender/editors/space_node/node_add.c b/source/blender/editors/space_node/node_add.c index 00769975893..4b1a06fa923 100644 --- a/source/blender/editors/space_node/node_add.c +++ b/source/blender/editors/space_node/node_add.c @@ -90,9 +90,6 @@ bNode *node_add_node(const bContext *C, const char *idname, int type, float locx ntreeUpdateTree(bmain, snode->edittree); ED_node_set_active(bmain, snode->edittree, node); - if (snode->flag & SNODE_USE_HIDDEN_PREVIEW) - node->flag &= ~NODE_PREVIEW; - snode_update(snode, node); if (snode->nodetree->type == NTREE_TEXTURE) { diff --git a/source/blender/editors/space_node/node_draw.c b/source/blender/editors/space_node/node_draw.c index 6f2f8dee105..5ca853e6020 100644 --- a/source/blender/editors/space_node/node_draw.c +++ b/source/blender/editors/space_node/node_draw.c @@ -562,16 +562,21 @@ int node_tweak_area_default(bNode *node, int x, int y) int node_get_colorid(bNode *node) { switch (node->typeinfo->nclass) { - case NODE_CLASS_INPUT: return TH_NODE_IN_OUT; - case NODE_CLASS_OUTPUT: return (node->flag & NODE_DO_OUTPUT) ? TH_NODE_IN_OUT : TH_NODE; + case NODE_CLASS_INPUT: return TH_NODE_INPUT; + case NODE_CLASS_OUTPUT: return (node->flag & NODE_DO_OUTPUT) ? TH_NODE_OUTPUT : TH_NODE; case NODE_CLASS_CONVERTOR: return TH_NODE_CONVERTOR; - case NODE_CLASS_OP_COLOR: - case NODE_CLASS_OP_VECTOR: - case NODE_CLASS_OP_FILTER: return TH_NODE_OPERATOR; + case NODE_CLASS_OP_COLOR: return TH_NODE_COLOR; + case NODE_CLASS_OP_VECTOR: return TH_NODE_VECTOR; + case NODE_CLASS_OP_FILTER: return TH_NODE_FILTER; case NODE_CLASS_GROUP: return TH_NODE_GROUP; case NODE_CLASS_INTERFACE: return TH_NODE_INTERFACE; case NODE_CLASS_MATTE: return TH_NODE_MATTE; case NODE_CLASS_DISTORT: return TH_NODE_DISTORT; + case NODE_CLASS_TEXTURE: return TH_NODE_TEXTURE; + case NODE_CLASS_SHADER: return TH_NODE_SHADER; + case NODE_CLASS_SCRIPT: return TH_NODE_SCRIPT; + case NODE_CLASS_PATTERN: return TH_NODE_PATTERN; + case NODE_CLASS_LAYOUT: return TH_NODE_LAYOUT; default: return TH_NODE; } } diff --git a/source/blender/editors/space_node/node_select.c b/source/blender/editors/space_node/node_select.c index 2e3e747618b..64326bd7993 100644 --- a/source/blender/editors/space_node/node_select.c +++ b/source/blender/editors/space_node/node_select.c @@ -448,7 +448,7 @@ static int node_borderselect_exec(bContext *C, wmOperator *op) rcti rect; rctf rectf; int gesture_mode = RNA_int_get(op->ptr, "gesture_mode"); - int extend = RNA_boolean_get(op->ptr, "extend"); + const bool extend = RNA_boolean_get(op->ptr, "extend"); WM_operator_properties_border_to_rcti(op, &rect); @@ -573,7 +573,7 @@ void NODE_OT_select_circle(wmOperatorType *ot) /* ****** Lasso Select ****** */ -static int do_lasso_select_node(bContext *C, const int mcords[][2], short moves, short select) +static bool do_lasso_select_node(bContext *C, const int mcords[][2], short moves, short select) { SpaceNode *snode = CTX_wm_space_node(C); bNode *node; @@ -581,7 +581,7 @@ static int do_lasso_select_node(bContext *C, const int mcords[][2], short moves, ARegion *ar = CTX_wm_region(C); rcti rect; - int change = FALSE; + bool changed = false; /* get rectangle from operator */ BLI_lasso_boundbox(&rect, mcords, moves); @@ -601,15 +601,15 @@ static int do_lasso_select_node(bContext *C, const int mcords[][2], short moves, BLI_lasso_is_point_inside(mcords, moves, screen_co[0], screen_co[1], INT_MAX)) { nodeSetSelected(node, select); - change = TRUE; + changed = true; } } - if (change) { + if (changed) { WM_event_add_notifier(C, NC_NODE | NA_SELECTED, NULL); } - return change; + return changed; } static int node_lasso_select_exec(bContext *C, wmOperator *op) diff --git a/source/blender/editors/space_node/node_templates.c b/source/blender/editors/space_node/node_templates.c index a67a8791a64..b544e753965 100644 --- a/source/blender/editors/space_node/node_templates.c +++ b/source/blender/editors/space_node/node_templates.c @@ -436,6 +436,7 @@ static void ui_node_menu_column(NodeLinkArg *arg, int nclass, const char *cname) char name[UI_MAX_NAME_STR]; const char *cur_node_name = NULL; int i, num = 0; + int icon = ICON_NONE; if (compatibility && !(ntype->compatibility & compatibility)) continue; @@ -461,7 +462,6 @@ static void ui_node_menu_column(NodeLinkArg *arg, int nclass, const char *cname) uiItemL(column, IFACE_(cname), ICON_NODE); but = block->buttons.last; - but->flag = UI_TEXT_LEFT; first = 0; } @@ -469,18 +469,21 @@ static void ui_node_menu_column(NodeLinkArg *arg, int nclass, const char *cname) if (num > 1) { if (!cur_node_name || !STREQ(cur_node_name, items[i].node_name)) { cur_node_name = items[i].node_name; - uiItemL(column, IFACE_(cur_node_name), ICON_NODE); - but = block->buttons.last; - but->flag = UI_TEXT_LEFT; + /* XXX Do not use uiItemL here, it would add an empty icon as we are in a menu! */ + uiDefBut(block, LABEL, 0, IFACE_(cur_node_name), 0, 0, UI_UNIT_X * 4, UI_UNIT_Y, + NULL, 0.0, 0.0, 0.0, 0.0, ""); } - - BLI_snprintf(name, UI_MAX_NAME_STR, " %s", IFACE_(items[i].socket_name)); + + BLI_snprintf(name, UI_MAX_NAME_STR, "%s", IFACE_(items[i].socket_name)); + icon = ICON_BLANK1; } - else + else { BLI_strncpy(name, IFACE_(items[i].node_name), UI_MAX_NAME_STR); + icon = ICON_NONE; + } - but = uiDefBut(block, BUT, 0, name, 0, 0, UI_UNIT_X * 4, UI_UNIT_Y, - NULL, 0.0, 0.0, 0.0, 0.0, TIP_("Add node to input")); + but = uiDefIconTextBut(block, BUT, 0, icon, name, 0, 0, UI_UNIT_X * 4, UI_UNIT_Y, + NULL, 0.0, 0.0, 0.0, 0.0, TIP_("Add node to input")); argN = MEM_dupallocN(arg); argN->item = items[i]; @@ -528,7 +531,7 @@ static void ui_template_node_link_menu(bContext *C, uiLayout *layout, void *but_ if (sock->link) { uiItemL(column, IFACE_("Link"), ICON_NONE); but = block->buttons.last; - but->flag = UI_TEXT_LEFT; + but->drawflag = UI_BUT_TEXT_LEFT; but = uiDefBut(block, BUT, 0, IFACE_("Remove"), 0, 0, UI_UNIT_X * 4, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, TIP_("Remove nodes connected to the input")); @@ -564,7 +567,8 @@ void uiTemplateNodeLink(uiLayout *layout, bNodeTree *ntree, bNode *node, bNodeSo but = uiDefIconMenuBut(block, ui_template_node_link_menu, NULL, ICON_NONE, 0, 0, UI_UNIT_X, UI_UNIT_Y, ""); but->type = MENU; - but->flag |= UI_TEXT_LEFT | UI_BUT_NODE_LINK; + but->drawflag |= UI_BUT_TEXT_LEFT; + but->flag |= UI_BUT_NODE_LINK; but->poin = (char *)but; but->func_argN = arg; @@ -654,7 +658,7 @@ static void ui_node_draw_input(uiLayout *layout, bContext *C, bNodeTree *ntree, uiItemL(row, label, ICON_NONE); bt = block->buttons.last; - bt->flag = UI_TEXT_LEFT; + bt->drawflag = UI_BUT_TEXT_LEFT; if (dependency_loop) { row = uiLayoutRow(split, FALSE); diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c index 6ae8a1f94b1..2fe63c4b895 100644 --- a/source/blender/editors/space_node/space_node.c +++ b/source/blender/editors/space_node/space_node.c @@ -555,11 +555,15 @@ static SpaceLink *node_duplicate(SpaceLink *sl) SpaceNode *snode = (SpaceNode *)sl; SpaceNode *snoden = MEM_dupallocN(snode); + BLI_duplicatelist(&snoden->treepath, &snode->treepath); + /* clear or remove stuff from old */ - snoden->nodetree = NULL; snoden->linkdrag.first = snoden->linkdrag.last = NULL; - - BLI_duplicatelist(&snoden->treepath, &snode->treepath); + + /* Note: no need to set node tree user counts, + * the editor only keeps at least 1 (id_us_ensure_real), + * which is already done by the original SpaceNode. + */ return (SpaceLink *)snoden; } |