Blender  V3.3
Functions
iterator.c File Reference
#include <string.h>
#include "MEM_guardedalloc.h"
#include "DNA_scene_types.h"
#include "DNA_sequence_types.h"
#include "BLI_ghash.h"
#include "BLI_listbase.h"
#include "BKE_scene.h"
#include "SEQ_iterator.h"
#include "SEQ_relations.h"
#include "SEQ_render.h"
#include "SEQ_time.h"
#include "render.h"

Go to the source code of this file.

Functions

static void query_all_strips_recursive (ListBase *seqbase, SeqCollection *collection)
 
SeqCollection * SEQ_query_all_strips_recursive (ListBase *seqbase)
 
SeqCollection * SEQ_query_all_strips (ListBase *seqbase)
 
SeqCollection * SEQ_query_selected_strips (ListBase *seqbase)
 
static SeqCollection * query_strips_at_frame (const Scene *scene, ListBase *seqbase, const int timeline_frame)
 
static void collection_filter_channel_up_to_incl (SeqCollection *collection, const int channel)
 
static bool must_render_strip (const Sequence *seq, SeqCollection *strips_at_timeline_frame)
 
static void collection_filter_rendered_strips (ListBase *channels, SeqCollection *collection)
 
SeqCollection * SEQ_query_rendered_strips (const Scene *scene, ListBase *channels, ListBase *seqbase, const int timeline_frame, const int displayed_channel)
 
SeqCollection * SEQ_query_unselected_strips (ListBase *seqbase)
 
void SEQ_query_strip_effect_chain (const Scene *scene, Sequence *seq_reference, ListBase *seqbase, SeqCollection *collection)
 
void SEQ_filter_selected_strips (SeqCollection *collection)
 
bool SEQ_iterator_ensure (SeqCollection *collection, SeqIterator *iterator, Sequence **r_seq)
 
Sequence * SEQ_iterator_yield (SeqIterator *iterator)
 
static bool seq_for_each_recursive (ListBase *seqbase, SeqForEachFunc callback, void *user_data)
 
void SEQ_for_each_callback (ListBase *seqbase, SeqForEachFunc callback, void *user_data)
 
void SEQ_collection_free (SeqCollection *collection)
 
SeqCollection * SEQ_collection_create (const char *name)
 
uint SEQ_collection_len (const SeqCollection *collection)
 
bool SEQ_collection_has_strip (const Sequence *seq, const SeqCollection *collection)
 
SeqCollection * SEQ_query_by_reference (Sequence *seq_reference, const Scene *scene, ListBase *seqbase, void seq_query_func(const Scene *scene, Sequence *seq_reference, ListBase *seqbase, SeqCollection *collection))
 
bool SEQ_collection_append_strip (Sequence *seq, SeqCollection *collection)
 
bool SEQ_collection_remove_strip (Sequence *seq, SeqCollection *collection)
 
void SEQ_collection_merge (SeqCollection *collection_dst, SeqCollection *collection_src)
 
void SEQ_collection_exclude (SeqCollection *collection, SeqCollection *exclude_elements)
 
void SEQ_collection_expand (const Scene *scene, ListBase *seqbase, SeqCollection *collection, void seq_query_func(const Scene *scene, Sequence *seq_reference, ListBase *seqbase, SeqCollection *collection))
 
SeqCollection * SEQ_collection_duplicate (SeqCollection *collection)
 

Function Documentation

◆ collection_filter_channel_up_to_incl()

static void collection_filter_channel_up_to_incl ( SeqCollection *  collection,
const int  channel 
)
static

◆ collection_filter_rendered_strips()

static void collection_filter_rendered_strips ( ListBase *  channels,
SeqCollection *  collection 
)
static

◆ must_render_strip()

static bool must_render_strip ( const Sequence *  seq,
SeqCollection *  strips_at_timeline_frame 
)
static

◆ query_all_strips_recursive()

static void query_all_strips_recursive ( ListBase *  seqbase,
SeqCollection *  collection 
)
static

◆ query_strips_at_frame()

static SeqCollection* query_strips_at_frame ( const Scene *  scene,
ListBase *  seqbase,
const int  timeline_frame 
)
static

◆ SEQ_collection_append_strip()

bool SEQ_collection_append_strip ( struct Sequence *  seq,
SeqCollection *  collection 
)

◆ SEQ_collection_create()

SeqCollection* SEQ_collection_create ( const char *  name)

◆ SEQ_collection_duplicate()

SeqCollection* SEQ_collection_duplicate ( SeqCollection *  collection)

Duplicate collection

Parameters
collectioncollection to be duplicated
Returns
duplicate of collection

Definition at line 172 of file iterator.c.

References SEQ_collection_append_strip(), SEQ_collection_create(), and SEQ_ITERATOR_FOREACH.

Referenced by query_snap_targets(), and query_time_dependent_strips_strips().

◆ SEQ_collection_exclude()

void SEQ_collection_exclude ( SeqCollection *  collection,
SeqCollection *  exclude_elements 
)

Remove strips from collection that are also in exclude_elements. Source collection will be freed.

Parameters
collectioncollection from which strips are removed
exclude_elementscollection of strips to be removed

Definition at line 142 of file iterator.c.

References SEQ_collection_free(), SEQ_collection_remove_strip(), and SEQ_ITERATOR_FOREACH.

Referenced by query_snap_targets().

◆ SEQ_collection_expand()

void SEQ_collection_expand ( const Scene *  scene,
ListBase *  seqbase,
SeqCollection *  collection,
void   seq_query_funcconst Scene *scene, Sequence *seq_reference, ListBase *seqbase, SeqCollection *collection 
)

◆ SEQ_collection_free()

void SEQ_collection_free ( SeqCollection *  collection)

◆ SEQ_collection_has_strip()

bool SEQ_collection_has_strip ( const Sequence *  seq,
const SeqCollection *  collection 
)

◆ SEQ_collection_len()

uint SEQ_collection_len ( const SeqCollection *  collection)

◆ SEQ_collection_merge()

void SEQ_collection_merge ( SeqCollection *  collection_dst,
SeqCollection *  collection_src 
)

Move strips from collection_src to collection_dst. Source collection will be freed.

Parameters
collection_dstdestination collection
collection_srcsource collection

Definition at line 133 of file iterator.c.

References SEQ_collection_append_strip(), SEQ_collection_free(), and SEQ_ITERATOR_FOREACH.

Referenced by SEQ_collection_expand().

◆ SEQ_collection_remove_strip()

bool SEQ_collection_remove_strip ( struct Sequence *  seq,
SeqCollection *  collection 
)

Remove strip from collection.

Parameters
seqstrip to be removed
collectioncollection from which strip will be removed
Returns
true if strip exists in set and it was removed from set, otherwise false

Definition at line 128 of file iterator.c.

References BLI_gset_remove(), NULL, and SeqCollection::set.

Referenced by collection_filter_channel_up_to_incl(), collection_filter_rendered_strips(), query_overwrite_targets(), query_scene_strips(), query_time_dependent_strips_strips(), SEQ_collection_exclude(), and SEQ_filter_selected_strips().

◆ SEQ_filter_selected_strips()

void SEQ_filter_selected_strips ( SeqCollection *  collection)

◆ SEQ_for_each_callback()

void SEQ_for_each_callback ( struct ListBase *  seqbase,
SeqForEachFunc  callback,
void *  user_data 
)

◆ seq_for_each_recursive()

static bool seq_for_each_recursive ( ListBase *  seqbase,
SeqForEachFunc  callback,
void *  user_data 
)
static

Definition at line 60 of file iterator.c.

References callback, LISTBASE_FOREACH, SEQ_TYPE_META, and user_data.

Referenced by SEQ_for_each_callback().

◆ SEQ_iterator_ensure()

bool SEQ_iterator_ensure ( SeqCollection *  collection,
SeqIterator *  iterator,
Sequence **  r_seq 
)

◆ SEQ_iterator_yield()

Sequence* SEQ_iterator_yield ( SeqIterator *  iterator)

Utility function for SEQ_ITERATOR_FOREACH macro. Yield collection element

Parameters
iteratoriterator to be initialized
Returns
collection element or NULL when iteration has ended

Definition at line 52 of file iterator.c.

References BLI_gsetIterator_done(), BLI_gsetIterator_getKey(), BLI_gsetIterator_step(), SeqIterator::gsi, and NULL.

◆ SEQ_query_all_strips()

SeqCollection* SEQ_query_all_strips ( ListBase *  seqbase)

Query all strips in seqbase. This does not include strips nested in meta strips.

Parameters
seqbaseListBase in which strips are queried
Returns
strip collection

Definition at line 206 of file iterator.c.

References LISTBASE_FOREACH, SEQ_collection_append_strip(), and SEQ_collection_create().

Referenced by all_strips_from_context(), seq_frame_apply_snap(), and seq_time_gap_info_get().

◆ SEQ_query_all_strips_recursive()

SeqCollection* SEQ_query_all_strips_recursive ( ListBase *  seqbase)

Query all strips in seqbase and nested meta strips.

Parameters
seqbaseListBase in which strips are queried
Returns
strip collection

Definition at line 194 of file iterator.c.

References LISTBASE_FOREACH, query_all_strips_recursive(), SEQ_collection_append_strip(), SEQ_collection_create(), and SEQ_TYPE_META.

Referenced by query_scene_strips(), and SEQ_get_meta_by_seqbase().

◆ SEQ_query_by_reference()

SeqCollection* SEQ_query_by_reference ( Sequence *  seq_reference,
const Scene *  scene,
ListBase *  seqbase,
void   seq_query_funcconst Scene *scene, Sequence *seq_reference, ListBase *seqbase, SeqCollection *collection 
)

Definition at line 105 of file iterator.c.

References scene, and SEQ_collection_create().

Referenced by SEQ_collection_expand(), and seq_transform_handle_overwrite_trim().

◆ SEQ_query_rendered_strips()

SeqCollection* SEQ_query_rendered_strips ( const Scene *  scene,
ListBase *  channels,
ListBase *  seqbase,
const int  timeline_frame,
const int  displayed_channel 
)

◆ SEQ_query_selected_strips()

SeqCollection* SEQ_query_selected_strips ( struct ListBase *  seqbase)

Query all selected strips in seqbase.

Parameters
seqbaseListBase in which strips are queried
Returns
strip collection

Definition at line 215 of file iterator.c.

References LISTBASE_FOREACH, SELECT, SEQ_collection_append_strip(), and SEQ_collection_create().

Referenced by query_time_dependent_strips_strips(), selected_strips_from_context(), and transform_snap_sequencer_data_alloc().

◆ SEQ_query_strip_effect_chain()

void SEQ_query_strip_effect_chain ( const Scene *  scene,
Sequence *  seq_reference,
ListBase *  seqbase,
SeqCollection *  collection 
)

◆ SEQ_query_unselected_strips()

SeqCollection* SEQ_query_unselected_strips ( struct ListBase *  seqbase)

Query all unselected strips in seqbase.

Parameters
seqbaseListBase in which strips are queried
Returns
strip collection

Definition at line 323 of file iterator.c.

References LISTBASE_FOREACH, SELECT, SEQ_collection_append_strip(), and SEQ_collection_create().

Referenced by query_overwrite_targets().