Changeset View
Changeset View
Standalone View
Standalone View
source/blender/nodes/composite/nodes/node_composite_mask.cc
| Show All 17 Lines | |||||
| */ | */ | ||||
| /** \file | /** \file | ||||
| * \ingroup cmpnodes | * \ingroup cmpnodes | ||||
| */ | */ | ||||
| #include "DNA_mask_types.h" | #include "DNA_mask_types.h" | ||||
| #include "UI_interface.h" | |||||
| #include "UI_resources.h" | |||||
| #include "node_composite_util.hh" | #include "node_composite_util.hh" | ||||
| /* **************** Mask ******************** */ | /* **************** Mask ******************** */ | ||||
| namespace blender::nodes { | namespace blender::nodes { | ||||
| static void cmp_node_mask_declare(NodeDeclarationBuilder &b) | static void cmp_node_mask_declare(NodeDeclarationBuilder &b) | ||||
| { | { | ||||
| Show All 20 Lines | static void node_mask_label(const bNodeTree *UNUSED(ntree), | ||||
| if (node->id != nullptr) { | if (node->id != nullptr) { | ||||
| BLI_strncpy(label, node->id->name + 2, maxlen); | BLI_strncpy(label, node->id->name + 2, maxlen); | ||||
| } | } | ||||
| else { | else { | ||||
| BLI_strncpy(label, IFACE_("Mask"), maxlen); | BLI_strncpy(label, IFACE_("Mask"), maxlen); | ||||
| } | } | ||||
| } | } | ||||
| static void node_composit_buts_mask(uiLayout *layout, bContext *C, PointerRNA *ptr) | |||||
| { | |||||
| bNode *node = (bNode *)ptr->data; | |||||
| uiTemplateID(layout, | |||||
| C, | |||||
| ptr, | |||||
| "mask", | |||||
| nullptr, | |||||
| nullptr, | |||||
| nullptr, | |||||
| UI_TEMPLATE_ID_FILTER_ALL, | |||||
| false, | |||||
| nullptr); | |||||
| uiItemR(layout, ptr, "use_feather", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "size_source", UI_ITEM_R_SPLIT_EMPTY_NAME, "", ICON_NONE); | |||||
| if (node->custom1 & (CMP_NODEFLAG_MASK_FIXED | CMP_NODEFLAG_MASK_FIXED_SCENE)) { | |||||
| uiItemR(layout, ptr, "size_x", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "size_y", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE); | |||||
| } | |||||
| uiItemR(layout, ptr, "use_motion_blur", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE); | |||||
| if (node->custom1 & CMP_NODEFLAG_MASK_MOTION_BLUR) { | |||||
| uiItemR(layout, ptr, "motion_blur_samples", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "motion_blur_shutter", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE); | |||||
| } | |||||
| } | |||||
| void register_node_type_cmp_mask() | void register_node_type_cmp_mask() | ||||
| { | { | ||||
| static bNodeType ntype; | static bNodeType ntype; | ||||
| cmp_node_type_base(&ntype, CMP_NODE_MASK, "Mask", NODE_CLASS_INPUT, 0); | cmp_node_type_base(&ntype, CMP_NODE_MASK, "Mask", NODE_CLASS_INPUT, 0); | ||||
| ntype.declare = blender::nodes::cmp_node_mask_declare; | ntype.declare = blender::nodes::cmp_node_mask_declare; | ||||
| ntype.draw_buttons = node_composit_buts_mask; | |||||
| node_type_init(&ntype, node_composit_init_mask); | node_type_init(&ntype, node_composit_init_mask); | ||||
| ntype.labelfunc = node_mask_label; | ntype.labelfunc = node_mask_label; | ||||
| node_type_storage(&ntype, "NodeMask", node_free_standard_storage, node_copy_standard_storage); | node_type_storage(&ntype, "NodeMask", node_free_standard_storage, node_copy_standard_storage); | ||||
| nodeRegisterType(&ntype); | nodeRegisterType(&ntype); | ||||
| } | } | ||||