29 if (!callback(strip, user_data)) {
46 if (!callback(strip)) {
72 void strip_query_func(
const Scene *scene,
73 Strip *strip_reference,
78 strip_query_func(scene, strip_reference, seqbase, strips);
85 void strip_query_func(
const Scene *scene,
86 Strip *strip_reference,
93 for (
Strip *strip : strips) {
131 if ((strip->flag &
SELECT) != 0) {
140 const int timeline_frame)
161 bool strip_have_effect_in_stack =
false;
162 for (
Strip *strip_iter : strips) {
172 if (strip->
channel >= strip_iter->channel) {
176 strip_have_effect_in_stack =
true;
186 if (strip_have_effect_in_stack) {
208 const int timeline_frame,
209 const int displayed_channel)
212 if (displayed_channel != 0) {
223 if ((strip->flag &
SELECT) != 0) {
232 Strip *reference_strip,
236 if (r_strips.
contains(reference_strip)) {
240 r_strips.
add(reference_strip);
244 if (reference_strip->
input1) {
247 if (reference_strip->
input2) {
254 if (strip_test->input1 == reference_strip || strip_test->
input2 == reference_strip) {
261 Strip *reference_strip,
267 pending.
append(reference_strip);
276 r_strips.
add(current);
279 for (
Strip *connection : connections) {
280 if (!r_strips.
contains(connection)) {
281 pending.
append(connection);
287 for (
Strip *effect_strip : effect_chain) {
288 if (!r_strips.
contains(effect_strip)) {
289 pending.
append(effect_strip);
#define LISTBASE_FOREACH(type, var, list)
void add_multiple(Span< Key > keys)
bool contains(const Key &key) const
int64_t remove_if(Predicate &&predicate)
void append(const T &value)
bool render_is_muted(const ListBase *channels, const Strip *strip)
VectorSet< Strip * > query_all_strips(ListBase *seqbase)
static void collection_filter_channel_up_to_incl(VectorSet< Strip * > &strips, const int channel)
VectorSet< Strip * > query_selected_strips(ListBase *seqbase)
VectorSet< Strip * > query_unselected_strips(ListBase *seqbase)
static void query_all_strips_recursive(const ListBase *seqbase, VectorSet< Strip * > &strips)
static bool strip_for_each_recursive(ListBase *seqbase, ForEachFunc callback, void *user_data)
static void collection_filter_rendered_strips(VectorSet< Strip * > &strips, ListBase *channels)
void query_strip_effect_chain(const Scene *scene, Strip *reference_strip, ListBase *seqbase, VectorSet< Strip * > &r_strips)
blender::VectorSet< Strip * > connected_strips_get(const Strip *strip)
void for_each_callback(ListBase *seqbase, ForEachFunc callback, void *user_data)
void iterator_set_expand(const Scene *scene, ListBase *seqbase, VectorSet< Strip * > &strips, void strip_query_func(const Scene *scene, Strip *strip_reference, ListBase *seqbase, VectorSet< Strip * > &strips))
bool time_strip_intersects_frame(const Scene *scene, const Strip *strip, const int timeline_frame)
bool(*)(Strip *strip, void *user_data) ForEachFunc
static VectorSet< Strip * > query_strips_at_frame(const Scene *scene, ListBase *seqbase, const int timeline_frame)
VectorSet< Strip * > query_by_reference(Strip *strip_reference, const Scene *scene, ListBase *seqbase, void strip_query_func(const Scene *scene, Strip *strip_reference, ListBase *seqbase, VectorSet< Strip * > &strips))
bool relation_is_effect_of_strip(const Strip *effect, const Strip *input)
VectorSet< Strip * > query_rendered_strips(const Scene *scene, ListBase *channels, ListBase *seqbase, const int timeline_frame, const int displayed_channel)
void query_strip_connected_and_effect_chain(const Scene *scene, Strip *reference_strip, ListBase *seqbase, VectorSet< Strip * > &r_strips)
static bool must_render_strip(const VectorSet< Strip * > &strips, Strip *strip)
int effect_get_num_inputs(int strip_type)