54 char name[
sizeof(seq_a->
name)];
56 if (seq_a->
len != seq_b->
len) {
57 *error_str =
N_(
"Strips must be the same length");
64 *error_str =
N_(
"Strips were not compatible");
70 *error_str =
N_(
"Strips were not compatible");
76 *error_str =
N_(
"Strips must have the same number of inputs");
114 for (seq = seqbasep->
first; seq; seq = seq->
next) {
120 if (seq == metaseq) {
159 for (smd = user_seq->modifiers.first; smd; smd = smd->
next) {
166 if ((user_seq->seq1 && user_seq->seq1 == seq) || (user_seq->seq2 && user_seq->seq2 == seq) ||
167 (user_seq->seq3 && user_seq->seq3 == seq)) {
213 if (seq_test == seq) {
223 const char **error_str)
230 *error_str =
N_(
"Can not move strip to non-meta strip");
234 if (src_seq == dst_seqm) {
235 *error_str =
N_(
"Strip can not be moved into itself");
239 if (seqbase == &dst_seqm->
seqbase) {
240 *error_str =
N_(
"Moved strip is already inside provided meta strip");
245 *error_str =
N_(
"Moved strip is parent of provided meta strip");
250 *error_str =
N_(
"Can not move strip to different scene");
276 if (timeline_frame < seq->start) {
277 seq->
start = timeline_frame - 1;
283 else if ((timeline_frame >= seq->
start) && (timeline_frame <= (seq->
start + seq->
len))) {
289 else if ((seq->
start + seq->
len) < timeline_frame) {
297 if (timeline_frame < seq->start) {
301 else if ((timeline_frame >= seq->
start) && (timeline_frame <= (seq->
start + seq->
len))) {
303 seq->
start = timeline_frame;
308 else if ((seq->
start + seq->
len) < timeline_frame) {
309 seq->
start = timeline_frame;
320 if (timeline_frame < seq->start) {
321 seq->
start = timeline_frame - 1;
326 else if ((seq->
start + seq->
len) < timeline_frame) {
335 if (timeline_frame < seq->start) {
339 if ((seq->
start + seq->
len) < timeline_frame) {
340 seq->
start = timeline_frame - seq->
len + 1;
361 const int timeline_frame,
364 if (timeline_frame <= seq->startdisp || timeline_frame >= seq->
enddisp) {
408 const int initial_frame,
409 const bool remove_all_gaps)
418 if (remove_all_gaps) {
void BKE_sound_mute_scene_sound(void *handle, char mute)
#define LISTBASE_FOREACH(type, var, list)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
#define SEQ_DUPE_UNIQUE_NAME
int SEQ_effect_get_num_inputs(int seq_type)
Sequence * SEQ_sequence_dupli_recursive(const Scene *scene_src, Scene *scene_dst, ListBase *new_seq_list, Sequence *seq, int dupe_flag)
void SEQ_sequence_free(Scene *scene, Sequence *seq, const bool do_clean_animdata)
Editing * SEQ_editing_get(Scene *scene, bool alloc)
void SEQ_add_reload_new_file(Main *bmain, Scene *scene, Sequence *seq, const bool lock_range)
bool SEQ_edit_move_strip_to_meta(Scene *scene, Sequence *src_seq, Sequence *dst_seqm, const char **error_str)
bool SEQ_edit_remove_gaps(Scene *scene, ListBase *seqbase, const int initial_frame, const bool remove_all_gaps)
static void seq_split_set_left_hold_offset(Sequence *seq, int timeline_frame)
void SEQ_edit_flag_for_removal(Scene *scene, ListBase *seqbase, Sequence *seq)
static bool seq_exists_in_seqbase(Sequence *seq, ListBase *seqbase)
static void seq_split_set_right_hold_offset(Sequence *seq, int timeline_frame)
static void seq_split_set_left_offset(Sequence *seq, int timeline_frame)
int SEQ_edit_sequence_swap(Sequence *seq_a, Sequence *seq_b, const char **error_str)
Sequence * SEQ_edit_strip_split(Main *bmain, Scene *scene, ListBase *seqbase, Sequence *seq, const int timeline_frame, const eSeqSplitMethod method)
void SEQ_edit_remove_flagged_sequences(Scene *scene, ListBase *seqbase)
static void seq_split_set_right_offset(Sequence *seq, int timeline_frame)
static void seq_update_muting_recursive(ListBase *seqbasep, Sequence *metaseq, int mute)
void SEQ_edit_update_muting(Editing *ed)
static void sequencer_flag_users_for_removal(Scene *scene, ListBase *seqbase, Sequence *seq)
void SEQ_relations_invalidate_cache_preprocessed(Scene *scene, Sequence *seq)
void seq_time_gap_info_get(const Scene *scene, ListBase *seqbase, const int initial_frame, GapInfo *r_gap_info)
void SEQ_time_update_sequence(Scene *scene, Sequence *seq)
struct SequenceModifierData * next
struct Sequence * mask_sequence
ListBase * SEQ_get_seqbase_by_seq(ListBase *seqbase, Sequence *seq)