18 #include "RNA_prototypes.h"
38 Args *
data = (Args *)arg;
41 if (sock !=
data->sock) {
64 if (
ELEM(
nullptr, sock, defname)) {
80 Args *
data = (Args *)arg;
83 if (sock !=
data->sock) {
105 if (
ELEM(
nullptr, sock, defname)) {
125 sock->storage = sockdata;
196 node->storage = nimf;
234 const bNode *src_node)
246 src_sock && dest_sock;
264 if (sock->storage ==
nullptr) {
318 uiItemO(layout,
IFACE_(
"Add Input"), ICON_ADD,
"NODE_OT_output_file_add_socket");
333 "active_input_index",
351 "active_input_index",
372 if (active_input_ptr.
data) {
380 "NODE_OT_output_file_remove_active_socket",
395 "NODE_OT_output_file_remove_active_socket",
416 const bool use_node_format =
RNA_boolean_get(&active_input_ptr,
"use_node_format");
418 if ((!is_exr && use_node_format) || (!is_socket_exr && !use_node_format)) {
427 if (!use_node_format) {
428 const bool use_color_management =
RNA_boolean_get(&active_input_ptr,
"save_as_render");
struct Scene * CTX_data_scene(const bContext *C)
#define NODE_CLASS_OUTPUT
void node_type_update(struct bNodeType *ntype, void(*updatefunc)(struct bNodeTree *ntree, struct bNode *node))
struct bNodeSocket * nodeAddStaticSocket(struct bNodeTree *ntree, struct bNode *node, eNodeSocketInOut in_out, int type, int subtype, const char *identifier, const char *name)
#define CMP_NODE_OUTPUT_FILE
void node_type_storage(struct bNodeType *ntype, const char *storagename, void(*freefunc)(struct bNode *node), void(*copyfunc)(struct bNodeTree *dest_ntree, struct bNode *dest_node, const struct bNode *src_node))
void nodeRemoveSocket(struct bNodeTree *ntree, struct bNode *node, struct bNodeSocket *sock)
void nodeRegisterType(struct bNodeType *ntype)
#define LISTBASE_FOREACH(type, var, list)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
char * BLI_strncpy_utf8(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL(1
bool BLI_uniquename_cb(UniquenameCheckCallback unique_check, void *arg, const char *defname, char delim, char *name, size_t name_len)
#define R_IMF_COLOR_MANAGEMENT_FOLLOW_SCENE
#define R_IMF_IMTYPE_MULTILAYER
#define R_IMF_IMTYPE_OPENEXR
uiLayout * uiLayoutColumn(uiLayout *layout, bool align)
void uiItemL(uiLayout *layout, const char *name, int icon)
void uiTemplateImageSettings(uiLayout *layout, struct PointerRNA *imfptr, bool color_management)
void uiItemS(uiLayout *layout)
uiLayout * uiLayoutRow(uiLayout *layout, bool align)
void uiItemFullO_ptr(uiLayout *layout, struct wmOperatorType *ot, const char *name, int icon, struct IDProperty *properties, wmOperatorCallContext context, int flag, struct PointerRNA *r_opptr)
@ UI_ITEM_R_SPLIT_EMPTY_NAME
void uiItemR(uiLayout *layout, struct PointerRNA *ptr, const char *propname, int flag, const char *name, int icon)
void uiItemO(uiLayout *layout, const char *name, int icon, const char *opname)
void uiItemFullO(uiLayout *layout, const char *opname, const char *name, int icon, struct IDProperty *properties, wmOperatorCallContext context, int flag, struct PointerRNA *r_opptr)
void uiTemplateList(uiLayout *layout, struct bContext *C, const char *listtype_name, const char *list_id, struct PointerRNA *dataptr, const char *propname, struct PointerRNA *active_dataptr, const char *active_propname, const char *item_dyntip_propname, int rows, int maxrows, int layout_type, int columns, enum uiTemplateListFlags flags)
@ UI_TEMPLATE_LIST_FLAG_NONE
void uiTemplateImageFormatViews(uiLayout *layout, struct PointerRNA *imfptr, struct PointerRNA *ptr)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
static void init_output_file(const bContext *C, PointerRNA *ptr)
static void free_output_file(bNode *node)
static void node_composit_buts_file_output_ex(uiLayout *layout, bContext *C, PointerRNA *ptr)
static void copy_output_file(bNodeTree *UNUSED(dest_ntree), bNode *dest_node, const bNode *src_node)
static void update_output_file(bNodeTree *ntree, bNode *node)
static void node_composit_buts_file_output(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
void ntreeCompositOutputFileUniqueLayer(ListBase *list, bNodeSocket *sock, const char defname[], char delim)
void ntreeCompositOutputFileSetPath(bNode *node, bNodeSocket *sock, const char *name)
void register_node_type_cmp_output_file()
int ntreeCompositOutputFileRemoveActiveSocket(bNodeTree *ntree, bNode *node)
bNodeSocket * ntreeCompositOutputFileAddSocket(bNodeTree *ntree, bNode *node, const char *name, const ImageFormatData *im_format)
static bool unique_path_unique_check(void *arg, const char *name)
void ntreeCompositOutputFileSetLayer(bNode *node, bNodeSocket *sock, const char *name)
static bool unique_layer_unique_check(void *arg, const char *name)
void ntreeCompositOutputFileUniquePath(ListBase *list, bNodeSocket *sock, const char defname[], char delim)
void cmp_node_type_base(bNodeType *ntype, int type, const char *name, short nclass)
void cmp_node_update_default(bNodeTree *UNUSED(ntree), bNode *node)
void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
PointerRNA RNA_pointer_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
int RNA_property_collection_lookup_int(PointerRNA *ptr, PropertyRNA *prop, int key, PointerRNA *r_ptr)
int RNA_int_get(PointerRNA *ptr, const char *name)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
int RNA_enum_get(PointerRNA *ptr, const char *name)
struct ImageFormatData im_format
struct bNodeSocket * next
void(* initfunc_api)(const struct bContext *C, struct PointerRNA *ptr)
void(* draw_buttons_ex)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr)
void(* draw_buttons)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)