Refactor: VSE: Rename Sequence to Strip
This renames the struct `Sequence` to `Strip`. While the motivation for this partially comes from the "Sequence Design" #131329, it seems like this is a good refactor whether the design gets implemented or not. The `Sequence` represents what users see as strips in the VSE. Many places in the code already refere to a `Sequence` as "strip". It's the C-style "base class" of all strip types. This also renames the python RNA type `bpy.types.Sequence` to `bpy.types.Strip` which means that this technically breaks the python API. Pull Request: https://projects.blender.org/blender/blender/pulls/132179
This commit is contained in:
@@ -2967,7 +2967,7 @@ class SEQUENCER_PT_custom_props(SequencerButtonsPanel, PropertyPanel, Panel):
|
||||
'BLENDER_WORKBENCH',
|
||||
}
|
||||
_context_path = "active_sequence_strip"
|
||||
_property_type = (bpy.types.Sequence,)
|
||||
_property_type = (bpy.types.Strip,)
|
||||
bl_category = "Strip"
|
||||
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ extern "C" {
|
||||
|
||||
struct Depsgraph;
|
||||
struct Main;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
struct bSound;
|
||||
struct SoundInfo;
|
||||
|
||||
@@ -126,13 +126,13 @@ void BKE_sound_update_fps(struct Main *bmain, struct Scene *scene);
|
||||
void BKE_sound_update_scene_listener(struct Scene *scene);
|
||||
|
||||
void *BKE_sound_scene_add_scene_sound(
|
||||
struct Scene *scene, struct Sequence *sequence, int startframe, int endframe, int frameskip);
|
||||
struct Scene *scene, struct Strip *sequence, int startframe, int endframe, int frameskip);
|
||||
|
||||
void *BKE_sound_scene_add_scene_sound_defaults(struct Scene *scene, struct Sequence *sequence);
|
||||
void *BKE_sound_scene_add_scene_sound_defaults(struct Scene *scene, struct Strip *sequence);
|
||||
|
||||
void *BKE_sound_add_scene_sound(
|
||||
struct Scene *scene, struct Sequence *sequence, int startframe, int endframe, int frameskip);
|
||||
void *BKE_sound_add_scene_sound_defaults(struct Scene *scene, struct Sequence *sequence);
|
||||
struct Scene *scene, struct Strip *sequence, int startframe, int endframe, int frameskip);
|
||||
void *BKE_sound_add_scene_sound_defaults(struct Scene *scene, struct Strip *sequence);
|
||||
|
||||
void BKE_sound_remove_scene_sound(struct Scene *scene, void *handle);
|
||||
|
||||
@@ -144,7 +144,7 @@ void BKE_sound_move_scene_sound(const struct Scene *scene,
|
||||
int endframe,
|
||||
int frameskip,
|
||||
double audio_offset);
|
||||
void BKE_sound_move_scene_sound_defaults(struct Scene *scene, struct Sequence *sequence);
|
||||
void BKE_sound_move_scene_sound_defaults(struct Scene *scene, struct Strip *sequence);
|
||||
|
||||
/* Join the Sequence with the structure in Audaspace, the second parameter is a bSound */
|
||||
void BKE_sound_update_scene_sound(void *handle, struct bSound *sound);
|
||||
|
||||
@@ -1865,7 +1865,7 @@ static void stampdata(
|
||||
}
|
||||
|
||||
if (use_dynamic && scene->r.stamp & R_STAMP_SEQSTRIP) {
|
||||
const Sequence *seq = SEQ_get_topmost_sequence(scene, scene->r.cfra);
|
||||
const Strip *seq = SEQ_get_topmost_sequence(scene, scene->r.cfra);
|
||||
|
||||
if (seq) {
|
||||
STRNCPY(text, seq->name + 2);
|
||||
|
||||
@@ -1028,7 +1028,7 @@ static char *get_rna_access(ID *id,
|
||||
int adrcode,
|
||||
const char actname[],
|
||||
const char constname[],
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
int *r_array_index)
|
||||
{
|
||||
DynStr *path = BLI_dynstr_new();
|
||||
@@ -1405,7 +1405,7 @@ static void icu_to_fcurves(ID *id,
|
||||
IpoCurve *icu,
|
||||
char *actname,
|
||||
char *constname,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
int muteipo)
|
||||
{
|
||||
AdrBit2Path *abp;
|
||||
@@ -1692,7 +1692,7 @@ static void ipo_to_animato(ID *id,
|
||||
Ipo *ipo,
|
||||
char actname[],
|
||||
char constname[],
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
ListBase *animgroups,
|
||||
ListBase *anim,
|
||||
ListBase *drivers)
|
||||
@@ -1840,7 +1840,7 @@ static void action_to_animato(
|
||||
* from animation data is accomplished here too...
|
||||
*/
|
||||
static void ipo_to_animdata(
|
||||
Main *bmain, ID *id, Ipo *ipo, char actname[], char constname[], Sequence *seq)
|
||||
Main *bmain, ID *id, Ipo *ipo, char actname[], char constname[], Strip *seq)
|
||||
{
|
||||
AnimData *adt = BKE_animdata_from_id(id);
|
||||
ListBase anim = {nullptr, nullptr};
|
||||
@@ -2042,7 +2042,7 @@ struct Seq_callback_data {
|
||||
AnimData *adt;
|
||||
};
|
||||
|
||||
static bool seq_convert_callback(Sequence *seq, void *userdata)
|
||||
static bool seq_convert_callback(Strip *seq, void *userdata)
|
||||
{
|
||||
IpoCurve *icu = static_cast<IpoCurve *>((seq->ipo) ? seq->ipo->curve.first : nullptr);
|
||||
short adrcode = SEQ_FAC1;
|
||||
|
||||
@@ -794,7 +794,7 @@ static void scene_foreach_layer_collection(LibraryForeachIDData *data,
|
||||
}
|
||||
}
|
||||
|
||||
static bool seq_foreach_member_id_cb(Sequence *seq, void *user_data)
|
||||
static bool seq_foreach_member_id_cb(Strip *seq, void *user_data)
|
||||
{
|
||||
LibraryForeachIDData *data = static_cast<LibraryForeachIDData *>(user_data);
|
||||
const int flag = BKE_lib_query_foreachid_process_flags_get(data);
|
||||
@@ -942,7 +942,7 @@ static void scene_foreach_id(ID *id, LibraryForeachIDData *data)
|
||||
}
|
||||
}
|
||||
|
||||
static bool seq_foreach_path_callback(Sequence *seq, void *user_data)
|
||||
static bool seq_foreach_path_callback(Strip *seq, void *user_data)
|
||||
{
|
||||
if (SEQ_HAS_PATH(seq)) {
|
||||
StripElem *se = seq->data->stripdata;
|
||||
@@ -1178,9 +1178,9 @@ static void direct_link_paint_helper(BlendDataReader *reader, const Scene *scene
|
||||
|
||||
static void link_recurs_seq(BlendDataReader *reader, ListBase *lb)
|
||||
{
|
||||
BLO_read_struct_list(reader, Sequence, lb);
|
||||
BLO_read_struct_list(reader, Strip, lb);
|
||||
|
||||
LISTBASE_FOREACH_MUTABLE (Sequence *, seq, lb) {
|
||||
LISTBASE_FOREACH_MUTABLE (Strip *, seq, lb) {
|
||||
/* Sanity check. */
|
||||
if (!SEQ_is_valid_strip_channel(seq)) {
|
||||
BLI_freelinkN(lb, seq);
|
||||
@@ -1298,8 +1298,8 @@ static void scene_blend_read_data(BlendDataReader *reader, ID *id)
|
||||
BLO_read_struct(reader, Editing, &sce->ed);
|
||||
Editing *ed = sce->ed;
|
||||
|
||||
ed->act_seq = static_cast<Sequence *>(
|
||||
BLO_read_get_new_data_address_no_us(reader, ed->act_seq, sizeof(Sequence)));
|
||||
ed->act_seq = static_cast<Strip *>(
|
||||
BLO_read_get_new_data_address_no_us(reader, ed->act_seq, sizeof(Strip)));
|
||||
ed->cache = nullptr;
|
||||
ed->prefetch_job = nullptr;
|
||||
ed->runtime.sequence_lookup = nullptr;
|
||||
@@ -1323,8 +1323,8 @@ static void scene_blend_read_data(BlendDataReader *reader, ID *id)
|
||||
* would be to calculate offset using sDNA from the file (NOT from the
|
||||
* current Blender). Even better would be having some sort of dedicated
|
||||
* map of seqbase pointers to avoid this offset magic. */
|
||||
constexpr intptr_t seqbase_offset = offsetof(Sequence, seqbase);
|
||||
constexpr intptr_t channels_offset = offsetof(Sequence, channels);
|
||||
constexpr intptr_t seqbase_offset = offsetof(Strip, seqbase);
|
||||
constexpr intptr_t channels_offset = offsetof(Strip, channels);
|
||||
#if ARCH_CPU_64_BITS
|
||||
static_assert(seqbase_offset == 264, "Sequence seqbase member offset cannot be changed");
|
||||
static_assert(channels_offset == 280, "Sequence channels member offset cannot be changed");
|
||||
@@ -1340,7 +1340,7 @@ static void scene_blend_read_data(BlendDataReader *reader, ID *id)
|
||||
else {
|
||||
seqbase_poin = POINTER_OFFSET(ed->seqbasep, -seqbase_offset);
|
||||
|
||||
seqbase_poin = BLO_read_get_new_data_address_no_us(reader, seqbase_poin, sizeof(Sequence));
|
||||
seqbase_poin = BLO_read_get_new_data_address_no_us(reader, seqbase_poin, sizeof(Strip));
|
||||
|
||||
if (seqbase_poin) {
|
||||
ed->seqbasep = (ListBase *)POINTER_OFFSET(seqbase_poin, seqbase_offset);
|
||||
@@ -1371,15 +1371,14 @@ static void scene_blend_read_data(BlendDataReader *reader, ID *id)
|
||||
BLO_read_struct_list(reader, MetaStack, &(ed->metastack));
|
||||
|
||||
LISTBASE_FOREACH (MetaStack *, ms, &ed->metastack) {
|
||||
BLO_read_struct(reader, Sequence, &ms->parseq);
|
||||
BLO_read_struct(reader, Strip, &ms->parseq);
|
||||
|
||||
if (ms->oldbasep == old_seqbasep) {
|
||||
ms->oldbasep = &ed->seqbase;
|
||||
}
|
||||
else {
|
||||
seqbase_poin = POINTER_OFFSET(ms->oldbasep, -seqbase_offset);
|
||||
seqbase_poin = BLO_read_get_new_data_address_no_us(
|
||||
reader, seqbase_poin, sizeof(Sequence));
|
||||
seqbase_poin = BLO_read_get_new_data_address_no_us(reader, seqbase_poin, sizeof(Strip));
|
||||
if (seqbase_poin) {
|
||||
ms->oldbasep = (ListBase *)POINTER_OFFSET(seqbase_poin, seqbase_offset);
|
||||
}
|
||||
|
||||
@@ -703,7 +703,7 @@ void BKE_sound_update_scene_listener(Scene *scene)
|
||||
}
|
||||
|
||||
void *BKE_sound_scene_add_scene_sound(
|
||||
Scene *scene, Sequence *sequence, int startframe, int endframe, int frameskip)
|
||||
Scene *scene, Strip *sequence, int startframe, int endframe, int frameskip)
|
||||
{
|
||||
sound_verify_evaluated_id(&scene->id);
|
||||
if (sequence->scene && scene != sequence->scene) {
|
||||
@@ -717,7 +717,7 @@ void *BKE_sound_scene_add_scene_sound(
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void *BKE_sound_scene_add_scene_sound_defaults(Scene *scene, Sequence *sequence)
|
||||
void *BKE_sound_scene_add_scene_sound_defaults(Scene *scene, Strip *sequence)
|
||||
{
|
||||
return BKE_sound_scene_add_scene_sound(scene,
|
||||
sequence,
|
||||
@@ -727,7 +727,7 @@ void *BKE_sound_scene_add_scene_sound_defaults(Scene *scene, Sequence *sequence)
|
||||
}
|
||||
|
||||
void *BKE_sound_add_scene_sound(
|
||||
Scene *scene, Sequence *sequence, int startframe, int endframe, int frameskip)
|
||||
Scene *scene, Strip *sequence, int startframe, int endframe, int frameskip)
|
||||
{
|
||||
sound_verify_evaluated_id(&scene->id);
|
||||
/* Happens when sequence's sound data-block was removed. */
|
||||
@@ -752,7 +752,7 @@ void *BKE_sound_add_scene_sound(
|
||||
-offset_time);
|
||||
}
|
||||
|
||||
void *BKE_sound_add_scene_sound_defaults(Scene *scene, Sequence *sequence)
|
||||
void *BKE_sound_add_scene_sound_defaults(Scene *scene, Strip *sequence)
|
||||
{
|
||||
return BKE_sound_add_scene_sound(scene,
|
||||
sequence,
|
||||
@@ -789,7 +789,7 @@ void BKE_sound_move_scene_sound(const Scene *scene,
|
||||
}
|
||||
}
|
||||
|
||||
void BKE_sound_move_scene_sound_defaults(Scene *scene, Sequence *sequence)
|
||||
void BKE_sound_move_scene_sound_defaults(Scene *scene, Strip *sequence)
|
||||
{
|
||||
sound_verify_evaluated_id(&scene->id);
|
||||
if (sequence->scene_sound) {
|
||||
@@ -1339,26 +1339,26 @@ void BKE_sound_unlock() {}
|
||||
void BKE_sound_reset_scene_specs(Scene * /*scene*/) {}
|
||||
void BKE_sound_mute_scene(Scene * /*scene*/, int /*muted*/) {}
|
||||
void *BKE_sound_scene_add_scene_sound(Scene * /*scene*/,
|
||||
Sequence * /*sequence*/,
|
||||
Strip * /*sequence*/,
|
||||
int /*startframe*/,
|
||||
int /*endframe*/,
|
||||
int /*frameskip*/)
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
void *BKE_sound_scene_add_scene_sound_defaults(Scene * /*scene*/, Sequence * /*sequence*/)
|
||||
void *BKE_sound_scene_add_scene_sound_defaults(Scene * /*scene*/, Strip * /*sequence*/)
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
void *BKE_sound_add_scene_sound(Scene * /*scene*/,
|
||||
Sequence * /*sequence*/,
|
||||
Strip * /*sequence*/,
|
||||
int /*startframe*/,
|
||||
int /*endframe*/,
|
||||
int /*frameskip*/)
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
void *BKE_sound_add_scene_sound_defaults(Scene * /*scene*/, Sequence * /*sequence*/)
|
||||
void *BKE_sound_add_scene_sound_defaults(Scene * /*scene*/, Strip * /*sequence*/)
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -616,7 +616,7 @@ static void do_versions_socket_default_value_259(bNodeSocket *sock)
|
||||
}
|
||||
}
|
||||
|
||||
static bool seq_sound_proxy_update_cb(Sequence *seq, void * /*user_data*/)
|
||||
static bool seq_sound_proxy_update_cb(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
#define SEQ_USE_PROXY_CUSTOM_DIR (1 << 19)
|
||||
#define SEQ_USE_PROXY_CUSTOM_FILE (1 << 21)
|
||||
@@ -629,13 +629,13 @@ static bool seq_sound_proxy_update_cb(Sequence *seq, void * /*user_data*/)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool seq_set_volume_cb(Sequence *seq, void * /*user_data*/)
|
||||
static bool seq_set_volume_cb(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
seq->volume = 1.0f;
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool seq_set_sat_cb(Sequence *seq, void * /*user_data*/)
|
||||
static bool seq_set_sat_cb(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
if (seq->sat == 0.0f) {
|
||||
seq->sat = 1.0f;
|
||||
@@ -643,7 +643,7 @@ static bool seq_set_sat_cb(Sequence *seq, void * /*user_data*/)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool seq_set_pitch_cb(Sequence *seq, void * /*user_data*/)
|
||||
static bool seq_set_pitch_cb(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
seq->pitch = 1.0f;
|
||||
return true;
|
||||
|
||||
@@ -992,7 +992,7 @@ static void do_versions_nodetree_customnodes(bNodeTree *ntree, int /*is_group*/)
|
||||
}
|
||||
}
|
||||
|
||||
static bool seq_colorbalance_update_cb(Sequence *seq, void * /*user_data*/)
|
||||
static bool seq_colorbalance_update_cb(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
StripData *data = seq->data;
|
||||
|
||||
@@ -1015,7 +1015,7 @@ static bool seq_colorbalance_update_cb(Sequence *seq, void * /*user_data*/)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool seq_set_alpha_mode_cb(Sequence *seq, void * /*user_data*/)
|
||||
static bool seq_set_alpha_mode_cb(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
enum { SEQ_MAKE_PREMUL = (1 << 6) };
|
||||
if (seq->flag & SEQ_MAKE_PREMUL) {
|
||||
@@ -1027,7 +1027,7 @@ static bool seq_set_alpha_mode_cb(Sequence *seq, void * /*user_data*/)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool seq_set_wipe_angle_cb(Sequence *seq, void * /*user_data*/)
|
||||
static bool seq_set_wipe_angle_cb(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
if (seq->type == SEQ_TYPE_WIPE) {
|
||||
WipeVars *wv = static_cast<WipeVars *>(seq->effectdata);
|
||||
|
||||
@@ -422,7 +422,7 @@ static void do_version_bbone_easing_fcurve_fix(ID * /*id*/, FCurve *fcu)
|
||||
}
|
||||
}
|
||||
|
||||
static bool seq_update_proxy_cb(Sequence *seq, void * /*user_data*/)
|
||||
static bool seq_update_proxy_cb(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
seq->stereo3d_format = static_cast<Stereo3dFormat *>(
|
||||
MEM_callocN(sizeof(Stereo3dFormat), "Stereo Display 3d Format"));
|
||||
@@ -442,7 +442,7 @@ static bool seq_update_proxy_cb(Sequence *seq, void * /*user_data*/)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool seq_update_effectdata_cb(Sequence *seq, void * /*user_data*/)
|
||||
static bool seq_update_effectdata_cb(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
|
||||
if (seq->type != SEQ_TYPE_TEXT) {
|
||||
|
||||
@@ -614,7 +614,7 @@ static void do_version_constraints_copy_rotation_mix_mode(ListBase *lb)
|
||||
|
||||
static void do_versions_seq_alloc_transform_and_crop(ListBase *seqbase)
|
||||
{
|
||||
LISTBASE_FOREACH (Sequence *, seq, seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, seqbase) {
|
||||
if (ELEM(seq->type, SEQ_TYPE_SOUND_RAM, SEQ_TYPE_SOUND_HD) == 0) {
|
||||
if (seq->data->transform == nullptr) {
|
||||
seq->data->transform = static_cast<StripTransform *>(
|
||||
@@ -767,7 +767,7 @@ static void do_version_curvemapping_walker(Main *bmain, void (*callback)(CurveMa
|
||||
}
|
||||
|
||||
if (scene->ed != nullptr) {
|
||||
LISTBASE_FOREACH (Sequence *, seq, &scene->ed->seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, &scene->ed->seqbase) {
|
||||
LISTBASE_FOREACH (SequenceModifierData *, smd, &seq->modifiers) {
|
||||
const SequenceModifierTypeInfo *smti = SEQ_modifier_type_info_get(smd->type);
|
||||
|
||||
@@ -2995,7 +2995,7 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
|
||||
* (see #55668, involving Meta strips). */
|
||||
static void do_versions_seq_unique_name_all_strips(Scene *sce, ListBase *seqbasep)
|
||||
{
|
||||
LISTBASE_FOREACH (Sequence *, seq, seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, seqbasep) {
|
||||
SEQ_sequence_base_unique_name_recursive(sce, &sce->ed->seqbase, seq);
|
||||
if (seq->seqbase.first != nullptr) {
|
||||
do_versions_seq_unique_name_all_strips(sce, &seq->seqbase);
|
||||
@@ -3009,7 +3009,7 @@ static void do_versions_seq_set_cache_defaults(Editing *ed)
|
||||
ed->recycle_max_cost = 10.0f;
|
||||
}
|
||||
|
||||
static bool seq_update_flags_cb(Sequence *seq, void * /*user_data*/)
|
||||
static bool seq_update_flags_cb(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
seq->flag &= ~((1 << 6) | (1 << 18) | (1 << 19) | (1 << 21));
|
||||
if (seq->type == SEQ_TYPE_SPEED) {
|
||||
|
||||
@@ -99,7 +99,7 @@ static eSpaceSeq_Proxy_RenderSize get_sequencer_render_size(Main *bmain)
|
||||
return render_size;
|
||||
}
|
||||
|
||||
static bool can_use_proxy(const Sequence *seq, int psize)
|
||||
static bool can_use_proxy(const Strip *seq, int psize)
|
||||
{
|
||||
if (seq->data->proxy == nullptr) {
|
||||
return false;
|
||||
@@ -109,7 +109,7 @@ static bool can_use_proxy(const Sequence *seq, int psize)
|
||||
}
|
||||
|
||||
/* image_size is width or height depending what RNA property is converted - X or Y. */
|
||||
static void seq_convert_transform_animation(const Sequence *seq,
|
||||
static void seq_convert_transform_animation(const Strip *seq,
|
||||
const Scene *scene,
|
||||
const char *path,
|
||||
const int image_size,
|
||||
@@ -144,7 +144,7 @@ static void seq_convert_transform_animation(const Sequence *seq,
|
||||
}
|
||||
|
||||
static void seq_convert_transform_crop(const Scene *scene,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
const eSpaceSeq_Proxy_RenderSize render_size)
|
||||
{
|
||||
if (seq->data->transform == nullptr) {
|
||||
@@ -256,7 +256,7 @@ static void seq_convert_transform_crop_lb(const Scene *scene,
|
||||
const eSpaceSeq_Proxy_RenderSize render_size)
|
||||
{
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, lb) {
|
||||
LISTBASE_FOREACH (Strip *, seq, lb) {
|
||||
if (!ELEM(seq->type, SEQ_TYPE_SOUND_RAM, SEQ_TYPE_SOUND_HD)) {
|
||||
seq_convert_transform_crop(scene, seq, render_size);
|
||||
}
|
||||
@@ -287,7 +287,7 @@ static void seq_convert_transform_animation_2(const Scene *scene,
|
||||
}
|
||||
|
||||
static void seq_convert_transform_crop_2(const Scene *scene,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
const eSpaceSeq_Proxy_RenderSize render_size)
|
||||
{
|
||||
const StripElem *s_elem = seq->data->stripdata;
|
||||
@@ -342,7 +342,7 @@ static void seq_convert_transform_crop_lb_2(const Scene *scene,
|
||||
const eSpaceSeq_Proxy_RenderSize render_size)
|
||||
{
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, lb) {
|
||||
LISTBASE_FOREACH (Strip *, seq, lb) {
|
||||
if (!ELEM(seq->type, SEQ_TYPE_SOUND_RAM, SEQ_TYPE_SOUND_HD)) {
|
||||
seq_convert_transform_crop_2(scene, seq, render_size);
|
||||
}
|
||||
@@ -372,7 +372,7 @@ static void seq_update_meta_disp_range(Scene *scene)
|
||||
SEQ_time_right_handle_frame_set(scene, ms->parseq, ms->disp_range[1]);
|
||||
|
||||
/* Recalculate effects using meta strip. */
|
||||
LISTBASE_FOREACH (Sequence *, seq, ms->oldbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ms->oldbasep) {
|
||||
if (seq->seq2) {
|
||||
seq->start = seq->startdisp = max_ii(seq->seq1->startdisp, seq->seq2->startdisp);
|
||||
seq->enddisp = min_ii(seq->seq1->enddisp, seq->seq2->enddisp);
|
||||
@@ -782,7 +782,7 @@ static void do_versions_291_fcurve_handles_limit(FCurve *fcu)
|
||||
|
||||
static void do_versions_strip_cache_settings_recursive(const ListBase *seqbase)
|
||||
{
|
||||
LISTBASE_FOREACH (Sequence *, seq, seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, seqbase) {
|
||||
seq->cache_flag = 0;
|
||||
if (seq->type == SEQ_TYPE_META) {
|
||||
do_versions_strip_cache_settings_recursive(&seq->seqbase);
|
||||
|
||||
@@ -289,7 +289,7 @@ static void do_versions_idproperty_bones_recursive(Bone *bone)
|
||||
|
||||
static void do_versions_idproperty_seq_recursive(ListBase *seqbase)
|
||||
{
|
||||
LISTBASE_FOREACH (Sequence *, seq, seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, seqbase) {
|
||||
version_idproperty_ui_data(seq->prop);
|
||||
if (seq->type == SEQ_TYPE_META) {
|
||||
do_versions_idproperty_seq_recursive(&seq->seqbase);
|
||||
@@ -425,7 +425,7 @@ static void do_versions_sequencer_speed_effect_recursive(Scene *scene, const Lis
|
||||
#define SEQ_SPEED_INTEGRATE (1 << 0)
|
||||
#define SEQ_SPEED_COMPRESS_IPO_Y (1 << 2)
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, seqbase) {
|
||||
if (seq->type == SEQ_TYPE_SPEED) {
|
||||
SpeedControlVars *v = (SpeedControlVars *)seq->effectdata;
|
||||
const char *substr = nullptr;
|
||||
@@ -462,8 +462,7 @@ static void do_versions_sequencer_speed_effect_recursive(Scene *scene, const Lis
|
||||
v->flags &= ~(SEQ_SPEED_INTEGRATE | SEQ_SPEED_COMPRESS_IPO_Y);
|
||||
|
||||
if (substr || globalSpeed != 1.0f) {
|
||||
FCurve *fcu = id_data_find_fcurve(
|
||||
&scene->id, seq, &RNA_Sequence, "speed_factor", 0, nullptr);
|
||||
FCurve *fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Strip, "speed_factor", 0, nullptr);
|
||||
if (fcu) {
|
||||
if (globalSpeed != 1.0f) {
|
||||
for (int i = 0; i < fcu->totvert; i++) {
|
||||
@@ -490,13 +489,13 @@ static void do_versions_sequencer_speed_effect_recursive(Scene *scene, const Lis
|
||||
#undef SEQ_SPEED_COMPRESS_IPO_Y
|
||||
}
|
||||
|
||||
static bool do_versions_sequencer_color_tags(Sequence *seq, void * /*user_data*/)
|
||||
static bool do_versions_sequencer_color_tags(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
seq->color_tag = SEQUENCE_COLOR_NONE;
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool do_versions_sequencer_color_balance_sop(Sequence *seq, void * /*user_data*/)
|
||||
static bool do_versions_sequencer_color_balance_sop(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
LISTBASE_FOREACH (SequenceModifierData *, smd, &seq->modifiers) {
|
||||
if (smd->type == seqModifierType_ColorBalance) {
|
||||
@@ -631,7 +630,7 @@ static bNodeTree *add_realize_node_tree(Main *bmain)
|
||||
return node_tree;
|
||||
}
|
||||
|
||||
static void seq_speed_factor_fix_rna_path(Sequence *seq, ListBase *fcurves)
|
||||
static void seq_speed_factor_fix_rna_path(Strip *seq, ListBase *fcurves)
|
||||
{
|
||||
char name_esc[(sizeof(seq->name) - 2) * 2];
|
||||
BLI_str_escape(name_esc, seq->name + 2, sizeof(name_esc));
|
||||
@@ -644,7 +643,7 @@ static void seq_speed_factor_fix_rna_path(Sequence *seq, ListBase *fcurves)
|
||||
MEM_freeN(path);
|
||||
}
|
||||
|
||||
static bool version_fix_seq_meta_range(Sequence *seq, void *user_data)
|
||||
static bool version_fix_seq_meta_range(Strip *seq, void *user_data)
|
||||
{
|
||||
Scene *scene = (Scene *)user_data;
|
||||
if (seq->type == SEQ_TYPE_META) {
|
||||
@@ -653,7 +652,7 @@ static bool version_fix_seq_meta_range(Sequence *seq, void *user_data)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool seq_speed_factor_set(Sequence *seq, void *user_data)
|
||||
static bool seq_speed_factor_set(Strip *seq, void *user_data)
|
||||
{
|
||||
const Scene *scene = static_cast<const Scene *>(user_data);
|
||||
if (seq->type == SEQ_TYPE_SOUND_RAM) {
|
||||
@@ -1503,7 +1502,7 @@ static bNodeSocket *do_version_replace_float_size_with_vector(bNodeTree *ntree,
|
||||
return new_socket;
|
||||
}
|
||||
|
||||
static bool seq_transform_origin_set(Sequence *seq, void * /*user_data*/)
|
||||
static bool seq_transform_origin_set(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
StripTransform *transform = seq->data->transform;
|
||||
if (seq->data->transform != nullptr) {
|
||||
@@ -1512,7 +1511,7 @@ static bool seq_transform_origin_set(Sequence *seq, void * /*user_data*/)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool seq_transform_filter_set(Sequence *seq, void * /*user_data*/)
|
||||
static bool seq_transform_filter_set(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
StripTransform *transform = seq->data->transform;
|
||||
if (seq->data->transform != nullptr) {
|
||||
@@ -1521,7 +1520,7 @@ static bool seq_transform_filter_set(Sequence *seq, void * /*user_data*/)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool seq_meta_channels_ensure(Sequence *seq, void * /*user_data*/)
|
||||
static bool seq_meta_channels_ensure(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
if (seq->type == SEQ_TYPE_META) {
|
||||
SEQ_channels_ensure(&seq->channels);
|
||||
@@ -1750,7 +1749,7 @@ static void version_node_tree_socket_id_delim(bNodeTree *ntree)
|
||||
}
|
||||
}
|
||||
|
||||
static bool version_merge_still_offsets(Sequence *seq, void * /*user_data*/)
|
||||
static bool version_merge_still_offsets(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
seq->startofs -= seq->startstill;
|
||||
seq->endofs -= seq->endstill;
|
||||
@@ -1759,13 +1758,13 @@ static bool version_merge_still_offsets(Sequence *seq, void * /*user_data*/)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool version_fix_delete_flag(Sequence *seq, void * /*user_data*/)
|
||||
static bool version_fix_delete_flag(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
seq->flag &= ~SEQ_FLAG_DELETE;
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool version_set_seq_single_frame_content(Sequence *seq, void * /*user_data*/)
|
||||
static bool version_set_seq_single_frame_content(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
if ((seq->len == 1) &&
|
||||
(seq->type == SEQ_TYPE_IMAGE ||
|
||||
@@ -1776,7 +1775,7 @@ static bool version_set_seq_single_frame_content(Sequence *seq, void * /*user_da
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool version_seq_fix_broken_sound_strips(Sequence *seq, void * /*user_data*/)
|
||||
static bool version_seq_fix_broken_sound_strips(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
if (seq->type != SEQ_TYPE_SOUND_RAM || seq->speed_factor != 0.0f) {
|
||||
return true;
|
||||
|
||||
@@ -1019,7 +1019,7 @@ static void version_nla_tweakmode_incomplete(Main *bmain)
|
||||
}
|
||||
}
|
||||
|
||||
static bool versioning_convert_strip_speed_factor(Sequence *seq, void *user_data)
|
||||
static bool versioning_convert_strip_speed_factor(Strip *seq, void *user_data)
|
||||
{
|
||||
const Scene *scene = static_cast<Scene *>(user_data);
|
||||
const float speed_factor = seq->speed_factor;
|
||||
@@ -1042,7 +1042,7 @@ static bool versioning_convert_strip_speed_factor(Sequence *seq, void *user_data
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool versioning_clear_strip_unused_flag(Sequence *seq, void * /*user_data*/)
|
||||
static bool versioning_clear_strip_unused_flag(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
seq->flag &= ~(1 << 6);
|
||||
return true;
|
||||
@@ -2973,7 +2973,7 @@ static void fix_geometry_nodes_object_info_scale(bNodeTree &ntree)
|
||||
}
|
||||
}
|
||||
|
||||
static bool seq_filter_bilinear_to_auto(Sequence *seq, void * /*user_data*/)
|
||||
static bool seq_filter_bilinear_to_auto(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
StripTransform *transform = seq->data->transform;
|
||||
if (transform != nullptr && transform->filter == SEQ_TRANSFORM_FILTER_BILINEAR) {
|
||||
@@ -3047,7 +3047,7 @@ static void hue_correct_set_wrapping(CurveMapping *curve_mapping)
|
||||
curve_mapping->curr.ymax = 1.0f;
|
||||
}
|
||||
|
||||
static bool seq_hue_correct_set_wrapping(Sequence *seq, void * /*user_data*/)
|
||||
static bool seq_hue_correct_set_wrapping(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
LISTBASE_FOREACH (SequenceModifierData *, smd, &seq->modifiers) {
|
||||
if (smd->type == seqModifierType_HueCorrect) {
|
||||
@@ -3067,7 +3067,7 @@ static void versioning_update_timecode(short int *tc)
|
||||
}
|
||||
}
|
||||
|
||||
static bool seq_proxies_timecode_update(Sequence *seq, void * /*user_data*/)
|
||||
static bool seq_proxies_timecode_update(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
if (seq->data == nullptr || seq->data->proxy == nullptr) {
|
||||
return true;
|
||||
@@ -3077,7 +3077,7 @@ static bool seq_proxies_timecode_update(Sequence *seq, void * /*user_data*/)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool seq_text_data_update(Sequence *seq, void * /*user_data*/)
|
||||
static bool seq_text_data_update(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
if (seq->type != SEQ_TYPE_TEXT || seq->effectdata == nullptr) {
|
||||
return true;
|
||||
@@ -3252,7 +3252,7 @@ static void hide_simulation_node_skip_socket_value(Main &bmain)
|
||||
}
|
||||
}
|
||||
|
||||
static bool versioning_convert_seq_text_anchor(Sequence *seq, void * /*user_data*/)
|
||||
static bool versioning_convert_seq_text_anchor(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
if (seq->type != SEQ_TYPE_TEXT || seq->effectdata == nullptr) {
|
||||
return true;
|
||||
|
||||
@@ -462,7 +462,7 @@ void blo_do_version_old_trackto_to_constraints(Object *ob)
|
||||
ob->track = nullptr;
|
||||
}
|
||||
|
||||
static bool seq_set_alpha_mode_cb(Sequence *seq, void * /*user_data*/)
|
||||
static bool seq_set_alpha_mode_cb(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
if (ELEM(seq->type, SEQ_TYPE_IMAGE, SEQ_TYPE_MOVIE)) {
|
||||
seq->alpha_mode = SEQ_ALPHA_STRAIGHT;
|
||||
@@ -470,7 +470,7 @@ static bool seq_set_alpha_mode_cb(Sequence *seq, void * /*user_data*/)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool seq_set_blend_mode_cb(Sequence *seq, void * /*user_data*/)
|
||||
static bool seq_set_blend_mode_cb(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
if (seq->blend_mode == 0) {
|
||||
seq->blend_opacity = 100.0f;
|
||||
@@ -2607,7 +2607,7 @@ void blo_do_versions_pre250(FileData *fd, Library *lib, Main *bmain)
|
||||
while (sce) {
|
||||
ed = sce->ed;
|
||||
if (ed) {
|
||||
LISTBASE_FOREACH (Sequence *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
LISTBASE_FOREACH (Strip *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
if (seq->data && seq->data->proxy) {
|
||||
seq->data->proxy->quality = 90;
|
||||
}
|
||||
|
||||
@@ -2236,7 +2236,7 @@ void DepsgraphNodeBuilder::build_vfont(VFont *vfont)
|
||||
&vfont->id, NodeType::GENERIC_DATABLOCK, OperationCode::GENERIC_DATABLOCK_UPDATE);
|
||||
}
|
||||
|
||||
static bool seq_node_build_cb(Sequence *seq, void *user_data)
|
||||
static bool seq_node_build_cb(Strip *seq, void *user_data)
|
||||
{
|
||||
DepsgraphNodeBuilder *nb = (DepsgraphNodeBuilder *)user_data;
|
||||
nb->build_idproperties(seq->prop);
|
||||
|
||||
@@ -3349,7 +3349,7 @@ struct Seq_build_prop_cb_data {
|
||||
bool has_audio_strips;
|
||||
};
|
||||
|
||||
static bool seq_build_prop_cb(Sequence *seq, void *user_data)
|
||||
static bool seq_build_prop_cb(Strip *seq, void *user_data)
|
||||
{
|
||||
Seq_build_prop_cb_data *cd = (Seq_build_prop_cb_data *)user_data;
|
||||
|
||||
|
||||
@@ -350,7 +350,7 @@ RNANodeIdentifier RNANodeQuery::construct_node_identifier(const PointerRNA *ptr,
|
||||
node_identifier.type = NodeType::GEOMETRY;
|
||||
return node_identifier;
|
||||
}
|
||||
else if (RNA_struct_is_a(ptr->type, &RNA_Sequence)) {
|
||||
else if (RNA_struct_is_a(ptr->type, &RNA_Strip)) {
|
||||
/* Sequencer strip */
|
||||
node_identifier.type = NodeType::SEQUENCER;
|
||||
return node_identifier;
|
||||
|
||||
@@ -23,7 +23,7 @@ void SequenceBackup::reset()
|
||||
BLI_listbase_clear(&anims);
|
||||
}
|
||||
|
||||
void SequenceBackup::init_from_sequence(Sequence *sequence)
|
||||
void SequenceBackup::init_from_sequence(Strip *sequence)
|
||||
{
|
||||
scene_sound = sequence->scene_sound;
|
||||
anims = sequence->anims;
|
||||
@@ -32,7 +32,7 @@ void SequenceBackup::init_from_sequence(Sequence *sequence)
|
||||
BLI_listbase_clear(&sequence->anims);
|
||||
}
|
||||
|
||||
void SequenceBackup::restore_to_sequence(Sequence *sequence)
|
||||
void SequenceBackup::restore_to_sequence(Strip *sequence)
|
||||
{
|
||||
sequence->scene_sound = scene_sound;
|
||||
sequence->anims = anims;
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
#include "BLI_listbase.h"
|
||||
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
|
||||
namespace blender::deg {
|
||||
|
||||
@@ -23,8 +23,8 @@ class SequenceBackup {
|
||||
|
||||
void reset();
|
||||
|
||||
void init_from_sequence(Sequence *sequence);
|
||||
void restore_to_sequence(Sequence *sequence);
|
||||
void init_from_sequence(Strip *sequence);
|
||||
void restore_to_sequence(Strip *sequence);
|
||||
|
||||
bool isEmpty() const;
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace blender::deg {
|
||||
|
||||
SequencerBackup::SequencerBackup(const Depsgraph *depsgraph) : depsgraph(depsgraph) {}
|
||||
|
||||
static bool seq_init_cb(Sequence *seq, void *user_data)
|
||||
static bool seq_init_cb(Strip *seq, void *user_data)
|
||||
{
|
||||
SequencerBackup *sb = (SequencerBackup *)user_data;
|
||||
SequenceBackup sequence_backup(sb->depsgraph);
|
||||
@@ -41,7 +41,7 @@ void SequencerBackup::init_from_scene(Scene *scene)
|
||||
}
|
||||
}
|
||||
|
||||
static bool seq_restore_cb(Sequence *seq, void *user_data)
|
||||
static bool seq_restore_cb(Strip *seq, void *user_data)
|
||||
{
|
||||
SequencerBackup *sb = (SequencerBackup *)user_data;
|
||||
const SessionUID &session_uid = seq->runtime.session_uid;
|
||||
|
||||
@@ -182,7 +182,7 @@ static void animchan_sync_fcurve_scene(bAnimListElem *ale)
|
||||
BLI_assert(GS(owner_id->name) == ID_SCE);
|
||||
Scene *scene = (Scene *)owner_id;
|
||||
FCurve *fcu = (FCurve *)ale->data;
|
||||
Sequence *seq = nullptr;
|
||||
Strip *seq = nullptr;
|
||||
|
||||
/* Only affect if F-Curve involves sequence_editor.sequences. */
|
||||
char seq_name[sizeof(seq->name)];
|
||||
|
||||
@@ -183,7 +183,7 @@ static bool actedit_get_context(bAnimContext *ac, SpaceAction *saction)
|
||||
{
|
||||
/* TODO: other methods to get the mask. */
|
||||
#if 0
|
||||
Sequence *seq = SEQ_select_active_get(ac->scene);
|
||||
Strip *seq = SEQ_select_active_get(ac->scene);
|
||||
MovieClip *clip = ac->scene->clip;
|
||||
struct Mask *mask = seq ? seq->mask : nullptr;
|
||||
#endif
|
||||
@@ -1009,7 +1009,7 @@ static bool skip_fcurve_selected_data(bAnimContext *ac,
|
||||
}
|
||||
else if (GS(owner_id->name) == ID_SCE) {
|
||||
Scene *scene = (Scene *)owner_id;
|
||||
Sequence *seq = nullptr;
|
||||
Strip *seq = nullptr;
|
||||
char seq_name[sizeof(seq->name)];
|
||||
|
||||
/* Only consider if F-Curve involves `sequence_editor.sequences`. */
|
||||
|
||||
@@ -118,7 +118,7 @@ static int seq_frame_apply_snap(bContext *C, Scene *scene, const int timeline_fr
|
||||
|
||||
int best_frame = 0;
|
||||
int best_distance = MAXFRAME;
|
||||
for (Sequence *seq : SEQ_query_all_strips(seqbase)) {
|
||||
for (Strip *seq : SEQ_query_all_strips(seqbase)) {
|
||||
seq_frame_snap_update_best(
|
||||
SEQ_time_left_handle_frame_get(scene, seq), timeline_frame, &best_frame, &best_distance);
|
||||
seq_frame_snap_update_best(
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#include "BLI_vector_set.hh"
|
||||
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
struct SpaceSeq;
|
||||
struct bContext;
|
||||
struct View2D;
|
||||
@@ -24,12 +24,12 @@ enum eSeqHandle {
|
||||
};
|
||||
|
||||
struct StripSelection {
|
||||
Sequence *seq1 = nullptr;
|
||||
Sequence *seq2 = nullptr;
|
||||
Strip *seq1 = nullptr;
|
||||
Strip *seq2 = nullptr;
|
||||
eSeqHandle handle = SEQ_HANDLE_NONE;
|
||||
};
|
||||
|
||||
void ED_sequencer_select_sequence_single(Scene *scene, Sequence *seq, bool deselect_all);
|
||||
void ED_sequencer_select_sequence_single(Scene *scene, Strip *seq, bool deselect_all);
|
||||
/**
|
||||
* Iterates over a scene's sequences and deselects all of them.
|
||||
*
|
||||
@@ -58,7 +58,7 @@ bool ED_space_sequencer_has_playback_animation(const SpaceSeq *sseq, const Scene
|
||||
|
||||
void ED_operatormacros_sequencer();
|
||||
|
||||
Sequence *ED_sequencer_special_preview_get();
|
||||
Strip *ED_sequencer_special_preview_get();
|
||||
void ED_sequencer_special_preview_set(bContext *C, const int mval[2]);
|
||||
void ED_sequencer_special_preview_clear();
|
||||
bool sequencer_retiming_mode_is_active(const bContext *C);
|
||||
@@ -68,11 +68,11 @@ bool sequencer_retiming_mode_is_active(const bContext *C);
|
||||
* frame.
|
||||
*
|
||||
* \param C: context
|
||||
* \return collection of strips (`Sequence`)
|
||||
* \return collection of strips (`Strip`)
|
||||
*/
|
||||
blender::VectorSet<Sequence *> ED_sequencer_selected_strips_from_context(bContext *C);
|
||||
blender::VectorSet<Strip *> ED_sequencer_selected_strips_from_context(bContext *C);
|
||||
StripSelection ED_sequencer_pick_strip_and_handle(const struct Scene *scene,
|
||||
const View2D *v2d,
|
||||
float mouse_co[2]);
|
||||
bool ED_sequencer_can_select_handle(const Scene *scene, const Sequence *seq, const View2D *v2d);
|
||||
bool ED_sequencer_handle_is_selected(const Sequence *seq, eSeqHandle handle);
|
||||
bool ED_sequencer_can_select_handle(const Scene *scene, const Strip *seq, const View2D *v2d);
|
||||
bool ED_sequencer_handle_is_selected(const Strip *seq, eSeqHandle handle);
|
||||
|
||||
@@ -1171,7 +1171,7 @@ bool UI_context_copy_to_selected_list(bContext *C,
|
||||
|
||||
*r_lb = list_of_things;
|
||||
}
|
||||
else if (RNA_struct_is_a(ptr->type, &RNA_Sequence)) {
|
||||
else if (RNA_struct_is_a(ptr->type, &RNA_Strip)) {
|
||||
/* Special case when we do this for 'Sequence.lock'.
|
||||
* (if the sequence is locked, it won't be in "selected_editable_sequences"). */
|
||||
const char *prop_id = RNA_property_identifier(prop);
|
||||
@@ -1298,9 +1298,9 @@ bool UI_context_copy_to_selected_list(bContext *C,
|
||||
}
|
||||
else if (GS(id->name) == ID_SCE) {
|
||||
/* Sequencer's ID is scene :/ */
|
||||
/* Try to recursively find an RNA_Sequence ancestor,
|
||||
/* Try to recursively find an RNA_Strip ancestor,
|
||||
* to handle situations like #41062... */
|
||||
*r_path = RNA_path_resolve_from_type_to_property(ptr, prop, &RNA_Sequence);
|
||||
*r_path = RNA_path_resolve_from_type_to_property(ptr, prop, &RNA_Strip);
|
||||
if (r_path->has_value()) {
|
||||
/* Special case when we do this for 'Sequence.lock'.
|
||||
* (if the sequence is locked, it won't be in "selected_editable_sequences"). */
|
||||
|
||||
@@ -71,7 +71,7 @@ Scene *ED_scene_sequencer_add(Main *bmain,
|
||||
eSceneCopyMethod method,
|
||||
const bool assign_strip)
|
||||
{
|
||||
Sequence *seq = nullptr;
|
||||
Strip *seq = nullptr;
|
||||
Scene *scene_active = CTX_data_scene(C);
|
||||
Scene *scene_strip = nullptr;
|
||||
/* Sequencer need to use as base the scene defined in the strip, not the main scene. */
|
||||
@@ -311,7 +311,7 @@ static int scene_new_sequencer_exec(bContext *C, wmOperator *op)
|
||||
static bool scene_new_sequencer_poll(bContext *C)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
const Sequence *seq = SEQ_select_active_get(scene);
|
||||
const Strip *seq = SEQ_select_active_get(scene);
|
||||
return (seq && (seq->type == SEQ_TYPE_SCENE));
|
||||
}
|
||||
|
||||
@@ -334,7 +334,7 @@ static const EnumPropertyItem *scene_new_sequencer_enum_itemf(bContext *C,
|
||||
}
|
||||
else {
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Sequence *seq = SEQ_select_active_get(scene);
|
||||
Strip *seq = SEQ_select_active_get(scene);
|
||||
if (seq && (seq->type == SEQ_TYPE_SCENE) && (seq->scene != nullptr)) {
|
||||
has_scene_or_no_context = true;
|
||||
}
|
||||
|
||||
@@ -673,9 +673,9 @@ static eContextResult screen_ctx_active_sequence_strip(const bContext *C,
|
||||
{
|
||||
wmWindow *win = CTX_wm_window(C);
|
||||
Scene *scene = WM_window_get_active_scene(win);
|
||||
Sequence *seq = SEQ_select_active_get(scene);
|
||||
Strip *seq = SEQ_select_active_get(scene);
|
||||
if (seq) {
|
||||
CTX_data_pointer_set(result, &scene->id, &RNA_Sequence, seq);
|
||||
CTX_data_pointer_set(result, &scene->id, &RNA_Strip, seq);
|
||||
return CTX_RESULT_OK;
|
||||
}
|
||||
return CTX_RESULT_NO_DATA;
|
||||
@@ -686,8 +686,8 @@ static eContextResult screen_ctx_sequences(const bContext *C, bContextDataResult
|
||||
Scene *scene = WM_window_get_active_scene(win);
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
if (ed) {
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
CTX_data_list_add(result, &scene->id, &RNA_Sequence, seq);
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
CTX_data_list_add(result, &scene->id, &RNA_Strip, seq);
|
||||
}
|
||||
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
|
||||
return CTX_RESULT_OK;
|
||||
@@ -700,9 +700,9 @@ static eContextResult screen_ctx_selected_sequences(const bContext *C, bContextD
|
||||
Scene *scene = WM_window_get_active_scene(win);
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
if (ed) {
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if (seq->flag & SELECT) {
|
||||
CTX_data_list_add(result, &scene->id, &RNA_Sequence, seq);
|
||||
CTX_data_list_add(result, &scene->id, &RNA_Strip, seq);
|
||||
}
|
||||
}
|
||||
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
|
||||
@@ -721,9 +721,9 @@ static eContextResult screen_ctx_selected_editable_sequences(const bContext *C,
|
||||
}
|
||||
|
||||
ListBase *channels = SEQ_channels_displayed_get(ed);
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if (seq->flag & SELECT && !SEQ_transform_is_locked(channels, seq)) {
|
||||
CTX_data_list_add(result, &scene->id, &RNA_Sequence, seq);
|
||||
CTX_data_list_add(result, &scene->id, &RNA_Strip, seq);
|
||||
}
|
||||
}
|
||||
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
|
||||
|
||||
@@ -192,13 +192,13 @@ static void SOUND_OT_open_mono(wmOperatorType *ot)
|
||||
|
||||
static void sound_update_animation_flags(Scene *scene);
|
||||
|
||||
static bool sound_update_animation_flags_fn(Sequence *seq, void *user_data)
|
||||
static bool sound_update_animation_flags_fn(Strip *seq, void *user_data)
|
||||
{
|
||||
const FCurve *fcu;
|
||||
Scene *scene = (Scene *)user_data;
|
||||
bool driven;
|
||||
|
||||
fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence, "volume", 0, &driven);
|
||||
fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Strip, "volume", 0, &driven);
|
||||
if (fcu || driven) {
|
||||
seq->flag |= SEQ_AUDIO_VOLUME_ANIMATED;
|
||||
}
|
||||
@@ -206,7 +206,7 @@ static bool sound_update_animation_flags_fn(Sequence *seq, void *user_data)
|
||||
seq->flag &= ~SEQ_AUDIO_VOLUME_ANIMATED;
|
||||
}
|
||||
|
||||
fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence, "pitch", 0, &driven);
|
||||
fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Strip, "pitch", 0, &driven);
|
||||
if (fcu || driven) {
|
||||
seq->flag |= SEQ_AUDIO_PITCH_ANIMATED;
|
||||
}
|
||||
@@ -214,7 +214,7 @@ static bool sound_update_animation_flags_fn(Sequence *seq, void *user_data)
|
||||
seq->flag &= ~SEQ_AUDIO_PITCH_ANIMATED;
|
||||
}
|
||||
|
||||
fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence, "pan", 0, &driven);
|
||||
fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Strip, "pan", 0, &driven);
|
||||
if (fcu || driven) {
|
||||
seq->flag |= SEQ_AUDIO_PAN_ANIMATED;
|
||||
}
|
||||
|
||||
@@ -736,7 +736,7 @@ static void tree_element_sequence_activate(bContext *C,
|
||||
const eOLSetState set)
|
||||
{
|
||||
const TreeElementSequence *te_seq = tree_element_cast<TreeElementSequence>(te);
|
||||
Sequence *seq = &te_seq->get_sequence();
|
||||
Strip *seq = &te_seq->get_sequence();
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
|
||||
if (BLI_findindex(ed->seqbasep, seq) != -1) {
|
||||
@@ -764,7 +764,7 @@ static void tree_element_sequence_dup_activate(Scene *scene, TreeElement * /*te*
|
||||
#if 0
|
||||
select_single_seq(seq, 1);
|
||||
#endif
|
||||
Sequence *p = static_cast<Sequence *>(ed->seqbasep->first);
|
||||
Strip *p = static_cast<Strip *>(ed->seqbasep->first);
|
||||
while (p) {
|
||||
if ((!p->data) || (!p->data->stripdata) || (p->data->stripdata->filename[0] == '\0')) {
|
||||
p = p->next;
|
||||
@@ -1023,7 +1023,7 @@ static eOLDrawState tree_element_bone_collection_state_get(const TreeElement *te
|
||||
static eOLDrawState tree_element_sequence_state_get(const Scene *scene, const TreeElement *te)
|
||||
{
|
||||
const TreeElementSequence *te_seq = tree_element_cast<TreeElementSequence>(te);
|
||||
const Sequence *seq = &te_seq->get_sequence();
|
||||
const Strip *seq = &te_seq->get_sequence();
|
||||
const Editing *ed = scene->ed;
|
||||
|
||||
if (ed && ed->act_seq == seq && seq->flag & SELECT) {
|
||||
@@ -1036,7 +1036,7 @@ static eOLDrawState tree_element_sequence_dup_state_get(const TreeElement *te)
|
||||
{
|
||||
const TreeElementSequenceStripDuplicate *te_dup =
|
||||
tree_element_cast<TreeElementSequenceStripDuplicate>(te);
|
||||
const Sequence *seq = &te_dup->get_sequence();
|
||||
const Strip *seq = &te_dup->get_sequence();
|
||||
if (seq->flag & SELECT) {
|
||||
return OL_DRAWSEL_NORMAL;
|
||||
}
|
||||
|
||||
@@ -255,7 +255,7 @@ static void outliner_select_sync_to_sequence(Scene *scene, const TreeElement *te
|
||||
const TreeStoreElem *tselem = TREESTORE(te);
|
||||
|
||||
const TreeElementSequence *te_sequence = tree_element_cast<TreeElementSequence>(te);
|
||||
Sequence *seq = &te_sequence->get_sequence();
|
||||
Strip *seq = &te_sequence->get_sequence();
|
||||
|
||||
if (tselem->flag & TSE_ACTIVE) {
|
||||
SEQ_select_active_set(scene, seq);
|
||||
@@ -424,12 +424,12 @@ static void outliner_select_sync_from_pose_bone(bPoseChannel *pchan_active,
|
||||
}
|
||||
}
|
||||
|
||||
static void outliner_select_sync_from_sequence(Sequence *sequence_active, const TreeElement *te)
|
||||
static void outliner_select_sync_from_sequence(Strip *sequence_active, const TreeElement *te)
|
||||
{
|
||||
TreeStoreElem *tselem = TREESTORE(te);
|
||||
|
||||
const TreeElementSequence *te_sequence = tree_element_cast<TreeElementSequence>(te);
|
||||
const Sequence *seq = &te_sequence->get_sequence();
|
||||
const Strip *seq = &te_sequence->get_sequence();
|
||||
|
||||
if (seq == sequence_active) {
|
||||
tselem->flag |= TSE_ACTIVE;
|
||||
@@ -454,7 +454,7 @@ struct SyncSelectActiveData {
|
||||
Object *object;
|
||||
EditBone *edit_bone;
|
||||
bPoseChannel *pose_channel;
|
||||
Sequence *sequence;
|
||||
Strip *sequence;
|
||||
};
|
||||
|
||||
/** Sync select and active flags from active view layer, bones, and sequences to the outliner. */
|
||||
|
||||
@@ -2150,7 +2150,7 @@ static void ebone_fn(int event, TreeElement *te, TreeStoreElem * /*tselem*/, voi
|
||||
static void sequence_fn(int event, TreeElement *te, TreeStoreElem * /*tselem*/, void *scene_ptr)
|
||||
{
|
||||
TreeElementSequence *te_seq = tree_element_cast<TreeElementSequence>(te);
|
||||
Sequence *seq = &te_seq->get_sequence();
|
||||
Strip *seq = &te_seq->get_sequence();
|
||||
Scene *scene = (Scene *)scene_ptr;
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
if (BLI_findindex(ed->seqbasep, seq) != -1) {
|
||||
|
||||
@@ -30,7 +30,7 @@ struct Library;
|
||||
struct ListBase;
|
||||
struct Main;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
struct SpaceOutliner;
|
||||
struct ViewLayer;
|
||||
|
||||
@@ -237,8 +237,8 @@ class TreeDisplaySequencer final : public AbstractTreeDisplay {
|
||||
/**
|
||||
* Helped function to put duplicate sequence in the same tree.
|
||||
*/
|
||||
SequenceAddOp need_add_seq_dup(Sequence *seq) const;
|
||||
void add_seq_dup(Sequence *seq, TreeElement *te, short index);
|
||||
SequenceAddOp need_add_seq_dup(Strip *seq) const;
|
||||
void add_seq_dup(Strip *seq, TreeElement *te, short index);
|
||||
};
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
||||
@@ -38,7 +38,7 @@ ListBase TreeDisplaySequencer::build_tree(const TreeSourceData &source_data)
|
||||
return tree;
|
||||
}
|
||||
|
||||
for (Sequence *seq : List<Sequence>(ed->seqbasep)) {
|
||||
for (Strip *seq : List<Strip>(ed->seqbasep)) {
|
||||
SequenceAddOp op = need_add_seq_dup(seq);
|
||||
if (op == SEQUENCE_DUPLICATE_NONE) {
|
||||
add_element(&tree, nullptr, seq, nullptr, TSE_SEQUENCE, 0);
|
||||
@@ -52,7 +52,7 @@ ListBase TreeDisplaySequencer::build_tree(const TreeSourceData &source_data)
|
||||
return tree;
|
||||
}
|
||||
|
||||
SequenceAddOp TreeDisplaySequencer::need_add_seq_dup(Sequence *seq) const
|
||||
SequenceAddOp TreeDisplaySequencer::need_add_seq_dup(Strip *seq) const
|
||||
{
|
||||
if ((!seq->data) || (!seq->data->stripdata)) {
|
||||
return SEQUENCE_DUPLICATE_NONE;
|
||||
@@ -62,7 +62,7 @@ SequenceAddOp TreeDisplaySequencer::need_add_seq_dup(Sequence *seq) const
|
||||
* First check backward, if we found a duplicate
|
||||
* sequence before this, don't need it, just return.
|
||||
*/
|
||||
Sequence *p = seq->prev;
|
||||
Strip *p = seq->prev;
|
||||
while (p) {
|
||||
if ((!p->data) || (!p->data->stripdata)) {
|
||||
p = p->prev;
|
||||
@@ -91,9 +91,9 @@ SequenceAddOp TreeDisplaySequencer::need_add_seq_dup(Sequence *seq) const
|
||||
return SEQUENCE_DUPLICATE_NONE;
|
||||
}
|
||||
|
||||
void TreeDisplaySequencer::add_seq_dup(Sequence *seq, TreeElement *te, short index)
|
||||
void TreeDisplaySequencer::add_seq_dup(Strip *seq, TreeElement *te, short index)
|
||||
{
|
||||
Sequence *p = seq;
|
||||
Strip *p = seq;
|
||||
while (p) {
|
||||
if ((!p->data) || (!p->data->stripdata) || (p->data->stripdata->filename[0] == '\0')) {
|
||||
p = p->next;
|
||||
|
||||
@@ -127,14 +127,13 @@ std::unique_ptr<AbstractTreeElement> AbstractTreeElement::create_from_type(const
|
||||
return std::make_unique<TreeElementRNAArrayElement>(
|
||||
legacy_te, *static_cast<PointerRNA *>(create_data), legacy_te.index);
|
||||
case TSE_SEQUENCE:
|
||||
return std::make_unique<TreeElementSequence>(legacy_te,
|
||||
*static_cast<Sequence *>(create_data));
|
||||
return std::make_unique<TreeElementSequence>(legacy_te, *static_cast<Strip *>(create_data));
|
||||
case TSE_SEQ_STRIP:
|
||||
return std::make_unique<TreeElementSequenceStrip>(legacy_te,
|
||||
*static_cast<StripData *>(create_data));
|
||||
case TSE_SEQUENCE_DUP:
|
||||
return std::make_unique<TreeElementSequenceStripDuplicate>(
|
||||
legacy_te, *static_cast<Sequence *>(create_data));
|
||||
legacy_te, *static_cast<Strip *>(create_data));
|
||||
case TSE_BONE:
|
||||
return std::make_unique<TreeElementBone>(
|
||||
legacy_te, *owner_id, *static_cast<Bone *>(create_data));
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
namespace blender::ed::outliner {
|
||||
|
||||
TreeElementSequence::TreeElementSequence(TreeElement &legacy_te, Sequence &sequence)
|
||||
TreeElementSequence::TreeElementSequence(TreeElement &legacy_te, Strip &sequence)
|
||||
: AbstractTreeElement(legacy_te), sequence_(sequence)
|
||||
{
|
||||
BLI_assert(legacy_te.store_elem->type == TSE_SEQUENCE);
|
||||
@@ -39,7 +39,7 @@ void TreeElementSequence::expand(SpaceOutliner & /*space_outliner*/) const
|
||||
*/
|
||||
|
||||
if (sequence_.type == SEQ_TYPE_META) {
|
||||
LISTBASE_FOREACH (Sequence *, child, &sequence_.seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, child, &sequence_.seqbase) {
|
||||
add_element(&legacy_te_.subtree, nullptr, child, &legacy_te_, TSE_SEQUENCE, 0);
|
||||
}
|
||||
}
|
||||
@@ -48,7 +48,7 @@ void TreeElementSequence::expand(SpaceOutliner & /*space_outliner*/) const
|
||||
}
|
||||
}
|
||||
|
||||
Sequence &TreeElementSequence::get_sequence() const
|
||||
Strip &TreeElementSequence::get_sequence() const
|
||||
{
|
||||
return sequence_;
|
||||
}
|
||||
@@ -78,14 +78,14 @@ TreeElementSequenceStrip::TreeElementSequenceStrip(TreeElement &legacy_te, Strip
|
||||
/* Strip Duplicate */
|
||||
|
||||
TreeElementSequenceStripDuplicate::TreeElementSequenceStripDuplicate(TreeElement &legacy_te,
|
||||
Sequence &sequence)
|
||||
Strip &sequence)
|
||||
: AbstractTreeElement(legacy_te), sequence_(sequence)
|
||||
{
|
||||
BLI_assert(legacy_te.store_elem->type == TSE_SEQUENCE_DUP);
|
||||
legacy_te_.name = sequence.data->stripdata->filename;
|
||||
}
|
||||
|
||||
Sequence &TreeElementSequenceStripDuplicate::get_sequence() const
|
||||
Strip &TreeElementSequenceStripDuplicate::get_sequence() const
|
||||
{
|
||||
return sequence_;
|
||||
}
|
||||
|
||||
@@ -12,21 +12,21 @@
|
||||
|
||||
#include "tree_element.hh"
|
||||
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
struct StripData;
|
||||
|
||||
namespace blender::ed::outliner {
|
||||
|
||||
class TreeElementSequence : public AbstractTreeElement {
|
||||
Sequence &sequence_;
|
||||
Strip &sequence_;
|
||||
|
||||
public:
|
||||
TreeElementSequence(TreeElement &legacy_te, Sequence &sequence);
|
||||
TreeElementSequence(TreeElement &legacy_te, Strip &sequence);
|
||||
|
||||
bool expand_poll(const SpaceOutliner &) const override;
|
||||
void expand(SpaceOutliner &) const override;
|
||||
|
||||
Sequence &get_sequence() const;
|
||||
Strip &get_sequence() const;
|
||||
SequenceType get_sequence_type() const;
|
||||
};
|
||||
|
||||
@@ -40,12 +40,12 @@ class TreeElementSequenceStrip : public AbstractTreeElement {
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
||||
class TreeElementSequenceStripDuplicate : public AbstractTreeElement {
|
||||
Sequence &sequence_;
|
||||
Strip &sequence_;
|
||||
|
||||
public:
|
||||
TreeElementSequenceStripDuplicate(TreeElement &legacy_te, Sequence &sequence);
|
||||
TreeElementSequenceStripDuplicate(TreeElement &legacy_te, Strip &sequence);
|
||||
|
||||
Sequence &get_sequence() const;
|
||||
Strip &get_sequence() const;
|
||||
};
|
||||
|
||||
} // namespace blender::ed::outliner
|
||||
|
||||
@@ -173,7 +173,7 @@ static void sequencer_generic_invoke_path__internal(bContext *C,
|
||||
{
|
||||
if (RNA_struct_find_property(op->ptr, identifier)) {
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Sequence *last_seq = SEQ_select_active_get(scene);
|
||||
Strip *last_seq = SEQ_select_active_get(scene);
|
||||
if (last_seq && last_seq->data && SEQ_HAS_PATH(last_seq)) {
|
||||
Main *bmain = CTX_data_main(C);
|
||||
char dirpath[FILE_MAX];
|
||||
@@ -186,7 +186,7 @@ static void sequencer_generic_invoke_path__internal(bContext *C,
|
||||
|
||||
static int sequencer_generic_invoke_xy_guess_channel(bContext *C, int type)
|
||||
{
|
||||
Sequence *tgt = nullptr;
|
||||
Strip *tgt = nullptr;
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Editing *ed = SEQ_editing_ensure(scene);
|
||||
int timeline_frame = int(scene->r.cfra);
|
||||
@@ -196,7 +196,7 @@ static int sequencer_generic_invoke_xy_guess_channel(bContext *C, int type)
|
||||
return 1;
|
||||
}
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
const int strip_end = SEQ_time_right_handle_frame_get(scene, seq);
|
||||
if (ELEM(type, -1, seq->type) && (strip_end <= timeline_frame) &&
|
||||
(timeline_frame - strip_end < proximity))
|
||||
@@ -372,7 +372,7 @@ static bool load_data_init_from_operator(SeqLoadData *load_data, bContext *C, wm
|
||||
return true;
|
||||
}
|
||||
|
||||
static void seq_load_apply_generic_options(bContext *C, wmOperator *op, Sequence *seq)
|
||||
static void seq_load_apply_generic_options(bContext *C, wmOperator *op, Strip *seq)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
@@ -395,7 +395,7 @@ static void seq_load_apply_generic_options(bContext *C, wmOperator *op, Sequence
|
||||
|
||||
if (RNA_boolean_get(op->ptr, "overlap_shuffle_override")) {
|
||||
/* Use set overlap_mode to fix overlaps. */
|
||||
blender::VectorSet<Sequence *> strip_col;
|
||||
blender::VectorSet<Strip *> strip_col;
|
||||
strip_col.add(seq);
|
||||
|
||||
ScrArea *area = CTX_wm_area(C);
|
||||
@@ -412,7 +412,7 @@ static void seq_load_apply_generic_options(bContext *C, wmOperator *op, Sequence
|
||||
/* In this alternative version we only check for overlap, but do not do anything about them. */
|
||||
static bool seq_load_apply_generic_options_only_test_overlap(bContext *C,
|
||||
wmOperator *op,
|
||||
Sequence *seq)
|
||||
Strip *seq)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
@@ -470,7 +470,7 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op)
|
||||
load_data_init_from_operator(&load_data, C, op);
|
||||
load_data.scene = sce_seq;
|
||||
|
||||
Sequence *seq = SEQ_add_scene_strip(scene, ed->seqbasep, &load_data);
|
||||
Strip *seq = SEQ_add_scene_strip(scene, ed->seqbasep, &load_data);
|
||||
seq_load_apply_generic_options(C, op, seq);
|
||||
|
||||
DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS);
|
||||
@@ -569,7 +569,7 @@ static int sequencer_add_scene_strip_new_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
load_data.scene = scene_new;
|
||||
|
||||
Sequence *seq = SEQ_add_scene_strip(scene, ed->seqbasep, &load_data);
|
||||
Strip *seq = SEQ_add_scene_strip(scene, ed->seqbasep, &load_data);
|
||||
seq_load_apply_generic_options(C, op, seq);
|
||||
|
||||
DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS);
|
||||
@@ -607,7 +607,7 @@ static const EnumPropertyItem *strip_new_sequencer_enum_itemf(bContext *C,
|
||||
}
|
||||
else {
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Sequence *seq = SEQ_select_active_get(scene);
|
||||
Strip *seq = SEQ_select_active_get(scene);
|
||||
if (seq && (seq->type == SEQ_TYPE_SCENE) && (seq->scene != nullptr)) {
|
||||
has_scene_or_no_context = true;
|
||||
}
|
||||
@@ -671,7 +671,7 @@ static int sequencer_add_movieclip_strip_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
load_data.clip = clip;
|
||||
|
||||
Sequence *seq = SEQ_add_movieclip_strip(scene, ed->seqbasep, &load_data);
|
||||
Strip *seq = SEQ_add_movieclip_strip(scene, ed->seqbasep, &load_data);
|
||||
seq_load_apply_generic_options(C, op, seq);
|
||||
|
||||
DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS);
|
||||
@@ -735,7 +735,7 @@ static int sequencer_add_mask_strip_exec(bContext *C, wmOperator *op)
|
||||
load_data_init_from_operator(&load_data, C, op);
|
||||
load_data.mask = mask;
|
||||
|
||||
Sequence *seq = SEQ_add_mask_strip(scene, ed->seqbasep, &load_data);
|
||||
Strip *seq = SEQ_add_mask_strip(scene, ed->seqbasep, &load_data);
|
||||
seq_load_apply_generic_options(C, op, seq);
|
||||
|
||||
DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS);
|
||||
@@ -820,7 +820,7 @@ static IMB_Proxy_Size seq_get_proxy_size_flags(bContext *C)
|
||||
return proxy_sizes;
|
||||
}
|
||||
|
||||
static void seq_build_proxy(bContext *C, blender::Span<Sequence *> movie_strips)
|
||||
static void seq_build_proxy(bContext *C, blender::Span<Strip *> movie_strips)
|
||||
{
|
||||
if (U.sequencer_proxy_setup != USER_SEQ_PROXY_SETUP_AUTOMATIC) {
|
||||
return;
|
||||
@@ -829,7 +829,7 @@ static void seq_build_proxy(bContext *C, blender::Span<Sequence *> movie_strips)
|
||||
wmJob *wm_job = ED_seq_proxy_wm_job_get(C);
|
||||
ProxyJob *pj = ED_seq_proxy_job_get(C, wm_job);
|
||||
|
||||
for (Sequence *seq : movie_strips) {
|
||||
for (Strip *seq : movie_strips) {
|
||||
/* Enable and set proxy size. */
|
||||
SEQ_proxy_set(seq, true);
|
||||
seq->data->proxy->build_size_flags = seq_get_proxy_size_flags(C);
|
||||
@@ -845,7 +845,7 @@ static void seq_build_proxy(bContext *C, blender::Span<Sequence *> movie_strips)
|
||||
}
|
||||
|
||||
static void sequencer_add_movie_sync_sound_strip(
|
||||
Main *bmain, Scene *scene, Sequence *seq_movie, Sequence *seq_sound, SeqLoadData *load_data)
|
||||
Main *bmain, Scene *scene, Strip *seq_movie, Strip *seq_sound, SeqLoadData *load_data)
|
||||
{
|
||||
if (ELEM(nullptr, seq_movie, seq_sound)) {
|
||||
return;
|
||||
@@ -866,7 +866,7 @@ static void sequencer_add_movie_sync_sound_strip(
|
||||
static void sequencer_add_movie_multiple_strips(bContext *C,
|
||||
wmOperator *op,
|
||||
SeqLoadData *load_data,
|
||||
blender::VectorSet<Sequence *> &r_movie_strips)
|
||||
blender::VectorSet<Strip *> &r_movie_strips)
|
||||
{
|
||||
Main *bmain = CTX_data_main(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
@@ -874,7 +874,7 @@ static void sequencer_add_movie_multiple_strips(bContext *C,
|
||||
bool overlap_shuffle_override = RNA_boolean_get(op->ptr, "overlap") == false &&
|
||||
RNA_boolean_get(op->ptr, "overlap_shuffle_override");
|
||||
bool has_seq_overlap = false;
|
||||
blender::Vector<Sequence *> added_strips;
|
||||
blender::Vector<Strip *> added_strips;
|
||||
|
||||
RNA_BEGIN (op->ptr, itemptr, "files") {
|
||||
char dir_only[FILE_MAX];
|
||||
@@ -883,8 +883,8 @@ static void sequencer_add_movie_multiple_strips(bContext *C,
|
||||
RNA_string_get(&itemptr, "name", file_only);
|
||||
BLI_path_join(load_data->path, sizeof(load_data->path), dir_only, file_only);
|
||||
STRNCPY(load_data->name, file_only);
|
||||
Sequence *seq_movie = nullptr;
|
||||
Sequence *seq_sound = nullptr;
|
||||
Strip *seq_movie = nullptr;
|
||||
Strip *seq_sound = nullptr;
|
||||
|
||||
seq_movie = SEQ_add_movie_strip(bmain, scene, ed->seqbasep, load_data);
|
||||
|
||||
@@ -938,15 +938,15 @@ static void sequencer_add_movie_multiple_strips(bContext *C,
|
||||
static bool sequencer_add_movie_single_strip(bContext *C,
|
||||
wmOperator *op,
|
||||
SeqLoadData *load_data,
|
||||
blender::VectorSet<Sequence *> &r_movie_strips)
|
||||
blender::VectorSet<Strip *> &r_movie_strips)
|
||||
{
|
||||
Main *bmain = CTX_data_main(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
const Editing *ed = SEQ_editing_ensure(scene);
|
||||
|
||||
Sequence *seq_movie = nullptr;
|
||||
Sequence *seq_sound = nullptr;
|
||||
blender::Vector<Sequence *> added_strips;
|
||||
Strip *seq_movie = nullptr;
|
||||
Strip *seq_sound = nullptr;
|
||||
blender::Vector<Strip *> added_strips;
|
||||
|
||||
seq_movie = SEQ_add_movie_strip(bmain, scene, ed->seqbasep, load_data);
|
||||
|
||||
@@ -1010,7 +1010,7 @@ static int sequencer_add_movie_strip_exec(bContext *C, wmOperator *op)
|
||||
ED_sequencer_deselect_all(scene);
|
||||
}
|
||||
|
||||
blender::VectorSet<Sequence *> movie_strips;
|
||||
blender::VectorSet<Strip *> movie_strips;
|
||||
const int tot_files = RNA_property_collection_length(op->ptr,
|
||||
RNA_struct_find_property(op->ptr, "files"));
|
||||
if (tot_files > 1) {
|
||||
@@ -1142,7 +1142,7 @@ static void sequencer_add_sound_multiple_strips(bContext *C,
|
||||
RNA_string_get(&itemptr, "name", file_only);
|
||||
BLI_path_join(load_data->path, sizeof(load_data->path), dir_only, file_only);
|
||||
STRNCPY(load_data->name, file_only);
|
||||
Sequence *seq = SEQ_add_sound_strip(bmain, scene, ed->seqbasep, load_data);
|
||||
Strip *seq = SEQ_add_sound_strip(bmain, scene, ed->seqbasep, load_data);
|
||||
if (seq == nullptr) {
|
||||
BKE_reportf(op->reports, RPT_ERROR, "File '%s' could not be loaded", load_data->path);
|
||||
}
|
||||
@@ -1161,7 +1161,7 @@ static bool sequencer_add_sound_single_strip(bContext *C, wmOperator *op, SeqLoa
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Editing *ed = SEQ_editing_ensure(scene);
|
||||
|
||||
Sequence *seq = SEQ_add_sound_strip(bmain, scene, ed->seqbasep, load_data);
|
||||
Strip *seq = SEQ_add_sound_strip(bmain, scene, ed->seqbasep, load_data);
|
||||
if (seq == nullptr) {
|
||||
BKE_reportf(op->reports, RPT_ERROR, "File '%s' could not be loaded", load_data->path);
|
||||
return false;
|
||||
@@ -1326,7 +1326,7 @@ static int sequencer_add_image_strip_calculate_length(wmOperator *op,
|
||||
|
||||
static void sequencer_add_image_strip_load_files(wmOperator *op,
|
||||
Scene *scene,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
SeqLoadData *load_data,
|
||||
const int minframe,
|
||||
const int numdigits)
|
||||
@@ -1374,7 +1374,7 @@ static int sequencer_add_image_strip_exec(bContext *C, wmOperator *op)
|
||||
ED_sequencer_deselect_all(scene);
|
||||
}
|
||||
|
||||
Sequence *seq = SEQ_add_image_strip(CTX_data_main(C), scene, ed->seqbasep, &load_data);
|
||||
Strip *seq = SEQ_add_image_strip(CTX_data_main(C), scene, ed->seqbasep, &load_data);
|
||||
sequencer_add_image_strip_load_files(op, scene, seq, &load_data, minframe, numdigits);
|
||||
SEQ_add_image_init_alpha_mode(seq);
|
||||
|
||||
@@ -1467,7 +1467,7 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op)
|
||||
load_data_init_from_operator(&load_data, C, op);
|
||||
load_data.effect.type = RNA_enum_get(op->ptr, "type");
|
||||
|
||||
Sequence *seq1, *seq2;
|
||||
Strip *seq1, *seq2;
|
||||
if (!seq_effect_find_selected(scene, nullptr, load_data.effect.type, &seq1, &seq2, &error_msg)) {
|
||||
BKE_report(op->reports, RPT_ERROR, error_msg);
|
||||
return OPERATOR_CANCELLED;
|
||||
@@ -1490,7 +1490,7 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
}
|
||||
|
||||
Sequence *seq = SEQ_add_effect_strip(scene, ed->seqbasep, &load_data);
|
||||
Strip *seq = SEQ_add_effect_strip(scene, ed->seqbasep, &load_data);
|
||||
seq_load_apply_generic_options(C, op, seq);
|
||||
|
||||
if (seq->type == SEQ_TYPE_COLOR) {
|
||||
|
||||
@@ -72,13 +72,13 @@ using namespace blender::bke::blendfile;
|
||||
*/
|
||||
|
||||
static void sequencer_copy_animation_listbase(Scene *scene_src,
|
||||
Sequence *seq_dst,
|
||||
Strip *seq_dst,
|
||||
ListBase *clipboard_dst,
|
||||
ListBase *fcurve_base_src)
|
||||
{
|
||||
/* Add curves for strips inside meta strip. */
|
||||
if (seq_dst->type == SEQ_TYPE_META) {
|
||||
LISTBASE_FOREACH (Sequence *, meta_child, &seq_dst->seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, meta_child, &seq_dst->seqbase) {
|
||||
sequencer_copy_animation_listbase(scene_src, meta_child, clipboard_dst, fcurve_base_src);
|
||||
}
|
||||
}
|
||||
@@ -96,14 +96,14 @@ static void sequencer_copy_animation_listbase(Scene *scene_src,
|
||||
* above, except that it copies from an action's animation to a vector rather
|
||||
* than between two listbases. */
|
||||
static void sequencer_copy_animation_to_vector(Scene *scene_src,
|
||||
Sequence *seq_dst,
|
||||
Strip *seq_dst,
|
||||
Vector<FCurve *> &clipboard_dst,
|
||||
bAction &fcurves_src_action,
|
||||
animrig::slot_handle_t fcurves_src_slot_handle)
|
||||
{
|
||||
/* Add curves for strips inside meta strip. */
|
||||
if (seq_dst->type == SEQ_TYPE_META) {
|
||||
LISTBASE_FOREACH (Sequence *, meta_child, &seq_dst->seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, meta_child, &seq_dst->seqbase) {
|
||||
sequencer_copy_animation_to_vector(
|
||||
scene_src, meta_child, clipboard_dst, fcurves_src_action, fcurves_src_slot_handle);
|
||||
}
|
||||
@@ -127,7 +127,7 @@ static void sequencer_copy_animation_to_vector(Scene *scene_src,
|
||||
static void sequencer_copy_animation(Scene *scene_src,
|
||||
Vector<FCurve *> &fcurves_dst,
|
||||
ListBase *drivers_dst,
|
||||
Sequence *seq_dst)
|
||||
Strip *seq_dst)
|
||||
{
|
||||
if (SEQ_animation_keyframes_exist(scene_src)) {
|
||||
sequencer_copy_animation_to_vector(
|
||||
@@ -175,10 +175,10 @@ static bool sequencer_write_copy_paste_file(Main *bmain_src,
|
||||
|
||||
/* Save current frame and active strip. */
|
||||
scene_dst->r.cfra = scene_src->r.cfra;
|
||||
Sequence *active_seq_src = SEQ_select_active_get(scene_src);
|
||||
Strip *active_seq_src = SEQ_select_active_get(scene_src);
|
||||
if (active_seq_src) {
|
||||
Sequence *seq_dst = static_cast<Sequence *>(
|
||||
BLI_findstring(&scene_dst->ed->seqbase, active_seq_src->name, offsetof(Sequence, name)));
|
||||
Strip *seq_dst = static_cast<Strip *>(
|
||||
BLI_findstring(&scene_dst->ed->seqbase, active_seq_src->name, offsetof(Strip, name)));
|
||||
if (seq_dst) {
|
||||
SEQ_select_active_set(scene_dst, seq_dst);
|
||||
}
|
||||
@@ -186,7 +186,7 @@ static bool sequencer_write_copy_paste_file(Main *bmain_src,
|
||||
|
||||
Vector<FCurve *> fcurves_dst = {};
|
||||
ListBase drivers_dst = {nullptr, nullptr};
|
||||
LISTBASE_FOREACH (Sequence *, seq_dst, &scene_dst->ed->seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq_dst, &scene_dst->ed->seqbase) {
|
||||
/* Copy any fcurves/drivers from `scene_src` that are relevant to `seq_dst`. */
|
||||
sequencer_copy_animation(scene_src, fcurves_dst, &drivers_dst, seq_dst);
|
||||
}
|
||||
@@ -414,7 +414,7 @@ int sequencer_clipboard_paste_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
else {
|
||||
int min_seq_startdisp = INT_MAX;
|
||||
LISTBASE_FOREACH (Sequence *, seq, &scene_src->ed->seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, &scene_src->ed->seqbase) {
|
||||
if (SEQ_time_left_handle_frame_get(scene_src, seq) < min_seq_startdisp) {
|
||||
min_seq_startdisp = SEQ_time_left_handle_frame_get(scene_src, seq);
|
||||
}
|
||||
@@ -423,7 +423,7 @@ int sequencer_clipboard_paste_exec(bContext *C, wmOperator *op)
|
||||
ofs = scene_dst->r.cfra - min_seq_startdisp;
|
||||
}
|
||||
|
||||
Sequence *prev_active_seq = SEQ_select_active_get(scene_src);
|
||||
Strip *prev_active_seq = SEQ_select_active_get(scene_src);
|
||||
std::string active_seq_name;
|
||||
if (prev_active_seq) {
|
||||
active_seq_name.assign(prev_active_seq->name);
|
||||
@@ -461,12 +461,12 @@ int sequencer_clipboard_paste_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
BKE_id_delete(bmain_dst, scene_src);
|
||||
|
||||
Sequence *iseq_first = static_cast<Sequence *>(nseqbase.first);
|
||||
Strip *iseq_first = static_cast<Strip *>(nseqbase.first);
|
||||
BLI_movelisttolist(ed_dst->seqbasep, &nseqbase);
|
||||
/* Restore "first" pointer as BLI_movelisttolist sets it to nullptr */
|
||||
nseqbase.first = iseq_first;
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, iseq, &nseqbase) {
|
||||
LISTBASE_FOREACH (Strip *, iseq, &nseqbase) {
|
||||
if (iseq->name == active_seq_name) {
|
||||
SEQ_select_active_set(scene_dst, iseq);
|
||||
}
|
||||
@@ -475,7 +475,7 @@ int sequencer_clipboard_paste_exec(bContext *C, wmOperator *op)
|
||||
SEQ_ensure_unique_name(iseq, scene_dst);
|
||||
}
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, iseq, &nseqbase) {
|
||||
LISTBASE_FOREACH (Strip *, iseq, &nseqbase) {
|
||||
/* Translate after name has been changed, otherwise this will affect animdata of original
|
||||
* strip. */
|
||||
SEQ_transform_translate_sequence(scene_dst, iseq, ofs);
|
||||
|
||||
@@ -224,7 +224,7 @@ static float update_overlay_strip_position_data(bContext *C, const int mval[2])
|
||||
else {
|
||||
/* Check if there is a strip that would intersect with the new strip(s). */
|
||||
coords->is_intersecting = false;
|
||||
Sequence dummy_seq{};
|
||||
Strip dummy_seq{};
|
||||
dummy_seq.machine = coords->channel;
|
||||
dummy_seq.start = coords->start_frame;
|
||||
dummy_seq.len = coords->strip_len;
|
||||
@@ -279,7 +279,7 @@ static void sequencer_drop_copy(bContext *C, wmDrag *drag, wmDropBox *drop)
|
||||
|
||||
/* Get the top most strip channel that is in view. */
|
||||
int max_channel = -1;
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
max_channel = max_ii(seq->machine, max_channel);
|
||||
}
|
||||
|
||||
|
||||
@@ -195,7 +195,7 @@ bool sequencer_strip_editable_poll(bContext *C)
|
||||
bool sequencer_strip_has_path_poll(bContext *C)
|
||||
{
|
||||
Editing *ed;
|
||||
Sequence *seq;
|
||||
Strip *seq;
|
||||
return (((ed = SEQ_editing_get(CTX_data_scene(C))) != nullptr) &&
|
||||
((seq = ed->act_seq) != nullptr) && SEQ_HAS_PATH(seq));
|
||||
}
|
||||
@@ -361,7 +361,7 @@ static int sequencer_snap_exec(bContext *C, wmOperator *op)
|
||||
snap_frame = RNA_int_get(op->ptr, "frame");
|
||||
|
||||
/* Check meta-strips. */
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if (seq->flag & SELECT && !SEQ_transform_is_locked(channels, seq) &&
|
||||
SEQ_transform_sequence_can_be_translated(seq))
|
||||
{
|
||||
@@ -382,7 +382,7 @@ static int sequencer_snap_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
|
||||
/* Test for effects and overlap. */
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if (seq->flag & SELECT && !SEQ_transform_is_locked(channels, seq)) {
|
||||
seq->flag &= ~SEQ_OVERLAP;
|
||||
if (SEQ_transform_test_overlap(scene, ed->seqbasep, seq)) {
|
||||
@@ -392,7 +392,7 @@ static int sequencer_snap_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
|
||||
/* Recalculate bounds of effect strips, offsetting the keyframes if not snapping any handle. */
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if (seq->type & SEQ_TYPE_EFFECT) {
|
||||
const bool either_handle_selected = (seq->flag & (SEQ_LEFTSEL | SEQ_RIGHTSEL)) != 0;
|
||||
|
||||
@@ -466,18 +466,18 @@ struct SlipData {
|
||||
int previous_offset;
|
||||
float previous_subframe_offset;
|
||||
float subframe_restore;
|
||||
Sequence **seq_array;
|
||||
Strip **seq_array;
|
||||
int num_seq;
|
||||
bool slow;
|
||||
int slow_offset; /* Offset at the point where offset was turned on. */
|
||||
NumInput num_input;
|
||||
};
|
||||
|
||||
static void slip_add_sequences(ListBase *seqbasep, Sequence **seq_array)
|
||||
static void slip_add_sequences(ListBase *seqbasep, Strip **seq_array)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, seqbasep) {
|
||||
if (!(seq->type & SEQ_TYPE_EFFECT) && (seq->flag & SELECT)) {
|
||||
seq_array[i] = seq;
|
||||
i++;
|
||||
@@ -489,7 +489,7 @@ static int slip_count_sequences(ListBase *seqbasep)
|
||||
{
|
||||
int trimmed_sequences = 0;
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, seqbasep) {
|
||||
if (!(seq->type & SEQ_TYPE_EFFECT) && (seq->flag & SELECT)) {
|
||||
trimmed_sequences++;
|
||||
}
|
||||
@@ -516,7 +516,7 @@ static int sequencer_slip_invoke(bContext *C, wmOperator *op, const wmEvent *eve
|
||||
|
||||
data = MEM_cnew<SlipData>("trimdata");
|
||||
op->customdata = static_cast<void *>(data);
|
||||
data->seq_array = MEM_cnew_array<Sequence *>(num_seq, "trimdata_sequences");
|
||||
data->seq_array = MEM_cnew_array<Strip *>(num_seq, "trimdata_sequences");
|
||||
data->num_seq = num_seq;
|
||||
data->previous_offset = 0;
|
||||
|
||||
@@ -544,7 +544,7 @@ static int sequencer_slip_invoke(bContext *C, wmOperator *op, const wmEvent *eve
|
||||
static void sequencer_slip_strips(Scene *scene, SlipData *data, int delta, float subframe_delta)
|
||||
{
|
||||
for (int i = data->num_seq - 1; i >= 0; i--) {
|
||||
Sequence *seq = data->seq_array[i];
|
||||
Strip *seq = data->seq_array[i];
|
||||
|
||||
ListBase *channels = SEQ_channels_displayed_get(SEQ_editing_get(scene));
|
||||
if (SEQ_transform_is_locked(channels, seq)) {
|
||||
@@ -555,7 +555,7 @@ static void sequencer_slip_strips(Scene *scene, SlipData *data, int delta, float
|
||||
}
|
||||
|
||||
for (int i = data->num_seq - 1; i >= 0; i--) {
|
||||
Sequence *seq = data->seq_array[i];
|
||||
Strip *seq = data->seq_array[i];
|
||||
SEQ_relations_invalidate_cache_preprocessed(scene, seq);
|
||||
}
|
||||
}
|
||||
@@ -567,7 +567,7 @@ static int sequencer_slip_apply_limits(const Scene *scene, SlipData *data, int *
|
||||
int delta_offset = *offset - data->previous_offset;
|
||||
|
||||
for (int i = 0; i < data->num_seq; i++) {
|
||||
Sequence *seq = data->seq_array[i];
|
||||
Strip *seq = data->seq_array[i];
|
||||
int seq_content_start = SEQ_time_start_frame_get(seq) + delta_offset;
|
||||
int seq_content_end = seq_content_start + seq->len + seq->anim_startofs + seq->anim_endofs;
|
||||
int diff = 0;
|
||||
@@ -601,7 +601,7 @@ static int sequencer_slip_exec(bContext *C, wmOperator *op)
|
||||
|
||||
SlipData *data = MEM_cnew<SlipData>("trimdata");
|
||||
op->customdata = static_cast<void *>(data);
|
||||
data->seq_array = MEM_cnew_array<Sequence *>(num_seq, "trimdata_sequences");
|
||||
data->seq_array = MEM_cnew_array<Strip *>(num_seq, "trimdata_sequences");
|
||||
data->num_seq = num_seq;
|
||||
|
||||
slip_add_sequences(ed->seqbasep, data->seq_array);
|
||||
@@ -843,7 +843,7 @@ static int sequencer_mute_exec(bContext *C, wmOperator *op)
|
||||
|
||||
selected = !RNA_boolean_get(op->ptr, "unselected");
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if (!SEQ_transform_is_locked(channels, seq)) {
|
||||
if (selected) {
|
||||
if (seq->flag & SELECT) {
|
||||
@@ -899,7 +899,7 @@ static int sequencer_unmute_exec(bContext *C, wmOperator *op)
|
||||
|
||||
selected = !RNA_boolean_get(op->ptr, "unselected");
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if (!SEQ_transform_is_locked(channels, seq)) {
|
||||
if (selected) {
|
||||
if (seq->flag & SELECT) {
|
||||
@@ -954,7 +954,7 @@ static int sequencer_lock_exec(bContext *C, wmOperator * /*op*/)
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if (seq->flag & SELECT) {
|
||||
seq->flag |= SEQ_LOCK;
|
||||
}
|
||||
@@ -991,7 +991,7 @@ static int sequencer_unlock_exec(bContext *C, wmOperator * /*op*/)
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if (seq->flag & SELECT) {
|
||||
seq->flag &= ~SEQ_LOCK;
|
||||
}
|
||||
@@ -1029,7 +1029,7 @@ static int sequencer_connect_exec(bContext *C, wmOperator *op)
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
ListBase *active_seqbase = SEQ_active_seqbase_get(ed);
|
||||
|
||||
blender::VectorSet<Sequence *> selected = SEQ_query_selected_strips(active_seqbase);
|
||||
blender::VectorSet<Strip *> selected = SEQ_query_selected_strips(active_seqbase);
|
||||
|
||||
if (selected.is_empty()) {
|
||||
return OPERATOR_CANCELLED;
|
||||
@@ -1073,7 +1073,7 @@ static int sequencer_disconnect_exec(bContext *C, wmOperator * /*op*/)
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
ListBase *active_seqbase = SEQ_active_seqbase_get(ed);
|
||||
|
||||
blender::VectorSet<Sequence *> selected = SEQ_query_selected_strips(active_seqbase);
|
||||
blender::VectorSet<Strip *> selected = SEQ_query_selected_strips(active_seqbase);
|
||||
|
||||
if (SEQ_disconnect(selected)) {
|
||||
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
|
||||
@@ -1109,7 +1109,7 @@ static int sequencer_reload_exec(bContext *C, wmOperator *op)
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
const bool adjust_length = RNA_boolean_get(op->ptr, "adjust_length");
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if (seq->flag & SELECT) {
|
||||
SEQ_add_reload_new_file(bmain, scene, seq, !adjust_length);
|
||||
blender::seq::thumbnail_cache_invalidate_strip(scene, seq);
|
||||
@@ -1198,14 +1198,14 @@ void SEQUENCER_OT_refresh_all(wmOperatorType *ot)
|
||||
* \{ */
|
||||
|
||||
int seq_effect_find_selected(Scene *scene,
|
||||
Sequence *activeseq,
|
||||
Strip *activeseq,
|
||||
int type,
|
||||
Sequence **r_selseq1,
|
||||
Sequence **r_selseq2,
|
||||
Strip **r_selseq1,
|
||||
Strip **r_selseq2,
|
||||
const char **r_error_str)
|
||||
{
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *seq1 = nullptr, *seq2 = nullptr;
|
||||
Strip *seq1 = nullptr, *seq2 = nullptr;
|
||||
|
||||
*r_error_str = nullptr;
|
||||
|
||||
@@ -1218,7 +1218,7 @@ int seq_effect_find_selected(Scene *scene,
|
||||
return 1;
|
||||
}
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if (seq->flag & SELECT) {
|
||||
if (seq->type == SEQ_TYPE_SOUND_RAM) {
|
||||
*r_error_str = N_("Cannot apply effects to audio sequence strips");
|
||||
@@ -1276,7 +1276,7 @@ int seq_effect_find_selected(Scene *scene,
|
||||
static int sequencer_reassign_inputs_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Sequence *seq1, *seq2, *last_seq = SEQ_select_active_get(scene);
|
||||
Strip *seq1, *seq2, *last_seq = SEQ_select_active_get(scene);
|
||||
const char *error_msg;
|
||||
|
||||
if (SEQ_effect_get_num_inputs(last_seq->type) == 0) {
|
||||
@@ -1323,7 +1323,7 @@ static bool sequencer_effect_poll(bContext *C)
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
|
||||
if (ed) {
|
||||
Sequence *last_seq = SEQ_select_active_get(scene);
|
||||
Strip *last_seq = SEQ_select_active_get(scene);
|
||||
if (last_seq && (last_seq->type & SEQ_TYPE_EFFECT)) {
|
||||
return true;
|
||||
}
|
||||
@@ -1356,7 +1356,7 @@ void SEQUENCER_OT_reassign_inputs(wmOperatorType *ot)
|
||||
static int sequencer_swap_inputs_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Sequence *seq, *last_seq = SEQ_select_active_get(scene);
|
||||
Strip *seq, *last_seq = SEQ_select_active_get(scene);
|
||||
|
||||
if (last_seq->seq1 == nullptr || last_seq->seq2 == nullptr) {
|
||||
BKE_report(op->reports, RPT_ERROR, "No valid inputs to swap");
|
||||
@@ -1461,7 +1461,7 @@ static int sequencer_split_exec(bContext *C, wmOperator *op)
|
||||
|
||||
SEQ_prefetch_stop(scene);
|
||||
|
||||
LISTBASE_FOREACH_BACKWARD (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH_BACKWARD (Strip *, seq, ed->seqbasep) {
|
||||
if (use_cursor_position && seq->machine != split_channel) {
|
||||
continue;
|
||||
}
|
||||
@@ -1482,7 +1482,7 @@ static int sequencer_split_exec(bContext *C, wmOperator *op)
|
||||
if (changed) { /* Got new strips? */
|
||||
if (ignore_selection) {
|
||||
if (use_cursor_position) {
|
||||
LISTBASE_FOREACH (Sequence *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
LISTBASE_FOREACH (Strip *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
if (SEQ_time_right_handle_frame_get(scene, seq) == split_frame &&
|
||||
seq->machine == split_channel)
|
||||
{
|
||||
@@ -1490,7 +1490,7 @@ static int sequencer_split_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
}
|
||||
if (!seq_selected) {
|
||||
LISTBASE_FOREACH (Sequence *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
LISTBASE_FOREACH (Strip *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
if (SEQ_time_left_handle_frame_get(scene, seq) == split_frame &&
|
||||
seq->machine == split_channel)
|
||||
{
|
||||
@@ -1502,7 +1502,7 @@ static int sequencer_split_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
else {
|
||||
if (split_side != SEQ_SIDE_BOTH) {
|
||||
LISTBASE_FOREACH (Sequence *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
LISTBASE_FOREACH (Strip *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
if (split_side == SEQ_SIDE_LEFT) {
|
||||
if (SEQ_time_left_handle_frame_get(scene, seq) >= split_frame) {
|
||||
seq->flag &= ~SEQ_ALLSEL;
|
||||
@@ -1659,7 +1659,7 @@ static int sequencer_add_duplicate_exec(bContext *C, wmOperator * /*op*/)
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
|
||||
Sequence *active_seq = SEQ_select_active_get(scene);
|
||||
Strip *active_seq = SEQ_select_active_get(scene);
|
||||
ListBase duplicated_strips = {nullptr, nullptr};
|
||||
|
||||
SEQ_sequence_base_dupli_recursive(scene, scene, &duplicated_strips, ed->seqbasep, 0, 0);
|
||||
@@ -1678,7 +1678,7 @@ static int sequencer_add_duplicate_exec(bContext *C, wmOperator * /*op*/)
|
||||
SEQ_animation_backup_original(scene, &animation_backup);
|
||||
|
||||
ListBase *seqbase = SEQ_active_seqbase_get(SEQ_editing_get(scene));
|
||||
Sequence *seq_last = static_cast<Sequence *>(seqbase->last);
|
||||
Strip *seq_last = static_cast<Strip *>(seqbase->last);
|
||||
|
||||
/* Rely on the `duplicated_strips` list being added at the end.
|
||||
* Their UIDs has been re-generated by the #SEQ_sequence_base_dupli_recursive(). */
|
||||
@@ -1686,7 +1686,7 @@ static int sequencer_add_duplicate_exec(bContext *C, wmOperator * /*op*/)
|
||||
|
||||
/* Handle duplicated strips: set active, select, ensure unique name and duplicate animation
|
||||
* data. */
|
||||
for (Sequence *seq = seq_last->next; seq; seq = seq->next) {
|
||||
for (Strip *seq = seq_last->next; seq; seq = seq->next) {
|
||||
if (active_seq != nullptr && STREQ(seq->name, active_seq->name)) {
|
||||
SEQ_select_active_set(scene, seq);
|
||||
}
|
||||
@@ -1700,14 +1700,14 @@ static int sequencer_add_duplicate_exec(bContext *C, wmOperator * /*op*/)
|
||||
/* Special case for duplicating strips in preview: Do not duplicate sound strips and handle
|
||||
* overlap, because strips won't be translated. */
|
||||
if (region->regiontype == RGN_TYPE_PREVIEW && sequencer_view_preview_only_poll(C)) {
|
||||
for (Sequence *seq = seq_last->next; seq; seq = seq->next) {
|
||||
for (Strip *seq = seq_last->next; seq; seq = seq->next) {
|
||||
if (seq->type == SEQ_TYPE_SOUND_RAM) {
|
||||
SEQ_edit_flag_for_removal(scene, ed->seqbasep, seq);
|
||||
}
|
||||
}
|
||||
SEQ_edit_remove_flagged_sequences(scene, ed->seqbasep);
|
||||
|
||||
for (Sequence *seq = seq_last->next; seq; seq = seq->next) {
|
||||
for (Strip *seq = seq_last->next; seq; seq = seq->next) {
|
||||
if (SEQ_transform_test_overlap(scene, ed->seqbasep, seq)) {
|
||||
SEQ_transform_seqbase_shuffle(ed->seqbasep, seq, scene);
|
||||
}
|
||||
@@ -1743,7 +1743,7 @@ void SEQUENCER_OT_duplicate(wmOperatorType *ot)
|
||||
/** \name Erase Strips Operator
|
||||
* \{ */
|
||||
|
||||
static void sequencer_delete_strip_data(bContext *C, Sequence *seq)
|
||||
static void sequencer_delete_strip_data(bContext *C, Strip *seq)
|
||||
{
|
||||
if (seq->type != SEQ_TYPE_SCENE) {
|
||||
return;
|
||||
@@ -1770,7 +1770,7 @@ static int sequencer_delete_exec(bContext *C, wmOperator *op)
|
||||
|
||||
SEQ_prefetch_stop(scene);
|
||||
|
||||
for (Sequence *seq : ED_sequencer_selected_strips_from_context(C)) {
|
||||
for (Strip *seq : ED_sequencer_selected_strips_from_context(C)) {
|
||||
SEQ_edit_flag_for_removal(scene, seqbasep, seq);
|
||||
if (delete_data) {
|
||||
sequencer_delete_strip_data(C, seq);
|
||||
@@ -1842,12 +1842,11 @@ static int sequencer_offset_clear_exec(bContext *C, wmOperator * /*op*/)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *seq;
|
||||
Strip *seq;
|
||||
ListBase *channels = SEQ_channels_displayed_get(SEQ_editing_get(scene));
|
||||
|
||||
/* For effects, try to find a replacement input. */
|
||||
for (seq = static_cast<Sequence *>(ed->seqbasep->first); seq;
|
||||
seq = static_cast<Sequence *>(seq->next))
|
||||
for (seq = static_cast<Strip *>(ed->seqbasep->first); seq; seq = static_cast<Strip *>(seq->next))
|
||||
{
|
||||
if (SEQ_transform_is_locked(channels, seq)) {
|
||||
continue;
|
||||
@@ -1859,14 +1858,13 @@ static int sequencer_offset_clear_exec(bContext *C, wmOperator * /*op*/)
|
||||
}
|
||||
|
||||
/* Update lengths, etc. */
|
||||
seq = static_cast<Sequence *>(ed->seqbasep->first);
|
||||
seq = static_cast<Strip *>(ed->seqbasep->first);
|
||||
while (seq) {
|
||||
SEQ_relations_invalidate_cache_preprocessed(scene, seq);
|
||||
seq = seq->next;
|
||||
}
|
||||
|
||||
for (seq = static_cast<Sequence *>(ed->seqbasep->first); seq;
|
||||
seq = static_cast<Sequence *>(seq->next))
|
||||
for (seq = static_cast<Strip *>(ed->seqbasep->first); seq; seq = static_cast<Strip *>(seq->next))
|
||||
{
|
||||
if ((seq->type & SEQ_TYPE_EFFECT) == 0 && (seq->flag & SELECT)) {
|
||||
if (SEQ_transform_test_overlap(scene, ed->seqbasep, seq)) {
|
||||
@@ -1908,19 +1906,19 @@ static int sequencer_separate_images_exec(bContext *C, wmOperator *op)
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
ListBase *seqbase = SEQ_active_seqbase_get(ed);
|
||||
|
||||
Sequence *seq, *seq_new;
|
||||
Strip *seq, *seq_new;
|
||||
StripData *data_new;
|
||||
StripElem *se, *se_new;
|
||||
int start_ofs, timeline_frame, frame_end;
|
||||
int step = RNA_int_get(op->ptr, "length");
|
||||
|
||||
seq = static_cast<Sequence *>(seqbase->first); /* Poll checks this is valid. */
|
||||
seq = static_cast<Strip *>(seqbase->first); /* Poll checks this is valid. */
|
||||
|
||||
SEQ_prefetch_stop(scene);
|
||||
|
||||
while (seq) {
|
||||
if ((seq->flag & SELECT) && (seq->type == SEQ_TYPE_IMAGE) && (seq->len > 1)) {
|
||||
Sequence *seq_next;
|
||||
Strip *seq_next;
|
||||
|
||||
/* TODO: remove f-curve and assign to split image strips.
|
||||
* The old animation system would remove the user of `seq->ipo`. */
|
||||
@@ -1964,7 +1962,7 @@ static int sequencer_separate_images_exec(bContext *C, wmOperator *op)
|
||||
start_ofs += step;
|
||||
}
|
||||
|
||||
seq_next = static_cast<Sequence *>(seq->next);
|
||||
seq_next = static_cast<Strip *>(seq->next);
|
||||
SEQ_edit_flag_for_removal(scene, seqbase, seq);
|
||||
seq = seq_next;
|
||||
}
|
||||
@@ -2013,7 +2011,7 @@ static int sequencer_meta_toggle_exec(bContext *C, wmOperator * /*op*/)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *active_seq = SEQ_select_active_get(scene);
|
||||
Strip *active_seq = SEQ_select_active_get(scene);
|
||||
|
||||
SEQ_prefetch_stop(scene);
|
||||
|
||||
@@ -2029,7 +2027,7 @@ static int sequencer_meta_toggle_exec(bContext *C, wmOperator * /*op*/)
|
||||
}
|
||||
|
||||
/* Display parent meta. */
|
||||
Sequence *meta_parent = SEQ_meta_stack_pop(ed);
|
||||
Strip *meta_parent = SEQ_meta_stack_pop(ed);
|
||||
SEQ_select_active_set(scene, meta_parent);
|
||||
}
|
||||
|
||||
@@ -2064,7 +2062,7 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *active_seq = SEQ_select_active_get(scene);
|
||||
Strip *active_seq = SEQ_select_active_get(scene);
|
||||
ListBase *active_seqbase = SEQ_active_seqbase_get(ed);
|
||||
|
||||
if (SEQ_transform_seqbase_isolated_sel_check(active_seqbase) == false) {
|
||||
@@ -2076,19 +2074,19 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op)
|
||||
|
||||
int channel_max = 1, channel_min = INT_MAX, meta_start_frame = MAXFRAME,
|
||||
meta_end_frame = MINFRAME;
|
||||
Sequence *seqm = SEQ_sequence_alloc(active_seqbase, 1, 1, SEQ_TYPE_META);
|
||||
Strip *seqm = SEQ_sequence_alloc(active_seqbase, 1, 1, SEQ_TYPE_META);
|
||||
|
||||
/* Remove all selected from main list, and put in meta.
|
||||
* Sequence is moved within the same edit, no need to re-generate the UID. */
|
||||
blender::VectorSet<Sequence *> strips_to_move;
|
||||
LISTBASE_FOREACH (Sequence *, seq, active_seqbase) {
|
||||
blender::VectorSet<Strip *> strips_to_move;
|
||||
LISTBASE_FOREACH (Strip *, seq, active_seqbase) {
|
||||
if (seq != seqm && seq->flag & SELECT) {
|
||||
strips_to_move.add(seq);
|
||||
strips_to_move.add_multiple(SEQ_get_connected_strips(seq));
|
||||
}
|
||||
}
|
||||
|
||||
for (Sequence *seq : strips_to_move) {
|
||||
for (Strip *seq : strips_to_move) {
|
||||
SEQ_relations_invalidate_cache_preprocessed(scene, seq);
|
||||
BLI_remlink(active_seqbase, seq);
|
||||
BLI_addtail(&seqm->seqbase, seq);
|
||||
@@ -2149,7 +2147,7 @@ static int sequencer_meta_separate_exec(bContext *C, wmOperator * /*op*/)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *active_seq = SEQ_select_active_get(scene);
|
||||
Strip *active_seq = SEQ_select_active_get(scene);
|
||||
|
||||
if (active_seq == nullptr || active_seq->type != SEQ_TYPE_META) {
|
||||
return OPERATOR_CANCELLED;
|
||||
@@ -2157,7 +2155,7 @@ static int sequencer_meta_separate_exec(bContext *C, wmOperator * /*op*/)
|
||||
|
||||
SEQ_prefetch_stop(scene);
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, &active_seq->seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, &active_seq->seqbase) {
|
||||
SEQ_relations_invalidate_cache_preprocessed(scene, seq);
|
||||
}
|
||||
|
||||
@@ -2171,7 +2169,7 @@ static int sequencer_meta_separate_exec(bContext *C, wmOperator * /*op*/)
|
||||
SEQ_edit_remove_flagged_sequences(scene, active_seqbase);
|
||||
|
||||
/* Test for effects and overlap. */
|
||||
LISTBASE_FOREACH (Sequence *, seq, active_seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, active_seqbase) {
|
||||
if (seq->flag & SELECT) {
|
||||
seq->flag &= ~SEQ_OVERLAP;
|
||||
if (SEQ_transform_test_overlap(scene, active_seqbase, seq)) {
|
||||
@@ -2283,7 +2281,7 @@ static const EnumPropertyItem prop_side_lr_types[] = {
|
||||
{0, nullptr, 0, nullptr, nullptr},
|
||||
};
|
||||
|
||||
static void swap_sequence(Scene *scene, Sequence *seqa, Sequence *seqb)
|
||||
static void swap_sequence(Scene *scene, Strip *seqa, Strip *seqb)
|
||||
{
|
||||
int gap = SEQ_time_left_handle_frame_get(scene, seqb) -
|
||||
SEQ_time_right_handle_frame_get(scene, seqa);
|
||||
@@ -2301,10 +2299,10 @@ static void swap_sequence(Scene *scene, Sequence *seqa, Sequence *seqb)
|
||||
SEQ_relations_invalidate_cache_preprocessed(scene, seqa);
|
||||
}
|
||||
|
||||
static Sequence *find_next_prev_sequence(Scene *scene, Sequence *test, int lr, int sel)
|
||||
static Strip *find_next_prev_sequence(Scene *scene, Strip *test, int lr, int sel)
|
||||
{
|
||||
/* sel: 0==unselected, 1==selected, -1==don't care. */
|
||||
Sequence *seq, *best_seq = nullptr;
|
||||
Strip *seq, *best_seq = nullptr;
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
|
||||
int dist, best_dist;
|
||||
@@ -2314,7 +2312,7 @@ static Sequence *find_next_prev_sequence(Scene *scene, Sequence *test, int lr, i
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
seq = static_cast<Sequence *>(ed->seqbasep->first);
|
||||
seq = static_cast<Strip *>(ed->seqbasep->first);
|
||||
while (seq) {
|
||||
if ((seq != test) && (test->machine == seq->machine) &&
|
||||
((sel == -1) || (sel == (seq->flag & SELECT))))
|
||||
@@ -2349,12 +2347,12 @@ static Sequence *find_next_prev_sequence(Scene *scene, Sequence *test, int lr, i
|
||||
best_seq = seq;
|
||||
}
|
||||
}
|
||||
seq = static_cast<Sequence *>(seq->next);
|
||||
seq = static_cast<Strip *>(seq->next);
|
||||
}
|
||||
return best_seq; /* Can be nullptr. */
|
||||
}
|
||||
|
||||
static bool seq_is_parent(const Sequence *par, const Sequence *seq)
|
||||
static bool seq_is_parent(const Strip *par, const Strip *seq)
|
||||
{
|
||||
return ((par->seq1 == seq) || (par->seq2 == seq));
|
||||
}
|
||||
@@ -2363,9 +2361,9 @@ static int sequencer_swap_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *active_seq = SEQ_select_active_get(scene);
|
||||
Strip *active_seq = SEQ_select_active_get(scene);
|
||||
ListBase *seqbase = SEQ_active_seqbase_get(ed);
|
||||
Sequence *seq;
|
||||
Strip *seq;
|
||||
int side = RNA_enum_get(op->ptr, "side");
|
||||
|
||||
if (active_seq == nullptr) {
|
||||
@@ -2401,7 +2399,7 @@ static int sequencer_swap_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
|
||||
/* Do this in a new loop since both effects need to be calculated first. */
|
||||
LISTBASE_FOREACH (Sequence *, iseq, seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, iseq, seqbase) {
|
||||
if ((iseq->type & SEQ_TYPE_EFFECT) &&
|
||||
(seq_is_parent(iseq, active_seq) || seq_is_parent(iseq, seq)))
|
||||
{
|
||||
@@ -2447,7 +2445,7 @@ void SEQUENCER_OT_swap(wmOperatorType *ot)
|
||||
static int sequencer_rendersize_exec(bContext *C, wmOperator * /*op*/)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Sequence *active_seq = SEQ_select_active_get(scene);
|
||||
Strip *active_seq = SEQ_select_active_get(scene);
|
||||
StripElem *se = nullptr;
|
||||
|
||||
if (active_seq == nullptr || active_seq->data == nullptr) {
|
||||
@@ -2538,7 +2536,7 @@ bool ED_sequencer_deselect_all(Scene *scene)
|
||||
return changed;
|
||||
}
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
LISTBASE_FOREACH (Strip *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
if (seq->flag & SEQ_ALLSEL) {
|
||||
seq->flag &= ~SEQ_ALLSEL;
|
||||
changed = true;
|
||||
@@ -2580,8 +2578,8 @@ void SEQUENCER_OT_paste(wmOperatorType *ot)
|
||||
static int sequencer_swap_data_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Sequence *seq_act;
|
||||
Sequence *seq_other;
|
||||
Strip *seq_act;
|
||||
Strip *seq_other;
|
||||
const char *error_msg;
|
||||
|
||||
if (SEQ_select_active_get_pair(scene, &seq_act, &seq_other) == false) {
|
||||
@@ -2644,9 +2642,9 @@ void SEQUENCER_OT_swap_data(wmOperatorType *ot)
|
||||
static int sequencer_change_effect_input_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Sequence *seq = SEQ_select_active_get(scene);
|
||||
Strip *seq = SEQ_select_active_get(scene);
|
||||
|
||||
Sequence **seq_1 = &seq->seq1, **seq_2 = &seq->seq2;
|
||||
Strip **seq_1 = &seq->seq1, **seq_2 = &seq->seq2;
|
||||
|
||||
if (*seq_1 == nullptr || *seq_2 == nullptr) {
|
||||
BKE_report(op->reports, RPT_ERROR, "One of the effect inputs is unset, cannot swap");
|
||||
@@ -2706,7 +2704,7 @@ const EnumPropertyItem sequencer_prop_effect_types[] = {
|
||||
static int sequencer_change_effect_type_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Sequence *seq = SEQ_select_active_get(scene);
|
||||
Strip *seq = SEQ_select_active_get(scene);
|
||||
const int new_type = RNA_enum_get(op->ptr, "type");
|
||||
|
||||
/* Free previous effect and init new effect. */
|
||||
@@ -2769,7 +2767,7 @@ static int sequencer_change_path_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Main *bmain = CTX_data_main(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Sequence *seq = SEQ_select_active_get(scene);
|
||||
Strip *seq = SEQ_select_active_get(scene);
|
||||
const bool is_relative_path = RNA_boolean_get(op->ptr, "relative_path");
|
||||
const bool use_placeholders = RNA_boolean_get(op->ptr, "use_placeholders");
|
||||
int minext_frameme, numdigits;
|
||||
@@ -2846,7 +2844,7 @@ static int sequencer_change_path_exec(bContext *C, wmOperator *op)
|
||||
PropertyRNA *prop;
|
||||
char filepath[FILE_MAX];
|
||||
|
||||
PointerRNA seq_ptr = RNA_pointer_create(&scene->id, &RNA_Sequence, seq);
|
||||
PointerRNA seq_ptr = RNA_pointer_create(&scene->id, &RNA_Strip, seq);
|
||||
|
||||
RNA_string_get(op->ptr, "filepath", filepath);
|
||||
prop = RNA_struct_find_property(&seq_ptr, "filepath");
|
||||
@@ -2864,7 +2862,7 @@ static int sequencer_change_path_exec(bContext *C, wmOperator *op)
|
||||
static int sequencer_change_path_invoke(bContext *C, wmOperator *op, const wmEvent * /*event*/)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Sequence *seq = SEQ_select_active_get(scene);
|
||||
Strip *seq = SEQ_select_active_get(scene);
|
||||
char filepath[FILE_MAX];
|
||||
|
||||
BLI_path_join(filepath, sizeof(filepath), seq->data->dirpath, seq->data->stripdata->filename);
|
||||
@@ -2926,7 +2924,7 @@ static bool sequencer_strip_change_scene_poll(bContext *C)
|
||||
if (ed == nullptr) {
|
||||
return false;
|
||||
}
|
||||
Sequence *seq = ed->act_seq;
|
||||
Strip *seq = ed->act_seq;
|
||||
return ((seq != nullptr) && (seq->type == SEQ_TYPE_SCENE));
|
||||
}
|
||||
static int sequencer_change_scene_exec(bContext *C, wmOperator *op)
|
||||
@@ -2942,7 +2940,7 @@ static int sequencer_change_scene_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
|
||||
/* Assign new scene. */
|
||||
Sequence *seq = SEQ_select_active_get(scene);
|
||||
Strip *seq = SEQ_select_active_get(scene);
|
||||
if (seq) {
|
||||
seq->scene = scene_seq;
|
||||
/* Do a refresh of the sequencer data. */
|
||||
@@ -3000,8 +2998,8 @@ void SEQUENCER_OT_change_scene(wmOperatorType *ot)
|
||||
static int seq_cmp_time_startdisp_channel(void *thunk, const void *a, const void *b)
|
||||
{
|
||||
const Scene *scene = static_cast<Scene *>(thunk);
|
||||
const Sequence *seq_a = static_cast<const Sequence *>(a);
|
||||
const Sequence *seq_b = static_cast<const Sequence *>(b);
|
||||
const Strip *seq_a = static_cast<const Strip *>(a);
|
||||
const Strip *seq_b = static_cast<const Strip *>(b);
|
||||
|
||||
int seq_a_start = SEQ_time_left_handle_frame_get(scene, seq_a);
|
||||
int seq_b_start = SEQ_time_left_handle_frame_get(scene, seq_b);
|
||||
@@ -3030,7 +3028,7 @@ struct Seq_get_text_cb_data {
|
||||
Scene *scene;
|
||||
};
|
||||
|
||||
static bool seq_get_text_strip_cb(Sequence *seq, void *user_data)
|
||||
static bool seq_get_text_strip_cb(Strip *seq, void *user_data)
|
||||
{
|
||||
Seq_get_text_cb_data *cd = (Seq_get_text_cb_data *)user_data;
|
||||
Editing *ed = SEQ_editing_get(cd->scene);
|
||||
@@ -3047,7 +3045,7 @@ static bool seq_get_text_strip_cb(Sequence *seq, void *user_data)
|
||||
static int sequencer_export_subtitles_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Sequence *seq, *seq_next;
|
||||
Strip *seq, *seq_next;
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
ListBase text_seq = {nullptr};
|
||||
int iter = 1; /* Sequence numbers in `.srt` files are 1-indexed. */
|
||||
@@ -3090,7 +3088,7 @@ static int sequencer_export_subtitles_exec(bContext *C, wmOperator *op)
|
||||
/* Open and write file. */
|
||||
file = BLI_fopen(filepath, "w");
|
||||
|
||||
for (seq = static_cast<Sequence *>(text_seq.first); seq; seq = seq_next) {
|
||||
for (seq = static_cast<Strip *>(text_seq.first); seq; seq = seq_next) {
|
||||
TextVars *data = static_cast<TextVars *>(seq->effectdata);
|
||||
char timecode_str_start[32];
|
||||
char timecode_str_end[32];
|
||||
@@ -3114,7 +3112,7 @@ static int sequencer_export_subtitles_exec(bContext *C, wmOperator *op)
|
||||
fprintf(
|
||||
file, "%d\n%s --> %s\n%s\n\n", iter++, timecode_str_start, timecode_str_end, data->text);
|
||||
|
||||
seq_next = static_cast<Sequence *>(seq->next);
|
||||
seq_next = static_cast<Strip *>(seq->next);
|
||||
MEM_freeN(seq);
|
||||
}
|
||||
|
||||
@@ -3126,7 +3124,7 @@ static int sequencer_export_subtitles_exec(bContext *C, wmOperator *op)
|
||||
static bool sequencer_strip_is_text_poll(bContext *C)
|
||||
{
|
||||
Editing *ed;
|
||||
Sequence *seq;
|
||||
Strip *seq;
|
||||
return (((ed = SEQ_editing_get(CTX_data_scene(C))) != nullptr) &&
|
||||
((seq = ed->act_seq) != nullptr) && (seq->type == SEQ_TYPE_TEXT));
|
||||
}
|
||||
@@ -3171,7 +3169,7 @@ static int sequencer_set_range_to_strips_exec(bContext *C, wmOperator *op)
|
||||
bool selected = false;
|
||||
const bool preview = RNA_boolean_get(op->ptr, "preview");
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if (seq->flag & SELECT) {
|
||||
selected = true;
|
||||
sfra = min_ii(sfra, SEQ_time_left_handle_frame_get(scene, seq));
|
||||
@@ -3254,7 +3252,7 @@ static int sequencer_strip_transform_clear_exec(bContext *C, wmOperator *op)
|
||||
const Editing *ed = SEQ_editing_get(scene);
|
||||
const int property = RNA_enum_get(op->ptr, "property");
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if (seq->flag & SELECT && seq->type != SEQ_TYPE_SOUND_RAM) {
|
||||
StripTransform *transform = seq->data->transform;
|
||||
switch (property) {
|
||||
@@ -3326,7 +3324,7 @@ static int sequencer_strip_transform_fit_exec(bContext *C, wmOperator *op)
|
||||
const Editing *ed = SEQ_editing_get(scene);
|
||||
const eSeqImageFitMethod fit_method = eSeqImageFitMethod(RNA_enum_get(op->ptr, "fit_method"));
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if (seq->flag & SELECT && seq->type != SEQ_TYPE_SOUND_RAM) {
|
||||
const int timeline_frame = scene->r.cfra;
|
||||
StripElem *strip_elem = SEQ_render_give_stripelem(scene, seq, timeline_frame);
|
||||
@@ -3376,7 +3374,7 @@ static int sequencer_strip_color_tag_set_exec(bContext *C, wmOperator *op)
|
||||
const Editing *ed = SEQ_editing_get(scene);
|
||||
const short color_tag = RNA_enum_get(op->ptr, "color");
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if (seq->flag & SELECT) {
|
||||
seq->color_tag = color_tag;
|
||||
}
|
||||
@@ -3398,7 +3396,7 @@ static bool sequencer_strip_color_tag_set_poll(bContext *C)
|
||||
return false;
|
||||
}
|
||||
|
||||
Sequence *act_seq = ed->act_seq;
|
||||
Strip *act_seq = ed->act_seq;
|
||||
return act_seq != nullptr;
|
||||
}
|
||||
|
||||
@@ -3492,7 +3490,7 @@ static int sequencer_scene_frame_range_update_exec(bContext *C, wmOperator * /*o
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *seq = ed->act_seq;
|
||||
Strip *seq = ed->act_seq;
|
||||
|
||||
const int old_start = SEQ_time_left_handle_frame_get(scene, seq);
|
||||
const int old_end = SEQ_time_right_handle_frame_get(scene, seq);
|
||||
|
||||
@@ -32,7 +32,7 @@ struct ARegion;
|
||||
struct ARegionType;
|
||||
struct Scene;
|
||||
struct SeqRetimingKey;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
struct SpaceSeq;
|
||||
struct StripElem;
|
||||
struct View2D;
|
||||
@@ -83,7 +83,7 @@ struct SeqChannelDrawContext {
|
||||
};
|
||||
|
||||
struct StripDrawContext {
|
||||
Sequence *seq;
|
||||
Strip *seq;
|
||||
const FCurve *curve = nullptr; /* Curve for overlay, if any (blend factor or volume). */
|
||||
|
||||
/* Strip boundary in timeline space. Content start/end is clamped by left/right handle. */
|
||||
@@ -117,7 +117,7 @@ struct TimelineDrawContext {
|
||||
GPUViewport *viewport;
|
||||
GPUFrameBuffer *framebuffer_overlay;
|
||||
float pixelx, pixely; /* Width and height of pixel in timeline space. */
|
||||
blender::Map<SeqRetimingKey *, Sequence *> retiming_selection;
|
||||
blender::Map<SeqRetimingKey *, Strip *> retiming_selection;
|
||||
|
||||
SeqQuadsBatch *quads;
|
||||
};
|
||||
@@ -140,9 +140,9 @@ void sequencer_draw_preview(const bContext *C,
|
||||
bool sequencer_draw_get_transform_preview(SpaceSeq *sseq, Scene *scene);
|
||||
int sequencer_draw_get_transform_preview_frame(Scene *scene);
|
||||
|
||||
void sequencer_special_update_set(Sequence *seq);
|
||||
void sequencer_special_update_set(Strip *seq);
|
||||
/* Get handle width in 2d-View space. */
|
||||
float sequence_handle_size_get_clamped(const Scene *scene, Sequence *seq, float pixelx);
|
||||
float sequence_handle_size_get_clamped(const Scene *scene, Strip *seq, float pixelx);
|
||||
|
||||
/* UNUSED */
|
||||
/* void seq_reset_imageofs(SpaceSeq *sseq); */
|
||||
@@ -174,14 +174,14 @@ void channel_draw_context_init(const bContext *C,
|
||||
|
||||
/* `sequencer_edit.cc` */
|
||||
|
||||
void seq_rectf(const Scene *scene, const Sequence *seq, rctf *r_rect);
|
||||
Sequence *find_neighboring_sequence(Scene *scene, Sequence *test, int lr, int sel);
|
||||
void recurs_sel_seq(Sequence *seq_meta);
|
||||
void seq_rectf(const Scene *scene, const Strip *seq, rctf *r_rect);
|
||||
Strip *find_neighboring_sequence(Scene *scene, Strip *test, int lr, int sel);
|
||||
void recurs_sel_seq(Strip *seq_meta);
|
||||
int seq_effect_find_selected(Scene *scene,
|
||||
Sequence *activeseq,
|
||||
Strip *activeseq,
|
||||
int type,
|
||||
Sequence **r_selseq1,
|
||||
Sequence **r_selseq2,
|
||||
Strip **r_selseq1,
|
||||
Strip **r_selseq2,
|
||||
const char **r_error_str);
|
||||
|
||||
/* Operator helpers. */
|
||||
@@ -201,9 +201,9 @@ bool sequencer_view_strips_poll(bContext *C);
|
||||
* collection is limited to all presented strips that can produce image output.
|
||||
*
|
||||
* \param C: context
|
||||
* \return collection of strips (`Sequence`)
|
||||
* \return collection of strips (`Strip`)
|
||||
*/
|
||||
blender::VectorSet<Sequence *> all_strips_from_context(bContext *C);
|
||||
blender::VectorSet<Strip *> all_strips_from_context(bContext *C);
|
||||
|
||||
/* Externals. */
|
||||
|
||||
@@ -277,11 +277,11 @@ void SEQUENCER_OT_select_side(wmOperatorType *ot);
|
||||
void SEQUENCER_OT_select_box(wmOperatorType *ot);
|
||||
void SEQUENCER_OT_select_inverse(wmOperatorType *ot);
|
||||
void SEQUENCER_OT_select_grouped(wmOperatorType *ot);
|
||||
Sequence *find_nearest_seq(const Scene *scene,
|
||||
const View2D *v2d,
|
||||
const int mval[2],
|
||||
eSeqHandle *r_hand);
|
||||
bool seq_point_image_isect(const Scene *scene, const Sequence *seq, float point_view[2]);
|
||||
Strip *find_nearest_seq(const Scene *scene,
|
||||
const View2D *v2d,
|
||||
const int mval[2],
|
||||
eSeqHandle *r_hand);
|
||||
bool seq_point_image_isect(const Scene *scene, const Strip *seq, float point_view[2]);
|
||||
|
||||
/* `sequencer_add.cc` */
|
||||
|
||||
@@ -334,7 +334,7 @@ void SEQUENCER_OT_rename_channel(wmOperatorType *ot);
|
||||
|
||||
/* `sequencer_preview.cc` */
|
||||
|
||||
void sequencer_preview_add_sound(const bContext *C, const Sequence *seq);
|
||||
void sequencer_preview_add_sound(const bContext *C, const Strip *seq);
|
||||
|
||||
/* `sequencer_add.cc` */
|
||||
|
||||
@@ -356,12 +356,12 @@ void SEQUENCER_OT_retiming_segment_speed_set(wmOperatorType *ot);
|
||||
int sequencer_retiming_key_select_exec(bContext *C,
|
||||
wmOperator *op,
|
||||
SeqRetimingKey *key,
|
||||
const Sequence *key_owner);
|
||||
const Strip *key_owner);
|
||||
/* Select a key and all following keys. */
|
||||
int sequencer_retiming_select_linked_time(bContext *C,
|
||||
wmOperator *op,
|
||||
SeqRetimingKey *key,
|
||||
const Sequence *key_owner);
|
||||
const Strip *key_owner);
|
||||
int sequencer_select_exec(bContext *C, wmOperator *op);
|
||||
int sequencer_retiming_select_all_exec(bContext *C, wmOperator *op);
|
||||
int sequencer_retiming_box_select_exec(bContext *C, wmOperator *op);
|
||||
@@ -373,13 +373,13 @@ void sequencer_retiming_keys_draw(const TimelineDrawContext *timeline_ctx,
|
||||
blender::Span<StripDrawContext> strips);
|
||||
void sequencer_retiming_speed_draw(const TimelineDrawContext *timeline_ctx,
|
||||
const StripDrawContext &strip_ctx);
|
||||
void realize_fake_keys(const Scene *scene, Sequence *seq);
|
||||
SeqRetimingKey *try_to_realize_fake_keys(const bContext *C, Sequence *seq, const int mval[2]);
|
||||
SeqRetimingKey *retiming_mouseover_key_get(const bContext *C, const int mval[2], Sequence **r_seq);
|
||||
int left_fake_key_frame_get(const bContext *C, const Sequence *seq);
|
||||
int right_fake_key_frame_get(const bContext *C, const Sequence *seq);
|
||||
void realize_fake_keys(const Scene *scene, Strip *seq);
|
||||
SeqRetimingKey *try_to_realize_fake_keys(const bContext *C, Strip *seq, const int mval[2]);
|
||||
SeqRetimingKey *retiming_mouseover_key_get(const bContext *C, const int mval[2], Strip **r_seq);
|
||||
int left_fake_key_frame_get(const bContext *C, const Strip *seq);
|
||||
int right_fake_key_frame_get(const bContext *C, const Strip *seq);
|
||||
bool retiming_keys_can_be_displayed(const SpaceSeq *sseq);
|
||||
rctf seq_retiming_keys_box_get(const Scene *scene, const View2D *v2d, const Sequence *seq);
|
||||
rctf seq_retiming_keys_box_get(const Scene *scene, const View2D *v2d, const Strip *seq);
|
||||
|
||||
/* `sequencer_text_edit.cc` */
|
||||
bool sequencer_text_editing_active_poll(bContext *C);
|
||||
@@ -398,8 +398,8 @@ blender::int2 seq_text_cursor_offset_to_position(const TextVarsRuntime *text, in
|
||||
blender::IndexRange seq_text_selection_range_get(const TextVars *data);
|
||||
|
||||
/* `sequencer_timeline_draw.cc` */
|
||||
blender::Vector<Sequence *> sequencer_visible_strips_get(const bContext *C);
|
||||
blender::Vector<Sequence *> sequencer_visible_strips_get(const Scene *scene, const View2D *v2d);
|
||||
blender::Vector<Strip *> sequencer_visible_strips_get(const bContext *C);
|
||||
blender::Vector<Strip *> sequencer_visible_strips_get(const Scene *scene, const View2D *v2d);
|
||||
|
||||
/* `sequencer_clipboard.cc` */
|
||||
int sequencer_clipboard_copy_exec(bContext *C, wmOperator *op);
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
static int strip_modifier_add_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Sequence *seq = SEQ_select_active_get(scene);
|
||||
Strip *seq = SEQ_select_active_get(scene);
|
||||
int type = RNA_enum_get(op->ptr, "type");
|
||||
|
||||
SEQ_modifier_new(seq, nullptr, type);
|
||||
@@ -57,7 +57,7 @@ static const EnumPropertyItem *filter_modifiers_by_sequence_type_itemf(bContext
|
||||
}
|
||||
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Sequence *seq = SEQ_select_active_get(scene);
|
||||
Strip *seq = SEQ_select_active_get(scene);
|
||||
if (seq) {
|
||||
if (ELEM(seq->type, SEQ_TYPE_SOUND_RAM)) {
|
||||
return rna_enum_sequence_sound_modifier_type_items;
|
||||
@@ -97,7 +97,7 @@ void SEQUENCER_OT_strip_modifier_add(wmOperatorType *ot)
|
||||
static int strip_modifier_remove_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Sequence *seq = SEQ_select_active_get(scene);
|
||||
Strip *seq = SEQ_select_active_get(scene);
|
||||
char name[MAX_NAME];
|
||||
SequenceModifierData *smd;
|
||||
|
||||
@@ -157,7 +157,7 @@ enum {
|
||||
static int strip_modifier_move_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Sequence *seq = SEQ_select_active_get(scene);
|
||||
Strip *seq = SEQ_select_active_get(scene);
|
||||
char name[MAX_NAME];
|
||||
int direction;
|
||||
SequenceModifierData *smd;
|
||||
@@ -239,7 +239,7 @@ static int strip_modifier_copy_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Editing *ed = scene->ed;
|
||||
Sequence *seq = SEQ_select_active_get(scene);
|
||||
Strip *seq = SEQ_select_active_get(scene);
|
||||
const int type = RNA_enum_get(op->ptr, "type");
|
||||
|
||||
if (!seq || !seq->modifiers.first) {
|
||||
@@ -248,7 +248,7 @@ static int strip_modifier_copy_exec(bContext *C, wmOperator *op)
|
||||
|
||||
int isSound = ELEM(seq->type, SEQ_TYPE_SOUND_RAM);
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq_iter, SEQ_active_seqbase_get(ed)) {
|
||||
LISTBASE_FOREACH (Strip *, seq_iter, SEQ_active_seqbase_get(ed)) {
|
||||
if (seq_iter->flag & SELECT) {
|
||||
if (seq_iter == seq) {
|
||||
continue;
|
||||
@@ -329,7 +329,7 @@ void SEQUENCER_OT_strip_modifier_copy(wmOperatorType *ot)
|
||||
static int strip_modifier_equalizer_redefine_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Sequence *seq = SEQ_select_active_get(scene);
|
||||
Strip *seq = SEQ_select_active_get(scene);
|
||||
SequenceModifierData *smd;
|
||||
char name[MAX_NAME];
|
||||
RNA_string_get(op->ptr, "name", name);
|
||||
|
||||
@@ -178,7 +178,7 @@ static void preview_endjob(void *data)
|
||||
WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, pj->scene);
|
||||
}
|
||||
|
||||
void sequencer_preview_add_sound(const bContext *C, const Sequence *seq)
|
||||
void sequencer_preview_add_sound(const bContext *C, const Strip *seq)
|
||||
{
|
||||
wmJob *wm_job;
|
||||
PreviewJob *pj;
|
||||
|
||||
@@ -73,14 +73,14 @@
|
||||
#include "sequencer_quads_batch.hh"
|
||||
#include "sequencer_scopes.hh"
|
||||
|
||||
static Sequence *special_seq_update = nullptr;
|
||||
static Strip *special_seq_update = nullptr;
|
||||
|
||||
void sequencer_special_update_set(Sequence *seq)
|
||||
void sequencer_special_update_set(Strip *seq)
|
||||
{
|
||||
special_seq_update = seq;
|
||||
}
|
||||
|
||||
Sequence *ED_sequencer_special_preview_get()
|
||||
Strip *ED_sequencer_special_preview_get()
|
||||
{
|
||||
return special_seq_update;
|
||||
}
|
||||
@@ -90,7 +90,7 @@ void ED_sequencer_special_preview_set(bContext *C, const int mval[2])
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
ARegion *region = CTX_wm_region(C);
|
||||
eSeqHandle hand_dummy;
|
||||
Sequence *seq = find_nearest_seq(scene, ®ion->v2d, mval, &hand_dummy);
|
||||
Strip *seq = find_nearest_seq(scene, ®ion->v2d, mval, &hand_dummy);
|
||||
sequencer_special_update_set(seq);
|
||||
}
|
||||
|
||||
@@ -980,7 +980,7 @@ static bool sequencer_calc_scopes(Scene *scene, SpaceSeq *sseq, ImBuf *ibuf, boo
|
||||
|
||||
bool sequencer_draw_get_transform_preview(SpaceSeq *sseq, Scene *scene)
|
||||
{
|
||||
Sequence *last_seq = SEQ_select_active_get(scene);
|
||||
Strip *last_seq = SEQ_select_active_get(scene);
|
||||
if (last_seq == nullptr) {
|
||||
return false;
|
||||
}
|
||||
@@ -992,7 +992,7 @@ bool sequencer_draw_get_transform_preview(SpaceSeq *sseq, Scene *scene)
|
||||
|
||||
int sequencer_draw_get_transform_preview_frame(Scene *scene)
|
||||
{
|
||||
Sequence *last_seq = SEQ_select_active_get(scene);
|
||||
Strip *last_seq = SEQ_select_active_get(scene);
|
||||
/* #sequencer_draw_get_transform_preview must already have been called. */
|
||||
BLI_assert(last_seq != nullptr);
|
||||
int preview_frame;
|
||||
@@ -1007,7 +1007,7 @@ int sequencer_draw_get_transform_preview_frame(Scene *scene)
|
||||
return preview_frame;
|
||||
}
|
||||
|
||||
static void seq_draw_image_origin_and_outline(const bContext *C, Sequence *seq, bool is_active_seq)
|
||||
static void seq_draw_image_origin_and_outline(const bContext *C, Strip *seq, bool is_active_seq)
|
||||
{
|
||||
SpaceSeq *sseq = CTX_wm_space_seq(C);
|
||||
const ARegion *region = CTX_wm_region(C);
|
||||
@@ -1080,7 +1080,7 @@ static void seq_draw_image_origin_and_outline(const bContext *C, Sequence *seq,
|
||||
GPU_line_smooth(false);
|
||||
}
|
||||
|
||||
static void text_selection_draw(const bContext *C, const Sequence *seq, uint pos)
|
||||
static void text_selection_draw(const bContext *C, const Strip *seq, uint pos)
|
||||
{
|
||||
const TextVars *data = static_cast<TextVars *>(seq->effectdata);
|
||||
const TextVarsRuntime *text = data->runtime;
|
||||
@@ -1150,7 +1150,7 @@ static blender::float2 coords_region_view_align(const View2D *v2d, const blender
|
||||
return coords_region_aligned;
|
||||
}
|
||||
|
||||
static void text_edit_draw_cursor(const bContext *C, const Sequence *seq, uint pos)
|
||||
static void text_edit_draw_cursor(const bContext *C, const Strip *seq, uint pos)
|
||||
{
|
||||
const TextVars *data = static_cast<TextVars *>(seq->effectdata);
|
||||
const TextVarsRuntime *text = data->runtime;
|
||||
@@ -1198,7 +1198,7 @@ static void text_edit_draw_cursor(const bContext *C, const Sequence *seq, uint p
|
||||
immEnd();
|
||||
}
|
||||
|
||||
static void text_edit_draw_box(const bContext *C, const Sequence *seq, uint pos)
|
||||
static void text_edit_draw_box(const bContext *C, const Strip *seq, uint pos)
|
||||
{
|
||||
const TextVars *data = static_cast<TextVars *>(seq->effectdata);
|
||||
const TextVarsRuntime *text = data->runtime;
|
||||
@@ -1240,7 +1240,7 @@ static void text_edit_draw(const bContext *C)
|
||||
if (!sequencer_text_editing_active_poll(const_cast<bContext *>(C))) {
|
||||
return;
|
||||
}
|
||||
const Sequence *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
const Strip *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
if (!SEQ_effects_can_render_text(seq)) {
|
||||
return;
|
||||
}
|
||||
@@ -1344,8 +1344,8 @@ void sequencer_draw_preview(const bContext *C,
|
||||
ListBase *channels = SEQ_channels_displayed_get(ed);
|
||||
blender::VectorSet strips = SEQ_query_rendered_strips(
|
||||
scene, channels, ed->seqbasep, timeline_frame, 0);
|
||||
Sequence *active_seq = SEQ_select_active_get(scene);
|
||||
for (Sequence *seq : strips) {
|
||||
Strip *active_seq = SEQ_select_active_get(scene);
|
||||
for (Strip *seq : strips) {
|
||||
seq_draw_image_origin_and_outline(C, seq, seq == active_seq);
|
||||
text_edit_draw(C);
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ static void seq_proxy_build_job(const bContext *C, ReportList *reports)
|
||||
blender::Set<std::string> processed_paths;
|
||||
bool selected = false; /* Check for no selected strips */
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
LISTBASE_FOREACH (Strip *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
if (!ELEM(seq->type, SEQ_TYPE_MOVIE, SEQ_TYPE_IMAGE) || (seq->flag & SELECT) == 0) {
|
||||
continue;
|
||||
}
|
||||
@@ -109,7 +109,7 @@ static int sequencer_rebuild_proxy_exec(bContext *C, wmOperator * /*o*/)
|
||||
|
||||
blender::Set<std::string> processed_paths;
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
LISTBASE_FOREACH (Strip *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
if (seq->flag & SELECT) {
|
||||
ListBase queue = {nullptr, nullptr};
|
||||
|
||||
@@ -170,7 +170,7 @@ static int sequencer_enable_proxies_exec(bContext *C, wmOperator *op)
|
||||
turnon = false;
|
||||
}
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
LISTBASE_FOREACH (Strip *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
if (seq->flag & SELECT) {
|
||||
if (ELEM(seq->type, SEQ_TYPE_MOVIE, SEQ_TYPE_IMAGE)) {
|
||||
SEQ_proxy_set(seq, turnon);
|
||||
|
||||
@@ -56,7 +56,7 @@ bool sequencer_retiming_mode_is_active(const bContext *C)
|
||||
|
||||
static void sequencer_retiming_data_show_selection(ListBase *seqbase)
|
||||
{
|
||||
LISTBASE_FOREACH (Sequence *, seq, seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, seqbase) {
|
||||
if ((seq->flag & SELECT) == 0) {
|
||||
continue;
|
||||
}
|
||||
@@ -69,7 +69,7 @@ static void sequencer_retiming_data_show_selection(ListBase *seqbase)
|
||||
|
||||
static void sequencer_retiming_data_hide_selection(ListBase *seqbase)
|
||||
{
|
||||
LISTBASE_FOREACH (Sequence *, seq, seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, seqbase) {
|
||||
if ((seq->flag & SELECT) == 0) {
|
||||
continue;
|
||||
}
|
||||
@@ -82,7 +82,7 @@ static void sequencer_retiming_data_hide_selection(ListBase *seqbase)
|
||||
|
||||
static void sequencer_retiming_data_hide_all(ListBase *seqbase)
|
||||
{
|
||||
LISTBASE_FOREACH (Sequence *, seq, seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, seqbase) {
|
||||
seq->flag &= ~SEQ_SHOW_RETIMING;
|
||||
}
|
||||
}
|
||||
@@ -91,7 +91,7 @@ static int sequencer_retiming_data_show_exec(bContext *C, wmOperator * /*op*/)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *seq_act = SEQ_select_active_get(scene);
|
||||
Strip *seq_act = SEQ_select_active_get(scene);
|
||||
|
||||
if (seq_act == nullptr) {
|
||||
return OPERATOR_CANCELLED;
|
||||
@@ -134,7 +134,7 @@ static bool retiming_poll(bContext *C)
|
||||
if (ed == nullptr) {
|
||||
return false;
|
||||
}
|
||||
Sequence *seq = ed->act_seq;
|
||||
Strip *seq = ed->act_seq;
|
||||
if (seq == nullptr) {
|
||||
return false;
|
||||
}
|
||||
@@ -154,7 +154,7 @@ static int sequencer_retiming_reset_exec(bContext *C, wmOperator * /*op*/)
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
const Editing *ed = SEQ_editing_get(scene);
|
||||
|
||||
for (Sequence *seq : SEQ_query_selected_strips(ed->seqbasep)) {
|
||||
for (Strip *seq : SEQ_query_selected_strips(ed->seqbasep)) {
|
||||
SEQ_retiming_reset(scene, seq);
|
||||
}
|
||||
|
||||
@@ -179,7 +179,7 @@ void SEQUENCER_OT_retiming_reset(wmOperatorType *ot)
|
||||
|
||||
/** \} */
|
||||
|
||||
static SeqRetimingKey *ensure_left_and_right_keys(const bContext *C, Sequence *seq)
|
||||
static SeqRetimingKey *ensure_left_and_right_keys(const bContext *C, Strip *seq)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
SEQ_retiming_data_ensure(seq);
|
||||
@@ -193,7 +193,7 @@ static SeqRetimingKey *ensure_left_and_right_keys(const bContext *C, Sequence *s
|
||||
|
||||
static bool retiming_key_add_new_for_seq(bContext *C,
|
||||
wmOperator *op,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
const int timeline_frame)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
@@ -218,12 +218,12 @@ static bool retiming_key_add_new_for_seq(bContext *C,
|
||||
|
||||
static int retiming_key_add_from_selection(bContext *C,
|
||||
wmOperator *op,
|
||||
blender::Span<Sequence *> strips,
|
||||
blender::Span<Strip *> strips,
|
||||
const int timeline_frame)
|
||||
{
|
||||
bool inserted = false;
|
||||
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
if (!SEQ_retiming_is_allowed(seq)) {
|
||||
continue;
|
||||
}
|
||||
@@ -246,7 +246,7 @@ static int retiming_key_add_to_editable_strips(bContext *C,
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
|
||||
for (Sequence *seq : selection.values()) {
|
||||
for (Strip *seq : selection.values()) {
|
||||
inserted |= retiming_key_add_new_for_seq(C, op, seq, timeline_frame);
|
||||
}
|
||||
|
||||
@@ -266,7 +266,7 @@ static int sequencer_retiming_key_add_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
|
||||
int ret_val;
|
||||
blender::VectorSet<Sequence *> strips = ED_sequencer_selected_strips_from_context(C);
|
||||
blender::VectorSet<Strip *> strips = ED_sequencer_selected_strips_from_context(C);
|
||||
if (!strips.is_empty()) {
|
||||
ret_val = retiming_key_add_from_selection(C, op, strips, timeline_frame);
|
||||
}
|
||||
@@ -311,7 +311,7 @@ void SEQUENCER_OT_retiming_key_add(wmOperatorType *ot)
|
||||
|
||||
static bool freeze_frame_add_new_for_seq(const bContext *C,
|
||||
const wmOperator *op,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
const int timeline_frame,
|
||||
const int duration)
|
||||
{
|
||||
@@ -350,12 +350,12 @@ static bool freeze_frame_add_from_strip_selection(bContext *C,
|
||||
const int duration)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
blender::VectorSet<Sequence *> strips = ED_sequencer_selected_strips_from_context(C);
|
||||
strips.remove_if([&](Sequence *seq) { return !SEQ_retiming_is_allowed(seq); });
|
||||
blender::VectorSet<Strip *> strips = ED_sequencer_selected_strips_from_context(C);
|
||||
strips.remove_if([&](Strip *seq) { return !SEQ_retiming_is_allowed(seq); });
|
||||
const int timeline_frame = BKE_scene_frame_get(scene);
|
||||
bool success = false;
|
||||
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
success |= freeze_frame_add_new_for_seq(C, op, seq, timeline_frame, duration);
|
||||
SEQ_relations_invalidate_cache_raw(scene, seq);
|
||||
}
|
||||
@@ -436,7 +436,7 @@ void SEQUENCER_OT_retiming_freeze_frame_add(wmOperatorType *ot)
|
||||
|
||||
static bool transition_add_new_for_seq(const bContext *C,
|
||||
const wmOperator *op,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
const int timeline_frame,
|
||||
const int duration)
|
||||
{
|
||||
@@ -546,17 +546,17 @@ static int sequencer_retiming_key_delete_exec(bContext *C, wmOperator * /*op*/)
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
|
||||
blender::Map selection = SEQ_retiming_selection_get(SEQ_editing_get(scene));
|
||||
blender::Vector<Sequence *> strips_to_handle;
|
||||
blender::Vector<Strip *> strips_to_handle;
|
||||
|
||||
if (!sequencer_retiming_mode_is_active(C) || selection.size() == 0) {
|
||||
return OPERATOR_CANCELLED | OPERATOR_PASS_THROUGH;
|
||||
}
|
||||
|
||||
for (Sequence *seq : selection.values()) {
|
||||
for (Strip *seq : selection.values()) {
|
||||
strips_to_handle.append_non_duplicates(seq);
|
||||
}
|
||||
|
||||
for (Sequence *seq : strips_to_handle) {
|
||||
for (Strip *seq : strips_to_handle) {
|
||||
blender::Vector<SeqRetimingKey *> keys_to_delete;
|
||||
for (auto item : selection.items()) {
|
||||
if (item.value != seq) {
|
||||
@@ -568,7 +568,7 @@ static int sequencer_retiming_key_delete_exec(bContext *C, wmOperator * /*op*/)
|
||||
SEQ_retiming_remove_multiple_keys(seq, keys_to_delete);
|
||||
}
|
||||
|
||||
for (Sequence *seq : strips_to_handle) {
|
||||
for (Strip *seq : strips_to_handle) {
|
||||
SEQ_relations_invalidate_cache_raw(scene, seq);
|
||||
}
|
||||
|
||||
@@ -623,9 +623,9 @@ static float strip_speed_get(bContext *C, const wmOperator * /*op*/)
|
||||
{
|
||||
/* Strip mode. */
|
||||
if (!sequencer_retiming_mode_is_active(C)) {
|
||||
blender::VectorSet<Sequence *> strips = ED_sequencer_selected_strips_from_context(C);
|
||||
blender::VectorSet<Strip *> strips = ED_sequencer_selected_strips_from_context(C);
|
||||
if (strips.size() == 1) {
|
||||
Sequence *seq = strips[0];
|
||||
Strip *seq = strips[0];
|
||||
SeqRetimingKey *key = ensure_left_and_right_keys(C, seq);
|
||||
return SEQ_retiming_key_speed_get(seq, key);
|
||||
}
|
||||
@@ -646,10 +646,10 @@ static float strip_speed_get(bContext *C, const wmOperator * /*op*/)
|
||||
static int strip_speed_set_exec(bContext *C, const wmOperator *op)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
blender::VectorSet<Sequence *> strips = ED_sequencer_selected_strips_from_context(C);
|
||||
strips.remove_if([&](Sequence *seq) { return !SEQ_retiming_is_allowed(seq); });
|
||||
blender::VectorSet<Strip *> strips = ED_sequencer_selected_strips_from_context(C);
|
||||
strips.remove_if([&](Strip *seq) { return !SEQ_retiming_is_allowed(seq); });
|
||||
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
SeqRetimingKey *key = ensure_left_and_right_keys(C, seq);
|
||||
|
||||
if (key == nullptr) {
|
||||
@@ -672,7 +672,7 @@ static int strip_speed_set_exec(bContext *C, const wmOperator *op)
|
||||
|
||||
static int segment_speed_set_exec(const bContext *C,
|
||||
const wmOperator *op,
|
||||
blender::Map<SeqRetimingKey *, Sequence *> selection)
|
||||
blender::Map<SeqRetimingKey *, Strip *> selection)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
ListBase *seqbase = SEQ_active_seqbase_get(SEQ_editing_get(scene));
|
||||
@@ -789,7 +789,7 @@ static bool select_key(const Editing *ed,
|
||||
|
||||
static bool select_connected_keys(const Scene *scene,
|
||||
const SeqRetimingKey *source,
|
||||
const Sequence *source_owner)
|
||||
const Strip *source_owner)
|
||||
{
|
||||
if (!SEQ_is_strip_connected(source_owner)) {
|
||||
return false;
|
||||
@@ -797,8 +797,8 @@ static bool select_connected_keys(const Scene *scene,
|
||||
|
||||
const int frame = SEQ_retiming_key_timeline_frame_get(scene, source_owner, source);
|
||||
bool changed = false;
|
||||
blender::VectorSet<Sequence *> connections = SEQ_get_connected_strips(source_owner);
|
||||
for (Sequence *connection : connections) {
|
||||
blender::VectorSet<Strip *> connections = SEQ_get_connected_strips(source_owner);
|
||||
for (Strip *connection : connections) {
|
||||
SeqRetimingKey *con_key = SEQ_retiming_key_get_by_timeline_frame(scene, connection, frame);
|
||||
|
||||
if (con_key) {
|
||||
@@ -812,7 +812,7 @@ static bool select_connected_keys(const Scene *scene,
|
||||
int sequencer_retiming_select_linked_time(bContext *C,
|
||||
wmOperator *op,
|
||||
SeqRetimingKey *key,
|
||||
const Sequence *key_owner)
|
||||
const Strip *key_owner)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
@@ -831,7 +831,7 @@ int sequencer_retiming_select_linked_time(bContext *C,
|
||||
int sequencer_retiming_key_select_exec(bContext *C,
|
||||
wmOperator *op,
|
||||
SeqRetimingKey *key,
|
||||
const Sequence *key_owner)
|
||||
const Strip *key_owner)
|
||||
{
|
||||
if (RNA_boolean_get(op->ptr, "linked_time")) {
|
||||
return sequencer_retiming_select_linked_time(C, op, key, key_owner);
|
||||
@@ -867,7 +867,7 @@ int sequencer_retiming_key_select_exec(bContext *C,
|
||||
return changed ? OPERATOR_FINISHED : OPERATOR_CANCELLED;
|
||||
}
|
||||
|
||||
static void realize_fake_keys_in_rect(bContext *C, Sequence *seq, const rctf &rectf)
|
||||
static void realize_fake_keys_in_rect(bContext *C, Strip *seq, const rctf &rectf)
|
||||
{
|
||||
const Scene *scene = CTX_data_scene(C);
|
||||
|
||||
@@ -908,7 +908,7 @@ int sequencer_retiming_box_select_exec(bContext *C, wmOperator *op)
|
||||
|
||||
blender::Set<SeqRetimingKey *> and_keys;
|
||||
|
||||
for (Sequence *seq : sequencer_visible_strips_get(C)) {
|
||||
for (Strip *seq : sequencer_visible_strips_get(C)) {
|
||||
if (seq->machine < rectf.ymin || seq->machine > rectf.ymax) {
|
||||
continue;
|
||||
}
|
||||
@@ -973,11 +973,11 @@ int sequencer_retiming_select_all_exec(bContext *C, wmOperator *op)
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
int action = RNA_enum_get(op->ptr, "action");
|
||||
|
||||
blender::VectorSet<Sequence *> strips = all_strips_from_context(C);
|
||||
blender::VectorSet<Strip *> strips = all_strips_from_context(C);
|
||||
|
||||
if (action == SEL_TOGGLE) {
|
||||
action = SEL_SELECT;
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
if (!SEQ_retiming_data_is_editable(seq)) {
|
||||
continue;
|
||||
}
|
||||
@@ -994,7 +994,7 @@ int sequencer_retiming_select_all_exec(bContext *C, wmOperator *op)
|
||||
SEQ_retiming_selection_clear(SEQ_editing_get(scene));
|
||||
}
|
||||
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
if (!SEQ_retiming_data_is_editable(seq)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -48,13 +48,13 @@ bool retiming_keys_can_be_displayed(const SpaceSeq *sseq)
|
||||
(sseq->flag & SEQ_SHOW_OVERLAY);
|
||||
}
|
||||
|
||||
static float strip_y_rescale(const Sequence *seq, const float y_value)
|
||||
static float strip_y_rescale(const Strip *seq, const float y_value)
|
||||
{
|
||||
const float y_range = SEQ_STRIP_OFSTOP - SEQ_STRIP_OFSBOTTOM;
|
||||
return (y_value * y_range) + seq->machine + SEQ_STRIP_OFSBOTTOM;
|
||||
}
|
||||
|
||||
static float key_x_get(const Scene *scene, const Sequence *seq, const SeqRetimingKey *key)
|
||||
static float key_x_get(const Scene *scene, const Strip *seq, const SeqRetimingKey *key)
|
||||
{
|
||||
if (SEQ_retiming_is_last_key(seq, key)) {
|
||||
return SEQ_retiming_key_timeline_frame_get(scene, seq, key) + 1;
|
||||
@@ -76,19 +76,17 @@ static float pixels_to_view_height(const bContext *C, const float height)
|
||||
return height / scale_y;
|
||||
}
|
||||
|
||||
static float strip_start_screenspace_get(const Scene *scene,
|
||||
const View2D *v2d,
|
||||
const Sequence *seq)
|
||||
static float strip_start_screenspace_get(const Scene *scene, const View2D *v2d, const Strip *seq)
|
||||
{
|
||||
return UI_view2d_view_to_region_x(v2d, SEQ_time_left_handle_frame_get(scene, seq));
|
||||
}
|
||||
|
||||
static float strip_end_screenspace_get(const Scene *scene, const View2D *v2d, const Sequence *seq)
|
||||
static float strip_end_screenspace_get(const Scene *scene, const View2D *v2d, const Strip *seq)
|
||||
{
|
||||
return UI_view2d_view_to_region_x(v2d, SEQ_time_right_handle_frame_get(scene, seq));
|
||||
}
|
||||
|
||||
static rctf strip_box_get(const Scene *scene, const View2D *v2d, const Sequence *seq)
|
||||
static rctf strip_box_get(const Scene *scene, const View2D *v2d, const Strip *seq)
|
||||
{
|
||||
rctf rect;
|
||||
rect.xmin = strip_start_screenspace_get(scene, v2d, seq);
|
||||
@@ -101,7 +99,7 @@ static rctf strip_box_get(const Scene *scene, const View2D *v2d, const Sequence
|
||||
/** Size in pixels. */
|
||||
#define RETIME_KEY_MOUSEOVER_THRESHOLD (16.0f * UI_SCALE_FAC)
|
||||
|
||||
rctf seq_retiming_keys_box_get(const Scene *scene, const View2D *v2d, const Sequence *seq)
|
||||
rctf seq_retiming_keys_box_get(const Scene *scene, const View2D *v2d, const Strip *seq)
|
||||
{
|
||||
rctf rect = strip_box_get(scene, v2d, seq);
|
||||
rect.ymax = KEY_CENTER + KEY_SIZE / 2;
|
||||
@@ -109,7 +107,7 @@ rctf seq_retiming_keys_box_get(const Scene *scene, const View2D *v2d, const Sequ
|
||||
return rect;
|
||||
}
|
||||
|
||||
int left_fake_key_frame_get(const bContext *C, const Sequence *seq)
|
||||
int left_fake_key_frame_get(const bContext *C, const Strip *seq)
|
||||
{
|
||||
const Scene *scene = CTX_data_scene(C);
|
||||
int sound_offset = SEQ_time_get_rounded_sound_offset(scene, seq);
|
||||
@@ -117,7 +115,7 @@ int left_fake_key_frame_get(const bContext *C, const Sequence *seq)
|
||||
return max_ii(content_start, SEQ_time_left_handle_frame_get(scene, seq));
|
||||
}
|
||||
|
||||
int right_fake_key_frame_get(const bContext *C, const Sequence *seq)
|
||||
int right_fake_key_frame_get(const bContext *C, const Strip *seq)
|
||||
{
|
||||
const Scene *scene = CTX_data_scene(C);
|
||||
int sound_offset = SEQ_time_get_rounded_sound_offset(scene, seq);
|
||||
@@ -126,7 +124,7 @@ int right_fake_key_frame_get(const bContext *C, const Sequence *seq)
|
||||
}
|
||||
|
||||
static bool retiming_fake_key_frame_clicked(const bContext *C,
|
||||
const Sequence *seq,
|
||||
const Strip *seq,
|
||||
const int mval[2],
|
||||
int &r_frame)
|
||||
{
|
||||
@@ -154,14 +152,14 @@ static bool retiming_fake_key_frame_clicked(const bContext *C,
|
||||
return min_ff(left_distance, right_distance) < RETIME_KEY_MOUSEOVER_THRESHOLD;
|
||||
}
|
||||
|
||||
void realize_fake_keys(const Scene *scene, Sequence *seq)
|
||||
void realize_fake_keys(const Scene *scene, Strip *seq)
|
||||
{
|
||||
SEQ_retiming_data_ensure(seq);
|
||||
SEQ_retiming_add_key(scene, seq, SEQ_time_left_handle_frame_get(scene, seq));
|
||||
SEQ_retiming_add_key(scene, seq, SEQ_time_right_handle_frame_get(scene, seq));
|
||||
}
|
||||
|
||||
SeqRetimingKey *try_to_realize_fake_keys(const bContext *C, Sequence *seq, const int mval[2])
|
||||
SeqRetimingKey *try_to_realize_fake_keys(const bContext *C, Strip *seq, const int mval[2])
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
SeqRetimingKey *key = nullptr;
|
||||
@@ -175,7 +173,7 @@ SeqRetimingKey *try_to_realize_fake_keys(const bContext *C, Sequence *seq, const
|
||||
}
|
||||
|
||||
static SeqRetimingKey *mouse_over_key_get_from_strip(const bContext *C,
|
||||
const Sequence *seq,
|
||||
const Strip *seq,
|
||||
const int mval[2])
|
||||
{
|
||||
const Scene *scene = CTX_data_scene(C);
|
||||
@@ -204,11 +202,11 @@ static SeqRetimingKey *mouse_over_key_get_from_strip(const bContext *C,
|
||||
return best_key;
|
||||
}
|
||||
|
||||
SeqRetimingKey *retiming_mouseover_key_get(const bContext *C, const int mval[2], Sequence **r_seq)
|
||||
SeqRetimingKey *retiming_mouseover_key_get(const bContext *C, const int mval[2], Strip **r_seq)
|
||||
{
|
||||
const Scene *scene = CTX_data_scene(C);
|
||||
const View2D *v2d = UI_view2d_fromcontext(C);
|
||||
for (Sequence *seq : sequencer_visible_strips_get(C)) {
|
||||
for (Strip *seq : sequencer_visible_strips_get(C)) {
|
||||
rctf box = seq_retiming_keys_box_get(scene, v2d, seq);
|
||||
if (!BLI_rctf_isect_pt(&box, mval[0], mval[1])) {
|
||||
continue;
|
||||
@@ -263,7 +261,7 @@ static void retime_key_draw(const TimelineDrawContext *timeline_ctx,
|
||||
{
|
||||
const Scene *scene = timeline_ctx->scene;
|
||||
const View2D *v2d = timeline_ctx->v2d;
|
||||
Sequence *seq = strip_ctx.seq;
|
||||
Strip *seq = strip_ctx.seq;
|
||||
|
||||
const float key_x = key_x_get(scene, seq, key);
|
||||
const rctf strip_box = strip_box_get(scene, v2d, seq);
|
||||
@@ -310,7 +308,7 @@ void sequencer_retiming_draw_continuity(const TimelineDrawContext *timeline_ctx,
|
||||
return;
|
||||
}
|
||||
|
||||
const Sequence *seq = strip_ctx.seq;
|
||||
const Strip *seq = strip_ctx.seq;
|
||||
const View2D *v2d = timeline_ctx->v2d;
|
||||
const Scene *scene = timeline_ctx->scene;
|
||||
const float left_handle_position = UI_view2d_view_to_region_x(v2d, strip_ctx.left_handle);
|
||||
@@ -357,7 +355,7 @@ void sequencer_retiming_draw_continuity(const TimelineDrawContext *timeline_ctx,
|
||||
}
|
||||
}
|
||||
|
||||
static SeqRetimingKey fake_retiming_key_init(const Scene *scene, const Sequence *seq, int key_x)
|
||||
static SeqRetimingKey fake_retiming_key_init(const Scene *scene, const Strip *seq, int key_x)
|
||||
{
|
||||
int sound_offset = SEQ_time_get_rounded_sound_offset(scene, seq);
|
||||
SeqRetimingKey fake_key = {0};
|
||||
@@ -373,7 +371,7 @@ static bool fake_keys_draw(const TimelineDrawContext *timeline_ctx,
|
||||
const StripDrawContext &strip_ctx,
|
||||
const KeyframeShaderBindings &sh_bindings)
|
||||
{
|
||||
const Sequence *seq = strip_ctx.seq;
|
||||
const Strip *seq = strip_ctx.seq;
|
||||
const Scene *scene = timeline_ctx->scene;
|
||||
|
||||
if (!SEQ_retiming_is_active(seq) && !SEQ_retiming_data_is_editable(seq)) {
|
||||
@@ -468,7 +466,7 @@ void sequencer_retiming_keys_draw(const TimelineDrawContext *timeline_ctx,
|
||||
/** \name Retiming Speed Label
|
||||
* \{ */
|
||||
|
||||
static size_t label_str_get(const Sequence *seq,
|
||||
static size_t label_str_get(const Strip *seq,
|
||||
const SeqRetimingKey *key,
|
||||
char *r_label_str,
|
||||
const size_t label_str_maxncpy)
|
||||
@@ -515,7 +513,7 @@ static void retime_speed_text_draw(const TimelineDrawContext *timeline_ctx,
|
||||
const StripDrawContext &strip_ctx,
|
||||
const SeqRetimingKey *key)
|
||||
{
|
||||
const Sequence *seq = strip_ctx.seq;
|
||||
const Strip *seq = strip_ctx.seq;
|
||||
const Scene *scene = timeline_ctx->scene;
|
||||
|
||||
if (SEQ_retiming_is_last_key(seq, key)) {
|
||||
|
||||
@@ -70,7 +70,7 @@ class MouseCoords {
|
||||
}
|
||||
};
|
||||
|
||||
blender::VectorSet<Sequence *> all_strips_from_context(bContext *C)
|
||||
blender::VectorSet<Strip *> all_strips_from_context(bContext *C)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
@@ -85,7 +85,7 @@ blender::VectorSet<Sequence *> all_strips_from_context(bContext *C)
|
||||
return SEQ_query_all_strips(seqbase);
|
||||
}
|
||||
|
||||
blender::VectorSet<Sequence *> ED_sequencer_selected_strips_from_context(bContext *C)
|
||||
blender::VectorSet<Strip *> ED_sequencer_selected_strips_from_context(bContext *C)
|
||||
{
|
||||
const Scene *scene = CTX_data_scene(C);
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
@@ -97,16 +97,16 @@ blender::VectorSet<Sequence *> ED_sequencer_selected_strips_from_context(bContex
|
||||
if (is_preview) {
|
||||
blender::VectorSet strips = SEQ_query_rendered_strips(
|
||||
scene, channels, seqbase, scene->r.cfra, 0);
|
||||
strips.remove_if([&](Sequence *seq) { return (seq->flag & SELECT) == 0; });
|
||||
strips.remove_if([&](Strip *seq) { return (seq->flag & SELECT) == 0; });
|
||||
return strips;
|
||||
}
|
||||
|
||||
return SEQ_query_selected_strips(seqbase);
|
||||
}
|
||||
|
||||
static void select_surrounding_handles(Scene *scene, Sequence *test) /* XXX BRING BACK */
|
||||
static void select_surrounding_handles(Scene *scene, Strip *test) /* XXX BRING BACK */
|
||||
{
|
||||
Sequence *neighbor;
|
||||
Strip *neighbor;
|
||||
|
||||
neighbor = find_neighboring_sequence(scene, test, SEQ_SIDE_LEFT, -1);
|
||||
if (neighbor) {
|
||||
@@ -134,7 +134,7 @@ static void select_active_side(
|
||||
const Scene *scene, ListBase *seqbase, int sel_side, int channel, int frame)
|
||||
{
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, seqbase) {
|
||||
if (channel == seq->machine) {
|
||||
switch (sel_side) {
|
||||
case SEQ_SIDE_LEFT:
|
||||
@@ -165,7 +165,7 @@ static void select_active_side_range(const Scene *scene,
|
||||
const int frame_ranges[SEQ_MAX_CHANNELS],
|
||||
const int frame_ignore)
|
||||
{
|
||||
LISTBASE_FOREACH (Sequence *, seq, seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, seqbase) {
|
||||
if (seq->machine < SEQ_MAX_CHANNELS) {
|
||||
const int frame = frame_ranges[seq->machine];
|
||||
if (frame == frame_ignore) {
|
||||
@@ -195,14 +195,14 @@ static void select_active_side_range(const Scene *scene,
|
||||
|
||||
/* Used alongside `select_linked_time` helper function in SEQUENCER_OT_select. */
|
||||
static void select_linked_time_seq(const Scene *scene,
|
||||
const Sequence *seq_source,
|
||||
const Strip *seq_source,
|
||||
const eSeqHandle handle_clicked)
|
||||
{
|
||||
ListBase *seqbase = SEQ_active_seqbase_get(scene->ed);
|
||||
int source_left = SEQ_time_left_handle_frame_get(scene, seq_source);
|
||||
int source_right = SEQ_time_right_handle_frame_get(scene, seq_source);
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq_dest, seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq_dest, seqbase) {
|
||||
if (seq_source->machine != seq_dest->machine) {
|
||||
const bool left_match = (SEQ_time_left_handle_frame_get(scene, seq_dest) == source_left);
|
||||
const bool right_match = (SEQ_time_right_handle_frame_get(scene, seq_dest) == source_right);
|
||||
@@ -230,7 +230,7 @@ static void select_linked_time_seq(const Scene *scene,
|
||||
#if 0 /* BRING BACK */
|
||||
void select_surround_from_last(Scene *scene)
|
||||
{
|
||||
Sequence *seq = get_last_seq(scene);
|
||||
Strip *seq = get_last_seq(scene);
|
||||
|
||||
if (seq == nullptr) {
|
||||
return;
|
||||
@@ -240,7 +240,7 @@ void select_surround_from_last(Scene *scene)
|
||||
}
|
||||
#endif
|
||||
|
||||
void ED_sequencer_select_sequence_single(Scene *scene, Sequence *seq, bool deselect_all)
|
||||
void ED_sequencer_select_sequence_single(Scene *scene, Strip *seq, bool deselect_all)
|
||||
{
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
|
||||
@@ -264,7 +264,7 @@ void ED_sequencer_select_sequence_single(Scene *scene, Sequence *seq, bool desel
|
||||
recurs_sel_seq(seq);
|
||||
}
|
||||
|
||||
void seq_rectf(const Scene *scene, const Sequence *seq, rctf *r_rect)
|
||||
void seq_rectf(const Scene *scene, const Strip *seq, rctf *r_rect)
|
||||
{
|
||||
r_rect->xmin = SEQ_time_left_handle_frame_get(scene, seq);
|
||||
r_rect->xmax = SEQ_time_right_handle_frame_get(scene, seq);
|
||||
@@ -272,7 +272,7 @@ void seq_rectf(const Scene *scene, const Sequence *seq, rctf *r_rect)
|
||||
r_rect->ymax = seq->machine + SEQ_STRIP_OFSTOP;
|
||||
}
|
||||
|
||||
Sequence *find_neighboring_sequence(Scene *scene, Sequence *test, int lr, int sel)
|
||||
Strip *find_neighboring_sequence(Scene *scene, Strip *test, int lr, int sel)
|
||||
{
|
||||
/* sel: 0==unselected, 1==selected, -1==don't care. */
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
@@ -284,7 +284,7 @@ Sequence *find_neighboring_sequence(Scene *scene, Sequence *test, int lr, int se
|
||||
if (sel > 0) {
|
||||
sel = SELECT;
|
||||
}
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if ((seq != test) && (test->machine == seq->machine) &&
|
||||
((sel == -1) || (sel && (seq->flag & SELECT)) || (sel == 0 && (seq->flag & SELECT) == 0)))
|
||||
{
|
||||
@@ -309,12 +309,12 @@ Sequence *find_neighboring_sequence(Scene *scene, Sequence *test, int lr, int se
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
Sequence *find_nearest_seq(const Scene *scene,
|
||||
const View2D *v2d,
|
||||
const int mval[2],
|
||||
eSeqHandle *r_hand)
|
||||
Strip *find_nearest_seq(const Scene *scene,
|
||||
const View2D *v2d,
|
||||
const int mval[2],
|
||||
eSeqHandle *r_hand)
|
||||
{
|
||||
Sequence *seq;
|
||||
Strip *seq;
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
float x, y;
|
||||
float pixelx;
|
||||
@@ -330,7 +330,7 @@ Sequence *find_nearest_seq(const Scene *scene,
|
||||
|
||||
UI_view2d_region_to_view(v2d, mval[0], mval[1], &x, &y);
|
||||
|
||||
seq = static_cast<Sequence *>(ed->seqbasep->first);
|
||||
seq = static_cast<Strip *>(ed->seqbasep->first);
|
||||
|
||||
while (seq) {
|
||||
if (seq->machine == int(y)) {
|
||||
@@ -375,7 +375,7 @@ Sequence *find_nearest_seq(const Scene *scene,
|
||||
return seq;
|
||||
}
|
||||
}
|
||||
seq = static_cast<Sequence *>(seq->next);
|
||||
seq = static_cast<Strip *>(seq->next);
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
@@ -383,8 +383,8 @@ Sequence *find_nearest_seq(const Scene *scene,
|
||||
#if 0
|
||||
static void select_neighbor_from_last(Scene *scene, int lr)
|
||||
{
|
||||
Sequence *seq = SEQ_select_active_get(scene);
|
||||
Sequence *neighbor;
|
||||
Strip *seq = SEQ_select_active_get(scene);
|
||||
Strip *neighbor;
|
||||
bool changed = false;
|
||||
if (seq) {
|
||||
neighbor = find_neighboring_sequence(scene, seq, lr, -1);
|
||||
@@ -413,10 +413,10 @@ static void select_neighbor_from_last(Scene *scene, int lr)
|
||||
}
|
||||
#endif
|
||||
|
||||
void recurs_sel_seq(Sequence *seq_meta)
|
||||
void recurs_sel_seq(Strip *seq_meta)
|
||||
{
|
||||
Sequence *seq;
|
||||
seq = static_cast<Sequence *>(seq_meta->seqbase.first);
|
||||
Strip *seq;
|
||||
seq = static_cast<Strip *>(seq_meta->seqbase.first);
|
||||
|
||||
while (seq) {
|
||||
|
||||
@@ -434,11 +434,11 @@ void recurs_sel_seq(Sequence *seq_meta)
|
||||
recurs_sel_seq(seq);
|
||||
}
|
||||
|
||||
seq = static_cast<Sequence *>(seq->next);
|
||||
seq = static_cast<Strip *>(seq->next);
|
||||
}
|
||||
}
|
||||
|
||||
bool seq_point_image_isect(const Scene *scene, const Sequence *seq, float point_view[2])
|
||||
bool seq_point_image_isect(const Scene *scene, const Strip *seq, float point_view[2])
|
||||
{
|
||||
float seq_image_quad[4][2];
|
||||
SEQ_image_transform_final_quad_get(scene, seq, seq_image_quad);
|
||||
@@ -476,7 +476,7 @@ static int sequencer_de_select_all_exec(bContext *C, wmOperator *op)
|
||||
|
||||
if (action == SEL_TOGGLE) {
|
||||
action = SEL_SELECT;
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
if (seq->flag & SEQ_ALLSEL) {
|
||||
action = SEL_DESELECT;
|
||||
break;
|
||||
@@ -484,7 +484,7 @@ static int sequencer_de_select_all_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
}
|
||||
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
switch (action) {
|
||||
case SEL_SELECT:
|
||||
seq->flag &= ~(SEQ_LEFTSEL + SEQ_RIGHTSEL);
|
||||
@@ -543,7 +543,7 @@ static int sequencer_select_inverse_exec(bContext *C, wmOperator * /*op*/)
|
||||
|
||||
blender::VectorSet strips = all_strips_from_context(C);
|
||||
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
if (seq->flag & SELECT) {
|
||||
seq->flag &= ~SEQ_ALLSEL;
|
||||
}
|
||||
@@ -580,7 +580,7 @@ void SEQUENCER_OT_select_inverse(wmOperatorType *ot)
|
||||
/** \name Select Operator
|
||||
* \{ */
|
||||
|
||||
static void sequencer_select_set_active(Scene *scene, Sequence *seq)
|
||||
static void sequencer_select_set_active(Scene *scene, Strip *seq)
|
||||
{
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
|
||||
@@ -607,7 +607,7 @@ static void sequencer_select_side_of_frame(const bContext *C,
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
|
||||
const float x = UI_view2d_region_to_view_x(v2d, mval[0]);
|
||||
LISTBASE_FOREACH (Sequence *, seq_iter, SEQ_active_seqbase_get(ed)) {
|
||||
LISTBASE_FOREACH (Strip *, seq_iter, SEQ_active_seqbase_get(ed)) {
|
||||
if (((x < scene->r.cfra) &&
|
||||
(SEQ_time_right_handle_frame_get(scene, seq_iter) <= scene->r.cfra)) ||
|
||||
((x >= scene->r.cfra) &&
|
||||
@@ -638,7 +638,7 @@ static void sequencer_select_side_of_frame(const bContext *C,
|
||||
}
|
||||
|
||||
static void sequencer_select_linked_handle(const bContext *C,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
const eSeqHandle handle_clicked)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
@@ -662,7 +662,7 @@ static void sequencer_select_linked_handle(const bContext *C,
|
||||
*/
|
||||
const int sel_side = (handle_clicked == SEQ_HANDLE_LEFT) ? SEQ_SIDE_LEFT : SEQ_SIDE_RIGHT;
|
||||
|
||||
Sequence *neighbor = find_neighboring_sequence(scene, seq, sel_side, -1);
|
||||
Strip *neighbor = find_neighboring_sequence(scene, seq, sel_side, -1);
|
||||
if (neighbor) {
|
||||
switch (sel_side) {
|
||||
case SEQ_SIDE_LEFT:
|
||||
@@ -712,7 +712,7 @@ static void sequencer_select_linked_handle(const bContext *C,
|
||||
/** Collect sequencer that are candidates for being selected. */
|
||||
struct SeqSelect_Link {
|
||||
SeqSelect_Link *next, *prev;
|
||||
Sequence *seq;
|
||||
Strip *seq;
|
||||
/** Only use for center selection. */
|
||||
float center_dist_sq;
|
||||
};
|
||||
@@ -752,7 +752,7 @@ static int seq_sort_for_center_select(const void *a, const void *b)
|
||||
* If multiple strips are found, loop through them in order
|
||||
* (depth (top-most first) or closest to mouse when `center` is true).
|
||||
*/
|
||||
static Sequence *seq_select_seq_from_preview(
|
||||
static Strip *seq_select_seq_from_preview(
|
||||
const bContext *C, const int mval[2], const bool toggle, const bool extend, const bool center)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
@@ -781,9 +781,9 @@ static Sequence *seq_select_seq_from_preview(
|
||||
scene, channels, seqbase, scene->r.cfra, sseq->chanshown);
|
||||
|
||||
SeqSelect_Link *slink_active = nullptr;
|
||||
Sequence *seq_active = SEQ_select_active_get(scene);
|
||||
Strip *seq_active = SEQ_select_active_get(scene);
|
||||
ListBase strips_ordered = {nullptr};
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
bool isect = false;
|
||||
float center_dist_sq_test = 0.0f;
|
||||
if (center) {
|
||||
@@ -821,7 +821,7 @@ static Sequence *seq_select_seq_from_preview(
|
||||
center ? seq_sort_for_center_select : seq_sort_for_depth_select);
|
||||
|
||||
SeqSelect_Link *slink_select = static_cast<SeqSelect_Link *>(strips_ordered.first);
|
||||
Sequence *seq_select = nullptr;
|
||||
Strip *seq_select = nullptr;
|
||||
if (slink_select != nullptr) {
|
||||
/* Only use special behavior for the active strip when it's selected. */
|
||||
if ((center == false) && slink_active && (seq_active->flag & SELECT)) {
|
||||
@@ -844,7 +844,7 @@ static Sequence *seq_select_seq_from_preview(
|
||||
return seq_select;
|
||||
}
|
||||
|
||||
bool ED_sequencer_handle_is_selected(const Sequence *seq, eSeqHandle handle)
|
||||
bool ED_sequencer_handle_is_selected(const Strip *seq, eSeqHandle handle)
|
||||
{
|
||||
return ((handle == SEQ_HANDLE_LEFT) && (seq->flag & SEQ_LEFTSEL)) ||
|
||||
((handle == SEQ_HANDLE_RIGHT) && (seq->flag & SEQ_RIGHTSEL));
|
||||
@@ -873,15 +873,15 @@ static bool element_already_selected(const StripSelection &selection)
|
||||
|
||||
static void sequencer_select_connected_strips(const StripSelection &selection)
|
||||
{
|
||||
blender::VectorSet<Sequence *> sources;
|
||||
blender::VectorSet<Strip *> sources;
|
||||
sources.add(selection.seq1);
|
||||
if (selection.seq2) {
|
||||
sources.add(selection.seq2);
|
||||
}
|
||||
|
||||
for (Sequence *source : sources) {
|
||||
blender::VectorSet<Sequence *> connections = SEQ_get_connected_strips(source);
|
||||
for (Sequence *connection : connections) {
|
||||
for (Strip *source : sources) {
|
||||
blender::VectorSet<Strip *> connections = SEQ_get_connected_strips(source);
|
||||
for (Strip *connection : connections) {
|
||||
/* Copy selection settings exactly for connected strips. */
|
||||
connection->flag &= ~(SEQ_ALLSEL);
|
||||
connection->flag |= source->flag & (SEQ_ALLSEL);
|
||||
@@ -890,7 +890,7 @@ static void sequencer_select_connected_strips(const StripSelection &selection)
|
||||
}
|
||||
|
||||
static void sequencer_select_strip_impl(const Editing *ed,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
const eSeqHandle handle_clicked,
|
||||
const bool extend,
|
||||
const bool deselect,
|
||||
@@ -961,7 +961,7 @@ static void select_linked_time(const Scene *scene,
|
||||
}
|
||||
|
||||
/* Similar to `sequence_handle_size_get_clamped()` but allows for larger clickable area. */
|
||||
static float clickable_handle_size_get(const Scene *scene, const Sequence *seq, const View2D *v2d)
|
||||
static float clickable_handle_size_get(const Scene *scene, const Strip *seq, const View2D *v2d)
|
||||
{
|
||||
const float pixelx = 1 / UI_view2d_scale_get_x(v2d);
|
||||
const float strip_len = SEQ_time_right_handle_frame_get(scene, seq) -
|
||||
@@ -969,7 +969,7 @@ static float clickable_handle_size_get(const Scene *scene, const Sequence *seq,
|
||||
return min_ff(15.0f * pixelx * U.pixelsize, strip_len / 4);
|
||||
}
|
||||
|
||||
bool ED_sequencer_can_select_handle(const Scene *scene, const Sequence *seq, const View2D *v2d)
|
||||
bool ED_sequencer_can_select_handle(const Scene *scene, const Strip *seq, const View2D *v2d)
|
||||
{
|
||||
if (SEQ_effect_get_num_inputs(seq->type) > 0) {
|
||||
return false;
|
||||
@@ -996,7 +996,7 @@ bool ED_sequencer_can_select_handle(const Scene *scene, const Sequence *seq, con
|
||||
}
|
||||
|
||||
static void strip_clickable_areas_get(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
const Strip *seq,
|
||||
const View2D *v2d,
|
||||
rctf *r_body,
|
||||
rctf *r_left_handle,
|
||||
@@ -1014,7 +1014,7 @@ static void strip_clickable_areas_get(const Scene *scene,
|
||||
BLI_rctf_pad(r_body, -handsize, 0.0f);
|
||||
}
|
||||
|
||||
static rctf strip_clickable_area_get(const Scene *scene, const View2D *v2d, const Sequence *seq)
|
||||
static rctf strip_clickable_area_get(const Scene *scene, const View2D *v2d, const Strip *seq)
|
||||
{
|
||||
rctf body, left, right;
|
||||
strip_clickable_areas_get(scene, seq, v2d, &body, &left, &right);
|
||||
@@ -1025,7 +1025,7 @@ static rctf strip_clickable_area_get(const Scene *scene, const View2D *v2d, cons
|
||||
|
||||
static float strip_to_frame_distance(const Scene *scene,
|
||||
const View2D *v2d,
|
||||
const Sequence *seq,
|
||||
const Strip *seq,
|
||||
float timeline_frame)
|
||||
{
|
||||
rctf body, left, right;
|
||||
@@ -1034,14 +1034,14 @@ static float strip_to_frame_distance(const Scene *scene,
|
||||
}
|
||||
|
||||
/* Get strips that can be selected by click. */
|
||||
static blender::Vector<Sequence *> mouseover_strips_sorted_get(const Scene *scene,
|
||||
const View2D *v2d,
|
||||
float mouse_co[2])
|
||||
static blender::Vector<Strip *> mouseover_strips_sorted_get(const Scene *scene,
|
||||
const View2D *v2d,
|
||||
float mouse_co[2])
|
||||
{
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
|
||||
blender::Vector<Sequence *> strips;
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
blender::Vector<Strip *> strips;
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if (seq->machine != int(mouse_co[1])) {
|
||||
continue;
|
||||
}
|
||||
@@ -1058,7 +1058,7 @@ static blender::Vector<Sequence *> mouseover_strips_sorted_get(const Scene *scen
|
||||
strips.append(seq);
|
||||
}
|
||||
|
||||
std::sort(strips.begin(), strips.end(), [&](const Sequence *seq1, const Sequence *seq2) {
|
||||
std::sort(strips.begin(), strips.end(), [&](const Strip *seq1, const Strip *seq2) {
|
||||
return strip_to_frame_distance(scene, v2d, seq1, mouse_co[0]) <
|
||||
strip_to_frame_distance(scene, v2d, seq2, mouse_co[0]);
|
||||
});
|
||||
@@ -1066,7 +1066,7 @@ static blender::Vector<Sequence *> mouseover_strips_sorted_get(const Scene *scen
|
||||
return strips;
|
||||
}
|
||||
|
||||
static bool strips_are_adjacent(const Scene *scene, const Sequence *seq1, const Sequence *seq2)
|
||||
static bool strips_are_adjacent(const Scene *scene, const Strip *seq1, const Strip *seq2)
|
||||
{
|
||||
const int s1_left = SEQ_time_left_handle_frame_get(scene, seq1);
|
||||
const int s1_right = SEQ_time_right_handle_frame_get(scene, seq1);
|
||||
@@ -1077,7 +1077,7 @@ static bool strips_are_adjacent(const Scene *scene, const Sequence *seq1, const
|
||||
}
|
||||
|
||||
static eSeqHandle get_strip_handle_under_cursor(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
const Strip *seq,
|
||||
const View2D *v2d,
|
||||
float mouse_co[2])
|
||||
{
|
||||
@@ -1098,7 +1098,7 @@ static eSeqHandle get_strip_handle_under_cursor(const Scene *scene,
|
||||
}
|
||||
|
||||
static bool is_mouse_over_both_handles_of_adjacent_strips(const Scene *scene,
|
||||
blender::Vector<Sequence *> strips,
|
||||
blender::Vector<Strip *> strips,
|
||||
const View2D *v2d,
|
||||
float mouse_co[2])
|
||||
{
|
||||
@@ -1125,7 +1125,7 @@ StripSelection ED_sequencer_pick_strip_and_handle(const Scene *scene,
|
||||
const View2D *v2d,
|
||||
float mouse_co[2])
|
||||
{
|
||||
blender::Vector<Sequence *> strips = mouseover_strips_sorted_get(scene, v2d, mouse_co);
|
||||
blender::Vector<Strip *> strips = mouseover_strips_sorted_get(scene, v2d, mouse_co);
|
||||
|
||||
StripSelection selection;
|
||||
|
||||
@@ -1172,7 +1172,7 @@ int sequencer_select_exec(bContext *C, wmOperator *op)
|
||||
|
||||
/* Check to see if the mouse cursor intersects with the retiming box; if so, `seq_key_owner` is
|
||||
* set. If the cursor intersects with a retiming key, `key` will be set too. */
|
||||
Sequence *seq_key_owner = nullptr;
|
||||
Strip *seq_key_owner = nullptr;
|
||||
SeqRetimingKey *key = retiming_mouseover_key_get(C, mouse_co.region, &seq_key_owner);
|
||||
|
||||
/* If no key was found, the mouse cursor may still intersect with a "fake key" that has not been
|
||||
@@ -1191,8 +1191,8 @@ int sequencer_select_exec(bContext *C, wmOperator *op)
|
||||
/* Attempt to realize any other connected strips' fake keys. */
|
||||
if (SEQ_is_strip_connected(seq_key_owner)) {
|
||||
const int key_frame = SEQ_retiming_key_timeline_frame_get(scene, seq_key_owner, key);
|
||||
blender::VectorSet<Sequence *> connections = SEQ_get_connected_strips(seq_key_owner);
|
||||
for (Sequence *connection : connections) {
|
||||
blender::VectorSet<Strip *> connections = SEQ_get_connected_strips(seq_key_owner);
|
||||
for (Strip *connection : connections) {
|
||||
if (key_frame == left_fake_key_frame_get(C, connection) ||
|
||||
key_frame == right_fake_key_frame_get(C, connection))
|
||||
{
|
||||
@@ -1410,7 +1410,7 @@ static int sequencer_select_handle_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
|
||||
/* Ignore clicks on retiming keys. */
|
||||
Sequence *seq_key_test = nullptr;
|
||||
Strip *seq_key_test = nullptr;
|
||||
SeqRetimingKey *key = retiming_mouseover_key_get(C, mouse_co.region, &seq_key_test);
|
||||
if (key != nullptr) {
|
||||
return OPERATOR_CANCELLED | OPERATOR_PASS_THROUGH;
|
||||
@@ -1504,12 +1504,12 @@ static bool select_linked_internal(Scene *scene)
|
||||
|
||||
bool changed = false;
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
LISTBASE_FOREACH (Strip *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
if ((seq->flag & SELECT) == 0) {
|
||||
continue;
|
||||
}
|
||||
/* Only get unselected neighbors. */
|
||||
Sequence *neighbor = find_neighboring_sequence(scene, seq, SEQ_SIDE_LEFT, 0);
|
||||
Strip *neighbor = find_neighboring_sequence(scene, seq, SEQ_SIDE_LEFT, 0);
|
||||
if (neighbor) {
|
||||
neighbor->flag |= SELECT;
|
||||
recurs_sel_seq(neighbor);
|
||||
@@ -1539,11 +1539,11 @@ static bool select_more_less_seq__internal(Scene *scene, bool select_more)
|
||||
const int neighbor_selection_filter = select_more ? 0 : SELECT;
|
||||
const int selection_filter = select_more ? SELECT : 0;
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
LISTBASE_FOREACH (Strip *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
if ((seq->flag & SELECT) != selection_filter) {
|
||||
continue;
|
||||
}
|
||||
Sequence *neighbor = find_neighboring_sequence(
|
||||
Strip *neighbor = find_neighboring_sequence(
|
||||
scene, seq, SEQ_SIDE_LEFT, neighbor_selection_filter);
|
||||
if (neighbor) {
|
||||
BLI_gset_add(neighbors, neighbor);
|
||||
@@ -1558,7 +1558,7 @@ static bool select_more_less_seq__internal(Scene *scene, bool select_more)
|
||||
GSetIterator gsi;
|
||||
BLI_gsetIterator_init(&gsi, neighbors);
|
||||
while (!BLI_gsetIterator_done(&gsi)) {
|
||||
Sequence *neighbor = static_cast<Sequence *>(BLI_gsetIterator_getKey(&gsi));
|
||||
Strip *neighbor = static_cast<Strip *>(BLI_gsetIterator_getKey(&gsi));
|
||||
if (select_more) {
|
||||
neighbor->flag |= SELECT;
|
||||
recurs_sel_seq(neighbor);
|
||||
@@ -1653,7 +1653,7 @@ static int sequencer_select_linked_pick_invoke(bContext *C, wmOperator *op, cons
|
||||
|
||||
bool extend = RNA_boolean_get(op->ptr, "extend");
|
||||
|
||||
Sequence *mouse_seq;
|
||||
Strip *mouse_seq;
|
||||
eSeqHandle hand;
|
||||
int selected;
|
||||
|
||||
@@ -1770,10 +1770,10 @@ static int sequencer_select_handles_exec(bContext *C, wmOperator *op)
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
int sel_side = RNA_enum_get(op->ptr, "side");
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if (seq->flag & SELECT) {
|
||||
Sequence *l_neighbor = find_neighboring_sequence(scene, seq, SEQ_SIDE_LEFT, -1);
|
||||
Sequence *r_neighbor = find_neighboring_sequence(scene, seq, SEQ_SIDE_RIGHT, -1);
|
||||
Strip *l_neighbor = find_neighboring_sequence(scene, seq, SEQ_SIDE_LEFT, -1);
|
||||
Strip *r_neighbor = find_neighboring_sequence(scene, seq, SEQ_SIDE_RIGHT, -1);
|
||||
|
||||
switch (sel_side) {
|
||||
case SEQ_SELECT_HANDLES_SIDE_LEFT:
|
||||
@@ -1817,7 +1817,7 @@ static int sequencer_select_handles_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
}
|
||||
/* Select strips */
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if ((seq->flag & SEQ_LEFTSEL) || (seq->flag & SEQ_RIGHTSEL)) {
|
||||
if (!(seq->flag & SELECT)) {
|
||||
seq->flag |= SELECT;
|
||||
@@ -1876,7 +1876,7 @@ static int sequencer_select_side_of_frame_exec(bContext *C, wmOperator *op)
|
||||
ED_sequencer_deselect_all(scene);
|
||||
}
|
||||
const int timeline_frame = scene->r.cfra;
|
||||
LISTBASE_FOREACH (Sequence *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
LISTBASE_FOREACH (Strip *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
bool test = false;
|
||||
switch (side) {
|
||||
case -1:
|
||||
@@ -1949,7 +1949,7 @@ static int sequencer_select_side_exec(bContext *C, wmOperator *op)
|
||||
|
||||
copy_vn_i(frame_ranges, ARRAY_SIZE(frame_ranges), frame_init);
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if (UNLIKELY(seq->machine >= SEQ_MAX_CHANNELS)) {
|
||||
continue;
|
||||
}
|
||||
@@ -2007,9 +2007,7 @@ void SEQUENCER_OT_select_side(wmOperatorType *ot)
|
||||
/** \name Box Select Operator
|
||||
* \{ */
|
||||
|
||||
static bool seq_box_select_rect_image_isect(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
const rctf *rect)
|
||||
static bool seq_box_select_rect_image_isect(const Scene *scene, const Strip *seq, const rctf *rect)
|
||||
{
|
||||
float seq_image_quad[4][2];
|
||||
SEQ_image_transform_final_quad_get(scene, seq, seq_image_quad);
|
||||
@@ -2044,7 +2042,7 @@ static void seq_box_select_seq_from_preview(const bContext *C,
|
||||
|
||||
blender::VectorSet strips = SEQ_query_rendered_strips(
|
||||
scene, channels, seqbase, scene->r.cfra, sseq->chanshown);
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
if (!seq_box_select_rect_image_isect(scene, seq, rect)) {
|
||||
continue;
|
||||
}
|
||||
@@ -2098,7 +2096,7 @@ static int sequencer_box_select_exec(bContext *C, wmOperator *op)
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
rctf rq;
|
||||
seq_rectf(scene, seq, &rq);
|
||||
if (BLI_rctf_isect(&rq, &rectf, nullptr)) {
|
||||
@@ -2287,14 +2285,14 @@ static const EnumPropertyItem sequencer_prop_select_grouped_types[] = {
|
||||
|
||||
#define SEQ_CHANNEL_CHECK(_seq, _chan) ELEM((_chan), 0, (_seq)->machine)
|
||||
|
||||
static bool select_grouped_type(blender::Span<Sequence *> strips,
|
||||
static bool select_grouped_type(blender::Span<Strip *> strips,
|
||||
ListBase * /*seqbase*/,
|
||||
Sequence *actseq,
|
||||
Strip *actseq,
|
||||
const int channel)
|
||||
{
|
||||
bool changed = false;
|
||||
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
if (SEQ_CHANNEL_CHECK(seq, channel) && seq->type == actseq->type) {
|
||||
seq->flag |= SELECT;
|
||||
changed = true;
|
||||
@@ -2304,15 +2302,15 @@ static bool select_grouped_type(blender::Span<Sequence *> strips,
|
||||
return changed;
|
||||
}
|
||||
|
||||
static bool select_grouped_type_basic(blender::Span<Sequence *> strips,
|
||||
static bool select_grouped_type_basic(blender::Span<Strip *> strips,
|
||||
ListBase * /*seqbase*/,
|
||||
Sequence *actseq,
|
||||
Strip *actseq,
|
||||
const int channel)
|
||||
{
|
||||
bool changed = false;
|
||||
const bool is_sound = SEQ_IS_SOUND(actseq);
|
||||
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
if (SEQ_CHANNEL_CHECK(seq, channel) && (is_sound ? SEQ_IS_SOUND(seq) : !SEQ_IS_SOUND(seq))) {
|
||||
seq->flag |= SELECT;
|
||||
changed = true;
|
||||
@@ -2322,15 +2320,15 @@ static bool select_grouped_type_basic(blender::Span<Sequence *> strips,
|
||||
return changed;
|
||||
}
|
||||
|
||||
static bool select_grouped_type_effect(blender::Span<Sequence *> strips,
|
||||
static bool select_grouped_type_effect(blender::Span<Strip *> strips,
|
||||
ListBase * /*seqbase*/,
|
||||
Sequence *actseq,
|
||||
Strip *actseq,
|
||||
const int channel)
|
||||
{
|
||||
bool changed = false;
|
||||
const bool is_effect = SEQ_IS_EFFECT(actseq);
|
||||
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
if (SEQ_CHANNEL_CHECK(seq, channel) && (is_effect ? SEQ_IS_EFFECT(seq) : !SEQ_IS_EFFECT(seq)))
|
||||
{
|
||||
seq->flag |= SELECT;
|
||||
@@ -2341,9 +2339,9 @@ static bool select_grouped_type_effect(blender::Span<Sequence *> strips,
|
||||
return changed;
|
||||
}
|
||||
|
||||
static bool select_grouped_data(blender::Span<Sequence *> strips,
|
||||
static bool select_grouped_data(blender::Span<Strip *> strips,
|
||||
ListBase * /*seqbase*/,
|
||||
Sequence *actseq,
|
||||
Strip *actseq,
|
||||
const int channel)
|
||||
{
|
||||
bool changed = false;
|
||||
@@ -2354,7 +2352,7 @@ static bool select_grouped_data(blender::Span<Sequence *> strips,
|
||||
}
|
||||
|
||||
if (SEQ_HAS_PATH(actseq) && dirpath) {
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
if (SEQ_CHANNEL_CHECK(seq, channel) && SEQ_HAS_PATH(seq) && seq->data &&
|
||||
STREQ(seq->data->dirpath, dirpath))
|
||||
{
|
||||
@@ -2365,7 +2363,7 @@ static bool select_grouped_data(blender::Span<Sequence *> strips,
|
||||
}
|
||||
else if (actseq->type == SEQ_TYPE_SCENE) {
|
||||
Scene *sce = actseq->scene;
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
if (SEQ_CHANNEL_CHECK(seq, channel) && seq->type == SEQ_TYPE_SCENE && seq->scene == sce) {
|
||||
seq->flag |= SELECT;
|
||||
changed = true;
|
||||
@@ -2374,7 +2372,7 @@ static bool select_grouped_data(blender::Span<Sequence *> strips,
|
||||
}
|
||||
else if (actseq->type == SEQ_TYPE_MOVIECLIP) {
|
||||
MovieClip *clip = actseq->clip;
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
if (SEQ_CHANNEL_CHECK(seq, channel) && seq->type == SEQ_TYPE_MOVIECLIP && seq->clip == clip)
|
||||
{
|
||||
seq->flag |= SELECT;
|
||||
@@ -2384,7 +2382,7 @@ static bool select_grouped_data(blender::Span<Sequence *> strips,
|
||||
}
|
||||
else if (actseq->type == SEQ_TYPE_MASK) {
|
||||
Mask *mask = actseq->mask;
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
if (SEQ_CHANNEL_CHECK(seq, channel) && seq->type == SEQ_TYPE_MASK && seq->mask == mask) {
|
||||
seq->flag |= SELECT;
|
||||
changed = true;
|
||||
@@ -2395,9 +2393,9 @@ static bool select_grouped_data(blender::Span<Sequence *> strips,
|
||||
return changed;
|
||||
}
|
||||
|
||||
static bool select_grouped_effect(blender::Span<Sequence *> strips,
|
||||
static bool select_grouped_effect(blender::Span<Strip *> strips,
|
||||
ListBase * /*seqbase*/,
|
||||
Sequence *actseq,
|
||||
Strip *actseq,
|
||||
const int channel)
|
||||
{
|
||||
bool changed = false;
|
||||
@@ -2407,7 +2405,7 @@ static bool select_grouped_effect(blender::Span<Sequence *> strips,
|
||||
effects[i] = false;
|
||||
}
|
||||
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
if (SEQ_CHANNEL_CHECK(seq, channel) && (seq->type & SEQ_TYPE_EFFECT) &&
|
||||
SEQ_relation_is_effect_of_strip(seq, actseq))
|
||||
{
|
||||
@@ -2415,7 +2413,7 @@ static bool select_grouped_effect(blender::Span<Sequence *> strips,
|
||||
}
|
||||
}
|
||||
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
if (SEQ_CHANNEL_CHECK(seq, channel) && effects[seq->type]) {
|
||||
if (seq->seq1) {
|
||||
seq->seq1->flag |= SELECT;
|
||||
@@ -2431,13 +2429,13 @@ static bool select_grouped_effect(blender::Span<Sequence *> strips,
|
||||
}
|
||||
|
||||
static bool select_grouped_time_overlap(const Scene *scene,
|
||||
blender::Span<Sequence *> strips,
|
||||
blender::Span<Strip *> strips,
|
||||
ListBase * /*seqbase*/,
|
||||
Sequence *actseq)
|
||||
Strip *actseq)
|
||||
{
|
||||
bool changed = false;
|
||||
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
if (SEQ_time_left_handle_frame_get(scene, seq) <
|
||||
SEQ_time_right_handle_frame_get(scene, actseq) &&
|
||||
SEQ_time_right_handle_frame_get(scene, seq) >
|
||||
@@ -2453,11 +2451,11 @@ static bool select_grouped_time_overlap(const Scene *scene,
|
||||
|
||||
/* Query strips that are in lower channel and intersect in time with seq_reference. */
|
||||
static void query_lower_channel_strips(const Scene *scene,
|
||||
Sequence *seq_reference,
|
||||
Strip *seq_reference,
|
||||
ListBase *seqbase,
|
||||
blender::VectorSet<Sequence *> &strips)
|
||||
blender::VectorSet<Strip *> &strips)
|
||||
{
|
||||
LISTBASE_FOREACH (Sequence *, seq_test, seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq_test, seqbase) {
|
||||
if (seq_test->machine > seq_reference->machine) {
|
||||
continue; /* Not lower channel. */
|
||||
}
|
||||
@@ -2475,13 +2473,13 @@ static void query_lower_channel_strips(const Scene *scene,
|
||||
/* Select all strips within time range and with lower channel of initial selection. Then select
|
||||
* effect chains of these strips. */
|
||||
static bool select_grouped_effect_link(const Scene *scene,
|
||||
blender::VectorSet<Sequence *> strips,
|
||||
blender::VectorSet<Strip *> strips,
|
||||
ListBase *seqbase,
|
||||
Sequence * /*actseq*/,
|
||||
Strip * /*actseq*/,
|
||||
const int /*channel*/)
|
||||
{
|
||||
/* Get collection of strips. */
|
||||
strips.remove_if([&](Sequence *seq) { return (seq->flag & SELECT) == 0; });
|
||||
strips.remove_if([&](Strip *seq) { return (seq->flag & SELECT) == 0; });
|
||||
const int selected_strip_count = strips.size();
|
||||
/* XXX: this uses scene as arg, so it does not work with iterator :( I had thought about this,
|
||||
* but expand function is just so useful... I can just add scene and inject it I guess. */
|
||||
@@ -2492,7 +2490,7 @@ static bool select_grouped_effect_link(const Scene *scene,
|
||||
const bool changed = strips.size() > selected_strip_count;
|
||||
|
||||
/* Actual logic. */
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
seq->flag |= SELECT;
|
||||
}
|
||||
|
||||
@@ -2507,7 +2505,7 @@ static int sequencer_select_grouped_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
ListBase *seqbase = SEQ_active_seqbase_get(SEQ_editing_get(scene));
|
||||
Sequence *actseq = SEQ_select_active_get(scene);
|
||||
Strip *actseq = SEQ_select_active_get(scene);
|
||||
|
||||
const bool is_preview = sequencer_view_has_preview_poll(C);
|
||||
if (is_preview && !sequencer_view_preview_only_poll(C)) {
|
||||
@@ -2528,7 +2526,7 @@ static int sequencer_select_grouped_exec(bContext *C, wmOperator *op)
|
||||
bool changed = false;
|
||||
|
||||
if (!extend) {
|
||||
LISTBASE_FOREACH (Sequence *, seq, seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, seqbase) {
|
||||
seq->flag &= ~SELECT;
|
||||
changed = true;
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ static bool sequencer_text_editing_poll(bContext *C)
|
||||
return false;
|
||||
}
|
||||
|
||||
const Sequence *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
const Strip *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
if (seq == nullptr || seq->type != SEQ_TYPE_TEXT || !SEQ_effects_can_render_text(seq)) {
|
||||
return false;
|
||||
}
|
||||
@@ -58,7 +58,7 @@ static bool sequencer_text_editing_poll(bContext *C)
|
||||
|
||||
bool sequencer_text_editing_active_poll(bContext *C)
|
||||
{
|
||||
const Sequence *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
const Strip *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
if (seq == nullptr || !sequencer_text_editing_poll(C)) {
|
||||
return false;
|
||||
}
|
||||
@@ -162,7 +162,7 @@ static void delete_selected_text(TextVars *data)
|
||||
|
||||
static void text_editing_update(const bContext *C)
|
||||
{
|
||||
Sequence *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
Strip *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
SEQ_relations_invalidate_cache_raw(CTX_data_scene(C), seq);
|
||||
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, CTX_data_scene(C));
|
||||
}
|
||||
@@ -296,7 +296,7 @@ static int2 cursor_move_next_word(int2 cursor_position, const TextVarsRuntime *t
|
||||
|
||||
static int sequencer_text_cursor_move_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
const Sequence *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
const Strip *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
TextVars *data = static_cast<TextVars *>(seq->effectdata);
|
||||
const TextVarsRuntime *text = data->runtime;
|
||||
|
||||
@@ -407,7 +407,7 @@ static bool text_insert(TextVars *data, const char *buf)
|
||||
|
||||
static int sequencer_text_insert_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
const Sequence *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
const Strip *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
TextVars *data = static_cast<TextVars *>(seq->effectdata);
|
||||
|
||||
char str[512];
|
||||
@@ -470,7 +470,7 @@ static void delete_character(const seq::CharInfo character, const TextVars *data
|
||||
|
||||
static int sequencer_text_delete_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
const Sequence *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
const Strip *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
TextVars *data = static_cast<TextVars *>(seq->effectdata);
|
||||
const TextVarsRuntime *text = data->runtime;
|
||||
const int type = RNA_enum_get(op->ptr, "type");
|
||||
@@ -526,7 +526,7 @@ void SEQUENCER_OT_text_delete(wmOperatorType *ot)
|
||||
|
||||
static int sequencer_text_line_break_exec(bContext *C, wmOperator * /*op*/)
|
||||
{
|
||||
const Sequence *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
const Strip *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
TextVars *data = static_cast<TextVars *>(seq->effectdata);
|
||||
|
||||
if (!text_insert(data, "\n")) {
|
||||
@@ -554,7 +554,7 @@ void SEQUENCER_OT_text_line_break(wmOperatorType *ot)
|
||||
|
||||
static int sequencer_text_select_all(bContext *C, wmOperator * /*op*/)
|
||||
{
|
||||
const Sequence *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
const Strip *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
TextVars *data = static_cast<TextVars *>(seq->effectdata);
|
||||
data->selection_start_offset = 0;
|
||||
data->selection_end_offset = data->runtime->character_count;
|
||||
@@ -579,7 +579,7 @@ void SEQUENCER_OT_text_select_all(wmOperatorType *ot)
|
||||
|
||||
static int sequencer_text_deselect_all(bContext *C, wmOperator * /*op*/)
|
||||
{
|
||||
Sequence *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
Strip *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
TextVars *data = static_cast<TextVars *>(seq->effectdata);
|
||||
|
||||
if (!text_has_selection(data)) {
|
||||
@@ -611,7 +611,7 @@ void SEQUENCER_OT_text_deselect_all(wmOperatorType *ot)
|
||||
|
||||
static int sequencer_text_edit_mode_toggle(bContext *C, wmOperator * /*op*/)
|
||||
{
|
||||
Sequence *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
Strip *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
if (sequencer_text_editing_active_poll(C)) {
|
||||
seq->flag &= ~SEQ_FLAG_TEXT_EDITING_ACTIVE;
|
||||
}
|
||||
@@ -660,7 +660,7 @@ static int find_closest_cursor_offset(const TextVars *data, float2 mouse_loc)
|
||||
static void cursor_set_by_mouse_position(const bContext *C, const wmEvent *event)
|
||||
{
|
||||
const Scene *scene = CTX_data_scene(C);
|
||||
const Sequence *seq = SEQ_select_active_get(scene);
|
||||
const Strip *seq = SEQ_select_active_get(scene);
|
||||
TextVars *data = static_cast<TextVars *>(seq->effectdata);
|
||||
const View2D *v2d = UI_view2d_fromcontext(C);
|
||||
|
||||
@@ -685,7 +685,7 @@ static void cursor_set_by_mouse_position(const bContext *C, const wmEvent *event
|
||||
static int sequencer_text_cursor_set_modal(bContext *C, wmOperator * /*op*/, const wmEvent *event)
|
||||
{
|
||||
const Scene *scene = CTX_data_scene(C);
|
||||
const Sequence *seq = SEQ_select_active_get(scene);
|
||||
const Strip *seq = SEQ_select_active_get(scene);
|
||||
TextVars *data = static_cast<TextVars *>(seq->effectdata);
|
||||
bool make_selection = false;
|
||||
|
||||
@@ -719,7 +719,7 @@ static int sequencer_text_cursor_set_modal(bContext *C, wmOperator * /*op*/, con
|
||||
static int sequencer_text_cursor_set_invoke(bContext *C, wmOperator *op, const wmEvent *event)
|
||||
{
|
||||
const Scene *scene = CTX_data_scene(C);
|
||||
Sequence *seq = SEQ_select_active_get(scene);
|
||||
Strip *seq = SEQ_select_active_get(scene);
|
||||
TextVars *data = static_cast<TextVars *>(seq->effectdata);
|
||||
const View2D *v2d = UI_view2d_fromcontext(C);
|
||||
|
||||
@@ -778,7 +778,7 @@ static void text_edit_copy(const TextVars *data)
|
||||
|
||||
static int sequencer_text_edit_copy_exec(bContext *C, wmOperator * /*op*/)
|
||||
{
|
||||
const Sequence *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
const Strip *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
const TextVars *data = static_cast<TextVars *>(seq->effectdata);
|
||||
|
||||
if (!text_has_selection(data)) {
|
||||
@@ -807,7 +807,7 @@ void SEQUENCER_OT_text_edit_copy(wmOperatorType *ot)
|
||||
|
||||
static int sequencer_text_edit_paste_exec(bContext *C, wmOperator * /*op*/)
|
||||
{
|
||||
const Sequence *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
const Strip *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
TextVars *data = static_cast<TextVars *>(seq->effectdata);
|
||||
const TextVarsRuntime *text = data->runtime;
|
||||
delete_selected_text(data);
|
||||
@@ -853,7 +853,7 @@ void SEQUENCER_OT_text_edit_paste(wmOperatorType *ot)
|
||||
|
||||
static int sequencer_text_edit_cut_exec(bContext *C, wmOperator * /*op*/)
|
||||
{
|
||||
const Sequence *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
const Strip *seq = SEQ_select_active_get(CTX_data_scene(C));
|
||||
TextVars *data = static_cast<TextVars *>(seq->effectdata);
|
||||
|
||||
if (!text_has_selection(data)) {
|
||||
|
||||
@@ -47,7 +47,7 @@ struct SeqThumbInfo {
|
||||
bool is_muted;
|
||||
};
|
||||
|
||||
static float thumb_calc_first_timeline_frame(const Sequence *seq,
|
||||
static float thumb_calc_first_timeline_frame(const Strip *seq,
|
||||
float left_handle,
|
||||
float frame_step,
|
||||
const rctf *view_area)
|
||||
@@ -63,7 +63,7 @@ static float thumb_calc_first_timeline_frame(const Sequence *seq,
|
||||
return seq->start + aligned_frame_offset;
|
||||
}
|
||||
|
||||
static float thumb_calc_next_timeline_frame(const Sequence *seq,
|
||||
static float thumb_calc_next_timeline_frame(const Strip *seq,
|
||||
float left_handle,
|
||||
float last_frame,
|
||||
float frame_step)
|
||||
@@ -78,7 +78,7 @@ static float thumb_calc_next_timeline_frame(const Sequence *seq,
|
||||
return next_frame;
|
||||
}
|
||||
|
||||
static void seq_get_thumb_image_dimensions(const Sequence *seq,
|
||||
static void seq_get_thumb_image_dimensions(const Strip *seq,
|
||||
float pixelx,
|
||||
float pixely,
|
||||
float *r_thumb_width,
|
||||
|
||||
@@ -79,17 +79,17 @@ constexpr int MUTE_ALPHA = 120;
|
||||
|
||||
constexpr float ICON_SIZE = 12.0f;
|
||||
|
||||
Vector<Sequence *> sequencer_visible_strips_get(const bContext *C)
|
||||
Vector<Strip *> sequencer_visible_strips_get(const bContext *C)
|
||||
{
|
||||
return sequencer_visible_strips_get(CTX_data_scene(C), UI_view2d_fromcontext(C));
|
||||
}
|
||||
|
||||
Vector<Sequence *> sequencer_visible_strips_get(const Scene *scene, const View2D *v2d)
|
||||
Vector<Strip *> sequencer_visible_strips_get(const Scene *scene, const View2D *v2d)
|
||||
{
|
||||
const Editing *ed = SEQ_editing_get(scene);
|
||||
Vector<Sequence *> strips;
|
||||
Vector<Strip *> strips;
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
|
||||
LISTBASE_FOREACH (Strip *, seq, ed->seqbasep) {
|
||||
if (min_ii(SEQ_time_left_handle_frame_get(scene, seq), SEQ_time_start_frame_get(seq)) >
|
||||
v2d->cur.xmax)
|
||||
{
|
||||
@@ -137,7 +137,7 @@ static TimelineDrawContext timeline_draw_context_get(const bContext *C, SeqQuads
|
||||
return ctx;
|
||||
}
|
||||
|
||||
static bool seq_draw_waveforms_poll(const SpaceSeq *sseq, const Sequence *seq)
|
||||
static bool seq_draw_waveforms_poll(const SpaceSeq *sseq, const Strip *seq)
|
||||
{
|
||||
const bool strip_is_valid = seq->type == SEQ_TYPE_SOUND_RAM && seq->sound != nullptr;
|
||||
const bool overlays_enabled = (sseq->flag & SEQ_SHOW_OVERLAY) != 0;
|
||||
@@ -201,7 +201,7 @@ static void strip_draw_context_set_retiming_overlay_visibility(TimelineDrawConte
|
||||
strip_ctx->can_draw_retiming_overlay &= retiming_keys_can_be_displayed(ctx->sseq);
|
||||
}
|
||||
|
||||
static StripDrawContext strip_draw_context_get(TimelineDrawContext *ctx, Sequence *seq)
|
||||
static StripDrawContext strip_draw_context_get(TimelineDrawContext *ctx, Strip *seq)
|
||||
{
|
||||
using namespace seq;
|
||||
StripDrawContext strip_ctx;
|
||||
@@ -245,7 +245,7 @@ static StripDrawContext strip_draw_context_get(TimelineDrawContext *ctx, Sequenc
|
||||
strip_ctx.is_connected = SEQ_is_strip_connected(seq);
|
||||
if (seq->type == SEQ_TYPE_META) {
|
||||
const ListBase *seqbase = &seq->seqbase;
|
||||
LISTBASE_FOREACH (const Sequence *, sub, seqbase) {
|
||||
LISTBASE_FOREACH (const Strip *, sub, seqbase) {
|
||||
if (!SEQ_sequence_has_valid_data(sub)) {
|
||||
strip_ctx.missing_data_block = true;
|
||||
}
|
||||
@@ -281,7 +281,7 @@ static void strip_draw_context_curve_get(const TimelineDrawContext *ctx,
|
||||
if (showing_curve_overlay || showing_waveform) {
|
||||
const char *prop_name = strip_ctx.seq->type == SEQ_TYPE_SOUND_RAM ? "volume" : "blend_alpha";
|
||||
strip_ctx.curve = id_data_find_fcurve(
|
||||
&ctx->scene->id, strip_ctx.seq, &RNA_Sequence, prop_name, 0, nullptr);
|
||||
&ctx->scene->id, strip_ctx.seq, &RNA_Strip, prop_name, 0, nullptr);
|
||||
if (strip_ctx.curve && BKE_fcurve_is_empty(strip_ctx.curve)) {
|
||||
strip_ctx.curve = nullptr;
|
||||
}
|
||||
@@ -289,7 +289,7 @@ static void strip_draw_context_curve_get(const TimelineDrawContext *ctx,
|
||||
}
|
||||
|
||||
static void color3ubv_from_seq(const Scene *curscene,
|
||||
const Sequence *seq,
|
||||
const Strip *seq,
|
||||
const bool show_strip_color_tag,
|
||||
const bool is_muted,
|
||||
uchar r_col[3])
|
||||
@@ -439,7 +439,7 @@ static void color3ubv_from_seq(const Scene *curscene,
|
||||
UI_Theme_Restore(&theme_state);
|
||||
}
|
||||
|
||||
static void waveform_job_start_if_needed(const bContext *C, const Sequence *seq)
|
||||
static void waveform_job_start_if_needed(const bContext *C, const Strip *seq)
|
||||
{
|
||||
bSound *sound = seq->sound;
|
||||
|
||||
@@ -475,7 +475,7 @@ static void draw_seq_waveform_overlay(TimelineDrawContext *timeline_ctx,
|
||||
|
||||
const View2D *v2d = timeline_ctx->v2d;
|
||||
Scene *scene = timeline_ctx->scene;
|
||||
Sequence *seq = strip_ctx->seq;
|
||||
Strip *seq = strip_ctx->seq;
|
||||
|
||||
const bool half_style = (timeline_ctx->sseq->timeline_overlay.flag &
|
||||
SEQ_TIMELINE_WAVEFORMS_HALF) != 0;
|
||||
@@ -626,7 +626,7 @@ static void drawmeta_contents(TimelineDrawContext *timeline_ctx,
|
||||
float corner_radius)
|
||||
{
|
||||
using namespace seq;
|
||||
Sequence *seq_meta = strip_ctx->seq;
|
||||
Strip *seq_meta = strip_ctx->seq;
|
||||
if (!strip_ctx->can_draw_strip_content || (timeline_ctx->sseq->flag & SEQ_SHOW_OVERLAY) == 0) {
|
||||
return;
|
||||
}
|
||||
@@ -671,7 +671,7 @@ static void drawmeta_contents(TimelineDrawContext *timeline_ctx,
|
||||
offset = 0;
|
||||
}
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, meta_seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, meta_seqbase) {
|
||||
chan_min = min_ii(chan_min, seq->machine);
|
||||
chan_max = max_ii(chan_max, seq->machine);
|
||||
}
|
||||
@@ -685,7 +685,7 @@ static void drawmeta_contents(TimelineDrawContext *timeline_ctx,
|
||||
const float meta_x2 = strip_ctx->right_handle;
|
||||
|
||||
/* Draw only immediate children (1 level depth). */
|
||||
LISTBASE_FOREACH (Sequence *, seq, meta_seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, meta_seqbase) {
|
||||
float x1_chan = SEQ_time_left_handle_frame_get(scene, seq) + offset;
|
||||
float x2_chan = SEQ_time_right_handle_frame_get(scene, seq) + offset;
|
||||
if (x1_chan <= meta_x2 && x2_chan >= meta_x1) {
|
||||
@@ -771,7 +771,7 @@ static void draw_handle_transform_text(const TimelineDrawContext *timeline_ctx,
|
||||
UI_view2d_text_cache_add(timeline_ctx->v2d, text_x, text_y, numstr, numstr_len, col);
|
||||
}
|
||||
|
||||
float sequence_handle_size_get_clamped(const Scene *scene, Sequence *seq, const float pixelx)
|
||||
float sequence_handle_size_get_clamped(const Scene *scene, Strip *seq, const float pixelx)
|
||||
{
|
||||
const bool use_thin_handle = (U.sequencer_editor_flag & USER_SEQ_ED_SIMPLE_TWEAKING) != 0;
|
||||
const float handle_size = use_thin_handle ? 5.0f : 8.0f;
|
||||
@@ -784,7 +784,7 @@ float sequence_handle_size_get_clamped(const Scene *scene, Sequence *seq, const
|
||||
4.0f));
|
||||
}
|
||||
|
||||
static const char *draw_seq_text_get_name(const Sequence *seq)
|
||||
static const char *draw_seq_text_get_name(const Strip *seq)
|
||||
{
|
||||
const char *name = seq->name + 2;
|
||||
if (name[0] == '\0') {
|
||||
@@ -793,7 +793,7 @@ static const char *draw_seq_text_get_name(const Sequence *seq)
|
||||
return name;
|
||||
}
|
||||
|
||||
static void draw_seq_text_get_source(const Sequence *seq, char *r_source, size_t source_maxncpy)
|
||||
static void draw_seq_text_get_source(const Strip *seq, char *r_source, size_t source_maxncpy)
|
||||
{
|
||||
*r_source = '\0';
|
||||
|
||||
@@ -854,7 +854,7 @@ static size_t draw_seq_text_get_overlay_string(TimelineDrawContext *timeline_ctx
|
||||
char *r_overlay_string,
|
||||
size_t overlay_string_len)
|
||||
{
|
||||
const Sequence *seq = strip_ctx->seq;
|
||||
const Strip *seq = strip_ctx->seq;
|
||||
|
||||
const char *text_sep = " | ";
|
||||
const char *text_array[5];
|
||||
@@ -891,7 +891,7 @@ static size_t draw_seq_text_get_overlay_string(TimelineDrawContext *timeline_ctx
|
||||
|
||||
static void get_strip_text_color(const StripDrawContext *strip, uchar r_col[4])
|
||||
{
|
||||
const Sequence *seq = strip->seq;
|
||||
const Strip *seq = strip->seq;
|
||||
const bool active_or_selected = (seq->flag & SELECT) || strip->is_active_strip;
|
||||
|
||||
/* Text: white when selected/active, black otherwise. */
|
||||
@@ -1066,7 +1066,7 @@ static void draw_seq_text_overlay(TimelineDrawContext *timeline_ctx,
|
||||
static void draw_strip_offsets(TimelineDrawContext *timeline_ctx,
|
||||
const StripDrawContext *strip_ctx)
|
||||
{
|
||||
const Sequence *seq = strip_ctx->seq;
|
||||
const Strip *seq = strip_ctx->seq;
|
||||
if ((timeline_ctx->sseq->flag & SEQ_SHOW_OVERLAY) == 0) {
|
||||
return;
|
||||
}
|
||||
@@ -1194,7 +1194,7 @@ static void draw_seq_fcurve_overlay(TimelineDrawContext *timeline_ctx,
|
||||
static void draw_multicam_highlight(TimelineDrawContext *timeline_ctx,
|
||||
const StripDrawContext *strip_ctx)
|
||||
{
|
||||
Sequence *act_seq = SEQ_select_active_get(timeline_ctx->scene);
|
||||
Strip *act_seq = SEQ_select_active_get(timeline_ctx->scene);
|
||||
|
||||
if (strip_ctx->seq != act_seq || act_seq == nullptr) {
|
||||
return;
|
||||
@@ -1255,10 +1255,10 @@ static void visible_strips_ordered_get(TimelineDrawContext *timeline_ctx,
|
||||
r_bottom_layer.clear();
|
||||
r_top_layer.clear();
|
||||
|
||||
Vector<Sequence *> strips = sequencer_visible_strips_get(timeline_ctx->C);
|
||||
Vector<Strip *> strips = sequencer_visible_strips_get(timeline_ctx->C);
|
||||
r_bottom_layer.reserve(strips.size());
|
||||
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
StripDrawContext strip_ctx = strip_draw_context_get(timeline_ctx, seq);
|
||||
if ((seq->flag & SEQ_OVERLAP) == 0) {
|
||||
r_bottom_layer.append(strip_ctx);
|
||||
@@ -1330,8 +1330,8 @@ static void draw_strips_background(TimelineDrawContext *timeline_ctx,
|
||||
{
|
||||
data.flags |= GPU_SEQ_FLAG_TRANSITION;
|
||||
|
||||
const Sequence *seq1 = strip.seq->seq1;
|
||||
const Sequence *seq2 = strip.seq->seq2;
|
||||
const Strip *seq1 = strip.seq->seq1;
|
||||
const Strip *seq2 = strip.seq->seq2;
|
||||
|
||||
/* Left side. */
|
||||
if (seq1->type == SEQ_TYPE_COLOR) {
|
||||
@@ -1436,8 +1436,8 @@ static void strip_data_highlight_flags_set(const StripDrawContext &strip,
|
||||
const TimelineDrawContext *timeline_ctx,
|
||||
SeqStripDrawData &data)
|
||||
{
|
||||
const Sequence *act_seq = SEQ_select_active_get(timeline_ctx->scene);
|
||||
const Sequence *special_preview = ED_sequencer_special_preview_get();
|
||||
const Strip *act_seq = SEQ_select_active_get(timeline_ctx->scene);
|
||||
const Strip *special_preview = ED_sequencer_special_preview_get();
|
||||
/* Highlight if strip is an input of an active strip, or if the strip is solo preview. */
|
||||
if (act_seq != nullptr && (act_seq->flag & SELECT) != 0) {
|
||||
if (act_seq->seq1 == strip.seq || act_seq->seq2 == strip.seq) {
|
||||
@@ -1685,10 +1685,7 @@ static bool draw_cache_view_init_fn(void * /*userdata*/, size_t item_count)
|
||||
}
|
||||
|
||||
/* Called as a callback */
|
||||
static bool draw_cache_view_iter_fn(void *userdata,
|
||||
Sequence *seq,
|
||||
int timeline_frame,
|
||||
int cache_type)
|
||||
static bool draw_cache_view_iter_fn(void *userdata, Strip *seq, int timeline_frame, int cache_type)
|
||||
{
|
||||
CacheDrawData *drawdata = static_cast<CacheDrawData *>(userdata);
|
||||
const View2D *v2d = drawdata->v2d;
|
||||
@@ -1748,7 +1745,7 @@ static bool draw_cache_view_iter_fn(void *userdata,
|
||||
}
|
||||
|
||||
static void draw_cache_stripe(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
const Strip *seq,
|
||||
SeqQuadsBatch &quads,
|
||||
const float stripe_bot,
|
||||
const float stripe_ht,
|
||||
@@ -1791,10 +1788,10 @@ static void draw_cache_background(const bContext *C, CacheDrawData *draw_data)
|
||||
return;
|
||||
}
|
||||
|
||||
Vector<Sequence *> strips = sequencer_visible_strips_get(C);
|
||||
strips.remove_if([&](Sequence *seq) { return seq->type == SEQ_TYPE_SOUND_RAM; });
|
||||
Vector<Strip *> strips = sequencer_visible_strips_get(C);
|
||||
strips.remove_if([&](Strip *seq) { return seq->type == SEQ_TYPE_SOUND_RAM; });
|
||||
|
||||
for (const Sequence *seq : strips) {
|
||||
for (const Strip *seq : strips) {
|
||||
stripe_bot = seq->machine + SEQ_STRIP_OFSBOTTOM + draw_data->stripe_ofs_y;
|
||||
if (sseq->cache_overlay.flag & SEQ_CACHE_SHOW_RAW) {
|
||||
draw_cache_stripe(scene, seq, *draw_data->quads, stripe_bot, draw_data->stripe_ht, bg_raw);
|
||||
|
||||
@@ -290,7 +290,7 @@ void SEQUENCER_OT_view_zoom_ratio(wmOperatorType *ot)
|
||||
* \{ */
|
||||
|
||||
static void seq_view_collection_rect_preview(Scene *scene,
|
||||
blender::Span<Sequence *> strips,
|
||||
blender::Span<Strip *> strips,
|
||||
rctf *rect)
|
||||
{
|
||||
float min[2], max[2];
|
||||
@@ -313,7 +313,7 @@ static void seq_view_collection_rect_preview(Scene *scene,
|
||||
}
|
||||
|
||||
static void seq_view_collection_rect_timeline(const bContext *C,
|
||||
blender::Span<Sequence *> strips,
|
||||
blender::Span<Strip *> strips,
|
||||
rctf *rect)
|
||||
{
|
||||
const Scene *scene = CTX_data_scene(C);
|
||||
@@ -323,7 +323,7 @@ static void seq_view_collection_rect_timeline(const bContext *C,
|
||||
int ymax = 0;
|
||||
int xmargin = FPS;
|
||||
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
xmin = min_ii(xmin, SEQ_time_left_handle_frame_get(scene, seq));
|
||||
xmax = max_ii(xmax, SEQ_time_right_handle_frame_get(scene, seq));
|
||||
|
||||
|
||||
@@ -624,7 +624,7 @@ static void sequencer_main_region_message_subscribe(const wmRegionMessageSubscri
|
||||
StructRNA *type_array[] = {
|
||||
&RNA_SequenceEditor,
|
||||
|
||||
&RNA_Sequence,
|
||||
&RNA_Strip,
|
||||
/* Members of 'Sequence'. */
|
||||
&RNA_SequenceCrop,
|
||||
&RNA_SequenceTransform,
|
||||
@@ -641,7 +641,7 @@ static void sequencer_main_region_message_subscribe(const wmRegionMessageSubscri
|
||||
}
|
||||
|
||||
static bool is_mouse_over_retiming_key(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
const Strip *seq,
|
||||
const View2D *v2d,
|
||||
const ScrArea *area,
|
||||
float mouse_co_region[2])
|
||||
|
||||
@@ -24,7 +24,7 @@ struct TransData;
|
||||
struct TransDataCurveHandleFlags;
|
||||
struct TransInfo;
|
||||
struct bContext;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
|
||||
namespace blender::bke::crazyspace {
|
||||
struct GeometryDeformation;
|
||||
@@ -379,7 +379,7 @@ extern TransConvertTypeInfo TransConvertType_Sculpt;
|
||||
|
||||
extern TransConvertTypeInfo TransConvertType_Sequencer;
|
||||
|
||||
bool seq_transform_check_overlap(blender::Span<Sequence *> transformed_strips);
|
||||
bool seq_transform_check_overlap(blender::Span<Strip *> transformed_strips);
|
||||
|
||||
/* `transform_convert_sequencer_image.cc` */
|
||||
|
||||
|
||||
@@ -42,8 +42,8 @@
|
||||
|
||||
/** Used for sequencer transform. */
|
||||
struct TransDataSeq {
|
||||
Sequence *seq;
|
||||
/** A copy of #Sequence.flag that may be modified for nested strips. */
|
||||
Strip *seq;
|
||||
/** A copy of #Strip.flag that may be modified for nested strips. */
|
||||
int flag;
|
||||
/** Use this so we can have transform data at the strips start,
|
||||
* but apply correctly to the start frame. */
|
||||
@@ -65,7 +65,7 @@ struct TransSeq {
|
||||
View2DEdgePanData edge_pan;
|
||||
|
||||
/* Strips that aren't selected, but their position entirely depends on transformed strips. */
|
||||
blender::VectorSet<Sequence *> time_dependent_strips;
|
||||
blender::VectorSet<Strip *> time_dependent_strips;
|
||||
};
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
@@ -77,7 +77,7 @@ struct TransSeq {
|
||||
*
|
||||
* count and flag MUST be set.
|
||||
*/
|
||||
static void SeqTransInfo(TransInfo *t, Sequence *seq, int *r_count, int *r_flag)
|
||||
static void SeqTransInfo(TransInfo *t, Strip *seq, int *r_count, int *r_flag)
|
||||
{
|
||||
Scene *scene = t->scene;
|
||||
Editing *ed = SEQ_editing_get(t->scene);
|
||||
@@ -151,7 +151,7 @@ static int SeqTransCount(TransInfo *t, ListBase *seqbase)
|
||||
{
|
||||
int tot = 0, count, flag;
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, seqbase) {
|
||||
SeqTransInfo(t, seq, &count, &flag); /* Ignore the flag. */
|
||||
tot += count;
|
||||
}
|
||||
@@ -163,7 +163,7 @@ static TransData *SeqToTransData(Scene *scene,
|
||||
TransData *td,
|
||||
TransData2D *td2d,
|
||||
TransDataSeq *tdsq,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
int flag,
|
||||
int sel_flag)
|
||||
{
|
||||
@@ -231,7 +231,7 @@ static int SeqToTransData_build(
|
||||
int count, flag;
|
||||
int tot = 0;
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, seqbase) {
|
||||
|
||||
SeqTransInfo(t, seq, &count, &flag);
|
||||
|
||||
@@ -267,11 +267,11 @@ static void free_transform_custom_data(TransCustomData *custom_data)
|
||||
}
|
||||
|
||||
/* Canceled, need to update the strips display. */
|
||||
static void seq_transform_cancel(TransInfo *t, blender::Span<Sequence *> transformed_strips)
|
||||
static void seq_transform_cancel(TransInfo *t, blender::Span<Strip *> transformed_strips)
|
||||
{
|
||||
ListBase *seqbase = SEQ_active_seqbase_get(SEQ_editing_get(t->scene));
|
||||
|
||||
for (Sequence *seq : transformed_strips) {
|
||||
for (Strip *seq : transformed_strips) {
|
||||
/* Handle pre-existing overlapping strips even when operator is canceled.
|
||||
* This is necessary for SEQUENCER_OT_duplicate_move macro for example. */
|
||||
if (SEQ_transform_test_overlap(t->scene, seqbase, seq)) {
|
||||
@@ -286,9 +286,9 @@ static ListBase *seqbase_active_get(const TransInfo *t)
|
||||
return SEQ_active_seqbase_get(ed);
|
||||
}
|
||||
|
||||
bool seq_transform_check_overlap(blender::Span<Sequence *> transformed_strips)
|
||||
bool seq_transform_check_overlap(blender::Span<Strip *> transformed_strips)
|
||||
{
|
||||
for (Sequence *seq : transformed_strips) {
|
||||
for (Strip *seq : transformed_strips) {
|
||||
if (seq->flag & SEQ_OVERLAP) {
|
||||
return true;
|
||||
}
|
||||
@@ -296,13 +296,12 @@ bool seq_transform_check_overlap(blender::Span<Sequence *> transformed_strips)
|
||||
return false;
|
||||
}
|
||||
|
||||
static blender::VectorSet<Sequence *> seq_transform_collection_from_transdata(
|
||||
TransDataContainer *tc)
|
||||
static blender::VectorSet<Strip *> seq_transform_collection_from_transdata(TransDataContainer *tc)
|
||||
{
|
||||
blender::VectorSet<Sequence *> strips;
|
||||
blender::VectorSet<Strip *> strips;
|
||||
TransData *td = tc->data;
|
||||
for (int a = 0; a < tc->data_len; a++, td++) {
|
||||
Sequence *seq = ((TransDataSeq *)td->extra)->seq;
|
||||
Strip *seq = ((TransDataSeq *)td->extra)->seq;
|
||||
strips.add(seq);
|
||||
}
|
||||
return strips;
|
||||
@@ -320,7 +319,7 @@ static void freeSeqData(TransInfo *t, TransDataContainer *tc, TransCustomData *c
|
||||
SEQ_iterator_set_expand(
|
||||
t->scene, seqbase_active_get(t), transformed_strips, SEQ_query_strip_effect_chain);
|
||||
|
||||
for (Sequence *seq : transformed_strips) {
|
||||
for (Strip *seq : transformed_strips) {
|
||||
seq->flag &= ~SEQ_IGNORE_CHANNEL_LOCK;
|
||||
}
|
||||
|
||||
@@ -344,10 +343,10 @@ static void freeSeqData(TransInfo *t, TransDataContainer *tc, TransCustomData *c
|
||||
free_transform_custom_data(custom_data);
|
||||
}
|
||||
|
||||
static blender::VectorSet<Sequence *> query_selected_strips_no_handles(ListBase *seqbase)
|
||||
static blender::VectorSet<Strip *> query_selected_strips_no_handles(ListBase *seqbase)
|
||||
{
|
||||
blender::VectorSet<Sequence *> strips;
|
||||
LISTBASE_FOREACH (Sequence *, seq, seqbase) {
|
||||
blender::VectorSet<Strip *> strips;
|
||||
LISTBASE_FOREACH (Strip *, seq, seqbase) {
|
||||
if ((seq->flag & SELECT) != 0 && ((seq->flag & (SEQ_LEFTSEL | SEQ_RIGHTSEL)) == 0)) {
|
||||
strips.add(seq);
|
||||
}
|
||||
@@ -360,9 +359,9 @@ enum SeqInputSide {
|
||||
SEQ_INPUT_RIGHT = 1,
|
||||
};
|
||||
|
||||
static Sequence *effect_input_get(const Scene *scene, Sequence *effect, SeqInputSide side)
|
||||
static Strip *effect_input_get(const Scene *scene, Strip *effect, SeqInputSide side)
|
||||
{
|
||||
Sequence *input = effect->seq1;
|
||||
Strip *input = effect->seq1;
|
||||
if (effect->seq2 && (SEQ_time_left_handle_frame_get(scene, effect->seq2) -
|
||||
SEQ_time_left_handle_frame_get(scene, effect->seq1)) *
|
||||
side >
|
||||
@@ -373,9 +372,9 @@ static Sequence *effect_input_get(const Scene *scene, Sequence *effect, SeqInput
|
||||
return input;
|
||||
}
|
||||
|
||||
static Sequence *effect_base_input_get(const Scene *scene, Sequence *effect, SeqInputSide side)
|
||||
static Strip *effect_base_input_get(const Scene *scene, Strip *effect, SeqInputSide side)
|
||||
{
|
||||
Sequence *input = effect, *seq_iter = effect;
|
||||
Strip *input = effect, *seq_iter = effect;
|
||||
while (seq_iter != nullptr) {
|
||||
input = seq_iter;
|
||||
seq_iter = effect_input_get(scene, seq_iter, side);
|
||||
@@ -387,8 +386,8 @@ static Sequence *effect_base_input_get(const Scene *scene, Sequence *effect, Seq
|
||||
* Strips that aren't stime_dependent_stripselected, but their position entirely depends on
|
||||
* transformed strips. This collection is used to offset animation.
|
||||
*/
|
||||
static void query_time_dependent_strips_strips(
|
||||
TransInfo *t, blender::VectorSet<Sequence *> &time_dependent_strips)
|
||||
static void query_time_dependent_strips_strips(TransInfo *t,
|
||||
blender::VectorSet<Strip *> &time_dependent_strips)
|
||||
{
|
||||
ListBase *seqbase = seqbase_active_get(t);
|
||||
|
||||
@@ -396,7 +395,7 @@ static void query_time_dependent_strips_strips(
|
||||
* If all inputs of any effect even indirectly(through another effect) points to selected strip,
|
||||
* its position will change. */
|
||||
|
||||
blender::VectorSet<Sequence *> strips_no_handles = query_selected_strips_no_handles(seqbase);
|
||||
blender::VectorSet<Strip *> strips_no_handles = query_selected_strips_no_handles(seqbase);
|
||||
time_dependent_strips.add_multiple(strips_no_handles);
|
||||
|
||||
SEQ_iterator_set_expand(t->scene, seqbase, strips_no_handles, SEQ_query_strip_effect_chain);
|
||||
@@ -405,7 +404,7 @@ static void query_time_dependent_strips_strips(
|
||||
while (strip_added) {
|
||||
strip_added = false;
|
||||
|
||||
for (Sequence *seq : strips_no_handles) {
|
||||
for (Strip *seq : strips_no_handles) {
|
||||
if (time_dependent_strips.contains(seq)) {
|
||||
continue; /* Strip is already in collection, skip it. */
|
||||
}
|
||||
@@ -427,15 +426,15 @@ static void query_time_dependent_strips_strips(
|
||||
|
||||
blender::VectorSet selected_strips = SEQ_query_selected_strips(seqbase);
|
||||
SEQ_iterator_set_expand(t->scene, seqbase, selected_strips, SEQ_query_strip_effect_chain);
|
||||
for (Sequence *seq : selected_strips) {
|
||||
for (Strip *seq : selected_strips) {
|
||||
/* Check only 2 input effects. */
|
||||
if (seq->seq1 == nullptr || seq->seq2 == nullptr) {
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Find immediate base inputs(left and right side). */
|
||||
Sequence *input_left = effect_base_input_get(t->scene, seq, SEQ_INPUT_LEFT);
|
||||
Sequence *input_right = effect_base_input_get(t->scene, seq, SEQ_INPUT_RIGHT);
|
||||
Strip *input_left = effect_base_input_get(t->scene, seq, SEQ_INPUT_LEFT);
|
||||
Strip *input_right = effect_base_input_get(t->scene, seq, SEQ_INPUT_RIGHT);
|
||||
|
||||
if ((input_left->flag & SEQ_RIGHTSEL) != 0 && (input_right->flag & SEQ_LEFTSEL) != 0) {
|
||||
time_dependent_strips.add(seq);
|
||||
@@ -444,7 +443,7 @@ static void query_time_dependent_strips_strips(
|
||||
|
||||
/* Remove all non-effects. */
|
||||
time_dependent_strips.remove_if(
|
||||
[&](Sequence *seq) { return SEQ_transform_sequence_can_be_translated(seq); });
|
||||
[&](Strip *seq) { return SEQ_transform_sequence_can_be_translated(seq); });
|
||||
}
|
||||
|
||||
static void createTransSeqData(bContext * /*C*/, TransInfo *t)
|
||||
@@ -508,7 +507,7 @@ static void createTransSeqData(bContext * /*C*/, TransInfo *t)
|
||||
SeqToTransData_build(t, ed->seqbasep, td, td2d, tdsq);
|
||||
|
||||
ts->selection_channel_range_min = SEQ_MAX_CHANNELS + 1;
|
||||
LISTBASE_FOREACH (Sequence *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
LISTBASE_FOREACH (Strip *, seq, SEQ_active_seqbase_get(ed)) {
|
||||
if ((seq->flag & SELECT) != 0) {
|
||||
ts->selection_channel_range_min = min_ii(ts->selection_channel_range_min, seq->machine);
|
||||
ts->selection_channel_range_max = max_ii(ts->selection_channel_range_max, seq->machine);
|
||||
@@ -563,7 +562,7 @@ static void flushTransSeq(TransInfo *t)
|
||||
TransData *td = nullptr;
|
||||
TransData2D *td2d = nullptr;
|
||||
TransDataSeq *tdsq = nullptr;
|
||||
Sequence *seq;
|
||||
Strip *seq;
|
||||
|
||||
Scene *scene = t->scene;
|
||||
|
||||
@@ -634,7 +633,7 @@ static void flushTransSeq(TransInfo *t)
|
||||
TransSeq *ts = (TransSeq *)TRANS_DATA_CONTAINER_FIRST_SINGLE(t)->custom.type.data;
|
||||
|
||||
/* Update animation for effects. */
|
||||
for (Sequence *seq : ts->time_dependent_strips) {
|
||||
for (Strip *seq : ts->time_dependent_strips) {
|
||||
SEQ_offset_animdata(t->scene, seq, max_offset);
|
||||
}
|
||||
|
||||
@@ -644,7 +643,7 @@ static void flushTransSeq(TransInfo *t)
|
||||
SEQ_iterator_set_expand(
|
||||
t->scene, seqbase_active_get(t), transformed_strips, SEQ_query_strip_effect_chain);
|
||||
|
||||
for (Sequence *seq : transformed_strips) {
|
||||
for (Strip *seq : transformed_strips) {
|
||||
/* Test overlap, displays red outline. */
|
||||
seq->flag &= ~SEQ_OVERLAP;
|
||||
if (SEQ_transform_test_overlap(scene, seqbasep, seq)) {
|
||||
@@ -657,13 +656,13 @@ static void recalcData_sequencer(TransInfo *t)
|
||||
{
|
||||
TransData *td;
|
||||
int a;
|
||||
Sequence *seq_prev = nullptr;
|
||||
Strip *seq_prev = nullptr;
|
||||
|
||||
TransDataContainer *tc = TRANS_DATA_CONTAINER_FIRST_SINGLE(t);
|
||||
|
||||
for (a = 0, td = tc->data; a < tc->data_len; a++, td++) {
|
||||
TransDataSeq *tdsq = (TransDataSeq *)td->extra;
|
||||
Sequence *seq = tdsq->seq;
|
||||
Strip *seq = tdsq->seq;
|
||||
|
||||
if (seq != seq_prev) {
|
||||
SEQ_relations_invalidate_cache_composite(t->scene, seq);
|
||||
@@ -690,8 +689,8 @@ static void special_aftertrans_update__sequencer(bContext * /*C*/, TransInfo *t)
|
||||
transform_mode_edge_seq_slide_use_restore_handle_selection(t))
|
||||
{
|
||||
TransDataContainer *tc = TRANS_DATA_CONTAINER_FIRST_SINGLE(t);
|
||||
blender::VectorSet<Sequence *> strips = seq_transform_collection_from_transdata(tc);
|
||||
for (Sequence *seq : strips) {
|
||||
blender::VectorSet<Strip *> strips = seq_transform_collection_from_transdata(tc);
|
||||
for (Strip *seq : strips) {
|
||||
seq->flag &= ~(SEQ_LEFTSEL | SEQ_RIGHTSEL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
/** Used for sequencer transform. */
|
||||
struct TransDataSeq {
|
||||
Sequence *seq;
|
||||
Strip *seq;
|
||||
float orig_origin_position[2];
|
||||
float orig_translation[2];
|
||||
float orig_scale[2];
|
||||
@@ -41,7 +41,7 @@ struct TransDataSeq {
|
||||
};
|
||||
|
||||
static TransData *SeqToTransData(const Scene *scene,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
TransData *td,
|
||||
TransData2D *td2d,
|
||||
TransDataSeq *tdseq,
|
||||
@@ -123,7 +123,7 @@ static void createTransSeqImageData(bContext * /*C*/, TransInfo *t)
|
||||
ListBase *channels = SEQ_channels_displayed_get(ed);
|
||||
blender::VectorSet strips = SEQ_query_rendered_strips(
|
||||
t->scene, channels, seqbase, t->scene->r.cfra, 0);
|
||||
strips.remove_if([&](Sequence *seq) { return (seq->flag & SELECT) == 0; });
|
||||
strips.remove_if([&](Strip *seq) { return (seq->flag & SELECT) == 0; });
|
||||
|
||||
if (strips.is_empty()) {
|
||||
return;
|
||||
@@ -140,7 +140,7 @@ static void createTransSeqImageData(bContext * /*C*/, TransInfo *t)
|
||||
TransDataSeq *tdseq = static_cast<TransDataSeq *>(
|
||||
MEM_callocN(tc->data_len * sizeof(TransDataSeq), "TransSeq TransDataSeq"));
|
||||
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
/* One `Sequence` needs 3 `TransData` entries - center point placed in image origin, then 2
|
||||
* points offset by 1 in X and Y direction respectively, so rotation and scale can be
|
||||
* calculated from these points. */
|
||||
@@ -220,7 +220,7 @@ static void recalcData_sequencer_image(TransInfo *t)
|
||||
sub_v2_v2(handle_y, origin);
|
||||
|
||||
TransDataSeq *tdseq = static_cast<TransDataSeq *>(td->extra);
|
||||
Sequence *seq = tdseq->seq;
|
||||
Strip *seq = tdseq->seq;
|
||||
StripTransform *transform = seq->data->transform;
|
||||
float mirror[2];
|
||||
SEQ_image_transform_mirror_factor_get(seq, mirror);
|
||||
@@ -268,7 +268,7 @@ static void special_aftertrans_update__sequencer_image(bContext * /*C*/, TransIn
|
||||
|
||||
for (i = 0, td = tc->data, td2d = tc->data_2d; i < tc->data_len; i++, td++, td2d++) {
|
||||
TransDataSeq *tdseq = static_cast<TransDataSeq *>(td->extra);
|
||||
Sequence *seq = tdseq->seq;
|
||||
Strip *seq = tdseq->seq;
|
||||
StripTransform *transform = seq->data->transform;
|
||||
if (t->state == TRANS_CANCEL) {
|
||||
if (t->mode == TFM_ROTATION) {
|
||||
|
||||
@@ -28,13 +28,13 @@
|
||||
|
||||
/** Used for sequencer transform. */
|
||||
typedef struct TransDataSeq {
|
||||
Sequence *seq;
|
||||
Strip *seq;
|
||||
int orig_timeline_frame;
|
||||
int key_index; /* Some actions may need to destroy original data, use index to access it. */
|
||||
} TransDataSeq;
|
||||
|
||||
static TransData *SeqToTransData(const Scene *scene,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
const SeqRetimingKey *key,
|
||||
TransData *td,
|
||||
TransData2D *td2d,
|
||||
@@ -72,19 +72,18 @@ static void freeSeqData(TransInfo *t, TransDataContainer *tc, TransCustomData *
|
||||
|
||||
/* Handle overlapping strips. */
|
||||
|
||||
blender::VectorSet<Sequence *> transformed_strips;
|
||||
blender::VectorSet<Strip *> transformed_strips;
|
||||
for (int i = 0; i < tc->data_len; i++) {
|
||||
Sequence *seq = ((TransDataSeq *)(td + i)->extra)->seq;
|
||||
Strip *seq = ((TransDataSeq *)(td + i)->extra)->seq;
|
||||
transformed_strips.add(seq);
|
||||
}
|
||||
|
||||
ListBase *seqbasep = SEQ_active_seqbase_get(ed);
|
||||
SEQ_iterator_set_expand(scene, seqbasep, transformed_strips, SEQ_query_strip_effect_chain);
|
||||
|
||||
blender::VectorSet<Sequence *> dependant;
|
||||
blender::VectorSet<Strip *> dependant;
|
||||
dependant.add_multiple(transformed_strips);
|
||||
dependant.remove_if(
|
||||
[&](Sequence *seq) { return SEQ_transform_sequence_can_be_translated(seq); });
|
||||
dependant.remove_if([&](Strip *seq) { return SEQ_transform_sequence_can_be_translated(seq); });
|
||||
|
||||
if (seq_transform_check_overlap(transformed_strips)) {
|
||||
const bool use_sync_markers = (((SpaceSeq *)t->area->spacedata.first)->flag &
|
||||
@@ -130,11 +129,11 @@ static void recalcData_sequencer_retiming(TransInfo *t)
|
||||
const TransData2D *td2d = nullptr;
|
||||
int i;
|
||||
|
||||
blender::VectorSet<Sequence *> transformed_strips;
|
||||
blender::VectorSet<Strip *> transformed_strips;
|
||||
|
||||
for (i = 0, td = tc->data, td2d = tc->data_2d; i < tc->data_len; i++, td++, td2d++) {
|
||||
const TransDataSeq *tdseq = static_cast<TransDataSeq *>(td->extra);
|
||||
Sequence *seq = tdseq->seq;
|
||||
Strip *seq = tdseq->seq;
|
||||
|
||||
transformed_strips.add(seq);
|
||||
|
||||
@@ -159,7 +158,7 @@ static void recalcData_sequencer_retiming(TransInfo *t)
|
||||
Editing *ed = SEQ_editing_get(t->scene);
|
||||
SEQ_iterator_set_expand(
|
||||
t->scene, SEQ_active_seqbase_get(ed), transformed_strips, SEQ_query_strip_effect_chain);
|
||||
for (Sequence *seq : transformed_strips) {
|
||||
for (Strip *seq : transformed_strips) {
|
||||
seq->flag &= ~SEQ_OVERLAP;
|
||||
if (SEQ_transform_test_overlap(t->scene, SEQ_active_seqbase_get(ed), seq)) {
|
||||
seq->flag |= SEQ_OVERLAP;
|
||||
|
||||
@@ -251,7 +251,7 @@ static bool gizmo2d_calc_bounds(const bContext *C, float *r_center, float *r_min
|
||||
ListBase *channels = SEQ_channels_displayed_get(ed);
|
||||
blender::VectorSet strips = SEQ_query_rendered_strips(
|
||||
scene, channels, seqbase, scene->r.cfra, 0);
|
||||
strips.remove_if([&](Sequence *seq) { return (seq->flag & SELECT) == 0; });
|
||||
strips.remove_if([&](Strip *seq) { return (seq->flag & SELECT) == 0; });
|
||||
int selected_strips = strips.size();
|
||||
if (selected_strips > 0) {
|
||||
has_select = true;
|
||||
@@ -303,7 +303,7 @@ static int gizmo2d_calc_transform_orientation(const bContext *C)
|
||||
ListBase *channels = SEQ_channels_displayed_get(ed);
|
||||
blender::VectorSet strips = SEQ_query_rendered_strips(
|
||||
scene, channels, seqbase, scene->r.cfra, 0);
|
||||
strips.remove_if([&](Sequence *seq) { return (seq->flag & SELECT) == 0; });
|
||||
strips.remove_if([&](Strip *seq) { return (seq->flag & SELECT) == 0; });
|
||||
|
||||
bool use_local_orient = strips.size() == 1;
|
||||
|
||||
@@ -326,11 +326,11 @@ static float gizmo2d_calc_rotation(const bContext *C)
|
||||
ListBase *channels = SEQ_channels_displayed_get(ed);
|
||||
blender::VectorSet strips = SEQ_query_rendered_strips(
|
||||
scene, channels, seqbase, scene->r.cfra, 0);
|
||||
strips.remove_if([&](Sequence *seq) { return (seq->flag & SELECT) == 0; });
|
||||
strips.remove_if([&](Strip *seq) { return (seq->flag & SELECT) == 0; });
|
||||
|
||||
if (strips.size() == 1) {
|
||||
/* Only return the strip rotation if only one is selected. */
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
StripTransform *transform = seq->data->transform;
|
||||
float mirror[2];
|
||||
SEQ_image_transform_mirror_factor_get(seq, mirror);
|
||||
@@ -350,11 +350,11 @@ static bool seq_get_strip_pivot_median(const Scene *scene, float r_pivot[2])
|
||||
ListBase *channels = SEQ_channels_displayed_get(ed);
|
||||
blender::VectorSet strips = SEQ_query_rendered_strips(
|
||||
scene, channels, seqbase, scene->r.cfra, 0);
|
||||
strips.remove_if([&](Sequence *seq) { return (seq->flag & SELECT) == 0; });
|
||||
strips.remove_if([&](Strip *seq) { return (seq->flag & SELECT) == 0; });
|
||||
bool has_select = !strips.is_empty();
|
||||
|
||||
if (has_select) {
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
float origin[2];
|
||||
SEQ_image_transform_origin_offset_pixelspace_get(scene, seq, origin);
|
||||
add_v2_v2(r_pivot, origin);
|
||||
@@ -388,7 +388,7 @@ static bool gizmo2d_calc_transform_pivot(const bContext *C, float r_pivot[2])
|
||||
ListBase *channels = SEQ_channels_displayed_get(ed);
|
||||
blender::VectorSet strips = SEQ_query_rendered_strips(
|
||||
scene, channels, seqbase, scene->r.cfra, 0);
|
||||
strips.remove_if([&](Sequence *seq) { return (seq->flag & SELECT) == 0; });
|
||||
strips.remove_if([&](Strip *seq) { return (seq->flag & SELECT) == 0; });
|
||||
has_select = !strips.is_empty();
|
||||
}
|
||||
else if (pivot_point == V3D_AROUND_CENTER_BOUNDS) {
|
||||
|
||||
@@ -295,7 +295,7 @@ static void calcSpringFactor(MouseInput *mi)
|
||||
}
|
||||
}
|
||||
|
||||
static int transform_seq_slide_strip_cursor_get(const Sequence *seq)
|
||||
static int transform_seq_slide_strip_cursor_get(const Strip *seq)
|
||||
{
|
||||
if ((seq->flag & SEQ_LEFTSEL) != 0) {
|
||||
return WM_CURSOR_LEFT_HANDLE;
|
||||
@@ -313,18 +313,18 @@ static int transform_seq_slide_cursor_get(TransInfo *t)
|
||||
}
|
||||
|
||||
const Scene *scene = t->scene;
|
||||
blender::VectorSet<Sequence *> strips = ED_sequencer_selected_strips_from_context(t->context);
|
||||
blender::VectorSet<Strip *> strips = ED_sequencer_selected_strips_from_context(t->context);
|
||||
|
||||
if (strips.size() == 1) {
|
||||
return transform_seq_slide_strip_cursor_get(strips[0]);
|
||||
}
|
||||
if (strips.size() == 2) {
|
||||
Sequence *seq1 = strips[0];
|
||||
Sequence *seq2 = strips[1];
|
||||
Strip *seq1 = strips[0];
|
||||
Strip *seq2 = strips[1];
|
||||
|
||||
if (SEQ_time_left_handle_frame_get(scene, seq1) > SEQ_time_left_handle_frame_get(scene, seq2))
|
||||
{
|
||||
SWAP(Sequence *, seq1, seq2);
|
||||
SWAP(Strip *, seq1, seq2);
|
||||
}
|
||||
|
||||
if (seq1->machine != seq2->machine) {
|
||||
|
||||
@@ -735,7 +735,7 @@ short transform_orientation_matrix_get(bContext *C,
|
||||
|
||||
if (t->spacetype == SPACE_SEQ && t->options & CTX_SEQUENCER_IMAGE) {
|
||||
Scene *scene = t->scene;
|
||||
Sequence *seq = SEQ_select_active_get(scene);
|
||||
Strip *seq = SEQ_select_active_get(scene);
|
||||
if (seq && seq->data->transform && orient_index == V3D_ORIENT_LOCAL) {
|
||||
axis_angle_to_mat3_single(r_spacemtx, 'Z', seq->data->transform->rotation);
|
||||
return orient_index;
|
||||
|
||||
@@ -47,41 +47,41 @@ struct TransSeqSnapData {
|
||||
/** \name Snap sources
|
||||
* \{ */
|
||||
|
||||
static blender::VectorSet<Sequence *> query_snap_sources_timeline(
|
||||
const Scene *scene, blender::Map<SeqRetimingKey *, Sequence *> &retiming_selection)
|
||||
static blender::VectorSet<Strip *> query_snap_sources_timeline(
|
||||
const Scene *scene, blender::Map<SeqRetimingKey *, Strip *> &retiming_selection)
|
||||
{
|
||||
blender::VectorSet<Sequence *> snap_sources;
|
||||
blender::VectorSet<Strip *> snap_sources;
|
||||
|
||||
ListBase *seqbase = SEQ_active_seqbase_get(SEQ_editing_get(scene));
|
||||
snap_sources = SEQ_query_selected_strips(seqbase);
|
||||
|
||||
/* Add strips owned by retiming keys to exclude these from targets */
|
||||
for (Sequence *seq : retiming_selection.values()) {
|
||||
for (Strip *seq : retiming_selection.values()) {
|
||||
snap_sources.add(seq);
|
||||
}
|
||||
|
||||
return snap_sources;
|
||||
}
|
||||
|
||||
static blender::VectorSet<Sequence *> query_snap_sources_preview(const Scene *scene)
|
||||
static blender::VectorSet<Strip *> query_snap_sources_preview(const Scene *scene)
|
||||
{
|
||||
blender::VectorSet<Sequence *> snap_sources;
|
||||
blender::VectorSet<Strip *> snap_sources;
|
||||
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
ListBase *channels = SEQ_channels_displayed_get(ed);
|
||||
|
||||
snap_sources = SEQ_query_rendered_strips(scene, channels, ed->seqbasep, scene->r.cfra, 0);
|
||||
snap_sources.remove_if([&](Sequence *seq) { return (seq->flag & SELECT) == 0; });
|
||||
snap_sources.remove_if([&](Strip *seq) { return (seq->flag & SELECT) == 0; });
|
||||
|
||||
return snap_sources;
|
||||
}
|
||||
|
||||
static int seq_get_snap_source_points_count_timeline(const blender::Span<Sequence *> snap_sources)
|
||||
static int seq_get_snap_source_points_count_timeline(const blender::Span<Strip *> snap_sources)
|
||||
{
|
||||
return snap_sources.size() * 2;
|
||||
}
|
||||
|
||||
static int seq_get_snap_source_points_count_preview(const blender::Span<Sequence *> snap_sources)
|
||||
static int seq_get_snap_source_points_count_preview(const blender::Span<Strip *> snap_sources)
|
||||
{
|
||||
/* Source points are four corners and the center of an image quad. */
|
||||
return snap_sources.size() * 5;
|
||||
@@ -92,8 +92,9 @@ static int cmp_fn(const void *a, const void *b)
|
||||
return round_fl_to_int((*(blender::float2 *)a)[0] - (*(blender::float2 *)b)[0]);
|
||||
}
|
||||
|
||||
static void seq_snap_source_points_build_timeline_strips(
|
||||
const Scene *scene, TransSeqSnapData *snap_data, const blender::Span<Sequence *> snap_sources)
|
||||
static void seq_snap_source_points_build_timeline_strips(const Scene *scene,
|
||||
TransSeqSnapData *snap_data,
|
||||
const blender::Span<Strip *> snap_sources)
|
||||
{
|
||||
|
||||
const size_t point_count_source = seq_get_snap_source_points_count_timeline(snap_sources);
|
||||
@@ -103,7 +104,7 @@ static void seq_snap_source_points_build_timeline_strips(
|
||||
|
||||
snap_data->source_snap_points.reinitialize(point_count_source);
|
||||
int i = 0;
|
||||
for (Sequence *seq : snap_sources) {
|
||||
for (Strip *seq : snap_sources) {
|
||||
int left = 0, right = 0;
|
||||
if (seq->flag & SEQ_LEFTSEL && !(seq->flag & SEQ_RIGHTSEL)) {
|
||||
left = right = SEQ_time_left_handle_frame_get(scene, seq);
|
||||
@@ -132,7 +133,7 @@ static void seq_snap_source_points_build_timeline_strips(
|
||||
static void seq_snap_source_points_build_timeline_retiming(
|
||||
const Scene *scene,
|
||||
TransSeqSnapData *snap_data,
|
||||
const blender::Map<SeqRetimingKey *, Sequence *> &retiming_selection)
|
||||
const blender::Map<SeqRetimingKey *, Strip *> &retiming_selection)
|
||||
{
|
||||
|
||||
const size_t point_count_source = retiming_selection.size();
|
||||
@@ -156,7 +157,7 @@ static void seq_snap_source_points_build_timeline_retiming(
|
||||
|
||||
static bool seq_snap_source_points_build_preview(const Scene *scene,
|
||||
TransSeqSnapData *snap_data,
|
||||
const blender::Span<Sequence *> snap_sources)
|
||||
const blender::Span<Strip *> snap_sources)
|
||||
{
|
||||
|
||||
const size_t point_count_source = seq_get_snap_source_points_count_preview(snap_sources);
|
||||
@@ -166,7 +167,7 @@ static bool seq_snap_source_points_build_preview(const Scene *scene,
|
||||
|
||||
snap_data->source_snap_points.reinitialize(point_count_source);
|
||||
int i = 0;
|
||||
for (Sequence *seq : snap_sources) {
|
||||
for (Strip *seq : snap_sources) {
|
||||
float seq_image_quad[4][2];
|
||||
SEQ_image_transform_final_quad_get(scene, seq, seq_image_quad);
|
||||
|
||||
@@ -197,9 +198,9 @@ static bool seq_snap_source_points_build_preview(const Scene *scene,
|
||||
|
||||
/* Add effect strips directly or indirectly connected to `seq_reference` to `collection`. */
|
||||
static void query_strip_effects_fn(const Scene *scene,
|
||||
Sequence *seq_reference,
|
||||
Strip *seq_reference,
|
||||
ListBase *seqbase,
|
||||
blender::VectorSet<Sequence *> &strips)
|
||||
blender::VectorSet<Strip *> &strips)
|
||||
{
|
||||
if (strips.contains(seq_reference)) {
|
||||
return; /* Strip is already in set, so all effects connected to it are as well. */
|
||||
@@ -207,15 +208,15 @@ static void query_strip_effects_fn(const Scene *scene,
|
||||
strips.add(seq_reference);
|
||||
|
||||
/* Find all strips connected to `seq_reference`. */
|
||||
LISTBASE_FOREACH (Sequence *, seq_test, seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq_test, seqbase) {
|
||||
if (SEQ_relation_is_effect_of_strip(seq_test, seq_reference)) {
|
||||
query_strip_effects_fn(scene, seq_test, seqbase, strips);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static blender::VectorSet<Sequence *> query_snap_targets_timeline(
|
||||
Scene *scene, const blender::Span<Sequence *> snap_sources, const bool exclude_selected)
|
||||
static blender::VectorSet<Strip *> query_snap_targets_timeline(
|
||||
Scene *scene, const blender::Span<Strip *> snap_sources, const bool exclude_selected)
|
||||
{
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
ListBase *seqbase = SEQ_active_seqbase_get(ed);
|
||||
@@ -226,12 +227,12 @@ static blender::VectorSet<Sequence *> query_snap_targets_timeline(
|
||||
* have to be selected. Remove such strips from `snap_targets` collection. */
|
||||
blender::VectorSet effects_of_snap_sources = snap_sources;
|
||||
SEQ_iterator_set_expand(scene, seqbase, effects_of_snap_sources, query_strip_effects_fn);
|
||||
effects_of_snap_sources.remove_if([&](Sequence *seq) {
|
||||
effects_of_snap_sources.remove_if([&](Strip *seq) {
|
||||
return (seq->type & SEQ_TYPE_EFFECT) != 0 && SEQ_effect_get_num_inputs(seq->type) == 0;
|
||||
});
|
||||
|
||||
blender::VectorSet<Sequence *> snap_targets;
|
||||
LISTBASE_FOREACH (Sequence *, seq, seqbase) {
|
||||
blender::VectorSet<Strip *> snap_targets;
|
||||
LISTBASE_FOREACH (Strip *, seq, seqbase) {
|
||||
if (exclude_selected && seq->flag & SELECT) {
|
||||
continue; /* Selected are being transformed if there is no drag and drop. */
|
||||
}
|
||||
@@ -251,10 +252,9 @@ static blender::VectorSet<Sequence *> query_snap_targets_timeline(
|
||||
return snap_targets;
|
||||
}
|
||||
|
||||
static blender::VectorSet<Sequence *> query_snap_targets_preview(Scene *scene,
|
||||
const short snap_mode)
|
||||
static blender::VectorSet<Strip *> query_snap_targets_preview(Scene *scene, const short snap_mode)
|
||||
{
|
||||
blender::VectorSet<Sequence *> snap_targets;
|
||||
blender::VectorSet<Strip *> snap_targets;
|
||||
|
||||
/* We don't need to calculate strip snap targets if the option is unselected. */
|
||||
if ((snap_mode & SEQ_SNAP_TO_STRIPS_PREVIEW) == 0) {
|
||||
@@ -265,17 +265,17 @@ static blender::VectorSet<Sequence *> query_snap_targets_preview(Scene *scene,
|
||||
ListBase *channels = SEQ_channels_displayed_get(ed);
|
||||
|
||||
snap_targets = SEQ_query_rendered_strips(scene, channels, ed->seqbasep, scene->r.cfra, 0);
|
||||
snap_targets.remove_if([&](Sequence *seq) { return (seq->flag & SELECT) == 1; });
|
||||
snap_targets.remove_if([&](Strip *seq) { return (seq->flag & SELECT) == 1; });
|
||||
|
||||
return snap_targets;
|
||||
}
|
||||
|
||||
static blender::Map<SeqRetimingKey *, Sequence *> visible_retiming_keys_get(
|
||||
const Scene *scene, blender::Span<Sequence *> snap_strip_targets)
|
||||
static blender::Map<SeqRetimingKey *, Strip *> visible_retiming_keys_get(
|
||||
const Scene *scene, blender::Span<Strip *> snap_strip_targets)
|
||||
{
|
||||
blender::Map<SeqRetimingKey *, Sequence *> visible_keys;
|
||||
blender::Map<SeqRetimingKey *, Strip *> visible_keys;
|
||||
|
||||
for (Sequence *seq : snap_strip_targets) {
|
||||
for (Strip *seq : snap_strip_targets) {
|
||||
for (SeqRetimingKey &key : SEQ_retiming_keys_get(seq)) {
|
||||
const int key_frame = SEQ_retiming_key_timeline_frame_get(scene, seq, &key);
|
||||
if (SEQ_time_strip_intersects_frame(scene, seq, key_frame)) {
|
||||
@@ -290,8 +290,8 @@ static blender::Map<SeqRetimingKey *, Sequence *> visible_retiming_keys_get(
|
||||
static int seq_get_snap_target_points_count_timeline(
|
||||
const Scene *scene,
|
||||
const short snap_mode,
|
||||
const blender::Span<Sequence *> snap_strip_targets,
|
||||
const blender::Map<SeqRetimingKey *, Sequence *> &retiming_targets)
|
||||
const blender::Span<Strip *> snap_strip_targets,
|
||||
const blender::Map<SeqRetimingKey *, Strip *> &retiming_targets)
|
||||
{
|
||||
int count = 0;
|
||||
|
||||
@@ -320,7 +320,7 @@ static int seq_get_snap_target_points_count_timeline(
|
||||
}
|
||||
|
||||
static int seq_get_snap_target_points_count_preview(const short snap_mode,
|
||||
const blender::Span<Sequence *> snap_targets)
|
||||
const blender::Span<Strip *> snap_targets)
|
||||
{
|
||||
int count = 0;
|
||||
|
||||
@@ -344,7 +344,7 @@ static int seq_get_snap_target_points_count_preview(const short snap_mode,
|
||||
static void seq_snap_target_points_build_timeline(const Scene *scene,
|
||||
const short snap_mode,
|
||||
TransSeqSnapData *snap_data,
|
||||
const blender::Span<Sequence *> strip_targets)
|
||||
const blender::Span<Strip *> strip_targets)
|
||||
{
|
||||
blender::Map retiming_key_targets = visible_retiming_keys_get(scene, strip_targets);
|
||||
|
||||
@@ -369,7 +369,7 @@ static void seq_snap_target_points_build_timeline(const Scene *scene,
|
||||
}
|
||||
}
|
||||
|
||||
for (Sequence *seq : strip_targets) {
|
||||
for (Strip *seq : strip_targets) {
|
||||
snap_data->target_snap_points[i][0] = SEQ_time_left_handle_frame_get(scene, seq);
|
||||
snap_data->target_snap_points[i + 1][0] = SEQ_time_right_handle_frame_get(scene, seq);
|
||||
i += 2;
|
||||
@@ -416,7 +416,7 @@ static bool seq_snap_target_points_build_preview(const Scene *scene,
|
||||
const View2D *v2d,
|
||||
const short snap_mode,
|
||||
TransSeqSnapData *snap_data,
|
||||
const blender::Span<Sequence *> snap_targets)
|
||||
const blender::Span<Strip *> snap_targets)
|
||||
{
|
||||
|
||||
const size_t point_count_target = seq_get_snap_target_points_count_preview(snap_mode,
|
||||
@@ -446,7 +446,7 @@ static bool seq_snap_target_points_build_preview(const Scene *scene,
|
||||
}
|
||||
|
||||
if (snap_mode & SEQ_SNAP_TO_STRIPS_PREVIEW) {
|
||||
for (Sequence *seq : snap_targets) {
|
||||
for (Strip *seq : snap_targets) {
|
||||
float seq_image_quad[4][2];
|
||||
SEQ_image_transform_final_quad_get(scene, seq, seq_image_quad);
|
||||
|
||||
@@ -497,9 +497,9 @@ static TransSeqSnapData *transform_snap_sequencer_data_alloc_timeline_strips(con
|
||||
short snap_mode = t->tsnap.mode;
|
||||
|
||||
blender::Map retiming_selection = SEQ_retiming_selection_get(SEQ_editing_get(scene));
|
||||
blender::VectorSet<Sequence *> snap_sources = query_snap_sources_timeline(scene,
|
||||
retiming_selection);
|
||||
blender::VectorSet<Sequence *> snap_targets = query_snap_targets_timeline(
|
||||
blender::VectorSet<Strip *> snap_sources = query_snap_sources_timeline(scene,
|
||||
retiming_selection);
|
||||
blender::VectorSet<Strip *> snap_targets = query_snap_targets_timeline(
|
||||
scene, snap_sources, true);
|
||||
|
||||
/* Build arrays of snap points. */
|
||||
@@ -527,8 +527,8 @@ static TransSeqSnapData *transform_snap_sequencer_data_alloc_preview(const Trans
|
||||
short snap_mode = t->tsnap.mode;
|
||||
View2D *v2d = &t->region->v2d;
|
||||
|
||||
blender::VectorSet<Sequence *> snap_sources = query_snap_sources_preview(scene);
|
||||
blender::VectorSet<Sequence *> snap_targets = query_snap_targets_preview(scene, snap_mode);
|
||||
blender::VectorSet<Strip *> snap_sources = query_snap_sources_preview(scene);
|
||||
blender::VectorSet<Strip *> snap_targets = query_snap_targets_preview(scene, snap_mode);
|
||||
|
||||
/* Build arrays of snap points. */
|
||||
if (!seq_snap_source_points_build_preview(scene, snap_data, snap_sources) ||
|
||||
@@ -667,9 +667,8 @@ static int transform_snap_sequencer_to_closest_strip_ex(TransInfo *t,
|
||||
Scene *scene = t->scene;
|
||||
TransSeqSnapData *snap_data = MEM_new<TransSeqSnapData>(__func__);
|
||||
|
||||
blender::VectorSet<Sequence *> empty_col;
|
||||
blender::VectorSet<Sequence *> snap_targets = query_snap_targets_timeline(
|
||||
scene, empty_col, false);
|
||||
blender::VectorSet<Strip *> empty_col;
|
||||
blender::VectorSet<Strip *> snap_targets = query_snap_targets_timeline(scene, empty_col, false);
|
||||
|
||||
BLI_assert(frame_1 <= frame_2);
|
||||
snap_data->source_snap_points.reinitialize(2);
|
||||
|
||||
@@ -1285,7 +1285,7 @@ static void colormanage_check_colorspace_settings(
|
||||
(void)what;
|
||||
}
|
||||
|
||||
static bool seq_callback(Sequence *seq, void * /*user_data*/)
|
||||
static bool seq_callback(Strip *seq, void * /*user_data*/)
|
||||
{
|
||||
if (seq->data) {
|
||||
colormanage_check_colorspace_settings(&seq->data->colorspace_settings, "sequencer strip");
|
||||
|
||||
@@ -363,7 +363,7 @@ enum {
|
||||
LIBOVERRIDE_FLAG_SYSTEM_DEFINED = 1 << 1,
|
||||
};
|
||||
|
||||
/* watch it: Sequence has identical beginning. */
|
||||
/* watch it: Strip has identical beginning. */
|
||||
/**
|
||||
* ID is the first thing included in all serializable types. It
|
||||
* provides a common handle to place all data in double-linked lists.
|
||||
|
||||
@@ -327,7 +327,7 @@ enum {
|
||||
SCE_VIEWS_FORMAT_MULTIVIEW = 1,
|
||||
};
|
||||
|
||||
/** #ImageFormatData::views_format (also used for #Sequence::views_format). */
|
||||
/** #ImageFormatData::views_format (also used for #Strip::views_format). */
|
||||
enum {
|
||||
R_IMF_VIEWS_INDIVIDUAL = 0,
|
||||
R_IMF_VIEWS_STEREO_3D = 1,
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
* Structs for use by the 'Sequencer' (Video Editor)
|
||||
*
|
||||
* Note on terminology
|
||||
* - #Sequence: video/effect/audio data you can select and manipulate in the sequencer.
|
||||
* - #Sequence.machine: Strange name for the channel.
|
||||
* - #StripData: The data referenced by the #Sequence
|
||||
* - #Strip: video/effect/audio data you can select and manipulate in the sequencer.
|
||||
* - #Strip.machine: Strange name for the channel.
|
||||
* - #StripData: The data referenced by the #Strip
|
||||
* - Meta Strip (SEQ_TYPE_META): Support for nesting Sequences.
|
||||
*/
|
||||
|
||||
@@ -44,7 +44,7 @@ typedef struct TextVarsRuntime TextVarsRuntime;
|
||||
#endif
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name Sequence & Editing Structs
|
||||
/** \name Strip & Editing Structs
|
||||
* \{ */
|
||||
|
||||
/* strlens; 256= FILE_MAXFILE, 768= FILE_MAXDIR */
|
||||
@@ -164,11 +164,9 @@ typedef struct SequenceRuntime {
|
||||
* \warning The first part identical to ID (for use in ipo's)
|
||||
* the comment above is historic, probably we can drop the ID compatibility,
|
||||
* but take care making this change.
|
||||
*
|
||||
* \warning This is really a 'Strip' in the UI!, name is highly confusing.
|
||||
*/
|
||||
typedef struct Sequence {
|
||||
struct Sequence *next, *prev;
|
||||
typedef struct Strip {
|
||||
struct Strip *next, *prev;
|
||||
void *_pad;
|
||||
/** Needed (to be like ipo), else it will raise libdata warnings, this should never be used. */
|
||||
void *lib;
|
||||
@@ -231,7 +229,7 @@ typedef struct Sequence {
|
||||
float speed_fader;
|
||||
|
||||
/* pointers for effects: */
|
||||
struct Sequence *seq1, *seq2;
|
||||
struct Strip *seq1, *seq2;
|
||||
|
||||
/* This strange padding is needed due to how `seqbasep` de-serialization is
|
||||
* done right now in #scene_blend_read_data. */
|
||||
@@ -301,13 +299,13 @@ typedef struct Sequence {
|
||||
char _pad6[4];
|
||||
|
||||
SequenceRuntime runtime;
|
||||
} Sequence;
|
||||
} Strip;
|
||||
|
||||
typedef struct MetaStack {
|
||||
struct MetaStack *next, *prev;
|
||||
ListBase *oldbasep;
|
||||
ListBase *old_channels;
|
||||
Sequence *parseq;
|
||||
Strip *parseq;
|
||||
/* the startdisp/enddisp when entering the meta */
|
||||
int disp_range[2];
|
||||
} MetaStack;
|
||||
@@ -321,7 +319,7 @@ typedef struct SeqTimelineChannel {
|
||||
|
||||
typedef struct SeqConnection {
|
||||
struct SeqConnection *next, *prev;
|
||||
Sequence *seq_ref;
|
||||
Strip *seq_ref;
|
||||
} SeqConnection;
|
||||
|
||||
typedef struct EditingRuntime {
|
||||
@@ -342,7 +340,7 @@ typedef struct Editing {
|
||||
ListBase channels; /* SeqTimelineChannel */
|
||||
|
||||
/* Context vars, used to be static */
|
||||
Sequence *act_seq;
|
||||
Strip *act_seq;
|
||||
/** 1024 = FILE_MAX. */
|
||||
char act_imagedir[1024];
|
||||
/** 1024 = FILE_MAX. */
|
||||
@@ -504,7 +502,7 @@ typedef struct ColorMixVars {
|
||||
/** \} */
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name Sequence Modifiers
|
||||
/** \name Strip Modifiers
|
||||
* \{ */
|
||||
|
||||
typedef struct SequenceModifierData {
|
||||
@@ -517,7 +515,7 @@ typedef struct SequenceModifierData {
|
||||
int mask_input_type;
|
||||
int mask_time;
|
||||
|
||||
struct Sequence *mask_sequence;
|
||||
struct Strip *mask_sequence;
|
||||
struct Mask *mask_id;
|
||||
} SequenceModifierData;
|
||||
|
||||
@@ -630,7 +628,7 @@ enum {
|
||||
/* From: `DNA_object_types.h`, see it's doc-string there. */
|
||||
#define SELECT 1
|
||||
|
||||
/** #Sequence.flag */
|
||||
/** #Strip.flag */
|
||||
enum {
|
||||
/* `SELECT = (1 << 0)` */
|
||||
SEQ_LEFTSEL = (1 << 1),
|
||||
@@ -718,14 +716,14 @@ enum {
|
||||
SEQ_PROXY_SKIP_EXISTING = 1,
|
||||
};
|
||||
|
||||
/** #Sequence.alpha_mode */
|
||||
/** #Strip.alpha_mode */
|
||||
enum {
|
||||
SEQ_ALPHA_STRAIGHT = 0,
|
||||
SEQ_ALPHA_PREMUL = 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* #Sequence.type
|
||||
* #Strip.type
|
||||
*
|
||||
* \warning #SEQ_TYPE_EFFECT BIT is used to determine if this is an effect strip!
|
||||
*/
|
||||
@@ -834,7 +832,7 @@ enum {
|
||||
};
|
||||
|
||||
/**
|
||||
* #Sequence.cache_flag
|
||||
* #Strip.cache_flag
|
||||
* - #SEQ_CACHE_STORE_RAW
|
||||
* - #SEQ_CACHE_STORE_PREPROCESSED
|
||||
* - #SEQ_CACHE_STORE_COMPOSITE
|
||||
@@ -865,7 +863,7 @@ enum {
|
||||
SEQ_CACHE_DISK_CACHE_ENABLE = (1 << 11),
|
||||
};
|
||||
|
||||
/** #Sequence.color_tag. */
|
||||
/** #Strip.color_tag. */
|
||||
typedef enum SequenceColorTag {
|
||||
SEQUENCE_COLOR_NONE = -1,
|
||||
SEQUENCE_COLOR_01,
|
||||
@@ -881,7 +879,7 @@ typedef enum SequenceColorTag {
|
||||
SEQUENCE_COLOR_TOT,
|
||||
} SequenceColorTag;
|
||||
|
||||
/* Sequence->StripTransform->filter */
|
||||
/* Strip->StripTransform->filter */
|
||||
enum {
|
||||
SEQ_TRANSFORM_FILTER_AUTO = -1,
|
||||
SEQ_TRANSFORM_FILTER_NEAREST = 0,
|
||||
|
||||
@@ -630,7 +630,7 @@ typedef struct SequencerTimelineOverlay {
|
||||
typedef enum eSpaceSeq_SequencerTimelineOverlay_Flag {
|
||||
SEQ_TIMELINE_SHOW_STRIP_OFFSETS = (1 << 1),
|
||||
SEQ_TIMELINE_SHOW_THUMBNAILS = (1 << 2),
|
||||
/** Use #Sequence::color_tag */
|
||||
/** Use #Strip::color_tag */
|
||||
SEQ_TIMELINE_SHOW_STRIP_COLOR_TAG = (1 << 3),
|
||||
SEQ_TIMELINE_SHOW_STRIP_RETIMING = (1 << 4),
|
||||
SEQ_TIMELINE_SHOW_FCURVES = (1 << 5),
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
DNA_STRUCT_RENAME(ActionChannelBag, ActionChannelbag)
|
||||
DNA_STRUCT_RENAME(Lamp, Light)
|
||||
DNA_STRUCT_RENAME(SeqRetimingHandle, SeqRetimingKey)
|
||||
DNA_STRUCT_RENAME(Sequence, Strip)
|
||||
DNA_STRUCT_RENAME(SpaceButs, SpaceProperties)
|
||||
DNA_STRUCT_RENAME(SpaceIpo, SpaceGraph)
|
||||
DNA_STRUCT_RENAME(SpaceOops, SpaceOutliner)
|
||||
@@ -187,11 +188,11 @@ DNA_STRUCT_RENAME_MEMBER(SceneEEVEE, gtao_quality, fast_gi_quality)
|
||||
DNA_STRUCT_RENAME_MEMBER(SceneEEVEE, motion_blur_position, motion_blur_position_deprecated)
|
||||
DNA_STRUCT_RENAME_MEMBER(SceneEEVEE, motion_blur_shutter, motion_blur_shutter_deprecated)
|
||||
DNA_STRUCT_RENAME_MEMBER(SceneEEVEE, shadow_cube_size, shadow_cube_size_deprecated)
|
||||
DNA_STRUCT_RENAME_MEMBER(Sequence, retiming_handle_num, retiming_keys_num)
|
||||
DNA_STRUCT_RENAME_MEMBER(Sequence, retiming_handles, retiming_keys)
|
||||
DNA_STRUCT_RENAME_MEMBER(Sequence, strip, data)
|
||||
DNA_STRUCT_RENAME_MEMBER(SpaceImage, pixel_snap_mode, pixel_round_mode)
|
||||
DNA_STRUCT_RENAME_MEMBER(SpaceSeq, overlay_type, overlay_frame_type)
|
||||
DNA_STRUCT_RENAME_MEMBER(Strip, retiming_handle_num, retiming_keys_num)
|
||||
DNA_STRUCT_RENAME_MEMBER(Strip, retiming_handles, retiming_keys)
|
||||
DNA_STRUCT_RENAME_MEMBER(Strip, strip, data)
|
||||
DNA_STRUCT_RENAME_MEMBER(StripData, dir, dirpath)
|
||||
DNA_STRUCT_RENAME_MEMBER(StripElem, name, filename)
|
||||
DNA_STRUCT_RENAME_MEMBER(StripProxy, dir, dirpath)
|
||||
|
||||
@@ -622,7 +622,7 @@ static const EnumPropertyItem *rna_ColorManagedColorspaceSettings_colorspace_ite
|
||||
|
||||
struct Seq_colorspace_cb_data {
|
||||
ColorManagedColorspaceSettings *colorspace_settings;
|
||||
Sequence *r_seq;
|
||||
Strip *r_seq;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -630,7 +630,7 @@ struct Seq_colorspace_cb_data {
|
||||
* If property pointer matches one of strip, set `r_seq`,
|
||||
* so not all cached images have to be invalidated.
|
||||
*/
|
||||
static bool seq_find_colorspace_settings_cb(Sequence *seq, void *user_data)
|
||||
static bool seq_find_colorspace_settings_cb(Strip *seq, void *user_data)
|
||||
{
|
||||
Seq_colorspace_cb_data *cd = (Seq_colorspace_cb_data *)user_data;
|
||||
if (seq->data && &seq->data->colorspace_settings == cd->colorspace_settings) {
|
||||
@@ -688,7 +688,7 @@ static void rna_ColorManagedColorspaceSettings_reload_update(Main *bmain,
|
||||
else {
|
||||
/* Strip colorspace was likely changed. */
|
||||
SEQ_for_each_callback(&scene->ed->seqbase, seq_find_colorspace_settings_cb, &cb_data);
|
||||
Sequence *seq = cb_data.r_seq;
|
||||
Strip *seq = cb_data.r_seq;
|
||||
|
||||
if (seq) {
|
||||
SEQ_relations_sequence_free_anim(seq);
|
||||
|
||||
@@ -134,7 +134,7 @@ const EnumPropertyItem rna_enum_strip_color_items[] = {
|
||||
# include "SEQ_edit.hh"
|
||||
|
||||
struct SequenceSearchData {
|
||||
Sequence *seq;
|
||||
Strip *seq;
|
||||
void *data;
|
||||
SequenceModifierData *smd;
|
||||
};
|
||||
@@ -146,7 +146,7 @@ static void rna_SequenceElement_update(Main * /*bmain*/, Scene * /*scene*/, Poin
|
||||
|
||||
if (ed) {
|
||||
StripElem *se = (StripElem *)ptr->data;
|
||||
Sequence *seq;
|
||||
Strip *seq;
|
||||
|
||||
/* slow but we can't avoid! */
|
||||
seq = SEQ_sequence_from_strip_elem(&ed->seqbase, se);
|
||||
@@ -164,7 +164,7 @@ static void rna_Sequence_invalidate_raw_update(Main * /*bmain*/,
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
|
||||
if (ed) {
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
|
||||
SEQ_relations_invalidate_cache_raw(scene, seq);
|
||||
}
|
||||
@@ -178,7 +178,7 @@ static void rna_Sequence_invalidate_preprocessed_update(Main * /*bmain*/,
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
|
||||
if (ed) {
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
|
||||
SEQ_relations_invalidate_cache_preprocessed(scene, seq);
|
||||
}
|
||||
@@ -192,7 +192,7 @@ static void UNUSED_FUNCTION(rna_Sequence_invalidate_composite_update)(Main * /*b
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
|
||||
if (ed) {
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
|
||||
SEQ_relations_invalidate_cache_composite(scene, seq);
|
||||
}
|
||||
@@ -215,7 +215,7 @@ static void rna_Sequence_use_sequence(Main *bmain, Scene * /*scene*/, PointerRNA
|
||||
* the only way for this currently is to tag the ID for ID_RECALC_SYNC_TO_EVAL. */
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
if (ed) {
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
if (seq->scene != nullptr) {
|
||||
DEG_id_tag_update(&seq->scene->id, ID_RECALC_SYNC_TO_EVAL);
|
||||
}
|
||||
@@ -226,9 +226,9 @@ static void rna_Sequence_use_sequence(Main *bmain, Scene * /*scene*/, PointerRNA
|
||||
DEG_relations_tag_update(bmain);
|
||||
}
|
||||
|
||||
static void add_strips_from_seqbase(const ListBase *seqbase, blender::Vector<Sequence *> &strips)
|
||||
static void add_strips_from_seqbase(const ListBase *seqbase, blender::Vector<Strip *> &strips)
|
||||
{
|
||||
LISTBASE_FOREACH (Sequence *, seq, seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, seqbase) {
|
||||
strips.append(seq);
|
||||
|
||||
if (seq->type == SEQ_TYPE_META) {
|
||||
@@ -238,7 +238,7 @@ static void add_strips_from_seqbase(const ListBase *seqbase, blender::Vector<Seq
|
||||
}
|
||||
|
||||
struct SequencesAllIterator {
|
||||
blender::Vector<Sequence *> strips;
|
||||
blender::Vector<Strip *> strips;
|
||||
int index;
|
||||
};
|
||||
|
||||
@@ -262,7 +262,7 @@ static void rna_SequenceEditor_sequences_all_begin(CollectionPropertyIterator *i
|
||||
iter->internal.custom = bli_iter;
|
||||
bli_iter->data = seq_iter;
|
||||
|
||||
Sequence **seq_arr = seq_iter->strips.begin();
|
||||
Strip **seq_arr = seq_iter->strips.begin();
|
||||
bli_iter->current = *seq_arr;
|
||||
iter->valid = bli_iter->current != nullptr;
|
||||
}
|
||||
@@ -273,7 +273,7 @@ static void rna_SequenceEditor_sequences_all_next(CollectionPropertyIterator *it
|
||||
SequencesAllIterator *seq_iter = static_cast<SequencesAllIterator *>(bli_iter->data);
|
||||
|
||||
seq_iter->index++;
|
||||
Sequence **seq_arr = seq_iter->strips.begin();
|
||||
Strip **seq_arr = seq_iter->strips.begin();
|
||||
bli_iter->current = *(seq_arr + seq_iter->index);
|
||||
|
||||
iter->valid = bli_iter->current != nullptr && seq_iter->index < seq_iter->strips.size();
|
||||
@@ -281,8 +281,8 @@ static void rna_SequenceEditor_sequences_all_next(CollectionPropertyIterator *it
|
||||
|
||||
static PointerRNA rna_SequenceEditor_sequences_all_get(CollectionPropertyIterator *iter)
|
||||
{
|
||||
Sequence *seq = static_cast<Sequence *>(((BLI_Iterator *)iter->internal.custom)->current);
|
||||
return rna_pointer_inherit_refine(&iter->parent, &RNA_Sequence, seq);
|
||||
Strip *seq = static_cast<Strip *>(((BLI_Iterator *)iter->internal.custom)->current);
|
||||
return rna_pointer_inherit_refine(&iter->parent, &RNA_Strip, seq);
|
||||
}
|
||||
|
||||
static void rna_SequenceEditor_sequences_all_end(CollectionPropertyIterator *iter)
|
||||
@@ -301,9 +301,9 @@ static bool rna_SequenceEditor_sequences_all_lookup_string(PointerRNA *ptr,
|
||||
ID *id = ptr->owner_id;
|
||||
Scene *scene = (Scene *)id;
|
||||
|
||||
Sequence *seq = SEQ_sequence_lookup_seq_by_name(scene, key);
|
||||
Strip *seq = SEQ_sequence_lookup_seq_by_name(scene, key);
|
||||
if (seq) {
|
||||
*r_ptr = RNA_pointer_create(ptr->owner_id, &RNA_Sequence, seq);
|
||||
*r_ptr = RNA_pointer_create(ptr->owner_id, &RNA_Strip, seq);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -320,7 +320,7 @@ static void rna_SequenceEditor_update_cache(Main * /*bmain*/, Scene *scene, Poin
|
||||
/* internal use */
|
||||
static int rna_SequenceEditor_elements_length(PointerRNA *ptr)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
|
||||
/* Hack? copied from `sequencer.cc`, #reload_sequence_new_file(). */
|
||||
size_t olen = MEM_allocN_len(seq->data->stripdata) / sizeof(StripElem);
|
||||
@@ -332,7 +332,7 @@ static int rna_SequenceEditor_elements_length(PointerRNA *ptr)
|
||||
|
||||
static void rna_Sequence_elements_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
rna_iterator_array_begin(iter,
|
||||
(void *)seq->data->stripdata,
|
||||
sizeof(StripElem),
|
||||
@@ -343,13 +343,13 @@ static void rna_Sequence_elements_begin(CollectionPropertyIterator *iter, Pointe
|
||||
|
||||
static int rna_Sequence_retiming_keys_length(PointerRNA *ptr)
|
||||
{
|
||||
return SEQ_retiming_keys_count((Sequence *)ptr->data);
|
||||
return SEQ_retiming_keys_count((Strip *)ptr->data);
|
||||
}
|
||||
|
||||
static void rna_SequenceEditor_retiming_keys_begin(CollectionPropertyIterator *iter,
|
||||
PointerRNA *ptr)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
rna_iterator_array_begin(iter,
|
||||
(void *)seq->retiming_keys,
|
||||
sizeof(SeqRetimingKey),
|
||||
@@ -358,12 +358,12 @@ static void rna_SequenceEditor_retiming_keys_begin(CollectionPropertyIterator *i
|
||||
nullptr);
|
||||
}
|
||||
|
||||
static Sequence *strip_by_key_find(Scene *scene, SeqRetimingKey *key)
|
||||
static Strip *strip_by_key_find(Scene *scene, SeqRetimingKey *key)
|
||||
{
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
blender::VectorSet strips = SEQ_query_all_strips_recursive(&ed->seqbase);
|
||||
|
||||
for (Sequence *seq : strips) {
|
||||
for (Strip *seq : strips) {
|
||||
const int retiming_keys_count = SEQ_retiming_keys_count(seq);
|
||||
SeqRetimingKey *first = seq->retiming_keys;
|
||||
SeqRetimingKey *last = seq->retiming_keys + retiming_keys_count - 1;
|
||||
@@ -379,7 +379,7 @@ static Sequence *strip_by_key_find(Scene *scene, SeqRetimingKey *key)
|
||||
static void rna_Sequence_retiming_key_remove(ID *id, SeqRetimingKey *key)
|
||||
{
|
||||
Scene *scene = (Scene *)id;
|
||||
Sequence *seq = strip_by_key_find(scene, key);
|
||||
Strip *seq = strip_by_key_find(scene, key);
|
||||
|
||||
if (seq == nullptr) {
|
||||
return;
|
||||
@@ -395,7 +395,7 @@ static int rna_Sequence_retiming_key_frame_get(PointerRNA *ptr)
|
||||
{
|
||||
SeqRetimingKey *key = (SeqRetimingKey *)ptr->data;
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
Sequence *seq = strip_by_key_find(scene, key);
|
||||
Strip *seq = strip_by_key_find(scene, key);
|
||||
|
||||
if (seq == nullptr) {
|
||||
return 0;
|
||||
@@ -408,7 +408,7 @@ static void rna_Sequence_retiming_key_frame_set(PointerRNA *ptr, int value)
|
||||
{
|
||||
SeqRetimingKey *key = (SeqRetimingKey *)ptr->data;
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
Sequence *seq = strip_by_key_find(scene, key);
|
||||
Strip *seq = strip_by_key_find(scene, key);
|
||||
|
||||
if (seq == nullptr) {
|
||||
return;
|
||||
@@ -429,7 +429,7 @@ static void rna_Sequence_views_format_update(Main *bmain, Scene *scene, PointerR
|
||||
rna_Sequence_invalidate_raw_update(bmain, scene, ptr);
|
||||
}
|
||||
|
||||
static void do_sequence_frame_change_update(Scene *scene, Sequence *seq)
|
||||
static void do_sequence_frame_change_update(Scene *scene, Strip *seq)
|
||||
{
|
||||
ListBase *seqbase = SEQ_get_seqbase_by_seq(scene, seq);
|
||||
|
||||
@@ -448,24 +448,24 @@ static void do_sequence_frame_change_update(Scene *scene, Sequence *seq)
|
||||
static void rna_Sequence_frame_change_update(Main * /*bmain*/, Scene * /*scene*/, PointerRNA *ptr)
|
||||
{
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
do_sequence_frame_change_update(scene, (Sequence *)ptr->data);
|
||||
do_sequence_frame_change_update(scene, (Strip *)ptr->data);
|
||||
}
|
||||
|
||||
static int rna_Sequence_frame_final_start_get(PointerRNA *ptr)
|
||||
{
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
return SEQ_time_left_handle_frame_get(scene, (Sequence *)ptr->data);
|
||||
return SEQ_time_left_handle_frame_get(scene, (Strip *)ptr->data);
|
||||
}
|
||||
|
||||
static int rna_Sequence_frame_final_end_get(PointerRNA *ptr)
|
||||
{
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
return SEQ_time_right_handle_frame_get(scene, (Sequence *)ptr->data);
|
||||
return SEQ_time_right_handle_frame_get(scene, (Strip *)ptr->data);
|
||||
}
|
||||
|
||||
static void rna_Sequence_start_frame_final_set(PointerRNA *ptr, int value)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
|
||||
SEQ_time_left_handle_frame_set(scene, seq, value);
|
||||
@@ -475,7 +475,7 @@ static void rna_Sequence_start_frame_final_set(PointerRNA *ptr, int value)
|
||||
|
||||
static void rna_Sequence_end_frame_final_set(PointerRNA *ptr, int value)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
|
||||
SEQ_time_right_handle_frame_set(scene, seq, value);
|
||||
@@ -485,7 +485,7 @@ static void rna_Sequence_end_frame_final_set(PointerRNA *ptr, int value)
|
||||
|
||||
static void rna_Sequence_start_frame_set(PointerRNA *ptr, float value)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
|
||||
SEQ_transform_translate_sequence(scene, seq, value - seq->start);
|
||||
@@ -495,7 +495,7 @@ static void rna_Sequence_start_frame_set(PointerRNA *ptr, float value)
|
||||
|
||||
static void rna_Sequence_frame_offset_start_set(PointerRNA *ptr, float value)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
|
||||
SEQ_relations_invalidate_cache_composite(scene, seq);
|
||||
@@ -504,7 +504,7 @@ static void rna_Sequence_frame_offset_start_set(PointerRNA *ptr, float value)
|
||||
|
||||
static void rna_Sequence_frame_offset_end_set(PointerRNA *ptr, float value)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
|
||||
SEQ_relations_invalidate_cache_composite(scene, seq);
|
||||
@@ -513,7 +513,7 @@ static void rna_Sequence_frame_offset_end_set(PointerRNA *ptr, float value)
|
||||
|
||||
static void rna_Sequence_anim_startofs_final_set(PointerRNA *ptr, int value)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
|
||||
seq->anim_startofs = std::min(value, seq->len + seq->anim_startofs);
|
||||
@@ -524,7 +524,7 @@ static void rna_Sequence_anim_startofs_final_set(PointerRNA *ptr, int value)
|
||||
|
||||
static void rna_Sequence_anim_endofs_final_set(PointerRNA *ptr, int value)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
|
||||
seq->anim_endofs = std::min(value, seq->len + seq->anim_endofs);
|
||||
@@ -536,7 +536,7 @@ static void rna_Sequence_anim_endofs_final_set(PointerRNA *ptr, int value)
|
||||
static void rna_Sequence_anim_endofs_final_range(
|
||||
PointerRNA *ptr, int *min, int *max, int * /*softmin*/, int * /*softmax*/)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
|
||||
*min = 0;
|
||||
*max = seq->len + seq->anim_endofs - seq->startofs - seq->endofs - 1;
|
||||
@@ -545,7 +545,7 @@ static void rna_Sequence_anim_endofs_final_range(
|
||||
static void rna_Sequence_anim_startofs_final_range(
|
||||
PointerRNA *ptr, int *min, int *max, int * /*softmin*/, int * /*softmax*/)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
|
||||
*min = 0;
|
||||
*max = seq->len + seq->anim_startofs - seq->startofs - seq->endofs - 1;
|
||||
@@ -554,7 +554,7 @@ static void rna_Sequence_anim_startofs_final_range(
|
||||
static void rna_Sequence_frame_offset_start_range(
|
||||
PointerRNA *ptr, float *min, float *max, float * /*softmin*/, float * /*softmax*/)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
*min = (seq->type == SEQ_TYPE_SOUND_RAM) ? 0 : INT_MIN;
|
||||
*max = seq->len - seq->endofs - 1;
|
||||
}
|
||||
@@ -562,14 +562,14 @@ static void rna_Sequence_frame_offset_start_range(
|
||||
static void rna_Sequence_frame_offset_end_range(
|
||||
PointerRNA *ptr, float *min, float *max, float * /*softmin*/, float * /*softmax*/)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
*min = (seq->type == SEQ_TYPE_SOUND_RAM) ? 0 : INT_MIN;
|
||||
*max = seq->len - seq->startofs - 1;
|
||||
}
|
||||
|
||||
static void rna_Sequence_frame_length_set(PointerRNA *ptr, int value)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
|
||||
SEQ_time_right_handle_frame_set(scene, seq, SEQ_time_left_handle_frame_get(scene, seq) + value);
|
||||
@@ -579,28 +579,28 @@ static void rna_Sequence_frame_length_set(PointerRNA *ptr, int value)
|
||||
|
||||
static int rna_Sequence_frame_length_get(PointerRNA *ptr)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
return SEQ_time_right_handle_frame_get(scene, seq) - SEQ_time_left_handle_frame_get(scene, seq);
|
||||
}
|
||||
|
||||
static int rna_Sequence_frame_duration_get(PointerRNA *ptr)
|
||||
{
|
||||
Sequence *seq = static_cast<Sequence *>(ptr->data);
|
||||
Strip *seq = static_cast<Strip *>(ptr->data);
|
||||
Scene *scene = reinterpret_cast<Scene *>(ptr->owner_id);
|
||||
return SEQ_time_strip_length_get(scene, seq);
|
||||
}
|
||||
|
||||
static int rna_Sequence_frame_editable(const PointerRNA *ptr, const char ** /*r_info*/)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
/* Effect sequences' start frame and length must be readonly! */
|
||||
return (SEQ_effect_get_num_inputs(seq->type)) ? PropertyFlag(0) : PROP_EDITABLE;
|
||||
}
|
||||
|
||||
static void rna_Sequence_channel_set(PointerRNA *ptr, int value)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
ListBase *seqbase = SEQ_get_seqbase_by_seq(scene, seq);
|
||||
|
||||
@@ -616,11 +616,11 @@ static void rna_Sequence_channel_set(PointerRNA *ptr, int value)
|
||||
|
||||
static void rna_Sequence_use_proxy_set(PointerRNA *ptr, bool value)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
SEQ_proxy_set(seq, value != 0);
|
||||
}
|
||||
|
||||
static bool transform_seq_cmp_fn(Sequence *seq, void *arg_pt)
|
||||
static bool transform_seq_cmp_fn(Strip *seq, void *arg_pt)
|
||||
{
|
||||
SequenceSearchData *data = static_cast<SequenceSearchData *>(arg_pt);
|
||||
|
||||
@@ -631,7 +631,7 @@ static bool transform_seq_cmp_fn(Sequence *seq, void *arg_pt)
|
||||
return true;
|
||||
}
|
||||
|
||||
static Sequence *sequence_get_by_transform(Editing *ed, StripTransform *transform)
|
||||
static Strip *sequence_get_by_transform(Editing *ed, StripTransform *transform)
|
||||
{
|
||||
SequenceSearchData data;
|
||||
|
||||
@@ -648,7 +648,7 @@ static std::optional<std::string> rna_SequenceTransform_path(const PointerRNA *p
|
||||
{
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *seq = sequence_get_by_transform(ed, static_cast<StripTransform *>(ptr->data));
|
||||
Strip *seq = sequence_get_by_transform(ed, static_cast<StripTransform *>(ptr->data));
|
||||
|
||||
if (seq) {
|
||||
char name_esc[(sizeof(seq->name) - 2) * 2];
|
||||
@@ -662,12 +662,12 @@ static void rna_SequenceTransform_update(Main * /*bmain*/, Scene * /*scene*/, Po
|
||||
{
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *seq = sequence_get_by_transform(ed, static_cast<StripTransform *>(ptr->data));
|
||||
Strip *seq = sequence_get_by_transform(ed, static_cast<StripTransform *>(ptr->data));
|
||||
|
||||
SEQ_relations_invalidate_cache_preprocessed(scene, seq);
|
||||
}
|
||||
|
||||
static bool crop_seq_cmp_fn(Sequence *seq, void *arg_pt)
|
||||
static bool crop_seq_cmp_fn(Strip *seq, void *arg_pt)
|
||||
{
|
||||
SequenceSearchData *data = static_cast<SequenceSearchData *>(arg_pt);
|
||||
|
||||
@@ -678,7 +678,7 @@ static bool crop_seq_cmp_fn(Sequence *seq, void *arg_pt)
|
||||
return true;
|
||||
}
|
||||
|
||||
static Sequence *sequence_get_by_crop(Editing *ed, StripCrop *crop)
|
||||
static Strip *sequence_get_by_crop(Editing *ed, StripCrop *crop)
|
||||
{
|
||||
SequenceSearchData data;
|
||||
|
||||
@@ -695,7 +695,7 @@ static std::optional<std::string> rna_SequenceCrop_path(const PointerRNA *ptr)
|
||||
{
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *seq = sequence_get_by_crop(ed, static_cast<StripCrop *>(ptr->data));
|
||||
Strip *seq = sequence_get_by_crop(ed, static_cast<StripCrop *>(ptr->data));
|
||||
|
||||
if (seq) {
|
||||
char name_esc[(sizeof(seq->name) - 2) * 2];
|
||||
@@ -709,7 +709,7 @@ static void rna_SequenceCrop_update(Main * /*bmain*/, Scene * /*scene*/, Pointer
|
||||
{
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *seq = sequence_get_by_crop(ed, static_cast<StripCrop *>(ptr->data));
|
||||
Strip *seq = sequence_get_by_crop(ed, static_cast<StripCrop *>(ptr->data));
|
||||
|
||||
SEQ_relations_invalidate_cache_preprocessed(scene, seq);
|
||||
}
|
||||
@@ -718,7 +718,7 @@ static void rna_Sequence_text_font_set(PointerRNA *ptr,
|
||||
PointerRNA ptr_value,
|
||||
ReportList * /*reports*/)
|
||||
{
|
||||
Sequence *seq = static_cast<Sequence *>(ptr->data);
|
||||
Strip *seq = static_cast<Strip *>(ptr->data);
|
||||
TextVars *data = static_cast<TextVars *>(seq->effectdata);
|
||||
VFont *value = static_cast<VFont *>(ptr_value.data);
|
||||
|
||||
@@ -732,20 +732,20 @@ static void rna_Sequence_text_font_set(PointerRNA *ptr,
|
||||
/* name functions that ignore the first two characters */
|
||||
static void rna_Sequence_name_get(PointerRNA *ptr, char *value)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
strcpy(value, seq->name + 2);
|
||||
}
|
||||
|
||||
static int rna_Sequence_name_length(PointerRNA *ptr)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
return strlen(seq->name + 2);
|
||||
}
|
||||
|
||||
static void rna_Sequence_name_set(PointerRNA *ptr, const char *value)
|
||||
{
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
char oldname[sizeof(seq->name)];
|
||||
AnimData *adt;
|
||||
|
||||
@@ -782,7 +782,7 @@ static void rna_Sequence_name_set(PointerRNA *ptr, const char *value)
|
||||
|
||||
static StructRNA *rna_Sequence_refine(PointerRNA *ptr)
|
||||
{
|
||||
Sequence *seq = (Sequence *)ptr->data;
|
||||
Strip *seq = (Strip *)ptr->data;
|
||||
|
||||
switch (seq->type) {
|
||||
case SEQ_TYPE_IMAGE:
|
||||
@@ -836,13 +836,13 @@ static StructRNA *rna_Sequence_refine(PointerRNA *ptr)
|
||||
case SEQ_TYPE_COLORMIX:
|
||||
return &RNA_ColorMixSequence;
|
||||
default:
|
||||
return &RNA_Sequence;
|
||||
return &RNA_Strip;
|
||||
}
|
||||
}
|
||||
|
||||
static std::optional<std::string> rna_Sequence_path(const PointerRNA *ptr)
|
||||
{
|
||||
const Sequence *seq = (Sequence *)ptr->data;
|
||||
const Strip *seq = (Strip *)ptr->data;
|
||||
|
||||
/* sequencer data comes from scene...
|
||||
* TODO: would be nice to make SequenceEditor data a data-block of its own (for shorter paths)
|
||||
@@ -855,11 +855,11 @@ static std::optional<std::string> rna_Sequence_path(const PointerRNA *ptr)
|
||||
|
||||
static IDProperty **rna_Sequence_idprops(PointerRNA *ptr)
|
||||
{
|
||||
Sequence *seq = static_cast<Sequence *>(ptr->data);
|
||||
Strip *seq = static_cast<Strip *>(ptr->data);
|
||||
return &seq->prop;
|
||||
}
|
||||
|
||||
static bool rna_MovieSequence_reload_if_needed(ID *scene_id, Sequence *seq, Main *bmain)
|
||||
static bool rna_MovieSequence_reload_if_needed(ID *scene_id, Strip *seq, Main *bmain)
|
||||
{
|
||||
Scene *scene = (Scene *)scene_id;
|
||||
|
||||
@@ -878,7 +878,7 @@ static bool rna_MovieSequence_reload_if_needed(ID *scene_id, Sequence *seq, Main
|
||||
return can_produce_frames;
|
||||
}
|
||||
|
||||
static PointerRNA rna_MovieSequence_metadata_get(ID *scene_id, Sequence *seq)
|
||||
static PointerRNA rna_MovieSequence_metadata_get(ID *scene_id, Strip *seq)
|
||||
{
|
||||
if (seq == nullptr || seq->anims.first == nullptr) {
|
||||
return PointerRNA_NULL;
|
||||
@@ -903,13 +903,13 @@ static PointerRNA rna_SequenceEditor_meta_stack_get(CollectionPropertyIterator *
|
||||
ListBaseIterator *internal = &iter->internal.listbase;
|
||||
MetaStack *ms = (MetaStack *)internal->link;
|
||||
|
||||
return rna_pointer_inherit_refine(&iter->parent, &RNA_Sequence, ms->parseq);
|
||||
return rna_pointer_inherit_refine(&iter->parent, &RNA_Strip, ms->parseq);
|
||||
}
|
||||
|
||||
/* TODO: expose seq path setting as a higher level sequencer BKE function. */
|
||||
static void rna_Sequence_filepath_set(PointerRNA *ptr, const char *value)
|
||||
{
|
||||
Sequence *seq = (Sequence *)(ptr->data);
|
||||
Strip *seq = (Strip *)(ptr->data);
|
||||
BLI_path_split_dir_file(value,
|
||||
seq->data->dirpath,
|
||||
sizeof(seq->data->dirpath),
|
||||
@@ -919,7 +919,7 @@ static void rna_Sequence_filepath_set(PointerRNA *ptr, const char *value)
|
||||
|
||||
static void rna_Sequence_filepath_get(PointerRNA *ptr, char *value)
|
||||
{
|
||||
Sequence *seq = (Sequence *)(ptr->data);
|
||||
Strip *seq = (Strip *)(ptr->data);
|
||||
char filepath[FILE_MAX];
|
||||
|
||||
BLI_path_join(filepath, sizeof(filepath), seq->data->dirpath, seq->data->stripdata->filename);
|
||||
@@ -928,7 +928,7 @@ static void rna_Sequence_filepath_get(PointerRNA *ptr, char *value)
|
||||
|
||||
static int rna_Sequence_filepath_length(PointerRNA *ptr)
|
||||
{
|
||||
Sequence *seq = (Sequence *)(ptr->data);
|
||||
Strip *seq = (Strip *)(ptr->data);
|
||||
char filepath[FILE_MAX];
|
||||
|
||||
BLI_path_join(filepath, sizeof(filepath), seq->data->dirpath, seq->data->stripdata->filename);
|
||||
@@ -982,7 +982,7 @@ static void rna_Sequence_pan_range(
|
||||
|
||||
static int rna_Sequence_input_count_get(PointerRNA *ptr)
|
||||
{
|
||||
Sequence *seq = (Sequence *)(ptr->data);
|
||||
Strip *seq = (Strip *)(ptr->data);
|
||||
|
||||
return SEQ_effect_get_num_inputs(seq->type);
|
||||
}
|
||||
@@ -993,8 +993,8 @@ static void rna_Sequence_input_set(PointerRNA *ptr,
|
||||
int input_num)
|
||||
{
|
||||
|
||||
Sequence *seq = static_cast<Sequence *>(ptr->data);
|
||||
Sequence *input = static_cast<Sequence *>(ptr_value.data);
|
||||
Strip *seq = static_cast<Strip *>(ptr->data);
|
||||
Strip *input = static_cast<Strip *>(ptr_value.data);
|
||||
|
||||
if (SEQ_relations_render_loop_check(input, seq)) {
|
||||
BKE_report(reports, RPT_ERROR, "Cannot reassign inputs: recursion detected");
|
||||
@@ -1023,7 +1023,7 @@ static void rna_Sequence_input_2_set(PointerRNA *ptr, PointerRNA ptr_value, Repo
|
||||
# if 0
|
||||
static void rna_SoundSequence_filename_set(PointerRNA *ptr, const char *value)
|
||||
{
|
||||
Sequence *seq = (Sequence *)(ptr->data);
|
||||
Strip *seq = (Strip *)(ptr->data);
|
||||
BLI_path_split_dir_file(value,
|
||||
seq->data->dirpath,
|
||||
sizeof(seq->data->dirpath),
|
||||
@@ -1047,14 +1047,14 @@ static void rna_Sequence_reopen_files_update(Main *bmain, Scene * /*scene*/, Poi
|
||||
rna_Sequence_invalidate_raw_update(bmain, scene, ptr);
|
||||
|
||||
if (RNA_struct_is_a(ptr->type, &RNA_SoundSequence)) {
|
||||
SEQ_sound_update_bounds(scene, static_cast<Sequence *>(ptr->data));
|
||||
SEQ_sound_update_bounds(scene, static_cast<Strip *>(ptr->data));
|
||||
}
|
||||
}
|
||||
|
||||
static void rna_Sequence_filepath_update(Main *bmain, Scene * /*scene*/, PointerRNA *ptr)
|
||||
{
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
Sequence *seq = (Sequence *)(ptr->data);
|
||||
Strip *seq = (Strip *)(ptr->data);
|
||||
SEQ_add_reload_new_file(bmain, scene, seq, true);
|
||||
rna_Sequence_invalidate_raw_update(bmain, scene, ptr);
|
||||
}
|
||||
@@ -1066,7 +1066,7 @@ static void rna_Sequence_sound_update(Main *bmain, Scene * /*active_scene*/, Poi
|
||||
DEG_relations_tag_update(bmain);
|
||||
}
|
||||
|
||||
static bool seqproxy_seq_cmp_fn(Sequence *seq, void *arg_pt)
|
||||
static bool seqproxy_seq_cmp_fn(Strip *seq, void *arg_pt)
|
||||
{
|
||||
SequenceSearchData *data = static_cast<SequenceSearchData *>(arg_pt);
|
||||
|
||||
@@ -1077,7 +1077,7 @@ static bool seqproxy_seq_cmp_fn(Sequence *seq, void *arg_pt)
|
||||
return true;
|
||||
}
|
||||
|
||||
static Sequence *sequence_get_by_proxy(Editing *ed, StripProxy *proxy)
|
||||
static Strip *sequence_get_by_proxy(Editing *ed, StripProxy *proxy)
|
||||
{
|
||||
SequenceSearchData data;
|
||||
|
||||
@@ -1092,7 +1092,7 @@ static void rna_Sequence_tcindex_update(Main *bmain, Scene * /*scene*/, PointerR
|
||||
{
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *seq = sequence_get_by_proxy(ed, static_cast<StripProxy *>(ptr->data));
|
||||
Strip *seq = sequence_get_by_proxy(ed, static_cast<StripProxy *>(ptr->data));
|
||||
|
||||
SEQ_add_reload_new_file(bmain, scene, seq, false);
|
||||
do_sequence_frame_change_update(scene, seq);
|
||||
@@ -1102,36 +1102,36 @@ static void rna_SequenceProxy_update(Main * /*bmain*/, Scene * /*scene*/, Pointe
|
||||
{
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *seq = sequence_get_by_proxy(ed, static_cast<StripProxy *>(ptr->data));
|
||||
Strip *seq = sequence_get_by_proxy(ed, static_cast<StripProxy *>(ptr->data));
|
||||
SEQ_relations_invalidate_cache_preprocessed(scene, seq);
|
||||
}
|
||||
|
||||
/* do_versions? */
|
||||
static float rna_Sequence_opacity_get(PointerRNA *ptr)
|
||||
{
|
||||
Sequence *seq = (Sequence *)(ptr->data);
|
||||
Strip *seq = (Strip *)(ptr->data);
|
||||
return seq->blend_opacity / 100.0f;
|
||||
}
|
||||
static void rna_Sequence_opacity_set(PointerRNA *ptr, float value)
|
||||
{
|
||||
Sequence *seq = (Sequence *)(ptr->data);
|
||||
Strip *seq = (Strip *)(ptr->data);
|
||||
CLAMP(value, 0.0f, 1.0f);
|
||||
seq->blend_opacity = value * 100.0f;
|
||||
}
|
||||
|
||||
static int rna_Sequence_color_tag_get(PointerRNA *ptr)
|
||||
{
|
||||
Sequence *seq = (Sequence *)(ptr->data);
|
||||
Strip *seq = (Strip *)(ptr->data);
|
||||
return seq->color_tag;
|
||||
}
|
||||
|
||||
static void rna_Sequence_color_tag_set(PointerRNA *ptr, int value)
|
||||
{
|
||||
Sequence *seq = (Sequence *)(ptr->data);
|
||||
Strip *seq = (Strip *)(ptr->data);
|
||||
seq->color_tag = value;
|
||||
}
|
||||
|
||||
static bool colbalance_seq_cmp_fn(Sequence *seq, void *arg_pt)
|
||||
static bool colbalance_seq_cmp_fn(Strip *seq, void *arg_pt)
|
||||
{
|
||||
SequenceSearchData *data = static_cast<SequenceSearchData *>(arg_pt);
|
||||
|
||||
@@ -1152,9 +1152,9 @@ static bool colbalance_seq_cmp_fn(Sequence *seq, void *arg_pt)
|
||||
return true;
|
||||
}
|
||||
|
||||
static Sequence *sequence_get_by_colorbalance(Editing *ed,
|
||||
StripColorBalance *cb,
|
||||
SequenceModifierData **r_smd)
|
||||
static Strip *sequence_get_by_colorbalance(Editing *ed,
|
||||
StripColorBalance *cb,
|
||||
SequenceModifierData **r_smd)
|
||||
{
|
||||
SequenceSearchData data;
|
||||
|
||||
@@ -1175,8 +1175,7 @@ static std::optional<std::string> rna_SequenceColorBalance_path(const PointerRNA
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
SequenceModifierData *smd;
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *seq = sequence_get_by_colorbalance(
|
||||
ed, static_cast<StripColorBalance *>(ptr->data), &smd);
|
||||
Strip *seq = sequence_get_by_colorbalance(ed, static_cast<StripColorBalance *>(ptr->data), &smd);
|
||||
|
||||
if (seq) {
|
||||
char name_esc[(sizeof(seq->name) - 2) * 2];
|
||||
@@ -1203,8 +1202,7 @@ static void rna_SequenceColorBalance_update(Main * /*bmain*/, Scene * /*scene*/,
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
SequenceModifierData *smd;
|
||||
Sequence *seq = sequence_get_by_colorbalance(
|
||||
ed, static_cast<StripColorBalance *>(ptr->data), &smd);
|
||||
Strip *seq = sequence_get_by_colorbalance(ed, static_cast<StripColorBalance *>(ptr->data), &smd);
|
||||
|
||||
SEQ_relations_invalidate_cache_preprocessed(scene, seq);
|
||||
}
|
||||
@@ -1263,15 +1261,12 @@ static void rna_SequenceEditor_overlay_frame_set(PointerRNA *ptr, int value)
|
||||
}
|
||||
}
|
||||
|
||||
static void rna_SequenceEditor_display_stack(ID *id,
|
||||
Editing *ed,
|
||||
ReportList *reports,
|
||||
Sequence *seqm)
|
||||
static void rna_SequenceEditor_display_stack(ID *id, Editing *ed, ReportList *reports, Strip *seqm)
|
||||
{
|
||||
/* Check for non-meta sequence */
|
||||
if (seqm != nullptr && seqm->type != SEQ_TYPE_META && SEQ_exists_in_seqbase(seqm, &ed->seqbase))
|
||||
{
|
||||
BKE_report(reports, RPT_ERROR, "Sequence type must be 'META'");
|
||||
BKE_report(reports, RPT_ERROR, "Strip type must be 'META'");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1284,7 +1279,7 @@ static void rna_SequenceEditor_display_stack(ID *id,
|
||||
WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene);
|
||||
}
|
||||
|
||||
static bool modifier_seq_cmp_fn(Sequence *seq, void *arg_pt)
|
||||
static bool modifier_seq_cmp_fn(Strip *seq, void *arg_pt)
|
||||
{
|
||||
SequenceSearchData *data = static_cast<SequenceSearchData *>(arg_pt);
|
||||
|
||||
@@ -1296,7 +1291,7 @@ static bool modifier_seq_cmp_fn(Sequence *seq, void *arg_pt)
|
||||
return true;
|
||||
}
|
||||
|
||||
static Sequence *sequence_get_by_modifier(Editing *ed, SequenceModifierData *smd)
|
||||
static Strip *sequence_get_by_modifier(Editing *ed, SequenceModifierData *smd)
|
||||
{
|
||||
SequenceSearchData data;
|
||||
|
||||
@@ -1338,7 +1333,7 @@ static std::optional<std::string> rna_SequenceModifier_path(const PointerRNA *pt
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
SequenceModifierData *smd = static_cast<SequenceModifierData *>(ptr->data);
|
||||
Sequence *seq = sequence_get_by_modifier(ed, smd);
|
||||
Strip *seq = sequence_get_by_modifier(ed, smd);
|
||||
|
||||
if (seq) {
|
||||
char name_esc[(sizeof(seq->name) - 2) * 2];
|
||||
@@ -1357,7 +1352,7 @@ static void rna_SequenceModifier_name_set(PointerRNA *ptr, const char *value)
|
||||
SequenceModifierData *smd = static_cast<SequenceModifierData *>(ptr->data);
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *seq = sequence_get_by_modifier(ed, smd);
|
||||
Strip *seq = sequence_get_by_modifier(ed, smd);
|
||||
AnimData *adt;
|
||||
char oldname[sizeof(smd->name)];
|
||||
|
||||
@@ -1389,7 +1384,7 @@ static void rna_SequenceModifier_update(Main *bmain, Scene * /*scene*/, PointerR
|
||||
/* strip from other scenes could be modified, so using active scene is not reliable */
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *seq = sequence_get_by_modifier(ed, static_cast<SequenceModifierData *>(ptr->data));
|
||||
Strip *seq = sequence_get_by_modifier(ed, static_cast<SequenceModifierData *>(ptr->data));
|
||||
|
||||
if (ELEM(seq->type, SEQ_TYPE_SOUND_RAM, SEQ_TYPE_SOUND_HD)) {
|
||||
DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS | ID_RECALC_AUDIO);
|
||||
@@ -1418,8 +1413,8 @@ static bool rna_SequenceModifier_otherSequence_poll(PointerRNA *ptr, PointerRNA
|
||||
{
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *seq = sequence_get_by_modifier(ed, static_cast<SequenceModifierData *>(ptr->data));
|
||||
Sequence *cur = (Sequence *)value.data;
|
||||
Strip *seq = sequence_get_by_modifier(ed, static_cast<SequenceModifierData *>(ptr->data));
|
||||
Strip *cur = (Strip *)value.data;
|
||||
|
||||
if ((seq == cur) || (cur->type == SEQ_TYPE_SOUND_RAM)) {
|
||||
return false;
|
||||
@@ -1429,10 +1424,10 @@ static bool rna_SequenceModifier_otherSequence_poll(PointerRNA *ptr, PointerRNA
|
||||
}
|
||||
|
||||
static SequenceModifierData *rna_Sequence_modifier_new(
|
||||
Sequence *seq, bContext *C, ReportList *reports, const char *name, int type)
|
||||
Strip *seq, bContext *C, ReportList *reports, const char *name, int type)
|
||||
{
|
||||
if (!SEQ_sequence_supports_modifiers(seq)) {
|
||||
BKE_report(reports, RPT_ERROR, "Sequence type does not support modifiers");
|
||||
BKE_report(reports, RPT_ERROR, "Strip type does not support modifiers");
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
@@ -1450,7 +1445,7 @@ static SequenceModifierData *rna_Sequence_modifier_new(
|
||||
}
|
||||
}
|
||||
|
||||
static void rna_Sequence_modifier_remove(Sequence *seq,
|
||||
static void rna_Sequence_modifier_remove(Strip *seq,
|
||||
bContext *C,
|
||||
ReportList *reports,
|
||||
PointerRNA *smd_ptr)
|
||||
@@ -1469,7 +1464,7 @@ static void rna_Sequence_modifier_remove(Sequence *seq,
|
||||
WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, nullptr);
|
||||
}
|
||||
|
||||
static void rna_Sequence_modifier_clear(Sequence *seq, bContext *C)
|
||||
static void rna_Sequence_modifier_clear(Strip *seq, bContext *C)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
|
||||
@@ -1485,8 +1480,8 @@ static void rna_SequenceModifier_strip_set(PointerRNA *ptr, PointerRNA value, Re
|
||||
SequenceModifierData *smd = static_cast<SequenceModifierData *>(ptr->data);
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *seq = sequence_get_by_modifier(ed, smd);
|
||||
Sequence *target = (Sequence *)value.data;
|
||||
Strip *seq = sequence_get_by_modifier(ed, smd);
|
||||
Strip *target = (Strip *)value.data;
|
||||
|
||||
if (target != nullptr && SEQ_relations_render_loop_check(target, seq)) {
|
||||
BKE_report(reports, RPT_ERROR, "Recursion detected, cannot use this strip");
|
||||
@@ -1499,18 +1494,18 @@ static void rna_SequenceModifier_strip_set(PointerRNA *ptr, PointerRNA value, Re
|
||||
static float rna_Sequence_fps_get(PointerRNA *ptr)
|
||||
{
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
Sequence *seq = (Sequence *)(ptr->data);
|
||||
Strip *seq = (Strip *)(ptr->data);
|
||||
return SEQ_time_sequence_get_fps(scene, seq);
|
||||
}
|
||||
|
||||
static void rna_Sequence_separate(ID *id, Sequence *seqm, Main *bmain)
|
||||
static void rna_Sequence_separate(ID *id, Strip *seqm, Main *bmain)
|
||||
{
|
||||
Scene *scene = (Scene *)id;
|
||||
|
||||
/* Find the appropriate seqbase */
|
||||
ListBase *seqbase = SEQ_get_seqbase_by_seq(scene, seqm);
|
||||
|
||||
LISTBASE_FOREACH_MUTABLE (Sequence *, seq, &seqm->seqbase) {
|
||||
LISTBASE_FOREACH_MUTABLE (Strip *, seq, &seqm->seqbase) {
|
||||
SEQ_edit_move_strip_to_seqbase(scene, &seqm->seqbase, seq, seqbase);
|
||||
}
|
||||
|
||||
@@ -1530,7 +1525,7 @@ static void rna_SequenceTimelineChannel_name_set(PointerRNA *ptr, const char *va
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
|
||||
Sequence *channel_owner = SEQ_sequence_lookup_owner_by_channel(scene, channel);
|
||||
Strip *channel_owner = SEQ_sequence_lookup_owner_by_channel(scene, channel);
|
||||
ListBase *channels_base = &ed->channels;
|
||||
|
||||
if (channel_owner != nullptr) {
|
||||
@@ -1554,7 +1549,7 @@ static void rna_SequenceTimelineChannel_mute_update(Main *bmain,
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
SeqTimelineChannel *channel = (SeqTimelineChannel *)ptr;
|
||||
|
||||
Sequence *channel_owner = SEQ_sequence_lookup_owner_by_channel(scene, channel);
|
||||
Strip *channel_owner = SEQ_sequence_lookup_owner_by_channel(scene, channel);
|
||||
ListBase *seqbase;
|
||||
if (channel_owner == nullptr) {
|
||||
seqbase = &ed->seqbase;
|
||||
@@ -1563,7 +1558,7 @@ static void rna_SequenceTimelineChannel_mute_update(Main *bmain,
|
||||
seqbase = &channel_owner->seqbase;
|
||||
}
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, seqbase) {
|
||||
SEQ_relations_invalidate_cache_composite(scene, seq);
|
||||
}
|
||||
|
||||
@@ -1575,7 +1570,7 @@ static std::optional<std::string> rna_SeqTimelineChannel_path(const PointerRNA *
|
||||
Scene *scene = (Scene *)ptr->owner_id;
|
||||
SeqTimelineChannel *channel = (SeqTimelineChannel *)ptr->data;
|
||||
|
||||
Sequence *channel_owner = SEQ_sequence_lookup_owner_by_channel(scene, channel);
|
||||
Strip *channel_owner = SEQ_sequence_lookup_owner_by_channel(scene, channel);
|
||||
|
||||
char channel_name_esc[(sizeof(channel->name)) * 2];
|
||||
BLI_str_escape(channel_name_esc, channel->name, sizeof(channel_name_esc));
|
||||
@@ -2041,7 +2036,7 @@ static void rna_def_sequence_modifiers(BlenderRNA *brna, PropertyRNA *cprop)
|
||||
|
||||
RNA_def_property_srna(cprop, "SequenceModifiers");
|
||||
srna = RNA_def_struct(brna, "SequenceModifiers", nullptr);
|
||||
RNA_def_struct_sdna(srna, "Sequence");
|
||||
RNA_def_struct_sdna(srna, "Strip");
|
||||
RNA_def_struct_ui_text(srna, "Strip Modifiers", "Collection of strip modifiers");
|
||||
|
||||
/* add modifier */
|
||||
@@ -2111,7 +2106,7 @@ static void rna_def_sequence(BlenderRNA *brna)
|
||||
{0, nullptr, 0, nullptr, nullptr},
|
||||
};
|
||||
|
||||
srna = RNA_def_struct(brna, "Sequence", nullptr);
|
||||
srna = RNA_def_struct(brna, "Strip", nullptr);
|
||||
RNA_def_struct_ui_text(srna, "Sequence", "Sequence strip in the sequence editor");
|
||||
RNA_def_struct_refine_func(srna, "rna_Sequence_refine");
|
||||
RNA_def_struct_path_func(srna, "rna_Sequence_path");
|
||||
@@ -2120,7 +2115,7 @@ static void rna_def_sequence(BlenderRNA *brna)
|
||||
prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
|
||||
RNA_def_property_string_funcs(
|
||||
prop, "rna_Sequence_name_get", "rna_Sequence_name_length", "rna_Sequence_name_set");
|
||||
RNA_def_property_string_maxlength(prop, sizeof(Sequence::name) - 2);
|
||||
RNA_def_property_string_maxlength(prop, sizeof(Strip::name) - 2);
|
||||
RNA_def_property_ui_text(prop, "Name", "");
|
||||
RNA_def_struct_name_property(srna, prop);
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, nullptr);
|
||||
@@ -2396,13 +2391,13 @@ static void rna_def_editor(BlenderRNA *brna)
|
||||
|
||||
prop = RNA_def_property(srna, "sequences", PROP_COLLECTION, PROP_NONE);
|
||||
RNA_def_property_collection_sdna(prop, nullptr, "seqbase", nullptr);
|
||||
RNA_def_property_struct_type(prop, "Sequence");
|
||||
RNA_def_property_struct_type(prop, "Strip");
|
||||
RNA_def_property_ui_text(prop, "Sequences", "Top-level strips only");
|
||||
RNA_api_sequences(brna, prop, false);
|
||||
|
||||
prop = RNA_def_property(srna, "sequences_all", PROP_COLLECTION, PROP_NONE);
|
||||
RNA_def_property_collection_sdna(prop, nullptr, "seqbase", nullptr);
|
||||
RNA_def_property_struct_type(prop, "Sequence");
|
||||
RNA_def_property_struct_type(prop, "Strip");
|
||||
RNA_def_property_ui_text(
|
||||
prop, "All Sequences", "All strips, recursively including those inside metastrips");
|
||||
RNA_def_property_collection_funcs(prop,
|
||||
@@ -2417,7 +2412,7 @@ static void rna_def_editor(BlenderRNA *brna)
|
||||
|
||||
prop = RNA_def_property(srna, "meta_stack", PROP_COLLECTION, PROP_NONE);
|
||||
RNA_def_property_collection_sdna(prop, nullptr, "metastack", nullptr);
|
||||
RNA_def_property_struct_type(prop, "Sequence");
|
||||
RNA_def_property_struct_type(prop, "Strip");
|
||||
RNA_def_property_ui_text(
|
||||
prop, "Meta Stack", "Meta strip stack, last is currently edited meta strip");
|
||||
RNA_def_property_collection_funcs(prop,
|
||||
@@ -2525,7 +2520,7 @@ static void rna_def_editor(BlenderRNA *brna)
|
||||
RNA_def_function_flag(func, FUNC_USE_SELF_ID | FUNC_USE_REPORTS);
|
||||
RNA_def_function_ui_description(func, "Display sequences stack");
|
||||
parm = RNA_def_pointer(
|
||||
func, "meta_sequence", "Sequence", "Meta Sequence", "Meta to display its stack");
|
||||
func, "meta_sequence", "Strip", "Meta Sequence", "Meta to display its stack");
|
||||
RNA_def_parameter_flags(parm, PropertyFlag(0), PARM_REQUIRED);
|
||||
}
|
||||
|
||||
@@ -2710,9 +2705,9 @@ static void rna_def_image(BlenderRNA *brna)
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
srna = RNA_def_struct(brna, "ImageSequence", "Sequence");
|
||||
srna = RNA_def_struct(brna, "ImageSequence", "Strip");
|
||||
RNA_def_struct_ui_text(srna, "Image Sequence", "Sequence strip to load one or more images");
|
||||
RNA_def_struct_sdna(srna, "Sequence");
|
||||
RNA_def_struct_sdna(srna, "Strip");
|
||||
|
||||
prop = RNA_def_property(srna, "directory", PROP_STRING, PROP_DIRPATH);
|
||||
RNA_def_property_string_sdna(prop, nullptr, "data->dirpath");
|
||||
@@ -2764,14 +2759,14 @@ static void rna_def_meta(BlenderRNA *brna)
|
||||
FunctionRNA *func;
|
||||
PropertyRNA *prop;
|
||||
|
||||
srna = RNA_def_struct(brna, "MetaSequence", "Sequence");
|
||||
srna = RNA_def_struct(brna, "MetaSequence", "Strip");
|
||||
RNA_def_struct_ui_text(
|
||||
srna, "Meta Sequence", "Sequence strip to group other strips as a single sequence strip");
|
||||
RNA_def_struct_sdna(srna, "Sequence");
|
||||
RNA_def_struct_sdna(srna, "Strip");
|
||||
|
||||
prop = RNA_def_property(srna, "sequences", PROP_COLLECTION, PROP_NONE);
|
||||
RNA_def_property_collection_sdna(prop, nullptr, "seqbase", nullptr);
|
||||
RNA_def_property_struct_type(prop, "Sequence");
|
||||
RNA_def_property_struct_type(prop, "Strip");
|
||||
RNA_def_property_ui_text(prop, "Sequences", "Sequences nested in meta strip");
|
||||
RNA_api_sequences(brna, prop, true);
|
||||
|
||||
@@ -2816,10 +2811,10 @@ static void rna_def_scene(BlenderRNA *brna)
|
||||
{0, nullptr, 0, nullptr, nullptr},
|
||||
};
|
||||
|
||||
srna = RNA_def_struct(brna, "SceneSequence", "Sequence");
|
||||
srna = RNA_def_struct(brna, "SceneSequence", "Strip");
|
||||
RNA_def_struct_ui_text(
|
||||
srna, "Scene Sequence", "Sequence strip using the rendered image of a scene");
|
||||
RNA_def_struct_sdna(srna, "Sequence");
|
||||
RNA_def_struct_sdna(srna, "Strip");
|
||||
|
||||
prop = RNA_def_property(srna, "scene", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
|
||||
@@ -2857,9 +2852,9 @@ static void rna_def_movie(BlenderRNA *brna)
|
||||
FunctionRNA *func;
|
||||
PropertyRNA *parm;
|
||||
|
||||
srna = RNA_def_struct(brna, "MovieSequence", "Sequence");
|
||||
srna = RNA_def_struct(brna, "MovieSequence", "Strip");
|
||||
RNA_def_struct_ui_text(srna, "Movie Sequence", "Sequence strip to load a video");
|
||||
RNA_def_struct_sdna(srna, "Sequence");
|
||||
RNA_def_struct_sdna(srna, "Strip");
|
||||
|
||||
prop = RNA_def_property(srna, "stream_index", PROP_INT, PROP_NONE);
|
||||
RNA_def_property_int_sdna(prop, nullptr, "streamindex");
|
||||
@@ -2957,10 +2952,10 @@ static void rna_def_movieclip(BlenderRNA *brna)
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
srna = RNA_def_struct(brna, "MovieClipSequence", "Sequence");
|
||||
srna = RNA_def_struct(brna, "MovieClipSequence", "Strip");
|
||||
RNA_def_struct_ui_text(
|
||||
srna, "MovieClip Sequence", "Sequence strip to load a video from the clip editor");
|
||||
RNA_def_struct_sdna(srna, "Sequence");
|
||||
RNA_def_struct_sdna(srna, "Strip");
|
||||
|
||||
prop = RNA_def_property(srna, "clip", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
@@ -2987,9 +2982,9 @@ static void rna_def_mask(BlenderRNA *brna)
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
srna = RNA_def_struct(brna, "MaskSequence", "Sequence");
|
||||
srna = RNA_def_struct(brna, "MaskSequence", "Strip");
|
||||
RNA_def_struct_ui_text(srna, "Mask Sequence", "Sequence strip to load a video from a mask");
|
||||
RNA_def_struct_sdna(srna, "Sequence");
|
||||
RNA_def_struct_sdna(srna, "Strip");
|
||||
|
||||
prop = RNA_def_property(srna, "mask", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
@@ -3005,11 +3000,11 @@ static void rna_def_sound(BlenderRNA *brna)
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
srna = RNA_def_struct(brna, "SoundSequence", "Sequence");
|
||||
srna = RNA_def_struct(brna, "SoundSequence", "Strip");
|
||||
RNA_def_struct_ui_text(srna,
|
||||
"Sound Sequence",
|
||||
"Sequence strip defining a sound to be played over a period of time");
|
||||
RNA_def_struct_sdna(srna, "Sequence");
|
||||
RNA_def_struct_sdna(srna, "Strip");
|
||||
|
||||
prop = RNA_def_property(srna, "sound", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
@@ -3053,12 +3048,12 @@ static void rna_def_effect(BlenderRNA *brna)
|
||||
{
|
||||
StructRNA *srna;
|
||||
|
||||
srna = RNA_def_struct(brna, "EffectSequence", "Sequence");
|
||||
srna = RNA_def_struct(brna, "EffectSequence", "Strip");
|
||||
RNA_def_struct_ui_text(
|
||||
srna,
|
||||
"Effect Sequence",
|
||||
"Sequence strip applying an effect on the images created by other strips");
|
||||
RNA_def_struct_sdna(srna, "Sequence");
|
||||
RNA_def_struct_sdna(srna, "Strip");
|
||||
|
||||
rna_def_filter_video(srna);
|
||||
rna_def_proxy(srna);
|
||||
@@ -3604,7 +3599,7 @@ static void rna_def_effects(BlenderRNA *brna)
|
||||
for (effect = def_effects; effect->struct_name[0] != '\0'; effect++) {
|
||||
srna = RNA_def_struct(brna, effect->struct_name, "EffectSequence");
|
||||
RNA_def_struct_ui_text(srna, effect->ui_name, effect->ui_desc);
|
||||
RNA_def_struct_sdna(srna, "Sequence");
|
||||
RNA_def_struct_sdna(srna, "Strip");
|
||||
|
||||
rna_def_effect_inputs(srna, effect->inputs);
|
||||
|
||||
|
||||
@@ -52,16 +52,16 @@
|
||||
|
||||
# include "WM_api.hh"
|
||||
|
||||
static StripElem *rna_Sequence_strip_elem_from_frame(ID *id, Sequence *self, int timeline_frame)
|
||||
static StripElem *rna_Sequence_strip_elem_from_frame(ID *id, Strip *self, int timeline_frame)
|
||||
{
|
||||
Scene *scene = (Scene *)id;
|
||||
return SEQ_render_give_stripelem(scene, self, timeline_frame);
|
||||
}
|
||||
|
||||
static void rna_Sequence_swap_internal(ID *id,
|
||||
Sequence *seq_self,
|
||||
Strip *seq_self,
|
||||
ReportList *reports,
|
||||
Sequence *seq_other)
|
||||
Strip *seq_other)
|
||||
{
|
||||
const char *error_msg;
|
||||
Scene *scene = (Scene *)id;
|
||||
@@ -72,7 +72,7 @@ static void rna_Sequence_swap_internal(ID *id,
|
||||
}
|
||||
|
||||
static void rna_Sequences_move_strip_to_meta(
|
||||
ID *id, Sequence *seq_self, Main *bmain, ReportList *reports, Sequence *meta_dst)
|
||||
ID *id, Strip *seq_self, Main *bmain, ReportList *reports, Strip *meta_dst)
|
||||
{
|
||||
Scene *scene = (Scene *)id;
|
||||
const char *error_msg;
|
||||
@@ -91,14 +91,14 @@ static void rna_Sequences_move_strip_to_meta(
|
||||
WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene);
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequence_split(
|
||||
ID *id, Sequence *seq, Main *bmain, ReportList *reports, int frame, int split_method)
|
||||
static Strip *rna_Sequence_split(
|
||||
ID *id, Strip *seq, Main *bmain, ReportList *reports, int frame, int split_method)
|
||||
{
|
||||
Scene *scene = (Scene *)id;
|
||||
ListBase *seqbase = SEQ_get_seqbase_by_seq(scene, seq);
|
||||
|
||||
const char *error_msg = nullptr;
|
||||
Sequence *r_seq = SEQ_edit_strip_split(
|
||||
Strip *r_seq = SEQ_edit_strip_split(
|
||||
bmain, scene, seqbase, seq, frame, eSeqSplitMethod(split_method), &error_msg);
|
||||
if (error_msg != nullptr) {
|
||||
BKE_report(reports, RPT_ERROR, error_msg);
|
||||
@@ -113,7 +113,7 @@ static Sequence *rna_Sequence_split(
|
||||
return r_seq;
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequence_parent_meta(ID *id, Sequence *seq_self)
|
||||
static Strip *rna_Sequence_parent_meta(ID *id, Strip *seq_self)
|
||||
{
|
||||
Scene *scene = (Scene *)id;
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
@@ -121,19 +121,19 @@ static Sequence *rna_Sequence_parent_meta(ID *id, Sequence *seq_self)
|
||||
return SEQ_find_metastrip_by_sequence(&ed->seqbase, nullptr, seq_self);
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequences_new_clip(ID *id,
|
||||
ListBase *seqbase,
|
||||
Main *bmain,
|
||||
const char *name,
|
||||
MovieClip *clip,
|
||||
int channel,
|
||||
int frame_start)
|
||||
static Strip *rna_Sequences_new_clip(ID *id,
|
||||
ListBase *seqbase,
|
||||
Main *bmain,
|
||||
const char *name,
|
||||
MovieClip *clip,
|
||||
int channel,
|
||||
int frame_start)
|
||||
{
|
||||
Scene *scene = (Scene *)id;
|
||||
SeqLoadData load_data;
|
||||
SEQ_add_load_data_init(&load_data, name, nullptr, frame_start, channel);
|
||||
load_data.clip = clip;
|
||||
Sequence *seq = SEQ_add_movieclip_strip(scene, seqbase, &load_data);
|
||||
Strip *seq = SEQ_add_movieclip_strip(scene, seqbase, &load_data);
|
||||
|
||||
DEG_relations_tag_update(bmain);
|
||||
DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS);
|
||||
@@ -142,41 +142,41 @@ static Sequence *rna_Sequences_new_clip(ID *id,
|
||||
return seq;
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequences_editing_new_clip(ID *id,
|
||||
Editing *ed,
|
||||
Main *bmain,
|
||||
const char *name,
|
||||
MovieClip *clip,
|
||||
int channel,
|
||||
int frame_start)
|
||||
{
|
||||
return rna_Sequences_new_clip(id, &ed->seqbase, bmain, name, clip, channel, frame_start);
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequences_meta_new_clip(ID *id,
|
||||
Sequence *seq,
|
||||
static Strip *rna_Sequences_editing_new_clip(ID *id,
|
||||
Editing *ed,
|
||||
Main *bmain,
|
||||
const char *name,
|
||||
MovieClip *clip,
|
||||
int channel,
|
||||
int frame_start)
|
||||
{
|
||||
return rna_Sequences_new_clip(id, &ed->seqbase, bmain, name, clip, channel, frame_start);
|
||||
}
|
||||
|
||||
static Strip *rna_Sequences_meta_new_clip(ID *id,
|
||||
Strip *seq,
|
||||
Main *bmain,
|
||||
const char *name,
|
||||
MovieClip *clip,
|
||||
int channel,
|
||||
int frame_start)
|
||||
{
|
||||
return rna_Sequences_new_clip(id, &seq->seqbase, bmain, name, clip, channel, frame_start);
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequences_new_mask(ID *id,
|
||||
ListBase *seqbase,
|
||||
Main *bmain,
|
||||
const char *name,
|
||||
Mask *mask,
|
||||
int channel,
|
||||
int frame_start)
|
||||
static Strip *rna_Sequences_new_mask(ID *id,
|
||||
ListBase *seqbase,
|
||||
Main *bmain,
|
||||
const char *name,
|
||||
Mask *mask,
|
||||
int channel,
|
||||
int frame_start)
|
||||
{
|
||||
Scene *scene = (Scene *)id;
|
||||
SeqLoadData load_data;
|
||||
SEQ_add_load_data_init(&load_data, name, nullptr, frame_start, channel);
|
||||
load_data.mask = mask;
|
||||
Sequence *seq = SEQ_add_mask_strip(scene, seqbase, &load_data);
|
||||
Strip *seq = SEQ_add_mask_strip(scene, seqbase, &load_data);
|
||||
|
||||
DEG_relations_tag_update(bmain);
|
||||
DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS);
|
||||
@@ -184,31 +184,31 @@ static Sequence *rna_Sequences_new_mask(ID *id,
|
||||
|
||||
return seq;
|
||||
}
|
||||
static Sequence *rna_Sequences_editing_new_mask(
|
||||
static Strip *rna_Sequences_editing_new_mask(
|
||||
ID *id, Editing *ed, Main *bmain, const char *name, Mask *mask, int channel, int frame_start)
|
||||
{
|
||||
return rna_Sequences_new_mask(id, &ed->seqbase, bmain, name, mask, channel, frame_start);
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequences_meta_new_mask(
|
||||
ID *id, Sequence *seq, Main *bmain, const char *name, Mask *mask, int channel, int frame_start)
|
||||
static Strip *rna_Sequences_meta_new_mask(
|
||||
ID *id, Strip *seq, Main *bmain, const char *name, Mask *mask, int channel, int frame_start)
|
||||
{
|
||||
return rna_Sequences_new_mask(id, &seq->seqbase, bmain, name, mask, channel, frame_start);
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequences_new_scene(ID *id,
|
||||
ListBase *seqbase,
|
||||
Main *bmain,
|
||||
const char *name,
|
||||
Scene *sce_seq,
|
||||
int channel,
|
||||
int frame_start)
|
||||
static Strip *rna_Sequences_new_scene(ID *id,
|
||||
ListBase *seqbase,
|
||||
Main *bmain,
|
||||
const char *name,
|
||||
Scene *sce_seq,
|
||||
int channel,
|
||||
int frame_start)
|
||||
{
|
||||
Scene *scene = (Scene *)id;
|
||||
SeqLoadData load_data;
|
||||
SEQ_add_load_data_init(&load_data, name, nullptr, frame_start, channel);
|
||||
load_data.scene = sce_seq;
|
||||
Sequence *seq = SEQ_add_scene_strip(scene, seqbase, &load_data);
|
||||
Strip *seq = SEQ_add_scene_strip(scene, seqbase, &load_data);
|
||||
|
||||
DEG_relations_tag_update(bmain);
|
||||
DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS);
|
||||
@@ -217,37 +217,37 @@ static Sequence *rna_Sequences_new_scene(ID *id,
|
||||
return seq;
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequences_editing_new_scene(ID *id,
|
||||
Editing *ed,
|
||||
Main *bmain,
|
||||
const char *name,
|
||||
Scene *sce_seq,
|
||||
int channel,
|
||||
int frame_start)
|
||||
{
|
||||
return rna_Sequences_new_scene(id, &ed->seqbase, bmain, name, sce_seq, channel, frame_start);
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequences_meta_new_scene(ID *id,
|
||||
Sequence *seq,
|
||||
static Strip *rna_Sequences_editing_new_scene(ID *id,
|
||||
Editing *ed,
|
||||
Main *bmain,
|
||||
const char *name,
|
||||
Scene *sce_seq,
|
||||
int channel,
|
||||
int frame_start)
|
||||
{
|
||||
return rna_Sequences_new_scene(id, &ed->seqbase, bmain, name, sce_seq, channel, frame_start);
|
||||
}
|
||||
|
||||
static Strip *rna_Sequences_meta_new_scene(ID *id,
|
||||
Strip *seq,
|
||||
Main *bmain,
|
||||
const char *name,
|
||||
Scene *sce_seq,
|
||||
int channel,
|
||||
int frame_start)
|
||||
{
|
||||
return rna_Sequences_new_scene(id, &seq->seqbase, bmain, name, sce_seq, channel, frame_start);
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequences_new_image(ID *id,
|
||||
ListBase *seqbase,
|
||||
Main *bmain,
|
||||
ReportList * /*reports*/,
|
||||
const char *name,
|
||||
const char *file,
|
||||
int channel,
|
||||
int frame_start,
|
||||
int fit_method)
|
||||
static Strip *rna_Sequences_new_image(ID *id,
|
||||
ListBase *seqbase,
|
||||
Main *bmain,
|
||||
ReportList * /*reports*/,
|
||||
const char *name,
|
||||
const char *file,
|
||||
int channel,
|
||||
int frame_start,
|
||||
int fit_method)
|
||||
{
|
||||
Scene *scene = (Scene *)id;
|
||||
|
||||
@@ -255,7 +255,7 @@ static Sequence *rna_Sequences_new_image(ID *id,
|
||||
SEQ_add_load_data_init(&load_data, name, file, frame_start, channel);
|
||||
load_data.image.len = 1;
|
||||
load_data.fit_method = eSeqImageFitMethod(fit_method);
|
||||
Sequence *seq = SEQ_add_image_strip(bmain, scene, seqbase, &load_data);
|
||||
Strip *seq = SEQ_add_image_strip(bmain, scene, seqbase, &load_data);
|
||||
|
||||
char dirpath[FILE_MAX], filename[FILE_MAXFILE];
|
||||
BLI_path_split_dir_file(file, dirpath, sizeof(dirpath), filename, sizeof(filename));
|
||||
@@ -270,22 +270,8 @@ static Sequence *rna_Sequences_new_image(ID *id,
|
||||
return seq;
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequences_editing_new_image(ID *id,
|
||||
Editing *ed,
|
||||
Main *bmain,
|
||||
ReportList *reports,
|
||||
const char *name,
|
||||
const char *file,
|
||||
int channel,
|
||||
int frame_start,
|
||||
int fit_method)
|
||||
{
|
||||
return rna_Sequences_new_image(
|
||||
id, &ed->seqbase, bmain, reports, name, file, channel, frame_start, fit_method);
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequences_meta_new_image(ID *id,
|
||||
Sequence *seq,
|
||||
static Strip *rna_Sequences_editing_new_image(ID *id,
|
||||
Editing *ed,
|
||||
Main *bmain,
|
||||
ReportList *reports,
|
||||
const char *name,
|
||||
@@ -293,26 +279,40 @@ static Sequence *rna_Sequences_meta_new_image(ID *id,
|
||||
int channel,
|
||||
int frame_start,
|
||||
int fit_method)
|
||||
{
|
||||
return rna_Sequences_new_image(
|
||||
id, &ed->seqbase, bmain, reports, name, file, channel, frame_start, fit_method);
|
||||
}
|
||||
|
||||
static Strip *rna_Sequences_meta_new_image(ID *id,
|
||||
Strip *seq,
|
||||
Main *bmain,
|
||||
ReportList *reports,
|
||||
const char *name,
|
||||
const char *file,
|
||||
int channel,
|
||||
int frame_start,
|
||||
int fit_method)
|
||||
{
|
||||
return rna_Sequences_new_image(
|
||||
id, &seq->seqbase, bmain, reports, name, file, channel, frame_start, fit_method);
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequences_new_movie(ID *id,
|
||||
ListBase *seqbase,
|
||||
Main *bmain,
|
||||
const char *name,
|
||||
const char *file,
|
||||
int channel,
|
||||
int frame_start,
|
||||
int fit_method)
|
||||
static Strip *rna_Sequences_new_movie(ID *id,
|
||||
ListBase *seqbase,
|
||||
Main *bmain,
|
||||
const char *name,
|
||||
const char *file,
|
||||
int channel,
|
||||
int frame_start,
|
||||
int fit_method)
|
||||
{
|
||||
Scene *scene = (Scene *)id;
|
||||
SeqLoadData load_data;
|
||||
SEQ_add_load_data_init(&load_data, name, file, frame_start, channel);
|
||||
load_data.fit_method = eSeqImageFitMethod(fit_method);
|
||||
load_data.allow_invalid_file = true;
|
||||
Sequence *seq = SEQ_add_movie_strip(bmain, scene, seqbase, &load_data);
|
||||
Strip *seq = SEQ_add_movie_strip(bmain, scene, seqbase, &load_data);
|
||||
|
||||
DEG_relations_tag_update(bmain);
|
||||
DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS);
|
||||
@@ -321,47 +321,47 @@ static Sequence *rna_Sequences_new_movie(ID *id,
|
||||
return seq;
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequences_editing_new_movie(ID *id,
|
||||
Editing *ed,
|
||||
Main *bmain,
|
||||
const char *name,
|
||||
const char *file,
|
||||
int channel,
|
||||
int frame_start,
|
||||
int fit_method)
|
||||
{
|
||||
return rna_Sequences_new_movie(
|
||||
id, &ed->seqbase, bmain, name, file, channel, frame_start, fit_method);
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequences_meta_new_movie(ID *id,
|
||||
Sequence *seq,
|
||||
static Strip *rna_Sequences_editing_new_movie(ID *id,
|
||||
Editing *ed,
|
||||
Main *bmain,
|
||||
const char *name,
|
||||
const char *file,
|
||||
int channel,
|
||||
int frame_start,
|
||||
int fit_method)
|
||||
{
|
||||
return rna_Sequences_new_movie(
|
||||
id, &ed->seqbase, bmain, name, file, channel, frame_start, fit_method);
|
||||
}
|
||||
|
||||
static Strip *rna_Sequences_meta_new_movie(ID *id,
|
||||
Strip *seq,
|
||||
Main *bmain,
|
||||
const char *name,
|
||||
const char *file,
|
||||
int channel,
|
||||
int frame_start,
|
||||
int fit_method)
|
||||
{
|
||||
return rna_Sequences_new_movie(
|
||||
id, &seq->seqbase, bmain, name, file, channel, frame_start, fit_method);
|
||||
}
|
||||
|
||||
# ifdef WITH_AUDASPACE
|
||||
static Sequence *rna_Sequences_new_sound(ID *id,
|
||||
ListBase *seqbase,
|
||||
Main *bmain,
|
||||
ReportList *reports,
|
||||
const char *name,
|
||||
const char *file,
|
||||
int channel,
|
||||
int frame_start)
|
||||
static Strip *rna_Sequences_new_sound(ID *id,
|
||||
ListBase *seqbase,
|
||||
Main *bmain,
|
||||
ReportList *reports,
|
||||
const char *name,
|
||||
const char *file,
|
||||
int channel,
|
||||
int frame_start)
|
||||
{
|
||||
Scene *scene = (Scene *)id;
|
||||
SeqLoadData load_data;
|
||||
SEQ_add_load_data_init(&load_data, name, file, frame_start, channel);
|
||||
load_data.allow_invalid_file = true;
|
||||
Sequence *seq = SEQ_add_sound_strip(bmain, scene, seqbase, &load_data);
|
||||
Strip *seq = SEQ_add_sound_strip(bmain, scene, seqbase, &load_data);
|
||||
|
||||
if (seq == nullptr) {
|
||||
BKE_report(reports, RPT_ERROR, "Sequences.new_sound: unable to open sound file");
|
||||
@@ -375,41 +375,41 @@ static Sequence *rna_Sequences_new_sound(ID *id,
|
||||
return seq;
|
||||
}
|
||||
# else /* WITH_AUDASPACE */
|
||||
static Sequence *rna_Sequences_new_sound(ID * /*id*/,
|
||||
ListBase * /*seqbase*/,
|
||||
Main * /*bmain*/,
|
||||
ReportList *reports,
|
||||
const char * /*name*/,
|
||||
const char * /*file*/,
|
||||
int /*channel*/,
|
||||
int /*frame_start*/)
|
||||
static Strip *rna_Sequences_new_sound(ID * /*id*/,
|
||||
ListBase * /*seqbase*/,
|
||||
Main * /*bmain*/,
|
||||
ReportList *reports,
|
||||
const char * /*name*/,
|
||||
const char * /*file*/,
|
||||
int /*channel*/,
|
||||
int /*frame_start*/)
|
||||
{
|
||||
BKE_report(reports, RPT_ERROR, "Blender compiled without Audaspace support");
|
||||
return nullptr;
|
||||
}
|
||||
# endif /* WITH_AUDASPACE */
|
||||
|
||||
static Sequence *rna_Sequences_editing_new_sound(ID *id,
|
||||
Editing *ed,
|
||||
Main *bmain,
|
||||
ReportList *reports,
|
||||
const char *name,
|
||||
const char *file,
|
||||
int channel,
|
||||
int frame_start)
|
||||
{
|
||||
return rna_Sequences_new_sound(
|
||||
id, &ed->seqbase, bmain, reports, name, file, channel, frame_start);
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequences_meta_new_sound(ID *id,
|
||||
Sequence *seq,
|
||||
static Strip *rna_Sequences_editing_new_sound(ID *id,
|
||||
Editing *ed,
|
||||
Main *bmain,
|
||||
ReportList *reports,
|
||||
const char *name,
|
||||
const char *file,
|
||||
int channel,
|
||||
int frame_start)
|
||||
{
|
||||
return rna_Sequences_new_sound(
|
||||
id, &ed->seqbase, bmain, reports, name, file, channel, frame_start);
|
||||
}
|
||||
|
||||
static Strip *rna_Sequences_meta_new_sound(ID *id,
|
||||
Strip *seq,
|
||||
Main *bmain,
|
||||
ReportList *reports,
|
||||
const char *name,
|
||||
const char *file,
|
||||
int channel,
|
||||
int frame_start)
|
||||
{
|
||||
return rna_Sequences_new_sound(
|
||||
id, &seq->seqbase, bmain, reports, name, file, channel, frame_start);
|
||||
@@ -418,42 +418,42 @@ static Sequence *rna_Sequences_meta_new_sound(ID *id,
|
||||
/* Meta sequence
|
||||
* Possibility to create an empty meta to avoid plenty of meta toggling
|
||||
* Created meta have a length equal to 1, must be set through the API. */
|
||||
static Sequence *rna_Sequences_new_meta(
|
||||
static Strip *rna_Sequences_new_meta(
|
||||
ID *id, ListBase *seqbase, const char *name, int channel, int frame_start)
|
||||
{
|
||||
Scene *scene = (Scene *)id;
|
||||
SeqLoadData load_data;
|
||||
SEQ_add_load_data_init(&load_data, name, nullptr, frame_start, channel);
|
||||
Sequence *seqm = SEQ_add_meta_strip(scene, seqbase, &load_data);
|
||||
Strip *seqm = SEQ_add_meta_strip(scene, seqbase, &load_data);
|
||||
|
||||
return seqm;
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequences_editing_new_meta(
|
||||
static Strip *rna_Sequences_editing_new_meta(
|
||||
ID *id, Editing *ed, const char *name, int channel, int frame_start)
|
||||
{
|
||||
return rna_Sequences_new_meta(id, &ed->seqbase, name, channel, frame_start);
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequences_meta_new_meta(
|
||||
ID *id, Sequence *seq, const char *name, int channel, int frame_start)
|
||||
static Strip *rna_Sequences_meta_new_meta(
|
||||
ID *id, Strip *seq, const char *name, int channel, int frame_start)
|
||||
{
|
||||
return rna_Sequences_new_meta(id, &seq->seqbase, name, channel, frame_start);
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequences_new_effect(ID *id,
|
||||
ListBase *seqbase,
|
||||
ReportList *reports,
|
||||
const char *name,
|
||||
int type,
|
||||
int channel,
|
||||
int frame_start,
|
||||
int frame_end,
|
||||
Sequence *seq1,
|
||||
Sequence *seq2)
|
||||
static Strip *rna_Sequences_new_effect(ID *id,
|
||||
ListBase *seqbase,
|
||||
ReportList *reports,
|
||||
const char *name,
|
||||
int type,
|
||||
int channel,
|
||||
int frame_start,
|
||||
int frame_end,
|
||||
Strip *seq1,
|
||||
Strip *seq2)
|
||||
{
|
||||
Scene *scene = (Scene *)id;
|
||||
Sequence *seq;
|
||||
Strip *seq;
|
||||
const int num_inputs = SEQ_effect_get_num_inputs(type);
|
||||
|
||||
switch (num_inputs) {
|
||||
@@ -498,31 +498,31 @@ static Sequence *rna_Sequences_new_effect(ID *id,
|
||||
return seq;
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequences_editing_new_effect(ID *id,
|
||||
Editing *ed,
|
||||
ReportList *reports,
|
||||
const char *name,
|
||||
int type,
|
||||
int channel,
|
||||
int frame_start,
|
||||
int frame_end,
|
||||
Sequence *seq1,
|
||||
Sequence *seq2)
|
||||
{
|
||||
return rna_Sequences_new_effect(
|
||||
id, &ed->seqbase, reports, name, type, channel, frame_start, frame_end, seq1, seq2);
|
||||
}
|
||||
|
||||
static Sequence *rna_Sequences_meta_new_effect(ID *id,
|
||||
Sequence *seq,
|
||||
static Strip *rna_Sequences_editing_new_effect(ID *id,
|
||||
Editing *ed,
|
||||
ReportList *reports,
|
||||
const char *name,
|
||||
int type,
|
||||
int channel,
|
||||
int frame_start,
|
||||
int frame_end,
|
||||
Sequence *seq1,
|
||||
Sequence *seq2)
|
||||
Strip *seq1,
|
||||
Strip *seq2)
|
||||
{
|
||||
return rna_Sequences_new_effect(
|
||||
id, &ed->seqbase, reports, name, type, channel, frame_start, frame_end, seq1, seq2);
|
||||
}
|
||||
|
||||
static Strip *rna_Sequences_meta_new_effect(ID *id,
|
||||
Strip *seq,
|
||||
ReportList *reports,
|
||||
const char *name,
|
||||
int type,
|
||||
int channel,
|
||||
int frame_start,
|
||||
int frame_end,
|
||||
Strip *seq1,
|
||||
Strip *seq2)
|
||||
{
|
||||
return rna_Sequences_new_effect(
|
||||
id, &seq->seqbase, reports, name, type, channel, frame_start, frame_end, seq1, seq2);
|
||||
@@ -531,12 +531,12 @@ static Sequence *rna_Sequences_meta_new_effect(ID *id,
|
||||
static void rna_Sequences_remove(
|
||||
ID *id, ListBase *seqbase, Main *bmain, ReportList *reports, PointerRNA *seq_ptr)
|
||||
{
|
||||
Sequence *seq = static_cast<Sequence *>(seq_ptr->data);
|
||||
Strip *seq = static_cast<Strip *>(seq_ptr->data);
|
||||
Scene *scene = (Scene *)id;
|
||||
|
||||
if (BLI_findindex(seqbase, seq) == -1) {
|
||||
BKE_reportf(
|
||||
reports, RPT_ERROR, "Sequence '%s' not in scene '%s'", seq->name + 2, scene->id.name + 2);
|
||||
reports, RPT_ERROR, "Strip '%s' not in scene '%s'", seq->name + 2, scene->id.name + 2);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -556,12 +556,12 @@ static void rna_Sequences_editing_remove(
|
||||
}
|
||||
|
||||
static void rna_Sequences_meta_remove(
|
||||
ID *id, Sequence *seq, Main *bmain, ReportList *reports, PointerRNA *seq_ptr)
|
||||
ID *id, Strip *seq, Main *bmain, ReportList *reports, PointerRNA *seq_ptr)
|
||||
{
|
||||
rna_Sequences_remove(id, &seq->seqbase, bmain, reports, seq_ptr);
|
||||
}
|
||||
|
||||
static StripElem *rna_SequenceElements_append(ID *id, Sequence *seq, const char *filename)
|
||||
static StripElem *rna_SequenceElements_append(ID *id, Strip *seq, const char *filename)
|
||||
{
|
||||
Scene *scene = (Scene *)id;
|
||||
StripElem *se;
|
||||
@@ -579,7 +579,7 @@ static StripElem *rna_SequenceElements_append(ID *id, Sequence *seq, const char
|
||||
return se;
|
||||
}
|
||||
|
||||
static void rna_SequenceElements_pop(ID *id, Sequence *seq, ReportList *reports, int index)
|
||||
static void rna_SequenceElements_pop(ID *id, Strip *seq, ReportList *reports, int index)
|
||||
{
|
||||
Scene *scene = (Scene *)id;
|
||||
StripElem *new_seq, *se;
|
||||
@@ -622,7 +622,7 @@ static void rna_SequenceElements_pop(ID *id, Sequence *seq, ReportList *reports,
|
||||
WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene);
|
||||
}
|
||||
|
||||
static void rna_Sequence_invalidate_cache_rnafunc(ID *id, Sequence *self, int type)
|
||||
static void rna_Sequence_invalidate_cache_rnafunc(ID *id, Strip *self, int type)
|
||||
{
|
||||
switch (type) {
|
||||
case SEQ_CACHE_STORE_RAW:
|
||||
@@ -637,7 +637,7 @@ static void rna_Sequence_invalidate_cache_rnafunc(ID *id, Sequence *self, int ty
|
||||
}
|
||||
}
|
||||
|
||||
static SeqRetimingKey *rna_Sequence_retiming_keys_add(ID *id, Sequence *seq, int timeline_frame)
|
||||
static SeqRetimingKey *rna_Sequence_retiming_keys_add(ID *id, Strip *seq, int timeline_frame)
|
||||
{
|
||||
Scene *scene = (Scene *)id;
|
||||
|
||||
@@ -648,7 +648,7 @@ static SeqRetimingKey *rna_Sequence_retiming_keys_add(ID *id, Sequence *seq, int
|
||||
return key;
|
||||
}
|
||||
|
||||
static void rna_Sequence_retiming_keys_reset(ID *id, Sequence *seq)
|
||||
static void rna_Sequence_retiming_keys_reset(ID *id, Strip *seq)
|
||||
{
|
||||
Scene *scene = (Scene *)id;
|
||||
|
||||
@@ -698,23 +698,20 @@ void RNA_api_sequence_strip(StructRNA *srna)
|
||||
func = RNA_def_function(srna, "swap", "rna_Sequence_swap_internal");
|
||||
RNA_def_function_flag(func, FUNC_USE_REPORTS | FUNC_USE_SELF_ID);
|
||||
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
||||
parm = RNA_def_pointer(func, "other", "Sequence", "Other", "");
|
||||
parm = RNA_def_pointer(func, "other", "Strip", "Other", "");
|
||||
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED);
|
||||
|
||||
func = RNA_def_function(srna, "move_to_meta", "rna_Sequences_move_strip_to_meta");
|
||||
RNA_def_function_flag(func, FUNC_USE_REPORTS | FUNC_USE_SELF_ID | FUNC_USE_MAIN);
|
||||
parm = RNA_def_pointer(func,
|
||||
"meta_sequence",
|
||||
"Sequence",
|
||||
"Destination Meta Sequence",
|
||||
"Meta to move the strip into");
|
||||
parm = RNA_def_pointer(
|
||||
func, "meta_sequence", "Strip", "Destination Meta Sequence", "Meta to move the strip into");
|
||||
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED);
|
||||
|
||||
func = RNA_def_function(srna, "parent_meta", "rna_Sequence_parent_meta");
|
||||
RNA_def_function_flag(func, FUNC_USE_SELF_ID);
|
||||
RNA_def_function_ui_description(func, "Parent meta");
|
||||
/* return type */
|
||||
parm = RNA_def_pointer(func, "sequence", "Sequence", "", "Parent Meta");
|
||||
parm = RNA_def_pointer(func, "sequence", "Strip", "", "Parent Meta");
|
||||
RNA_def_function_return(func, parm);
|
||||
|
||||
func = RNA_def_function(srna, "invalidate_cache", "rna_Sequence_invalidate_cache_rnafunc");
|
||||
@@ -733,7 +730,7 @@ void RNA_api_sequence_strip(StructRNA *srna)
|
||||
parm = RNA_def_enum(func, "split_method", seq_split_method_items, 0, "", "");
|
||||
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED);
|
||||
/* Return type. */
|
||||
parm = RNA_def_pointer(func, "sequence", "Sequence", "", "Right side Sequence");
|
||||
parm = RNA_def_pointer(func, "sequence", "Strip", "", "Right side Sequence");
|
||||
RNA_def_function_return(func, parm);
|
||||
}
|
||||
|
||||
@@ -745,7 +742,7 @@ void RNA_api_sequence_elements(BlenderRNA *brna, PropertyRNA *cprop)
|
||||
|
||||
RNA_def_property_srna(cprop, "SequenceElements");
|
||||
srna = RNA_def_struct(brna, "SequenceElements", nullptr);
|
||||
RNA_def_struct_sdna(srna, "Sequence");
|
||||
RNA_def_struct_sdna(srna, "Strip");
|
||||
RNA_def_struct_ui_text(srna, "SequenceElements", "Collection of SequenceElement");
|
||||
|
||||
func = RNA_def_function(srna, "append", "rna_SequenceElements_append");
|
||||
@@ -771,7 +768,7 @@ void RNA_api_sequence_retiming_keys(BlenderRNA *brna, PropertyRNA *cprop)
|
||||
|
||||
RNA_def_property_srna(cprop, "RetimingKeys");
|
||||
srna = RNA_def_struct(brna, "RetimingKeys", nullptr);
|
||||
RNA_def_struct_sdna(srna, "Sequence");
|
||||
RNA_def_struct_sdna(srna, "Strip");
|
||||
RNA_def_struct_ui_text(srna, "RetimingKeys", "Collection of RetimingKey");
|
||||
|
||||
FunctionRNA *func = RNA_def_function(srna, "add", "rna_Sequence_retiming_keys_add");
|
||||
@@ -841,7 +838,7 @@ void RNA_api_sequences(BlenderRNA *brna, PropertyRNA *cprop, const bool metastri
|
||||
if (metastrip) {
|
||||
RNA_def_property_srna(cprop, "SequencesMeta");
|
||||
srna = RNA_def_struct(brna, "SequencesMeta", nullptr);
|
||||
RNA_def_struct_sdna(srna, "Sequence");
|
||||
RNA_def_struct_sdna(srna, "Strip");
|
||||
|
||||
new_clip_func_name = "rna_Sequences_meta_new_clip";
|
||||
new_mask_func_name = "rna_Sequences_meta_new_mask";
|
||||
@@ -889,7 +886,7 @@ void RNA_api_sequences(BlenderRNA *brna, PropertyRNA *cprop, const bool metastri
|
||||
MAXFRAME);
|
||||
RNA_def_parameter_flags(parm, PropertyFlag(0), PARM_REQUIRED);
|
||||
/* return type */
|
||||
parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence");
|
||||
parm = RNA_def_pointer(func, "sequence", "Strip", "", "New Sequence");
|
||||
RNA_def_function_return(func, parm);
|
||||
|
||||
func = RNA_def_function(srna, "new_mask", new_mask_func_name);
|
||||
@@ -920,7 +917,7 @@ void RNA_api_sequences(BlenderRNA *brna, PropertyRNA *cprop, const bool metastri
|
||||
MAXFRAME);
|
||||
RNA_def_parameter_flags(parm, PropertyFlag(0), PARM_REQUIRED);
|
||||
/* return type */
|
||||
parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence");
|
||||
parm = RNA_def_pointer(func, "sequence", "Strip", "", "New Sequence");
|
||||
RNA_def_function_return(func, parm);
|
||||
|
||||
func = RNA_def_function(srna, "new_scene", new_scene_func_name);
|
||||
@@ -951,7 +948,7 @@ void RNA_api_sequences(BlenderRNA *brna, PropertyRNA *cprop, const bool metastri
|
||||
MAXFRAME);
|
||||
RNA_def_parameter_flags(parm, PropertyFlag(0), PARM_REQUIRED);
|
||||
/* return type */
|
||||
parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence");
|
||||
parm = RNA_def_pointer(func, "sequence", "Strip", "", "New Sequence");
|
||||
RNA_def_function_return(func, parm);
|
||||
|
||||
func = RNA_def_function(srna, "new_image", new_image_func_name);
|
||||
@@ -985,7 +982,7 @@ void RNA_api_sequences(BlenderRNA *brna, PropertyRNA *cprop, const bool metastri
|
||||
func, "fit_method", scale_fit_methods, SEQ_USE_ORIGINAL_SIZE, "Image Fit Method", nullptr);
|
||||
RNA_def_parameter_flags(parm, PropertyFlag(0), PARM_PYFUNC_OPTIONAL);
|
||||
/* return type */
|
||||
parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence");
|
||||
parm = RNA_def_pointer(func, "sequence", "Strip", "", "New Sequence");
|
||||
RNA_def_function_return(func, parm);
|
||||
|
||||
func = RNA_def_function(srna, "new_movie", new_movie_func_name);
|
||||
@@ -1019,7 +1016,7 @@ void RNA_api_sequences(BlenderRNA *brna, PropertyRNA *cprop, const bool metastri
|
||||
func, "fit_method", scale_fit_methods, SEQ_USE_ORIGINAL_SIZE, "Image Fit Method", nullptr);
|
||||
RNA_def_parameter_flags(parm, PropertyFlag(0), PARM_PYFUNC_OPTIONAL);
|
||||
/* return type */
|
||||
parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence");
|
||||
parm = RNA_def_pointer(func, "sequence", "Strip", "", "New Sequence");
|
||||
RNA_def_function_return(func, parm);
|
||||
|
||||
func = RNA_def_function(srna, "new_sound", new_sound_func_name);
|
||||
@@ -1050,7 +1047,7 @@ void RNA_api_sequences(BlenderRNA *brna, PropertyRNA *cprop, const bool metastri
|
||||
MAXFRAME);
|
||||
RNA_def_parameter_flags(parm, PropertyFlag(0), PARM_REQUIRED);
|
||||
/* return type */
|
||||
parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence");
|
||||
parm = RNA_def_pointer(func, "sequence", "Strip", "", "New Sequence");
|
||||
RNA_def_function_return(func, parm);
|
||||
|
||||
func = RNA_def_function(srna, "new_meta", new_meta_func_name);
|
||||
@@ -1079,7 +1076,7 @@ void RNA_api_sequences(BlenderRNA *brna, PropertyRNA *cprop, const bool metastri
|
||||
MAXFRAME);
|
||||
RNA_def_parameter_flags(parm, PropertyFlag(0), PARM_REQUIRED);
|
||||
/* return type */
|
||||
parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence");
|
||||
parm = RNA_def_pointer(func, "sequence", "Strip", "", "New Sequence");
|
||||
RNA_def_function_return(func, parm);
|
||||
|
||||
func = RNA_def_function(srna, "new_effect", new_effect_func_name);
|
||||
@@ -1119,16 +1116,16 @@ void RNA_api_sequences(BlenderRNA *brna, PropertyRNA *cprop, const bool metastri
|
||||
"The end frame for the new sequence",
|
||||
INT_MIN,
|
||||
INT_MAX);
|
||||
RNA_def_pointer(func, "seq1", "Sequence", "", "Sequence 1 for effect");
|
||||
RNA_def_pointer(func, "seq2", "Sequence", "", "Sequence 2 for effect");
|
||||
RNA_def_pointer(func, "seq1", "Strip", "", "Sequence 1 for effect");
|
||||
RNA_def_pointer(func, "seq2", "Strip", "", "Sequence 2 for effect");
|
||||
/* return type */
|
||||
parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence");
|
||||
parm = RNA_def_pointer(func, "sequence", "Strip", "", "New Sequence");
|
||||
RNA_def_function_return(func, parm);
|
||||
|
||||
func = RNA_def_function(srna, "remove", remove_func_name);
|
||||
RNA_def_function_flag(func, FUNC_USE_SELF_ID | FUNC_USE_REPORTS | FUNC_USE_MAIN);
|
||||
RNA_def_function_ui_description(func, "Remove a Sequence");
|
||||
parm = RNA_def_pointer(func, "sequence", "Sequence", "", "Sequence to remove");
|
||||
parm = RNA_def_pointer(func, "sequence", "Strip", "", "Sequence to remove");
|
||||
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
||||
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, ParameterFlag(0));
|
||||
}
|
||||
|
||||
@@ -2452,7 +2452,7 @@ static void seq_build_proxy(bContext *C, PointerRNA *ptr)
|
||||
wmJob *wm_job = ED_seq_proxy_wm_job_get(C);
|
||||
ProxyJob *pj = ED_seq_proxy_job_get(C, wm_job);
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, seqbase) {
|
||||
if (seq->type != SEQ_TYPE_MOVIE || seq->data == nullptr || seq->data->proxy == nullptr) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1446,7 +1446,7 @@ bool RE_seq_render_active(Scene *scene, RenderData *rd)
|
||||
return false;
|
||||
}
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, seq, &ed->seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, &ed->seqbase) {
|
||||
if (seq->type != SEQ_TYPE_SOUND_RAM && !SEQ_render_is_muted(&ed->channels, seq)) {
|
||||
return true;
|
||||
}
|
||||
@@ -1705,7 +1705,7 @@ static int check_valid_camera(Scene *scene, Object *camera_override, ReportList
|
||||
|
||||
if (RE_seq_render_active(scene, &scene->r)) {
|
||||
if (scene->ed) {
|
||||
LISTBASE_FOREACH (Sequence *, seq, &scene->ed->seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, seq, &scene->ed->seqbase) {
|
||||
if ((seq->type == SEQ_TYPE_SCENE) && ((seq->flag & SEQ_SCENE_STRIPS) == 0) &&
|
||||
(seq->scene != nullptr))
|
||||
{
|
||||
|
||||
@@ -17,7 +17,7 @@ struct Main;
|
||||
struct Mask;
|
||||
struct MovieClip;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
struct Stereo3dFormat;
|
||||
|
||||
/** #SeqLoadData.flags */
|
||||
@@ -46,8 +46,8 @@ struct SeqLoadData {
|
||||
struct {
|
||||
int type;
|
||||
int end_frame;
|
||||
Sequence *seq1;
|
||||
Sequence *seq2;
|
||||
Strip *seq1;
|
||||
Strip *seq2;
|
||||
} effect; /* Only for effect strips. */
|
||||
eSeqLoadFlags flags;
|
||||
eSeqImageFitMethod fit_method;
|
||||
@@ -80,10 +80,7 @@ void SEQ_add_load_data_init(
|
||||
* \param load_data: SeqLoadData with information necessary to create strip
|
||||
* \return created strip
|
||||
*/
|
||||
Sequence *SEQ_add_image_strip(Main *bmain,
|
||||
Scene *scene,
|
||||
ListBase *seqbase,
|
||||
SeqLoadData *load_data);
|
||||
Strip *SEQ_add_image_strip(Main *bmain, Scene *scene, ListBase *seqbase, SeqLoadData *load_data);
|
||||
/**
|
||||
* Add sound strip.
|
||||
* \note Use SEQ_add_image_set_directory() and SEQ_add_image_load_file() to load image sequences
|
||||
@@ -94,10 +91,7 @@ Sequence *SEQ_add_image_strip(Main *bmain,
|
||||
* \param load_data: SeqLoadData with information necessary to create strip
|
||||
* \return created strip
|
||||
*/
|
||||
Sequence *SEQ_add_sound_strip(Main *bmain,
|
||||
Scene *scene,
|
||||
ListBase *seqbase,
|
||||
SeqLoadData *load_data);
|
||||
Strip *SEQ_add_sound_strip(Main *bmain, Scene *scene, ListBase *seqbase, SeqLoadData *load_data);
|
||||
|
||||
/**
|
||||
* Sync up the sound strip 'seq' with the video data in 'load_data'.
|
||||
@@ -109,7 +103,7 @@ Sequence *SEQ_add_sound_strip(Main *bmain,
|
||||
* \param seq: The sound strip that will be synced
|
||||
* \param load_data: SeqLoadData with information necessary to sync the sound strip
|
||||
*/
|
||||
void SEQ_add_sound_av_sync(Main *bmain, Scene *scene, Sequence *seq, SeqLoadData *load_data);
|
||||
void SEQ_add_sound_av_sync(Main *bmain, Scene *scene, Strip *seq, SeqLoadData *load_data);
|
||||
/**
|
||||
* Add meta strip.
|
||||
*
|
||||
@@ -118,7 +112,7 @@ void SEQ_add_sound_av_sync(Main *bmain, Scene *scene, Sequence *seq, SeqLoadData
|
||||
* \param load_data: SeqLoadData with information necessary to create strip
|
||||
* \return created strip
|
||||
*/
|
||||
Sequence *SEQ_add_meta_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data);
|
||||
Strip *SEQ_add_meta_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data);
|
||||
/**
|
||||
* Add movie strip.
|
||||
*
|
||||
@@ -128,10 +122,7 @@ Sequence *SEQ_add_meta_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_
|
||||
* \param load_data: SeqLoadData with information necessary to create strip
|
||||
* \return created strip
|
||||
*/
|
||||
Sequence *SEQ_add_movie_strip(Main *bmain,
|
||||
Scene *scene,
|
||||
ListBase *seqbase,
|
||||
SeqLoadData *load_data);
|
||||
Strip *SEQ_add_movie_strip(Main *bmain, Scene *scene, ListBase *seqbase, SeqLoadData *load_data);
|
||||
/**
|
||||
* Add scene strip.
|
||||
*
|
||||
@@ -140,7 +131,7 @@ Sequence *SEQ_add_movie_strip(Main *bmain,
|
||||
* \param load_data: SeqLoadData with information necessary to create strip
|
||||
* \return created strip
|
||||
*/
|
||||
Sequence *SEQ_add_scene_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data);
|
||||
Strip *SEQ_add_scene_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data);
|
||||
/**
|
||||
* Add movieclip strip.
|
||||
*
|
||||
@@ -149,7 +140,7 @@ Sequence *SEQ_add_scene_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load
|
||||
* \param load_data: SeqLoadData with information necessary to create strip
|
||||
* \return created strip
|
||||
*/
|
||||
Sequence *SEQ_add_movieclip_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data);
|
||||
Strip *SEQ_add_movieclip_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data);
|
||||
/**
|
||||
* Add mask strip.
|
||||
*
|
||||
@@ -158,7 +149,7 @@ Sequence *SEQ_add_movieclip_strip(Scene *scene, ListBase *seqbase, SeqLoadData *
|
||||
* \param load_data: SeqLoadData with information necessary to create strip
|
||||
* \return created strip
|
||||
*/
|
||||
Sequence *SEQ_add_mask_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data);
|
||||
Strip *SEQ_add_mask_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data);
|
||||
/**
|
||||
* Add effect strip.
|
||||
*
|
||||
@@ -167,14 +158,14 @@ Sequence *SEQ_add_mask_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_
|
||||
* \param load_data: SeqLoadData with information necessary to create strip
|
||||
* \return created strip
|
||||
*/
|
||||
Sequence *SEQ_add_effect_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data);
|
||||
Strip *SEQ_add_effect_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data);
|
||||
/**
|
||||
* Set directory used by image strip.
|
||||
*
|
||||
* \param seq: image strip to be changed
|
||||
* \param path: directory path
|
||||
*/
|
||||
void SEQ_add_image_set_directory(Sequence *seq, const char *dirpath);
|
||||
void SEQ_add_image_set_directory(Strip *seq, const char *dirpath);
|
||||
/**
|
||||
* Set directory used by image strip.
|
||||
*
|
||||
@@ -182,16 +173,13 @@ void SEQ_add_image_set_directory(Sequence *seq, const char *dirpath);
|
||||
* \param strip_frame: frame index of strip to be changed
|
||||
* \param filename: image filename (only filename, not complete path)
|
||||
*/
|
||||
void SEQ_add_image_load_file(Scene *scene,
|
||||
Sequence *seq,
|
||||
size_t strip_frame,
|
||||
const char *filename);
|
||||
void SEQ_add_image_load_file(Scene *scene, Strip *seq, size_t strip_frame, const char *filename);
|
||||
/**
|
||||
* Set image strip alpha mode
|
||||
*
|
||||
* \param seq: image strip to be changed
|
||||
*/
|
||||
void SEQ_add_image_init_alpha_mode(Sequence *seq);
|
||||
void SEQ_add_reload_new_file(Main *bmain, Scene *scene, Sequence *seq, bool lock_range);
|
||||
void SEQ_add_image_init_alpha_mode(Strip *seq);
|
||||
void SEQ_add_reload_new_file(Main *bmain, Scene *scene, Strip *seq, bool lock_range);
|
||||
void SEQ_add_movie_reload_if_needed(
|
||||
Main *bmain, Scene *scene, Sequence *seq, bool *r_was_reloaded, bool *r_can_produce_frames);
|
||||
Main *bmain, Scene *scene, Strip *seq, bool *r_was_reloaded, bool *r_can_produce_frames);
|
||||
|
||||
@@ -15,17 +15,17 @@
|
||||
|
||||
struct ListBase;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
struct SeqAnimationBackup;
|
||||
|
||||
bool SEQ_animation_keyframes_exist(Scene *scene);
|
||||
bool SEQ_animation_drivers_exist(Scene *scene);
|
||||
void SEQ_free_animdata(Scene *scene, Sequence *seq);
|
||||
void SEQ_offset_animdata(Scene *scene, Sequence *seq, int ofs);
|
||||
void SEQ_free_animdata(Scene *scene, Strip *seq);
|
||||
void SEQ_offset_animdata(Scene *scene, Strip *seq, int ofs);
|
||||
/**
|
||||
* Return whether the fcurve targets the given sequence.
|
||||
*/
|
||||
bool SEQ_fcurve_matches(const Sequence &seq, const FCurve &fcurve);
|
||||
bool SEQ_fcurve_matches(const Strip &seq, const FCurve &fcurve);
|
||||
struct SeqAnimationBackup {
|
||||
/* `curves` and `channelbag` here represent effectively the same data (the
|
||||
* fcurves that animate the Scene that the sequence belongs to), just for
|
||||
@@ -47,6 +47,4 @@ void SEQ_animation_restore_original(Scene *scene, SeqAnimationBackup *backup);
|
||||
/**
|
||||
* Duplicate F-Curves and drivers used by `seq` from `backup` to `scene`.
|
||||
*/
|
||||
void SEQ_animation_duplicate_backup_to_scene(Scene *scene,
|
||||
Sequence *seq,
|
||||
SeqAnimationBackup *backup);
|
||||
void SEQ_animation_duplicate_backup_to_scene(Scene *scene, Strip *seq, SeqAnimationBackup *backup);
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
struct Editing;
|
||||
struct ListBase;
|
||||
struct SeqTimelineChannel;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
|
||||
ListBase *SEQ_channels_displayed_get(Editing *ed);
|
||||
void SEQ_channels_displayed_set(Editing *ed, ListBase *channels);
|
||||
@@ -24,4 +24,4 @@ char *SEQ_channel_name_get(ListBase *channels, int channel_index);
|
||||
bool SEQ_channel_is_locked(const SeqTimelineChannel *channel);
|
||||
bool SEQ_channel_is_muted(const SeqTimelineChannel *channel);
|
||||
int SEQ_channel_index_get(const SeqTimelineChannel *channel);
|
||||
ListBase *SEQ_get_channels_by_seq(ListBase *seqbase, ListBase *channels, const Sequence *seq);
|
||||
ListBase *SEQ_get_channels_by_seq(ListBase *seqbase, ListBase *channels, const Strip *seq);
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
#include "BLI_vector_set.hh"
|
||||
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
struct ListBase;
|
||||
|
||||
void SEQ_connections_duplicate(ListBase *connections_dst, ListBase *connections_src);
|
||||
@@ -20,35 +20,35 @@ void SEQ_connections_duplicate(ListBase *connections_dst, ListBase *connections_
|
||||
* frees the allocated memory as necessary. Returns false if any of the strips were not already
|
||||
* connected.
|
||||
*/
|
||||
bool SEQ_disconnect(Sequence *seq);
|
||||
bool SEQ_disconnect(blender::VectorSet<Sequence *> &seq_list);
|
||||
bool SEQ_disconnect(Strip *seq);
|
||||
bool SEQ_disconnect(blender::VectorSet<Strip *> &seq_list);
|
||||
|
||||
/**
|
||||
* Ensure that the strip has only bidirectional connections (expected behavior).
|
||||
*/
|
||||
void SEQ_cut_one_way_connections(Sequence *seq);
|
||||
void SEQ_cut_one_way_connections(Strip *seq);
|
||||
|
||||
/**
|
||||
* Connect strips so that they may be selected together. Any connections the
|
||||
* strips already have will be severed before reconnection.
|
||||
*/
|
||||
void SEQ_connect(Sequence *seq1, Sequence *seq2);
|
||||
void SEQ_connect(blender::VectorSet<Sequence *> &seq_list);
|
||||
void SEQ_connect(Strip *seq1, Strip *seq2);
|
||||
void SEQ_connect(blender::VectorSet<Strip *> &seq_list);
|
||||
|
||||
/**
|
||||
* Returns a list of strips that the `seq` is connected to.
|
||||
* NOTE: This does not include `seq` itself.
|
||||
* This list is empty if `seq` is not connected.
|
||||
*/
|
||||
blender::VectorSet<Sequence *> SEQ_get_connected_strips(const Sequence *seq);
|
||||
blender::VectorSet<Strip *> SEQ_get_connected_strips(const Strip *seq);
|
||||
|
||||
/**
|
||||
* Check whether a strip has any connections.
|
||||
*/
|
||||
bool SEQ_is_strip_connected(const Sequence *seq);
|
||||
bool SEQ_is_strip_connected(const Strip *seq);
|
||||
|
||||
/**
|
||||
* Check whether the list of strips are a single connection "group", that is, they are all
|
||||
* connected to each other and there are no outside connections.
|
||||
*/
|
||||
bool SEQ_are_strips_connected_together(blender::VectorSet<Sequence *> &seq_list);
|
||||
bool SEQ_are_strips_connected_together(blender::VectorSet<Strip *> &seq_list);
|
||||
|
||||
@@ -11,12 +11,9 @@
|
||||
struct ListBase;
|
||||
struct Main;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
|
||||
bool SEQ_edit_sequence_swap(Scene *scene,
|
||||
Sequence *seq_a,
|
||||
Sequence *seq_b,
|
||||
const char **r_error_str);
|
||||
bool SEQ_edit_sequence_swap(Scene *scene, Strip *seq_a, Strip *seq_b, const char **r_error_str);
|
||||
/**
|
||||
* Move sequence to seqbase.
|
||||
*
|
||||
@@ -27,7 +24,7 @@ bool SEQ_edit_sequence_swap(Scene *scene,
|
||||
*/
|
||||
bool SEQ_edit_move_strip_to_seqbase(Scene *scene,
|
||||
ListBase *seqbase,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
ListBase *dst_seqbase);
|
||||
/**
|
||||
* Move sequence to meta sequence.
|
||||
@@ -38,13 +35,13 @@ bool SEQ_edit_move_strip_to_seqbase(Scene *scene,
|
||||
* \param r_error_str: Error message
|
||||
*/
|
||||
bool SEQ_edit_move_strip_to_meta(Scene *scene,
|
||||
Sequence *src_seq,
|
||||
Sequence *dst_seqm,
|
||||
Strip *src_seq,
|
||||
Strip *dst_seqm,
|
||||
const char **r_error_str);
|
||||
/**
|
||||
* Flag seq and its users (effects) for removal.
|
||||
*/
|
||||
void SEQ_edit_flag_for_removal(Scene *scene, ListBase *seqbase, Sequence *seq);
|
||||
void SEQ_edit_flag_for_removal(Scene *scene, ListBase *seqbase, Strip *seq);
|
||||
/**
|
||||
* Remove all flagged sequences, return true if sequence is removed.
|
||||
*/
|
||||
@@ -67,13 +64,13 @@ enum eSeqSplitMethod {
|
||||
* \param method: affects type of offset to be applied to resize Sequence
|
||||
* \return The newly created sequence strip. This is always Sequence on right side.
|
||||
*/
|
||||
Sequence *SEQ_edit_strip_split(Main *bmain,
|
||||
Scene *scene,
|
||||
ListBase *seqbase,
|
||||
Sequence *seq,
|
||||
int timeline_frame,
|
||||
eSeqSplitMethod method,
|
||||
const char **r_error);
|
||||
Strip *SEQ_edit_strip_split(Main *bmain,
|
||||
Scene *scene,
|
||||
ListBase *seqbase,
|
||||
Strip *seq,
|
||||
int timeline_frame,
|
||||
eSeqSplitMethod method,
|
||||
const char **r_error);
|
||||
/**
|
||||
* Find gap after initial_frame and move strips on right side to close the gap
|
||||
*
|
||||
@@ -87,4 +84,4 @@ bool SEQ_edit_remove_gaps(Scene *scene,
|
||||
ListBase *seqbase,
|
||||
int initial_frame,
|
||||
bool remove_all_gaps);
|
||||
void SEQ_edit_sequence_name_set(Scene *scene, Sequence *seq, const char *new_name);
|
||||
void SEQ_edit_sequence_name_set(Scene *scene, Strip *seq, const char *new_name);
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
struct ImBuf;
|
||||
struct SeqRenderData;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
struct TextVars;
|
||||
|
||||
enum class StripEarlyOut {
|
||||
@@ -36,7 +36,7 @@ enum {
|
||||
struct SeqEffectHandle {
|
||||
/* constructors & destructor */
|
||||
/* init is _only_ called on first creation */
|
||||
void (*init)(Sequence *seq);
|
||||
void (*init)(Strip *seq);
|
||||
|
||||
/* number of input strips needed
|
||||
* (called directly after construction) */
|
||||
@@ -44,36 +44,33 @@ struct SeqEffectHandle {
|
||||
|
||||
/* load is called first time after readblenfile in
|
||||
* get_sequence_effect automatically */
|
||||
void (*load)(Sequence *seqconst);
|
||||
void (*load)(Strip *seqconst);
|
||||
|
||||
/* duplicate */
|
||||
void (*copy)(Sequence *dst, const Sequence *src, int flag);
|
||||
void (*copy)(Strip *dst, const Strip *src, int flag);
|
||||
|
||||
/* destruct */
|
||||
void (*free)(Sequence *seq, bool do_id_user);
|
||||
void (*free)(Strip *seq, bool do_id_user);
|
||||
|
||||
StripEarlyOut (*early_out)(const Sequence *seq, float fac);
|
||||
StripEarlyOut (*early_out)(const Strip *seq, float fac);
|
||||
|
||||
/* sets the default `fac` value */
|
||||
void (*get_default_fac)(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
float timeline_frame,
|
||||
float *fac);
|
||||
void (*get_default_fac)(const Scene *scene, const Strip *seq, float timeline_frame, float *fac);
|
||||
|
||||
/* execute the effect */
|
||||
ImBuf *(*execute)(const SeqRenderData *context,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
float timeline_frame,
|
||||
float fac,
|
||||
ImBuf *ibuf1,
|
||||
ImBuf *ibuf2);
|
||||
};
|
||||
|
||||
SeqEffectHandle SEQ_effect_handle_get(Sequence *seq);
|
||||
SeqEffectHandle SEQ_effect_handle_get(Strip *seq);
|
||||
int SEQ_effect_get_num_inputs(int seq_type);
|
||||
void SEQ_effect_text_font_unload(TextVars *data, bool do_id_user);
|
||||
void SEQ_effect_text_font_load(TextVars *data, bool do_id_user);
|
||||
bool SEQ_effects_can_render_text(const Sequence *seq);
|
||||
bool SEQ_effects_can_render_text(const Strip *seq);
|
||||
|
||||
namespace blender::seq {
|
||||
|
||||
|
||||
@@ -10,12 +10,12 @@
|
||||
|
||||
#include "BLI_vector_set.hh"
|
||||
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
|
||||
/**
|
||||
* Callback format for the for_each function below.
|
||||
*/
|
||||
using SeqForEachFunc = bool (*)(Sequence *seq, void *user_data);
|
||||
using SeqForEachFunc = bool (*)(Strip *seq, void *user_data);
|
||||
|
||||
/**
|
||||
* Utility function to recursively iterate through all sequence strips in a `seqbase` list.
|
||||
@@ -38,11 +38,11 @@ void SEQ_for_each_callback(ListBase *seqbase, SeqForEachFunc callback, void *use
|
||||
*/
|
||||
void SEQ_iterator_set_expand(const Scene *scene,
|
||||
ListBase *seqbase,
|
||||
blender::VectorSet<Sequence *> &strips,
|
||||
blender::VectorSet<Strip *> &strips,
|
||||
void seq_query_func(const Scene *scene,
|
||||
Sequence *seq_reference,
|
||||
Strip *seq_reference,
|
||||
ListBase *seqbase,
|
||||
blender::VectorSet<Sequence *> &strips));
|
||||
blender::VectorSet<Strip *> &strips));
|
||||
/**
|
||||
* Query strips from seqbase. seq_reference is used by query function as filter condition.
|
||||
*
|
||||
@@ -51,42 +51,42 @@ void SEQ_iterator_set_expand(const Scene *scene,
|
||||
* \param seq_query_func: query function callback
|
||||
* \return set of strips
|
||||
*/
|
||||
blender::VectorSet<Sequence *> SEQ_query_by_reference(
|
||||
Sequence *seq_reference,
|
||||
blender::VectorSet<Strip *> SEQ_query_by_reference(
|
||||
Strip *seq_reference,
|
||||
const Scene *scene,
|
||||
ListBase *seqbase,
|
||||
void seq_query_func(const Scene *scene,
|
||||
Sequence *seq_reference,
|
||||
Strip *seq_reference,
|
||||
ListBase *seqbase,
|
||||
blender::VectorSet<Sequence *> &strips));
|
||||
blender::VectorSet<Strip *> &strips));
|
||||
/**
|
||||
* Query all selected strips in seqbase.
|
||||
*
|
||||
* \param seqbase: ListBase in which strips are queried
|
||||
* \return set of strips
|
||||
*/
|
||||
blender::VectorSet<Sequence *> SEQ_query_selected_strips(ListBase *seqbase);
|
||||
blender::VectorSet<Strip *> SEQ_query_selected_strips(ListBase *seqbase);
|
||||
/**
|
||||
* Query all unselected strips in seqbase.
|
||||
*
|
||||
* \param seqbase: ListBase in which strips are queried
|
||||
* \return set of strips
|
||||
*/
|
||||
blender::VectorSet<Sequence *> SEQ_query_unselected_strips(ListBase *seqbase);
|
||||
blender::VectorSet<Strip *> SEQ_query_unselected_strips(ListBase *seqbase);
|
||||
/**
|
||||
* Query all strips in seqbase. This does not include strips nested in meta strips.
|
||||
*
|
||||
* \param seqbase: ListBase in which strips are queried
|
||||
* \return set of strips
|
||||
*/
|
||||
blender::VectorSet<Sequence *> SEQ_query_all_strips(ListBase *seqbase);
|
||||
blender::VectorSet<Strip *> SEQ_query_all_strips(ListBase *seqbase);
|
||||
/**
|
||||
* Query all strips in seqbase and nested meta strips.
|
||||
*
|
||||
* \param seqbase: ListBase in which strips are queried
|
||||
* \return set of strips
|
||||
*/
|
||||
blender::VectorSet<Sequence *> SEQ_query_all_strips_recursive(const ListBase *seqbase);
|
||||
blender::VectorSet<Strip *> SEQ_query_all_strips_recursive(const ListBase *seqbase);
|
||||
|
||||
/**
|
||||
* Query all effect strips that are directly or indirectly connected to seq_reference.
|
||||
@@ -98,9 +98,9 @@ blender::VectorSet<Sequence *> SEQ_query_all_strips_recursive(const ListBase *se
|
||||
* \param strips: set of strips to be filled
|
||||
*/
|
||||
void SEQ_query_strip_effect_chain(const Scene *scene,
|
||||
Sequence *seq_reference,
|
||||
Strip *seq_reference,
|
||||
ListBase *seqbase,
|
||||
blender::VectorSet<Sequence *> &strips);
|
||||
blender::VectorSet<Strip *> &strips);
|
||||
|
||||
/**
|
||||
* Query strips that are rendered at \a timeline_frame when \a displayed channel is viewed
|
||||
@@ -110,8 +110,8 @@ void SEQ_query_strip_effect_chain(const Scene *scene,
|
||||
* \param displayed_channel: viewed channel. when set to 0, no channel filter is applied
|
||||
* \return set of strips
|
||||
*/
|
||||
blender::VectorSet<Sequence *> SEQ_query_rendered_strips(const Scene *scene,
|
||||
ListBase *channels,
|
||||
ListBase *seqbase,
|
||||
int timeline_frame,
|
||||
int displayed_channel);
|
||||
blender::VectorSet<Strip *> SEQ_query_rendered_strips(const Scene *scene,
|
||||
ListBase *channels,
|
||||
ListBase *seqbase,
|
||||
int timeline_frame,
|
||||
int displayed_channel);
|
||||
|
||||
@@ -13,7 +13,7 @@ struct BlendWriter;
|
||||
struct ImBuf;
|
||||
struct ListBase;
|
||||
struct SeqRenderData;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
struct SequenceModifierData;
|
||||
struct StripScreenQuad;
|
||||
|
||||
@@ -45,18 +45,18 @@ struct SequenceModifierTypeInfo {
|
||||
};
|
||||
|
||||
const SequenceModifierTypeInfo *SEQ_modifier_type_info_get(int type);
|
||||
SequenceModifierData *SEQ_modifier_new(Sequence *seq, const char *name, int type);
|
||||
bool SEQ_modifier_remove(Sequence *seq, SequenceModifierData *smd);
|
||||
void SEQ_modifier_clear(Sequence *seq);
|
||||
SequenceModifierData *SEQ_modifier_new(Strip *seq, const char *name, int type);
|
||||
bool SEQ_modifier_remove(Strip *seq, SequenceModifierData *smd);
|
||||
void SEQ_modifier_clear(Strip *seq);
|
||||
void SEQ_modifier_free(SequenceModifierData *smd);
|
||||
void SEQ_modifier_unique_name(Sequence *seq, SequenceModifierData *smd);
|
||||
SequenceModifierData *SEQ_modifier_find_by_name(Sequence *seq, const char *name);
|
||||
void SEQ_modifier_unique_name(Strip *seq, SequenceModifierData *smd);
|
||||
SequenceModifierData *SEQ_modifier_find_by_name(Strip *seq, const char *name);
|
||||
void SEQ_modifier_apply_stack(const SeqRenderData *context,
|
||||
const Sequence *seq,
|
||||
const Strip *seq,
|
||||
ImBuf *ibuf,
|
||||
int timeline_frame);
|
||||
void SEQ_modifier_list_copy(Sequence *seqn, Sequence *seq);
|
||||
int SEQ_sequence_supports_modifiers(Sequence *seq);
|
||||
void SEQ_modifier_list_copy(Strip *seqn, Strip *seq);
|
||||
int SEQ_sequence_supports_modifiers(Strip *seq);
|
||||
|
||||
void SEQ_modifier_blend_write(BlendWriter *writer, ListBase *modbase);
|
||||
void SEQ_modifier_blend_read_data(BlendDataReader *reader, ListBase *lb);
|
||||
|
||||
@@ -16,7 +16,7 @@ struct Main;
|
||||
struct Scene;
|
||||
struct SeqIndexBuildContext;
|
||||
struct SeqRenderData;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
struct bContext;
|
||||
struct wmJob;
|
||||
struct wmJobWorkerStatus;
|
||||
@@ -24,14 +24,14 @@ struct wmJobWorkerStatus;
|
||||
bool SEQ_proxy_rebuild_context(Main *bmain,
|
||||
Depsgraph *depsgraph,
|
||||
Scene *scene,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
blender::Set<std::string> *processed_paths,
|
||||
ListBase *queue,
|
||||
bool build_only_on_bad_performance);
|
||||
void SEQ_proxy_rebuild(SeqIndexBuildContext *context, wmJobWorkerStatus *worker_status);
|
||||
void SEQ_proxy_rebuild_finish(SeqIndexBuildContext *context, bool stop);
|
||||
void SEQ_proxy_set(Sequence *seq, bool value);
|
||||
bool SEQ_can_use_proxy(const SeqRenderData *context, const Sequence *seq, int psize);
|
||||
void SEQ_proxy_set(Strip *seq, bool value);
|
||||
bool SEQ_can_use_proxy(const SeqRenderData *context, const Strip *seq, int psize);
|
||||
int SEQ_rendersize_to_proxysize(int render_size);
|
||||
double SEQ_rendersize_to_scale_factor(int render_size);
|
||||
|
||||
|
||||
@@ -13,31 +13,31 @@ struct Main;
|
||||
struct MovieClip;
|
||||
struct ReportList;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
|
||||
/**
|
||||
* Check if one sequence is input to the other.
|
||||
*/
|
||||
bool SEQ_relation_is_effect_of_strip(const Sequence *effect, const Sequence *input);
|
||||
bool SEQ_relation_is_effect_of_strip(const Strip *effect, const Strip *input);
|
||||
/**
|
||||
* Function to free imbuf and anim data on changes.
|
||||
*/
|
||||
void SEQ_relations_sequence_free_anim(Sequence *seq);
|
||||
void SEQ_relations_sequence_free_anim(Strip *seq);
|
||||
bool SEQ_relations_check_scene_recursion(Scene *scene, ReportList *reports);
|
||||
/**
|
||||
* Check if "seq_main" (indirectly) uses strip "seq".
|
||||
*/
|
||||
bool SEQ_relations_render_loop_check(Sequence *seq_main, Sequence *seq);
|
||||
bool SEQ_relations_render_loop_check(Strip *seq_main, Strip *seq);
|
||||
void SEQ_relations_free_imbuf(Scene *scene, ListBase *seqbase, bool for_render);
|
||||
void SEQ_relations_invalidate_cache_raw(Scene *scene, Sequence *seq);
|
||||
void SEQ_relations_invalidate_cache_preprocessed(Scene *scene, Sequence *seq);
|
||||
void SEQ_relations_invalidate_cache_composite(Scene *scene, Sequence *seq);
|
||||
void SEQ_relations_invalidate_dependent(Scene *scene, Sequence *seq);
|
||||
void SEQ_relations_invalidate_cache_raw(Scene *scene, Strip *seq);
|
||||
void SEQ_relations_invalidate_cache_preprocessed(Scene *scene, Strip *seq);
|
||||
void SEQ_relations_invalidate_cache_composite(Scene *scene, Strip *seq);
|
||||
void SEQ_relations_invalidate_dependent(Scene *scene, Strip *seq);
|
||||
void SEQ_relations_invalidate_scene_strips(Main *bmain, Scene *scene_target);
|
||||
void SEQ_relations_invalidate_movieclip_strips(Main *bmain, MovieClip *clip_target);
|
||||
void SEQ_relations_invalidate_cache_in_range(Scene *scene,
|
||||
Sequence *seq,
|
||||
Sequence *range_mask,
|
||||
Strip *seq,
|
||||
Strip *range_mask,
|
||||
int invalidate_types);
|
||||
/**
|
||||
* Release FFmpeg handles of strips that are not currently displayed to minimize memory usage.
|
||||
@@ -51,18 +51,18 @@ void SEQ_relations_check_uids_unique_and_report(const Scene *scene);
|
||||
/**
|
||||
* Generate new UID for the given sequence.
|
||||
*/
|
||||
void SEQ_relations_session_uid_generate(Sequence *sequence);
|
||||
void SEQ_relations_session_uid_generate(Strip *sequence);
|
||||
|
||||
void SEQ_cache_cleanup(Scene *scene);
|
||||
void SEQ_cache_iterate(
|
||||
Scene *scene,
|
||||
void *userdata,
|
||||
bool callback_init(void *userdata, size_t item_count),
|
||||
bool callback_iter(void *userdata, Sequence *seq, int timeline_frame, int cache_type));
|
||||
bool callback_iter(void *userdata, Strip *seq, int timeline_frame, int cache_type));
|
||||
/**
|
||||
* Return immediate parent meta of sequence.
|
||||
*/
|
||||
Sequence *SEQ_find_metastrip_by_sequence(ListBase *seqbase /* = ed->seqbase */,
|
||||
Sequence *meta /* = NULL */,
|
||||
Sequence *seq);
|
||||
bool SEQ_exists_in_seqbase(const Sequence *seq, const ListBase *seqbase);
|
||||
Strip *SEQ_find_metastrip_by_sequence(ListBase *seqbase /* = ed->seqbase */,
|
||||
Strip *meta /* = NULL */,
|
||||
Strip *seq);
|
||||
bool SEQ_exists_in_seqbase(const Strip *seq, const ListBase *seqbase);
|
||||
|
||||
@@ -15,7 +15,7 @@ struct ImBuf;
|
||||
struct ListBase;
|
||||
struct Main;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
struct StripElem;
|
||||
|
||||
enum eSeqTaskId {
|
||||
@@ -57,9 +57,7 @@ struct SeqRenderData {
|
||||
* \note The returned #ImBuf has its reference increased, free after usage!
|
||||
*/
|
||||
ImBuf *SEQ_render_give_ibuf(const SeqRenderData *context, float timeline_frame, int chanshown);
|
||||
ImBuf *SEQ_render_give_ibuf_direct(const SeqRenderData *context,
|
||||
float timeline_frame,
|
||||
Sequence *seq);
|
||||
ImBuf *SEQ_render_give_ibuf_direct(const SeqRenderData *context, float timeline_frame, Strip *seq);
|
||||
void SEQ_render_new_render_data(Main *bmain,
|
||||
Depsgraph *depsgraph,
|
||||
Scene *scene,
|
||||
@@ -68,7 +66,7 @@ void SEQ_render_new_render_data(Main *bmain,
|
||||
int preview_render_size,
|
||||
int for_render,
|
||||
SeqRenderData *r_context);
|
||||
StripElem *SEQ_render_give_stripelem(const Scene *scene, const Sequence *seq, int timeline_frame);
|
||||
StripElem *SEQ_render_give_stripelem(const Scene *scene, const Strip *seq, int timeline_frame);
|
||||
|
||||
void SEQ_render_imbuf_from_sequencer_space(Scene *scene, ImBuf *ibuf);
|
||||
void SEQ_render_pixel_from_sequencer_space_v4(Scene *scene, float pixel[4]);
|
||||
@@ -76,4 +74,4 @@ void SEQ_render_pixel_from_sequencer_space_v4(Scene *scene, float pixel[4]);
|
||||
* Check if `seq` is muted for rendering.
|
||||
* This function also checks `SeqTimelineChannel` flag.
|
||||
*/
|
||||
bool SEQ_render_is_muted(const ListBase *channels, const Sequence *seq);
|
||||
bool SEQ_render_is_muted(const ListBase *channels, const Strip *seq);
|
||||
|
||||
@@ -13,51 +13,51 @@
|
||||
|
||||
struct Editing;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
struct SeqRetimingKey;
|
||||
|
||||
blender::MutableSpan<SeqRetimingKey> SEQ_retiming_keys_get(const Sequence *seq);
|
||||
blender::Map<SeqRetimingKey *, Sequence *> SEQ_retiming_selection_get(const Editing *ed);
|
||||
int SEQ_retiming_keys_count(const Sequence *seq);
|
||||
bool SEQ_retiming_is_active(const Sequence *seq);
|
||||
void SEQ_retiming_data_ensure(Sequence *seq);
|
||||
void SEQ_retiming_data_clear(Sequence *seq);
|
||||
void SEQ_retiming_reset(Scene *scene, Sequence *seq);
|
||||
bool SEQ_retiming_is_allowed(const Sequence *seq);
|
||||
blender::MutableSpan<SeqRetimingKey> SEQ_retiming_keys_get(const Strip *seq);
|
||||
blender::Map<SeqRetimingKey *, Strip *> SEQ_retiming_selection_get(const Editing *ed);
|
||||
int SEQ_retiming_keys_count(const Strip *seq);
|
||||
bool SEQ_retiming_is_active(const Strip *seq);
|
||||
void SEQ_retiming_data_ensure(Strip *seq);
|
||||
void SEQ_retiming_data_clear(Strip *seq);
|
||||
void SEQ_retiming_reset(Scene *scene, Strip *seq);
|
||||
bool SEQ_retiming_is_allowed(const Strip *seq);
|
||||
/**
|
||||
* Add new retiming key.
|
||||
* This function always reallocates memory, so when function is used all stored pointers will
|
||||
* become invalid.
|
||||
*/
|
||||
SeqRetimingKey *SEQ_retiming_add_key(const Scene *scene, Sequence *seq, int timeline_frame);
|
||||
SeqRetimingKey *SEQ_retiming_add_transition(Sequence *seq, SeqRetimingKey *key, float offset);
|
||||
SeqRetimingKey *SEQ_retiming_add_key(const Scene *scene, Strip *seq, int timeline_frame);
|
||||
SeqRetimingKey *SEQ_retiming_add_transition(Strip *seq, SeqRetimingKey *key, float offset);
|
||||
SeqRetimingKey *SEQ_retiming_add_freeze_frame(const Scene *scene,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
SeqRetimingKey *key,
|
||||
const int offset);
|
||||
bool SEQ_retiming_is_last_key(const Sequence *seq, const SeqRetimingKey *key);
|
||||
SeqRetimingKey *SEQ_retiming_last_key_get(const Sequence *seq);
|
||||
void SEQ_retiming_remove_key(Sequence *seq, SeqRetimingKey *key);
|
||||
bool SEQ_retiming_is_last_key(const Strip *seq, const SeqRetimingKey *key);
|
||||
SeqRetimingKey *SEQ_retiming_last_key_get(const Strip *seq);
|
||||
void SEQ_retiming_remove_key(Strip *seq, SeqRetimingKey *key);
|
||||
void SEQ_retiming_transition_key_frame_set(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
const Strip *seq,
|
||||
SeqRetimingKey *key,
|
||||
int timeline_frame);
|
||||
float SEQ_retiming_key_speed_get(const Sequence *seq, const SeqRetimingKey *key);
|
||||
float SEQ_retiming_key_speed_get(const Strip *seq, const SeqRetimingKey *key);
|
||||
void SEQ_retiming_key_speed_set(
|
||||
const Scene *scene, Sequence *seq, SeqRetimingKey *key, float speed, bool keep_retiming);
|
||||
int SEQ_retiming_key_index_get(const Sequence *seq, const SeqRetimingKey *key);
|
||||
const Scene *scene, Strip *seq, SeqRetimingKey *key, float speed, bool keep_retiming);
|
||||
int SEQ_retiming_key_index_get(const Strip *seq, const SeqRetimingKey *key);
|
||||
SeqRetimingKey *SEQ_retiming_key_get_by_timeline_frame(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
const Strip *seq,
|
||||
int timeline_frame);
|
||||
void SEQ_retiming_sound_animation_data_set(const Scene *scene, const Sequence *seq);
|
||||
void SEQ_retiming_sound_animation_data_set(const Scene *scene, const Strip *seq);
|
||||
int SEQ_retiming_key_timeline_frame_get(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
const Strip *seq,
|
||||
const SeqRetimingKey *key);
|
||||
void SEQ_retiming_key_timeline_frame_set(const Scene *scene,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
SeqRetimingKey *key,
|
||||
int timeline_frame);
|
||||
SeqRetimingKey *SEQ_retiming_find_segment_start_key(const Sequence *seq, float frame_index);
|
||||
SeqRetimingKey *SEQ_retiming_find_segment_start_key(const Strip *seq, float frame_index);
|
||||
bool SEQ_retiming_key_is_transition_type(const SeqRetimingKey *key);
|
||||
bool SEQ_retiming_key_is_transition_start(const SeqRetimingKey *key);
|
||||
SeqRetimingKey *SEQ_retiming_transition_start_get(SeqRetimingKey *key);
|
||||
@@ -66,8 +66,8 @@ bool SEQ_retiming_selection_clear(const Editing *ed);
|
||||
void SEQ_retiming_selection_append(SeqRetimingKey *key);
|
||||
void SEQ_retiming_selection_remove(SeqRetimingKey *key);
|
||||
void SEQ_retiming_selection_copy(SeqRetimingKey *dst, const SeqRetimingKey *src);
|
||||
void SEQ_retiming_remove_multiple_keys(Sequence *seq,
|
||||
void SEQ_retiming_remove_multiple_keys(Strip *seq,
|
||||
blender::Vector<SeqRetimingKey *> &keys_to_remove);
|
||||
bool SEQ_retiming_selection_contains(const Editing *ed, const SeqRetimingKey *key);
|
||||
bool SEQ_retiming_selection_has_whole_transition(const Editing *ed, SeqRetimingKey *key);
|
||||
bool SEQ_retiming_data_is_editable(const Sequence *seq);
|
||||
bool SEQ_retiming_data_is_editable(const Strip *seq);
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
*/
|
||||
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
|
||||
Sequence *SEQ_select_active_get(const Scene *scene);
|
||||
bool SEQ_select_active_get_pair(Scene *scene, Sequence **r_seq_act, Sequence **r_seq_other);
|
||||
void SEQ_select_active_set(Scene *scene, Sequence *seq);
|
||||
Strip *SEQ_select_active_get(const Scene *scene);
|
||||
bool SEQ_select_active_get_pair(Scene *scene, Strip **r_seq_act, Strip **r_seq_other);
|
||||
void SEQ_select_active_set(Scene *scene, Strip *seq);
|
||||
|
||||
@@ -18,7 +18,7 @@ struct Main;
|
||||
struct MetaStack;
|
||||
struct Scene;
|
||||
struct SeqTimelineChannel;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
struct SequencerToolSettings;
|
||||
|
||||
constexpr int SEQ_MAX_CHANNELS = 128;
|
||||
@@ -65,8 +65,8 @@ ListBase *SEQ_active_seqbase_get(const Editing *ed);
|
||||
* \param seqbase: ListBase with strips
|
||||
*/
|
||||
void SEQ_seqbase_active_set(Editing *ed, ListBase *seqbase);
|
||||
Sequence *SEQ_sequence_alloc(ListBase *lb, int timeline_frame, int machine, int type);
|
||||
void SEQ_sequence_free(Scene *scene, Sequence *seq);
|
||||
Strip *SEQ_sequence_alloc(ListBase *lb, int timeline_frame, int machine, int type);
|
||||
void SEQ_sequence_free(Scene *scene, Strip *seq);
|
||||
/**
|
||||
* Get #MetaStack that corresponds to current level that is being viewed
|
||||
*
|
||||
@@ -79,25 +79,22 @@ MetaStack *SEQ_meta_stack_active_get(const Editing *ed);
|
||||
* \param ed: sequence editor data
|
||||
* \param seqm: meta sequence or NULL for top level view
|
||||
*/
|
||||
void SEQ_meta_stack_set(const Scene *scene, Sequence *dst_seq);
|
||||
void SEQ_meta_stack_set(const Scene *scene, Strip *dst_seq);
|
||||
/**
|
||||
* Close last Meta strip open for editing.
|
||||
*
|
||||
* \param ed: sequence editor data
|
||||
*/
|
||||
Sequence *SEQ_meta_stack_pop(Editing *ed);
|
||||
Sequence *SEQ_sequence_dupli_recursive(const Scene *scene_src,
|
||||
Scene *scene_dst,
|
||||
ListBase *new_seq_list,
|
||||
Sequence *seq,
|
||||
int dupe_flag);
|
||||
Strip *SEQ_meta_stack_pop(Editing *ed);
|
||||
Strip *SEQ_sequence_dupli_recursive(
|
||||
const Scene *scene_src, Scene *scene_dst, ListBase *new_seq_list, Strip *seq, int dupe_flag);
|
||||
void SEQ_sequence_base_dupli_recursive(const Scene *scene_src,
|
||||
Scene *scene_dst,
|
||||
ListBase *nseqbase,
|
||||
const ListBase *seqbase,
|
||||
int dupe_flag,
|
||||
int flag);
|
||||
bool SEQ_is_valid_strip_channel(const Sequence *seq);
|
||||
bool SEQ_is_valid_strip_channel(const Strip *seq);
|
||||
|
||||
/**
|
||||
* Read and Write functions for `.blend` file data.
|
||||
@@ -126,14 +123,13 @@ void SEQ_eval_sequences(Depsgraph *depsgraph, Scene *scene, ListBase *seqbase);
|
||||
*
|
||||
* \return pointer to Sequence
|
||||
*/
|
||||
Sequence *SEQ_sequence_lookup_seq_by_name(const Scene *scene, const char *key);
|
||||
Strip *SEQ_sequence_lookup_seq_by_name(const Scene *scene, const char *key);
|
||||
|
||||
/**
|
||||
* Find which meta strip the given timeline channel belongs to. Returns nullptr if it is a global
|
||||
* channel.
|
||||
*/
|
||||
Sequence *SEQ_sequence_lookup_owner_by_channel(const Scene *scene,
|
||||
const SeqTimelineChannel *channel);
|
||||
Strip *SEQ_sequence_lookup_owner_by_channel(const Scene *scene, const SeqTimelineChannel *channel);
|
||||
|
||||
/**
|
||||
* Free lookup hash data.
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
struct EQCurveMappingData;
|
||||
struct Main;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
struct bSound;
|
||||
struct SequenceModifierData;
|
||||
struct SoundModifierWorkerInfo;
|
||||
@@ -27,23 +27,23 @@ struct SoundEqualizerModifierData;
|
||||
#define SOUND_EQUALIZER_SIZE_DEFINITION 1000
|
||||
|
||||
void SEQ_sound_update_bounds_all(Scene *scene);
|
||||
void SEQ_sound_update_bounds(Scene *scene, Sequence *seq);
|
||||
void SEQ_sound_update_bounds(Scene *scene, Strip *seq);
|
||||
void SEQ_sound_update(Scene *scene, bSound *sound);
|
||||
void SEQ_sound_update_length(Main *bmain, Scene *scene);
|
||||
float SEQ_sound_pitch_get(const Scene *scene, const Sequence *seq);
|
||||
float SEQ_sound_pitch_get(const Scene *scene, const Strip *seq);
|
||||
EQCurveMappingData *SEQ_sound_equalizer_add(SoundEqualizerModifierData *semd,
|
||||
float minX,
|
||||
float maxX);
|
||||
void SEQ_sound_blend_write(BlendWriter *writer, ListBase *soundbase);
|
||||
void SEQ_sound_blend_read_data(BlendDataReader *reader, ListBase *lb);
|
||||
|
||||
void *SEQ_sound_modifier_recreator(Sequence *seq, SequenceModifierData *smd, void *sound);
|
||||
void *SEQ_sound_modifier_recreator(Strip *seq, SequenceModifierData *smd, void *sound);
|
||||
|
||||
void SEQ_sound_equalizermodifier_init_data(SequenceModifierData *smd);
|
||||
void SEQ_sound_equalizermodifier_free(SequenceModifierData *smd);
|
||||
void SEQ_sound_equalizermodifier_copy_data(SequenceModifierData *target,
|
||||
SequenceModifierData *smd);
|
||||
void *SEQ_sound_equalizermodifier_recreator(Sequence *seq, SequenceModifierData *smd, void *sound);
|
||||
void *SEQ_sound_equalizermodifier_recreator(Strip *seq, SequenceModifierData *smd, void *sound);
|
||||
void SEQ_sound_equalizermodifier_set_graphs(SoundEqualizerModifierData *semd, int number);
|
||||
const SoundModifierWorkerInfo *SEQ_sound_modifier_worker_info_get(int type);
|
||||
EQCurveMappingData *SEQ_sound_equalizermodifier_add_graph(SoundEqualizerModifierData *semd,
|
||||
@@ -54,5 +54,5 @@ void SEQ_sound_equalizermodifier_remove_graph(SoundEqualizerModifierData *semd,
|
||||
|
||||
struct SoundModifierWorkerInfo {
|
||||
int type;
|
||||
void *(*recreator)(Sequence *seq, SequenceModifierData *smd, void *sound);
|
||||
void *(*recreator)(Strip *seq, SequenceModifierData *smd, void *sound);
|
||||
};
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
struct bContext;
|
||||
struct ImBuf;
|
||||
struct rctf;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
struct Scene;
|
||||
|
||||
#include "BLI_function_ref.hh"
|
||||
@@ -35,7 +35,7 @@ static constexpr int SEQ_THUMB_SIZE = 256;
|
||||
* processed in the background. */
|
||||
ImBuf *thumbnail_cache_get(const bContext *C,
|
||||
Scene *scene,
|
||||
const Sequence *seq,
|
||||
const Strip *seq,
|
||||
float timeline_frame);
|
||||
|
||||
/**
|
||||
@@ -44,7 +44,7 @@ ImBuf *thumbnail_cache_get(const bContext *C,
|
||||
*/
|
||||
void thumbnail_cache_maintain_capacity(Scene *scene);
|
||||
|
||||
void thumbnail_cache_invalidate_strip(Scene *scene, const Sequence *seq);
|
||||
void thumbnail_cache_invalidate_strip(Scene *scene, const Strip *seq);
|
||||
|
||||
/**
|
||||
* Discard in-flight thumbnail loading requests that are outside of the given view (X coordinate:
|
||||
@@ -55,6 +55,6 @@ void thumbnail_cache_discard_requests_outside(Scene *scene, const rctf &rect);
|
||||
void thumbnail_cache_clear(Scene *scene);
|
||||
void thumbnail_cache_destroy(Scene *scene);
|
||||
|
||||
bool strip_can_have_thumbnail(const Scene *scene, const Sequence *seq);
|
||||
bool strip_can_have_thumbnail(const Scene *scene, const Strip *seq);
|
||||
|
||||
} // namespace blender::seq
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
struct ListBase;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
struct rctf;
|
||||
|
||||
/**
|
||||
@@ -39,7 +39,7 @@ void SEQ_timeline_boundbox(const Scene *scene, const ListBase *seqbase, rctf *r_
|
||||
* Get FPS rate of source media. Movie, scene and movie-clip strips are supported.
|
||||
* Returns 0 for unsupported strip or if media can't be loaded.
|
||||
*/
|
||||
float SEQ_time_sequence_get_fps(Scene *scene, Sequence *seq);
|
||||
float SEQ_time_sequence_get_fps(Scene *scene, Strip *seq);
|
||||
/**
|
||||
* Find start or end position of next or previous strip.
|
||||
* \param scene: Video editing scene
|
||||
@@ -63,74 +63,74 @@ int SEQ_time_find_next_prev_edit(Scene *scene,
|
||||
* \param timeline_frame: absolute frame position
|
||||
* \return true if strip intersects with timeline frame.
|
||||
*/
|
||||
bool SEQ_time_strip_intersects_frame(const Scene *scene, const Sequence *seq, int timeline_frame);
|
||||
bool SEQ_time_strip_intersects_frame(const Scene *scene, const Strip *seq, int timeline_frame);
|
||||
/* Convert timeline frame so strip frame index. */
|
||||
float SEQ_give_frame_index(const Scene *scene, const Sequence *seq, float timeline_frame);
|
||||
float SEQ_give_frame_index(const Scene *scene, const Strip *seq, float timeline_frame);
|
||||
/**
|
||||
* Returns true if strip has frames without content to render.
|
||||
*/
|
||||
bool SEQ_time_has_still_frames(const Scene *scene, const Sequence *seq);
|
||||
bool SEQ_time_has_still_frames(const Scene *scene, const Strip *seq);
|
||||
/**
|
||||
* Returns true if at beginning of strip there is no content to be rendered.
|
||||
*/
|
||||
bool SEQ_time_has_left_still_frames(const Scene *scene, const Sequence *seq);
|
||||
bool SEQ_time_has_left_still_frames(const Scene *scene, const Strip *seq);
|
||||
/**
|
||||
* Returns true if at end of strip there is no content to be rendered.
|
||||
*/
|
||||
bool SEQ_time_has_right_still_frames(const Scene *scene, const Sequence *seq);
|
||||
bool SEQ_time_has_right_still_frames(const Scene *scene, const Strip *seq);
|
||||
/**
|
||||
* Get timeline frame where strip boundary starts.
|
||||
*/
|
||||
int SEQ_time_left_handle_frame_get(const Scene *scene, const Sequence *seq);
|
||||
int SEQ_time_left_handle_frame_get(const Scene *scene, const Strip *seq);
|
||||
/**
|
||||
* Get timeline frame where strip boundary ends.
|
||||
*/
|
||||
int SEQ_time_right_handle_frame_get(const Scene *scene, const Sequence *seq);
|
||||
int SEQ_time_right_handle_frame_get(const Scene *scene, const Strip *seq);
|
||||
/**
|
||||
* Set frame where strip boundary starts. This function moves only handle, content is not moved.
|
||||
*/
|
||||
void SEQ_time_left_handle_frame_set(const Scene *scene, Sequence *seq, int timeline_frame);
|
||||
void SEQ_time_left_handle_frame_set(const Scene *scene, Strip *seq, int timeline_frame);
|
||||
/**
|
||||
* Set frame where strip boundary ends.
|
||||
* This function moves only handle, content is not moved.
|
||||
*/
|
||||
void SEQ_time_right_handle_frame_set(const Scene *scene, Sequence *seq, int timeline_frame);
|
||||
void SEQ_time_right_handle_frame_set(const Scene *scene, Strip *seq, int timeline_frame);
|
||||
/**
|
||||
* Get number of frames (in timeline) that can be rendered.
|
||||
* This can change depending on scene FPS or strip speed factor.
|
||||
*/
|
||||
int SEQ_time_strip_length_get(const Scene *scene, const Sequence *seq);
|
||||
int SEQ_time_strip_length_get(const Scene *scene, const Strip *seq);
|
||||
/**
|
||||
* Get timeline frame where strip content starts.
|
||||
*/
|
||||
float SEQ_time_start_frame_get(const Sequence *seq);
|
||||
float SEQ_time_start_frame_get(const Strip *seq);
|
||||
/**
|
||||
* Get timeline frame where strip content ends.
|
||||
*/
|
||||
float SEQ_time_content_end_frame_get(const Scene *scene, const Sequence *seq);
|
||||
float SEQ_time_content_end_frame_get(const Scene *scene, const Strip *seq);
|
||||
/**
|
||||
* Set frame where strip content starts.
|
||||
* This function will also move strip handles.
|
||||
*/
|
||||
void SEQ_time_start_frame_set(const Scene *scene, Sequence *seq, int timeline_frame);
|
||||
void SEQ_time_start_frame_set(const Scene *scene, Strip *seq, int timeline_frame);
|
||||
/**
|
||||
* Update meta strip content start and end, update sound playback range.
|
||||
* To be used after any contained strip length or position has changed.
|
||||
*
|
||||
* \note this function is currently only used internally and in versioning code.
|
||||
*/
|
||||
void SEQ_time_update_meta_strip_range(const Scene *scene, Sequence *seq_meta);
|
||||
void SEQ_time_update_meta_strip_range(const Scene *scene, Strip *seq_meta);
|
||||
/**
|
||||
* Move contents of a strip without moving the strip handles.
|
||||
*/
|
||||
void SEQ_time_slip_strip(const Scene *scene, Sequence *seq, int delta, float subframe_delta);
|
||||
void SEQ_time_slip_strip(const Scene *scene, Strip *seq, int delta, float subframe_delta);
|
||||
/**
|
||||
* Get difference between scene and movie strip frame-rate.
|
||||
*/
|
||||
float SEQ_time_media_playback_rate_factor_get(const Scene *scene, const Sequence *seq);
|
||||
float SEQ_time_media_playback_rate_factor_get(const Scene *scene, const Strip *seq);
|
||||
/**
|
||||
* Get the sound offset (if any) and round it to the nearest integer.
|
||||
* This is mostly used in places where subframe data is not allowed (like re-timing key positions).
|
||||
* Returns zero if sequence is not a sound strip or if there is no offset.
|
||||
*/
|
||||
int SEQ_time_get_rounded_sound_offset(const Scene *scene, const Sequence *seq);
|
||||
int SEQ_time_get_rounded_sound_offset(const Scene *scene, const Strip *seq);
|
||||
|
||||
@@ -10,32 +10,32 @@
|
||||
|
||||
struct ListBase;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
|
||||
bool SEQ_transform_sequence_can_be_translated(const Sequence *seq);
|
||||
bool SEQ_transform_sequence_can_be_translated(const Strip *seq);
|
||||
/**
|
||||
* Used so we can do a quick check for single image seq
|
||||
* since they work a bit differently to normal image seq's (during transform).
|
||||
*/
|
||||
bool SEQ_transform_single_image_check(const Sequence *seq);
|
||||
bool SEQ_transform_test_overlap(const Scene *scene, ListBase *seqbasep, Sequence *test);
|
||||
bool SEQ_transform_test_overlap_seq_seq(const Scene *scene, Sequence *seq1, Sequence *seq2);
|
||||
void SEQ_transform_translate_sequence(Scene *evil_scene, Sequence *seq, int delta);
|
||||
bool SEQ_transform_single_image_check(const Strip *seq);
|
||||
bool SEQ_transform_test_overlap(const Scene *scene, ListBase *seqbasep, Strip *test);
|
||||
bool SEQ_transform_test_overlap_seq_seq(const Scene *scene, Strip *seq1, Strip *seq2);
|
||||
void SEQ_transform_translate_sequence(Scene *evil_scene, Strip *seq, int delta);
|
||||
/**
|
||||
* \return 0 if there weren't enough space.
|
||||
*/
|
||||
bool SEQ_transform_seqbase_shuffle_ex(ListBase *seqbasep,
|
||||
Sequence *test,
|
||||
Strip *test,
|
||||
Scene *evil_scene,
|
||||
int channel_delta);
|
||||
bool SEQ_transform_seqbase_shuffle(ListBase *seqbasep, Sequence *test, Scene *evil_scene);
|
||||
bool SEQ_transform_seqbase_shuffle_time(blender::Span<Sequence *> strips_to_shuffle,
|
||||
blender::Span<Sequence *> time_dependent_strips,
|
||||
bool SEQ_transform_seqbase_shuffle(ListBase *seqbasep, Strip *test, Scene *evil_scene);
|
||||
bool SEQ_transform_seqbase_shuffle_time(blender::Span<Strip *> strips_to_shuffle,
|
||||
blender::Span<Strip *> time_dependent_strips,
|
||||
ListBase *seqbasep,
|
||||
Scene *evil_scene,
|
||||
ListBase *markers,
|
||||
bool use_sync_markers);
|
||||
bool SEQ_transform_seqbase_shuffle_time(blender::Span<Sequence *> strips_to_shuffle,
|
||||
bool SEQ_transform_seqbase_shuffle_time(blender::Span<Strip *> strips_to_shuffle,
|
||||
ListBase *seqbasep,
|
||||
Scene *evil_scene,
|
||||
ListBase *markers,
|
||||
@@ -43,12 +43,12 @@ bool SEQ_transform_seqbase_shuffle_time(blender::Span<Sequence *> strips_to_shuf
|
||||
|
||||
void SEQ_transform_handle_overlap(Scene *scene,
|
||||
ListBase *seqbasep,
|
||||
blender::Span<Sequence *> transformed_strips,
|
||||
blender::Span<Sequence *> time_dependent_strips,
|
||||
blender::Span<Strip *> transformed_strips,
|
||||
blender::Span<Strip *> time_dependent_strips,
|
||||
bool use_sync_markers);
|
||||
void SEQ_transform_handle_overlap(Scene *scene,
|
||||
ListBase *seqbasep,
|
||||
blender::Span<Sequence *> transformed_strips,
|
||||
blender::Span<Strip *> transformed_strips,
|
||||
bool use_sync_markers);
|
||||
/**
|
||||
* Check if the selected seq's reference unselected seq's.
|
||||
@@ -71,11 +71,11 @@ void SEQ_transform_offset_after_frame(Scene *scene,
|
||||
* Check if `seq` can be moved.
|
||||
* This function also checks `SeqTimelineChannel` flag.
|
||||
*/
|
||||
bool SEQ_transform_is_locked(ListBase *channels, const Sequence *seq);
|
||||
bool SEQ_transform_is_locked(ListBase *channels, const Strip *seq);
|
||||
|
||||
/* Image transformation. */
|
||||
|
||||
void SEQ_image_transform_mirror_factor_get(const Sequence *seq, float r_mirror[2]);
|
||||
void SEQ_image_transform_mirror_factor_get(const Strip *seq, float r_mirror[2]);
|
||||
/**
|
||||
* Get strip transform origin offset from image center
|
||||
* NOTE: This function does not apply axis mirror.
|
||||
@@ -85,7 +85,7 @@ void SEQ_image_transform_mirror_factor_get(const Sequence *seq, float r_mirror[2
|
||||
* \param r_origin: return value
|
||||
*/
|
||||
void SEQ_image_transform_origin_offset_pixelspace_get(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
const Strip *seq,
|
||||
float r_origin[2]);
|
||||
/**
|
||||
* Get 4 corner points of strip image, optionally without rotation component applied.
|
||||
@@ -97,7 +97,7 @@ void SEQ_image_transform_origin_offset_pixelspace_get(const Scene *scene,
|
||||
* \param r_quad: array of 4 2D vectors
|
||||
*/
|
||||
void SEQ_image_transform_quad_get(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
const Strip *seq,
|
||||
bool apply_rotation,
|
||||
float r_quad[4][2]);
|
||||
/**
|
||||
@@ -107,9 +107,7 @@ void SEQ_image_transform_quad_get(const Scene *scene,
|
||||
* \param seq: Sequence to calculate transformed image quad
|
||||
* \param r_quad: array of 4 2D vectors
|
||||
*/
|
||||
void SEQ_image_transform_final_quad_get(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
float r_quad[4][2]);
|
||||
void SEQ_image_transform_final_quad_get(const Scene *scene, const Strip *seq, float r_quad[4][2]);
|
||||
|
||||
void SEQ_image_preview_unit_to_px(const Scene *scene, const float co_src[2], float co_dst[2]);
|
||||
void SEQ_image_preview_unit_from_px(const Scene *scene, const float co_src[2], float co_dst[2]);
|
||||
@@ -125,7 +123,7 @@ void SEQ_image_preview_unit_from_px(const Scene *scene, const float co_src[2], f
|
||||
* \param r_max: Maximum x and y values
|
||||
*/
|
||||
void SEQ_image_transform_bounding_box_from_collection(Scene *scene,
|
||||
blender::Span<Sequence *> strips,
|
||||
blender::Span<Strip *> strips,
|
||||
bool apply_rotation,
|
||||
float r_min[2],
|
||||
float r_max[2]);
|
||||
@@ -139,5 +137,5 @@ void SEQ_image_transform_bounding_box_from_collection(Scene *scene,
|
||||
* \param r_transform_matrix: Return value
|
||||
*/
|
||||
void SEQ_image_transform_matrix_get(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
const Strip *seq,
|
||||
float r_transform_matrix[4][4]);
|
||||
|
||||
@@ -14,34 +14,34 @@ struct bSound;
|
||||
struct ListBase;
|
||||
struct Mask;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
struct StripElem;
|
||||
|
||||
void SEQ_sequence_base_unique_name_recursive(Scene *scene, ListBase *seqbasep, Sequence *seq);
|
||||
const char *SEQ_sequence_give_name(const Sequence *seq);
|
||||
ListBase *SEQ_get_seqbase_from_sequence(Sequence *seq, ListBase **r_channels, int *r_offset);
|
||||
const Sequence *SEQ_get_topmost_sequence(const Scene *scene, int frame);
|
||||
void SEQ_sequence_base_unique_name_recursive(Scene *scene, ListBase *seqbasep, Strip *seq);
|
||||
const char *SEQ_sequence_give_name(const Strip *seq);
|
||||
ListBase *SEQ_get_seqbase_from_sequence(Strip *seq, ListBase **r_channels, int *r_offset);
|
||||
const Strip *SEQ_get_topmost_sequence(const Scene *scene, int frame);
|
||||
/**
|
||||
* In cases where we don't know the sequence's listbase.
|
||||
*/
|
||||
ListBase *SEQ_get_seqbase_by_seq(const Scene *scene, Sequence *seq);
|
||||
ListBase *SEQ_get_seqbase_by_seq(const Scene *scene, Strip *seq);
|
||||
/**
|
||||
* Only use as last resort when the StripElem is available but no the Sequence.
|
||||
* (needed for RNA)
|
||||
*/
|
||||
Sequence *SEQ_sequence_from_strip_elem(ListBase *seqbase, StripElem *se);
|
||||
Sequence *SEQ_get_sequence_by_name(ListBase *seqbase, const char *name, bool recursive);
|
||||
Strip *SEQ_sequence_from_strip_elem(ListBase *seqbase, StripElem *se);
|
||||
Strip *SEQ_get_sequence_by_name(ListBase *seqbase, const char *name, bool recursive);
|
||||
Mask *SEQ_active_mask_get(Scene *scene);
|
||||
void SEQ_alpha_mode_from_file_extension(Sequence *seq);
|
||||
void SEQ_alpha_mode_from_file_extension(Strip *seq);
|
||||
|
||||
/**
|
||||
* Check if an input referenced by this strip is valid (e.g. scene for a scene strip).
|
||||
* Note that this only checks data block references, for missing media referenced
|
||||
* by paths use #media_presence_is_missing.
|
||||
*/
|
||||
bool SEQ_sequence_has_valid_data(const Sequence *seq);
|
||||
bool SEQ_sequence_has_valid_data(const Strip *seq);
|
||||
|
||||
void SEQ_set_scale_to_fit(const Sequence *seq,
|
||||
void SEQ_set_scale_to_fit(const Strip *seq,
|
||||
int image_width,
|
||||
int image_height,
|
||||
int preview_width,
|
||||
@@ -54,7 +54,7 @@ void SEQ_set_scale_to_fit(const Sequence *seq,
|
||||
* \param seq: Sequence which name will be ensured to be unique
|
||||
* \param scene: Scene in which name must be unique
|
||||
*/
|
||||
void SEQ_ensure_unique_name(Sequence *seq, Scene *scene);
|
||||
void SEQ_ensure_unique_name(Strip *seq, Scene *scene);
|
||||
|
||||
void SEQ_fontmap_clear();
|
||||
|
||||
@@ -69,17 +69,17 @@ namespace blender::seq {
|
||||
* \param seq: Sequencer strip.
|
||||
* \return True if media file is missing.
|
||||
*/
|
||||
bool media_presence_is_missing(Scene *scene, const Sequence *seq);
|
||||
bool media_presence_is_missing(Scene *scene, const Strip *seq);
|
||||
|
||||
/**
|
||||
* Set or change the missing media cache value for a given strip.
|
||||
*/
|
||||
void media_presence_set_missing(Scene *scene, const Sequence *seq, bool missing);
|
||||
void media_presence_set_missing(Scene *scene, const Strip *seq, bool missing);
|
||||
|
||||
/**
|
||||
* Invalidate media presence cache for the given strip.
|
||||
*/
|
||||
void media_presence_invalidate_strip(Scene *scene, const Sequence *seq);
|
||||
void media_presence_invalidate_strip(Scene *scene, const Strip *seq);
|
||||
|
||||
/**
|
||||
* Invalidate media presence cache for the given sound.
|
||||
|
||||
@@ -35,13 +35,13 @@ bool SEQ_animation_drivers_exist(Scene *scene)
|
||||
return scene->adt != nullptr && !BLI_listbase_is_empty(&scene->adt->drivers);
|
||||
}
|
||||
|
||||
bool SEQ_fcurve_matches(const Sequence &seq, const FCurve &fcurve)
|
||||
bool SEQ_fcurve_matches(const Strip &seq, const FCurve &fcurve)
|
||||
{
|
||||
return animrig::fcurve_matches_collection_path(
|
||||
fcurve, "sequence_editor.sequences_all[", seq.name + 2);
|
||||
}
|
||||
|
||||
void SEQ_offset_animdata(Scene *scene, Sequence *seq, int ofs)
|
||||
void SEQ_offset_animdata(Scene *scene, Strip *seq, int ofs)
|
||||
{
|
||||
if (!SEQ_animation_keyframes_exist(scene) || ofs == 0) {
|
||||
return;
|
||||
@@ -73,7 +73,7 @@ void SEQ_offset_animdata(Scene *scene, Sequence *seq, int ofs)
|
||||
DEG_id_tag_update(&scene->adt->action->id, ID_RECALC_ANIMATION);
|
||||
}
|
||||
|
||||
void SEQ_free_animdata(Scene *scene, Sequence *seq)
|
||||
void SEQ_free_animdata(Scene *scene, Strip *seq)
|
||||
{
|
||||
if (!SEQ_animation_keyframes_exist(scene)) {
|
||||
return;
|
||||
@@ -144,13 +144,13 @@ void SEQ_animation_restore_original(Scene *scene, SeqAnimationBackup *backup)
|
||||
/**
|
||||
* Duplicate the animation in `src` that matches items in `seq` into `dst`.
|
||||
*/
|
||||
static void seq_animation_duplicate(Sequence *seq,
|
||||
static void seq_animation_duplicate(Strip *seq,
|
||||
animrig::Action &dst,
|
||||
const animrig::slot_handle_t dst_slot_handle,
|
||||
SeqAnimationBackup *src)
|
||||
{
|
||||
if (seq->type == SEQ_TYPE_META) {
|
||||
LISTBASE_FOREACH (Sequence *, meta_child, &seq->seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, meta_child, &seq->seqbase) {
|
||||
seq_animation_duplicate(meta_child, dst, dst_slot_handle, src);
|
||||
}
|
||||
}
|
||||
@@ -187,10 +187,10 @@ static void seq_animation_duplicate(Sequence *seq,
|
||||
/**
|
||||
* Duplicate the drivers in `src` that matches items in `seq` into `dst`.
|
||||
*/
|
||||
static void seq_drivers_duplicate(Sequence *seq, AnimData *dst, SeqAnimationBackup *src)
|
||||
static void seq_drivers_duplicate(Strip *seq, AnimData *dst, SeqAnimationBackup *src)
|
||||
{
|
||||
if (seq->type == SEQ_TYPE_META) {
|
||||
LISTBASE_FOREACH (Sequence *, meta_child, &seq->seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, meta_child, &seq->seqbase) {
|
||||
seq_drivers_duplicate(meta_child, dst, src);
|
||||
}
|
||||
}
|
||||
@@ -204,9 +204,7 @@ static void seq_drivers_duplicate(Sequence *seq, AnimData *dst, SeqAnimationBack
|
||||
}
|
||||
}
|
||||
|
||||
void SEQ_animation_duplicate_backup_to_scene(Scene *scene,
|
||||
Sequence *seq,
|
||||
SeqAnimationBackup *backup)
|
||||
void SEQ_animation_duplicate_backup_to_scene(Scene *scene, Strip *seq, SeqAnimationBackup *backup)
|
||||
{
|
||||
BLI_assert(scene != nullptr);
|
||||
|
||||
|
||||
@@ -84,11 +84,11 @@ bool SEQ_channel_is_muted(const SeqTimelineChannel *channel)
|
||||
return (channel->flag & SEQ_CHANNEL_MUTE) != 0;
|
||||
}
|
||||
|
||||
ListBase *SEQ_get_channels_by_seq(ListBase *seqbase, ListBase *channels, const Sequence *seq)
|
||||
ListBase *SEQ_get_channels_by_seq(ListBase *seqbase, ListBase *channels, const Strip *seq)
|
||||
{
|
||||
ListBase *lb = nullptr;
|
||||
|
||||
LISTBASE_FOREACH (Sequence *, iseq, seqbase) {
|
||||
LISTBASE_FOREACH (Strip *, iseq, seqbase) {
|
||||
if (seq == iseq) {
|
||||
return channels;
|
||||
}
|
||||
|
||||
@@ -291,7 +291,7 @@ static void seq_disk_cache_get_project_dir(SeqDiskCache *disk_cache,
|
||||
}
|
||||
|
||||
static void seq_disk_cache_get_dir(
|
||||
SeqDiskCache *disk_cache, Scene *scene, Sequence *seq, char *dirpath, size_t dirpath_maxncpy)
|
||||
SeqDiskCache *disk_cache, Scene *scene, Strip *seq, char *dirpath, size_t dirpath_maxncpy)
|
||||
{
|
||||
char scene_name[MAX_ID_NAME + 22]; /* + -%PRId64 */
|
||||
char seq_name[SEQ_NAME_MAXSTR];
|
||||
@@ -369,7 +369,7 @@ static void seq_disk_cache_handle_versioning(SeqDiskCache *disk_cache)
|
||||
|
||||
static void seq_disk_cache_delete_invalid_files(SeqDiskCache *disk_cache,
|
||||
Scene *scene,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
int invalidate_types,
|
||||
int range_start,
|
||||
int range_end)
|
||||
@@ -394,11 +394,8 @@ static void seq_disk_cache_delete_invalid_files(SeqDiskCache *disk_cache,
|
||||
}
|
||||
}
|
||||
|
||||
void seq_disk_cache_invalidate(SeqDiskCache *disk_cache,
|
||||
Scene *scene,
|
||||
Sequence *seq,
|
||||
Sequence *seq_changed,
|
||||
int invalidate_types)
|
||||
void seq_disk_cache_invalidate(
|
||||
SeqDiskCache *disk_cache, Scene *scene, Strip *seq, Strip *seq_changed, int invalidate_types)
|
||||
{
|
||||
int start;
|
||||
int end;
|
||||
|
||||
@@ -17,7 +17,7 @@ struct Main;
|
||||
struct Scene;
|
||||
struct SeqCacheKey;
|
||||
struct SeqDiskCache;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
|
||||
SeqDiskCache *seq_disk_cache_create(Main *bmain, Scene *scene);
|
||||
void seq_disk_cache_free(SeqDiskCache *disk_cache);
|
||||
@@ -25,8 +25,5 @@ bool seq_disk_cache_is_enabled(Main *bmain);
|
||||
ImBuf *seq_disk_cache_read_file(SeqDiskCache *disk_cache, SeqCacheKey *key);
|
||||
bool seq_disk_cache_write_file(SeqDiskCache *disk_cache, SeqCacheKey *key, ImBuf *ibuf);
|
||||
bool seq_disk_cache_enforce_limits(SeqDiskCache *disk_cache);
|
||||
void seq_disk_cache_invalidate(SeqDiskCache *disk_cache,
|
||||
Scene *scene,
|
||||
Sequence *seq,
|
||||
Sequence *seq_changed,
|
||||
int invalidate_types);
|
||||
void seq_disk_cache_invalidate(
|
||||
SeqDiskCache *disk_cache, Scene *scene, Strip *seq, Strip *seq_changed, int invalidate_types);
|
||||
|
||||
@@ -100,23 +100,23 @@ Array<float> make_gaussian_blur_kernel(float rad, int size)
|
||||
return gaussian;
|
||||
}
|
||||
|
||||
static void init_noop(Sequence * /*seq*/) {}
|
||||
static void init_noop(Strip * /*seq*/) {}
|
||||
|
||||
static void load_noop(Sequence * /*seq*/) {}
|
||||
static void load_noop(Strip * /*seq*/) {}
|
||||
|
||||
static void free_noop(Sequence * /*seq*/, const bool /*do_id_user*/) {}
|
||||
static void free_noop(Strip * /*seq*/, const bool /*do_id_user*/) {}
|
||||
|
||||
static int num_inputs_default()
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
static StripEarlyOut early_out_noop(const Sequence * /*seq*/, float /*fac*/)
|
||||
static StripEarlyOut early_out_noop(const Strip * /*seq*/, float /*fac*/)
|
||||
{
|
||||
return StripEarlyOut::DoEffect;
|
||||
}
|
||||
|
||||
StripEarlyOut early_out_fade(const Sequence * /*seq*/, float fac)
|
||||
StripEarlyOut early_out_fade(const Strip * /*seq*/, float fac)
|
||||
{
|
||||
if (fac == 0.0f) {
|
||||
return StripEarlyOut::UseInput1;
|
||||
@@ -127,7 +127,7 @@ StripEarlyOut early_out_fade(const Sequence * /*seq*/, float fac)
|
||||
return StripEarlyOut::DoEffect;
|
||||
}
|
||||
|
||||
StripEarlyOut early_out_mul_input2(const Sequence * /*seq*/, float fac)
|
||||
StripEarlyOut early_out_mul_input2(const Strip * /*seq*/, float fac)
|
||||
{
|
||||
if (fac == 0.0f) {
|
||||
return StripEarlyOut::UseInput1;
|
||||
@@ -135,7 +135,7 @@ StripEarlyOut early_out_mul_input2(const Sequence * /*seq*/, float fac)
|
||||
return StripEarlyOut::DoEffect;
|
||||
}
|
||||
|
||||
StripEarlyOut early_out_mul_input1(const Sequence * /*seq*/, float fac)
|
||||
StripEarlyOut early_out_mul_input1(const Strip * /*seq*/, float fac)
|
||||
{
|
||||
if (fac == 0.0f) {
|
||||
return StripEarlyOut::UseInput2;
|
||||
@@ -144,17 +144,14 @@ StripEarlyOut early_out_mul_input1(const Sequence * /*seq*/, float fac)
|
||||
}
|
||||
|
||||
static void get_default_fac_noop(const Scene * /*scene*/,
|
||||
const Sequence * /*seq*/,
|
||||
const Strip * /*seq*/,
|
||||
float /*timeline_frame*/,
|
||||
float *fac)
|
||||
{
|
||||
*fac = 1.0f;
|
||||
}
|
||||
|
||||
void get_default_fac_fade(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
float timeline_frame,
|
||||
float *fac)
|
||||
void get_default_fac_fade(const Scene *scene, const Strip *seq, float timeline_frame, float *fac)
|
||||
{
|
||||
*fac = float(timeline_frame - SEQ_time_left_handle_frame_get(scene, seq));
|
||||
*fac /= SEQ_time_strip_length_get(scene, seq);
|
||||
@@ -255,7 +252,7 @@ SeqEffectHandle get_sequence_effect_impl(int seq_type)
|
||||
return rval;
|
||||
}
|
||||
|
||||
SeqEffectHandle SEQ_effect_handle_get(Sequence *seq)
|
||||
SeqEffectHandle SEQ_effect_handle_get(Strip *seq)
|
||||
{
|
||||
SeqEffectHandle rval = {};
|
||||
|
||||
@@ -270,7 +267,7 @@ SeqEffectHandle SEQ_effect_handle_get(Sequence *seq)
|
||||
return rval;
|
||||
}
|
||||
|
||||
SeqEffectHandle seq_effect_get_sequence_blend(Sequence *seq)
|
||||
SeqEffectHandle seq_effect_get_sequence_blend(Strip *seq)
|
||||
{
|
||||
SeqEffectHandle rval = {};
|
||||
|
||||
|
||||
@@ -17,19 +17,19 @@
|
||||
|
||||
struct ImBuf;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
struct Strip;
|
||||
|
||||
SeqEffectHandle seq_effect_get_sequence_blend(Sequence *seq);
|
||||
SeqEffectHandle seq_effect_get_sequence_blend(Strip *seq);
|
||||
/**
|
||||
* Build frame map when speed in mode #SEQ_SPEED_MULTIPLY is animated.
|
||||
* This is, because `target_frame` value is integrated over time.
|
||||
*/
|
||||
void seq_effect_speed_rebuild_map(Scene *scene, Sequence *seq);
|
||||
void seq_effect_speed_rebuild_map(Scene *scene, Strip *seq);
|
||||
/**
|
||||
* Override timeline_frame when rendering speed effect input.
|
||||
*/
|
||||
float seq_speed_effect_target_frame_get(Scene *scene,
|
||||
Sequence *seq_speed,
|
||||
Strip *seq_speed,
|
||||
float timeline_frame,
|
||||
int input);
|
||||
|
||||
@@ -78,13 +78,10 @@ inline void store_opaque_black_pixel(float *dst)
|
||||
dst[3] = 1.0f;
|
||||
}
|
||||
|
||||
StripEarlyOut early_out_mul_input1(const Sequence * /*seq*/, float fac);
|
||||
StripEarlyOut early_out_mul_input2(const Sequence * /*seq*/, float fac);
|
||||
StripEarlyOut early_out_fade(const Sequence * /*seq*/, float fac);
|
||||
void get_default_fac_fade(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
float timeline_frame,
|
||||
float *fac);
|
||||
StripEarlyOut early_out_mul_input1(const Strip * /*seq*/, float fac);
|
||||
StripEarlyOut early_out_mul_input2(const Strip * /*seq*/, float fac);
|
||||
StripEarlyOut early_out_fade(const Strip * /*seq*/, float fac);
|
||||
void get_default_fac_fade(const Scene *scene, const Strip *seq, float timeline_frame, float *fac);
|
||||
|
||||
SeqEffectHandle get_sequence_effect_impl(int seq_type);
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ struct AddEffectOp {
|
||||
};
|
||||
|
||||
static ImBuf *do_add_effect(const SeqRenderData *context,
|
||||
Sequence * /*seq*/,
|
||||
Strip * /*seq*/,
|
||||
float /*timeline_frame*/,
|
||||
float fac,
|
||||
ImBuf *src1,
|
||||
@@ -89,7 +89,7 @@ struct SubEffectOp {
|
||||
};
|
||||
|
||||
static ImBuf *do_sub_effect(const SeqRenderData *context,
|
||||
Sequence * /*seq*/,
|
||||
Strip * /*seq*/,
|
||||
float /*timeline_frame*/,
|
||||
float fac,
|
||||
ImBuf *src1,
|
||||
@@ -133,7 +133,7 @@ struct MulEffectOp {
|
||||
};
|
||||
|
||||
static ImBuf *do_mul_effect(const SeqRenderData *context,
|
||||
Sequence * /*seq*/,
|
||||
Strip * /*seq*/,
|
||||
float /*timeline_frame*/,
|
||||
float fac,
|
||||
ImBuf *src1,
|
||||
|
||||
@@ -23,12 +23,12 @@ static int num_inputs_adjustment()
|
||||
return 0;
|
||||
}
|
||||
|
||||
static StripEarlyOut early_out_adjustment(const Sequence * /*seq*/, float /*fac*/)
|
||||
static StripEarlyOut early_out_adjustment(const Strip * /*seq*/, float /*fac*/)
|
||||
{
|
||||
return StripEarlyOut::NoInput;
|
||||
}
|
||||
|
||||
static ImBuf *do_adjustment_impl(const SeqRenderData *context, Sequence *seq, float timeline_frame)
|
||||
static ImBuf *do_adjustment_impl(const SeqRenderData *context, Strip *seq, float timeline_frame)
|
||||
{
|
||||
Editing *ed;
|
||||
ImBuf *i = nullptr;
|
||||
@@ -55,7 +55,7 @@ static ImBuf *do_adjustment_impl(const SeqRenderData *context, Sequence *seq, fl
|
||||
* a meta-strip and have that work on everything below the meta-strip. */
|
||||
|
||||
if (!i) {
|
||||
Sequence *meta;
|
||||
Strip *meta;
|
||||
|
||||
meta = SEQ_find_metastrip_by_sequence(&ed->seqbase, nullptr, seq);
|
||||
|
||||
@@ -68,7 +68,7 @@ static ImBuf *do_adjustment_impl(const SeqRenderData *context, Sequence *seq, fl
|
||||
}
|
||||
|
||||
static ImBuf *do_adjustment(const SeqRenderData *context,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
float timeline_frame,
|
||||
float /*fac*/,
|
||||
ImBuf * /*ibuf1*/,
|
||||
|
||||
@@ -22,10 +22,10 @@ using namespace blender;
|
||||
/* -------------------------------------------------------------------- */
|
||||
/* Alpha Over Effect */
|
||||
|
||||
static void init_alpha_over_or_under(Sequence *seq)
|
||||
static void init_alpha_over_or_under(Strip *seq)
|
||||
{
|
||||
Sequence *seq1 = seq->seq1;
|
||||
Sequence *seq2 = seq->seq2;
|
||||
Strip *seq1 = seq->seq1;
|
||||
Strip *seq2 = seq->seq2;
|
||||
|
||||
seq->seq2 = seq1;
|
||||
seq->seq1 = seq2;
|
||||
@@ -77,7 +77,7 @@ struct AlphaOverEffectOp {
|
||||
};
|
||||
|
||||
static ImBuf *do_alphaover_effect(const SeqRenderData *context,
|
||||
Sequence * /*seq*/,
|
||||
Strip * /*seq*/,
|
||||
float /*timeline_frame*/,
|
||||
float fac,
|
||||
ImBuf *src1,
|
||||
@@ -126,7 +126,7 @@ struct AlphaUnderEffectOp {
|
||||
};
|
||||
|
||||
static ImBuf *do_alphaunder_effect(const SeqRenderData *context,
|
||||
Sequence * /*seq*/,
|
||||
Strip * /*seq*/,
|
||||
float /*timeline_frame*/,
|
||||
float fac,
|
||||
ImBuf *src1,
|
||||
@@ -318,7 +318,7 @@ struct BlendModeEffectOp {
|
||||
};
|
||||
|
||||
static ImBuf *do_blend_mode_effect(const SeqRenderData *context,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
float /*timeline_frame*/,
|
||||
float fac,
|
||||
ImBuf *src1,
|
||||
@@ -335,7 +335,7 @@ static ImBuf *do_blend_mode_effect(const SeqRenderData *context,
|
||||
/* -------------------------------------------------------------------- */
|
||||
/* Color Mix Effect */
|
||||
|
||||
static void init_colormix_effect(Sequence *seq)
|
||||
static void init_colormix_effect(Strip *seq)
|
||||
{
|
||||
if (seq->effectdata) {
|
||||
MEM_freeN(seq->effectdata);
|
||||
@@ -347,7 +347,7 @@ static void init_colormix_effect(Sequence *seq)
|
||||
}
|
||||
|
||||
static ImBuf *do_colormix_effect(const SeqRenderData *context,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
float /*timeline_frame*/,
|
||||
float /*fac*/,
|
||||
ImBuf *src1,
|
||||
@@ -371,7 +371,7 @@ static ImBuf *do_colormix_effect(const SeqRenderData *context,
|
||||
* inputs and thus the effect "fade" factor controlling the other input. */
|
||||
|
||||
static ImBuf *do_overdrop_effect(const SeqRenderData *context,
|
||||
Sequence *seq,
|
||||
Strip *seq,
|
||||
float timeline_frame,
|
||||
float fac,
|
||||
ImBuf *src1,
|
||||
@@ -380,12 +380,12 @@ static ImBuf *do_overdrop_effect(const SeqRenderData *context,
|
||||
return do_alphaover_effect(context, seq, timeline_frame, fac, src1, src2);
|
||||
}
|
||||
|
||||
static void copy_effect_default(Sequence *dst, const Sequence *src, const int /*flag*/)
|
||||
static void copy_effect_default(Strip *dst, const Strip *src, const int /*flag*/)
|
||||
{
|
||||
dst->effectdata = MEM_dupallocN(src->effectdata);
|
||||
}
|
||||
|
||||
static void free_effect_default(Sequence *seq, const bool /*do_id_user*/)
|
||||
static void free_effect_default(Strip *seq, const bool /*do_id_user*/)
|
||||
{
|
||||
MEM_SAFE_FREE(seq->effectdata);
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user