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) {
120 const int timeline_frame,
136 const int timeline_frame)
156 if ((strip->flag &
SELECT) != 0) {
165 const int timeline_frame)
186 bool strip_have_effect_in_stack =
false;
187 for (
Strip *strip_iter : strips) {
195 if (strip->
channel >= strip_iter->channel) {
199 strip_have_effect_in_stack =
true;
209 if (strip_have_effect_in_stack) {
231 const int timeline_frame,
232 const int displayed_channel)
235 if (displayed_channel != 0) {
246 if ((strip->flag &
SELECT) != 0) {
255 Strip *reference_strip,
259 if (r_strips.
contains(reference_strip)) {
263 r_strips.
add(reference_strip);
266 if (reference_strip->is_effect()) {
267 if (reference_strip->
input1) {
270 if (reference_strip->
input2) {
277 if (strip_test->input1 == reference_strip || strip_test->
input2 == reference_strip) {
284 Strip *reference_strip,
290 pending.
append(reference_strip);
299 r_strips.
add(current);
302 for (
Strip *connection : connections) {
303 if (!r_strips.
contains(connection)) {
304 pending.
append(connection);
310 for (
Strip *effect_strip : effect_chain) {
311 if (!r_strips.
contains(effect_strip)) {
312 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)
void foreach_strip(ListBase *seqbase, ForEachFunc callback, void *user_data)
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)
static void query_strips_recursive_at_frame(const Scene *scene, const ListBase *seqbase, const int timeline_frame, VectorSet< Strip * > &strips)
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 must_render_strip(const VectorSet< Strip * > &strips, Strip *strip)
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)
int effect_get_num_inputs(int strip_type)