Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/BKE_node.h
| Show First 20 Lines • Show All 413 Lines • ▼ Show 20 Lines | |||||
| struct GHashIterator *ntreeTypeGetIterator(void); | struct GHashIterator *ntreeTypeGetIterator(void); | ||||
| /* helper macros for iterating over tree types */ | /* helper macros for iterating over tree types */ | ||||
| #define NODE_TREE_TYPES_BEGIN(ntype) \ | #define NODE_TREE_TYPES_BEGIN(ntype) \ | ||||
| { \ | { \ | ||||
| GHashIterator *__node_tree_type_iter__ = ntreeTypeGetIterator(); \ | GHashIterator *__node_tree_type_iter__ = ntreeTypeGetIterator(); \ | ||||
| for (; !BLI_ghashIterator_done(__node_tree_type_iter__); \ | for (; !BLI_ghashIterator_done(__node_tree_type_iter__); \ | ||||
| BLI_ghashIterator_step(__node_tree_type_iter__)) { \ | BLI_ghashIterator_step(__node_tree_type_iter__)) { \ | ||||
| bNodeTreeType *ntype = BLI_ghashIterator_getValue(__node_tree_type_iter__); | bNodeTreeType *ntype = (bNodeTreeType *)BLI_ghashIterator_getValue(__node_tree_type_iter__); | ||||
| #define NODE_TREE_TYPES_END \ | #define NODE_TREE_TYPES_END \ | ||||
| } \ | } \ | ||||
| BLI_ghashIterator_free(__node_tree_type_iter__); \ | BLI_ghashIterator_free(__node_tree_type_iter__); \ | ||||
| } \ | } \ | ||||
| (void)0 | (void)0 | ||||
| void ntreeSetTypes(const struct bContext *C, struct bNodeTree *ntree); | void ntreeSetTypes(const struct bContext *C, struct bNodeTree *ntree); | ||||
| Show All 27 Lines | |||||
| /* XXX old trees handle output flags automatically based on special output | /* XXX old trees handle output flags automatically based on special output | ||||
| * node types and last active selection. | * node types and last active selection. | ||||
| * New tree types have a per-output socket flag to indicate the final output to use explicitly. | * 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); | ||||
| bool ntreeNodeExists(struct bNodeTree *ntree, struct bNode *testnode); | bool ntreeNodeExists(const struct bNodeTree *ntree, const struct bNode *testnode); | ||||
| bool ntreeOutputExists(struct bNode *node, struct bNodeSocket *testsock); | bool ntreeOutputExists(const struct bNode *node, const struct bNodeSocket *testsock); | ||||
| void ntreeNodeFlagSet(const bNodeTree *ntree, const int flag, const bool enable); | void ntreeNodeFlagSet(const bNodeTree *ntree, const int flag, const bool enable); | ||||
| struct bNodeTree *ntreeLocalize(struct bNodeTree *ntree); | struct bNodeTree *ntreeLocalize(struct bNodeTree *ntree); | ||||
| void ntreeLocalSync(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); | void ntreeLocalMerge(struct Main *bmain, struct bNodeTree *localtree, struct bNodeTree *ntree); | ||||
| void ntreeBlendWrite(struct BlendWriter *writer, struct bNodeTree *ntree); | void ntreeBlendWrite(struct BlendWriter *writer, struct bNodeTree *ntree); | ||||
| void ntreeBlendReadData(struct BlendDataReader *reader, struct bNodeTree *ntree); | void ntreeBlendReadData(struct BlendDataReader *reader, struct bNodeTree *ntree); | ||||
| void ntreeBlendReadLib(struct BlendLibReader *reader, struct bNodeTree *ntree); | void ntreeBlendReadLib(struct BlendLibReader *reader, struct bNodeTree *ntree); | ||||
| Show All 20 Lines | struct bNodeSocket *ntreeAddSocketInterfaceFromSocket(struct bNodeTree *ntree, | ||||
| struct bNode *from_node, | struct bNode *from_node, | ||||
| struct bNodeSocket *from_sock); | struct bNodeSocket *from_sock); | ||||
| struct bNodeSocket *ntreeInsertSocketInterfaceFromSocket(struct bNodeTree *ntree, | struct bNodeSocket *ntreeInsertSocketInterfaceFromSocket(struct bNodeTree *ntree, | ||||
| struct bNodeSocket *next_sock, | struct bNodeSocket *next_sock, | ||||
| struct bNode *from_node, | struct bNode *from_node, | ||||
| struct bNodeSocket *from_sock); | struct bNodeSocket *from_sock); | ||||
| void ntreeRemoveSocketInterface(struct bNodeTree *ntree, struct bNodeSocket *sock); | void ntreeRemoveSocketInterface(struct bNodeTree *ntree, struct bNodeSocket *sock); | ||||
| struct StructRNA *ntreeInterfaceTypeGet(struct bNodeTree *ntree, int create); | struct StructRNA *ntreeInterfaceTypeGet(struct bNodeTree *ntree, bool create); | ||||
| void ntreeInterfaceTypeFree(struct bNodeTree *ntree); | void ntreeInterfaceTypeFree(struct bNodeTree *ntree); | ||||
| void ntreeInterfaceTypeUpdate(struct bNodeTree *ntree); | void ntreeInterfaceTypeUpdate(struct bNodeTree *ntree); | ||||
| /** \} */ | /** \} */ | ||||
| /* -------------------------------------------------------------------- */ | /* -------------------------------------------------------------------- */ | ||||
| /** \name Generic API, Nodes | /** \name Generic API, Nodes | ||||
| * \{ */ | * \{ */ | ||||
| struct bNodeType *nodeTypeFind(const char *idname); | struct bNodeType *nodeTypeFind(const char *idname); | ||||
| void nodeRegisterType(struct bNodeType *ntype); | void nodeRegisterType(struct bNodeType *ntype); | ||||
| void nodeUnregisterType(struct bNodeType *ntype); | void nodeUnregisterType(struct bNodeType *ntype); | ||||
| bool nodeTypeUndefined(struct bNode *node); | bool nodeTypeUndefined(struct bNode *node); | ||||
| struct GHashIterator *nodeTypeGetIterator(void); | struct GHashIterator *nodeTypeGetIterator(void); | ||||
| /* helper macros for iterating over node types */ | /* helper macros for iterating over node types */ | ||||
| #define NODE_TYPES_BEGIN(ntype) \ | #define NODE_TYPES_BEGIN(ntype) \ | ||||
| { \ | { \ | ||||
| GHashIterator *__node_type_iter__ = nodeTypeGetIterator(); \ | GHashIterator *__node_type_iter__ = nodeTypeGetIterator(); \ | ||||
| for (; !BLI_ghashIterator_done(__node_type_iter__); \ | for (; !BLI_ghashIterator_done(__node_type_iter__); \ | ||||
| BLI_ghashIterator_step(__node_type_iter__)) { \ | BLI_ghashIterator_step(__node_type_iter__)) { \ | ||||
| bNodeType *ntype = BLI_ghashIterator_getValue(__node_type_iter__); | bNodeType *ntype = (bNodeType *)BLI_ghashIterator_getValue(__node_type_iter__); | ||||
| #define NODE_TYPES_END \ | #define NODE_TYPES_END \ | ||||
| } \ | } \ | ||||
| BLI_ghashIterator_free(__node_type_iter__); \ | BLI_ghashIterator_free(__node_type_iter__); \ | ||||
| } \ | } \ | ||||
| ((void)0) | ((void)0) | ||||
| struct bNodeSocketType *nodeSocketTypeFind(const char *idname); | struct bNodeSocketType *nodeSocketTypeFind(const char *idname); | ||||
| void nodeRegisterSocketType(struct bNodeSocketType *stype); | void nodeRegisterSocketType(struct bNodeSocketType *stype); | ||||
| void nodeUnregisterSocketType(struct bNodeSocketType *stype); | void nodeUnregisterSocketType(struct bNodeSocketType *stype); | ||||
| bool nodeSocketIsRegistered(struct bNodeSocket *sock); | bool nodeSocketIsRegistered(struct bNodeSocket *sock); | ||||
| struct GHashIterator *nodeSocketTypeGetIterator(void); | struct GHashIterator *nodeSocketTypeGetIterator(void); | ||||
| const char *nodeStaticSocketType(int type, int subtype); | const char *nodeStaticSocketType(int type, int subtype); | ||||
| const char *nodeStaticSocketInterfaceType(int type, int subtype); | const char *nodeStaticSocketInterfaceType(int type, int subtype); | ||||
| /* helper macros for iterating over node types */ | /* helper macros for iterating over node types */ | ||||
| #define NODE_SOCKET_TYPES_BEGIN(stype) \ | #define NODE_SOCKET_TYPES_BEGIN(stype) \ | ||||
| { \ | { \ | ||||
| GHashIterator *__node_socket_type_iter__ = nodeSocketTypeGetIterator(); \ | GHashIterator *__node_socket_type_iter__ = nodeSocketTypeGetIterator(); \ | ||||
| for (; !BLI_ghashIterator_done(__node_socket_type_iter__); \ | for (; !BLI_ghashIterator_done(__node_socket_type_iter__); \ | ||||
| BLI_ghashIterator_step(__node_socket_type_iter__)) { \ | BLI_ghashIterator_step(__node_socket_type_iter__)) { \ | ||||
| bNodeSocketType *stype = BLI_ghashIterator_getValue(__node_socket_type_iter__); | bNodeSocketType *stype = (bNodeSocketType *)BLI_ghashIterator_getValue( \ | ||||
| __node_socket_type_iter__); | |||||
| #define NODE_SOCKET_TYPES_END \ | #define NODE_SOCKET_TYPES_END \ | ||||
| } \ | } \ | ||||
| BLI_ghashIterator_free(__node_socket_type_iter__); \ | BLI_ghashIterator_free(__node_socket_type_iter__); \ | ||||
| } \ | } \ | ||||
| ((void)0) | ((void)0) | ||||
| struct bNodeSocket *nodeFindSocket(const struct bNode *node, int in_out, const char *identifier); | struct bNodeSocket *nodeFindSocket(const struct bNode *node, int in_out, const char *identifier); | ||||
| ▲ Show 20 Lines • Show All 62 Lines • ▼ Show 20 Lines | |||||
| struct bNodeLink *nodeAddLink(struct bNodeTree *ntree, | struct bNodeLink *nodeAddLink(struct bNodeTree *ntree, | ||||
| struct bNode *fromnode, | struct bNode *fromnode, | ||||
| struct bNodeSocket *fromsock, | struct bNodeSocket *fromsock, | ||||
| struct bNode *tonode, | struct bNode *tonode, | ||||
| struct bNodeSocket *tosock); | struct bNodeSocket *tosock); | ||||
| void nodeRemLink(struct bNodeTree *ntree, struct bNodeLink *link); | void nodeRemLink(struct bNodeTree *ntree, struct bNodeLink *link); | ||||
| void nodeRemSocketLinks(struct bNodeTree *ntree, struct bNodeSocket *sock); | void nodeRemSocketLinks(struct bNodeTree *ntree, struct bNodeSocket *sock); | ||||
| bool nodeLinkIsHidden(struct bNodeLink *link); | bool nodeLinkIsHidden(const struct bNodeLink *link); | ||||
| void nodeInternalRelink(struct bNodeTree *ntree, struct bNode *node); | void nodeInternalRelink(struct bNodeTree *ntree, struct bNode *node); | ||||
| void nodeToView(struct bNode *node, float x, float y, float *rx, float *ry); | void nodeToView(const struct bNode *node, float x, float y, float *rx, float *ry); | ||||
| void nodeFromView(struct bNode *node, float x, float y, float *rx, float *ry); | void nodeFromView(const struct bNode *node, float x, float y, float *rx, float *ry); | ||||
| bool nodeAttachNodeCheck(struct bNode *node, struct bNode *parent); | bool nodeAttachNodeCheck(const struct bNode *node, const struct bNode *parent); | ||||
| void nodeAttachNode(struct bNode *node, struct bNode *parent); | void nodeAttachNode(struct bNode *node, struct bNode *parent); | ||||
| void nodeDetachNode(struct bNode *node); | void nodeDetachNode(struct bNode *node); | ||||
| void nodePositionRelative(struct bNode *from_node, | void nodePositionRelative(struct bNode *from_node, | ||||
| struct bNode *to_node, | struct bNode *to_node, | ||||
| struct bNodeSocket *from_sock, | struct bNodeSocket *from_sock, | ||||
| struct bNodeSocket *to_sock); | struct bNodeSocket *to_sock); | ||||
| void nodePositionPropagate(struct bNode *node); | void nodePositionPropagate(struct bNode *node); | ||||
| Show All 15 Lines | |||||
| void nodeChainIterBackwards(const bNodeTree *ntree, | void nodeChainIterBackwards(const bNodeTree *ntree, | ||||
| const bNode *node_start, | const bNode *node_start, | ||||
| bool (*callback)(bNode *, bNode *, void *), | bool (*callback)(bNode *, bNode *, void *), | ||||
| void *userdata, | void *userdata, | ||||
| int recursion_lvl); | int recursion_lvl); | ||||
| void nodeParentsIter(bNode *node, bool (*callback)(bNode *, void *), void *userdata); | void nodeParentsIter(bNode *node, bool (*callback)(bNode *, void *), void *userdata); | ||||
| struct bNodeLink *nodeFindLink(struct bNodeTree *ntree, | struct bNodeLink *nodeFindLink(struct bNodeTree *ntree, | ||||
| struct bNodeSocket *from, | const struct bNodeSocket *from, | ||||
| struct bNodeSocket *to); | const struct bNodeSocket *to); | ||||
| int nodeCountSocketLinks(struct bNodeTree *ntree, struct bNodeSocket *sock); | int nodeCountSocketLinks(const struct bNodeTree *ntree, const struct bNodeSocket *sock); | ||||
| void nodeSetSelected(struct bNode *node, bool select); | void nodeSetSelected(struct bNode *node, bool select); | ||||
| void nodeSetActive(struct bNodeTree *ntree, struct bNode *node); | void nodeSetActive(struct bNodeTree *ntree, struct bNode *node); | ||||
| struct bNode *nodeGetActive(struct bNodeTree *ntree); | struct bNode *nodeGetActive(struct bNodeTree *ntree); | ||||
| struct bNode *nodeGetActiveID(struct bNodeTree *ntree, short idtype); | struct bNode *nodeGetActiveID(struct bNodeTree *ntree, short idtype); | ||||
| bool nodeSetActiveID(struct bNodeTree *ntree, short idtype, struct ID *id); | bool nodeSetActiveID(struct bNodeTree *ntree, short idtype, struct ID *id); | ||||
| void nodeClearActive(struct bNodeTree *ntree); | void nodeClearActive(struct bNodeTree *ntree); | ||||
| void nodeClearActiveID(struct bNodeTree *ntree, short idtype); | void nodeClearActiveID(struct bNodeTree *ntree, short idtype); | ||||
| struct bNode *nodeGetActiveTexture(struct bNodeTree *ntree); | struct bNode *nodeGetActiveTexture(struct bNodeTree *ntree); | ||||
| void nodeUpdate(struct bNodeTree *ntree, struct bNode *node); | void nodeUpdate(struct bNodeTree *ntree, struct bNode *node); | ||||
| bool nodeUpdateID(struct bNodeTree *ntree, struct ID *id); | bool nodeUpdateID(struct bNodeTree *ntree, struct ID *id); | ||||
| void nodeUpdateInternalLinks(struct bNodeTree *ntree, struct bNode *node); | void nodeUpdateInternalLinks(struct bNodeTree *ntree, struct bNode *node); | ||||
| int nodeSocketIsHidden(struct bNodeSocket *sock); | int nodeSocketIsHidden(const struct bNodeSocket *sock); | ||||
| void ntreeTagUsedSockets(struct bNodeTree *ntree); | void ntreeTagUsedSockets(struct bNodeTree *ntree); | ||||
| void nodeSetSocketAvailability(struct bNodeSocket *sock, bool is_available); | void nodeSetSocketAvailability(struct bNodeSocket *sock, bool is_available); | ||||
| int nodeSocketLinkLimit(struct bNodeSocket *sock); | int nodeSocketLinkLimit(const struct bNodeSocket *sock); | ||||
| /* Node Clipboard */ | /* Node Clipboard */ | ||||
| void BKE_node_clipboard_init(struct bNodeTree *ntree); | void BKE_node_clipboard_init(const struct bNodeTree *ntree); | ||||
| void BKE_node_clipboard_clear(void); | void BKE_node_clipboard_clear(void); | ||||
| void BKE_node_clipboard_free(void); | void BKE_node_clipboard_free(void); | ||||
| bool BKE_node_clipboard_validate(void); | bool BKE_node_clipboard_validate(void); | ||||
| void BKE_node_clipboard_add_node(struct bNode *node); | void BKE_node_clipboard_add_node(struct bNode *node); | ||||
| void BKE_node_clipboard_add_link(struct bNodeLink *link); | 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_nodes(void); | ||||
| const struct ListBase *BKE_node_clipboard_get_links(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 */ | /* Node Instance Hash */ | ||||
| typedef struct bNodeInstanceHash { | 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; | } bNodeInstanceHash; | ||||
| typedef void (*bNodeInstanceValueFP)(void *value); | typedef void (*bNodeInstanceValueFP)(void *value); | ||||
| extern const bNodeInstanceKey NODE_INSTANCE_KEY_BASE; | extern const bNodeInstanceKey NODE_INSTANCE_KEY_BASE; | ||||
| extern const bNodeInstanceKey NODE_INSTANCE_KEY_NONE; | extern const bNodeInstanceKey NODE_INSTANCE_KEY_NONE; | ||||
| bNodeInstanceKey BKE_node_instance_key(bNodeInstanceKey parent_key, | bNodeInstanceKey BKE_node_instance_key(bNodeInstanceKey parent_key, | ||||
| struct bNodeTree *ntree, | const struct bNodeTree *ntree, | ||||
| struct bNode *node); | const struct bNode *node); | ||||
| bNodeInstanceHash *BKE_node_instance_hash_new(const char *info); | bNodeInstanceHash *BKE_node_instance_hash_new(const char *info); | ||||
| void BKE_node_instance_hash_free(bNodeInstanceHash *hash, bNodeInstanceValueFP valfreefp); | 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_insert(bNodeInstanceHash *hash, bNodeInstanceKey key, void *value); | ||||
| void *BKE_node_instance_hash_lookup(bNodeInstanceHash *hash, bNodeInstanceKey key); | void *BKE_node_instance_hash_lookup(bNodeInstanceHash *hash, bNodeInstanceKey key); | ||||
| int BKE_node_instance_hash_remove(bNodeInstanceHash *hash, | int BKE_node_instance_hash_remove(bNodeInstanceHash *hash, | ||||
| bNodeInstanceKey key, | bNodeInstanceKey key, | ||||
| bNodeInstanceValueFP valfreefp); | bNodeInstanceValueFP valfreefp); | ||||
| ▲ Show 20 Lines • Show All 43 Lines • ▼ Show 20 Lines | |||||
| #define NODE_INSTANCE_HASH_ITER(iter_, hash_) \ | #define NODE_INSTANCE_HASH_ITER(iter_, hash_) \ | ||||
| for (BKE_node_instance_hash_iterator_init(&iter_, hash_); \ | for (BKE_node_instance_hash_iterator_init(&iter_, hash_); \ | ||||
| BKE_node_instance_hash_iterator_done(&iter_) == false; \ | BKE_node_instance_hash_iterator_done(&iter_) == false; \ | ||||
| BKE_node_instance_hash_iterator_step(&iter_)) | BKE_node_instance_hash_iterator_step(&iter_)) | ||||
| /* Node Previews */ | /* Node Previews */ | ||||
| int BKE_node_preview_used(struct bNode *node); | bool BKE_node_preview_used(const struct bNode *node); | ||||
| bNodePreview *BKE_node_preview_verify( | bNodePreview *BKE_node_preview_verify( | ||||
| struct bNodeInstanceHash *previews, bNodeInstanceKey key, int xsize, int ysize, bool create); | struct bNodeInstanceHash *previews, bNodeInstanceKey key, int xsize, int ysize, bool create); | ||||
| bNodePreview *BKE_node_preview_copy(struct bNodePreview *preview); | bNodePreview *BKE_node_preview_copy(struct bNodePreview *preview); | ||||
| void BKE_node_preview_free(struct bNodePreview *preview); | void BKE_node_preview_free(struct bNodePreview *preview); | ||||
| void BKE_node_preview_init_tree(struct bNodeTree *ntree, | void BKE_node_preview_init_tree(struct bNodeTree *ntree, | ||||
| int xsize, | int xsize, | ||||
| int ysize, | int ysize, | ||||
| int create_previews); | int create_previews); | ||||
| ▲ Show 20 Lines • Show All 577 Lines • ▼ Show 20 Lines | |||||
| #define GEO_NODE_ATTRIBUTE_COLOR_RAMP 1013 | #define GEO_NODE_ATTRIBUTE_COLOR_RAMP 1013 | ||||
| #define GEO_NODE_POINT_SEPARATE 1014 | #define GEO_NODE_POINT_SEPARATE 1014 | ||||
| #define GEO_NODE_ATTRIBUTE_COMPARE 1015 | #define GEO_NODE_ATTRIBUTE_COMPARE 1015 | ||||
| #define GEO_NODE_POINT_ROTATE 1016 | #define GEO_NODE_POINT_ROTATE 1016 | ||||
| #define GEO_NODE_ATTRIBUTE_VECTOR_MATH 1017 | #define GEO_NODE_ATTRIBUTE_VECTOR_MATH 1017 | ||||
| #define GEO_NODE_ALIGN_ROTATION_TO_VECTOR 1018 | #define GEO_NODE_ALIGN_ROTATION_TO_VECTOR 1018 | ||||
| #define GEO_NODE_POINT_TRANSLATE 1019 | #define GEO_NODE_POINT_TRANSLATE 1019 | ||||
| #define GEO_NODE_POINT_SCALE 1020 | #define GEO_NODE_POINT_SCALE 1020 | ||||
| #define GEO_NODE_ATTRIBUTE_SAMPLE_TEXTURE 1021 | |||||
| #define GEO_NODE_POINTS_TO_VOLUME 1022 | |||||
| #define GEO_NODE_COLLECTION_INFO 1023 | |||||
| /** \} */ | /** \} */ | ||||
| /* -------------------------------------------------------------------- */ | /* -------------------------------------------------------------------- */ | ||||
| /** \name Function Nodes | /** \name Function Nodes | ||||
| * \{ */ | * \{ */ | ||||
| #define FN_NODE_BOOLEAN_MATH 1200 | #define FN_NODE_BOOLEAN_MATH 1200 | ||||
| Show All 28 Lines | |||||