Blender V4.3
strip_edit.cc File Reference
#include "DNA_scene_types.h"
#include "DNA_sequence_types.h"
#include "BLI_listbase.h"
#include "BLI_math_base.h"
#include "BLI_string.h"
#include "BLI_string_utf8.h"
#include "BLT_translation.hh"
#include "BKE_sound.h"
#include "strip_time.hh"
#include "SEQ_add.hh"
#include "SEQ_animation.hh"
#include "SEQ_channels.hh"
#include "SEQ_connect.hh"
#include "SEQ_edit.hh"
#include "SEQ_effects.hh"
#include "SEQ_iterator.hh"
#include "SEQ_relations.hh"
#include "SEQ_render.hh"
#include "SEQ_sequencer.hh"
#include "SEQ_time.hh"
#include "SEQ_transform.hh"
#include "SEQ_utils.hh"
#include <cstring>

Go to the source code of this file.

Functions

bool SEQ_edit_sequence_swap (Scene *scene, Sequence *seq_a, Sequence *seq_b, const char **r_error_str)
static void seq_update_muting_recursive (ListBase *channels, ListBase *seqbasep, Sequence *metaseq, const bool mute)
void SEQ_edit_update_muting (Editing *ed)
static void sequencer_flag_users_for_removal (Scene *scene, ListBase *seqbase, Sequence *seq)
void SEQ_edit_flag_for_removal (Scene *scene, ListBase *seqbase, Sequence *seq)
void SEQ_edit_remove_flagged_sequences (Scene *scene, ListBase *seqbase)
bool SEQ_edit_move_strip_to_seqbase (Scene *scene, ListBase *seqbase, Sequence *seq, ListBase *dst_seqbase)
bool SEQ_edit_move_strip_to_meta (Scene *scene, Sequence *src_seq, Sequence *dst_seqm, const char **r_error_str)
static void seq_split_set_right_hold_offset (Main *bmain, Scene *scene, Sequence *seq, int timeline_frame)
static void seq_split_set_left_hold_offset (Main *bmain, Scene *scene, Sequence *seq, int timeline_frame)
static bool seq_edit_split_intersect_check (const Scene *scene, const Sequence *seq, const int timeline_frame)
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 bool seq_edit_split_operation_permitted_check (const Scene *scene, blender::Span< Sequence * > strips, const int timeline_frame, const char **r_error)
SequenceSEQ_edit_strip_split (Main *bmain, Scene *scene, ListBase *seqbase, Sequence *seq, const int timeline_frame, const eSeqSplitMethod method, const char **r_error)
bool SEQ_edit_remove_gaps (Scene *scene, ListBase *seqbase, const int initial_frame, const bool remove_all_gaps)
void SEQ_edit_sequence_name_set (Scene *scene, Sequence *seq, const char *new_name)

Function Documentation

◆ SEQ_edit_flag_for_removal()

◆ SEQ_edit_move_strip_to_meta()

bool SEQ_edit_move_strip_to_meta ( Scene * scene,
Sequence * src_seq,
Sequence * dst_seqm,
const char ** r_error_str )

◆ SEQ_edit_move_strip_to_seqbase()

bool SEQ_edit_move_strip_to_seqbase ( Scene * scene,
ListBase * seqbase,
Sequence * seq,
ListBase * dst_seqbase )

Move sequence to seqbase.

Parameters
sceneScene containing the editing
seqbaseseqbase where seq is located
seqSequence to move
dst_seqbaseTarget seqbase

Definition at line 196 of file strip_edit.cc.

References BLI_addtail(), BLI_remlink(), SEQ_relations_invalidate_cache_preprocessed(), SEQ_transform_seqbase_shuffle(), and SEQ_transform_test_overlap().

Referenced by SEQ_edit_move_strip_to_meta().

◆ SEQ_edit_remove_flagged_sequences()

◆ SEQ_edit_remove_gaps()

bool SEQ_edit_remove_gaps ( Scene * scene,
ListBase * seqbase,
int initial_frame,
bool remove_all_gaps )

Find gap after initial_frame and move strips on right side to close the gap

Parameters
sceneScene in which strips are located
seqbaseListBase in which strips are located
initial_frameframe on timeline from where gaps are searched for
remove_all_gapsremove all gaps instead of one gap
Returns
true if gap is removed, otherwise false

Definition at line 497 of file strip_edit.cc.

References GapInfo::gap_exists, GapInfo::gap_length, GapInfo::gap_start_frame, seq_time_gap_info_get(), and SEQ_transform_offset_after_frame().

Referenced by sequencer_gap_remove_exec().

◆ SEQ_edit_sequence_name_set()

void SEQ_edit_sequence_name_set ( Scene * scene,
Sequence * seq,
const char * new_name )

◆ SEQ_edit_sequence_swap()

◆ seq_edit_split_effect_inputs_intersect()

bool seq_edit_split_effect_inputs_intersect ( const Scene * scene,
const Sequence * seq,
const int timeline_frame )
static

◆ seq_edit_split_handle_strip_offsets()

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

◆ seq_edit_split_intersect_check()

bool seq_edit_split_intersect_check ( const Scene * scene,
const Sequence * seq,
const int timeline_frame )
static

◆ seq_edit_split_operation_permitted_check()

bool seq_edit_split_operation_permitted_check ( const Scene * scene,
blender::Span< Sequence * > strips,
const int timeline_frame,
const char ** r_error )
static

◆ SEQ_edit_strip_split()

Sequence * SEQ_edit_strip_split ( Main * bmain,
Scene * scene,
ListBase * seqbase,
Sequence * seq,
int timeline_frame,
eSeqSplitMethod method,
const char ** r_error )

Split Sequence at timeline_frame in two.

Parameters
bmainMain in which Sequence is located
sceneScene in which Sequence is located
seqbaseListBase in which Sequence is located
seqSequence to be split
timeline_frameframe at which seq is split.
methodaffects type of offset to be applied to resize Sequence
Returns
The newly created sequence strip. This is always Sequence on right side.

Definition at line 405 of file strip_edit.cc.

References blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add_multiple(), blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::as_span(), BLI_addtail(), BLI_movelisttolist(), BLI_remlink(), ListBase::first, Sequence::flag, Sequence::next, blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::remove_if(), SELECT, SEQ_animation_backup_original(), SEQ_animation_duplicate_backup_to_scene(), SEQ_animation_restore_original(), SEQ_DUPE_ALL, SEQ_edit_flag_for_removal(), SEQ_edit_remove_flagged_sequences(), seq_edit_split_handle_strip_offsets(), seq_edit_split_intersect_check(), seq_edit_split_operation_permitted_check(), SEQ_ensure_unique_name(), SEQ_get_connected_strips(), SEQ_iterator_set_expand(), SEQ_query_strip_effect_chain(), SEQ_sequence_base_dupli_recursive(), SEQ_time_left_handle_frame_get(), and SEQ_time_right_handle_frame_get().

Referenced by seq_transform_handle_overwrite_split(), and sequencer_split_exec().

◆ SEQ_edit_update_muting()

void SEQ_edit_update_muting ( Editing * ed)

◆ seq_split_set_left_hold_offset()

◆ seq_split_set_right_hold_offset()

◆ seq_update_muting_recursive()

void seq_update_muting_recursive ( ListBase * channels,
ListBase * seqbasep,
Sequence * metaseq,
const bool mute )
static

◆ sequencer_flag_users_for_removal()

void sequencer_flag_users_for_removal ( Scene * scene,
ListBase * seqbase,
Sequence * seq )
static