Cleanup: VSE: Replace STRIP_DUPE macros with enum
This removes the `STRIP_DUPE_UNIQUE_NAME` and `STRIP_DUPE_ALL` macros and replaces them with an `enum StripDuplicate`. A flag with a value of 0 was implicitly used as "duplicate selected strips" so the enum uses `Selected = 0` to document this behavior better. Pull Request: https://projects.blender.org/blender/blender/pulls/144125
This commit is contained in:
@@ -338,7 +338,7 @@ static void scene_copy_data(Main *bmain,
|
||||
scene_dst,
|
||||
&scene_dst->ed->seqbase,
|
||||
&scene_src->ed->seqbase,
|
||||
STRIP_DUPE_ALL,
|
||||
blender::seq::StripDuplicate::All,
|
||||
flag_subdata);
|
||||
BLI_duplicatelist(&scene_dst->ed->channels, &scene_src->ed->channels);
|
||||
scene_dst->ed->displayed_channels = &scene_dst->ed->channels;
|
||||
|
||||
@@ -168,8 +168,12 @@ static bool sequencer_write_copy_paste_file(Main *bmain_src,
|
||||
/* Create an empty sequence editor data to store all copied strips. */
|
||||
scene_dst->ed = MEM_callocN<Editing>(__func__);
|
||||
scene_dst->ed->seqbasep = &scene_dst->ed->seqbase;
|
||||
seq::seqbase_duplicate_recursive(
|
||||
scene_src, scene_dst, &scene_dst->ed->seqbase, scene_src->ed->seqbasep, 0, 0);
|
||||
seq::seqbase_duplicate_recursive(scene_src,
|
||||
scene_dst,
|
||||
&scene_dst->ed->seqbase,
|
||||
scene_src->ed->seqbasep,
|
||||
seq::StripDuplicate::Selected,
|
||||
0);
|
||||
|
||||
BLI_duplicatelist(&scene_dst->ed->channels, &scene_src->ed->channels);
|
||||
scene_dst->ed->displayed_channels = &scene_dst->ed->channels;
|
||||
@@ -476,7 +480,8 @@ wmOperatorStatus sequencer_clipboard_paste_exec(bContext *C, wmOperator *op)
|
||||
ListBase nseqbase = {nullptr, nullptr};
|
||||
/* NOTE: seq::seqbase_duplicate_recursive() takes care of generating
|
||||
* new UIDs for sequences in the new list. */
|
||||
seq::seqbase_duplicate_recursive(scene_src, scene_dst, &nseqbase, &scene_src->ed->seqbase, 0, 0);
|
||||
seq::seqbase_duplicate_recursive(
|
||||
scene_src, scene_dst, &nseqbase, &scene_src->ed->seqbase, seq::StripDuplicate::Selected, 0);
|
||||
|
||||
/* BKE_main_merge will copy the scene_src and its action into bmain_dst. Remove them as
|
||||
* we merge the data from these manually.
|
||||
|
||||
@@ -1755,7 +1755,8 @@ static wmOperatorStatus sequencer_add_duplicate_exec(bContext *C, wmOperator * /
|
||||
}
|
||||
}
|
||||
|
||||
seq::seqbase_duplicate_recursive(scene, scene, &duplicated_strips, ed->seqbasep, 0, 0);
|
||||
seq::seqbase_duplicate_recursive(
|
||||
scene, scene, &duplicated_strips, ed->seqbasep, seq::StripDuplicate::Selected, 0);
|
||||
deselect_all_strips(scene);
|
||||
|
||||
if (duplicated_strips.first == nullptr) {
|
||||
@@ -2018,7 +2019,7 @@ static wmOperatorStatus sequencer_separate_images_exec(bContext *C, wmOperator *
|
||||
se = seq::render_give_stripelem(scene, strip, timeline_frame);
|
||||
|
||||
strip_new = seq::strip_duplicate_recursive(
|
||||
scene, scene, seqbase, strip, STRIP_DUPE_UNIQUE_NAME);
|
||||
scene, scene, seqbase, strip, seq::StripDuplicate::UniqueName);
|
||||
|
||||
strip_new->start = start_ofs;
|
||||
strip_new->type = STRIP_TYPE_IMAGE;
|
||||
|
||||
@@ -36,8 +36,13 @@ enum {
|
||||
};
|
||||
|
||||
/* strip_duplicate' flags */
|
||||
#define STRIP_DUPE_UNIQUE_NAME (1 << 0)
|
||||
#define STRIP_DUPE_ALL (1 << 3) /* otherwise only selected are copied */
|
||||
enum class StripDuplicate : uint8_t {
|
||||
/* Note: Technically, the selected strips are duplicated when `All` is not set. */
|
||||
Selected = 0,
|
||||
UniqueName = (1 << 0),
|
||||
All = (1 << 3),
|
||||
};
|
||||
ENUM_OPERATORS(StripDuplicate, StripDuplicate::All);
|
||||
|
||||
SequencerToolSettings *tool_settings_init();
|
||||
SequencerToolSettings *tool_settings_ensure(Scene *scene);
|
||||
@@ -88,13 +93,16 @@ void meta_stack_set(const Scene *scene, Strip *dst);
|
||||
* \param ed: sequence editor data
|
||||
*/
|
||||
Strip *meta_stack_pop(Editing *ed);
|
||||
Strip *strip_duplicate_recursive(
|
||||
const Scene *scene_src, Scene *scene_dst, ListBase *new_seq_list, Strip *strip, int dupe_flag);
|
||||
Strip *strip_duplicate_recursive(const Scene *scene_src,
|
||||
Scene *scene_dst,
|
||||
ListBase *new_seq_list,
|
||||
Strip *strip,
|
||||
StripDuplicate dupe_flag);
|
||||
void seqbase_duplicate_recursive(const Scene *scene_src,
|
||||
Scene *scene_dst,
|
||||
ListBase *nseqbase,
|
||||
const ListBase *seqbase,
|
||||
int dupe_flag,
|
||||
StripDuplicate dupe_flag,
|
||||
int flag);
|
||||
bool is_valid_strip_channel(const Strip *strip);
|
||||
|
||||
|
||||
@@ -469,7 +469,7 @@ bool proxy_rebuild_context(Main *bmain,
|
||||
|
||||
context = MEM_callocN<IndexBuildContext>("strip proxy rebuild context");
|
||||
|
||||
strip_new = strip_duplicate_recursive(scene, scene, nullptr, strip, 0);
|
||||
strip_new = strip_duplicate_recursive(scene, scene, nullptr, strip, StripDuplicate::Selected);
|
||||
|
||||
context->tc_flags = strip_new->data->proxy->build_tc_flags;
|
||||
context->size_flags = strip_new->data->proxy->build_size_flags;
|
||||
|
||||
@@ -505,7 +505,7 @@ static Strip *strip_duplicate(const Scene *scene_src,
|
||||
Scene *scene_dst,
|
||||
ListBase *new_seq_list,
|
||||
Strip *strip,
|
||||
int dupe_flag,
|
||||
const StripDuplicate dupe_flag,
|
||||
const int flag,
|
||||
blender::Map<Strip *, Strip *> &strip_map)
|
||||
{
|
||||
@@ -603,7 +603,7 @@ static Strip *strip_duplicate(const Scene *scene_src,
|
||||
BLI_assert_unreachable();
|
||||
}
|
||||
|
||||
/* When using #STRIP_DUPE_UNIQUE_NAME, it is mandatory to add new strips in relevant container
|
||||
/* When using StripDuplicate::UniqueName, it is mandatory to add new strips in relevant container
|
||||
* (scene or meta's one), *before* checking for unique names. Otherwise the meta's list is empty
|
||||
* and hence we miss all sequencer strips in that meta that have already been duplicated,
|
||||
* (see #55668). Note that unique name check itself could be done at a later step in calling
|
||||
@@ -614,7 +614,7 @@ static Strip *strip_duplicate(const Scene *scene_src,
|
||||
}
|
||||
|
||||
if (scene_src == scene_dst) {
|
||||
if (dupe_flag & STRIP_DUPE_UNIQUE_NAME) {
|
||||
if (int(dupe_flag & StripDuplicate::UniqueName) != 0) {
|
||||
strip_unique_name_set(scene_dst, &scene_dst->ed->seqbase, strip_new);
|
||||
}
|
||||
}
|
||||
@@ -631,7 +631,7 @@ static Strip *strip_duplicate_recursive_impl(const Scene *scene_src,
|
||||
Scene *scene_dst,
|
||||
ListBase *new_seq_list,
|
||||
Strip *strip,
|
||||
const int dupe_flag,
|
||||
const StripDuplicate dupe_flag,
|
||||
blender::Map<Strip *, Strip *> &strip_map)
|
||||
{
|
||||
Strip *strip_new = strip_duplicate(
|
||||
@@ -645,8 +645,11 @@ static Strip *strip_duplicate_recursive_impl(const Scene *scene_src,
|
||||
return strip_new;
|
||||
}
|
||||
|
||||
Strip *strip_duplicate_recursive(
|
||||
const Scene *scene_src, Scene *scene_dst, ListBase *new_seq_list, Strip *strip, int dupe_flag)
|
||||
Strip *strip_duplicate_recursive(const Scene *scene_src,
|
||||
Scene *scene_dst,
|
||||
ListBase *new_seq_list,
|
||||
Strip *strip,
|
||||
const StripDuplicate dupe_flag)
|
||||
{
|
||||
blender::Map<Strip *, Strip *> strip_map;
|
||||
|
||||
@@ -665,12 +668,12 @@ static void seqbase_dupli_recursive(const Scene *scene_src,
|
||||
Scene *scene_dst,
|
||||
ListBase *nseqbase,
|
||||
const ListBase *seqbase,
|
||||
int dupe_flag,
|
||||
const StripDuplicate dupe_flag,
|
||||
const int flag,
|
||||
blender::Map<Strip *, Strip *> &strip_map)
|
||||
{
|
||||
LISTBASE_FOREACH (Strip *, strip, seqbase) {
|
||||
if ((strip->flag & SELECT) == 0 && (dupe_flag & STRIP_DUPE_ALL) == 0) {
|
||||
if ((strip->flag & SELECT) == 0 && int(dupe_flag & StripDuplicate::All) == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -680,7 +683,7 @@ static void seqbase_dupli_recursive(const Scene *scene_src,
|
||||
|
||||
if (strip->type == STRIP_TYPE_META) {
|
||||
/* Always include meta all strip children. */
|
||||
int dupe_flag_recursive = dupe_flag | STRIP_DUPE_ALL;
|
||||
const StripDuplicate dupe_flag_recursive = dupe_flag | StripDuplicate::All;
|
||||
seqbase_dupli_recursive(scene_src,
|
||||
scene_dst,
|
||||
&strip_new->seqbase,
|
||||
@@ -696,7 +699,7 @@ void seqbase_duplicate_recursive(const Scene *scene_src,
|
||||
Scene *scene_dst,
|
||||
ListBase *nseqbase,
|
||||
const ListBase *seqbase,
|
||||
int dupe_flag,
|
||||
const StripDuplicate dupe_flag,
|
||||
const int flag)
|
||||
{
|
||||
blender::Map<Strip *, Strip *> strip_map;
|
||||
|
||||
@@ -454,7 +454,7 @@ Strip *edit_strip_split(Main *bmain,
|
||||
|
||||
/* Duplicate ListBase. */
|
||||
ListBase right_strips = {nullptr, nullptr};
|
||||
seqbase_duplicate_recursive(scene, scene, &right_strips, &left_strips, STRIP_DUPE_ALL, 0);
|
||||
seqbase_duplicate_recursive(scene, scene, &right_strips, &left_strips, StripDuplicate::All, 0);
|
||||
|
||||
Strip *left_strip = static_cast<Strip *>(left_strips.first);
|
||||
Strip *right_strip = static_cast<Strip *>(right_strips.first);
|
||||
|
||||
Reference in New Issue
Block a user