40 if (
input ==
nullptr) {
51 if (strip->
scene ==
nullptr) {
71 VectorSet<Strip *> &strips = lookup->strips_by_compositor_node_group.lookup_or_add_default(
79 if (!strip->is_effect()) {
91 if (parent_meta !=
nullptr) {
93 lookup->owner_by_channel.add(channel, parent_meta);
98 lookup->strip_by_name.add(strip->name + 2, strip);
99 lookup->meta_by_strip.add(strip, parent_meta);
113 lookup->is_valid =
true;
118 StripLookup *lookup = MEM_new<StripLookup>(__func__);
140 if (*lookup && (*lookup)->is_valid) {
160 return lookup->strip_by_name.lookup_default(key,
nullptr);
179 return lookup->strips_by_scene;
190 VectorSet<Strip *> &strips = lookup->strips_by_compositor_node_group.lookup_or_add_default(key);
200 return lookup->meta_by_strip.lookup_default(key,
nullptr);
219 return lookup->owner_by_channel.lookup_default(channel,
nullptr);
230 if (lookup !=
nullptr) {
231 lookup->is_valid =
false;
#define LISTBASE_FOREACH(type, var, list)
These structs are the foundation for all linked lists in the library system.
@ eSeqModifierType_Compositor
Read Guarded memory(de)allocation.
Span< Key > as_span() const
Strip * lookup_meta_by_strip(Editing *ed, const Strip *key)
blender::Map< const Scene *, VectorSet< Strip * > > & lookup_strips_by_scene_map_get(Editing *ed)
Strip * lookup_strip_by_name(Editing *ed, const char *key)
Span< Strip * > lookup_strips_by_scene(Editing *ed, const Scene *key)
static void strip_lookup_rebuild(const Editing *ed, StripLookup **lookup)
blender::Span< Strip * > SEQ_lookup_effects_by_strip(Editing *ed, const Strip *key)
static void strip_lookup_build_effect(Strip *strip, StripLookup *lookup)
Span< Strip * > lookup_strips_by_compositor_node_group(Editing *ed, const bNodeTree *key)
Strip * lookup_strip_by_channel_owner(Editing *ed, const SeqTimelineChannel *channel)
static void strip_lookup_update_if_needed(const Editing *ed, StripLookup **lookup)
static void strip_by_scene_lookup_build(Strip *strip, StripLookup *lookup)
static void strip_lookup_free(StripLookup **lookup)
static void strip_lookup_build_from_seqbase(Strip *parent_meta, const ListBase *seqbase, StripLookup *lookup)
static void strip_lookup_build(const Editing *ed, StripLookup *lookup)
void strip_lookup_invalidate(const Editing *ed)
static void strip_by_compositor_node_group_lookup_build(Strip *strip, StripLookup *lookup)
static void strip_lookup_append_effect(const Strip *input, Strip *effect, StripLookup *lookup)
static StripLookup * strip_lookup_new()
struct bNodeTree * node_group
blender::Map< const bNodeTree *, VectorSet< Strip * > > strips_by_compositor_node_group
blender::Map< const Scene *, VectorSet< Strip * > > strips_by_scene
blender::Map< const SeqTimelineChannel *, Strip * > owner_by_channel
blender::Map< const Strip *, blender::VectorSet< Strip * > > effects_by_strip
blender::Map< const Strip *, Strip * > meta_by_strip
blender::Map< std::string, Strip * > strip_by_name