45#include "RNA_prototypes.hh"
69# include <AUD_Sequence.h>
86#define SEQPROP_STARTFRAME (1 << 0)
88#define SEQPROP_LENGTH (1 << 1)
91#define SEQPROP_NOPATHS (1 << 2)
93#define SEQPROP_NOCHAN (1 << 3)
94#define SEQPROP_FIT_METHOD (1 << 4)
95#define SEQPROP_VIEW_TRANSFORM (1 << 5)
96#define SEQPROP_PLAYBACK_RATE (1 << 6)
97#define SEQPROP_MOVE (1 << 7)
105 op->
customdata = MEM_new<SequencerAddData>(__func__);
127 "Automatically begin translating strips with the mouse after adding them to the timeline");
138 "Start frame of the strip",
151 "Length of the strip in frames, or the length of each strip if multiple are added",
162 "Channel to place this strip into",
170 "Deselect previously selected strips after add operation completes");
174 ot->srna,
"overlap",
false,
"Allow Overlap",
"Don't correct overlap on new strips");
179 "overlap_shuffle_override",
181 "Override Overlap Shuffle Behavior",
182 "Use the overlap_mode tool settings to determine how to shuffle overlapping strips");
186 "skip_locked_or_muted_channels",
188 "Skip Locked or Muted Channels",
189 "Add strips to muted or locked channels when adding movie strips");
198 "Mode for fitting the image to the canvas");
203 "set_view_transform",
205 "Set View Transform",
206 "Set appropriate view transform based on media color space");
211 "adjust_playback_rate",
213 "Adjust Playback Rate",
214 "Play at normal speed regardless of scene FPS");
220 const char *identifier)
247 return channel_index;
252 Strip *tgt =
nullptr;
255 int timeline_frame = scene->
r.
cfra;
256 int proximity = INT_MAX;
258 if (!
ed || !
ed->current_strips()) {
264 if (
ELEM(type, -1, strip->type) && (strip_end <= timeline_frame) &&
265 (timeline_frame - strip_end < proximity))
268 proximity = timeline_frame - strip_end;
272 int best_channel = 1;
285 const char **r_error_msg)
292 if (channel > max_channel) {
293 *r_error_msg =
RPT_(
"No available channel for the current frame.");
302 used_channels.
add(strip->channel);
306 int free_channels = 0;
311 if (free_channels == need_channels) {
316 *r_error_msg =
RPT_(
"No available channel for the current frame.");
341 float frame_start, channel;
350 if (sad ==
nullptr) {
369 int timeline_frame = scene->
r.
cfra;
442 "Filename '%s' too long (max length %zu, was %zu)",
513 if (region ==
nullptr) {
537 ®ion->
v2d, mouse_region.x, mouse_region.y, &mouse_view.x, &mouse_view.y);
539 load_data->start_frame = std::trunc(mouse_view.x);
540 load_data->channel = std::trunc(mouse_view.y);
552 if (strip ==
nullptr) {
571 strip_col.
add(strip);
592 if (strip ==
nullptr) {
608 if (
ed &&
ed->current_strips() &&
ed->current_strips()->first) {
632 if (sce_seq ==
nullptr) {
637 const char *error_msg;
680 ot->name =
"Add Scene Strip";
681 ot->idname =
"SEQUENCER_OT_scene_strip_add";
682 ot->description =
"Add a strip re-using this scene as the source";
706 {
SCE_COPY_NEW,
"NEW", 0,
"New",
"Add new Strip with a new empty Scene with default settings"},
711 "Add a new Strip, with an empty scene, and copy settings from the current scene"},
716 "Add a Strip and link in the collections from the current scene (shallow copy)"},
721 "Add a Strip and make a full copy of the current scene"},
722 {0,
nullptr, 0,
nullptr,
nullptr},
731 const char *error_msg;
746 if (scene_new ==
nullptr) {
774 ot->name =
"Add Strip with a new Scene";
775 ot->idname =
"SEQUENCER_OT_scene_strip_add_new";
776 ot->description =
"Add a strip using a new scene as the source";
806 Scene *scene_asset =
reinterpret_cast<Scene *
>(
809 if (
asset.is_local_id()) {
848 const char *error_msg;
891 ot->name =
"Add Scene Asset";
892 ot->description =
"Add a strip using a duplicate of this scene asset as the source";
893 ot->idname =
"SEQUENCER_OT_add_scene_strip_from_scene_asset";
920 if (clip ==
nullptr) {
925 const char *error_msg;
968 ot->name =
"Add MovieClip Strip";
969 ot->idname =
"SEQUENCER_OT_movieclip_strip_add";
970 ot->description =
"Add a movieclip strip to the sequencer";
1001 if (
mask ==
nullptr) {
1006 const char *error_msg;
1047 ot->name =
"Add Mask Strip";
1048 ot->idname =
"SEQUENCER_OT_mask_strip_add";
1049 ot->description =
"Add a mask strip to the sequencer";
1081 switch (sl->spacetype) {
1105 for (
Strip *strip : movie_strips) {
1124 if (
ELEM(
nullptr, strip_movie, strip_sound)) {
1133 strip_sound->
len = std::max(strip_movie->
len, strip_sound->
len);
1153 bool has_seq_overlap =
false;
1163 Strip *strip_movie =
nullptr;
1164 Strip *strip_sound =
nullptr;
1168 if (strip_movie ==
nullptr) {
1175 added_strips.
append(strip_movie);
1180 added_strips.
append(strip_sound);
1188 if (overlap_shuffle_override) {
1201 r_movie_strips.
add(strip_movie);
1206 if (overlap_shuffle_override) {
1207 if (has_seq_overlap) {
1225 Strip *strip_movie =
nullptr;
1226 Strip *strip_sound =
nullptr;
1231 if (strip_movie ==
nullptr) {
1238 added_strips.
append(strip_movie);
1241 added_strips.
append(strip_sound);
1245 int movie_channel = strip_movie->
channel + 1;
1257 if (overlap_shuffle_override) {
1258 bool has_seq_overlap =
false;
1263 if (has_seq_overlap) {
1279 r_movie_strips.
add(strip_movie);
1296 const char *error_msg;
1314 if (tot_files > 1) {
1324 "View transform set to %s (converted from %s)",
1332 "Scene frame rate set to %.4g (converted from %.4g)",
1373 const char *error_msg;
1397 if (
STREQ(prop_id,
"use_placeholders")) {
1418 bool is_redo_panel = sad ==
nullptr;
1420 if (!is_redo_panel) {
1458 ot->name =
"Add Movie Strip";
1459 ot->idname =
"SEQUENCER_OT_movie_strip_add";
1460 ot->description =
"Add a movie strip to the sequencer";
1488 "Set Scene Frame Rate",
1489 "Set frame rate of the current scene to the frame rate of the movie");
1514 if (strip ==
nullptr) {
1533 if (strip ==
nullptr) {
1549 const char *error_msg;
1561 if (tot_files > 1) {
1594 const char *error_msg;
1613 ot->name =
"Add Sound Strip";
1614 ot->idname =
"SEQUENCER_OT_sound_strip_add";
1615 ot->description =
"Add a sound strip to the sequencer";
1634 RNA_def_boolean(
ot->srna,
"cache",
false,
"Cache",
"Cache the sound in memory");
1635 RNA_def_boolean(
ot->srna,
"mono",
false,
"Mono",
"Merge all the sound's channels into one");
1656 if (!filename.empty()) {
1658 minframe =
min_ii(minframe, frame);
1659 maxframe =
max_ii(maxframe, frame);
1667 maxframe = minframe + 1;
1670 *r_minframe = minframe;
1671 *r_numdigits = numdigits;
1673 return maxframe - minframe + 1;
1679 char *filename =
nullptr;
1692 for (
int i = 0;
i <
len;
i++, se++) {
1693 STRNCPY(filename_stripped, filename);
1694 BLI_path_frame(filename_stripped,
sizeof(filename_stripped), minframe +
i, numdigits);
1704 const char *filename_stripped,
1706 const int numdigits,
1720 int framenr, numdigits;
1729 if (use_placeholders) {
1735 size_t strip_frame = 0;
1739 filename,
sizeof(filename), filename_stripped, frame->framenr, numdigits, ext);
1757 const char *error_msg;
1780 load_data.image.count = use_placeholders ? range->max_framenr - range->offset + 1 :
1814 "View transform set to %s (converted from %s)",
1845 const char *error_msg;
1868 ot->name =
"Add Image Strip";
1869 ot->idname =
"SEQUENCER_OT_image_strip_add";
1870 ot->description =
"Add an image or image sequence to the sequencer";
1896 "use_sequence_detection",
1899 "Automatically detect animated sequences in selected images (based on file names)");
1905 "Reserve placeholder frames for missing frames of the image sequence");
1950 if (input1 !=
nullptr) {
2016 if (
STR_ELEM(prop_id,
"frame_start",
"length")) {
2035 return TIP_(
"Add a crossfade transition strip for two selected strips with video content");
2037 return TIP_(
"Add an add blend mode effect strip for two selected strips with video content");
2040 "Add a subtract blend mode effect strip for two selected strips with video content");
2043 "Add an alpha over blend mode effect strip for two selected strips with video content");
2046 "Add an alpha under blend mode effect strip for two selected strips with video content");
2049 "Add a gamma crossfade transition strip for two selected strips with video content");
2052 "Add a multiply blend mode effect strip for two selected strips with video content");
2054 return TIP_(
"Add a wipe transition strip for two selected strips with video content");
2056 return TIP_(
"Add a glow effect strip for a single selected strip with video content");
2058 return TIP_(
"Add a color strip to the sequencer");
2060 return TIP_(
"Add a video speed effect strip for a single selected strip with video content");
2062 return TIP_(
"Add a multicam selector effect strip to the sequencer");
2064 return TIP_(
"Add an adjustment layer effect strip to the sequencer");
2067 "Add a gaussian blur effect strip for a single selected strip with video content");
2069 return TIP_(
"Add a text strip to the sequencer");
2071 return TIP_(
"Add a color mix effect strip to the sequencer");
2085 ot->name =
"Add Effect Strip";
2086 ot->idname =
"SEQUENCER_OT_effect_strip_add";
2087 ot->description =
"Add an effect to the sequencer, most are applied on top of existing strips";
2104 "Sequencer effect type");
2115 "Initialize the strip with this color",
Main runtime representation of an asset.
bScreen * CTX_wm_screen(const bContext *C)
ScrArea * CTX_wm_area(const bContext *C)
wmWindow * CTX_wm_window(const bContext *C)
Main * CTX_data_main(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
Scene * CTX_data_sequencer_scene(const bContext *C)
@ LIB_ID_DUPLICATE_IS_ROOT_ID
const char * BKE_main_blendfile_path(const Main *bmain) ATTR_NONNULL()
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
@ RPT_ERROR_INVALID_INPUT
void BKE_report(ReportList *reports, eReportType type, const char *message)
@ SCE_COPY_LINK_COLLECTION
Scene * BKE_scene_duplicate(Main *bmain, Scene *sce, eSceneCopyMethod type, eDupli_ID_Flags duplicate_flags, uint duplicate_options)
void * BLI_findlink(const ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE bool BLI_listbase_is_empty(const ListBase *lb)
void void BLI_freelistN(ListBase *listbase) ATTR_NONNULL(1)
int BLI_listbase_count(const ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int min_ii(int a, int b)
MINLINE int max_ii(int a, int b)
bool BLI_path_abs(char path[FILE_MAX], const char *basepath) ATTR_NONNULL(1
bool void BLI_path_frame_strip(char *path, char *r_ext, size_t ext_maxncpy) ATTR_NONNULL(1
void void void const char * BLI_path_basename(const char *path) ATTR_NONNULL(1) ATTR_WARN_UNUSED_RESULT
#define BLI_path_join(...)
void void void BLI_path_split_file_part(const char *filepath, char *file, size_t file_maxncpy) ATTR_NONNULL(1
bool BLI_path_frame_get(const char *path, int *r_frame, int *r_digits_len) ATTR_NONNULL(1
bool BLI_path_extension_ensure(char *path, size_t path_maxncpy, const char *ext) ATTR_NONNULL(1
void void BLI_path_split_dir_part(const char *filepath, char *dir, size_t dir_maxncpy) ATTR_NONNULL(1
bool void BLI_path_rel(char path[FILE_MAX], const char *basepath) ATTR_NONNULL(1)
bool BLI_path_frame(char *path, size_t path_maxncpy, int frame, int digits) ATTR_NONNULL(1)
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
void BLI_rcti_init(struct rcti *rect, int xmin, int xmax, int ymin, int ymax)
bool BLI_rcti_clamp_pt_v(const struct rcti *rect, int xy[2])
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
#define SNPRINTF(dst, format,...)
char * STRNCPY(char(&dst)[N], const char *src)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
#define STRNCPY_UTF8(dst, src)
#define BLT_I18NCONTEXT_ID_SEQUENCE
#define BLT_I18NCONTEXT_ID_MOVIECLIP
void DEG_id_tag_update(ID *id, unsigned int flags)
void DEG_relations_tag_update(Main *bmain)
@ ID_RECALC_SEQUENCER_STRIPS
#define ID_BLEND_PATH(_bmain, _id)
@ STRIP_TYPE_GAUSSIAN_BLUR
#define STRIP_HAS_PATH(_strip)
@ SEQ_PROXY_SKIP_EXISTING
eSpaceSeq_Proxy_RenderSize
@ SEQ_VIEW_SEQUENCE_PREVIEW
@ USER_SEQ_PROXY_SETUP_AUTOMATIC
@ USER_SEQ_ED_CONNECT_STRIPS_BY_DEFAULT
ListBase ED_image_filesel_detect_sequences(blender::StringRefNull blendfile_path, blender::StringRefNull root_path, wmOperator *op, bool detect_udim)
Scene * ED_scene_sequencer_add(Main *bmain, bContext *C, eSceneCopyMethod method)
void ED_area_tag_redraw(ScrArea *area)
bool ED_operator_sequencer_active_editable(bContext *C)
Read Guarded memory(de)allocation.
#define RNA_BEGIN(sptr, itemptr, propname)
#define RNA_PROP_BEGIN(sptr, itemptr, prop)
const EnumPropertyItem * RNA_scene_without_sequencer_scene_itemf(bContext *C, PointerRNA *ptr, PropertyRNA *prop, bool *r_free)
const EnumPropertyItem * RNA_movieclip_itemf(bContext *C, PointerRNA *ptr, PropertyRNA *prop, bool *r_free)
const EnumPropertyItem * RNA_mask_itemf(bContext *C, PointerRNA *ptr, PropertyRNA *prop, bool *r_free)
@ UI_BUT_LABEL_ALIGN_NONE
eAutoPropButsReturn uiDefAutoButsRNA(uiLayout *layout, PointerRNA *ptr, bool(*check_prop)(PointerRNA *ptr, PropertyRNA *prop, void *user_data), void *user_data, PropertyRNA *prop_activate_init, eButLabelAlign label_align, bool compact)
void uiTemplateImageFormatViews(uiLayout *layout, PointerRNA *imfptr, PointerRNA *ptr)
void UI_view2d_region_to_view(const View2D *v2d, float x, float y, float *r_view_x, float *r_view_y) ATTR_NONNULL()
bool contains(const Key &key) const
constexpr bool is_empty() const
constexpr const char * data() const
void append(const T &value)
float4 load_data(StoredFloat4 data)
void MEM_freeN(void *vmemh)
ccl_device_inline float2 mask(const MaskType mask, const float2 a)
static void error(const char *str)
static const IMB_Proxy_Size proxy_sizes[]
void operator_asset_reference_props_register(StructRNA &srna)
const asset_system::AssetRepresentation * operator_asset_reference_props_get_asset_from_all_library(const bContext &C, PointerRNA &ptr, ReportList *reports)
ID * asset_local_id_ensure_imported(Main &bmain, const asset_system::AssetRepresentation &asset, const std::optional< eAssetImportMethod > import_method=std::nullopt)
void SEQUENCER_OT_mask_strip_add(wmOperatorType *ot)
static int find_unlocked_unmuted_channel(const Editing *ed, int channel_index)
static int sequencer_generic_invoke_xy_guess_channel(bContext *C, int type)
static void sequencer_disable_one_time_properties(bContext *C, wmOperator *op)
static void sequencer_add_free(bContext *, wmOperator *op)
static void seq_load_apply_generic_options(bContext *C, wmOperator *op, Strip *strip)
static void sequencer_generic_invoke_path__internal(bContext *C, wmOperator *op, const char *identifier)
static bool can_move_strips(const wmOperator *op)
static wmOperatorStatus sequencer_add_image_strip_exec(bContext *C, wmOperator *op)
static bool sequencer_add_draw_check_fn(PointerRNA *ptr, PropertyRNA *prop, void *)
static wmOperatorStatus sequencer_add_scene_asset_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void sequencer_image_strip_reserve_frames(wmOperator *op, StripElem *se, int len, int minframe, int numdigits)
static wmOperatorStatus sequencer_add_movie_strip_exec(bContext *C, wmOperator *op)
void SEQUENCER_OT_movieclip_strip_add(wmOperatorType *ot)
static bool seq_load_apply_generic_options_only_test_overlap(bContext *C, wmOperator *op, Strip *strip)
static wmOperatorStatus sequencer_add_mask_strip_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static wmOperatorStatus sequencer_add_mask_strip_exec(bContext *C, wmOperator *op)
static std::string sequencer_add_scene_asset_get_description(bContext *C, wmOperatorType *, PointerRNA *ptr)
blender::VectorSet< Strip * > all_strips_from_context(bContext *C)
void SEQUENCER_OT_add_scene_strip_from_scene_asset(wmOperatorType *ot)
void SEQUENCER_OT_effect_strip_add(wmOperatorType *ot)
static void sequencer_add_movie_sync_sound_strip(Main *bmain, Scene *scene, Strip *strip_movie, Strip *strip_sound, seq::LoadData *load_data)
const EnumPropertyItem sequencer_prop_effect_types[]
static void sequencer_generic_invoke_xy__internal(bContext *C, wmOperator *op, int flag, int type, const wmEvent *event)
static void sequencer_add_sound_multiple_strips(bContext *C, wmOperator *op, seq::LoadData *load_data)
static IMB_Proxy_Size seq_get_proxy_size_flags(bContext *C)
static wmOperatorStatus sequencer_add_scene_strip_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static void sequencer_add_image_strip_load_files(wmOperator *op, Scene *scene, Strip *strip, seq::LoadData *load_data, const ImageFrameRange *range)
static wmOperatorStatus sequencer_add_movieclip_strip_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static Scene * sequencer_add_scene_asset(const bContext &C, const asset_system::AssetRepresentation &asset, ReportList &)
static void move_strips(bContext *C, wmOperator *op)
StringRef effect_inputs_validate(const VectorSet< Strip * > &inputs, int num_inputs)
VectorSet< Strip * > strip_effect_get_new_inputs(const Scene *scene, int num_inputs, bool ignore_active)
static wmOperatorStatus sequencer_add_scene_strip_new_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static std::string sequencer_add_effect_strip_get_description(bContext *, wmOperatorType *, PointerRNA *ptr)
void SEQUENCER_OT_movie_strip_add(wmOperatorType *ot)
void sequencer_select_do_updates(const bContext *C, Scene *scene)
static bool sequencer_add_movie_single_strip(bContext *C, wmOperator *op, seq::LoadData *load_data, blender::VectorSet< Strip * > &r_movie_strips)
static wmOperatorStatus sequencer_add_movie_strip_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static EnumPropertyItem strip_new_scene_items[]
void SEQUENCER_OT_scene_strip_add(wmOperatorType *ot)
static void sequencer_generic_props__internal(wmOperatorType *ot, int flag)
static bool op_invoked_by_drop_event(const wmOperator *op)
static bool have_free_channels(bContext *C, wmOperator *op, int need_channels, const char **r_error_msg)
static bool sequencer_add_sound_single_strip(bContext *C, wmOperator *op, seq::LoadData *load_data)
bool deselect_all_strips(const Scene *scene)
static wmOperatorStatus sequencer_add_effect_strip_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void SEQUENCER_OT_sound_strip_add(wmOperatorType *ot)
static void frame_filename_set(char *dst, size_t dst_len, const char *filename_stripped, const int frame, const int numdigits, const char *ext)
static wmOperatorStatus sequencer_add_effect_strip_exec(bContext *C, wmOperator *op)
static wmOperatorStatus sequencer_add_scene_strip_new_exec(bContext *C, wmOperator *op)
static void sequencer_add_draw(bContext *, wmOperator *op)
static void sequencer_add_init(bContext *, wmOperator *op)
static wmOperatorStatus sequencer_add_scene_strip_exec(bContext *C, wmOperator *op)
static wmOperatorStatus sequencer_add_sound_strip_exec(bContext *C, wmOperator *op)
static void seq_build_proxy(bContext *C, blender::Span< Strip * > movie_strips)
void SEQUENCER_OT_image_strip_add(wmOperatorType *ot)
static bool load_data_init_from_operator(seq::LoadData *load_data, bContext *C, wmOperator *op)
static void sequencer_file_drop_channel_frame_set(bContext *C, wmOperator *op, const wmEvent *event)
static wmOperatorStatus sequencer_add_image_strip_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static wmOperatorStatus sequencer_add_movieclip_strip_exec(bContext *C, wmOperator *op)
static wmOperatorStatus sequencer_add_sound_strip_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static void sequencer_add_movie_multiple_strips(bContext *C, wmOperator *op, seq::LoadData *load_data, blender::VectorSet< Strip * > &r_movie_strips)
static bool sequencer_add_effect_strip_poll_property(const bContext *, wmOperator *op, const PropertyRNA *prop)
int sequencer_image_strip_get_minmax_frame(wmOperator *op, int sfra, int *r_minframe, int *r_numdigits)
void SEQUENCER_OT_scene_strip_add_new(wmOperatorType *ot)
T clamp(const T &a, const T &min, const T &max)
int time_right_handle_frame_get(const Scene *scene, const Strip *strip)
SeqTimelineChannel * channel_get_by_index(const ListBase *channels, const int channel_index)
ListBase * channels_displayed_get(const Editing *ed)
eSeqImageFitMethod tool_settings_fit_method_get(Scene *scene)
bool channel_is_locked(const SeqTimelineChannel *channel)
IMB_Proxy_Size rendersize_to_proxysize(eSpaceSeq_Proxy_RenderSize render_size)
void strip_channel_set(Strip *strip, int channel)
bool transform_test_overlap(const Scene *scene, Strip *strip1, Strip *strip2)
Editing * editing_get(const Scene *scene)
Strip * add_effect_strip(Scene *scene, ListBase *seqbase, LoadData *load_data)
void add_image_load_file(Scene *scene, Strip *strip, size_t strip_frame, const char *filename)
void add_image_set_directory(Strip *strip, const char *dirpath)
int time_left_handle_frame_get(const Scene *, const Strip *strip)
Strip * add_sound_strip(Main *, Scene *, ListBase *, LoadData *)
bool proxy_rebuild_context(Main *bmain, Depsgraph *depsgraph, Scene *scene, Strip *strip, blender::Set< std::string > *processed_paths, ListBase *queue, bool build_only_on_bad_performance)
void add_sound_av_sync(Main *, Scene *, Strip *, LoadData *)
void connect(Strip *strip1, Strip *strip2)
bool transform_single_image_check(const Strip *strip)
Editing * editing_ensure(Scene *scene)
void proxy_set(Strip *strip, bool value)
Strip * select_active_get(const Scene *scene)
constexpr int MAX_CHANNELS
ProxyJob * ED_seq_proxy_job_get(const bContext *C, wmJob *wm_job)
Strip * add_scene_strip(Scene *scene, ListBase *seqbase, LoadData *load_data)
void add_image_init_alpha_mode(Main *bmain, Scene *scene, Strip *strip)
bool time_strip_intersects_frame(const Scene *scene, const Strip *strip, const int timeline_frame)
Strip * add_image_strip(Main *bmain, Scene *scene, ListBase *seqbase, LoadData *load_data)
Strip * add_movieclip_strip(Scene *scene, ListBase *seqbase, LoadData *load_data)
void tool_settings_fit_method_set(Scene *scene, eSeqImageFitMethod fit_method)
void select_active_set(Scene *scene, Strip *strip)
@ SEQ_LOAD_SET_VIEW_TRANSFORM
@ SEQ_LOAD_MOVIE_SYNC_FPS
Strip * add_mask_strip(Scene *scene, ListBase *seqbase, LoadData *load_data)
void time_left_handle_frame_set(const Scene *scene, Strip *strip, int timeline_frame)
bool channel_is_muted(const SeqTimelineChannel *channel)
void transform_handle_overlap(Scene *scene, ListBase *seqbasep, blender::Span< Strip * > transformed_strips, bool use_sync_markers)
void time_right_handle_frame_set(const Scene *scene, Strip *strip, int timeline_frame)
Strip * add_movie_strip(Main *bmain, Scene *scene, ListBase *seqbase, LoadData *load_data)
bool transform_seqbase_shuffle(ListBase *seqbasep, Strip *test, Scene *evil_scene)
wmJob * ED_seq_proxy_wm_job_get(const bContext *C)
int effect_get_num_inputs(int strip_type)
VecBase< int32_t, 2 > int2
VecBase< float, 2 > float2
static blender::bke::bNodeSocketTemplate inputs[]
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
bool RNA_collection_is_empty(PointerRNA *ptr, const char *name)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
void RNA_int_set(PointerRNA *ptr, const char *name, int value)
void RNA_float_get_array(PointerRNA *ptr, const char *name, float *values)
bool RNA_property_boolean_get(PointerRNA *ptr, PropertyRNA *prop)
int RNA_property_int_get(PointerRNA *ptr, PropertyRNA *prop)
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)
void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, bool value)
std::string RNA_string_get(PointerRNA *ptr, const char *name)
std::string RNA_property_string_get(PointerRNA *ptr, PropertyRNA *prop)
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)
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
int RNA_enum_get(PointerRNA *ptr, const char *name)
const char * RNA_property_identifier(const PropertyRNA *prop)
int RNA_property_collection_length(PointerRNA *ptr, PropertyRNA *prop)
PropertyRNA * RNA_def_float_color(StructOrFunctionRNA *cont_, const char *identifier, const int len, const float *default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_translation_context(PropertyRNA *prop, const char *context)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_enum_funcs(PropertyRNA *prop, EnumPropertyItemFunc itemfunc)
void RNA_def_property_subtype(PropertyRNA *prop, PropertySubType subtype)
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)
const EnumPropertyItem rna_enum_dummy_NULL_items[]
const EnumPropertyItem rna_enum_strip_scale_method_items[]
#define SEQPROP_VIEW_TRANSFORM
#define SEQPROP_STARTFRAME
#define SEQPROP_PLAYBACK_RATE
#define SEQPROP_FIT_METHOD
#define DEFAULT_IMG_STRIP_LENGTH
ColorManagedViewSettings view_settings
ImageFormatData im_format
uiLayout & column(bool align)
void separator(float factor=1.0f, LayoutSeparatorType type=LayoutSeparatorType::Auto)
void prop(PointerRNA *ptr, PropertyRNA *prop, int index, int value, eUI_Item_Flag flag, std::optional< blender::StringRef > name_opt, int icon, std::optional< blender::StringRef > placeholder=std::nullopt)
struct ReportList * reports
struct wmEvent * eventstate
rcti ED_time_scrub_clamp_scroller_mask(const rcti &scroller_mask)
wmOperatorStatus WM_operator_name_call_ptr(bContext *C, wmOperatorType *ot, blender::wm::OpCallContext context, PointerRNA *properties, const wmEvent *event)
void WM_event_add_fileselect(bContext *C, wmOperator *op)
bool WM_jobs_is_running(const wmJob *wm_job)
void WM_jobs_start(wmWindowManager *wm, wmJob *wm_job)
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)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)
void WM_operator_properties_create_ptr(PointerRNA *ptr, wmOperatorType *ot)
wmOperatorStatus WM_enum_search_invoke(bContext *C, wmOperator *op, const wmEvent *)
void WM_operator_properties_free(PointerRNA *ptr)