Changeset View
Changeset View
Standalone View
Standalone View
source/blender/nodes/composite/nodes/node_composite_outputFile.cc
| Show First 20 Lines • Show All 186 Lines • ▼ Show 20 Lines | |||||
| void ntreeCompositOutputFileSetLayer(bNode *node, bNodeSocket *sock, const char *name) | void ntreeCompositOutputFileSetLayer(bNode *node, bNodeSocket *sock, const char *name) | ||||
| { | { | ||||
| NodeImageMultiFileSocket *sockdata = (NodeImageMultiFileSocket *)sock->storage; | NodeImageMultiFileSocket *sockdata = (NodeImageMultiFileSocket *)sock->storage; | ||||
| BLI_strncpy_utf8(sockdata->layer, name, sizeof(sockdata->layer)); | BLI_strncpy_utf8(sockdata->layer, name, sizeof(sockdata->layer)); | ||||
| ntreeCompositOutputFileUniqueLayer(&node->inputs, sock, name, '_'); | ntreeCompositOutputFileUniqueLayer(&node->inputs, sock, name, '_'); | ||||
| } | } | ||||
| namespace blender::nodes::node_composite_outputFile_cc { | |||||
| /* XXX uses initfunc_api callback, regular initfunc does not support context yet */ | /* XXX uses initfunc_api callback, regular initfunc does not support context yet */ | ||||
| static void init_output_file(const bContext *C, PointerRNA *ptr) | static void init_output_file(const bContext *C, PointerRNA *ptr) | ||||
| { | { | ||||
| Scene *scene = CTX_data_scene(C); | Scene *scene = CTX_data_scene(C); | ||||
| bNodeTree *ntree = (bNodeTree *)ptr->owner_id; | bNodeTree *ntree = (bNodeTree *)ptr->owner_id; | ||||
| bNode *node = (bNode *)ptr->data; | bNode *node = (bNode *)ptr->data; | ||||
| NodeImageMultiFile *nimf = (NodeImageMultiFile *)MEM_callocN(sizeof(NodeImageMultiFile), | NodeImageMultiFile *nimf = (NodeImageMultiFile *)MEM_callocN(sizeof(NodeImageMultiFile), | ||||
| "node image multi file"); | "node image multi file"); | ||||
| ▲ Show 20 Lines • Show All 69 Lines • ▼ Show 20 Lines | static void update_output_file(bNodeTree *ntree, bNode *node) | ||||
| LISTBASE_FOREACH (bNodeSocket *, sock, &node->inputs) { | LISTBASE_FOREACH (bNodeSocket *, sock, &node->inputs) { | ||||
| if (sock->link) { | if (sock->link) { | ||||
| RNA_pointer_create((ID *)ntree, &RNA_NodeSocket, sock, &ptr); | RNA_pointer_create((ID *)ntree, &RNA_NodeSocket, sock, &ptr); | ||||
| RNA_enum_set(&ptr, "type", sock->link->fromsock->type); | RNA_enum_set(&ptr, "type", sock->link->fromsock->type); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } // namespace blender::nodes::node_composite_outputFile_cc | |||||
| void register_node_type_cmp_output_file() | void register_node_type_cmp_output_file() | ||||
| { | { | ||||
| namespace file_ns = blender::nodes::node_composite_outputFile_cc; | |||||
| static bNodeType ntype; | static bNodeType ntype; | ||||
| cmp_node_type_base(&ntype, CMP_NODE_OUTPUT_FILE, "File Output", NODE_CLASS_OUTPUT, NODE_PREVIEW); | cmp_node_type_base(&ntype, CMP_NODE_OUTPUT_FILE, "File Output", NODE_CLASS_OUTPUT, NODE_PREVIEW); | ||||
| node_type_socket_templates(&ntype, nullptr, nullptr); | node_type_socket_templates(&ntype, nullptr, nullptr); | ||||
| ntype.initfunc_api = init_output_file; | ntype.initfunc_api = file_ns::init_output_file; | ||||
| node_type_storage(&ntype, "NodeImageMultiFile", free_output_file, copy_output_file); | node_type_storage( | ||||
| node_type_update(&ntype, update_output_file); | &ntype, "NodeImageMultiFile", file_ns::free_output_file, file_ns::copy_output_file); | ||||
| node_type_update(&ntype, file_ns::update_output_file); | |||||
| nodeRegisterType(&ntype); | nodeRegisterType(&ntype); | ||||
| } | } | ||||