215 ot->
idname =
"SEQUENCER_OT_gap_remove";
217 "Remove gap at current frame to first strip at the right, independent of selection or "
218 "locked state of strips";
253 ot->
idname =
"SEQUENCER_OT_gap_insert";
255 "Insert gap at current frame to first strips at the right, independent of selection or "
256 "locked state of strips";
272 "Frames to insert after current strip",
331 if (!either_handle_selected) {
337 if (!either_handle_selected) {
343 if (!either_handle_selected) {
374 ot->
name =
"Snap Strips to the Current Frame";
376 ot->
description =
"Frame where selected strips will be snapped";
392 "Frame where selected strips will be snapped",
451 for (seq = seqbasep->
first; seq; seq = seq->
next) {
471 int trimmed_sequences = 0;
473 for (seq = seqbasep->
first; seq; seq = seq->
next) {
484 return trimmed_sequences;
507 data->num_seq = num_seq;
510 data->num_input.idx_max = 0;
513 data->num_input.unit_type[0] = 0;
517 for (
int i = 0; i < num_seq; i++) {
540 bool changed =
false;
543 for (
int i =
data->num_seq - 1; i >= 0; i--) {
560 else if (endframe <= seq->enddisp) {
601 for (
int i = 0; i <
data->num_seq; i++) {
604 int seq_content_start =
data->ts[i].start + *offset;
608 if (seq_content_start >= seq->
enddisp) {
612 if (seq_content_end <= seq->startdisp) {
625 bool success =
false;
638 data->num_seq = num_seq;
642 for (
int i = 0; i < num_seq; i++) {
707 switch (event->
type) {
716 mouse_x =
event->mval[0] -
data->slow_offset;
718 mouse_x +=
data->slow_offset;
721 mouse_x =
event->mval[0];
726 offset = mouseloc[0] -
data->init_mouseloc[0];
760 for (
int i = 0; i <
data->num_seq; i++) {
764 for (
int i = 0; i <
data->num_seq; i++) {
792 data->slow_offset =
event->mval[0];
846 "Offset to the data of the strip",
904 ot->
srna,
"unselected", 0,
"Unselected",
"Mute unselected rather than selected strips");
948 ot->
name =
"Unmute Strips";
960 ot->
srna,
"unselected", 0,
"Unselected",
"Unmute unselected rather than selected strips");
991 ot->
description =
"Lock strips so they can't be transformed";
1027 ot->
name =
"Unlock Strips";
1028 ot->
idname =
"SEQUENCER_OT_unlock";
1029 ot->
description =
"Unlock strips so they can be transformed";
1058 if (adjust_length) {
1076 ot->
name =
"Reload Strips";
1077 ot->
idname =
"SEQUENCER_OT_reload";
1091 "Adjust length of strips to their data length");
1103 if (
G.is_rendering) {
1124 ot->
name =
"Refresh Sequencer";
1125 ot->
idname =
"SEQUENCER_OT_refresh_all";
1145 const char **r_error_str)
1150 *r_error_str =
NULL;
1157 if (seq->flag &
SELECT) {
1159 *r_error_str =
N_(
"Cannot apply effects to audio sequence strips");
1162 if (!
ELEM(seq, activeseq, seq2)) {
1166 else if (seq1 ==
NULL) {
1169 else if (seq3 ==
NULL) {
1173 *r_error_str =
N_(
"Cannot apply effect to more than 3 sequence strips");
1182 if (seq3 !=
NULL && seq2 !=
NULL) {
1190 *r_selseq1 = *r_selseq2 = *r_selseq3 =
NULL;
1194 *r_error_str =
N_(
"At least one selected sequence strip is needed");
1205 if (seq1 ==
NULL || seq2 ==
NULL) {
1206 *r_error_str =
N_(
"2 selected sequence strips are needed");
1216 *r_error_str =
N_(
"TODO: in what cases does this happen?");
1239 const char *error_msg;
1247 scene, last_seq, last_seq->
type, &seq1, &seq2, &seq3, &error_msg) ||
1260 last_seq->
seq1 = seq1;
1261 last_seq->
seq2 = seq2;
1262 last_seq->
seq3 = seq3;
1264 int old_start = last_seq->
start;
1291 ot->
name =
"Reassign Inputs";
1292 ot->
idname =
"SEQUENCER_OT_reassign_inputs";
1293 ot->
description =
"Reassign the inputs for the effect strip";
1319 seq = last_seq->
seq1;
1321 last_seq->
seq2 = seq;
1332 ot->
name =
"Swap Inputs";
1333 ot->
idname =
"SEQUENCER_OT_swap_inputs";
1334 ot->
description =
"Swap the first two inputs for the effect strip";
1384 bool changed =
false;
1385 bool seq_selected =
false;
1401 if (use_cursor_position && seq->machine != split_channel) {
1405 if (ignore_selection || seq->flag &
SELECT) {
1413 if (ignore_selection) {
1414 if (use_cursor_position) {
1416 if (seq->enddisp == split_frame && seq->machine == split_channel) {
1420 if (!seq_selected) {
1422 if (seq->startdisp == split_frame && seq->machine == split_channel) {
1433 if (seq->startdisp >= split_frame) {
1438 if (seq->enddisp <= split_frame) {
1463 int split_frame =
CFRA;
1505 uiItemR(layout, &
ptr,
"use_cursor_position", 0,
NULL, ICON_NONE);
1514 ot->
name =
"Split Strips";
1534 "Frame where selected strips will be split",
1543 "Channel in which strip will be cut",
1551 "The type of split operation to perform on strips");
1554 "use_cursor_position",
1556 "Use Cursor Position",
1557 "Split at position of the cursor instead of current frame");
1564 "The side that remains selected after splitting");
1573 "Make cut event if strip is not selected preserving selection state after cut");
1587 char name[
sizeof(seq->
name) - 2];
1608 if (nseqbase.
first) {
1614 for (; seq; seq = seq->
next) {
1628 ot->
name =
"Duplicate Strips";
1629 ot->
idname =
"SEQUENCER_OT_duplicate";
1655 if (seq->flag &
SELECT) {
1675 if (event->
mval[1] <= 30) {
1687 ot->
name =
"Erase Strips";
1688 ot->
idname =
"SEQUENCER_OT_delete";
1689 ot->
description =
"Erase selected strips from the sequencer";
1743 ot->
name =
"Clear Strip Offset";
1744 ot->
idname =
"SEQUENCER_OT_offset_clear";
1745 ot->
description =
"Clear strip offsets from the start and end frames";
1769 int start_ofs, timeline_frame, frame_end;
1789 while (timeline_frame < frame_end) {
1796 seq_new->
start = start_ofs;
1802 strip_new = seq_new->
strip;
1827 seq_next = seq->
next;
1846 ot->
name =
"Separate Images";
1847 ot->
idname =
"SEQUENCER_OT_images_separate";
1848 ot->
description =
"On image sequence strips, it returns a strip for each image";
1858 RNA_def_int(
ot->
srna,
"length", 1, 1, INT_MAX,
"Length",
"Length of each frame", 1, 1000);
1900 ot->
name =
"Toggle Meta Strip";
1901 ot->
idname =
"SEQUENCER_OT_meta_toggle";
1902 ot->
description =
"Toggle a metastrip (to edit enclosed strips)";
1932 int channel_max = 1, meta_start_frame =
MAXFRAME, meta_end_frame =
MINFRAME;
1942 channel_max =
max_ii(seq->machine, channel_max);
1943 meta_start_frame =
min_ii(seq->startdisp, meta_start_frame);
1944 meta_end_frame =
max_ii(seq->enddisp, meta_end_frame);
1949 strcpy(seqm->
name + 2,
"MetaStrip");
1951 seqm->
start = meta_start_frame;
1952 seqm->
len = meta_end_frame - meta_start_frame;
1968 ot->
name =
"Make Meta Strip";
1969 ot->
idname =
"SEQUENCER_OT_meta_make";
2013 if (seq->flag &
SELECT) {
2031 ot->
name =
"UnMeta Strip";
2032 ot->
idname =
"SEQUENCER_OT_meta_separate";
2033 ot->
description =
"Put the contents of a metastrip back in the sequencer";
2051 const bool do_skip_mute,
2052 const bool do_center)
2054 bool changed =
false;
2055 int timeline_frame =
CFRA;
2057 scene, timeline_frame, side, do_skip_mute, do_center,
false);
2059 if (next_frame != timeline_frame) {
2070 if (
G.is_rendering) {
2096 ot->
name =
"Jump to Strip";
2097 ot->
idname =
"SEQUENCER_OT_strip_jump";
2145 int dist, best_dist;
2155 ((sel == -1) || (sel == (seq->
flag &
SELECT)))) {
2175 if (dist < best_dist) {
2187 return ((par->
seq1 == seq) || (par->
seq2 == seq) || (par->
seq3 == seq));
2198 if (active_seq ==
NULL) {
2259 ot->
description =
"Swap active strip with strip to the right or left";
2286 if (active_seq ==
NULL) {
2290 if (active_seq->
strip) {
2291 switch (active_seq->
type) {
2323 ot->
name =
"Set Render Size";
2324 ot->
idname =
"SEQUENCER_OT_rendersize";
2325 ot->
description =
"Set render size and aspect from active sequence";
2445 int min_seq_startdisp = INT_MAX;
2447 if (seq->startdisp < min_seq_startdisp) {
2448 min_seq_startdisp = seq->startdisp;
2462 iseq_first = nseqbase.
first;
2468 for (iseq = iseq_first; iseq; iseq = iseq->
next) {
2504 ot->
srna,
"keep_offset",
false,
"Keep Offset",
"Keep strip offset to playhead when pasting");
2519 const char *error_msg;
2545 if (seq_act->
sound) {
2548 if (seq_other->
sound) {
2563 ot->
name =
"Sequencer Swap Data";
2564 ot->
idname =
"SEQUENCER_OT_swap_data";
2582 {0,
"A_B", 0,
"A -> B",
""},
2583 {1,
"B_C", 0,
"B -> C",
""},
2584 {2,
"A_C", 0,
"A -> C",
""},
2611 if (*seq_1 ==
NULL || *seq_2 ==
NULL) {
2630 ot->
name =
"Change Effect Input";
2631 ot->
idname =
"SEQUENCER_OT_change_effect_input";
2651 {
SEQ_TYPE_CROSS,
"CROSS", 0,
"Crossfade",
"Crossfade effect strip type"},
2652 {
SEQ_TYPE_ADD,
"ADD", 0,
"Add",
"Add effect strip type"},
2653 {
SEQ_TYPE_SUB,
"SUBTRACT", 0,
"Subtract",
"Subtract effect strip type"},
2656 {
SEQ_TYPE_GAMCROSS,
"GAMMA_CROSS", 0,
"Gamma Cross",
"Gamma Cross effect strip type"},
2657 {
SEQ_TYPE_MUL,
"MULTIPLY", 0,
"Multiply",
"Multiply effect strip type"},
2658 {
SEQ_TYPE_OVERDROP,
"OVER_DROP", 0,
"Alpha Over Drop",
"Alpha Over Drop effect strip type"},
2659 {
SEQ_TYPE_WIPE,
"WIPE", 0,
"Wipe",
"Wipe effect strip type"},
2660 {
SEQ_TYPE_GLOW,
"GLOW", 0,
"Glow",
"Glow effect strip type"},
2662 {
SEQ_TYPE_COLOR,
"COLOR", 0,
"Color",
"Color effect strip type"},
2663 {
SEQ_TYPE_SPEED,
"SPEED", 0,
"Speed",
"Color effect strip type"},
2696 seq->
type = new_type;
2713 ot->
name =
"Change Effect Type";
2714 ot->
idname =
"SEQUENCER_OT_change_effect_type";
2728 "Sequencer effect type");
2745 int minext_frameme, numdigits;
2753 if (use_placeholders) {
2764 if (is_relative_path) {
2777 if (use_placeholders) {
2804 if (sound ==
NULL) {
2858 ot->
name =
"Change Data/Files";
2859 ot->
idname =
"SEQUENCER_OT_change_path";
2881 "Use placeholders for missing frames of the strip");
2899 BLI_strncpy(filepath,
"untitled",
sizeof(filepath));
2962 for (seq = text_seq.
first; seq; seq = seq_next) {
2964 char timecode_str_start[32];
2965 char timecode_str_end[32];
2968 sizeof(timecode_str_start),
2974 sizeof(timecode_str_end),
2981 file,
"%d\n%s --> %s\n%s\n\n", iter++, timecode_str_start, timecode_str_end,
data->text);
2983 seq_next = seq->
next;
3003 ot->
name =
"Export Subtitles";
3004 ot->
idname =
"SEQUENCER_OT_export_subtitles";
3005 ot->
description =
"Export .srt file containing text strips";
3038 bool selected =
false;
3079 ot->
name =
"Set Range to Strips";
3080 ot->
idname =
"SEQUENCER_OT_set_range_to_strips";
3081 ot->
description =
"Set the frame range to the selected strips start and end";
3111 {
STRIP_TRANSFORM_ALL,
"ALL", 0,
"All",
"Reset strip transform location, scale and rotation"},
3156 ot->
name =
"Clear Strip Transform";
3157 ot->
idname =
"SEQUENCER_OT_strip_transform_clear";
3158 ot->
description =
"Reset image transformation to default value";
3172 "Strip transform property to be reset");
3182 {
SEQ_SCALE_TO_FIT,
"FIT", 0,
"Scale to Fit",
"Scale image so fits in preview"},
3183 {
SEQ_SCALE_TO_FILL,
"FILL", 0,
"Scale to Fill",
"Scale image so it fills preview completely"},
3184 {
SEQ_STRETCH_TO_FILL,
"STRETCH", 0,
"Stretch to Fill",
"Stretch image so it fills preview"},
3197 const int timeline_frame =
CFRA;
3200 if (strip_elem ==
NULL) {
3221 ot->
name =
"Strip Transform Set Fit";
3222 ot->
idname =
"SEQUENCER_OT_strip_transform_fit";
3236 "Scale fit fit_method");
struct ScrArea * CTX_wm_area(const bContext *C)
struct Scene * CTX_data_scene(const bContext *C)
struct wmWindowManager * CTX_wm_manager(const bContext *C)
struct SpaceSeq * CTX_wm_space_seq(const bContext *C)
struct ARegion * CTX_wm_region(const bContext *C)
struct Main * CTX_data_main(const bContext *C)
@ LIB_ID_CREATE_NO_USER_REFCOUNT
const char * BKE_main_blendfile_path(const struct Main *bmain) ATTR_NONNULL()
void BKE_report(ReportList *reports, ReportType type, const char *message)
void BKE_sound_load(struct Main *main, struct bSound *sound)
void * BKE_sound_add_scene_sound_defaults(struct Scene *scene, struct Sequence *sequence)
void BKE_sound_remove_scene_sound(struct Scene *scene, void *handle)
int BLI_exists(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
bool BLI_file_touch(const char *file) ATTR_NONNULL()
bool BLI_file_is_writable(const char *file) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
FILE * BLI_fopen(const char *filename, const char *mode) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
#define LISTBASE_FOREACH_BACKWARD(type, var, list)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void void void BLI_movelisttolist(struct ListBase *dst, struct ListBase *src) ATTR_NONNULL(1
void void BLI_listbase_sort(struct ListBase *listbase, int(*cmp)(const void *, const void *)) ATTR_NONNULL(1
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int round_fl_to_int(float a)
MINLINE int min_ii(int a, int b)
MINLINE int max_ii(int a, int b)
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void copy_v2_v2_int(int r[2], const int a[2])
bool BLI_make_existing_file(const char *name)
bool BLI_path_extension_ensure(char *path, size_t maxlen, const char *ext) ATTR_NONNULL()
void BLI_join_dirfile(char *__restrict dst, const size_t maxlen, const char *__restrict dir, const char *__restrict file) ATTR_NONNULL()
bool BLI_path_extension_replace(char *path, size_t maxlen, const char *ext) ATTR_NONNULL()
void BLI_path_rel(char *file, const char *relfile) ATTR_NONNULL()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
char * BLI_strncpy_utf8(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
size_t BLI_timecode_string_from_time(char *str, const size_t maxncpy, const int brevity_level, const float time_seconds, const double scene_fps, const short timecode_style) ATTR_NONNULL()
void DEG_id_tag_update(struct ID *id, int flag)
void DEG_relations_tag_update(struct Main *bmain)
@ ID_RECALC_SEQUENCER_STRIPS
#define SEQ_HAS_PATH(_seq)
@ SEQ_VIEW_SEQUENCE_PREVIEW
void ED_outliner_select_sync_from_sequence_tag(struct bContext *C)
bool ED_operator_sequencer_active(struct bContext *C)
void ED_area_status_text(ScrArea *area, const char *str)
NSNotificationCenter * center
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
Read Guarded memory(de)allocation.
#define MEM_reallocN(vmemh, len)
#define RNA_BEGIN(sptr, itemptr, propname)
#define SEQ_ALL_BEGIN(ed, _seq)
#define SEQ_DUPE_UNIQUE_NAME
void uiLayoutSetPropSep(uiLayout *layout, bool is_sep)
void uiItemS(uiLayout *layout)
uiLayout * uiLayoutRow(uiLayout *layout, bool align)
void uiItemR(uiLayout *layout, struct PointerRNA *ptr, const char *propname, int flag, const char *name, int icon)
void uiLayoutSetPropDecorate(uiLayout *layout, bool is_sep)
struct View2D * UI_view2d_fromcontext(const struct bContext *C)
void UI_view2d_region_to_view(const struct View2D *v2d, float x, float y, float *r_view_x, float *r_view_y) ATTR_NONNULL()
#define WM_FILESEL_DIRECTORY
#define WM_FILESEL_RELPATH
#define WM_FILESEL_FILEPATH
#define ND_RENDER_OPTIONS
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
ListBase seqbase_clipboard
void SEQ_clipboard_pointers_restore(ListBase *seqbase, Main *bmain)
int seqbase_clipboard_frame
void SEQ_clipboard_pointers_store(Main *bmain, ListBase *seqbase)
void SEQ_clipboard_free(void)
struct SeqEffectHandle SEQ_effect_handle_get(Sequence *seq)
int SEQ_effect_get_num_inputs(int seq_type)
int SEQ_iterator_recursive_apply(Sequence *seq, int(*apply_fn)(Sequence *, void *), void *arg)
static void seq_array(Editing *ed, const bool use_current_sequences, Sequence ***r_seqarray, int *r_seqarray_len)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
static char * trim(char *str)
IMETHOD Vector diff(const Vector &a, const Vector &b, double dt=1)
static void area(int d1, int d2, int e1, int e2, float weights[2])
void SEQ_prefetch_stop(Scene *scene)
StripElem * SEQ_render_give_stripelem(Sequence *seq, int timeline_frame)
void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
void RNA_int_set(PointerRNA *ptr, const char *name, int value)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
void RNA_property_update(bContext *C, PointerRNA *ptr, PropertyRNA *prop)
void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
int RNA_int_get(PointerRNA *ptr, const char *name)
bool RNA_struct_property_is_set(PointerRNA *ptr, const char *identifier)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
int RNA_enum_get(PointerRNA *ptr, const char *name)
int RNA_property_collection_length(PointerRNA *ptr, PropertyRNA *prop)
void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *value)
char * RNA_string_get_alloc(PointerRNA *ptr, const char *name, char *fixedbuf, int fixedlen)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, int default_value, int hardmin, int hardmax, const char *ui_name, const char *ui_description, int softmin, int softmax)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description)
void SEQ_sequence_base_dupli_recursive(const Scene *scene_src, Scene *scene_dst, ListBase *nseqbase, const ListBase *seqbase, int dupe_flag, const int flag)
MetaStack * SEQ_meta_stack_alloc(Editing *ed, Sequence *seq_meta)
ListBase * SEQ_active_seqbase_get(const Editing *ed)
Sequence * SEQ_sequence_dupli_recursive(const Scene *scene_src, Scene *scene_dst, ListBase *new_seq_list, Sequence *seq, int dupe_flag)
MetaStack * SEQ_meta_stack_active_get(const Editing *ed)
void SEQ_offset_animdata(Scene *scene, Sequence *seq, int ofs)
void SEQ_dupe_animdata(Scene *scene, const char *name_src, const char *name_dst)
void SEQ_seqbase_active_set(Editing *ed, ListBase *seqbase)
void SEQ_sequence_free(Scene *scene, Sequence *seq, const bool do_clean_animdata)
void SEQ_meta_stack_free(Editing *ed, MetaStack *ms)
Sequence * SEQ_sequence_alloc(ListBase *lb, int timeline_frame, int machine, int type)
Editing * SEQ_editing_get(Scene *scene, bool alloc)
void sequencer_image_seq_reserve_frames(wmOperator *op, StripElem *se, int len, int minframe, int numdigits)
int sequencer_image_seq_get_minmax_frame(wmOperator *op, int sfra, int *r_minframe, int *r_numdigits)
bool ED_space_sequencer_check_show_strip(SpaceSeq *sseq)
int seq_effect_find_selected(Scene *scene, Sequence *activeseq, int type, Sequence **r_selseq1, Sequence **r_selseq2, Sequence **r_selseq3, const char **r_error_str)
static int sequencer_snap_exec(bContext *C, wmOperator *op)
static int sequencer_reassign_inputs_exec(bContext *C, wmOperator *op)
bool sequencer_strip_has_path_poll(bContext *C)
static int sequencer_mute_exec(bContext *C, wmOperator *op)
static void transseq_restore(TransSeq *ts, Sequence *seq)
static Sequence * find_next_prev_sequence(Scene *scene, Sequence *test, int lr, int sel)
static int slip_add_sequences_recursive(ListBase *seqbasep, Sequence **seq_array, bool *trim, int offset, bool do_trim)
void SEQUENCER_OT_copy(wmOperatorType *ot)
void SEQUENCER_OT_delete(wmOperatorType *ot)
bool ED_space_sequencer_check_show_imbuf(SpaceSeq *sseq)
void SEQUENCER_OT_rendersize(wmOperatorType *ot)
static int sequencer_separate_images_exec(bContext *C, wmOperator *op)
void SEQUENCER_OT_unmute(struct wmOperatorType *ot)
void SEQUENCER_OT_snap(struct wmOperatorType *ot)
static int sequencer_meta_make_exec(bContext *C, wmOperator *op)
EnumPropertyItem sequencer_prop_effect_types[]
void SEQUENCER_OT_reassign_inputs(struct wmOperatorType *ot)
static int sequencer_delete_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static void sequencer_slip_apply_limits(SlipData *data, int *offset)
void SEQUENCER_OT_gap_insert(struct wmOperatorType *ot)
void ED_sequencer_deselect_all(Scene *scene)
static void transseq_backup(TransSeq *ts, Sequence *seq)
static int sequencer_reload_exec(bContext *C, wmOperator *op)
bool ED_space_sequencer_maskedit_poll(bContext *C)
static int sequencer_slip_exec(bContext *C, wmOperator *op)
static int sequencer_rendersize_exec(bContext *C, wmOperator *UNUSED(op))
void SEQUENCER_OT_mute(struct wmOperatorType *ot)
bool ED_space_sequencer_maskedit_mask_poll(bContext *C)
void SEQUENCER_OT_export_subtitles(struct wmOperatorType *ot)
static int sequencer_slip_modal(bContext *C, wmOperator *op, const wmEvent *event)
static int sequencer_export_subtitles_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static int sequencer_paste_exec(bContext *C, wmOperator *op)
static int sequencer_change_path_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static int sequencer_strip_transform_clear_exec(bContext *C, wmOperator *op)
void SEQUENCER_OT_swap_data(wmOperatorType *ot)
static int sequencer_offset_clear_exec(bContext *C, wmOperator *UNUSED(op))
static int sequencer_refresh_all_exec(bContext *C, wmOperator *UNUSED(op))
static const EnumPropertyItem scale_fit_methods[]
static bool sequencer_refresh_all_poll(bContext *C)
void SEQUENCER_OT_slip(struct wmOperatorType *ot)
void SEQUENCER_OT_strip_transform_clear(struct wmOperatorType *ot)
static int sequencer_swap_data_exec(bContext *C, wmOperator *op)
static int sequencer_slip_invoke(bContext *C, wmOperator *op, const wmEvent *event)
bool sequencer_view_preview_poll(bContext *C)
@ STRIP_TRANSFORM_POSITION
@ STRIP_TRANSFORM_ROTATION
static void seq_copy_del_sound(Scene *scene, Sequence *seq)
static int sequencer_add_duplicate_exec(bContext *C, wmOperator *UNUSED(op))
void SEQUENCER_OT_images_separate(wmOperatorType *ot)
static int sequencer_unmute_exec(bContext *C, wmOperator *op)
static int sequencer_meta_separate_exec(bContext *C, wmOperator *UNUSED(op))
EnumPropertyItem prop_side_types[]
static int apply_unique_name_fn(Sequence *seq, void *arg_pt)
static bool sequencer_strip_is_text_poll(bContext *C)
void SEQUENCER_OT_change_effect_type(struct wmOperatorType *ot)
void SEQUENCER_OT_offset_clear(wmOperatorType *ot)
static int sequencer_gap_insert_exec(bContext *C, wmOperator *op)
static int sequencer_strip_jump_exec(bContext *C, wmOperator *op)
void SEQUENCER_OT_gap_remove(struct wmOperatorType *ot)
static int sequencer_snap_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static bool strip_jump_internal(Scene *scene, const short side, const bool do_skip_mute, const bool do_center)
void SEQUENCER_OT_meta_make(wmOperatorType *ot)
static int sequencer_delete_exec(bContext *C, wmOperator *UNUSED(op))
void SEQUENCER_OT_split(struct wmOperatorType *ot)
static int sequencer_change_effect_type_exec(bContext *C, wmOperator *op)
static int sequencer_export_subtitles_exec(bContext *C, wmOperator *op)
void SEQUENCER_OT_unlock(struct wmOperatorType *ot)
void SEQUENCER_OT_duplicate(wmOperatorType *ot)
static bool sequencer_effect_poll(bContext *C)
void SEQUENCER_OT_set_range_to_strips(struct wmOperatorType *ot)
static int sequencer_unlock_exec(bContext *C, wmOperator *UNUSED(op))
void SEQUENCER_OT_lock(struct wmOperatorType *ot)
static int mouse_frame_side(View2D *v2d, short mouse_x, int frame)
bool sequencer_edit_poll(bContext *C)
static bool sequencer_strip_jump_poll(bContext *C)
static bool seq_is_parent(Sequence *par, Sequence *seq)
static int slip_count_sequences_recursive(ListBase *seqbasep, bool first_level)
bool sequencer_view_strips_poll(bContext *C)
static void sequencer_slip_update_header(Scene *scene, ScrArea *area, SlipData *data, int offset)
void SEQUENCER_OT_swap(wmOperatorType *ot)
static int sequencer_split_exec(bContext *C, wmOperator *op)
static int sequencer_change_path_exec(bContext *C, wmOperator *op)
static int sequencer_gap_remove_exec(bContext *C, wmOperator *op)
static int sequencer_lock_exec(bContext *C, wmOperator *UNUSED(op))
void SEQUENCER_OT_paste(wmOperatorType *ot)
static int sequencer_set_range_to_strips_exec(bContext *C, wmOperator *op)
void SEQUENCER_OT_change_effect_input(struct wmOperatorType *ot)
void SEQUENCER_OT_meta_toggle(wmOperatorType *ot)
static const EnumPropertyItem prop_split_types[]
void SEQUENCER_OT_refresh_all(struct wmOperatorType *ot)
void SEQUENCER_OT_change_path(struct wmOperatorType *ot)
static int sequencer_change_effect_input_exec(bContext *C, wmOperator *op)
static const EnumPropertyItem prop_side_lr_types[]
static int sequencer_copy_exec(bContext *C, wmOperator *op)
bool ED_space_sequencer_check_show_maskedit(SpaceSeq *sseq, Scene *scene)
static int sequencer_meta_toggle_exec(bContext *C, wmOperator *UNUSED(op))
static int sequencer_swap_inputs_exec(bContext *C, wmOperator *op)
static bool sequencer_slip_recursively(Scene *scene, SlipData *data, int offset)
static int sequencer_swap_exec(bContext *C, wmOperator *op)
static int sequencer_strip_transform_fit_exec(bContext *C, wmOperator *op)
void SEQUENCER_OT_strip_jump(wmOperatorType *ot)
static const EnumPropertyItem prop_change_effect_input_types[]
void SEQUENCER_OT_meta_separate(wmOperatorType *ot)
static void swap_sequence(Scene *scene, Sequence *seqa, Sequence *seqb)
static void sequencer_split_ui(bContext *C, wmOperator *op)
void SEQUENCER_OT_strip_transform_fit(struct wmOperatorType *ot)
static const EnumPropertyItem transform_reset_properties[]
void SEQUENCER_OT_reload(struct wmOperatorType *ot)
static int sequencer_split_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void SEQUENCER_OT_swap_inputs(struct wmOperatorType *ot)
void SEQ_add_reload_new_file(Main *bmain, Scene *scene, Sequence *seq, const bool lock_range)
bool SEQ_edit_remove_gaps(Scene *scene, ListBase *seqbase, const int initial_frame, const bool remove_all_gaps)
void SEQ_edit_flag_for_removal(Scene *scene, ListBase *seqbase, Sequence *seq)
int SEQ_edit_sequence_swap(Sequence *seq_a, Sequence *seq_b, const char **error_str)
Sequence * SEQ_edit_strip_split(Main *bmain, Scene *scene, ListBase *seqbase, Sequence *seq, const int timeline_frame, const eSeqSplitMethod method)
void SEQ_edit_remove_flagged_sequences(Scene *scene, ListBase *seqbase)
bool SEQ_relations_render_loop_check(Sequence *seq_main, Sequence *seq)
void SEQ_relations_invalidate_cache_raw(Scene *scene, Sequence *seq)
void SEQ_relations_update_changed_seq_and_deps(Scene *scene, Sequence *changed_seq, int len_change, int ibuf_change)
void SEQ_relations_invalidate_dependent(Scene *scene, Sequence *seq)
void SEQ_relations_free_imbuf(Scene *scene, ListBase *seqbase, bool for_render)
void SEQ_relations_invalidate_cache_preprocessed(Scene *scene, Sequence *seq)
Sequence * SEQ_select_active_get(Scene *scene)
int SEQ_select_active_get_pair(Scene *scene, Sequence **r_seq_act, Sequence **r_seq_other)
void SEQ_select_active_set(Scene *scene, Sequence *seq)
int SEQ_time_cmp_time_startdisp(const void *a, const void *b)
int SEQ_time_find_next_prev_edit(Scene *scene, int timeline_frame, const short side, const bool do_skip_mute, const bool do_center, const bool do_unselected)
void SEQ_time_update_sequence(Scene *scene, Sequence *seq)
void(* init)(struct Sequence *seq)
void(* free)(struct Sequence *seq, const bool do_id_user)
StripTransform * transform
int(* invoke)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
int(* modal)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
bool(* poll)(struct bContext *) ATTR_WARN_UNUSED_RESULT
void(* ui)(struct bContext *, struct wmOperator *)
int(* exec)(struct bContext *, struct wmOperator *) ATTR_WARN_UNUSED_RESULT
struct ReportList * reports
struct wmOperatorType * type
Mask * SEQ_active_mask_get(Scene *scene)
void SEQ_sequence_base_unique_name_recursive(ListBase *seqbasep, Sequence *seq)
void SEQ_sort(Scene *scene)
void SEQ_set_scale_to_fit(const Sequence *seq, const int image_width, const int image_height, const int preview_width, const int preview_height, const eSeqImageFitMethod fit_method)
wmEventHandler_Op * WM_event_add_modal_handler(bContext *C, wmOperator *op)
void WM_event_add_fileselect(bContext *C, wmOperator *op)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type, short action, short flag, short display, short sort)
int WM_operator_props_popup_confirm(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))