Blender Git Commit Log

Git Commits -> Revision 700fe73

Revision 700fe73 by Richard Antalik (master)
May 7, 2021, 08:26 (GMT)
VSE: New iterator design

This iterator design provides means to create simple and flexible API
to query and work with collection of strips. It should be used in cases
when conditions require multiple stages of recursive iteration of all
strips or similar complex scenarios.

Quick API overview:
Basic queries are standalone functions that return SeqCollection
Use SEQ_collection_create() and SEQ_collection_free() to construct
such query functions.
Use these functions to get strips of known conditions, like selected
strips, movie strips, muted strips and so on.

Use SEQ_reference_query() when querying strips with relation to
some reference strip. For example to get its effects, strips that have
same type or use same input file and so on.
These aren't standalone functions because often you need to query strips
relative to each strip in collection.

Use SEQ_collection_expand() to query strips relative to each strip
in collection. These will be merged to original collection.

Use SEQ_collection_merge() to merge 2 collections

To iterate collection elements use macro SEQ_ITERATOR_FOREACH()

This API is quite specific, but I think it is best suited for tasks
that are usualy solved in sequencer codebase.

Old sequencer iterator has been completely removed.
SEQ_ALL_BEGIN and SEQ_ALL_END macros re-use new iterator design.

As initial use for this iterator select_grouped_effect_link()
function has been rewritten. It was not only broken, but also it used
DNA fields to aid iterating strips.

Reviewed By: sergey

Differential Revision: https://developer.blender.org/D10337

Commit Details:

Full Hash: 700fe73560fb4fef9238910d0b49782d4e44795a
Parent Commit: 232b10f
Lines Changed: +267, -134

4 Modified Paths:

/.clang-format (+1, -0) (Diff)
/source/blender/editors/space_sequencer/sequencer_select.c (+59, -48) (Diff)
/source/blender/sequencer/intern/iterator.c (+162, -70) (Diff)
/source/blender/sequencer/SEQ_iterator.h (+45, -16) (Diff)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021