[Bf-blender-cvs] [13ca11ac52a] master: VSE: Unify sequences collections API
Richard Antalik
noreply at git.blender.org
Wed Dec 2 05:52:53 CET 2020
Commit: 13ca11ac52a851d1a2ef252335f7a19d36223506
Author: Richard Antalik
Date: Wed Dec 2 05:51:22 2020 +0100
Branches: master
https://developer.blender.org/rB13ca11ac52a851d1a2ef252335f7a19d36223506
VSE: Unify sequences collections API
Use RNA_api_sequences() for SequenceEditor and MetaSequence
sequences member.
Defines pair of dispatch functions rna_Sequences_editing_* and
rna_Sequences_meta_* that pass pointer to seqbase to
rna_Sequences_* function.
Downside of this implementation is, that it defines 2 seemingly
different RNA collections - SequencesMeta and SequencesTopLevel
Reviewed By: mont29
Differential Revision: https://developer.blender.org/D9601
===================================================================
M source/blender/makesrna/intern/rna_internal.h
M source/blender/makesrna/intern/rna_sequencer.c
M source/blender/makesrna/intern/rna_sequencer_api.c
===================================================================
diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h
index 2e24461d332..76ab222e629 100644
--- a/source/blender/makesrna/intern/rna_internal.h
+++ b/source/blender/makesrna/intern/rna_internal.h
@@ -421,7 +421,7 @@ void RNA_api_space_node(struct StructRNA *srna);
void RNA_api_space_text(struct StructRNA *srna);
void RNA_api_region_view3d(struct StructRNA *srna);
void RNA_api_texture(struct StructRNA *srna);
-void RNA_api_sequences(BlenderRNA *brna, PropertyRNA *cprop);
+void RNA_api_sequences(BlenderRNA *brna, PropertyRNA *cprop, const bool metastrip);
void RNA_api_sequence_elements(BlenderRNA *brna, PropertyRNA *cprop);
void RNA_api_sound(struct StructRNA *srna);
void RNA_api_vfont(struct StructRNA *srna);
diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c
index 2ffb9612486..ac45cd5c5ff 100644
--- a/source/blender/makesrna/intern/rna_sequencer.c
+++ b/source/blender/makesrna/intern/rna_sequencer.c
@@ -1967,7 +1967,7 @@ static void rna_def_editor(BlenderRNA *brna)
RNA_def_property_collection_sdna(prop, NULL, "seqbase", NULL);
RNA_def_property_struct_type(prop, "Sequence");
RNA_def_property_ui_text(prop, "Sequences", "Top-level strips only");
- RNA_api_sequences(brna, prop);
+ RNA_api_sequences(brna, prop, false);
prop = RNA_def_property(srna, "sequences_all", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "seqbase", NULL);
@@ -2339,7 +2339,8 @@ static void rna_def_meta(BlenderRNA *brna)
prop = RNA_def_property(srna, "sequences", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "seqbase", NULL);
RNA_def_property_struct_type(prop, "Sequence");
- RNA_def_property_ui_text(prop, "Sequences", "");
+ RNA_def_property_ui_text(prop, "Sequences", "Sequences nested in meta strip");
+ RNA_api_sequences(brna, prop, true);
rna_def_filter_video(srna);
rna_def_proxy(srna);
diff --git a/source/blender/makesrna/intern/rna_sequencer_api.c b/source/blender/makesrna/intern/rna_sequencer_api.c
index 5419fc4ac7c..5d17beba901 100644
--- a/source/blender/makesrna/intern/rna_sequencer_api.c
+++ b/source/blender/makesrna/intern/rna_sequencer_api.c
@@ -77,15 +77,15 @@ static void rna_Sequence_swap_internal(Sequence *seq_self,
}
static Sequence *alloc_generic_sequence(
- Editing *ed, const char *name, int frame_start, int channel, int type, const char *file)
+ ListBase *seqbase, const char *name, int frame_start, int channel, int type, const char *file)
{
Sequence *seq;
StripElem *se;
- seq = BKE_sequence_alloc(ed->seqbasep, frame_start, channel, type);
+ seq = BKE_sequence_alloc(seqbase, frame_start, channel, type);
BLI_strncpy(seq->name + 2, name, sizeof(seq->name) - 2);
- BKE_sequence_base_unique_name_recursive(&ed->seqbase, seq);
+ BKE_sequence_base_unique_name_recursive(seqbase, seq);
Strip *strip = seq->strip;
@@ -105,7 +105,7 @@ static Sequence *alloc_generic_sequence(
}
static Sequence *rna_Sequences_new_clip(ID *id,
- Editing *ed,
+ ListBase *seqbase,
Main *bmain,
const char *name,
MovieClip *clip,
@@ -115,7 +115,8 @@ static Sequence *rna_Sequences_new_clip(ID *id,
Scene *scene = (Scene *)id;
Sequence *seq;
- seq = alloc_generic_sequence(ed, name, frame_start, channel, SEQ_TYPE_MOVIECLIP, clip->filepath);
+ seq = alloc_generic_sequence(
+ seqbase, name, frame_start, channel, SEQ_TYPE_MOVIECLIP, clip->filepath);
seq->clip = clip;
seq->len = BKE_movieclip_get_duration(clip);
id_us_plus((ID *)clip);
@@ -129,13 +130,40 @@ static Sequence *rna_Sequences_new_clip(ID *id,
return seq;
}
-static Sequence *rna_Sequences_new_mask(
- ID *id, Editing *ed, Main *bmain, const char *name, Mask *mask, int channel, int frame_start)
+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,
+ 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)
{
Scene *scene = (Scene *)id;
Sequence *seq;
- seq = alloc_generic_sequence(ed, name, frame_start, channel, SEQ_TYPE_MASK, mask->id.name);
+ seq = alloc_generic_sequence(seqbase, name, frame_start, channel, SEQ_TYPE_MASK, mask->id.name);
seq->mask = mask;
seq->len = BKE_mask_get_duration(mask);
id_us_plus((ID *)mask);
@@ -149,9 +177,20 @@ static Sequence *rna_Sequences_new_mask(
return seq;
}
+static Sequence *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)
+{
+ return rna_Sequences_new_mask(id, &seq->seqbase, bmain, name, mask, channel, frame_start);
+}
static Sequence *rna_Sequences_new_scene(ID *id,
- Editing *ed,
+ ListBase *seqbase,
Main *bmain,
const char *name,
Scene *sce_seq,
@@ -161,7 +200,7 @@ static Sequence *rna_Sequences_new_scene(ID *id,
Scene *scene = (Scene *)id;
Sequence *seq;
- seq = alloc_generic_sequence(ed, name, frame_start, channel, SEQ_TYPE_SCENE, NULL);
+ seq = alloc_generic_sequence(seqbase, name, frame_start, channel, SEQ_TYPE_SCENE, NULL);
seq->scene = sce_seq;
seq->len = sce_seq->r.efra - sce_seq->r.sfra + 1;
id_us_plus((ID *)sce_seq);
@@ -176,8 +215,30 @@ 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,
+ 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,
- Editing *ed,
+ ListBase *seqbase,
Main *bmain,
ReportList *reports,
const char *name,
@@ -188,12 +249,12 @@ static Sequence *rna_Sequences_new_image(ID *id,
Scene *scene = (Scene *)id;
Sequence *seq;
- seq = alloc_generic_sequence(ed, name, frame_start, channel, SEQ_TYPE_IMAGE, file);
+ seq = alloc_generic_sequence(seqbase, name, frame_start, channel, SEQ_TYPE_IMAGE, file);
seq->len = 1;
if (seq->strip->stripdata->name[0] == '\0') {
BKE_report(reports, RPT_ERROR, "Sequences.new_image: unable to open image file");
- BLI_remlink(&ed->seqbase, seq);
+ BLI_remlink(seqbase, seq);
BKE_sequence_free(scene, seq, true);
return NULL;
}
@@ -208,14 +269,40 @@ 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)
+{
+ return rna_Sequences_new_image(
+ id, &ed->seqbase, bmain, reports, name, file, channel, frame_start);
+}
+
+static Sequence *rna_Sequences_meta_new_image(ID *id,
+ Sequence *seq,
+ Main *bmain,
+ ReportLi
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list