Changeset View
Changeset View
Standalone View
Standalone View
source/blender/nodes/composite/nodes/node_composite_image.cc
| Show First 20 Lines • Show All 389 Lines • ▼ Show 20 Lines | else { | ||||
| nodeSetSocketAvailability(ntree, sock, false); | nodeSetSocketAvailability(ntree, sock, false); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| BLI_linklist_free(available_sockets.list, nullptr); | BLI_linklist_free(available_sockets.list, nullptr); | ||||
| } | } | ||||
| namespace blender::nodes::node_cmp_image_cc { | |||||
| static void cmp_node_image_update(bNodeTree *ntree, bNode *node) | static void cmp_node_image_update(bNodeTree *ntree, bNode *node) | ||||
| { | { | ||||
| /* avoid unnecessary updates, only changes to the image/image user data are of interest */ | /* avoid unnecessary updates, only changes to the image/image user data are of interest */ | ||||
| if (node->update & NODE_UPDATE_ID) { | if (node->update & NODE_UPDATE_ID) { | ||||
| cmp_node_image_verify_outputs(ntree, node, false); | cmp_node_image_verify_outputs(ntree, node, false); | ||||
| } | } | ||||
| cmp_node_update_default(ntree, node); | cmp_node_update_default(ntree, node); | ||||
| Show All 32 Lines | static void node_composit_copy_image(bNodeTree *UNUSED(dest_ntree), | ||||
| while (dest_output_sock != nullptr) { | while (dest_output_sock != nullptr) { | ||||
| dest_output_sock->storage = MEM_dupallocN(src_output_sock->storage); | dest_output_sock->storage = MEM_dupallocN(src_output_sock->storage); | ||||
| src_output_sock = src_output_sock->next; | src_output_sock = src_output_sock->next; | ||||
| dest_output_sock = dest_output_sock->next; | dest_output_sock = dest_output_sock->next; | ||||
| } | } | ||||
| } | } | ||||
| } // namespace blender::nodes::node_cmp_image_cc | |||||
| void register_node_type_cmp_image(void) | void register_node_type_cmp_image(void) | ||||
| { | { | ||||
| namespace file_ns = blender::nodes::node_cmp_image_cc; | |||||
| static bNodeType ntype; | static bNodeType ntype; | ||||
| cmp_node_type_base(&ntype, CMP_NODE_IMAGE, "Image", NODE_CLASS_INPUT, NODE_PREVIEW); | cmp_node_type_base(&ntype, CMP_NODE_IMAGE, "Image", NODE_CLASS_INPUT, NODE_PREVIEW); | ||||
| node_type_init(&ntype, node_composit_init_image); | node_type_init(&ntype, file_ns::node_composit_init_image); | ||||
| node_type_storage(&ntype, "ImageUser", node_composit_free_image, node_composit_copy_image); | node_type_storage( | ||||
| node_type_update(&ntype, cmp_node_image_update); | &ntype, "ImageUser", file_ns::node_composit_free_image, file_ns::node_composit_copy_image); | ||||
| node_type_update(&ntype, file_ns::cmp_node_image_update); | |||||
| node_type_label(&ntype, node_image_label); | node_type_label(&ntype, node_image_label); | ||||
| nodeRegisterType(&ntype); | nodeRegisterType(&ntype); | ||||
| } | } | ||||
| /* **************** RENDER RESULT ******************** */ | /* **************** RENDER RESULT ******************** */ | ||||
| void node_cmp_rlayers_outputs(bNodeTree *ntree, bNode *node) | void node_cmp_rlayers_outputs(bNodeTree *ntree, bNode *node) | ||||
| { | { | ||||
| cmp_node_image_verify_outputs(ntree, node, true); | cmp_node_image_verify_outputs(ntree, node, true); | ||||
| } | } | ||||
| const char *node_cmp_rlayers_sock_to_pass(int sock_index) | const char *node_cmp_rlayers_sock_to_pass(int sock_index) | ||||
| { | { | ||||
| if (sock_index >= NUM_LEGACY_SOCKETS) { | if (sock_index >= NUM_LEGACY_SOCKETS) { | ||||
| return nullptr; | return nullptr; | ||||
| } | } | ||||
| const char *name = cmp_node_rlayers_out[sock_index].name; | const char *name = cmp_node_rlayers_out[sock_index].name; | ||||
| /* Exception for alpha, which is derived from Combined. */ | /* Exception for alpha, which is derived from Combined. */ | ||||
| return (STREQ(name, "Alpha")) ? RE_PASSNAME_COMBINED : name; | return (STREQ(name, "Alpha")) ? RE_PASSNAME_COMBINED : name; | ||||
| } | } | ||||
| namespace blender::nodes::node_cmp_rlayers_cc { | |||||
| static void node_composit_init_rlayers(const bContext *C, PointerRNA *ptr) | static void node_composit_init_rlayers(const bContext *C, PointerRNA *ptr) | ||||
| { | { | ||||
| Scene *scene = CTX_data_scene(C); | Scene *scene = CTX_data_scene(C); | ||||
| bNode *node = (bNode *)ptr->data; | bNode *node = (bNode *)ptr->data; | ||||
| int sock_index = 0; | int sock_index = 0; | ||||
| node->id = &scene->id; | node->id = &scene->id; | ||||
| id_us_plus(node->id); | id_us_plus(node->id); | ||||
| ▲ Show 20 Lines • Show All 66 Lines • ▼ Show 20 Lines | |||||
| static void cmp_node_rlayers_update(bNodeTree *ntree, bNode *node) | static void cmp_node_rlayers_update(bNodeTree *ntree, bNode *node) | ||||
| { | { | ||||
| cmp_node_image_verify_outputs(ntree, node, true); | cmp_node_image_verify_outputs(ntree, node, true); | ||||
| cmp_node_update_default(ntree, node); | cmp_node_update_default(ntree, node); | ||||
| } | } | ||||
| } // namespace blender::nodes::node_cmp_rlayers_cc | |||||
| void register_node_type_cmp_rlayers(void) | void register_node_type_cmp_rlayers(void) | ||||
| { | { | ||||
| namespace file_ns = blender::nodes::node_cmp_rlayers_cc; | |||||
| static bNodeType ntype; | static bNodeType ntype; | ||||
| cmp_node_type_base(&ntype, CMP_NODE_R_LAYERS, "Render Layers", NODE_CLASS_INPUT, NODE_PREVIEW); | cmp_node_type_base(&ntype, CMP_NODE_R_LAYERS, "Render Layers", NODE_CLASS_INPUT, NODE_PREVIEW); | ||||
| node_type_socket_templates(&ntype, nullptr, cmp_node_rlayers_out); | node_type_socket_templates(&ntype, nullptr, cmp_node_rlayers_out); | ||||
| ntype.initfunc_api = node_composit_init_rlayers; | ntype.initfunc_api = file_ns::node_composit_init_rlayers; | ||||
| ntype.poll = node_composit_poll_rlayers; | ntype.poll = file_ns::node_composit_poll_rlayers; | ||||
| node_type_storage(&ntype, nullptr, node_composit_free_rlayers, node_composit_copy_rlayers); | node_type_storage( | ||||
| node_type_update(&ntype, cmp_node_rlayers_update); | &ntype, nullptr, file_ns::node_composit_free_rlayers, file_ns::node_composit_copy_rlayers); | ||||
| node_type_update(&ntype, file_ns::cmp_node_rlayers_update); | |||||
| node_type_init(&ntype, node_cmp_rlayers_outputs); | node_type_init(&ntype, node_cmp_rlayers_outputs); | ||||
| node_type_size_preset(&ntype, NODE_SIZE_LARGE); | node_type_size_preset(&ntype, NODE_SIZE_LARGE); | ||||
| nodeRegisterType(&ntype); | nodeRegisterType(&ntype); | ||||
| } | } | ||||