61static void rna_Sequence_swap_internal(
ID *
id,
66 const char *error_msg;
74static void rna_Sequences_move_strip_to_meta(
78 const char *error_msg;
100 const char *error_msg =
nullptr;
102 bmain, scene, seqbase, seq, frame,
eSeqSplitMethod(split_method), &error_msg);
103 if (error_msg !=
nullptr) {
124static Sequence *rna_Sequences_new_clip(
ID *
id,
135 load_data.
clip = clip;
145static Sequence *rna_Sequences_editing_new_clip(
ID *
id,
153 return rna_Sequences_new_clip(
id, &ed->
seqbase, bmain, name, clip, channel, frame_start);
156static Sequence *rna_Sequences_meta_new_clip(
ID *
id,
164 return rna_Sequences_new_clip(
id, &seq->
seqbase, bmain, name, clip, channel, frame_start);
167static Sequence *rna_Sequences_new_mask(
ID *
id,
187static Sequence *rna_Sequences_editing_new_mask(
188 ID *
id,
Editing *ed,
Main *bmain,
const char *name,
Mask *mask,
int channel,
int frame_start)
190 return rna_Sequences_new_mask(
id, &ed->
seqbase, bmain, name, mask, channel, frame_start);
193static Sequence *rna_Sequences_meta_new_mask(
194 ID *
id,
Sequence *seq,
Main *bmain,
const char *name,
Mask *mask,
int channel,
int frame_start)
196 return rna_Sequences_new_mask(
id, &seq->
seqbase, bmain, name, mask, channel, frame_start);
199static Sequence *rna_Sequences_new_scene(
ID *
id,
210 load_data.
scene = sce_seq;
220static Sequence *rna_Sequences_editing_new_scene(
ID *
id,
228 return rna_Sequences_new_scene(
id, &ed->
seqbase, bmain, name, sce_seq, channel, frame_start);
231static Sequence *rna_Sequences_meta_new_scene(
ID *
id,
239 return rna_Sequences_new_scene(
id, &seq->
seqbase, bmain, name, sce_seq, channel, frame_start);
242static Sequence *rna_Sequences_new_image(
ID *
id,
273static Sequence *rna_Sequences_editing_new_image(
ID *
id,
283 return rna_Sequences_new_image(
284 id, &ed->
seqbase, bmain, reports, name, file, channel, frame_start, fit_method);
287static Sequence *rna_Sequences_meta_new_image(
ID *
id,
297 return rna_Sequences_new_image(
298 id, &seq->
seqbase, bmain, reports, name, file, channel, frame_start, fit_method);
301static Sequence *rna_Sequences_new_movie(
ID *
id,
324static Sequence *rna_Sequences_editing_new_movie(
ID *
id,
333 return rna_Sequences_new_movie(
334 id, &ed->
seqbase, bmain, name, file, channel, frame_start, fit_method);
337static Sequence *rna_Sequences_meta_new_movie(
ID *
id,
346 return rna_Sequences_new_movie(
347 id, &seq->
seqbase, bmain, name, file, channel, frame_start, fit_method);
350# ifdef WITH_AUDASPACE
351static Sequence *rna_Sequences_new_sound(
ID *
id,
366 if (seq ==
nullptr) {
378static Sequence *rna_Sequences_new_sound(
ID * ,
392static Sequence *rna_Sequences_editing_new_sound(
ID *
id,
401 return rna_Sequences_new_sound(
402 id, &ed->
seqbase, bmain, reports, name, file, channel, frame_start);
405static Sequence *rna_Sequences_meta_new_sound(
ID *
id,
414 return rna_Sequences_new_sound(
415 id, &seq->
seqbase, bmain, reports, name, file, channel, frame_start);
421static Sequence *rna_Sequences_new_meta(
422 ID *
id,
ListBase *seqbase,
const char *name,
int channel,
int frame_start)
432static Sequence *rna_Sequences_editing_new_meta(
433 ID *
id,
Editing *ed,
const char *name,
int channel,
int frame_start)
435 return rna_Sequences_new_meta(
id, &ed->
seqbase, name, channel, frame_start);
438static Sequence *rna_Sequences_meta_new_meta(
439 ID *
id,
Sequence *seq,
const char *name,
int channel,
int frame_start)
441 return rna_Sequences_new_meta(
id, &seq->
seqbase, name, channel, frame_start);
444static Sequence *rna_Sequences_new_effect(
ID *
id,
459 switch (num_inputs) {
461 if (frame_end <= frame_start) {
467 if (seq1 ==
nullptr) {
473 if (seq1 ==
nullptr || seq2 ==
nullptr) {
482 "Sequences.new_effect: effect expects more than 2 inputs (%d, should never happen!)",
501static Sequence *rna_Sequences_editing_new_effect(
ID *
id,
512 return rna_Sequences_new_effect(
513 id, &ed->
seqbase, reports, name, type, channel, frame_start, frame_end, seq1, seq2);
516static Sequence *rna_Sequences_meta_new_effect(
ID *
id,
527 return rna_Sequences_new_effect(
528 id, &seq->
seqbase, reports, name, type, channel, frame_start, frame_end, seq1, seq2);
531static void rna_Sequences_remove(
539 reports,
RPT_ERROR,
"Sequence '%s' not in scene '%s'", seq->
name + 2, scene->id.name + 2);
552static void rna_Sequences_editing_remove(
555 rna_Sequences_remove(
id, &ed->
seqbase, bmain, reports, seq_ptr);
558static void rna_Sequences_meta_remove(
561 rna_Sequences_remove(
id, &seq->
seqbase, bmain, reports, seq_ptr);
575 seq->
flag &= ~SEQ_SINGLE_FRAME_CONTENT;
597 if (seq->
len <= index || index < 0) {
612 memcpy(new_seq, se,
sizeof(
StripElem) * index);
615 if (index < seq->
len) {
616 memcpy(&new_seq[index], &se[index + 1],
sizeof(
StripElem) * (seq->
len - index));
625static void rna_Sequence_invalidate_cache_rnafunc(
ID *
id,
Sequence *
self,
int type)
651static void rna_Sequence_retiming_keys_reset(
ID *
id,
Sequence *seq)
672 {0,
nullptr, 0,
nullptr,
nullptr},
678 {0,
nullptr, 0,
nullptr,
nullptr},
681 func =
RNA_def_function(srna,
"strip_elem_from_frame",
"rna_Sequence_strip_elem_from_frame");
690 "The frame to get the strip element from",
696 RNA_def_pointer(func,
"elem",
"SequenceElement",
"",
"strip element of the current frame"));
704 func =
RNA_def_function(srna,
"move_to_meta",
"rna_Sequences_move_strip_to_meta");
709 "Destination Meta Sequence",
710 "Meta to move the strip into");
717 parm =
RNA_def_pointer(func,
"sequence",
"Sequence",
"",
"Parent Meta");
720 func =
RNA_def_function(srna,
"invalidate_cache",
"rna_Sequence_invalidate_cache_rnafunc");
723 "Invalidate cached images for strip and all dependent strips");
724 parm =
RNA_def_enum(func,
"type", seq_cahce_type_items, 0,
"Type",
"Cache Type");
731 func,
"frame", 0, INT_MIN, INT_MAX,
"",
"Frame where to split the strip", INT_MIN, INT_MAX);
733 parm =
RNA_def_enum(func,
"split_method", seq_split_method_items, 0,
"",
"");
736 parm =
RNA_def_pointer(func,
"sequence",
"Sequence",
"",
"Right side Sequence");
754 parm =
RNA_def_string(func,
"filename",
"File", 0,
"",
"Filepath to image");
757 parm =
RNA_def_pointer(func,
"elem",
"SequenceElement",
"",
"New SequenceElement");
764 func,
"index", -1, INT_MIN, INT_MAX,
"",
"Index of image to remove", INT_MIN, INT_MAX);
816 {0,
nullptr, 0,
nullptr,
nullptr},
820 {
SEQ_SCALE_TO_FIT,
"FIT", 0,
"Scale to Fit",
"Scale image so fits in preview"},
825 "Scale image so it fills preview completely"},
826 {
SEQ_STRETCH_TO_FILL,
"STRETCH", 0,
"Stretch to Fill",
"Stretch image so it fills preview"},
828 {0,
nullptr, 0,
nullptr,
nullptr},
831 const char *new_clip_func_name =
"rna_Sequences_editing_new_clip";
832 const char *new_mask_func_name =
"rna_Sequences_editing_new_mask";
833 const char *new_scene_func_name =
"rna_Sequences_editing_new_scene";
834 const char *new_image_func_name =
"rna_Sequences_editing_new_image";
835 const char *new_movie_func_name =
"rna_Sequences_editing_new_movie";
836 const char *new_sound_func_name =
"rna_Sequences_editing_new_sound";
837 const char *new_meta_func_name =
"rna_Sequences_editing_new_meta";
838 const char *new_effect_func_name =
"rna_Sequences_editing_new_effect";
839 const char *remove_func_name =
"rna_Sequences_editing_remove";
846 new_clip_func_name =
"rna_Sequences_meta_new_clip";
847 new_mask_func_name =
"rna_Sequences_meta_new_mask";
848 new_scene_func_name =
"rna_Sequences_meta_new_scene";
849 new_image_func_name =
"rna_Sequences_meta_new_image";
850 new_movie_func_name =
"rna_Sequences_meta_new_movie";
851 new_sound_func_name =
"rna_Sequences_meta_new_sound";
852 new_meta_func_name =
"rna_Sequences_meta_new_meta";
853 new_effect_func_name =
"rna_Sequences_meta_new_effect";
854 remove_func_name =
"rna_Sequences_meta_remove";
867 parm =
RNA_def_string(func,
"name",
"Name", 0,
"",
"Name for the new sequence");
869 parm =
RNA_def_pointer(func,
"clip",
"MovieClip",
"",
"Movie clip to add");
877 "The channel for the new sequence",
887 "The start frame for the new sequence",
892 parm =
RNA_def_pointer(func,
"sequence",
"Sequence",
"",
"New Sequence");
898 parm =
RNA_def_string(func,
"name",
"Name", 0,
"",
"Name for the new sequence");
908 "The channel for the new sequence",
918 "The start frame for the new sequence",
923 parm =
RNA_def_pointer(func,
"sequence",
"Sequence",
"",
"New Sequence");
929 parm =
RNA_def_string(func,
"name",
"Name", 0,
"",
"Name for the new sequence");
939 "The channel for the new sequence",
949 "The start frame for the new sequence",
954 parm =
RNA_def_pointer(func,
"sequence",
"Sequence",
"",
"New Sequence");
960 parm =
RNA_def_string(func,
"name",
"Name", 0,
"",
"Name for the new sequence");
962 parm =
RNA_def_string(func,
"filepath",
"File", 0,
"",
"Filepath to image");
970 "The channel for the new sequence",
980 "The start frame for the new sequence",
988 parm =
RNA_def_pointer(func,
"sequence",
"Sequence",
"",
"New Sequence");
994 parm =
RNA_def_string(func,
"name",
"Name", 0,
"",
"Name for the new sequence");
996 parm =
RNA_def_string(func,
"filepath",
"File", 0,
"",
"Filepath to movie");
1004 "The channel for the new sequence",
1014 "The start frame for the new sequence",
1022 parm =
RNA_def_pointer(func,
"sequence",
"Sequence",
"",
"New Sequence");
1028 parm =
RNA_def_string(func,
"name",
"Name", 0,
"",
"Name for the new sequence");
1030 parm =
RNA_def_string(func,
"filepath",
"File", 0,
"",
"Filepath to movie");
1038 "The channel for the new sequence",
1048 "The start frame for the new sequence",
1053 parm =
RNA_def_pointer(func,
"sequence",
"Sequence",
"",
"New Sequence");
1059 parm =
RNA_def_string(func,
"name",
"Name", 0,
"",
"Name for the new sequence");
1067 "The channel for the new sequence",
1077 "The start frame for the new sequence",
1082 parm =
RNA_def_pointer(func,
"sequence",
"Sequence",
"",
"New Sequence");
1088 parm =
RNA_def_string(func,
"name",
"Name", 0,
"",
"Name for the new sequence");
1090 parm =
RNA_def_enum(func,
"type", seq_effect_items, 0,
"Type",
"type for the new sequence");
1098 "The channel for the new sequence",
1109 "The start frame for the new sequence",
1119 "The end frame for the new sequence",
1122 RNA_def_pointer(func,
"seq1",
"Sequence",
"",
"Sequence 1 for effect");
1123 RNA_def_pointer(func,
"seq2",
"Sequence",
"",
"Sequence 2 for effect");
1125 parm =
RNA_def_pointer(func,
"sequence",
"Sequence",
"",
"New Sequence");
1131 parm =
RNA_def_pointer(func,
"sequence",
"Sequence",
"",
"Sequence to remove");
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_report(ReportList *reports, eReportType type, const char *message)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_path_split_dir_file(const char *filepath, char *dir, size_t dir_maxncpy, char *file, size_t file_maxncpy) ATTR_NONNULL(1
#define STRNCPY(dst, src)
void DEG_id_tag_update(ID *id, unsigned int flags)
void DEG_relations_tag_update(Main *bmain)
@ ID_RECALC_SEQUENCER_STRIPS
@ SEQ_CACHE_STORE_PREPROCESSED
@ SEQ_CACHE_STORE_COMPOSITE
@ SEQ_SINGLE_FRAME_CONTENT
Contains defines and structs used throughout the imbuf module.
#define MEM_reallocN(vmemh, len)
#define RNA_POINTER_INVALIDATE(ptr)
constexpr int SEQ_MAX_CHANNELS
int SEQ_effect_get_num_inputs(int seq_type)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
ccl_device_inline float4 mask(const int4 mask, const float4 a)
StripElem * SEQ_render_give_stripelem(const Scene *scene, const Sequence *seq, int timeline_frame)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
void RNA_def_parameter_clear_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void RNA_def_function_return(FunctionRNA *func, PropertyRNA *ret)
void RNA_def_property_srna(PropertyRNA *prop, const char *type)
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
FunctionRNA * RNA_def_function(StructRNA *srna, const char *identifier, const char *call)
PropertyRNA * RNA_def_pointer(StructOrFunctionRNA *cont_, const char *identifier, const char *type, const char *ui_name, const char *ui_description)
void RNA_def_function_ui_description(FunctionRNA *func, const char *description)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
void RNA_def_function_flag(FunctionRNA *func, int flag)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, const int default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
void RNA_def_parameter_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void RNA_api_sequence_retiming_keys(BlenderRNA *brna, PropertyRNA *cprop)
void RNA_api_sequences(BlenderRNA *brna, PropertyRNA *cprop, const bool metastrip)
void RNA_api_sequence_strip(StructRNA *srna)
void RNA_api_sequence_elements(BlenderRNA *brna, PropertyRNA *cprop)
void SEQ_sequence_lookup_invalidate(const Scene *scene)
ListBase * SEQ_get_seqbase_by_seq(const Scene *scene, Sequence *seq)
Editing * SEQ_editing_get(const Scene *scene)
static const EnumPropertyItem scale_fit_methods[]
Sequence * SEQ_add_scene_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data)
Sequence * SEQ_add_movieclip_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data)
Sequence * SEQ_add_effect_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data)
Sequence * SEQ_add_mask_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data)
Sequence * SEQ_add_movie_strip(Main *bmain, Scene *scene, ListBase *seqbase, SeqLoadData *load_data)
void SEQ_add_image_set_directory(Sequence *seq, const char *dirpath)
Sequence * SEQ_add_meta_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data)
void SEQ_add_image_init_alpha_mode(Sequence *seq)
void SEQ_add_image_load_file(Scene *scene, Sequence *seq, size_t strip_frame, const char *filename)
Sequence * SEQ_add_sound_strip(Main *, Scene *, ListBase *, SeqLoadData *)
void SEQ_add_load_data_init(SeqLoadData *load_data, const char *name, const char *path, const int start_frame, const int channel)
Sequence * SEQ_add_image_strip(Main *bmain, Scene *scene, ListBase *seqbase, SeqLoadData *load_data)
void SEQ_edit_flag_for_removal(Scene *scene, ListBase *seqbase, Sequence *seq)
Sequence * SEQ_edit_strip_split(Main *bmain, Scene *scene, ListBase *seqbase, Sequence *seq, const int timeline_frame, const eSeqSplitMethod method, const char **r_error)
bool SEQ_edit_sequence_swap(Scene *scene, Sequence *seq_a, Sequence *seq_b, const char **r_error_str)
void SEQ_edit_remove_flagged_sequences(Scene *scene, ListBase *seqbase)
bool SEQ_edit_move_strip_to_meta(Scene *scene, Sequence *src_seq, Sequence *dst_seqm, const char **r_error_str)
void SEQ_relations_invalidate_cache_raw(Scene *scene, Sequence *seq)
Sequence * SEQ_find_metastrip_by_sequence(ListBase *seqbase, Sequence *meta, Sequence *seq)
void SEQ_relations_invalidate_cache_preprocessed(Scene *scene, Sequence *seq)
void SEQ_relations_invalidate_cache_composite(Scene *scene, Sequence *seq)
void SEQ_retiming_data_clear(Sequence *seq)
SeqRetimingKey * SEQ_retiming_add_key(const Scene *scene, Sequence *seq, const int timeline_frame)
struct SeqLoadData::@1364 effect
eSeqImageFitMethod fit_method
struct SeqLoadData::@1363 image
void WM_main_add_notifier(uint type, void *reference)