32#include "RNA_prototypes.hh"
47 if (!sequencer_scene) {
73 *r_id = &sequencer_scene->
id;
106 while (node !=
nullptr) {
110 local_node->
runtime->original = node;
116 local_node = local_node->
next;
131 if (lnode->storage) {
132 if (orig_node->storage) {
186 return from_type == to_type;
197 tt->
idname =
"CompositorNodeTree";
200 tt->
ui_icon = ICON_NODE_COMPOSITING;
201 tt->
ui_description =
N_(
"Create effects and post-process renders, images, and the 3D Viewport");
221 if (ntree ==
nullptr) {
225 for (
bNode *node : ntree->all_nodes()) {
232 node->typeinfo->updatefunc(ntree, node);
245 sce_iter = (
Scene *)sce_iter->id.next)
247 if (sce_iter->compositing_node_group) {
248 for (
bNode *node : sce_iter->compositing_node_group->all_nodes()) {
249 if (node->id == (
ID *)scene) {
262 if (ntree ==
nullptr) {
266 for (
bNode *node : ntree->all_nodes()) {
267 node->runtime->need_exec = 0;
268 if (node->is_group()) {
276 node->
runtime->need_exec =
true;
SpaceNode * CTX_wm_space_node(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
Scene * CTX_data_sequencer_scene(const bContext *C)
#define NODE_CLASS_OUTPUT
#define NODE_CLASS_INTERFACE
#define NODE_CLASS_CONVERTER
#define NODE_CLASS_DISTORT
#define NODE_CLASS_OP_VECTOR
#define NODE_CLASS_LAYOUT
#define NODE_CLASS_OP_COLOR
#define NODE_CLASS_OP_FILTER
#define CMP_NODE_CRYPTOMATTE
#define CMP_NODE_MOVIEDISTORTION
#define CMP_NODE_R_LAYERS
void BKE_ntree_update(Main &bmain, std::optional< blender::Span< bNodeTree * > > modified_trees=std::nullopt, const NodeTreeUpdateExtraParams ¶ms={})
void BKE_ntree_update_tag_node_property(bNodeTree *ntree, bNode *node)
struct MovieDistortion * BKE_tracking_distortion_copy(struct MovieDistortion *distortion)
void BKE_tracking_distortion_free(struct MovieDistortion *distortion)
#define LISTBASE_FOREACH(type, var, list)
@ CMP_NODE_CRYPTOMATTE_SOURCE_RENDER
@ eSeqModifierType_Compositor
@ SNODE_COMPOSITOR_SEQUENCER
bNode * node_find_node_by_name(bNodeTree &ntree, StringRefNull name)
void node_tree_set_output(bNodeTree &ntree)
void node_tree_type_add(bNodeTreeType &nt)
void(*)(void *calldata, int nclass, StringRefNull name) bNodeClassCallback
void node_preview_merge_tree(bNodeTree *to_ntree, bNodeTree *from_ntree, bool remove_old)
bool node_is_static_socket_type(const bNodeSocketType &stype)
Editing * editing_get(const Scene *scene)
Strip * select_active_get(const Scene *scene)
StripModifierData * modifier_get_active(const Strip *strip)
void ntree_update_reroute_nodes(bNodeTree *ntree)
void node_cmp_rlayers_outputs(bNodeTree *ntree, bNode *node)
static void composite_node_add_init(bNodeTree *, bNode *bnode)
void ntreeCompositTagRender(Scene *scene)
static void localize(bNodeTree *localtree, bNodeTree *ntree)
void ntreeCompositTagNeedExec(bNode *node)
static void update(bNodeTree *ntree)
static void local_merge(Main *, bNodeTree *localtree, bNodeTree *ntree)
void ntreeCompositUpdateRLayers(bNodeTree *ntree)
void ntreeCompositClearTags(bNodeTree *ntree)
static bool composite_node_tree_socket_type_valid(blender::bke::bNodeTreeType *, blender::bke::bNodeSocketType *socket_type)
static void composite_get_from_context(const bContext *C, blender::bke::bNodeTreeType *, bNodeTree **r_ntree, ID **r_id, ID **r_from)
blender::bke::bNodeTreeType * ntreeType_Composite
static bool composite_validate_link(eNodeSocketDatatype from_type, eNodeSocketDatatype to_type)
void register_node_tree_type_cmp()
static void foreach_nodeclass(void *calldata, blender::bke::bNodeClassCallback func)
struct bNodeTree * compositing_node_group
struct bNodeTree * node_group
bNodeTypeHandle * typeinfo
bNodeRuntimeHandle * runtime
void(* update)(bNodeTree *ntree)
void(* foreach_nodeclass)(void *calldata, bNodeClassCallback func)
void(* node_add_init)(bNodeTree *ntree, bNode *bnode)
std::string ui_description
void(* get_from_context)(const bContext *C, bNodeTreeType *ntreetype, bNodeTree **r_ntree, ID **r_id, ID **r_from)
void(* localize)(bNodeTree *localtree, bNodeTree *ntree)
void(* local_merge)(Main *bmain, bNodeTree *localtree, bNodeTree *ntree)
bool(* validate_link)(eNodeSocketDatatype from, eNodeSocketDatatype to)
bool(* valid_socket_type)(bNodeTreeType *ntreetype, bNodeSocketType *socket_type)