40#include "RNA_prototypes.hh"
60# include <AUD_Sequence.h>
78#define SEQPROP_STARTFRAME (1 << 0)
79#define SEQPROP_ENDFRAME (1 << 1)
81#define SEQPROP_NOPATHS (1 << 2)
82#define SEQPROP_NOCHAN (1 << 3)
83#define SEQPROP_FIT_METHOD (1 << 4)
84#define SEQPROP_VIEW_TRANSFORM (1 << 5)
85#define SEQPROP_PLAYBACK_RATE (1 << 6)
88 {
SEQ_SCALE_TO_FIT,
"FIT", 0,
"Scale to Fit",
"Scale image to fit within the canvas"},
89 {
SEQ_SCALE_TO_FILL,
"FILL", 0,
"Scale to Fill",
"Scale image to completely fill the canvas"},
92 {0,
nullptr, 0,
nullptr,
nullptr},
106 "Start frame of the sequence strip",
119 "End frame for the color strip",
130 "Channel to place this strip into",
135 ot->srna,
"replace_sel",
true,
"Replace Selection",
"Deselect previously selected strips");
139 ot->srna,
"overlap",
false,
"Allow Overlap",
"Don't correct overlap on new sequence strips");
144 "overlap_shuffle_override",
146 "Override Overlap Shuffle Behavior",
147 "Use the overlap_mode tool settings to determine how to shuffle overlapping strips");
151 "skip_locked_or_muted_channels",
153 "Skip Locked or Muted Channels",
154 "Add strips to muted or locked channels when adding movie strips");
168 "set_view_transform",
170 "Set View Transform",
171 "Set appropriate view transform based on media color space");
176 "adjust_playback_rate",
178 "Adjust Playback Rate",
179 "Play at normal speed regardless of scene FPS");
185 const char *identifier)
212 return channel_index;
217 Strip *tgt =
nullptr;
220 int timeline_frame = scene->
r.
cfra;
221 int proximity = INT_MAX;
223 if (!
ed || !
ed->seqbasep) {
229 if (
ELEM(type, -1, strip->type) && (strip_end <= timeline_frame) &&
230 (timeline_frame - strip_end < proximity))
233 proximity = timeline_frame - strip_end;
237 int best_channel = 1;
250 const char **r_error_msg)
257 if (channel > max_channel) {
258 *r_error_msg =
RPT_(
"No available channel for the current frame.");
267 used_channels.
add(strip->channel);
271 int free_channels = 0;
276 if (free_channels == need_channels) {
281 *r_error_msg =
RPT_(
"No available channel for the current frame.");
306 float frame_start, channel;
317 int timeline_frame = scene->
r.
cfra;
373 "Filename '%s' too long (max length %zu, was %zu)",
450 if (strip ==
nullptr) {
469 strip_col.
add(strip);
490 if (strip ==
nullptr) {
511 if (
STR_ELEM(prop_id,
"frame_start",
"frame_end")) {
530 if (sce_seq ==
nullptr) {
535 const char *error_msg;
547 load_data.
scene = sce_seq;
563 if (
ed &&
ed->seqbasep &&
ed->seqbasep->first) {
591 ot->name =
"Add Scene Strip";
592 ot->idname =
"SEQUENCER_OT_scene_strip_add";
593 ot->description =
"Add a strip to the sequencer using a Blender scene as a source";
611 {
SCE_COPY_NEW,
"NEW", 0,
"New",
"Add new Strip with a new empty Scene with default settings"},
616 "Add a new Strip, with an empty scene, and copy settings from the current scene"},
621 "Add a Strip and link in the collections from the current scene (shallow copy)"},
626 "Add a Strip and make a full copy of the current scene"},
627 {0,
nullptr, 0,
nullptr,
nullptr},
636 const char *error_msg;
651 if (scene_new ==
nullptr) {
654 load_data.
scene = scene_new;
687 bool has_scene_or_no_context =
false;
690 has_scene_or_no_context =
true;
696 has_scene_or_no_context =
true;
700 if (has_scene_or_no_context) {
716 ot->name =
"Add Strip with a new Scene";
717 ot->idname =
"SEQUENCER_OT_scene_strip_add_new";
718 ot->description =
"Create a new Strip and assign a new Scene as source";
742 if (clip ==
nullptr) {
747 const char *error_msg;
761 load_data.
clip = clip;
789 ot->name =
"Add MovieClip Strip";
790 ot->idname =
"SEQUENCER_OT_movieclip_strip_add";
791 ot->description =
"Add a movieclip strip to the sequencer";
816 if (
mask ==
nullptr) {
821 const char *error_msg;
861 ot->name =
"Add Mask Strip";
862 ot->idname =
"SEQUENCER_OT_mask_strip_add";
863 ot->description =
"Add a mask strip to the sequencer";
900 return !
STR_ELEM(prop_id,
"filepath",
"directory",
"filename");
912 switch (sl->spacetype) {
935 for (
Strip *strip : movie_strips) {
954 if (
ELEM(
nullptr, strip_movie, strip_sound)) {
980 bool has_seq_overlap =
false;
990 Strip *strip_movie =
nullptr;
991 Strip *strip_sound =
nullptr;
995 if (strip_movie ==
nullptr) {
1002 added_strips.
append(strip_movie);
1007 added_strips.
append(strip_sound);
1015 if (overlap_shuffle_override) {
1028 r_movie_strips.
add(strip_movie);
1033 if (overlap_shuffle_override) {
1034 if (has_seq_overlap) {
1052 Strip *strip_movie =
nullptr;
1053 Strip *strip_sound =
nullptr;
1058 if (strip_movie ==
nullptr) {
1065 added_strips.
append(strip_movie);
1068 added_strips.
append(strip_sound);
1072 int movie_channel = strip_movie->
channel + 1;
1084 if (overlap_shuffle_override) {
1085 bool has_seq_overlap =
false;
1090 if (has_seq_overlap) {
1106 r_movie_strips.
add(strip_movie);
1123 const char *error_msg;
1141 if (tot_files > 1) {
1151 "View transform set to %s (converted from %s)",
1159 "Scene frame rate set to %.4g (converted from %.4g)",
1199 const char *error_msg;
1247 ot->name =
"Add Movie Strip";
1248 ot->idname =
"SEQUENCER_OT_movie_strip_add";
1249 ot->description =
"Add a movie strip to the sequencer";
1276 "Set Scene Frame Rate",
1277 "Set frame rate of the current scene to the frame rate of the movie");
1296 if (strip ==
nullptr) {
1315 if (strip ==
nullptr) {
1331 const char *error_msg;
1343 if (tot_files > 1) {
1373 const char *error_msg;
1392 ot->name =
"Add Sound Strip";
1393 ot->idname =
"SEQUENCER_OT_sound_strip_add";
1394 ot->description =
"Add a sound strip to the sequencer";
1413 RNA_def_boolean(
ot->srna,
"cache",
false,
"Cache",
"Cache the sound in memory");
1414 RNA_def_boolean(
ot->srna,
"mono",
false,
"Mono",
"Merge all the sound's channels into one");
1432 minframe =
min_ii(minframe, frame);
1433 maxframe =
max_ii(maxframe, frame);
1443 maxframe = minframe + 1;
1446 *r_minframe = minframe;
1447 *r_numdigits = numdigits;
1449 return maxframe - minframe + 1;
1455 char *filename =
nullptr;
1468 for (
int i = 0;
i <
len;
i++, se++) {
1469 STRNCPY(filename_stripped, filename);
1470 BLI_path_frame(filename_stripped,
sizeof(filename_stripped), minframe +
i, numdigits);
1479 const int start_frame,
1485 if (use_placeholders) {
1496 const int numdigits)
1503 if (use_placeholders) {
1508 size_t strip_frame = 0;
1529 const char *error_msg;
1535 int minframe, numdigits;
1537 op, load_data.
start_frame, &minframe, &numdigits);
1555 "View transform set to %s (converted from %s)",
1595 const char *error_msg;
1619 ot->name =
"Add Image Strip";
1620 ot->idname =
"SEQUENCER_OT_image_strip_add";
1621 ot->description =
"Add an image or image sequence to the sequencer";
1648 "Use placeholders for missing frames of the strip");
1687 if (input1 !=
nullptr) {
1740 return TIP_(
"Add a crossfade transition strip for two selected strips with video content");
1742 return TIP_(
"Add an add blend mode effect strip for two selected strips with video content");
1745 "Add a subtract blend mode effect strip for two selected strips with video content");
1748 "Add an alpha over blend mode effect strip for two selected strips with video content");
1751 "Add an alpha under blend mode effect strip for two selected strips with video content");
1754 "Add a gamma crossfade transition strip for two selected strips with video content");
1757 "Add a multiply blend mode effect strip for two selected strips with video content");
1759 return TIP_(
"Add a wipe transition strip for two selected strips with video content");
1761 return TIP_(
"Add a glow effect strip for a single selected strip with video content");
1763 return TIP_(
"Add a transform effect strip for a single selected strip with video content");
1765 return TIP_(
"Add a color strip to the sequencer");
1767 return TIP_(
"Add a video speed effect strip for a single selected strip with video content");
1769 return TIP_(
"Add a multicam selector effect strip to the sequencer");
1771 return TIP_(
"Add an adjustment layer effect strip to the sequencer");
1774 "Add a gaussian blur effect strip for a single selected strip with video content");
1776 return TIP_(
"Add a text strip to the sequencer");
1778 return TIP_(
"Add a color mix effect strip to the sequencer");
1792 ot->name =
"Add Effect Strip";
1793 ot->idname =
"SEQUENCER_OT_effect_strip_add";
1794 ot->description =
"Add an effect to the sequencer, most are applied on top of existing strips";
1811 "Sequencer effect type");
1822 "Initialize the strip with this color",
bScreen * CTX_wm_screen(const bContext *C)
ScrArea * CTX_wm_area(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
Main * CTX_data_main(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
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
void BKE_report(ReportList *reports, eReportType type, const char *message)
@ SCE_COPY_LINK_COLLECTION
void * BLI_findlink(const ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
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(...)
bool BLI_path_frame_get(const char *path, int *r_frame, int *r_digits_len) 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)
#define SNPRINTF(dst, format,...)
char * STRNCPY(char(&dst)[N], const char *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
@ SEQ_PROXY_SKIP_EXISTING
@ STRIP_TYPE_GAUSSIAN_BLUR
#define STRIP_HAS_PATH(_strip)
@ SEQ_VIEW_SEQUENCE_PREVIEW
@ USER_SEQ_PROXY_SETUP_AUTOMATIC
@ USER_SEQ_ED_CONNECT_STRIPS_BY_DEFAULT
Scene * ED_scene_sequencer_add(Main *bmain, bContext *C, eSceneCopyMethod method, bool assign_strip)
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_movieclip_itemf(bContext *C, PointerRNA *ptr, PropertyRNA *prop, bool *r_free)
const EnumPropertyItem * RNA_scene_without_active_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)
void * MEM_callocN(size_t len, const char *str)
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[]
static void sequencer_add_image_strip_load_files(wmOperator *op, Scene *scene, Strip *strip, seq::LoadData *load_data, const int minframe, const int numdigits)
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 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)
void sequencer_image_seq_reserve_frames(wmOperator *op, StripElem *se, int len, int minframe, int numdigits)
static wmOperatorStatus sequencer_add_image_strip_exec(bContext *C, wmOperator *op)
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 const EnumPropertyItem scale_fit_methods[]
blender::VectorSet< Strip * > all_strips_from_context(bContext *C)
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_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 int sequencer_add_image_strip_calculate_length(wmOperator *op, const int start_frame, int *minframe, int *numdigits)
static wmOperatorStatus sequencer_add_movieclip_strip_invoke(bContext *C, wmOperator *op, const wmEvent *event)
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 *)
static void sequencer_generic_invoke_xy__internal(bContext *C, wmOperator *op, int flag, int type, const wmEvent *event=nullptr)
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 const EnumPropertyItem * strip_new_sequencer_enum_itemf(bContext *C, PointerRNA *, PropertyRNA *, bool *r_free)
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 have_free_channels(bContext *C, wmOperator *op, int need_channels, const char **r_error_msg)
static void sequencer_add_cancel(bContext *, wmOperator *op)
static bool sequencer_add_sound_single_strip(bContext *C, wmOperator *op, seq::LoadData *load_data)
bool deselect_all_strips(const Scene *scene)
void SEQUENCER_OT_sound_strip_add(wmOperatorType *ot)
static bool seq_effect_add_properties_poll(const bContext *, wmOperator *op, const PropertyRNA *prop)
static wmOperatorStatus sequencer_add_effect_strip_exec(bContext *C, wmOperator *op)
static bool sequencer_add_draw_check_fn(PointerRNA *, PropertyRNA *prop, void *)
static wmOperatorStatus sequencer_add_scene_strip_new_exec(bContext *C, wmOperator *op)
int sequencer_image_seq_get_minmax_frame(wmOperator *op, int sfra, int *r_minframe, int *r_numdigits)
static void sequencer_add_draw(bContext *, wmOperator *op)
static void sequencer_add_init(bContext *, wmOperator *op)
static wmOperatorStatus sequencer_add_effect_strip_invoke(bContext *C, wmOperator *op, const wmEvent *)
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)
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)
void add_image_init_alpha_mode(Strip *strip)
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 *)
int rendersize_to_proxysize(int render_size)
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)
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)
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)
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)
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)
void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, bool value)
std::string RNA_property_string_get(PointerRNA *ptr, PropertyRNA *prop)
int RNA_enum_from_value(const EnumPropertyItem *item, const int value)
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)
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)
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[]
#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
struct blender::seq::LoadData::@153152276245330147232163273366304251377253076051 effect
eSeqImageFitMethod fit_method
struct blender::seq::LoadData::@023153262234117060143000107015250011003344047212 image
bool adjust_playback_rate
Stereo3dFormat * stereo3d_format
struct ReportList * reports
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)
wmOperatorStatus WM_enum_search_invoke(bContext *C, wmOperator *op, const wmEvent *)