54 #include "RNA_prototypes.h"
280 ot->
idname =
"SEQUENCER_OT_gap_remove";
282 "Remove gap at current frame to first strip at the right, independent of selection or "
283 "locked state of strips";
318 ot->
idname =
"SEQUENCER_OT_gap_insert";
320 "Insert gap at current frame to first strips at the right, independent of selection or "
321 "locked state of strips";
337 "Frames to insert after current strip",
394 if (!either_handle_selected) {
400 if (!either_handle_selected) {
406 if (!either_handle_selected) {
435 ot->
name =
"Snap Strips to the Current Frame";
437 ot->
description =
"Frame where selected strips will be snapped";
453 "Frame where selected strips will be snapped",
505 for (seq = seqbasep->
first; seq; seq = seq->
next) {
507 seq_array[
offset + num_items] = seq;
525 int trimmed_sequences = 0;
527 for (seq = seqbasep->
first; seq; seq = seq->
next) {
538 return trimmed_sequences;
561 data->num_seq = num_seq;
564 data->num_input.idx_max = 0;
567 data->num_input.unit_type[0] = 0;
571 for (
int i = 0; i < num_seq; i++) {
592 for (
int i =
data->num_seq - 1; i >= 0; i--) {
602 for (
int i =
data->num_seq - 1; i >= 0; i--) {
611 for (
int i = 0; i <
data->num_seq; i++) {
614 int seq_content_start =
data->ts[i].start + *
offset;
647 data->num_seq = num_seq;
651 for (
int i = 0; i < num_seq; i++) {
712 switch (event->
type) {
721 mouse_x =
event->mval[0] -
data->slow_offset;
723 mouse_x +=
data->slow_offset;
726 mouse_x =
event->mval[0];
731 offset = mouseloc[0] -
data->init_mouseloc[0];
762 for (
int i = 0; i <
data->num_seq; i++) {
766 for (
int i = 0; i <
data->num_seq; i++) {
791 data->slow_offset =
event->mval[0];
844 "Offset to the data of the strip",
903 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";
1057 if (adjust_length) {
1075 ot->
name =
"Reload Strips";
1076 ot->
idname =
"SEQUENCER_OT_reload";
1090 "Adjust length of strips to their data length");
1102 if (
G.is_rendering) {
1123 ot->
name =
"Refresh Sequencer";
1124 ot->
idname =
"SEQUENCER_OT_refresh_all";
1144 const char **r_error_str)
1149 *r_error_str =
NULL;
1156 if (seq->flag &
SELECT) {
1158 *r_error_str =
N_(
"Cannot apply effects to audio sequence strips");
1161 if (!
ELEM(seq, activeseq, seq2)) {
1165 else if (seq1 ==
NULL) {
1168 else if (seq3 ==
NULL) {
1172 *r_error_str =
N_(
"Cannot apply effect to more than 3 sequence strips");
1181 if (seq3 !=
NULL && seq2 !=
NULL) {
1189 *r_selseq1 = *r_selseq2 = *r_selseq3 =
NULL;
1193 *r_error_str =
N_(
"At least one selected sequence strip is needed");
1204 if (seq1 ==
NULL || seq2 ==
NULL) {
1205 *r_error_str =
N_(
"2 selected sequence strips are needed");
1215 *r_error_str =
N_(
"TODO: in what cases does this happen?");
1238 const char *error_msg;
1246 scene, last_seq, last_seq->
type, &seq1, &seq2, &seq3, &error_msg) ||
1259 last_seq->
seq1 = seq1;
1260 last_seq->
seq2 = seq2;
1261 last_seq->
seq3 = seq3;
1263 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) {
1406 const char *error_msg =
NULL;
1411 if (error_msg !=
NULL) {
1418 if (ignore_selection) {
1419 if (use_cursor_position) {
1422 seq->machine == split_channel) {
1426 if (!seq_selected) {
1429 seq->machine == split_channel) {
1506 uiItemR(layout, op->
ptr,
"use_cursor_position", 0,
NULL, ICON_NONE);
1515 ot->
name =
"Split Strips";
1535 "Frame where selected strips will be split",
1544 "Channel in which strip will be cut",
1552 "The type of split operation to perform on strips");
1555 "use_cursor_position",
1557 "Use Cursor Position",
1558 "Split at position of the cursor instead of current frame");
1565 "The side that remains selected after splitting");
1574 "Make cut event if strip is not selected preserving selection state after cut");
1620 for (; seq; seq = seq->
next) {
1639 ot->
name =
"Duplicate Strips";
1640 ot->
idname =
"SEQUENCER_OT_duplicate";
1713 if (event->
mval[1] <= 30) {
1725 ot->
name =
"Erase Strips";
1726 ot->
idname =
"SEQUENCER_OT_delete";
1727 ot->
description =
"Erase selected strips from the sequencer";
1742 "After removing the Strip, delete the associated data also");
1789 ot->
name =
"Clear Strip Offset";
1790 ot->
idname =
"SEQUENCER_OT_offset_clear";
1791 ot->
description =
"Clear strip offsets from the start and end frames";
1816 int start_ofs, timeline_frame, frame_end;
1819 seq = seqbase->
first;
1836 while (timeline_frame < frame_end) {
1842 seq_new->
start = start_ofs;
1845 seq_new->
endofs = 1 - step;
1848 strip_new = seq_new->
strip;
1871 seq_next = seq->
next;
1889 ot->
name =
"Separate Images";
1890 ot->
idname =
"SEQUENCER_OT_images_separate";
1891 ot->
description =
"On image sequence strips, it returns a strip for each image";
1901 RNA_def_int(
ot->
srna,
"length", 1, 1, INT_MAX,
"Length",
"Length of each frame", 1, 1000);
1943 ot->
name =
"Toggle Meta Strip";
1944 ot->
idname =
"SEQUENCER_OT_meta_toggle";
1945 ot->
description =
"Toggle a meta-strip (to edit enclosed strips)";
1975 int channel_max = 1, meta_start_frame =
MAXFRAME, meta_end_frame =
MINFRAME;
1985 channel_max =
max_ii(seq->machine, channel_max);
1992 strcpy(seqm->
name + 2,
"MetaStrip");
1994 seqm->
start = meta_start_frame;
1995 seqm->
len = meta_end_frame - meta_start_frame;
2010 ot->
name =
"Make Meta Strip";
2011 ot->
idname =
"SEQUENCER_OT_meta_make";
2012 ot->
description =
"Group selected strips into a meta-strip";
2055 if (seq->flag &
SELECT) {
2072 ot->
name =
"UnMeta Strip";
2073 ot->
idname =
"SEQUENCER_OT_meta_separate";
2074 ot->
description =
"Put the contents of a meta-strip back in the sequencer";
2092 const bool do_skip_mute,
2093 const bool do_center)
2095 bool changed =
false;
2098 scene, timeline_frame, side, do_skip_mute, do_center,
false);
2100 if (next_frame != timeline_frame) {
2111 if (
G.is_rendering) {
2138 ot->
name =
"Jump to Strip";
2139 ot->
idname =
"SEQUENCER_OT_strip_jump";
2190 int dist, best_dist;
2200 ((sel == -1) || (sel == (seq->
flag &
SELECT)))) {
2224 if (dist < best_dist) {
2236 return ((par->
seq1 == seq) || (par->
seq2 == seq) || (par->
seq3 == seq));
2248 if (active_seq ==
NULL) {
2276 for (iseq = seqbase->
first; iseq; iseq = iseq->
next) {
2298 ot->
description =
"Swap active strip with strip to the right or left";
2328 switch (active_seq->
type) {
2364 ot->
name =
"Set Render Size";
2365 ot->
idname =
"SEQUENCER_OT_rendersize";
2366 ot->
description =
"Set render size and aspect from active sequence";
2411 if (fcurves ==
NULL) {
2539 int min_seq_startdisp = INT_MAX;
2567 iseq_first = nseqbase.
first;
2575 for (iseq = iseq_first; iseq; iseq = iseq->
next) {
2579 for (iseq = iseq_first; iseq; iseq = iseq->
next) {
2623 "Keep strip offset relative to the current frame when pasting");
2638 const char *error_msg;
2661 if (seq_act->
sound) {
2664 if (seq_other->
sound) {
2679 ot->
name =
"Sequencer Swap Data";
2680 ot->
idname =
"SEQUENCER_OT_swap_data";
2698 {0,
"A_B", 0,
"A -> B",
""},
2699 {1,
"B_C", 0,
"B -> C",
""},
2700 {2,
"A_C", 0,
"A -> C",
""},
2726 if (*seq_1 ==
NULL || *seq_2 ==
NULL) {
2742 ot->
name =
"Change Effect Input";
2743 ot->
idname =
"SEQUENCER_OT_change_effect_input";
2763 {
SEQ_TYPE_CROSS,
"CROSS", 0,
"Crossfade",
"Crossfade effect strip type"},
2764 {
SEQ_TYPE_ADD,
"ADD", 0,
"Add",
"Add effect strip type"},
2765 {
SEQ_TYPE_SUB,
"SUBTRACT", 0,
"Subtract",
"Subtract effect strip type"},
2768 {
SEQ_TYPE_GAMCROSS,
"GAMMA_CROSS", 0,
"Gamma Cross",
"Gamma Cross effect strip type"},
2769 {
SEQ_TYPE_MUL,
"MULTIPLY", 0,
"Multiply",
"Multiply effect strip type"},
2770 {
SEQ_TYPE_OVERDROP,
"OVER_DROP", 0,
"Alpha Over Drop",
"Alpha Over Drop effect strip type"},
2771 {
SEQ_TYPE_WIPE,
"WIPE", 0,
"Wipe",
"Wipe effect strip type"},
2772 {
SEQ_TYPE_GLOW,
"GLOW", 0,
"Glow",
"Glow effect strip type"},
2774 {
SEQ_TYPE_COLOR,
"COLOR", 0,
"Color",
"Color effect strip type"},
2775 {
SEQ_TYPE_SPEED,
"SPEED", 0,
"Speed",
"Color effect strip type"},
2807 seq->
type = new_type;
2821 ot->
name =
"Change Effect Type";
2822 ot->
idname =
"SEQUENCER_OT_change_effect_type";
2836 "Sequencer effect type");
2852 int minext_frameme, numdigits;
2860 if (use_placeholders) {
2871 if (is_relative_path) {
2884 if (use_placeholders) {
2906 if (sound ==
NULL) {
2962 ot->
name =
"Change Data/Files";
2963 ot->
idname =
"SEQUENCER_OT_change_path";
2985 "Use placeholders for missing frames of the strip");
3009 if (scene_seq ==
NULL) {
3017 seq->
scene = scene_seq;
3044 ot->
name =
"Change Scene";
3045 ot->
idname =
"SEQUENCER_OT_change_scene";
3080 if (seq_a_start == seq_b_start) {
3084 return (seq_a_start > seq_b_start);
3096 BLI_strncpy(filepath,
"untitled",
sizeof(filepath));
3175 for (seq = text_seq.
first; seq; seq = seq_next) {
3177 char timecode_str_start[32];
3178 char timecode_str_end[32];
3183 sizeof(timecode_str_start),
3190 sizeof(timecode_str_end),
3197 file,
"%d\n%s --> %s\n%s\n\n", iter++, timecode_str_start, timecode_str_end,
data->text);
3199 seq_next = seq->
next;
3219 ot->
name =
"Export Subtitles";
3220 ot->
idname =
"SEQUENCER_OT_export_subtitles";
3221 ot->
description =
"Export .srt file containing text strips";
3254 bool selected =
false;
3295 ot->
name =
"Set Range to Strips";
3296 ot->
idname =
"SEQUENCER_OT_set_range_to_strips";
3297 ot->
description =
"Set the frame range to the selected strips start and end";
3327 {
STRIP_TRANSFORM_ALL,
"ALL", 0,
"All",
"Reset strip transform location, scale and rotation"},
3372 ot->
name =
"Clear Strip Transform";
3373 ot->
idname =
"SEQUENCER_OT_strip_transform_clear";
3374 ot->
description =
"Reset image transformation to default value";
3388 "Strip transform property to be reset");
3398 {
SEQ_SCALE_TO_FIT,
"FIT", 0,
"Scale to Fit",
"Scale image so fits in preview"},
3399 {
SEQ_SCALE_TO_FILL,
"FILL", 0,
"Scale to Fill",
"Scale image so it fills preview completely"},
3400 {
SEQ_STRETCH_TO_FILL,
"STRETCH", 0,
"Stretch to Fill",
"Stretch image so it fills preview"},
3416 if (strip_elem ==
NULL) {
3437 ot->
name =
"Strip Transform Set Fit";
3438 ot->
idname =
"SEQUENCER_OT_strip_transform_fit";
3452 "Scale fit fit_method");
3462 if (seq->flag &
SELECT) {
3463 seq->color_tag = color_tag;
3484 return act_seq !=
NULL;
3490 ot->
name =
"Set Color Tag";
3491 ot->
idname =
"SEQUENCER_OT_strip_color_tag_set";
3492 ot->
description =
"Set a color tag for the selected strips";
3516 float cursor_pixel[2];
3530 float cursor_pixel[2];
3532 ®ion->
v2d, event->
mval[0], event->
mval[1], &cursor_pixel[0], &cursor_pixel[1]);
3542 ot->
name =
"Set 2D Cursor";
3544 ot->
idname =
"SEQUENCER_OT_cursor_set";
3562 "Cursor location in normalized preview coordinates",
struct ScrArea * CTX_wm_area(const bContext *C)
struct Scene * CTX_data_scene(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)
struct FCurve * BKE_fcurve_copy(const struct FCurve *fcu)
@ LIB_ID_CREATE_NO_USER_REFCOUNT
const char * BKE_main_blendfile_path(const struct Main *bmain) ATTR_NONNULL()
void BKE_report(ReportList *reports, eReportType 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_is_writable(const char *filepath) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
bool BLI_file_touch(const char *file) ATTR_NONNULL()
FILE * BLI_fopen(const char *filepath, const char *mode) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
#define GSET_FOREACH_END()
#define GSET_FOREACH_BEGIN(type, var, what)
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp)
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 BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void void void BLI_listbase_sort_r(ListBase *listbase, int(*cmp)(void *, const void *, const void *), void *thunk) 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()
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()
void BLI_join_dirfile(char *__restrict dst, size_t maxlen, const char *__restrict dir, const char *__restrict file) ATTR_NONNULL()
bool BLI_str_startswith(const char *__restrict str, const char *__restrict start) ATTR_NONNULL()
bool BLI_str_endswith(const char *__restrict str, const char *__restrict end) ATTR_NONNULL()
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
size_t BLI_timecode_string_from_time(char *str, size_t maxncpy, int brevity_level, float time_seconds, double fps, 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_IGNORE_CHANNEL_LOCK
@ SEQ_VIEW_SEQUENCE_PREVIEW
void ED_outliner_select_sync_from_sequence_tag(struct bContext *C)
bool ED_scene_delete(struct bContext *C, struct Main *bmain, struct Scene *scene) ATTR_NONNULL()
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)
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert a producing a negative Combine Generate a color from its and blue channels(Deprecated)") DefNode(ShaderNode
#define RNA_BEGIN(sptr, itemptr, propname)
const EnumPropertyItem * RNA_scene_without_active_itemf(struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA *prop, bool *r_free)
#define SEQ_ITERATOR_FOREACH(var, collection)
#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 ND_SPACE_SEQUENCER
#define ND_RENDER_OPTIONS
void SEQ_offset_animdata(Scene *scene, Sequence *seq, int ofs)
void SEQ_animation_backup_original(Scene *scene, ListBase *list)
GSet * SEQ_fcurves_by_strip_get(const Sequence *seq, ListBase *fcurve_base)
void SEQ_animation_duplicate(Scene *scene, Sequence *seq, ListBase *list)
void SEQ_animation_restore_original(Scene *scene, ListBase *list)
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
ListBase * SEQ_channels_displayed_get(Editing *ed)
ListBase seqbase_clipboard
void SEQ_clipboard_pointers_restore(ListBase *seqbase, Main *bmain)
void SEQ_clipboard_active_seq_name_store(Scene *scene)
bool SEQ_clipboard_pasted_seq_was_active(Sequence *pasted_seq)
int seqbase_clipboard_frame
ListBase fcurves_clipboard
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)
const vector< Marker > & markers
void SEQ_collection_free(SeqCollection *collection)
void SEQ_for_each_callback(ListBase *seqbase, SeqForEachFunc callback, void *user_data)
ccl_gpu_kernel_postfix ccl_global float int int int int float bool int offset
ccl_gpu_kernel_postfix ccl_global float int int int int sh
bAction * ED_id_action_ensure(Main *bmain, ID *id)
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])
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
static const pxr::TfToken preview("preview", pxr::TfToken::Immortal)
void SEQ_prefetch_stop(Scene *scene)
bool SEQ_render_is_muted(const ListBase *channels, const Sequence *seq)
StripElem * SEQ_render_give_stripelem(const Scene *scene, 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_float_get_array(PointerRNA *ptr, const char *name, float *values)
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)
char * RNA_string_get_alloc(PointerRNA *ptr, const char *name, char *fixedbuf, int fixedlen, int *r_len)
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)
void RNA_float_set_array(PointerRNA *ptr, const char *name, const float *values)
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)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, bool default_value, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_float_vector(StructOrFunctionRNA *cont_, const char *identifier, int len, const float *default_value, float hardmin, float hardmax, const char *ui_name, const char *ui_description, float softmin, float softmax)
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)
void RNA_def_enum_funcs(PropertyRNA *prop, EnumPropertyItemFunc itemfunc)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description)
const EnumPropertyItem DummyRNA_NULL_items[]
const EnumPropertyItem rna_enum_strip_color_items[]
void SEQ_sequence_base_dupli_recursive(const Scene *scene_src, Scene *scene_dst, ListBase *nseqbase, const ListBase *seqbase, int dupe_flag, const int flag)
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)
Editing * SEQ_editing_ensure(Scene *scene)
void SEQ_meta_stack_set(const Scene *scene, Sequence *seqm)
Sequence * SEQ_sequence_alloc(ListBase *lb, int timeline_frame, int machine, int type)
Editing * SEQ_editing_get(const Scene *scene)
Sequence * SEQ_meta_stack_pop(Editing *ed)
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 sequencer_view_preview_only_poll(const bContext *C)
bool ED_space_sequencer_check_show_strip(SpaceSeq *sseq)
static bool sequencer_strip_color_tag_set_poll(bContext *C)
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_change_scene_exec(bContext *C, wmOperator *op)
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)
void SEQUENCER_OT_strip_color_tag_set(struct wmOperatorType *ot)
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)
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)
bool sequencer_view_has_preview_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)
bool ED_space_sequencer_has_playback_animation(const struct SpaceSeq *sseq, const struct Scene *scene)
static int sequencer_change_path_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static void sequencer_delete_strip_data(bContext *C, Sequence *seq)
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)
static bool sequencer_strip_change_scene_poll(bContext *C)
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)
static void seq_copy_del_sound(Scene *scene, Sequence *seq)
struct Seq_get_text_cb_data Seq_get_text_cb_data
static int sequencer_add_duplicate_exec(bContext *C, wmOperator *UNUSED(op))
void SEQUENCER_OT_images_separate(wmOperatorType *ot)
static void sequencer_split_ui(bContext *UNUSED(C), wmOperator *op)
static int sequencer_unmute_exec(bContext *C, wmOperator *op)
static int sequencer_meta_separate_exec(bContext *C, wmOperator *UNUSED(op))
static bool sequencer_fcurves_targets_color_strip(const FCurve *fcurve)
static int seq_cmp_time_startdisp_channel(void *thunk, const void *a, const void *b)
EnumPropertyItem prop_side_types[]
static bool sequencer_strip_is_text_poll(bContext *C)
static int sequencer_set_2d_cursor_exec(bContext *C, wmOperator *op)
static void sequencer_paste_animation(bContext *C)
static bool seq_get_text_strip_cb(Sequence *seq, void *user_data)
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)
void SEQUENCER_OT_split(struct wmOperatorType *ot)
static int sequencer_change_effect_type_exec(bContext *C, wmOperator *op)
static int sequencer_set_2d_cursor_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int sequencer_export_subtitles_exec(bContext *C, wmOperator *op)
static void sequencer_slip_apply_limits(const Scene *scene, SlipData *data, int *offset)
static int sequencer_change_scene_invoke(bContext *C, wmOperator *op, const wmEvent *event)
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)
static void sequencer_copy_animation(Scene *scene, Sequence *seq)
bool sequencer_edit_poll(bContext *C)
static bool sequencer_strip_jump_poll(bContext *C)
static int sequencer_strip_color_tag_set_exec(bContext *C, wmOperator *op)
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)
bool sequencer_editing_initialized_and_active(bContext *C)
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)
void SEQUENCER_OT_change_scene(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 void sequencer_slip_recursively(Scene *scene, SlipData *data, int offset)
static int sequencer_swap_inputs_exec(bContext *C, wmOperator *op)
void SEQUENCER_OT_cursor_set(wmOperatorType *ot)
static int sequencer_swap_exec(bContext *C, wmOperator *op)
static int sequencer_delete_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)
void SEQUENCER_OT_strip_transform_fit(struct wmOperatorType *ot)
@ STRIP_TRANSFORM_POSITION
@ STRIP_TRANSFORM_ROTATION
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)
struct SeqCollection * selected_strips_from_context(struct bContext *C)
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(Scene *scene, 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, const char **r_error)
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_sequence_free_anim(Sequence *seq)
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)
void SEQ_time_right_handle_frame_set(const Scene *scene, Sequence *seq, int val)
int SEQ_time_left_handle_frame_get(const Scene *UNUSED(scene), const Sequence *seq)
void SEQ_time_left_handle_frame_set(const Scene *scene, Sequence *seq, int val)
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)
float SEQ_time_start_frame_get(const Sequence *seq)
int SEQ_time_right_handle_frame_get(const Scene *scene, const Sequence *seq)
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
Mask * SEQ_active_mask_get(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)
void SEQ_sequence_base_unique_name_recursive(struct Scene *scene, ListBase *seqbasep, Sequence *seq)
void SEQ_ensure_unique_name(Sequence *seq, Scene *scene)
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, const int filter, const short type, const eFileSel_Action action, const eFileSel_Flag flag, const short display, const short sort)
int WM_operator_props_popup_confirm(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
int WM_enum_search_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))