From e12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 17 Apr 2019 06:17:24 +0200 Subject: ClangFormat: apply to source, most of intern Apply clang format as proposed in T53211. For details on usage and instructions for migrating branches without conflicts, see: https://wiki.blender.org/wiki/Tools/ClangFormat --- source/blender/blenkernel/BKE_node.h | 1535 +++++++++++++++++++--------------- 1 file changed, 860 insertions(+), 675 deletions(-) (limited to 'source/blender/blenkernel/BKE_node.h') diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h index 3f386782346..48b58562dd7 100644 --- a/source/blender/blenkernel/BKE_node.h +++ b/source/blender/blenkernel/BKE_node.h @@ -41,7 +41,7 @@ #include "RNA_types.h" /* not very important, but the stack solver likes to know a maximum */ -#define MAX_SOCKET 512 +#define MAX_SOCKET 512 struct ARegion; struct ColorManagedDisplaySettings; @@ -86,211 +86,254 @@ struct uiLayout; * in RNA types automatically. */ typedef struct bNodeSocketTemplate { - int type, limit; - char name[64]; /* MAX_NAME */ - float val1, val2, val3, val4; /* default alloc value for inputs */ - float min, max; - int subtype; /* would use PropertySubType but this is a bad level include to use RNA */ - int flag; - - /* after this line is used internal only */ - struct bNodeSocket *sock; /* used to hold verified socket */ - char identifier[64]; /* generated from name */ + int type, limit; + char name[64]; /* MAX_NAME */ + float val1, val2, val3, val4; /* default alloc value for inputs */ + float min, max; + int subtype; /* would use PropertySubType but this is a bad level include to use RNA */ + int flag; + + /* after this line is used internal only */ + struct bNodeSocket *sock; /* used to hold verified socket */ + char identifier[64]; /* generated from name */ } bNodeSocketTemplate; /** Defines a socket type. * Defines the appearance and behavior of a socket in the UI. */ typedef struct bNodeSocketType { - char idname[64]; /* identifier name */ - - void (*draw)(struct bContext *C, struct uiLayout *layout, struct PointerRNA *ptr, struct PointerRNA *node_ptr, const char *text); - void (*draw_color)(struct bContext *C, struct PointerRNA *ptr, struct PointerRNA *node_ptr, float *r_color); - - void (*interface_draw)(struct bContext *C, struct uiLayout *layout, struct PointerRNA *ptr); - void (*interface_draw_color)(struct bContext *C, struct PointerRNA *ptr, float *r_color); - void (*interface_register_properties)(struct bNodeTree *ntree, struct bNodeSocket *stemp, struct StructRNA *data_srna); - void (*interface_init_socket)(struct bNodeTree *ntree, struct bNodeSocket *stemp, struct bNode *node, struct bNodeSocket *sock, const char *data_path); - void (*interface_verify_socket)(struct bNodeTree *ntree, struct bNodeSocket *stemp, struct bNode *node, struct bNodeSocket *sock, const char *data_path); - void (*interface_from_socket)(struct bNodeTree *ntree, struct bNodeSocket *stemp, struct bNode *node, struct bNodeSocket *sock); - - /* RNA integration */ - ExtensionRNA ext_socket; - ExtensionRNA ext_interface; - - /* for standard socket types in C */ - int type, subtype; + char idname[64]; /* identifier name */ + + void (*draw)(struct bContext *C, + struct uiLayout *layout, + struct PointerRNA *ptr, + struct PointerRNA *node_ptr, + const char *text); + void (*draw_color)(struct bContext *C, + struct PointerRNA *ptr, + struct PointerRNA *node_ptr, + float *r_color); + + void (*interface_draw)(struct bContext *C, struct uiLayout *layout, struct PointerRNA *ptr); + void (*interface_draw_color)(struct bContext *C, struct PointerRNA *ptr, float *r_color); + void (*interface_register_properties)(struct bNodeTree *ntree, + struct bNodeSocket *stemp, + struct StructRNA *data_srna); + void (*interface_init_socket)(struct bNodeTree *ntree, + struct bNodeSocket *stemp, + struct bNode *node, + struct bNodeSocket *sock, + const char *data_path); + void (*interface_verify_socket)(struct bNodeTree *ntree, + struct bNodeSocket *stemp, + struct bNode *node, + struct bNodeSocket *sock, + const char *data_path); + void (*interface_from_socket)(struct bNodeTree *ntree, + struct bNodeSocket *stemp, + struct bNode *node, + struct bNodeSocket *sock); + + /* RNA integration */ + ExtensionRNA ext_socket; + ExtensionRNA ext_interface; + + /* for standard socket types in C */ + int type, subtype; } bNodeSocketType; -typedef void *(*NodeInitExecFunction)(struct bNodeExecContext *context, struct bNode *node, bNodeInstanceKey key); +typedef void *(*NodeInitExecFunction)(struct bNodeExecContext *context, + struct bNode *node, + bNodeInstanceKey key); typedef void (*NodeFreeExecFunction)(void *nodedata); -typedef void (*NodeExecFunction)(void *data, int thread, struct bNode *, struct bNodeExecData *execdata, struct bNodeStack **in, struct bNodeStack **out); -typedef int (*NodeGPUExecFunction)(struct GPUMaterial *mat, struct bNode *node, struct bNodeExecData *execdata, struct GPUNodeStack *in, struct GPUNodeStack *out); +typedef void (*NodeExecFunction)(void *data, + int thread, + struct bNode *, + struct bNodeExecData *execdata, + struct bNodeStack **in, + struct bNodeStack **out); +typedef int (*NodeGPUExecFunction)(struct GPUMaterial *mat, + struct bNode *node, + struct bNodeExecData *execdata, + struct GPUNodeStack *in, + struct GPUNodeStack *out); /** Defines a node type. * Initial attributes and constants for a node as well as callback functions * implementing the node behavior. */ typedef struct bNodeType { - void *next, *prev; - short needs_free; /* set for allocated types that need to be freed */ - - char idname[64]; /* identifier name */ - int type; - - char ui_name[64]; /* MAX_NAME */ - char ui_description[256]; - int ui_icon; - - float width, minwidth, maxwidth; - float height, minheight, maxheight; - short nclass, flag; - - /* templates for static sockets */ - bNodeSocketTemplate *inputs, *outputs; - - char storagename[64]; /* struct name for DNA */ - - /* Main draw function for the node */ - void (*draw_nodetype)(const struct bContext *C, struct ARegion *ar, struct SpaceNode *snode, - struct bNodeTree *ntree, struct bNode *node, bNodeInstanceKey key); - /* Updates the node geometry attributes according to internal state before actual drawing */ - void (*draw_nodetype_prepare)(const struct bContext *C, struct bNodeTree *ntree, struct bNode *node); - - /* Draw the option buttons on the node */ - void (*draw_buttons)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr); - /* Additional parameters in the side panel */ - void (*draw_buttons_ex)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr); - - /* Additional drawing on backdrop */ - void (*draw_backdrop)(struct SpaceNode *snode, struct ImBuf *backdrop, struct bNode *node, int x, int y); - - /** - * Optional custom label function for the node header. - * \note Used as a fallback when #bNode.label isn't set. - */ - void (*labelfunc)(struct bNodeTree *ntree, struct bNode *node, char *label, int maxlen); - /// Optional custom resize handle polling. - int (*resize_area_func)(struct bNode *node, int x, int y); - /// Optional selection area polling. - int (*select_area_func)(struct bNode *node, int x, int y); - /// Optional tweak area polling (for grabbing). - int (*tweak_area_func)(struct bNode *node, int x, int y); - - /// Called when the node is updated in the editor. - void (*updatefunc)(struct bNodeTree *ntree, struct bNode *node); - /// Check and update if internal ID data has changed. - void (*verifyfunc)(struct bNodeTree *ntree, struct bNode *node, struct ID *id); - - /// Initialize a new node instance of this type after creation. - void (*initfunc)(struct bNodeTree *ntree, struct bNode *node); - /// Free the node instance. - void (*freefunc)(struct bNode *node); - /// Make a copy of the node instance. - void (*copyfunc)(struct bNodeTree *dest_ntree, struct bNode *dest_node, struct bNode *src_node); - - /* Registerable API callback versions, called in addition to C callbacks */ - void (*initfunc_api)(const struct bContext *C, struct PointerRNA *ptr); - void (*freefunc_api)(struct PointerRNA *ptr); - void (*copyfunc_api)(struct PointerRNA *ptr, struct bNode *src_node); - - /* can this node type be added to a node tree */ - bool (*poll)(struct bNodeType *ntype, struct bNodeTree *nodetree); - /* can this node be added to a node tree */ - bool (*poll_instance)(struct bNode *node, struct bNodeTree *nodetree); - - /* optional handling of link insertion */ - void (*insert_link)(struct bNodeTree *ntree, struct bNode *node, struct bNodeLink *link); - /* Update the internal links list, for muting and disconnect operators. */ - void (*update_internal_links)(struct bNodeTree *, struct bNode *node); - - /* **** execution callbacks **** */ - NodeInitExecFunction initexecfunc; - NodeFreeExecFunction freeexecfunc; - NodeExecFunction execfunc; - /* gpu */ - NodeGPUExecFunction gpufunc; - - /* RNA integration */ - ExtensionRNA ext; + void *next, *prev; + short needs_free; /* set for allocated types that need to be freed */ + + char idname[64]; /* identifier name */ + int type; + + char ui_name[64]; /* MAX_NAME */ + char ui_description[256]; + int ui_icon; + + float width, minwidth, maxwidth; + float height, minheight, maxheight; + short nclass, flag; + + /* templates for static sockets */ + bNodeSocketTemplate *inputs, *outputs; + + char storagename[64]; /* struct name for DNA */ + + /* Main draw function for the node */ + void (*draw_nodetype)(const struct bContext *C, + struct ARegion *ar, + struct SpaceNode *snode, + struct bNodeTree *ntree, + struct bNode *node, + bNodeInstanceKey key); + /* Updates the node geometry attributes according to internal state before actual drawing */ + void (*draw_nodetype_prepare)(const struct bContext *C, + struct bNodeTree *ntree, + struct bNode *node); + + /* Draw the option buttons on the node */ + void (*draw_buttons)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr); + /* Additional parameters in the side panel */ + void (*draw_buttons_ex)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr); + + /* Additional drawing on backdrop */ + void (*draw_backdrop)( + struct SpaceNode *snode, struct ImBuf *backdrop, struct bNode *node, int x, int y); + + /** + * Optional custom label function for the node header. + * \note Used as a fallback when #bNode.label isn't set. + */ + void (*labelfunc)(struct bNodeTree *ntree, struct bNode *node, char *label, int maxlen); + /// Optional custom resize handle polling. + int (*resize_area_func)(struct bNode *node, int x, int y); + /// Optional selection area polling. + int (*select_area_func)(struct bNode *node, int x, int y); + /// Optional tweak area polling (for grabbing). + int (*tweak_area_func)(struct bNode *node, int x, int y); + + /// Called when the node is updated in the editor. + void (*updatefunc)(struct bNodeTree *ntree, struct bNode *node); + /// Check and update if internal ID data has changed. + void (*verifyfunc)(struct bNodeTree *ntree, struct bNode *node, struct ID *id); + + /// Initialize a new node instance of this type after creation. + void (*initfunc)(struct bNodeTree *ntree, struct bNode *node); + /// Free the node instance. + void (*freefunc)(struct bNode *node); + /// Make a copy of the node instance. + void (*copyfunc)(struct bNodeTree *dest_ntree, struct bNode *dest_node, struct bNode *src_node); + + /* Registerable API callback versions, called in addition to C callbacks */ + void (*initfunc_api)(const struct bContext *C, struct PointerRNA *ptr); + void (*freefunc_api)(struct PointerRNA *ptr); + void (*copyfunc_api)(struct PointerRNA *ptr, struct bNode *src_node); + + /* can this node type be added to a node tree */ + bool (*poll)(struct bNodeType *ntype, struct bNodeTree *nodetree); + /* can this node be added to a node tree */ + bool (*poll_instance)(struct bNode *node, struct bNodeTree *nodetree); + + /* optional handling of link insertion */ + void (*insert_link)(struct bNodeTree *ntree, struct bNode *node, struct bNodeLink *link); + /* Update the internal links list, for muting and disconnect operators. */ + void (*update_internal_links)(struct bNodeTree *, struct bNode *node); + + /* **** execution callbacks **** */ + NodeInitExecFunction initexecfunc; + NodeFreeExecFunction freeexecfunc; + NodeExecFunction execfunc; + /* gpu */ + NodeGPUExecFunction gpufunc; + + /* RNA integration */ + ExtensionRNA ext; } bNodeType; /* nodetype->nclass, for add-menu and themes */ -#define NODE_CLASS_INPUT 0 -#define NODE_CLASS_OUTPUT 1 -#define NODE_CLASS_OP_COLOR 3 -#define NODE_CLASS_OP_VECTOR 4 -#define NODE_CLASS_OP_FILTER 5 -#define NODE_CLASS_GROUP 6 -// #define NODE_CLASS_FILE 7 -#define NODE_CLASS_CONVERTOR 8 -#define NODE_CLASS_MATTE 9 -#define NODE_CLASS_DISTORT 10 -// #define NODE_CLASS_OP_DYNAMIC 11 /* deprecated */ -#define NODE_CLASS_PATTERN 12 -#define NODE_CLASS_TEXTURE 13 -// #define NODE_CLASS_EXECUTION 14 -// #define NODE_CLASS_GETDATA 15 -// #define NODE_CLASS_SETDATA 16 -// #define NODE_CLASS_MATH 17 -// #define NODE_CLASS_MATH_VECTOR 18 -// #define NODE_CLASS_MATH_ROTATION 19 -// #define NODE_CLASS_PARTICLES 25 -// #define NODE_CLASS_TRANSFORM 30 -// #define NODE_CLASS_COMBINE 31 -#define NODE_CLASS_SCRIPT 32 -#define NODE_CLASS_INTERFACE 33 -#define NODE_CLASS_SHADER 40 -#define NODE_CLASS_LAYOUT 100 +#define NODE_CLASS_INPUT 0 +#define NODE_CLASS_OUTPUT 1 +#define NODE_CLASS_OP_COLOR 3 +#define NODE_CLASS_OP_VECTOR 4 +#define NODE_CLASS_OP_FILTER 5 +#define NODE_CLASS_GROUP 6 +// #define NODE_CLASS_FILE 7 +#define NODE_CLASS_CONVERTOR 8 +#define NODE_CLASS_MATTE 9 +#define NODE_CLASS_DISTORT 10 +// #define NODE_CLASS_OP_DYNAMIC 11 /* deprecated */ +#define NODE_CLASS_PATTERN 12 +#define NODE_CLASS_TEXTURE 13 +// #define NODE_CLASS_EXECUTION 14 +// #define NODE_CLASS_GETDATA 15 +// #define NODE_CLASS_SETDATA 16 +// #define NODE_CLASS_MATH 17 +// #define NODE_CLASS_MATH_VECTOR 18 +// #define NODE_CLASS_MATH_ROTATION 19 +// #define NODE_CLASS_PARTICLES 25 +// #define NODE_CLASS_TRANSFORM 30 +// #define NODE_CLASS_COMBINE 31 +#define NODE_CLASS_SCRIPT 32 +#define NODE_CLASS_INTERFACE 33 +#define NODE_CLASS_SHADER 40 +#define NODE_CLASS_LAYOUT 100 /* node resize directions */ -#define NODE_RESIZE_TOP 1 -#define NODE_RESIZE_BOTTOM 2 -#define NODE_RESIZE_RIGHT 4 -#define NODE_RESIZE_LEFT 8 +#define NODE_RESIZE_TOP 1 +#define NODE_RESIZE_BOTTOM 2 +#define NODE_RESIZE_RIGHT 4 +#define NODE_RESIZE_LEFT 8 typedef enum eNodeSizePreset { - NODE_SIZE_DEFAULT, - NODE_SIZE_SMALL, - NODE_SIZE_MIDDLE, - NODE_SIZE_LARGE, + NODE_SIZE_DEFAULT, + NODE_SIZE_SMALL, + NODE_SIZE_MIDDLE, + NODE_SIZE_LARGE, } eNodeSizePreset; struct bNodeTreeExec; typedef void (*bNodeClassCallback)(void *calldata, int nclass, const char *name); typedef struct bNodeTreeType { - int type; /* type identifier */ - char idname[64]; /* identifier name */ - - char ui_name[64]; - char ui_description[256]; - int ui_icon; - - /* callbacks */ - void (*free_cache)(struct bNodeTree *ntree); - void (*free_node_cache)(struct bNodeTree *ntree, struct bNode *node); - void (*foreach_nodeclass)(struct Scene *scene, void *calldata, bNodeClassCallback func); /* iteration over all node classes */ - /* Check visibility in the node editor */ - bool (*poll)(const struct bContext *C, struct bNodeTreeType *ntreetype); - /* Select a node tree from the context */ - void (*get_from_context)(const struct bContext *C, struct bNodeTreeType *ntreetype, - struct bNodeTree **r_ntree, struct ID **r_id, struct ID **r_from); - - /* calls allowing threaded composite */ - void (*localize)(struct bNodeTree *localtree, struct bNodeTree *ntree); - void (*local_sync)(struct bNodeTree *localtree, struct bNodeTree *ntree); - void (*local_merge)(struct Main *bmain, struct bNodeTree *localtree, struct bNodeTree *ntree); - - /* Tree update. Overrides nodetype->updatetreefunc! */ - void (*update)(struct bNodeTree *ntree); - - bool (*validate_link)(struct bNodeTree *ntree, struct bNodeLink *link); - - void (*node_add_init)(struct bNodeTree *ntree, struct bNode *bnode); - - /* RNA integration */ - ExtensionRNA ext; + int type; /* type identifier */ + char idname[64]; /* identifier name */ + + char ui_name[64]; + char ui_description[256]; + int ui_icon; + + /* callbacks */ + void (*free_cache)(struct bNodeTree *ntree); + void (*free_node_cache)(struct bNodeTree *ntree, struct bNode *node); + void (*foreach_nodeclass)(struct Scene *scene, + void *calldata, + bNodeClassCallback func); /* iteration over all node classes */ + /* Check visibility in the node editor */ + bool (*poll)(const struct bContext *C, struct bNodeTreeType *ntreetype); + /* Select a node tree from the context */ + void (*get_from_context)(const struct bContext *C, + struct bNodeTreeType *ntreetype, + struct bNodeTree **r_ntree, + struct ID **r_id, + struct ID **r_from); + + /* calls allowing threaded composite */ + void (*localize)(struct bNodeTree *localtree, struct bNodeTree *ntree); + void (*local_sync)(struct bNodeTree *localtree, struct bNodeTree *ntree); + void (*local_merge)(struct Main *bmain, struct bNodeTree *localtree, struct bNodeTree *ntree); + + /* Tree update. Overrides nodetype->updatetreefunc! */ + void (*update)(struct bNodeTree *ntree); + + bool (*validate_link)(struct bNodeTree *ntree, struct bNodeLink *link); + + void (*node_add_init)(struct bNodeTree *ntree, struct bNode *bnode); + + /* RNA integration */ + ExtensionRNA ext; } bNodeTreeType; /** \} */ @@ -307,15 +350,17 @@ struct GHashIterator *ntreeTypeGetIterator(void); /* helper macros for iterating over tree types */ #define NODE_TREE_TYPES_BEGIN(ntype) \ -{ \ - GHashIterator *__node_tree_type_iter__ = ntreeTypeGetIterator(); \ - for (; !BLI_ghashIterator_done(__node_tree_type_iter__); BLI_ghashIterator_step(__node_tree_type_iter__)) { \ - bNodeTreeType *ntype = BLI_ghashIterator_getValue(__node_tree_type_iter__); + { \ + GHashIterator *__node_tree_type_iter__ = ntreeTypeGetIterator(); \ + for (; !BLI_ghashIterator_done(__node_tree_type_iter__); \ + BLI_ghashIterator_step(__node_tree_type_iter__)) { \ + bNodeTreeType *ntype = BLI_ghashIterator_getValue(__node_tree_type_iter__); #define NODE_TREE_TYPES_END \ - } \ - BLI_ghashIterator_free(__node_tree_type_iter__); \ -} (void)0 + } \ + BLI_ghashIterator_free(__node_tree_type_iter__); \ + } \ + (void)0 void ntreeSetTypes(const struct bContext *C, struct bNodeTree *ntree); @@ -323,61 +368,79 @@ void ntreeInitDefault(struct bNodeTree *ntree); struct bNodeTree *ntreeAddTree(struct Main *bmain, const char *name, const char *idname); /* copy/free funcs, need to manage ID users */ -void ntreeFreeTree(struct bNodeTree *ntree); +void ntreeFreeTree(struct bNodeTree *ntree); /* Free tree which is owned byt another datablock. */ -void ntreeFreeNestedTree(struct bNodeTree *ntree); -void BKE_node_tree_copy_data(struct Main *bmain, struct bNodeTree *ntree_dst, const struct bNodeTree *ntree_src, const int flag); -struct bNodeTree *ntreeCopyTree_ex(const struct bNodeTree *ntree, struct Main *bmain, const bool do_id_user); +void ntreeFreeNestedTree(struct bNodeTree *ntree); +void BKE_node_tree_copy_data(struct Main *bmain, + struct bNodeTree *ntree_dst, + const struct bNodeTree *ntree_src, + const int flag); +struct bNodeTree *ntreeCopyTree_ex(const struct bNodeTree *ntree, + struct Main *bmain, + const bool do_id_user); struct bNodeTree *ntreeCopyTree(struct Main *bmain, const struct bNodeTree *ntree); /* node->id user count */ -void ntreeUserIncrefID(struct bNodeTree *ntree); -void ntreeUserDecrefID(struct bNodeTree *ntree); - +void ntreeUserIncrefID(struct bNodeTree *ntree); +void ntreeUserDecrefID(struct bNodeTree *ntree); struct bNodeTree *ntreeFromID(const struct ID *id); -void ntreeMakeLocal(struct Main *bmain, struct bNodeTree *ntree, bool id_in_mainlist, const bool lib_local); -void ntreeFreeLocalNode(struct bNodeTree *ntree, struct bNode *node); -void ntreeFreeLocalTree(struct bNodeTree *ntree); -struct bNode *ntreeFindType(const struct bNodeTree *ntree, int type); -bool ntreeHasType(const struct bNodeTree *ntree, int type); -bool ntreeHasTree(const struct bNodeTree *ntree, const struct bNodeTree *lookup); -void ntreeUpdateTree(struct Main *main, struct bNodeTree *ntree); +void ntreeMakeLocal(struct Main *bmain, + struct bNodeTree *ntree, + bool id_in_mainlist, + const bool lib_local); +void ntreeFreeLocalNode(struct bNodeTree *ntree, struct bNode *node); +void ntreeFreeLocalTree(struct bNodeTree *ntree); +struct bNode *ntreeFindType(const struct bNodeTree *ntree, int type); +bool ntreeHasType(const struct bNodeTree *ntree, int type); +bool ntreeHasTree(const struct bNodeTree *ntree, const struct bNodeTree *lookup); +void ntreeUpdateTree(struct Main *main, struct bNodeTree *ntree); /* XXX Currently each tree update call does call to ntreeVerifyNodes too. * Some day this should be replaced by a decent depsgraph automatism! */ -void ntreeVerifyNodes(struct Main *main, struct ID *id); +void ntreeVerifyNodes(struct Main *main, struct ID *id); -void ntreeGetDependencyList(struct bNodeTree *ntree, struct bNode ***deplist, int *totnodes); +void ntreeGetDependencyList(struct bNodeTree *ntree, struct bNode ***deplist, int *totnodes); /* XXX old trees handle output flags automatically based on special output node types and last active selection. * new tree types have a per-output socket flag to indicate the final output to use explicitly. */ -void ntreeSetOutput(struct bNodeTree *ntree); +void ntreeSetOutput(struct bNodeTree *ntree); -void ntreeFreeCache(struct bNodeTree *ntree); +void ntreeFreeCache(struct bNodeTree *ntree); -int ntreeNodeExists(struct bNodeTree *ntree, struct bNode *testnode); -int ntreeOutputExists(struct bNode *node, struct bNodeSocket *testsock); -void ntreeNodeFlagSet(const bNodeTree *ntree, const int flag, const bool enable); +int ntreeNodeExists(struct bNodeTree *ntree, struct bNode *testnode); +int ntreeOutputExists(struct bNode *node, struct bNodeSocket *testsock); +void ntreeNodeFlagSet(const bNodeTree *ntree, const int flag, const bool enable); struct bNodeTree *ntreeLocalize(struct bNodeTree *ntree); -void ntreeLocalSync(struct bNodeTree *localtree, struct bNodeTree *ntree); -void ntreeLocalMerge(struct Main *bmain, struct bNodeTree *localtree, struct bNodeTree *ntree); +void ntreeLocalSync(struct bNodeTree *localtree, struct bNodeTree *ntree); +void ntreeLocalMerge(struct Main *bmain, struct bNodeTree *localtree, struct bNodeTree *ntree); /** \} */ - /* -------------------------------------------------------------------- */ /** \name Node Tree Interface * \{ */ -struct bNodeSocket *ntreeFindSocketInterface(struct bNodeTree *ntree, int in_out, const char *identifier); -struct bNodeSocket *ntreeAddSocketInterface(struct bNodeTree *ntree, int in_out, const char *idname, const char *name); -struct bNodeSocket *ntreeInsertSocketInterface(struct bNodeTree *ntree, int in_out, const char *idname, - struct bNodeSocket *next_sock, const char *name); -struct bNodeSocket *ntreeAddSocketInterfaceFromSocket(struct bNodeTree *ntree, struct bNode *from_node, struct bNodeSocket *from_sock); -struct bNodeSocket *ntreeInsertSocketInterfaceFromSocket(struct bNodeTree *ntree, struct bNodeSocket *next_sock, - struct bNode *from_node, struct bNodeSocket *from_sock); -void ntreeRemoveSocketInterface(struct bNodeTree *ntree, struct bNodeSocket *sock); +struct bNodeSocket *ntreeFindSocketInterface(struct bNodeTree *ntree, + int in_out, + const char *identifier); +struct bNodeSocket *ntreeAddSocketInterface(struct bNodeTree *ntree, + int in_out, + const char *idname, + const char *name); +struct bNodeSocket *ntreeInsertSocketInterface(struct bNodeTree *ntree, + int in_out, + const char *idname, + struct bNodeSocket *next_sock, + const char *name); +struct bNodeSocket *ntreeAddSocketInterfaceFromSocket(struct bNodeTree *ntree, + struct bNode *from_node, + struct bNodeSocket *from_sock); +struct bNodeSocket *ntreeInsertSocketInterfaceFromSocket(struct bNodeTree *ntree, + struct bNodeSocket *next_sock, + struct bNode *from_node, + struct bNodeSocket *from_sock); +void ntreeRemoveSocketInterface(struct bNodeTree *ntree, struct bNodeSocket *sock); struct StructRNA *ntreeInterfaceTypeGet(struct bNodeTree *ntree, int create); void ntreeInterfaceTypeFree(struct bNodeTree *ntree); @@ -385,133 +448,171 @@ void ntreeInterfaceTypeUpdate(struct bNodeTree *ntree); /** \} */ - /* -------------------------------------------------------------------- */ /** \name Generic API, Nodes * \{ */ struct bNodeType *nodeTypeFind(const char *idname); -void nodeRegisterType(struct bNodeType *ntype); -void nodeUnregisterType(struct bNodeType *ntype); -bool nodeIsRegistered(struct bNode *node); +void nodeRegisterType(struct bNodeType *ntype); +void nodeUnregisterType(struct bNodeType *ntype); +bool nodeIsRegistered(struct bNode *node); struct GHashIterator *nodeTypeGetIterator(void); /* helper macros for iterating over node types */ #define NODE_TYPES_BEGIN(ntype) \ -{ \ - GHashIterator *__node_type_iter__ = nodeTypeGetIterator(); \ - for (; !BLI_ghashIterator_done(__node_type_iter__); BLI_ghashIterator_step(__node_type_iter__)) { \ - bNodeType *ntype = BLI_ghashIterator_getValue(__node_type_iter__); + { \ + GHashIterator *__node_type_iter__ = nodeTypeGetIterator(); \ + for (; !BLI_ghashIterator_done(__node_type_iter__); \ + BLI_ghashIterator_step(__node_type_iter__)) { \ + bNodeType *ntype = BLI_ghashIterator_getValue(__node_type_iter__); #define NODE_TYPES_END \ - } \ - BLI_ghashIterator_free(__node_type_iter__); \ -} ((void)0) + } \ + BLI_ghashIterator_free(__node_type_iter__); \ + } \ + ((void)0) struct bNodeSocketType *nodeSocketTypeFind(const char *idname); -void nodeRegisterSocketType(struct bNodeSocketType *stype); -void nodeUnregisterSocketType(struct bNodeSocketType *stype); -bool nodeSocketIsRegistered(struct bNodeSocket *sock); +void nodeRegisterSocketType(struct bNodeSocketType *stype); +void nodeUnregisterSocketType(struct bNodeSocketType *stype); +bool nodeSocketIsRegistered(struct bNodeSocket *sock); struct GHashIterator *nodeSocketTypeGetIterator(void); const char *nodeStaticSocketType(int type, int subtype); const char *nodeStaticSocketInterfaceType(int type, int subtype); /* helper macros for iterating over node types */ #define NODE_SOCKET_TYPES_BEGIN(stype) \ -{ \ - GHashIterator *__node_socket_type_iter__ = nodeSocketTypeGetIterator(); \ - for (; !BLI_ghashIterator_done(__node_socket_type_iter__); BLI_ghashIterator_step(__node_socket_type_iter__)) { \ - bNodeSocketType *stype = BLI_ghashIterator_getValue(__node_socket_type_iter__); + { \ + GHashIterator *__node_socket_type_iter__ = nodeSocketTypeGetIterator(); \ + for (; !BLI_ghashIterator_done(__node_socket_type_iter__); \ + BLI_ghashIterator_step(__node_socket_type_iter__)) { \ + bNodeSocketType *stype = BLI_ghashIterator_getValue(__node_socket_type_iter__); #define NODE_SOCKET_TYPES_END \ - } \ - BLI_ghashIterator_free(__node_socket_type_iter__); \ -} + } \ + BLI_ghashIterator_free(__node_socket_type_iter__); \ + } struct bNodeSocket *nodeFindSocket(struct bNode *node, int in_out, const char *identifier); -struct bNodeSocket *nodeAddSocket(struct bNodeTree *ntree, struct bNode *node, int in_out, const char *idname, - const char *identifier, const char *name); -struct bNodeSocket *nodeInsertSocket(struct bNodeTree *ntree, struct bNode *node, int in_out, const char *idname, - struct bNodeSocket *next_sock, const char *identifier, const char *name); -struct bNodeSocket *nodeAddStaticSocket(struct bNodeTree *ntree, struct bNode *node, int in_out, int type, int subtype, - const char *identifier, const char *name); -struct bNodeSocket *nodeInsertStaticSocket(struct bNodeTree *ntree, struct bNode *node, int in_out, int type, int subtype, - struct bNodeSocket *next_sock, const char *identifier, const char *name); +struct bNodeSocket *nodeAddSocket(struct bNodeTree *ntree, + struct bNode *node, + int in_out, + const char *idname, + const char *identifier, + const char *name); +struct bNodeSocket *nodeInsertSocket(struct bNodeTree *ntree, + struct bNode *node, + int in_out, + const char *idname, + struct bNodeSocket *next_sock, + const char *identifier, + const char *name); +struct bNodeSocket *nodeAddStaticSocket(struct bNodeTree *ntree, + struct bNode *node, + int in_out, + int type, + int subtype, + const char *identifier, + const char *name); +struct bNodeSocket *nodeInsertStaticSocket(struct bNodeTree *ntree, + struct bNode *node, + int in_out, + int type, + int subtype, + struct bNodeSocket *next_sock, + const char *identifier, + const char *name); void nodeRemoveSocket(struct bNodeTree *ntree, struct bNode *node, struct bNodeSocket *sock); void nodeRemoveAllSockets(struct bNodeTree *ntree, struct bNode *node); -void nodeModifySocketType(struct bNodeTree *ntree, struct bNode *node, struct bNodeSocket *sock, int type, int subtype); +void nodeModifySocketType( + struct bNodeTree *ntree, struct bNode *node, struct bNodeSocket *sock, int type, int subtype); -struct bNode *nodeAddNode(const struct bContext *C, struct bNodeTree *ntree, const char *idname); -struct bNode *nodeAddStaticNode(const struct bContext *C, struct bNodeTree *ntree, int type); -void nodeUnlinkNode(struct bNodeTree *ntree, struct bNode *node); -void nodeUniqueName(struct bNodeTree *ntree, struct bNode *node); +struct bNode *nodeAddNode(const struct bContext *C, struct bNodeTree *ntree, const char *idname); +struct bNode *nodeAddStaticNode(const struct bContext *C, struct bNodeTree *ntree, int type); +void nodeUnlinkNode(struct bNodeTree *ntree, struct bNode *node); +void nodeUniqueName(struct bNodeTree *ntree, struct bNode *node); /* Delete node, associated animation data and ID user count. */ -void nodeRemoveNode(struct Main *bmain, struct bNodeTree *ntree, struct bNode *node, bool do_id_user); - -struct bNode *BKE_node_copy_ex(struct bNodeTree *ntree, struct bNode *node_src, const int flag); - -struct bNodeLink *nodeAddLink(struct bNodeTree *ntree, struct bNode *fromnode, struct bNodeSocket *fromsock, struct bNode *tonode, struct bNodeSocket *tosock); -void nodeRemLink(struct bNodeTree *ntree, struct bNodeLink *link); -void nodeRemSocketLinks(struct bNodeTree *ntree, struct bNodeSocket *sock); -bool nodeLinkIsHidden(struct bNodeLink *link); -void nodeInternalRelink(struct bNodeTree *ntree, struct bNode *node); - -void nodeToView(struct bNode *node, float x, float y, float *rx, float *ry); -void nodeFromView(struct bNode *node, float x, float y, float *rx, float *ry); -bool nodeAttachNodeCheck(struct bNode *node, struct bNode *parent); -void nodeAttachNode(struct bNode *node, struct bNode *parent); -void nodeDetachNode(struct bNode *node); - -void nodePositionRelative(struct bNode *from_node, struct bNode *to_node, - struct bNodeSocket *from_sock, struct bNodeSocket *to_sock); -void nodePositionPropagate(struct bNode *node); - -struct bNode *nodeFindNodebyName(struct bNodeTree *ntree, const char *name); -int nodeFindNode(struct bNodeTree *ntree, struct bNodeSocket *sock, struct bNode **nodep, int *sockindex); -struct bNode *nodeFindRootParent(bNode *node); - -bool nodeIsChildOf(const bNode *parent, const bNode *child); - -void nodeChainIter( - const bNodeTree *ntree, const bNode *node_start, - bool (*callback)(bNode *, bNode *, void *, const bool), void *userdata, - const bool reversed); +void nodeRemoveNode(struct Main *bmain, + struct bNodeTree *ntree, + struct bNode *node, + bool do_id_user); + +struct bNode *BKE_node_copy_ex(struct bNodeTree *ntree, struct bNode *node_src, const int flag); + +struct bNodeLink *nodeAddLink(struct bNodeTree *ntree, + struct bNode *fromnode, + struct bNodeSocket *fromsock, + struct bNode *tonode, + struct bNodeSocket *tosock); +void nodeRemLink(struct bNodeTree *ntree, struct bNodeLink *link); +void nodeRemSocketLinks(struct bNodeTree *ntree, struct bNodeSocket *sock); +bool nodeLinkIsHidden(struct bNodeLink *link); +void nodeInternalRelink(struct bNodeTree *ntree, struct bNode *node); + +void nodeToView(struct bNode *node, float x, float y, float *rx, float *ry); +void nodeFromView(struct bNode *node, float x, float y, float *rx, float *ry); +bool nodeAttachNodeCheck(struct bNode *node, struct bNode *parent); +void nodeAttachNode(struct bNode *node, struct bNode *parent); +void nodeDetachNode(struct bNode *node); + +void nodePositionRelative(struct bNode *from_node, + struct bNode *to_node, + struct bNodeSocket *from_sock, + struct bNodeSocket *to_sock); +void nodePositionPropagate(struct bNode *node); + +struct bNode *nodeFindNodebyName(struct bNodeTree *ntree, const char *name); +int nodeFindNode(struct bNodeTree *ntree, + struct bNodeSocket *sock, + struct bNode **nodep, + int *sockindex); +struct bNode *nodeFindRootParent(bNode *node); + +bool nodeIsChildOf(const bNode *parent, const bNode *child); + +void nodeChainIter(const bNodeTree *ntree, + const bNode *node_start, + bool (*callback)(bNode *, bNode *, void *, const bool), + void *userdata, + const bool reversed); void nodeParentsIter(bNode *node, bool (*callback)(bNode *, void *), void *userdata); -struct bNodeLink *nodeFindLink(struct bNodeTree *ntree, struct bNodeSocket *from, struct bNodeSocket *to); -int nodeCountSocketLinks(struct bNodeTree *ntree, struct bNodeSocket *sock); +struct bNodeLink *nodeFindLink(struct bNodeTree *ntree, + struct bNodeSocket *from, + struct bNodeSocket *to); +int nodeCountSocketLinks(struct bNodeTree *ntree, struct bNodeSocket *sock); -void nodeSetSelected(struct bNode *node, bool select); -void nodeSetActive(struct bNodeTree *ntree, struct bNode *node); -struct bNode *nodeGetActive(struct bNodeTree *ntree); -struct bNode *nodeGetActiveID(struct bNodeTree *ntree, short idtype); -bool nodeSetActiveID(struct bNodeTree *ntree, short idtype, struct ID *id); -void nodeClearActive(struct bNodeTree *ntree); -void nodeClearActiveID(struct bNodeTree *ntree, short idtype); -struct bNode *nodeGetActiveTexture(struct bNodeTree *ntree); +void nodeSetSelected(struct bNode *node, bool select); +void nodeSetActive(struct bNodeTree *ntree, struct bNode *node); +struct bNode *nodeGetActive(struct bNodeTree *ntree); +struct bNode *nodeGetActiveID(struct bNodeTree *ntree, short idtype); +bool nodeSetActiveID(struct bNodeTree *ntree, short idtype, struct ID *id); +void nodeClearActive(struct bNodeTree *ntree); +void nodeClearActiveID(struct bNodeTree *ntree, short idtype); +struct bNode *nodeGetActiveTexture(struct bNodeTree *ntree); -void nodeUpdate(struct bNodeTree *ntree, struct bNode *node); -bool nodeUpdateID(struct bNodeTree *ntree, struct ID *id); -void nodeUpdateInternalLinks(struct bNodeTree *ntree, struct bNode *node); +void nodeUpdate(struct bNodeTree *ntree, struct bNode *node); +bool nodeUpdateID(struct bNodeTree *ntree, struct ID *id); +void nodeUpdateInternalLinks(struct bNodeTree *ntree, struct bNode *node); -int nodeSocketIsHidden(struct bNodeSocket *sock); -void ntreeTagUsedSockets(struct bNodeTree *ntree); +int nodeSocketIsHidden(struct bNodeSocket *sock); +void ntreeTagUsedSockets(struct bNodeTree *ntree); /* Node Clipboard */ -void BKE_node_clipboard_init(struct bNodeTree *ntree); -void BKE_node_clipboard_clear(void); -void BKE_node_clipboard_free(void); -bool BKE_node_clipboard_validate(void); -void BKE_node_clipboard_add_node(struct bNode *node); -void BKE_node_clipboard_add_link(struct bNodeLink *link); +void BKE_node_clipboard_init(struct bNodeTree *ntree); +void BKE_node_clipboard_clear(void); +void BKE_node_clipboard_free(void); +bool BKE_node_clipboard_validate(void); +void BKE_node_clipboard_add_node(struct bNode *node); +void BKE_node_clipboard_add_link(struct bNodeLink *link); const struct ListBase *BKE_node_clipboard_get_nodes(void); const struct ListBase *BKE_node_clipboard_get_links(void); -int BKE_node_clipboard_get_type(void); +int BKE_node_clipboard_get_type(void); /* Node Instance Hash */ typedef struct bNodeInstanceHash { - GHash *ghash; /* XXX should be made a direct member, GHash allocation needs to support it */ + GHash *ghash; /* XXX should be made a direct member, GHash allocation needs to support it */ } bNodeInstanceHash; typedef void (*bNodeInstanceValueFP)(void *value); @@ -519,55 +620,89 @@ typedef void (*bNodeInstanceValueFP)(void *value); extern const bNodeInstanceKey NODE_INSTANCE_KEY_BASE; extern const bNodeInstanceKey NODE_INSTANCE_KEY_NONE; -bNodeInstanceKey BKE_node_instance_key(bNodeInstanceKey parent_key, struct bNodeTree *ntree, struct bNode *node); - -bNodeInstanceHash *BKE_node_instance_hash_new(const char *info); -void BKE_node_instance_hash_free(bNodeInstanceHash *hash, bNodeInstanceValueFP valfreefp); -void BKE_node_instance_hash_insert(bNodeInstanceHash *hash, bNodeInstanceKey key, void *value); -void *BKE_node_instance_hash_lookup(bNodeInstanceHash *hash, bNodeInstanceKey key); -int BKE_node_instance_hash_remove(bNodeInstanceHash *hash, bNodeInstanceKey key, bNodeInstanceValueFP valfreefp); -void BKE_node_instance_hash_clear(bNodeInstanceHash *hash, bNodeInstanceValueFP valfreefp); -void *BKE_node_instance_hash_pop(bNodeInstanceHash *hash, bNodeInstanceKey key); -int BKE_node_instance_hash_haskey(bNodeInstanceHash *hash, bNodeInstanceKey key); -int BKE_node_instance_hash_size(bNodeInstanceHash *hash); - -void BKE_node_instance_hash_clear_tags(bNodeInstanceHash *hash); -void BKE_node_instance_hash_tag(bNodeInstanceHash *hash, void *value); -bool BKE_node_instance_hash_tag_key(bNodeInstanceHash *hash, bNodeInstanceKey key); -void BKE_node_instance_hash_remove_untagged(bNodeInstanceHash *hash, bNodeInstanceValueFP valfreefp); +bNodeInstanceKey BKE_node_instance_key(bNodeInstanceKey parent_key, + struct bNodeTree *ntree, + struct bNode *node); + +bNodeInstanceHash *BKE_node_instance_hash_new(const char *info); +void BKE_node_instance_hash_free(bNodeInstanceHash *hash, bNodeInstanceValueFP valfreefp); +void BKE_node_instance_hash_insert(bNodeInstanceHash *hash, bNodeInstanceKey key, void *value); +void *BKE_node_instance_hash_lookup(bNodeInstanceHash *hash, bNodeInstanceKey key); +int BKE_node_instance_hash_remove(bNodeInstanceHash *hash, + bNodeInstanceKey key, + bNodeInstanceValueFP valfreefp); +void BKE_node_instance_hash_clear(bNodeInstanceHash *hash, bNodeInstanceValueFP valfreefp); +void *BKE_node_instance_hash_pop(bNodeInstanceHash *hash, bNodeInstanceKey key); +int BKE_node_instance_hash_haskey(bNodeInstanceHash *hash, bNodeInstanceKey key); +int BKE_node_instance_hash_size(bNodeInstanceHash *hash); + +void BKE_node_instance_hash_clear_tags(bNodeInstanceHash *hash); +void BKE_node_instance_hash_tag(bNodeInstanceHash *hash, void *value); +bool BKE_node_instance_hash_tag_key(bNodeInstanceHash *hash, bNodeInstanceKey key); +void BKE_node_instance_hash_remove_untagged(bNodeInstanceHash *hash, + bNodeInstanceValueFP valfreefp); typedef GHashIterator bNodeInstanceHashIterator; -BLI_INLINE bNodeInstanceHashIterator *BKE_node_instance_hash_iterator_new(bNodeInstanceHash *hash) { return BLI_ghashIterator_new(hash->ghash); } -BLI_INLINE void BKE_node_instance_hash_iterator_init(bNodeInstanceHashIterator *iter, bNodeInstanceHash *hash) { BLI_ghashIterator_init(iter, hash->ghash); } -BLI_INLINE void BKE_node_instance_hash_iterator_free(bNodeInstanceHashIterator *iter) { BLI_ghashIterator_free(iter); } -BLI_INLINE bNodeInstanceKey BKE_node_instance_hash_iterator_get_key(bNodeInstanceHashIterator *iter) { return *(bNodeInstanceKey *)BLI_ghashIterator_getKey(iter); } -BLI_INLINE void *BKE_node_instance_hash_iterator_get_value(bNodeInstanceHashIterator *iter) { return BLI_ghashIterator_getValue(iter); } -BLI_INLINE void BKE_node_instance_hash_iterator_step(bNodeInstanceHashIterator *iter) { BLI_ghashIterator_step(iter); } -BLI_INLINE bool BKE_node_instance_hash_iterator_done(bNodeInstanceHashIterator *iter) { return BLI_ghashIterator_done(iter); } +BLI_INLINE bNodeInstanceHashIterator *BKE_node_instance_hash_iterator_new(bNodeInstanceHash *hash) +{ + return BLI_ghashIterator_new(hash->ghash); +} +BLI_INLINE void BKE_node_instance_hash_iterator_init(bNodeInstanceHashIterator *iter, + bNodeInstanceHash *hash) +{ + BLI_ghashIterator_init(iter, hash->ghash); +} +BLI_INLINE void BKE_node_instance_hash_iterator_free(bNodeInstanceHashIterator *iter) +{ + BLI_ghashIterator_free(iter); +} +BLI_INLINE bNodeInstanceKey +BKE_node_instance_hash_iterator_get_key(bNodeInstanceHashIterator *iter) +{ + return *(bNodeInstanceKey *)BLI_ghashIterator_getKey(iter); +} +BLI_INLINE void *BKE_node_instance_hash_iterator_get_value(bNodeInstanceHashIterator *iter) +{ + return BLI_ghashIterator_getValue(iter); +} +BLI_INLINE void BKE_node_instance_hash_iterator_step(bNodeInstanceHashIterator *iter) +{ + BLI_ghashIterator_step(iter); +} +BLI_INLINE bool BKE_node_instance_hash_iterator_done(bNodeInstanceHashIterator *iter) +{ + return BLI_ghashIterator_done(iter); +} #define NODE_INSTANCE_HASH_ITER(iter_, hash_) \ - for (BKE_node_instance_hash_iterator_init(&iter_, hash_); \ - BKE_node_instance_hash_iterator_done(&iter_) == false; \ - BKE_node_instance_hash_iterator_step(&iter_)) - + for (BKE_node_instance_hash_iterator_init(&iter_, hash_); \ + BKE_node_instance_hash_iterator_done(&iter_) == false; \ + BKE_node_instance_hash_iterator_step(&iter_)) /* Node Previews */ -int BKE_node_preview_used(struct bNode *node); -bNodePreview *BKE_node_preview_verify(struct bNodeInstanceHash *previews, bNodeInstanceKey key, int xsize, int ysize, bool create); -bNodePreview *BKE_node_preview_copy(struct bNodePreview *preview); -void BKE_node_preview_free(struct bNodePreview *preview); -void BKE_node_preview_init_tree(struct bNodeTree *ntree, int xsize, int ysize, int create_previews); -void BKE_node_preview_free_tree(struct bNodeTree *ntree); -void BKE_node_preview_remove_unused(struct bNodeTree *ntree); -void BKE_node_preview_clear(struct bNodePreview *preview); -void BKE_node_preview_clear_tree(struct bNodeTree *ntree); - -void BKE_node_preview_sync_tree(struct bNodeTree *to_ntree, struct bNodeTree *from_ntree); -void BKE_node_preview_merge_tree(struct bNodeTree *to_ntree, struct bNodeTree *from_ntree, bool remove_old); - -void BKE_node_preview_set_pixel(struct bNodePreview *preview, const float col[4], int x, int y, bool do_manage); +int BKE_node_preview_used(struct bNode *node); +bNodePreview *BKE_node_preview_verify( + struct bNodeInstanceHash *previews, bNodeInstanceKey key, int xsize, int ysize, bool create); +bNodePreview *BKE_node_preview_copy(struct bNodePreview *preview); +void BKE_node_preview_free(struct bNodePreview *preview); +void BKE_node_preview_init_tree(struct bNodeTree *ntree, + int xsize, + int ysize, + int create_previews); +void BKE_node_preview_free_tree(struct bNodeTree *ntree); +void BKE_node_preview_remove_unused(struct bNodeTree *ntree); +void BKE_node_preview_clear(struct bNodePreview *preview); +void BKE_node_preview_clear_tree(struct bNodeTree *ntree); + +void BKE_node_preview_sync_tree(struct bNodeTree *to_ntree, struct bNodeTree *from_ntree); +void BKE_node_preview_merge_tree(struct bNodeTree *to_ntree, + struct bNodeTree *from_ntree, + bool remove_old); + +void BKE_node_preview_set_pixel( + struct bNodePreview *preview, const float col[4], int x, int y, bool do_manage); /** \} */ @@ -575,29 +710,43 @@ void BKE_node_preview_set_pixel(struct bNodePreview *preview, const f /** \name Node Type Access * \{ */ -void nodeLabel(struct bNodeTree *ntree, struct bNode *node, char *label, int maxlen); +void nodeLabel(struct bNodeTree *ntree, struct bNode *node, char *label, int maxlen); -int nodeGroupPoll(struct bNodeTree *nodetree, struct bNodeTree *grouptree); +int nodeGroupPoll(struct bNodeTree *nodetree, struct bNodeTree *grouptree); /* Init a new node type struct with default values and callbacks */ -void node_type_base(struct bNodeType *ntype, int type, const char *name, short nclass, short flag); -void node_type_base_custom(struct bNodeType *ntype, const char *idname, const char *name, short nclass, short flag); -void node_type_socket_templates(struct bNodeType *ntype, struct bNodeSocketTemplate *inputs, struct bNodeSocketTemplate *outputs); -void node_type_size(struct bNodeType *ntype, int width, int minwidth, int maxwidth); -void node_type_size_preset(struct bNodeType *ntype, eNodeSizePreset size); -void node_type_init(struct bNodeType *ntype, void (*initfunc)(struct bNodeTree *ntree, struct bNode *node)); -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, struct bNode *src_node)); -void node_type_label(struct bNodeType *ntype, void (*labelfunc)(struct bNodeTree *ntree, struct bNode *, char *label, int maxlen)); -void node_type_update(struct bNodeType *ntype, - void (*updatefunc)(struct bNodeTree *ntree, struct bNode *node), - void (*verifyfunc)(struct bNodeTree *ntree, struct bNode *node, struct ID *id)); - -void node_type_exec(struct bNodeType *ntype, NodeInitExecFunction initexecfunc, NodeFreeExecFunction freeexecfunc, NodeExecFunction execfunc); -void node_type_gpu(struct bNodeType *ntype, NodeGPUExecFunction gpufunc); -void node_type_internal_links(struct bNodeType *ntype, void (*update_internal_links)(struct bNodeTree *, struct bNode *)); +void node_type_base(struct bNodeType *ntype, int type, const char *name, short nclass, short flag); +void node_type_base_custom( + struct bNodeType *ntype, const char *idname, const char *name, short nclass, short flag); +void node_type_socket_templates(struct bNodeType *ntype, + struct bNodeSocketTemplate *inputs, + struct bNodeSocketTemplate *outputs); +void node_type_size(struct bNodeType *ntype, int width, int minwidth, int maxwidth); +void node_type_size_preset(struct bNodeType *ntype, eNodeSizePreset size); +void node_type_init(struct bNodeType *ntype, + void (*initfunc)(struct bNodeTree *ntree, struct bNode *node)); +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, + struct bNode *src_node)); +void node_type_label( + struct bNodeType *ntype, + void (*labelfunc)(struct bNodeTree *ntree, struct bNode *, char *label, int maxlen)); +void node_type_update(struct bNodeType *ntype, + void (*updatefunc)(struct bNodeTree *ntree, struct bNode *node), + void (*verifyfunc)(struct bNodeTree *ntree, + struct bNode *node, + struct ID *id)); + +void node_type_exec(struct bNodeType *ntype, + NodeInitExecFunction initexecfunc, + NodeFreeExecFunction freeexecfunc, + NodeExecFunction execfunc); +void node_type_gpu(struct bNodeType *ntype, NodeGPUExecFunction gpufunc); +void node_type_internal_links(struct bNodeType *ntype, + void (*update_internal_links)(struct bNodeTree *, struct bNode *)); /** \} */ @@ -609,16 +758,16 @@ bool BKE_node_is_connected_to_output(struct bNodeTree *ntree, struct bNode *node /* ************** COMMON NODES *************** */ -#define NODE_UNDEFINED -2 /* node type is not registered */ -#define NODE_CUSTOM -1 /* for dynamically registered custom types */ -#define NODE_GROUP 2 -// #define NODE_FORLOOP 3 /* deprecated */ -// #define NODE_WHILELOOP 4 /* deprecated */ -#define NODE_FRAME 5 -#define NODE_REROUTE 6 -#define NODE_GROUP_INPUT 7 -#define NODE_GROUP_OUTPUT 8 -#define NODE_CUSTOM_GROUP 9 +#define NODE_UNDEFINED -2 /* node type is not registered */ +#define NODE_CUSTOM -1 /* for dynamically registered custom types */ +#define NODE_GROUP 2 +// #define NODE_FORLOOP 3 /* deprecated */ +// #define NODE_WHILELOOP 4 /* deprecated */ +#define NODE_FRAME 5 +#define NODE_REROUTE 6 +#define NODE_GROUP_INPUT 7 +#define NODE_GROUP_OUTPUT 8 +#define NODE_CUSTOM_GROUP 9 void BKE_node_tree_unlink_id(ID *id, struct bNodeTree *ntree); @@ -659,41 +808,44 @@ void BKE_node_tree_unlink_id(ID *id, struct bNodeTree *ntree); /* should be an opaque type, only for internal use by BKE_node_tree_iter_*** */ struct NodeTreeIterStore { - bNodeTree *ngroup; - Scene *scene; - Material *mat; - Tex *tex; - Light *light; - World *world; - FreestyleLineStyle *linestyle; + bNodeTree *ngroup; + Scene *scene; + Material *mat; + Tex *tex; + Light *light; + World *world; + FreestyleLineStyle *linestyle; }; void BKE_node_tree_iter_init(struct NodeTreeIterStore *ntreeiter, struct Main *bmain); bool BKE_node_tree_iter_step(struct NodeTreeIterStore *ntreeiter, - struct bNodeTree **r_nodetree, struct ID **r_id); + struct bNodeTree **r_nodetree, + struct ID **r_id); #define FOREACH_NODETREE_BEGIN(bmain, _nodetree, _id) \ -{ \ - struct NodeTreeIterStore _nstore; \ - bNodeTree *_nodetree; \ - ID *_id; \ - /* avoid compiler warning about unused variables */ \ - BKE_node_tree_iter_init(&_nstore, bmain); \ - while (BKE_node_tree_iter_step(&_nstore, &_nodetree, &_id) == true) { \ - if (_nodetree) { + { \ + struct NodeTreeIterStore _nstore; \ + bNodeTree *_nodetree; \ + ID *_id; \ + /* avoid compiler warning about unused variables */ \ + BKE_node_tree_iter_init(&_nstore, bmain); \ + while (BKE_node_tree_iter_step(&_nstore, &_nodetree, &_id) == true) { \ + if (_nodetree) { #define FOREACH_NODETREE_END \ - } \ - } \ -} ((void)0) + } \ + } \ + } \ + ((void)0) /** \} */ - /* -------------------------------------------------------------------- */ /** \name Node Tree */ -void BKE_nodetree_remove_layer_n(struct bNodeTree *ntree, struct Scene *scene, const int layer_index); +void BKE_nodetree_remove_layer_n(struct bNodeTree *ntree, + struct Scene *scene, + const int layer_index); /* -------------------------------------------------------------------- */ /** \name Shader Nodes @@ -703,119 +855,121 @@ void BKE_nodetree_remove_layer_n(struct bNodeTree *ntree, struct Scene *scene, c /* range 1 - 100 is reserved for common nodes */ /* using toolbox, we add node groups by assuming the values below don't exceed NODE_GROUP_MENU for now */ -//#define SH_NODE_OUTPUT 1 - -//#define SH_NODE_MATERIAL 100 -#define SH_NODE_RGB 101 -#define SH_NODE_VALUE 102 -#define SH_NODE_MIX_RGB 103 -#define SH_NODE_VALTORGB 104 -#define SH_NODE_RGBTOBW 105 -#define SH_NODE_SHADERTORGB 106 -//#define SH_NODE_TEXTURE 106 -#define SH_NODE_NORMAL 107 -//#define SH_NODE_GEOMETRY 108 -#define SH_NODE_MAPPING 109 -#define SH_NODE_CURVE_VEC 110 -#define SH_NODE_CURVE_RGB 111 -#define SH_NODE_CAMERA 114 -#define SH_NODE_MATH 115 -#define SH_NODE_VECT_MATH 116 -#define SH_NODE_SQUEEZE 117 -//#define SH_NODE_MATERIAL_EXT 118 -#define SH_NODE_INVERT 119 -#define SH_NODE_SEPRGB 120 -#define SH_NODE_COMBRGB 121 -#define SH_NODE_HUE_SAT 122 -#define NODE_DYNAMIC 123 - -#define SH_NODE_OUTPUT_MATERIAL 124 -#define SH_NODE_OUTPUT_WORLD 125 -#define SH_NODE_OUTPUT_LIGHT 126 -#define SH_NODE_FRESNEL 127 -#define SH_NODE_MIX_SHADER 128 -#define SH_NODE_ATTRIBUTE 129 -#define SH_NODE_BACKGROUND 130 -#define SH_NODE_BSDF_ANISOTROPIC 131 -#define SH_NODE_BSDF_DIFFUSE 132 -#define SH_NODE_BSDF_GLOSSY 133 -#define SH_NODE_BSDF_GLASS 134 -#define SH_NODE_BSDF_TRANSLUCENT 137 -#define SH_NODE_BSDF_TRANSPARENT 138 -#define SH_NODE_BSDF_VELVET 139 -#define SH_NODE_EMISSION 140 -#define SH_NODE_NEW_GEOMETRY 141 -#define SH_NODE_LIGHT_PATH 142 -#define SH_NODE_TEX_IMAGE 143 -#define SH_NODE_TEX_SKY 145 -#define SH_NODE_TEX_GRADIENT 146 -#define SH_NODE_TEX_VORONOI 147 -#define SH_NODE_TEX_MAGIC 148 -#define SH_NODE_TEX_WAVE 149 -#define SH_NODE_TEX_NOISE 150 -#define SH_NODE_TEX_MUSGRAVE 152 -#define SH_NODE_TEX_COORD 155 -#define SH_NODE_ADD_SHADER 156 -#define SH_NODE_TEX_ENVIRONMENT 157 -#define SH_NODE_OUTPUT_TEXTURE 158 -#define SH_NODE_HOLDOUT 159 -#define SH_NODE_LAYER_WEIGHT 160 -#define SH_NODE_VOLUME_ABSORPTION 161 -#define SH_NODE_VOLUME_SCATTER 162 -#define SH_NODE_GAMMA 163 -#define SH_NODE_TEX_CHECKER 164 -#define SH_NODE_BRIGHTCONTRAST 165 -#define SH_NODE_LIGHT_FALLOFF 166 -#define SH_NODE_OBJECT_INFO 167 -#define SH_NODE_PARTICLE_INFO 168 -#define SH_NODE_TEX_BRICK 169 -#define SH_NODE_BUMP 170 -#define SH_NODE_SCRIPT 171 -#define SH_NODE_AMBIENT_OCCLUSION 172 -#define SH_NODE_BSDF_REFRACTION 173 -#define SH_NODE_TANGENT 174 -#define SH_NODE_NORMAL_MAP 175 -#define SH_NODE_HAIR_INFO 176 -#define SH_NODE_SUBSURFACE_SCATTERING 177 -#define SH_NODE_WIREFRAME 178 -#define SH_NODE_BSDF_TOON 179 -#define SH_NODE_WAVELENGTH 180 -#define SH_NODE_BLACKBODY 181 -#define SH_NODE_VECT_TRANSFORM 182 -#define SH_NODE_SEPHSV 183 -#define SH_NODE_COMBHSV 184 -#define SH_NODE_BSDF_HAIR 185 -#define SH_NODE_LAMP 186 -#define SH_NODE_UVMAP 187 -#define SH_NODE_SEPXYZ 188 -#define SH_NODE_COMBXYZ 189 -#define SH_NODE_OUTPUT_LINESTYLE 190 -#define SH_NODE_UVALONGSTROKE 191 -#define SH_NODE_TEX_POINTDENSITY 192 -#define SH_NODE_BSDF_PRINCIPLED 193 -#define SH_NODE_TEX_IES 194 -#define SH_NODE_EEVEE_SPECULAR 195 -#define SH_NODE_BEVEL 197 -#define SH_NODE_DISPLACEMENT 198 -#define SH_NODE_VECTOR_DISPLACEMENT 199 -#define SH_NODE_VOLUME_PRINCIPLED 200 +//#define SH_NODE_OUTPUT 1 + +//#define SH_NODE_MATERIAL 100 +#define SH_NODE_RGB 101 +#define SH_NODE_VALUE 102 +#define SH_NODE_MIX_RGB 103 +#define SH_NODE_VALTORGB 104 +#define SH_NODE_RGBTOBW 105 +#define SH_NODE_SHADERTORGB 106 +//#define SH_NODE_TEXTURE 106 +#define SH_NODE_NORMAL 107 +//#define SH_NODE_GEOMETRY 108 +#define SH_NODE_MAPPING 109 +#define SH_NODE_CURVE_VEC 110 +#define SH_NODE_CURVE_RGB 111 +#define SH_NODE_CAMERA 114 +#define SH_NODE_MATH 115 +#define SH_NODE_VECT_MATH 116 +#define SH_NODE_SQUEEZE 117 +//#define SH_NODE_MATERIAL_EXT 118 +#define SH_NODE_INVERT 119 +#define SH_NODE_SEPRGB 120 +#define SH_NODE_COMBRGB 121 +#define SH_NODE_HUE_SAT 122 +#define NODE_DYNAMIC 123 + +#define SH_NODE_OUTPUT_MATERIAL 124 +#define SH_NODE_OUTPUT_WORLD 125 +#define SH_NODE_OUTPUT_LIGHT 126 +#define SH_NODE_FRESNEL 127 +#define SH_NODE_MIX_SHADER 128 +#define SH_NODE_ATTRIBUTE 129 +#define SH_NODE_BACKGROUND 130 +#define SH_NODE_BSDF_ANISOTROPIC 131 +#define SH_NODE_BSDF_DIFFUSE 132 +#define SH_NODE_BSDF_GLOSSY 133 +#define SH_NODE_BSDF_GLASS 134 +#define SH_NODE_BSDF_TRANSLUCENT 137 +#define SH_NODE_BSDF_TRANSPARENT 138 +#define SH_NODE_BSDF_VELVET 139 +#define SH_NODE_EMISSION 140 +#define SH_NODE_NEW_GEOMETRY 141 +#define SH_NODE_LIGHT_PATH 142 +#define SH_NODE_TEX_IMAGE 143 +#define SH_NODE_TEX_SKY 145 +#define SH_NODE_TEX_GRADIENT 146 +#define SH_NODE_TEX_VORONOI 147 +#define SH_NODE_TEX_MAGIC 148 +#define SH_NODE_TEX_WAVE 149 +#define SH_NODE_TEX_NOISE 150 +#define SH_NODE_TEX_MUSGRAVE 152 +#define SH_NODE_TEX_COORD 155 +#define SH_NODE_ADD_SHADER 156 +#define SH_NODE_TEX_ENVIRONMENT 157 +#define SH_NODE_OUTPUT_TEXTURE 158 +#define SH_NODE_HOLDOUT 159 +#define SH_NODE_LAYER_WEIGHT 160 +#define SH_NODE_VOLUME_ABSORPTION 161 +#define SH_NODE_VOLUME_SCATTER 162 +#define SH_NODE_GAMMA 163 +#define SH_NODE_TEX_CHECKER 164 +#define SH_NODE_BRIGHTCONTRAST 165 +#define SH_NODE_LIGHT_FALLOFF 166 +#define SH_NODE_OBJECT_INFO 167 +#define SH_NODE_PARTICLE_INFO 168 +#define SH_NODE_TEX_BRICK 169 +#define SH_NODE_BUMP 170 +#define SH_NODE_SCRIPT 171 +#define SH_NODE_AMBIENT_OCCLUSION 172 +#define SH_NODE_BSDF_REFRACTION 173 +#define SH_NODE_TANGENT 174 +#define SH_NODE_NORMAL_MAP 175 +#define SH_NODE_HAIR_INFO 176 +#define SH_NODE_SUBSURFACE_SCATTERING 177 +#define SH_NODE_WIREFRAME 178 +#define SH_NODE_BSDF_TOON 179 +#define SH_NODE_WAVELENGTH 180 +#define SH_NODE_BLACKBODY 181 +#define SH_NODE_VECT_TRANSFORM 182 +#define SH_NODE_SEPHSV 183 +#define SH_NODE_COMBHSV 184 +#define SH_NODE_BSDF_HAIR 185 +#define SH_NODE_LAMP 186 +#define SH_NODE_UVMAP 187 +#define SH_NODE_SEPXYZ 188 +#define SH_NODE_COMBXYZ 189 +#define SH_NODE_OUTPUT_LINESTYLE 190 +#define SH_NODE_UVALONGSTROKE 191 +#define SH_NODE_TEX_POINTDENSITY 192 +#define SH_NODE_BSDF_PRINCIPLED 193 +#define SH_NODE_TEX_IES 194 +#define SH_NODE_EEVEE_SPECULAR 195 +#define SH_NODE_BEVEL 197 +#define SH_NODE_DISPLACEMENT 198 +#define SH_NODE_VECTOR_DISPLACEMENT 199 +#define SH_NODE_VOLUME_PRINCIPLED 200 /* 201..700 occupied by other node types, continue from 701 */ -#define SH_NODE_BSDF_HAIR_PRINCIPLED 701 +#define SH_NODE_BSDF_HAIR_PRINCIPLED 701 /* custom defines options for Material node */ -#define SH_NODE_MAT_DIFF 1 -#define SH_NODE_MAT_SPEC 2 -#define SH_NODE_MAT_NEG 4 +#define SH_NODE_MAT_DIFF 1 +#define SH_NODE_MAT_SPEC 2 +#define SH_NODE_MAT_NEG 4 /* API */ struct bNodeTreeExec *ntreeShaderBeginExecTree(struct bNodeTree *ntree); -void ntreeShaderEndExecTree(struct bNodeTreeExec *exec); -bool ntreeShaderExecTree(struct bNodeTree *ntree, int thread); -struct bNode *ntreeShaderOutputNode(struct bNodeTree *ntree, int target); +void ntreeShaderEndExecTree(struct bNodeTreeExec *exec); +bool ntreeShaderExecTree(struct bNodeTree *ntree, int thread); +struct bNode *ntreeShaderOutputNode(struct bNodeTree *ntree, int target); -void ntreeGPUMaterialNodes(struct bNodeTree *localtree, struct GPUMaterial *mat, - bool *has_surface_output, bool *has_volume_output); +void ntreeGPUMaterialNodes(struct bNodeTree *localtree, + struct GPUMaterial *mat, + bool *has_surface_output, + bool *has_volume_output); /** \} */ @@ -824,180 +978,202 @@ void ntreeGPUMaterialNodes(struct bNodeTree *localtree, struct GPUMat * \{ */ /* output socket defines */ -#define RRES_OUT_IMAGE 0 -#define RRES_OUT_ALPHA 1 -#define RRES_OUT_Z 2 -#define RRES_OUT_NORMAL 3 -#define RRES_OUT_UV 4 -#define RRES_OUT_VEC 5 -#define RRES_OUT_RGBA 6 -#define RRES_OUT_DIFF 7 -#define RRES_OUT_SPEC 8 -#define RRES_OUT_SHADOW 9 -#define RRES_OUT_AO 10 -#define RRES_OUT_REFLECT 11 -#define RRES_OUT_REFRACT 12 -#define RRES_OUT_INDIRECT 13 -#define RRES_OUT_INDEXOB 14 -#define RRES_OUT_INDEXMA 15 -#define RRES_OUT_MIST 16 -#define RRES_OUT_EMIT 17 -#define RRES_OUT_ENV 18 -#define RRES_OUT_DIFF_DIRECT 19 -#define RRES_OUT_DIFF_INDIRECT 20 -#define RRES_OUT_DIFF_COLOR 21 -#define RRES_OUT_GLOSSY_DIRECT 22 -#define RRES_OUT_GLOSSY_INDIRECT 23 -#define RRES_OUT_GLOSSY_COLOR 24 -#define RRES_OUT_TRANSM_DIRECT 25 -#define RRES_OUT_TRANSM_INDIRECT 26 -#define RRES_OUT_TRANSM_COLOR 27 -#define RRES_OUT_SUBSURFACE_DIRECT 28 -#define RRES_OUT_SUBSURFACE_INDIRECT 29 -#define RRES_OUT_SUBSURFACE_COLOR 30 -#define RRES_OUT_DEBUG 31 +#define RRES_OUT_IMAGE 0 +#define RRES_OUT_ALPHA 1 +#define RRES_OUT_Z 2 +#define RRES_OUT_NORMAL 3 +#define RRES_OUT_UV 4 +#define RRES_OUT_VEC 5 +#define RRES_OUT_RGBA 6 +#define RRES_OUT_DIFF 7 +#define RRES_OUT_SPEC 8 +#define RRES_OUT_SHADOW 9 +#define RRES_OUT_AO 10 +#define RRES_OUT_REFLECT 11 +#define RRES_OUT_REFRACT 12 +#define RRES_OUT_INDIRECT 13 +#define RRES_OUT_INDEXOB 14 +#define RRES_OUT_INDEXMA 15 +#define RRES_OUT_MIST 16 +#define RRES_OUT_EMIT 17 +#define RRES_OUT_ENV 18 +#define RRES_OUT_DIFF_DIRECT 19 +#define RRES_OUT_DIFF_INDIRECT 20 +#define RRES_OUT_DIFF_COLOR 21 +#define RRES_OUT_GLOSSY_DIRECT 22 +#define RRES_OUT_GLOSSY_INDIRECT 23 +#define RRES_OUT_GLOSSY_COLOR 24 +#define RRES_OUT_TRANSM_DIRECT 25 +#define RRES_OUT_TRANSM_INDIRECT 26 +#define RRES_OUT_TRANSM_COLOR 27 +#define RRES_OUT_SUBSURFACE_DIRECT 28 +#define RRES_OUT_SUBSURFACE_INDIRECT 29 +#define RRES_OUT_SUBSURFACE_COLOR 30 +#define RRES_OUT_DEBUG 31 /* note: types are needed to restore callbacks, don't change values */ -#define CMP_NODE_VIEWER 201 -#define CMP_NODE_RGB 202 -#define CMP_NODE_VALUE 203 -#define CMP_NODE_MIX_RGB 204 -#define CMP_NODE_VALTORGB 205 -#define CMP_NODE_RGBTOBW 206 -#define CMP_NODE_NORMAL 207 -#define CMP_NODE_CURVE_VEC 208 -#define CMP_NODE_CURVE_RGB 209 -#define CMP_NODE_ALPHAOVER 210 -#define CMP_NODE_BLUR 211 -#define CMP_NODE_FILTER 212 -#define CMP_NODE_MAP_VALUE 213 -#define CMP_NODE_TIME 214 -#define CMP_NODE_VECBLUR 215 -#define CMP_NODE_SEPRGBA 216 -#define CMP_NODE_SEPHSVA 217 -#define CMP_NODE_SETALPHA 218 -#define CMP_NODE_HUE_SAT 219 -#define CMP_NODE_IMAGE 220 -#define CMP_NODE_R_LAYERS 221 -#define CMP_NODE_COMPOSITE 222 -#define CMP_NODE_OUTPUT_FILE 223 -#define CMP_NODE_TEXTURE 224 -#define CMP_NODE_TRANSLATE 225 -#define CMP_NODE_ZCOMBINE 226 -#define CMP_NODE_COMBRGBA 227 -#define CMP_NODE_DILATEERODE 228 -#define CMP_NODE_ROTATE 229 -#define CMP_NODE_SCALE 230 -#define CMP_NODE_SEPYCCA 231 -#define CMP_NODE_COMBYCCA 232 -#define CMP_NODE_SEPYUVA 233 -#define CMP_NODE_COMBYUVA 234 -#define CMP_NODE_DIFF_MATTE 235 -#define CMP_NODE_COLOR_SPILL 236 -#define CMP_NODE_CHROMA_MATTE 237 -#define CMP_NODE_CHANNEL_MATTE 238 -#define CMP_NODE_FLIP 239 -#define CMP_NODE_SPLITVIEWER 240 -// #define CMP_NODE_INDEX_MASK 241 -#define CMP_NODE_MAP_UV 242 -#define CMP_NODE_ID_MASK 243 -#define CMP_NODE_DEFOCUS 244 -#define CMP_NODE_DISPLACE 245 -#define CMP_NODE_COMBHSVA 246 -#define CMP_NODE_MATH 247 -#define CMP_NODE_LUMA_MATTE 248 +#define CMP_NODE_VIEWER 201 +#define CMP_NODE_RGB 202 +#define CMP_NODE_VALUE 203 +#define CMP_NODE_MIX_RGB 204 +#define CMP_NODE_VALTORGB 205 +#define CMP_NODE_RGBTOBW 206 +#define CMP_NODE_NORMAL 207 +#define CMP_NODE_CURVE_VEC 208 +#define CMP_NODE_CURVE_RGB 209 +#define CMP_NODE_ALPHAOVER 210 +#define CMP_NODE_BLUR 211 +#define CMP_NODE_FILTER 212 +#define CMP_NODE_MAP_VALUE 213 +#define CMP_NODE_TIME 214 +#define CMP_NODE_VECBLUR 215 +#define CMP_NODE_SEPRGBA 216 +#define CMP_NODE_SEPHSVA 217 +#define CMP_NODE_SETALPHA 218 +#define CMP_NODE_HUE_SAT 219 +#define CMP_NODE_IMAGE 220 +#define CMP_NODE_R_LAYERS 221 +#define CMP_NODE_COMPOSITE 222 +#define CMP_NODE_OUTPUT_FILE 223 +#define CMP_NODE_TEXTURE 224 +#define CMP_NODE_TRANSLATE 225 +#define CMP_NODE_ZCOMBINE 226 +#define CMP_NODE_COMBRGBA 227 +#define CMP_NODE_DILATEERODE 228 +#define CMP_NODE_ROTATE 229 +#define CMP_NODE_SCALE 230 +#define CMP_NODE_SEPYCCA 231 +#define CMP_NODE_COMBYCCA 232 +#define CMP_NODE_SEPYUVA 233 +#define CMP_NODE_COMBYUVA 234 +#define CMP_NODE_DIFF_MATTE 235 +#define CMP_NODE_COLOR_SPILL 236 +#define CMP_NODE_CHROMA_MATTE 237 +#define CMP_NODE_CHANNEL_MATTE 238 +#define CMP_NODE_FLIP 239 +#define CMP_NODE_SPLITVIEWER 240 +// #define CMP_NODE_INDEX_MASK 241 +#define CMP_NODE_MAP_UV 242 +#define CMP_NODE_ID_MASK 243 +#define CMP_NODE_DEFOCUS 244 +#define CMP_NODE_DISPLACE 245 +#define CMP_NODE_COMBHSVA 246 +#define CMP_NODE_MATH 247 +#define CMP_NODE_LUMA_MATTE 248 #define CMP_NODE_BRIGHTCONTRAST 249 -#define CMP_NODE_GAMMA 250 -#define CMP_NODE_INVERT 251 -#define CMP_NODE_NORMALIZE 252 -#define CMP_NODE_CROP 253 -#define CMP_NODE_DBLUR 254 -#define CMP_NODE_BILATERALBLUR 255 -#define CMP_NODE_PREMULKEY 256 -#define CMP_NODE_DIST_MATTE 257 -#define CMP_NODE_VIEW_LEVELS 258 +#define CMP_NODE_GAMMA 250 +#define CMP_NODE_INVERT 251 +#define CMP_NODE_NORMALIZE 252 +#define CMP_NODE_CROP 253 +#define CMP_NODE_DBLUR 254 +#define CMP_NODE_BILATERALBLUR 255 +#define CMP_NODE_PREMULKEY 256 +#define CMP_NODE_DIST_MATTE 257 +#define CMP_NODE_VIEW_LEVELS 258 #define CMP_NODE_COLOR_MATTE 259 #define CMP_NODE_COLORBALANCE 260 #define CMP_NODE_HUECORRECT 261 -#define CMP_NODE_MOVIECLIP 262 -#define CMP_NODE_STABILIZE2D 263 -#define CMP_NODE_TRANSFORM 264 -#define CMP_NODE_MOVIEDISTORTION 265 -#define CMP_NODE_DOUBLEEDGEMASK 266 -#define CMP_NODE_OUTPUT_MULTI_FILE__DEPRECATED 267 /* DEPRECATED multi file node has been merged into regular CMP_NODE_OUTPUT_FILE */ -#define CMP_NODE_MASK 268 -#define CMP_NODE_KEYINGSCREEN 269 -#define CMP_NODE_KEYING 270 -#define CMP_NODE_TRACKPOS 271 -#define CMP_NODE_INPAINT 272 -#define CMP_NODE_DESPECKLE 273 - -#define CMP_NODE_GLARE 301 -#define CMP_NODE_TONEMAP 302 -#define CMP_NODE_LENSDIST 303 -#define CMP_NODE_SUNBEAMS 304 +#define CMP_NODE_MOVIECLIP 262 +#define CMP_NODE_STABILIZE2D 263 +#define CMP_NODE_TRANSFORM 264 +#define CMP_NODE_MOVIEDISTORTION 265 +#define CMP_NODE_DOUBLEEDGEMASK 266 +#define CMP_NODE_OUTPUT_MULTI_FILE__DEPRECATED \ + 267 /* DEPRECATED multi file node has been merged into regular CMP_NODE_OUTPUT_FILE */ +#define CMP_NODE_MASK 268 +#define CMP_NODE_KEYINGSCREEN 269 +#define CMP_NODE_KEYING 270 +#define CMP_NODE_TRACKPOS 271 +#define CMP_NODE_INPAINT 272 +#define CMP_NODE_DESPECKLE 273 + +#define CMP_NODE_GLARE 301 +#define CMP_NODE_TONEMAP 302 +#define CMP_NODE_LENSDIST 303 +#define CMP_NODE_SUNBEAMS 304 #define CMP_NODE_COLORCORRECTION 312 -#define CMP_NODE_MASK_BOX 313 -#define CMP_NODE_MASK_ELLIPSE 314 -#define CMP_NODE_BOKEHIMAGE 315 -#define CMP_NODE_BOKEHBLUR 316 -#define CMP_NODE_SWITCH 317 -#define CMP_NODE_PIXELATE 318 - -#define CMP_NODE_MAP_RANGE 319 -#define CMP_NODE_PLANETRACKDEFORM 320 -#define CMP_NODE_CORNERPIN 321 -#define CMP_NODE_SWITCH_VIEW 322 -#define CMP_NODE_CRYPTOMATTE 323 +#define CMP_NODE_MASK_BOX 313 +#define CMP_NODE_MASK_ELLIPSE 314 +#define CMP_NODE_BOKEHIMAGE 315 +#define CMP_NODE_BOKEHBLUR 316 +#define CMP_NODE_SWITCH 317 +#define CMP_NODE_PIXELATE 318 + +#define CMP_NODE_MAP_RANGE 319 +#define CMP_NODE_PLANETRACKDEFORM 320 +#define CMP_NODE_CORNERPIN 321 +#define CMP_NODE_SWITCH_VIEW 322 +#define CMP_NODE_CRYPTOMATTE 323 /* channel toggles */ -#define CMP_CHAN_RGB 1 -#define CMP_CHAN_A 2 +#define CMP_CHAN_RGB 1 +#define CMP_CHAN_A 2 /* filter types */ -#define CMP_FILT_SOFT 0 -#define CMP_FILT_SHARP 1 -#define CMP_FILT_LAPLACE 2 -#define CMP_FILT_SOBEL 3 -#define CMP_FILT_PREWITT 4 -#define CMP_FILT_KIRSCH 5 -#define CMP_FILT_SHADOW 6 +#define CMP_FILT_SOFT 0 +#define CMP_FILT_SHARP 1 +#define CMP_FILT_LAPLACE 2 +#define CMP_FILT_SOBEL 3 +#define CMP_FILT_PREWITT 4 +#define CMP_FILT_KIRSCH 5 +#define CMP_FILT_SHADOW 6 /* scale node type, in custom1 */ -#define CMP_SCALE_RELATIVE 0 -#define CMP_SCALE_ABSOLUTE 1 -#define CMP_SCALE_SCENEPERCENT 2 +#define CMP_SCALE_RELATIVE 0 +#define CMP_SCALE_ABSOLUTE 1 +#define CMP_SCALE_SCENEPERCENT 2 #define CMP_SCALE_RENDERPERCENT 3 /* custom2 */ -#define CMP_SCALE_RENDERSIZE_FRAME_ASPECT (1 << 0) -#define CMP_SCALE_RENDERSIZE_FRAME_CROP (1 << 1) +#define CMP_SCALE_RENDERSIZE_FRAME_ASPECT (1 << 0) +#define CMP_SCALE_RENDERSIZE_FRAME_CROP (1 << 1) /* track position node, in custom1 */ -#define CMP_TRACKPOS_ABSOLUTE 0 -#define CMP_TRACKPOS_RELATIVE_START 1 -#define CMP_TRACKPOS_RELATIVE_FRAME 2 -#define CMP_TRACKPOS_ABSOLUTE_FRAME 3 +#define CMP_TRACKPOS_ABSOLUTE 0 +#define CMP_TRACKPOS_RELATIVE_START 1 +#define CMP_TRACKPOS_RELATIVE_FRAME 2 +#define CMP_TRACKPOS_ABSOLUTE_FRAME 3 /* API */ -void ntreeCompositExecTree(struct Scene *scene, struct bNodeTree *ntree, struct RenderData *rd, int rendering, int do_previews, - const struct ColorManagedViewSettings *view_settings, const struct ColorManagedDisplaySettings *display_settings, +void ntreeCompositExecTree(struct Scene *scene, + struct bNodeTree *ntree, + struct RenderData *rd, + int rendering, + int do_previews, + const struct ColorManagedViewSettings *view_settings, + const struct ColorManagedDisplaySettings *display_settings, const char *view_name); void ntreeCompositTagRender(struct Scene *sce); int ntreeCompositTagAnimated(struct bNodeTree *ntree); void ntreeCompositTagGenerators(struct bNodeTree *ntree); void ntreeCompositUpdateRLayers(struct bNodeTree *ntree); -void ntreeCompositRegisterPass(struct bNodeTree *ntree, struct Scene *scene, struct ViewLayer *view_layer, const char *name, int type); +void ntreeCompositRegisterPass(struct bNodeTree *ntree, + struct Scene *scene, + struct ViewLayer *view_layer, + const char *name, + int type); void ntreeCompositClearTags(struct bNodeTree *ntree); -struct bNodeSocket *ntreeCompositOutputFileAddSocket(struct bNodeTree *ntree, struct bNode *node, - const char *name, struct ImageFormatData *im_format); +struct bNodeSocket *ntreeCompositOutputFileAddSocket(struct bNodeTree *ntree, + struct bNode *node, + const char *name, + struct ImageFormatData *im_format); int ntreeCompositOutputFileRemoveActiveSocket(struct bNodeTree *ntree, struct bNode *node); -void ntreeCompositOutputFileSetPath(struct bNode *node, struct bNodeSocket *sock, const char *name); -void ntreeCompositOutputFileSetLayer(struct bNode *node, struct bNodeSocket *sock, const char *name); +void ntreeCompositOutputFileSetPath(struct bNode *node, + struct bNodeSocket *sock, + const char *name); +void ntreeCompositOutputFileSetLayer(struct bNode *node, + struct bNodeSocket *sock, + const char *name); /* needed in do_versions */ -void ntreeCompositOutputFileUniquePath(struct ListBase *list, struct bNodeSocket *sock, const char defname[], char delim); -void ntreeCompositOutputFileUniqueLayer(struct ListBase *list, struct bNodeSocket *sock, const char defname[], char delim); +void ntreeCompositOutputFileUniquePath(struct ListBase *list, + struct bNodeSocket *sock, + const char defname[], + char delim); +void ntreeCompositOutputFileUniqueLayer(struct ListBase *list, + struct bNodeSocket *sock, + const char defname[], + char delim); void ntreeCompositColorBalanceSyncFromLGG(bNodeTree *ntree, bNode *node); void ntreeCompositColorBalanceSyncFromCDL(bNodeTree *ntree, bNode *node); @@ -1015,43 +1191,52 @@ int ntreeCompositCryptomatteRemoveSocket(struct bNodeTree *ntree, struct bNode * struct TexResult; -#define TEX_NODE_OUTPUT 401 -#define TEX_NODE_CHECKER 402 -#define TEX_NODE_TEXTURE 403 -#define TEX_NODE_BRICKS 404 -#define TEX_NODE_MATH 405 -#define TEX_NODE_MIX_RGB 406 -#define TEX_NODE_RGBTOBW 407 -#define TEX_NODE_VALTORGB 408 -#define TEX_NODE_IMAGE 409 -#define TEX_NODE_CURVE_RGB 410 -#define TEX_NODE_INVERT 411 -#define TEX_NODE_HUE_SAT 412 +#define TEX_NODE_OUTPUT 401 +#define TEX_NODE_CHECKER 402 +#define TEX_NODE_TEXTURE 403 +#define TEX_NODE_BRICKS 404 +#define TEX_NODE_MATH 405 +#define TEX_NODE_MIX_RGB 406 +#define TEX_NODE_RGBTOBW 407 +#define TEX_NODE_VALTORGB 408 +#define TEX_NODE_IMAGE 409 +#define TEX_NODE_CURVE_RGB 410 +#define TEX_NODE_INVERT 411 +#define TEX_NODE_HUE_SAT 412 #define TEX_NODE_CURVE_TIME 413 -#define TEX_NODE_ROTATE 414 -#define TEX_NODE_VIEWER 415 -#define TEX_NODE_TRANSLATE 416 -#define TEX_NODE_COORD 417 -#define TEX_NODE_DISTANCE 418 -#define TEX_NODE_COMPOSE 419 -#define TEX_NODE_DECOMPOSE 420 -#define TEX_NODE_VALTONOR 421 -#define TEX_NODE_SCALE 422 -#define TEX_NODE_AT 423 +#define TEX_NODE_ROTATE 414 +#define TEX_NODE_VIEWER 415 +#define TEX_NODE_TRANSLATE 416 +#define TEX_NODE_COORD 417 +#define TEX_NODE_DISTANCE 418 +#define TEX_NODE_COMPOSE 419 +#define TEX_NODE_DECOMPOSE 420 +#define TEX_NODE_VALTONOR 421 +#define TEX_NODE_SCALE 422 +#define TEX_NODE_AT 423 /* 501-599 reserved. Use like this: TEX_NODE_PROC + TEX_CLOUDS, etc */ -#define TEX_NODE_PROC 500 -#define TEX_NODE_PROC_MAX 600 +#define TEX_NODE_PROC 500 +#define TEX_NODE_PROC_MAX 600 /* API */ -int ntreeTexTagAnimated(struct bNodeTree *ntree); +int ntreeTexTagAnimated(struct bNodeTree *ntree); void ntreeTexCheckCyclics(struct bNodeTree *ntree); struct bNodeTreeExec *ntreeTexBeginExecTree(struct bNodeTree *ntree); void ntreeTexEndExecTree(struct bNodeTreeExec *exec); -int ntreeTexExecTree(struct bNodeTree *ntree, struct TexResult *target, - float coord[3], float dxt[3], float dyt[3], int osatex, const short thread, - struct Tex *tex, short which_output, int cfra, int preview, struct MTex *mtex); +int ntreeTexExecTree(struct bNodeTree *ntree, + struct TexResult *target, + float coord[3], + float dxt[3], + float dyt[3], + int osatex, + const short thread, + struct Tex *tex, + short which_output, + int cfra, + int preview, + struct MTex *mtex); /** \} */ void init_nodesystem(void); @@ -1069,4 +1254,4 @@ void BKE_nodetree_shading_params_eval(struct Depsgraph *depsgraph, extern struct bNodeType NodeTypeUndefined; extern struct bNodeSocketType NodeSocketTypeUndefined; -#endif /* __BKE_NODE_H__ */ +#endif /* __BKE_NODE_H__ */ -- cgit v1.2.3