42 char name[
sizeof(seq_a->
name)];
45 *error_str =
N_(
"Strips must be the same length");
52 *error_str =
N_(
"Strips were not compatible");
58 *error_str =
N_(
"Strips were not compatible");
64 *error_str =
N_(
"Strips must have the same number of inputs");
103 for (seq = seqbasep->
first; seq; seq = seq->
next) {
109 if (seq == metaseq) {
148 for (smd = user_seq->modifiers.first; smd; smd = smd->
next) {
216 const char **error_str)
223 *error_str =
N_(
"Can not move strip to non-meta strip");
227 if (src_seq == dst_seqm) {
228 *error_str =
N_(
"Strip can not be moved into itself");
232 if (seqbase == &dst_seqm->
seqbase) {
233 *error_str =
N_(
"Moved strip is already inside provided meta strip");
238 *error_str =
N_(
"Moved strip is parent of provided meta strip");
243 *error_str =
N_(
"Can not move strip to different scene");
264 const float content_start = seq->
start;
268 if (timeline_frame < content_start) {
269 const float offset = content_start + 1 - timeline_frame;
275 else if ((timeline_frame >= content_start) && (timeline_frame <= content_end)) {
280 else if (timeline_frame > content_end) {
287 const float content_start = seq->
start;
291 if (timeline_frame < content_start) {
295 else if ((timeline_frame >= content_start) && (timeline_frame <= content_end)) {
297 seq->
start = timeline_frame;
301 else if (timeline_frame > content_end) {
302 const float offset = timeline_frame - content_end + 1;
311 const int timeline_frame)
321 const int timeline_frame,
351 const int timeline_frame)
353 bool input_does_intersect =
false;
378 return input_does_intersect;
383 const int timeline_frame,
384 const char **r_error)
398 *r_error =
"Splitting transition effect is not permitted.";
402 *r_error =
"Effect inputs don't overlap. Can not split such effect.";
413 const int timeline_frame,
415 const char **r_error)
462 for (; seq_rename; seq_rename = seq_rename->
next) {
467 while (left_seq && right_seq) {
474 else if (return_seq ==
NULL) {
476 return_seq = right_seq;
480 left_seq = left_seq->
next;
481 right_seq = right_seq->
next;
492 const int initial_frame,
493 const bool remove_all_gaps)
502 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 void void BLI_movelisttolist(struct ListBase *dst, struct ListBase *src) ATTR_NONNULL(1
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, size_t maxncpy) ATTR_NONNULL()
int BLI_str_utf8_invalid_strip(char *str, size_t length) ATTR_NONNULL(1)
char * BLI_strncpy_utf8(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL(1
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert a producing a negative Combine Generate a color from its and blue channels(Deprecated)") DefNode(ShaderNode
#define SEQ_ITERATOR_FOREACH(var, collection)
void SEQ_free_animdata(Scene *scene, Sequence *seq)
void SEQ_animation_backup_original(Scene *scene, ListBase *list)
void SEQ_animation_duplicate(Scene *scene, Sequence *seq, ListBase *list)
void SEQ_animation_restore_original(Scene *scene, ListBase *list)
int SEQ_effect_get_num_inputs(int seq_type)
void SEQ_query_strip_effect_chain(const Scene *scene, Sequence *seq_reference, ListBase *seqbase, SeqCollection *collection)
void SEQ_collection_expand(const Scene *scene, ListBase *seqbase, SeqCollection *collection, void seq_query_func(const Scene *scene, Sequence *seq_reference, ListBase *seqbase, SeqCollection *collection))
SeqCollection * SEQ_collection_create(const char *name)
bool SEQ_collection_append_strip(Sequence *seq, SeqCollection *collection)
void SEQ_collection_free(SeqCollection *collection)
ccl_gpu_kernel_postfix ccl_global float int int int int float bool int offset
bool SEQ_render_is_muted(const ListBase *channels, const Sequence *seq)
void SEQ_sequence_lookup_tag(const Scene *scene, eSequenceLookupTag tag)
void SEQ_sequence_base_dupli_recursive(const Scene *scene_src, Scene *scene_dst, ListBase *nseqbase, const ListBase *seqbase, int dupe_flag, const int flag)
void SEQ_sequence_free(Scene *scene, Sequence *seq)
Editing * SEQ_editing_get(const Scene *scene)
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)
static bool seq_edit_split_effect_intersect_check(const Scene *scene, const Sequence *seq, const int timeline_frame)
bool SEQ_edit_remove_gaps(Scene *scene, ListBase *seqbase, const int initial_frame, const bool remove_all_gaps)
static void seq_update_muting_recursive(ListBase *channels, ListBase *seqbasep, Sequence *metaseq, int mute)
void SEQ_edit_flag_for_removal(Scene *scene, ListBase *seqbase, Sequence *seq)
bool SEQ_edit_move_strip_to_seqbase(Scene *scene, ListBase *seqbase, Sequence *seq, ListBase *dst_seqbase)
static void seq_edit_split_handle_strip_offsets(Main *bmain, Scene *scene, Sequence *left_seq, Sequence *right_seq, const int timeline_frame, const eSeqSplitMethod method)
static bool seq_edit_split_effect_inputs_intersect(const Scene *scene, const Sequence *seq, const int timeline_frame)
static void seq_split_set_right_hold_offset(Scene *scene, Sequence *seq, int timeline_frame)
int SEQ_edit_sequence_swap(Scene *scene, Sequence *seq_a, Sequence *seq_b, const char **error_str)
void SEQ_edit_sequence_name_set(Scene *scene, Sequence *seq, const char *new_name)
Sequence * SEQ_edit_strip_split(Main *bmain, Scene *scene, ListBase *seqbase, Sequence *seq, const int timeline_frame, const eSeqSplitMethod method, const char **r_error)
void SEQ_edit_remove_flagged_sequences(Scene *scene, ListBase *seqbase)
static bool seq_edit_split_operation_permitted_check(const Scene *scene, SeqCollection *strips, const int timeline_frame, const char **r_error)
void SEQ_edit_update_muting(Editing *ed)
static void sequencer_flag_users_for_removal(Scene *scene, ListBase *seqbase, Sequence *seq)
static void seq_split_set_left_hold_offset(Scene *scene, Sequence *seq, int timeline_frame)
bool SEQ_exists_in_seqbase(const Sequence *seq, const ListBase *seqbase)
bool SEQ_relation_is_effect_of_strip(const Sequence *effect, const Sequence *input)
void SEQ_relations_invalidate_cache_preprocessed(Scene *scene, Sequence *seq)
int SEQ_time_strip_length_get(const Scene *scene, const Sequence *seq)
void SEQ_time_right_handle_frame_set(const Scene *scene, Sequence *seq, int val)
int SEQ_time_left_handle_frame_get(const Scene *UNUSED(scene), const Sequence *seq)
void SEQ_time_left_handle_frame_set(const Scene *scene, Sequence *seq, int val)
void seq_time_gap_info_get(const Scene *scene, ListBase *seqbase, const int initial_frame, GapInfo *r_gap_info)
void seq_time_effect_range_set(const Scene *scene, Sequence *seq)
int SEQ_time_right_handle_frame_get(const Scene *scene, const Sequence *seq)
struct SequenceModifierData * next
struct Sequence * mask_sequence
ListBase * SEQ_get_seqbase_by_seq(const Scene *scene, Sequence *seq)
void SEQ_ensure_unique_name(Sequence *seq, Scene *scene)