Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/sequencer/intern/iterator.c')
-rw-r--r--source/blender/sequencer/intern/iterator.c37
1 files changed, 23 insertions, 14 deletions
diff --git a/source/blender/sequencer/intern/iterator.c b/source/blender/sequencer/intern/iterator.c
index 2710edd6e80..acf6776c4ed 100644
--- a/source/blender/sequencer/intern/iterator.c
+++ b/source/blender/sequencer/intern/iterator.c
@@ -103,13 +103,15 @@ bool SEQ_collection_has_strip(const Sequence *seq, const SeqCollection *collecti
}
SeqCollection *SEQ_query_by_reference(Sequence *seq_reference,
+ const Scene *scene,
ListBase *seqbase,
- void seq_query_func(Sequence *seq_reference,
+ void seq_query_func(const Scene *scene,
+ Sequence *seq_reference,
ListBase *seqbase,
SeqCollection *collection))
{
SeqCollection *collection = SEQ_collection_create(__func__);
- seq_query_func(seq_reference, seqbase, collection);
+ seq_query_func(scene, seq_reference, seqbase, collection);
return collection;
}
bool SEQ_collection_append_strip(Sequence *seq, SeqCollection *collection)
@@ -146,9 +148,11 @@ void SEQ_collection_exclude(SeqCollection *collection, SeqCollection *exclude_el
SEQ_collection_free(exclude_elements);
}
-void SEQ_collection_expand(ListBase *seqbase,
+void SEQ_collection_expand(const Scene *scene,
+ ListBase *seqbase,
SeqCollection *collection,
- void seq_query_func(Sequence *seq_reference,
+ void seq_query_func(const Scene *scene,
+ Sequence *seq_reference,
ListBase *seqbase,
SeqCollection *collection))
{
@@ -157,7 +161,8 @@ void SEQ_collection_expand(ListBase *seqbase,
Sequence *seq;
SEQ_ITERATOR_FOREACH (seq, collection) {
- SEQ_collection_merge(query_matches, SEQ_query_by_reference(seq, seqbase, seq_query_func));
+ SEQ_collection_merge(query_matches,
+ SEQ_query_by_reference(seq, scene, seqbase, seq_query_func));
}
/* Merge all expanded results in provided SeqIteratorCollection. */
@@ -219,12 +224,14 @@ SeqCollection *SEQ_query_selected_strips(ListBase *seqbase)
return collection;
}
-static SeqCollection *query_strips_at_frame(ListBase *seqbase, const int timeline_frame)
+static SeqCollection *query_strips_at_frame(const Scene *scene,
+ ListBase *seqbase,
+ const int timeline_frame)
{
SeqCollection *collection = SEQ_collection_create(__func__);
LISTBASE_FOREACH (Sequence *, seq, seqbase) {
- if (SEQ_time_strip_intersects_frame(seq, timeline_frame)) {
+ if (SEQ_time_strip_intersects_frame(scene, seq, timeline_frame)) {
SEQ_collection_append_strip(seq, collection);
}
}
@@ -299,12 +306,13 @@ static void collection_filter_rendered_strips(ListBase *channels, SeqCollection
}
}
-SeqCollection *SEQ_query_rendered_strips(ListBase *channels,
+SeqCollection *SEQ_query_rendered_strips(const Scene *scene,
+ ListBase *channels,
ListBase *seqbase,
const int timeline_frame,
const int displayed_channel)
{
- SeqCollection *collection = query_strips_at_frame(seqbase, timeline_frame);
+ SeqCollection *collection = query_strips_at_frame(scene, seqbase, timeline_frame);
if (displayed_channel != 0) {
collection_filter_channel_up_to_incl(collection, displayed_channel);
}
@@ -324,7 +332,8 @@ SeqCollection *SEQ_query_unselected_strips(ListBase *seqbase)
return collection;
}
-void SEQ_query_strip_effect_chain(Sequence *seq_reference,
+void SEQ_query_strip_effect_chain(const Scene *scene,
+ Sequence *seq_reference,
ListBase *seqbase,
SeqCollection *collection)
{
@@ -335,13 +344,13 @@ void SEQ_query_strip_effect_chain(Sequence *seq_reference,
/* Find all strips that seq_reference is connected to. */
if (seq_reference->type & SEQ_TYPE_EFFECT) {
if (seq_reference->seq1) {
- SEQ_query_strip_effect_chain(seq_reference->seq1, seqbase, collection);
+ SEQ_query_strip_effect_chain(scene, seq_reference->seq1, seqbase, collection);
}
if (seq_reference->seq2) {
- SEQ_query_strip_effect_chain(seq_reference->seq2, seqbase, collection);
+ SEQ_query_strip_effect_chain(scene, seq_reference->seq2, seqbase, collection);
}
if (seq_reference->seq3) {
- SEQ_query_strip_effect_chain(seq_reference->seq3, seqbase, collection);
+ SEQ_query_strip_effect_chain(scene, seq_reference->seq3, seqbase, collection);
}
}
@@ -349,7 +358,7 @@ void SEQ_query_strip_effect_chain(Sequence *seq_reference,
LISTBASE_FOREACH (Sequence *, seq_test, seqbase) {
if (seq_test->seq1 == seq_reference || seq_test->seq2 == seq_reference ||
seq_test->seq3 == seq_reference) {
- SEQ_query_strip_effect_chain(seq_test, seqbase, collection);
+ SEQ_query_strip_effect_chain(scene, seq_test, seqbase, collection);
}
}
}