Cleanup: Remove unnecessary struct keywords in sequences headers
Also remove const for non-pointer arguments which is meaningless in the declaration, move a scene enum to the "enums.hh" header, and add missing forward declaration of structs.
This commit is contained in:
@@ -16,3 +16,10 @@ typedef enum eVGroupSelect {
|
||||
WT_VGROUP_BONE_DEFORM = 3,
|
||||
WT_VGROUP_BONE_DEFORM_OFF = 4,
|
||||
} eVGroupSelect;
|
||||
|
||||
typedef enum eSeqImageFitMethod {
|
||||
SEQ_SCALE_TO_FIT,
|
||||
SEQ_SCALE_TO_FILL,
|
||||
SEQ_STRETCH_TO_FILL,
|
||||
SEQ_USE_ORIGINAL_SIZE,
|
||||
} eSeqImageFitMethod;
|
||||
|
||||
@@ -1511,13 +1511,6 @@ typedef enum eSeqOverlapMode {
|
||||
SEQ_OVERLAP_SHUFFLE,
|
||||
} eSeqOverlapMode;
|
||||
|
||||
typedef enum eSeqImageFitMethod {
|
||||
SEQ_SCALE_TO_FIT,
|
||||
SEQ_SCALE_TO_FILL,
|
||||
SEQ_STRETCH_TO_FILL,
|
||||
SEQ_USE_ORIGINAL_SIZE,
|
||||
} eSeqImageFitMethod;
|
||||
|
||||
/** \} */
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
||||
@@ -7,23 +7,27 @@
|
||||
/** \file
|
||||
* \ingroup sequencer
|
||||
*/
|
||||
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "DNA_scene_enums.h"
|
||||
|
||||
struct ListBase;
|
||||
struct Main;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
|
||||
/** #SeqLoadData.flags */
|
||||
typedef enum eSeqLoadFlags {
|
||||
enum eSeqLoadFlags {
|
||||
SEQ_LOAD_SOUND_CACHE = (1 << 1),
|
||||
SEQ_LOAD_SOUND_MONO = (1 << 2),
|
||||
SEQ_LOAD_MOVIE_SYNC_FPS = (1 << 3),
|
||||
SEQ_LOAD_SET_VIEW_TRANSFORM = (1 << 4),
|
||||
} eSeqLoadFlags;
|
||||
};
|
||||
ENUM_OPERATORS(eSeqLoadFlags, SEQ_LOAD_SET_VIEW_TRANSFORM)
|
||||
|
||||
/* Api for adding new sequence strips. */
|
||||
typedef struct SeqLoadData {
|
||||
struct SeqLoadData {
|
||||
int start_frame;
|
||||
int channel;
|
||||
char name[64]; /* Strip name. */
|
||||
@@ -51,7 +55,7 @@ typedef struct SeqLoadData {
|
||||
bool allow_invalid_file; /* Used by RNA API to create placeholder strips. */
|
||||
double r_video_stream_start; /* For AV synchronization. Set by `SEQ_add_movie_strip`. */
|
||||
bool adjust_playback_rate;
|
||||
} SeqLoadData;
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialize common SeqLoadData members
|
||||
@@ -62,11 +66,8 @@ typedef struct SeqLoadData {
|
||||
* \param start_frame: timeline frame where strip will be created
|
||||
* \param channel: timeline channel where strip will be created
|
||||
*/
|
||||
void SEQ_add_load_data_init(struct SeqLoadData *load_data,
|
||||
const char *name,
|
||||
const char *path,
|
||||
int start_frame,
|
||||
int channel);
|
||||
void SEQ_add_load_data_init(
|
||||
SeqLoadData *load_data, const char *name, const char *path, int start_frame, int channel);
|
||||
/**
|
||||
* Add image strip.
|
||||
* \note Use #SEQ_add_image_set_directory() and #SEQ_add_image_load_file() to load image sequences
|
||||
@@ -77,10 +78,10 @@ void SEQ_add_load_data_init(struct SeqLoadData *load_data,
|
||||
* \param load_data: SeqLoadData with information necessary to create strip
|
||||
* \return created strip
|
||||
*/
|
||||
struct Sequence *SEQ_add_image_strip(struct Main *bmain,
|
||||
struct Scene *scene,
|
||||
struct ListBase *seqbase,
|
||||
struct SeqLoadData *load_data);
|
||||
Sequence *SEQ_add_image_strip(Main *bmain,
|
||||
Scene *scene,
|
||||
ListBase *seqbase,
|
||||
SeqLoadData *load_data);
|
||||
/**
|
||||
* Add sound strip.
|
||||
* \note Use SEQ_add_image_set_directory() and SEQ_add_image_load_file() to load image sequences
|
||||
@@ -91,10 +92,10 @@ struct Sequence *SEQ_add_image_strip(struct Main *bmain,
|
||||
* \param load_data: SeqLoadData with information necessary to create strip
|
||||
* \return created strip
|
||||
*/
|
||||
struct Sequence *SEQ_add_sound_strip(struct Main *bmain,
|
||||
struct Scene *scene,
|
||||
struct ListBase *seqbase,
|
||||
struct SeqLoadData *load_data);
|
||||
Sequence *SEQ_add_sound_strip(Main *bmain,
|
||||
Scene *scene,
|
||||
ListBase *seqbase,
|
||||
SeqLoadData *load_data);
|
||||
/**
|
||||
* Add meta strip.
|
||||
*
|
||||
@@ -103,9 +104,7 @@ struct Sequence *SEQ_add_sound_strip(struct Main *bmain,
|
||||
* \param load_data: SeqLoadData with information necessary to create strip
|
||||
* \return created strip
|
||||
*/
|
||||
struct Sequence *SEQ_add_meta_strip(struct Scene *scene,
|
||||
struct ListBase *seqbase,
|
||||
struct SeqLoadData *load_data);
|
||||
Sequence *SEQ_add_meta_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data);
|
||||
/**
|
||||
* Add movie strip.
|
||||
*
|
||||
@@ -115,10 +114,10 @@ struct Sequence *SEQ_add_meta_strip(struct Scene *scene,
|
||||
* \param load_data: SeqLoadData with information necessary to create strip
|
||||
* \return created strip
|
||||
*/
|
||||
struct Sequence *SEQ_add_movie_strip(struct Main *bmain,
|
||||
struct Scene *scene,
|
||||
struct ListBase *seqbase,
|
||||
struct SeqLoadData *load_data);
|
||||
Sequence *SEQ_add_movie_strip(Main *bmain,
|
||||
Scene *scene,
|
||||
ListBase *seqbase,
|
||||
SeqLoadData *load_data);
|
||||
/**
|
||||
* Add scene strip.
|
||||
*
|
||||
@@ -127,9 +126,7 @@ struct Sequence *SEQ_add_movie_strip(struct Main *bmain,
|
||||
* \param load_data: SeqLoadData with information necessary to create strip
|
||||
* \return created strip
|
||||
*/
|
||||
struct Sequence *SEQ_add_scene_strip(struct Scene *scene,
|
||||
struct ListBase *seqbase,
|
||||
struct SeqLoadData *load_data);
|
||||
Sequence *SEQ_add_scene_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data);
|
||||
/**
|
||||
* Add movieclip strip.
|
||||
*
|
||||
@@ -138,9 +135,7 @@ struct Sequence *SEQ_add_scene_strip(struct Scene *scene,
|
||||
* \param load_data: SeqLoadData with information necessary to create strip
|
||||
* \return created strip
|
||||
*/
|
||||
struct Sequence *SEQ_add_movieclip_strip(struct Scene *scene,
|
||||
struct ListBase *seqbase,
|
||||
struct SeqLoadData *load_data);
|
||||
Sequence *SEQ_add_movieclip_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data);
|
||||
/**
|
||||
* Add mask strip.
|
||||
*
|
||||
@@ -149,9 +144,7 @@ struct Sequence *SEQ_add_movieclip_strip(struct Scene *scene,
|
||||
* \param load_data: SeqLoadData with information necessary to create strip
|
||||
* \return created strip
|
||||
*/
|
||||
struct Sequence *SEQ_add_mask_strip(struct Scene *scene,
|
||||
struct ListBase *seqbase,
|
||||
struct SeqLoadData *load_data);
|
||||
Sequence *SEQ_add_mask_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data);
|
||||
/**
|
||||
* Add effect strip.
|
||||
*
|
||||
@@ -160,16 +153,14 @@ struct Sequence *SEQ_add_mask_strip(struct Scene *scene,
|
||||
* \param load_data: SeqLoadData with information necessary to create strip
|
||||
* \return created strip
|
||||
*/
|
||||
struct Sequence *SEQ_add_effect_strip(struct Scene *scene,
|
||||
struct ListBase *seqbase,
|
||||
struct SeqLoadData *load_data);
|
||||
Sequence *SEQ_add_effect_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data);
|
||||
/**
|
||||
* Set directory used by image strip.
|
||||
*
|
||||
* \param seq: image strip to be changed
|
||||
* \param path: directory path
|
||||
*/
|
||||
void SEQ_add_image_set_directory(struct Sequence *seq, const char *dirpath);
|
||||
void SEQ_add_image_set_directory(Sequence *seq, const char *dirpath);
|
||||
/**
|
||||
* Set directory used by image strip.
|
||||
*
|
||||
@@ -177,8 +168,8 @@ void SEQ_add_image_set_directory(struct Sequence *seq, const char *dirpath);
|
||||
* \param strip_frame: frame index of strip to be changed
|
||||
* \param filename: image filename (only filename, not complete path)
|
||||
*/
|
||||
void SEQ_add_image_load_file(struct Scene *scene,
|
||||
struct Sequence *seq,
|
||||
void SEQ_add_image_load_file(Scene *scene,
|
||||
Sequence *seq,
|
||||
size_t strip_frame,
|
||||
const char *filename);
|
||||
/**
|
||||
@@ -186,13 +177,7 @@ void SEQ_add_image_load_file(struct Scene *scene,
|
||||
*
|
||||
* \param seq: image strip to be changed
|
||||
*/
|
||||
void SEQ_add_image_init_alpha_mode(struct Sequence *seq);
|
||||
void SEQ_add_reload_new_file(struct Main *bmain,
|
||||
struct Scene *scene,
|
||||
struct Sequence *seq,
|
||||
bool lock_range);
|
||||
void SEQ_add_movie_reload_if_needed(struct Main *bmain,
|
||||
struct Scene *scene,
|
||||
struct Sequence *seq,
|
||||
bool *r_was_reloaded,
|
||||
bool *r_can_produce_frames);
|
||||
void SEQ_add_image_init_alpha_mode(Sequence *seq);
|
||||
void SEQ_add_reload_new_file(Main *bmain, Scene *scene, Sequence *seq, bool lock_range);
|
||||
void SEQ_add_movie_reload_if_needed(
|
||||
Main *bmain, Scene *scene, Sequence *seq, bool *r_was_reloaded, bool *r_can_produce_frames);
|
||||
|
||||
@@ -8,32 +8,34 @@
|
||||
* \ingroup sequencer
|
||||
*/
|
||||
|
||||
#include "DNA_listBase.h"
|
||||
|
||||
struct GSet;
|
||||
struct ListBase;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
struct SeqAnimationBackup;
|
||||
|
||||
bool SEQ_animation_curves_exist(struct Scene *scene);
|
||||
bool SEQ_animation_drivers_exist(struct Scene *scene);
|
||||
void SEQ_free_animdata(struct Scene *scene, struct Sequence *seq);
|
||||
void SEQ_offset_animdata(struct Scene *scene, struct Sequence *seq, int ofs);
|
||||
struct GSet *SEQ_fcurves_by_strip_get(const struct Sequence *seq, struct ListBase *fcurve_base);
|
||||
typedef struct SeqAnimationBackup {
|
||||
bool SEQ_animation_curves_exist(Scene *scene);
|
||||
bool SEQ_animation_drivers_exist(Scene *scene);
|
||||
void SEQ_free_animdata(Scene *scene, Sequence *seq);
|
||||
void SEQ_offset_animdata(Scene *scene, Sequence *seq, int ofs);
|
||||
GSet *SEQ_fcurves_by_strip_get(const Sequence *seq, ListBase *fcurve_base);
|
||||
struct SeqAnimationBackup {
|
||||
ListBase curves;
|
||||
ListBase drivers;
|
||||
} SeqAnimationBackup;
|
||||
};
|
||||
/**
|
||||
* Move all F-Curves and drivers from `scene` to `backup`.
|
||||
*/
|
||||
void SEQ_animation_backup_original(struct Scene *scene, struct SeqAnimationBackup *backup);
|
||||
void SEQ_animation_backup_original(Scene *scene, SeqAnimationBackup *backup);
|
||||
/**
|
||||
* Move all F-Curves and drivers from `backup` to `scene`.
|
||||
*/
|
||||
void SEQ_animation_restore_original(struct Scene *scene, struct SeqAnimationBackup *backup);
|
||||
void SEQ_animation_restore_original(Scene *scene, SeqAnimationBackup *backup);
|
||||
/**
|
||||
* Duplicate F-Curves and drivers used by `seq` from `backup` to `scene`.
|
||||
*/
|
||||
void SEQ_animation_duplicate_backup_to_scene(struct Scene *scene,
|
||||
struct Sequence *seq,
|
||||
struct SeqAnimationBackup *backup);
|
||||
void SEQ_animation_duplicate_backup_to_scene(Scene *scene,
|
||||
Sequence *seq,
|
||||
SeqAnimationBackup *backup);
|
||||
|
||||
@@ -13,18 +13,15 @@ struct ListBase;
|
||||
struct SeqTimelineChannel;
|
||||
struct Sequence;
|
||||
|
||||
struct ListBase *SEQ_channels_displayed_get(struct Editing *ed);
|
||||
void SEQ_channels_displayed_set(struct Editing *ed, struct ListBase *channels);
|
||||
void SEQ_channels_ensure(struct ListBase *channels);
|
||||
void SEQ_channels_duplicate(struct ListBase *channels_dst, struct ListBase *channels_src);
|
||||
void SEQ_channels_free(struct ListBase *channels);
|
||||
ListBase *SEQ_channels_displayed_get(Editing *ed);
|
||||
void SEQ_channels_displayed_set(Editing *ed, ListBase *channels);
|
||||
void SEQ_channels_ensure(ListBase *channels);
|
||||
void SEQ_channels_duplicate(ListBase *channels_dst, ListBase *channels_src);
|
||||
void SEQ_channels_free(ListBase *channels);
|
||||
|
||||
struct SeqTimelineChannel *SEQ_channel_get_by_index(const struct ListBase *channels,
|
||||
int channel_index);
|
||||
char *SEQ_channel_name_get(struct ListBase *channels, int channel_index);
|
||||
bool SEQ_channel_is_locked(const struct SeqTimelineChannel *channel);
|
||||
bool SEQ_channel_is_muted(const struct SeqTimelineChannel *channel);
|
||||
int SEQ_channel_index_get(const struct SeqTimelineChannel *channel);
|
||||
ListBase *SEQ_get_channels_by_seq(struct ListBase *seqbase,
|
||||
struct ListBase *channels,
|
||||
const struct Sequence *seq);
|
||||
SeqTimelineChannel *SEQ_channel_get_by_index(const ListBase *channels, int channel_index);
|
||||
char *SEQ_channel_name_get(ListBase *channels, int channel_index);
|
||||
bool SEQ_channel_is_locked(const SeqTimelineChannel *channel);
|
||||
bool SEQ_channel_is_muted(const SeqTimelineChannel *channel);
|
||||
int SEQ_channel_index_get(const SeqTimelineChannel *channel);
|
||||
ListBase *SEQ_get_channels_by_seq(ListBase *seqbase, ListBase *channels, const Sequence *seq);
|
||||
|
||||
@@ -13,14 +13,14 @@ struct Main;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
|
||||
extern struct ListBase seqbase_clipboard;
|
||||
extern struct ListBase fcurves_clipboard;
|
||||
extern struct ListBase drivers_clipboard;
|
||||
extern ListBase seqbase_clipboard;
|
||||
extern ListBase fcurves_clipboard;
|
||||
extern ListBase drivers_clipboard;
|
||||
extern int seqbase_clipboard_frame;
|
||||
void SEQ_clipboard_pointers_store(struct Main *bmain, struct ListBase *seqbase);
|
||||
void SEQ_clipboard_pointers_restore(struct ListBase *seqbase, struct Main *bmain);
|
||||
void SEQ_clipboard_free(void);
|
||||
void SEQ_clipboard_active_seq_name_store(struct Scene *scene);
|
||||
void SEQ_clipboard_pointers_store(Main *bmain, ListBase *seqbase);
|
||||
void SEQ_clipboard_pointers_restore(ListBase *seqbase, Main *bmain);
|
||||
void SEQ_clipboard_free();
|
||||
void SEQ_clipboard_active_seq_name_store(Scene *scene);
|
||||
/**
|
||||
* Check if strip was active when it was copied. User should restrict this check to pasted strips
|
||||
* before ensuring original name, because strip name comparison is used to check.
|
||||
@@ -28,4 +28,4 @@ void SEQ_clipboard_active_seq_name_store(struct Scene *scene);
|
||||
* \param pasted_seq: Strip that is pasted(duplicated) from clipboard
|
||||
* \return true if strip was active, false otherwise
|
||||
*/
|
||||
bool SEQ_clipboard_pasted_seq_was_active(struct Sequence *pasted_seq);
|
||||
bool SEQ_clipboard_pasted_seq_was_active(Sequence *pasted_seq);
|
||||
|
||||
@@ -13,9 +13,9 @@ struct Main;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
|
||||
bool SEQ_edit_sequence_swap(struct Scene *scene,
|
||||
struct Sequence *seq_a,
|
||||
struct Sequence *seq_b,
|
||||
bool SEQ_edit_sequence_swap(Scene *scene,
|
||||
Sequence *seq_a,
|
||||
Sequence *seq_b,
|
||||
const char **error_str);
|
||||
/**
|
||||
* Move sequence to seqbase.
|
||||
@@ -25,9 +25,9 @@ bool SEQ_edit_sequence_swap(struct Scene *scene,
|
||||
* \param seq: Sequence to move
|
||||
* \param dst_seqbase: Target seqbase
|
||||
*/
|
||||
bool SEQ_edit_move_strip_to_seqbase(struct Scene *scene,
|
||||
bool SEQ_edit_move_strip_to_seqbase(Scene *scene,
|
||||
ListBase *seqbase,
|
||||
struct Sequence *seq,
|
||||
Sequence *seq,
|
||||
ListBase *dst_seqbase);
|
||||
/**
|
||||
* Move sequence to meta sequence.
|
||||
@@ -37,22 +37,20 @@ bool SEQ_edit_move_strip_to_seqbase(struct Scene *scene,
|
||||
* \param dst_seqm: Target Meta sequence
|
||||
* \param error_str: Error message
|
||||
*/
|
||||
bool SEQ_edit_move_strip_to_meta(struct Scene *scene,
|
||||
struct Sequence *src_seq,
|
||||
struct Sequence *dst_seqm,
|
||||
bool SEQ_edit_move_strip_to_meta(Scene *scene,
|
||||
Sequence *src_seq,
|
||||
Sequence *dst_seqm,
|
||||
const char **error_str);
|
||||
bool SEQ_meta_separate(struct Scene *scene, struct Sequence *src_meta, const char **error_str);
|
||||
bool SEQ_meta_separate(Scene *scene, Sequence *src_meta, const char **error_str);
|
||||
/**
|
||||
* Flag seq and its users (effects) for removal.
|
||||
*/
|
||||
void SEQ_edit_flag_for_removal(struct Scene *scene,
|
||||
struct ListBase *seqbase,
|
||||
struct Sequence *seq);
|
||||
void SEQ_edit_flag_for_removal(Scene *scene, ListBase *seqbase, Sequence *seq);
|
||||
/**
|
||||
* Remove all flagged sequences, return true if sequence is removed.
|
||||
*/
|
||||
void SEQ_edit_remove_flagged_sequences(struct Scene *scene, struct ListBase *seqbase);
|
||||
void SEQ_edit_update_muting(struct Editing *ed);
|
||||
void SEQ_edit_remove_flagged_sequences(Scene *scene, ListBase *seqbase);
|
||||
void SEQ_edit_update_muting(Editing *ed);
|
||||
|
||||
typedef enum eSeqSplitMethod {
|
||||
SEQ_SPLIT_SOFT,
|
||||
@@ -70,13 +68,13 @@ typedef enum eSeqSplitMethod {
|
||||
* \param method: affects type of offset to be applied to resize Sequence
|
||||
* \return The newly created sequence strip. This is always Sequence on right side.
|
||||
*/
|
||||
struct Sequence *SEQ_edit_strip_split(struct Main *bmain,
|
||||
struct Scene *scene,
|
||||
struct ListBase *seqbase,
|
||||
struct Sequence *seq,
|
||||
int timeline_frame,
|
||||
eSeqSplitMethod method,
|
||||
const char **r_error);
|
||||
Sequence *SEQ_edit_strip_split(Main *bmain,
|
||||
Scene *scene,
|
||||
ListBase *seqbase,
|
||||
Sequence *seq,
|
||||
int timeline_frame,
|
||||
eSeqSplitMethod method,
|
||||
const char **r_error);
|
||||
/**
|
||||
* Find gap after initial_frame and move strips on right side to close the gap
|
||||
*
|
||||
@@ -86,8 +84,8 @@ struct Sequence *SEQ_edit_strip_split(struct Main *bmain,
|
||||
* \param remove_all_gaps: remove all gaps instead of one gap
|
||||
* \return true if gap is removed, otherwise false
|
||||
*/
|
||||
bool SEQ_edit_remove_gaps(struct Scene *scene,
|
||||
struct ListBase *seqbase,
|
||||
bool SEQ_edit_remove_gaps(Scene *scene,
|
||||
ListBase *seqbase,
|
||||
int initial_frame,
|
||||
bool remove_all_gaps);
|
||||
void SEQ_edit_sequence_name_set(struct Scene *scene, struct Sequence *seq, const char *new_name);
|
||||
void SEQ_edit_sequence_name_set(Scene *scene, Sequence *seq, const char *new_name);
|
||||
|
||||
@@ -29,7 +29,7 @@ struct SeqEffectHandle {
|
||||
|
||||
/* constructors & destructor */
|
||||
/* init is _only_ called on first creation */
|
||||
void (*init)(struct Sequence *seq);
|
||||
void (*init)(Sequence *seq);
|
||||
|
||||
/* number of input strips needed
|
||||
* (called directly after construction) */
|
||||
@@ -37,57 +37,51 @@ struct SeqEffectHandle {
|
||||
|
||||
/* load is called first time after readblenfile in
|
||||
* get_sequence_effect automatically */
|
||||
void (*load)(struct Sequence *seqconst);
|
||||
void (*load)(Sequence *seqconst);
|
||||
|
||||
/* duplicate */
|
||||
void (*copy)(struct Sequence *dst, struct Sequence *src, int flag);
|
||||
void (*copy)(Sequence *dst, Sequence *src, int flag);
|
||||
|
||||
/* destruct */
|
||||
void (*free)(struct Sequence *seq, bool do_id_user);
|
||||
void (*free)(Sequence *seq, bool do_id_user);
|
||||
|
||||
/* returns: -1: no input needed,
|
||||
* 0: no early out,
|
||||
* 1: out = ibuf1,
|
||||
* 2: out = ibuf2 */
|
||||
int (*early_out)(struct Sequence *seq, float fac);
|
||||
int (*early_out)(Sequence *seq, float fac);
|
||||
|
||||
/* sets the default `fac` value */
|
||||
void (*get_default_fac)(const struct Scene *scene,
|
||||
struct Sequence *seq,
|
||||
float timeline_frame,
|
||||
float *fac);
|
||||
void (*get_default_fac)(const Scene *scene, Sequence *seq, float timeline_frame, float *fac);
|
||||
|
||||
/* execute the effect
|
||||
* sequence effects are only required to either support
|
||||
* float-rects or byte-rects
|
||||
* (mixed cases are handled one layer up...) */
|
||||
|
||||
struct ImBuf *(*execute)(const struct SeqRenderData *context,
|
||||
struct Sequence *seq,
|
||||
float timeline_frame,
|
||||
float fac,
|
||||
struct ImBuf *ibuf1,
|
||||
struct ImBuf *ibuf2,
|
||||
struct ImBuf *ibuf3);
|
||||
ImBuf *(*execute)(const SeqRenderData *context,
|
||||
Sequence *seq,
|
||||
float timeline_frame,
|
||||
float fac,
|
||||
ImBuf *ibuf1,
|
||||
ImBuf *ibuf2,
|
||||
ImBuf *ibuf3);
|
||||
|
||||
struct ImBuf *(*init_execution)(const struct SeqRenderData *context,
|
||||
struct ImBuf *ibuf1,
|
||||
struct ImBuf *ibuf2,
|
||||
struct ImBuf *ibuf3);
|
||||
ImBuf *(*init_execution)(const SeqRenderData *context, ImBuf *ibuf1, ImBuf *ibuf2, ImBuf *ibuf3);
|
||||
|
||||
void (*execute_slice)(const struct SeqRenderData *context,
|
||||
struct Sequence *seq,
|
||||
void (*execute_slice)(const SeqRenderData *context,
|
||||
Sequence *seq,
|
||||
float timeline_frame,
|
||||
float fac,
|
||||
struct ImBuf *ibuf1,
|
||||
struct ImBuf *ibuf2,
|
||||
struct ImBuf *ibuf3,
|
||||
ImBuf *ibuf1,
|
||||
ImBuf *ibuf2,
|
||||
ImBuf *ibuf3,
|
||||
int start_line,
|
||||
int total_lines,
|
||||
struct ImBuf *out);
|
||||
ImBuf *out);
|
||||
};
|
||||
|
||||
struct SeqEffectHandle SEQ_effect_handle_get(struct Sequence *seq);
|
||||
SeqEffectHandle SEQ_effect_handle_get(Sequence *seq);
|
||||
int SEQ_effect_get_num_inputs(int seq_type);
|
||||
void SEQ_effect_text_font_unload(struct TextVars *data, bool do_id_user);
|
||||
void SEQ_effect_text_font_load(struct TextVars *data, bool do_id_user);
|
||||
void SEQ_effect_text_font_unload(TextVars *data, bool do_id_user);
|
||||
void SEQ_effect_text_font_load(TextVars *data, bool do_id_user);
|
||||
|
||||
@@ -18,7 +18,7 @@ struct SeqRenderData;
|
||||
struct Sequence;
|
||||
struct SequenceModifierData;
|
||||
|
||||
typedef struct SequenceModifierTypeInfo {
|
||||
struct SequenceModifierTypeInfo {
|
||||
/* default name for the modifier */
|
||||
char name[64]; /* MAX_NAME */
|
||||
|
||||
@@ -29,34 +29,34 @@ typedef struct SequenceModifierTypeInfo {
|
||||
int struct_size;
|
||||
|
||||
/* data initialization */
|
||||
void (*init_data)(struct SequenceModifierData *smd);
|
||||
void (*init_data)(SequenceModifierData *smd);
|
||||
|
||||
/* free data used by modifier,
|
||||
* only modifier-specific data should be freed, modifier descriptor would
|
||||
* be freed outside of this callback
|
||||
*/
|
||||
void (*free_data)(struct SequenceModifierData *smd);
|
||||
void (*free_data)(SequenceModifierData *smd);
|
||||
|
||||
/* copy data from one modifier to another */
|
||||
void (*copy_data)(struct SequenceModifierData *smd, struct SequenceModifierData *target);
|
||||
void (*copy_data)(SequenceModifierData *smd, SequenceModifierData *target);
|
||||
|
||||
/* apply modifier on a given image buffer */
|
||||
void (*apply)(struct SequenceModifierData *smd, struct ImBuf *ibuf, struct ImBuf *mask);
|
||||
} SequenceModifierTypeInfo;
|
||||
void (*apply)(SequenceModifierData *smd, ImBuf *ibuf, ImBuf *mask);
|
||||
};
|
||||
|
||||
const struct SequenceModifierTypeInfo *SEQ_modifier_type_info_get(int type);
|
||||
struct SequenceModifierData *SEQ_modifier_new(struct Sequence *seq, const char *name, int type);
|
||||
bool SEQ_modifier_remove(struct Sequence *seq, struct SequenceModifierData *smd);
|
||||
void SEQ_modifier_clear(struct Sequence *seq);
|
||||
void SEQ_modifier_free(struct SequenceModifierData *smd);
|
||||
void SEQ_modifier_unique_name(struct Sequence *seq, struct SequenceModifierData *smd);
|
||||
struct SequenceModifierData *SEQ_modifier_find_by_name(struct Sequence *seq, const char *name);
|
||||
struct ImBuf *SEQ_modifier_apply_stack(const struct SeqRenderData *context,
|
||||
struct Sequence *seq,
|
||||
struct ImBuf *ibuf,
|
||||
int timeline_frame);
|
||||
void SEQ_modifier_list_copy(struct Sequence *seqn, struct Sequence *seq);
|
||||
int SEQ_sequence_supports_modifiers(struct Sequence *seq);
|
||||
const SequenceModifierTypeInfo *SEQ_modifier_type_info_get(int type);
|
||||
SequenceModifierData *SEQ_modifier_new(Sequence *seq, const char *name, int type);
|
||||
bool SEQ_modifier_remove(Sequence *seq, SequenceModifierData *smd);
|
||||
void SEQ_modifier_clear(Sequence *seq);
|
||||
void SEQ_modifier_free(SequenceModifierData *smd);
|
||||
void SEQ_modifier_unique_name(Sequence *seq, SequenceModifierData *smd);
|
||||
SequenceModifierData *SEQ_modifier_find_by_name(Sequence *seq, const char *name);
|
||||
ImBuf *SEQ_modifier_apply_stack(const SeqRenderData *context,
|
||||
Sequence *seq,
|
||||
ImBuf *ibuf,
|
||||
int timeline_frame);
|
||||
void SEQ_modifier_list_copy(Sequence *seqn, Sequence *seq);
|
||||
int SEQ_sequence_supports_modifiers(Sequence *seq);
|
||||
|
||||
void SEQ_modifier_blend_write(struct BlendWriter *writer, struct ListBase *modbase);
|
||||
void SEQ_modifier_blend_read_data(struct BlendDataReader *reader, struct ListBase *lb);
|
||||
void SEQ_modifier_blend_write(BlendWriter *writer, ListBase *modbase);
|
||||
void SEQ_modifier_blend_read_data(BlendDataReader *reader, ListBase *lb);
|
||||
|
||||
@@ -11,10 +11,10 @@
|
||||
struct Main;
|
||||
struct Scene;
|
||||
|
||||
void SEQ_prefetch_stop_all(void);
|
||||
void SEQ_prefetch_stop_all();
|
||||
/**
|
||||
* Use also to update scene and context changes
|
||||
* This function should almost always be called by cache invalidation, not directly.
|
||||
*/
|
||||
void SEQ_prefetch_stop(struct Scene *scene);
|
||||
bool SEQ_prefetch_need_redraw(struct Main *bmain, struct Scene *scene);
|
||||
void SEQ_prefetch_stop(Scene *scene);
|
||||
bool SEQ_prefetch_need_redraw(Main *bmain, Scene *scene);
|
||||
|
||||
@@ -13,33 +13,35 @@ struct GSet;
|
||||
struct ListBase;
|
||||
struct ListBase;
|
||||
struct Main;
|
||||
struct ProxyJob;
|
||||
struct Scene;
|
||||
struct SeqIndexBuildContext;
|
||||
struct SeqRenderData;
|
||||
struct Sequence;
|
||||
struct wmJob;
|
||||
struct wmJobWorkerStatus;
|
||||
|
||||
bool SEQ_proxy_rebuild_context(struct Main *bmain,
|
||||
struct Depsgraph *depsgraph,
|
||||
struct Scene *scene,
|
||||
struct Sequence *seq,
|
||||
struct GSet *file_list,
|
||||
struct ListBase *queue,
|
||||
bool SEQ_proxy_rebuild_context(Main *bmain,
|
||||
Depsgraph *depsgraph,
|
||||
Scene *scene,
|
||||
Sequence *seq,
|
||||
GSet *file_list,
|
||||
ListBase *queue,
|
||||
bool build_only_on_bad_performance);
|
||||
void SEQ_proxy_rebuild(struct SeqIndexBuildContext *context, wmJobWorkerStatus *worker_status);
|
||||
void SEQ_proxy_rebuild_finish(struct SeqIndexBuildContext *context, bool stop);
|
||||
void SEQ_proxy_set(struct Sequence *seq, bool value);
|
||||
bool SEQ_can_use_proxy(const struct SeqRenderData *context, struct Sequence *seq, int psize);
|
||||
void SEQ_proxy_rebuild(SeqIndexBuildContext *context, wmJobWorkerStatus *worker_status);
|
||||
void SEQ_proxy_rebuild_finish(SeqIndexBuildContext *context, bool stop);
|
||||
void SEQ_proxy_set(Sequence *seq, bool value);
|
||||
bool SEQ_can_use_proxy(const SeqRenderData *context, Sequence *seq, int psize);
|
||||
int SEQ_rendersize_to_proxysize(int render_size);
|
||||
double SEQ_rendersize_to_scale_factor(int size);
|
||||
|
||||
typedef struct ProxyBuildJob {
|
||||
struct Main *main;
|
||||
struct Depsgraph *depsgraph;
|
||||
struct Scene *scene;
|
||||
struct ListBase queue;
|
||||
struct ProxyJob {
|
||||
Main *main;
|
||||
Depsgraph *depsgraph;
|
||||
Scene *scene;
|
||||
ListBase queue;
|
||||
int stop;
|
||||
} ProxyJob;
|
||||
};
|
||||
|
||||
struct wmJob *ED_seq_proxy_wm_job_get(const struct bContext *C);
|
||||
ProxyJob *ED_seq_proxy_job_get(const struct bContext *C, struct wmJob *wm_job);
|
||||
wmJob *ED_seq_proxy_wm_job_get(const bContext *C);
|
||||
ProxyJob *ED_seq_proxy_job_get(const bContext *C, wmJob *wm_job);
|
||||
|
||||
@@ -18,51 +18,51 @@ struct Sequence;
|
||||
/**
|
||||
* Check if one sequence is input to the other.
|
||||
*/
|
||||
bool SEQ_relation_is_effect_of_strip(const struct Sequence *effect, const struct Sequence *input);
|
||||
bool SEQ_relation_is_effect_of_strip(const Sequence *effect, const Sequence *input);
|
||||
/**
|
||||
* Function to free imbuf and anim data on changes.
|
||||
*/
|
||||
void SEQ_relations_sequence_free_anim(struct Sequence *seq);
|
||||
bool SEQ_relations_check_scene_recursion(struct Scene *scene, struct ReportList *reports);
|
||||
void SEQ_relations_sequence_free_anim(Sequence *seq);
|
||||
bool SEQ_relations_check_scene_recursion(Scene *scene, ReportList *reports);
|
||||
/**
|
||||
* Check if "seq_main" (indirectly) uses strip "seq".
|
||||
*/
|
||||
bool SEQ_relations_render_loop_check(struct Sequence *seq_main, struct Sequence *seq);
|
||||
void SEQ_relations_free_imbuf(struct Scene *scene, struct ListBase *seqbase, bool for_render);
|
||||
void SEQ_relations_invalidate_cache_raw(struct Scene *scene, struct Sequence *seq);
|
||||
void SEQ_relations_invalidate_cache_preprocessed(struct Scene *scene, struct Sequence *seq);
|
||||
void SEQ_relations_invalidate_cache_composite(struct Scene *scene, struct Sequence *seq);
|
||||
void SEQ_relations_invalidate_dependent(struct Scene *scene, struct Sequence *seq);
|
||||
void SEQ_relations_invalidate_scene_strips(struct Main *bmain, struct Scene *scene_target);
|
||||
void SEQ_relations_invalidate_movieclip_strips(struct Main *bmain, struct MovieClip *clip_target);
|
||||
void SEQ_relations_invalidate_cache_in_range(struct Scene *scene,
|
||||
struct Sequence *seq,
|
||||
struct Sequence *range_mask,
|
||||
bool SEQ_relations_render_loop_check(Sequence *seq_main, Sequence *seq);
|
||||
void SEQ_relations_free_imbuf(Scene *scene, ListBase *seqbase, bool for_render);
|
||||
void SEQ_relations_invalidate_cache_raw(Scene *scene, Sequence *seq);
|
||||
void SEQ_relations_invalidate_cache_preprocessed(Scene *scene, Sequence *seq);
|
||||
void SEQ_relations_invalidate_cache_composite(Scene *scene, Sequence *seq);
|
||||
void SEQ_relations_invalidate_dependent(Scene *scene, Sequence *seq);
|
||||
void SEQ_relations_invalidate_scene_strips(Main *bmain, Scene *scene_target);
|
||||
void SEQ_relations_invalidate_movieclip_strips(Main *bmain, MovieClip *clip_target);
|
||||
void SEQ_relations_invalidate_cache_in_range(Scene *scene,
|
||||
Sequence *seq,
|
||||
Sequence *range_mask,
|
||||
int invalidate_types);
|
||||
/**
|
||||
* Release FFmpeg handles of strips that are not currently displayed to minimize memory usage.
|
||||
*/
|
||||
void SEQ_relations_free_all_anim_ibufs(struct Scene *scene, int timeline_frame);
|
||||
void SEQ_relations_free_all_anim_ibufs(Scene *scene, int timeline_frame);
|
||||
/**
|
||||
* A debug and development function which checks whether sequences have unique UUIDs.
|
||||
* Errors will be reported to the console.
|
||||
*/
|
||||
void SEQ_relations_check_uuids_unique_and_report(const struct Scene *scene);
|
||||
void SEQ_relations_check_uuids_unique_and_report(const Scene *scene);
|
||||
/**
|
||||
* Generate new UUID for the given sequence.
|
||||
*/
|
||||
void SEQ_relations_session_uuid_generate(struct Sequence *sequence);
|
||||
void SEQ_relations_session_uuid_generate(Sequence *sequence);
|
||||
|
||||
void SEQ_cache_cleanup(struct Scene *scene);
|
||||
void SEQ_cache_cleanup(Scene *scene);
|
||||
void SEQ_cache_iterate(
|
||||
struct Scene *scene,
|
||||
Scene *scene,
|
||||
void *userdata,
|
||||
bool callback_init(void *userdata, size_t item_count),
|
||||
bool callback_iter(void *userdata, struct Sequence *seq, int timeline_frame, int cache_type));
|
||||
bool callback_iter(void *userdata, Sequence *seq, int timeline_frame, int cache_type));
|
||||
/**
|
||||
* Return immediate parent meta of sequence.
|
||||
*/
|
||||
struct Sequence *SEQ_find_metastrip_by_sequence(ListBase *seqbase /* = ed->seqbase */,
|
||||
struct Sequence *meta /* = NULL */,
|
||||
struct Sequence *seq);
|
||||
bool SEQ_exists_in_seqbase(const struct Sequence *seq, const struct ListBase *seqbase);
|
||||
Sequence *SEQ_find_metastrip_by_sequence(ListBase *seqbase /* = ed->seqbase */,
|
||||
Sequence *meta /* = NULL */,
|
||||
Sequence *seq);
|
||||
bool SEQ_exists_in_seqbase(const Sequence *seq, const ListBase *seqbase);
|
||||
|
||||
@@ -10,21 +10,25 @@
|
||||
|
||||
#define SEQ_RENDER_THUMB_SIZE 256
|
||||
|
||||
struct Depsgraph;
|
||||
struct GPUOffScreen;
|
||||
struct ImBuf;
|
||||
struct ListBase;
|
||||
struct Main;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
struct StripElem;
|
||||
struct rctf;
|
||||
|
||||
typedef enum eSeqTaskId {
|
||||
enum eSeqTaskId {
|
||||
SEQ_TASK_MAIN_RENDER,
|
||||
SEQ_TASK_PREFETCH_RENDER,
|
||||
} eSeqTaskId;
|
||||
};
|
||||
|
||||
typedef struct SeqRenderData {
|
||||
struct Main *bmain;
|
||||
struct Depsgraph *depsgraph;
|
||||
struct Scene *scene;
|
||||
struct SeqRenderData {
|
||||
Main *bmain;
|
||||
Depsgraph *depsgraph;
|
||||
Scene *scene;
|
||||
int rectx;
|
||||
int recty;
|
||||
int preview_render_size;
|
||||
@@ -40,86 +44,78 @@ typedef struct SeqRenderData {
|
||||
eSeqTaskId task_id;
|
||||
|
||||
/* special case for OpenGL render */
|
||||
struct GPUOffScreen *gpu_offscreen;
|
||||
GPUOffScreen *gpu_offscreen;
|
||||
// int gpu_samples;
|
||||
// bool gpu_full_samples;
|
||||
} SeqRenderData;
|
||||
};
|
||||
|
||||
/**
|
||||
* \return The image buffer or NULL.
|
||||
*
|
||||
* \note The returned #ImBuf has its reference increased, free after usage!
|
||||
*/
|
||||
struct ImBuf *SEQ_render_give_ibuf(const SeqRenderData *context,
|
||||
ImBuf *SEQ_render_give_ibuf(const SeqRenderData *context, float timeline_frame, int chanshown);
|
||||
ImBuf *SEQ_render_give_ibuf_direct(const SeqRenderData *context,
|
||||
float timeline_frame,
|
||||
int chanshown);
|
||||
struct ImBuf *SEQ_render_give_ibuf_direct(const SeqRenderData *context,
|
||||
float timeline_frame,
|
||||
struct Sequence *seq);
|
||||
Sequence *seq);
|
||||
/**
|
||||
* Render the series of thumbnails and store in cache.
|
||||
*/
|
||||
void SEQ_render_thumbnails(const struct SeqRenderData *context,
|
||||
struct Sequence *seq,
|
||||
struct Sequence *seq_orig,
|
||||
void SEQ_render_thumbnails(const SeqRenderData *context,
|
||||
Sequence *seq,
|
||||
Sequence *seq_orig,
|
||||
float frame_step,
|
||||
const struct rctf *view_area,
|
||||
const rctf *view_area,
|
||||
const bool *stop);
|
||||
/**
|
||||
* Get cached thumbnails.
|
||||
*/
|
||||
struct ImBuf *SEQ_get_thumbnail(const struct SeqRenderData *context,
|
||||
struct Sequence *seq,
|
||||
float timeline_frame,
|
||||
rcti *crop,
|
||||
bool clipped);
|
||||
ImBuf *SEQ_get_thumbnail(
|
||||
const SeqRenderData *context, Sequence *seq, float timeline_frame, rcti *crop, bool clipped);
|
||||
/**
|
||||
* Get frame for first thumbnail.
|
||||
*/
|
||||
float SEQ_render_thumbnail_first_frame_get(const struct Scene *scene,
|
||||
struct Sequence *seq,
|
||||
float SEQ_render_thumbnail_first_frame_get(const Scene *scene,
|
||||
Sequence *seq,
|
||||
float frame_step,
|
||||
const struct rctf *view_area);
|
||||
const rctf *view_area);
|
||||
/**
|
||||
* Get frame for first thumbnail.
|
||||
*/
|
||||
float SEQ_render_thumbnail_next_frame_get(const struct Scene *scene,
|
||||
struct Sequence *seq,
|
||||
float SEQ_render_thumbnail_next_frame_get(const Scene *scene,
|
||||
Sequence *seq,
|
||||
float last_frame,
|
||||
float frame_step);
|
||||
/**
|
||||
* Get frame step for equally spaced thumbnails. These thumbnails should always be present in
|
||||
* memory, so they can be used when zooming.
|
||||
*/
|
||||
int SEQ_render_thumbnails_guaranteed_set_frame_step_get(const struct Scene *scene,
|
||||
const struct Sequence *seq);
|
||||
int SEQ_render_thumbnails_guaranteed_set_frame_step_get(const Scene *scene, const Sequence *seq);
|
||||
/**
|
||||
* Render set of evenly spaced thumbnails that are drawn when zooming..
|
||||
*/
|
||||
void SEQ_render_thumbnails_base_set(const struct SeqRenderData *context,
|
||||
struct Sequence *seq,
|
||||
struct Sequence *seq_orig,
|
||||
const struct rctf *view_area,
|
||||
void SEQ_render_thumbnails_base_set(const SeqRenderData *context,
|
||||
Sequence *seq,
|
||||
Sequence *seq_orig,
|
||||
const rctf *view_area,
|
||||
const bool *stop);
|
||||
|
||||
void SEQ_render_init_colorspace(struct Sequence *seq);
|
||||
void SEQ_render_new_render_data(struct Main *bmain,
|
||||
struct Depsgraph *depsgraph,
|
||||
struct Scene *scene,
|
||||
void SEQ_render_init_colorspace(Sequence *seq);
|
||||
void SEQ_render_new_render_data(Main *bmain,
|
||||
Depsgraph *depsgraph,
|
||||
Scene *scene,
|
||||
int rectx,
|
||||
int recty,
|
||||
int preview_render_size,
|
||||
int for_render,
|
||||
SeqRenderData *r_context);
|
||||
int SEQ_render_evaluate_frame(struct ListBase *seqbase, int timeline_frame);
|
||||
struct StripElem *SEQ_render_give_stripelem(const struct Scene *scene,
|
||||
struct Sequence *seq,
|
||||
int timeline_frame);
|
||||
int SEQ_render_evaluate_frame(ListBase *seqbase, int timeline_frame);
|
||||
StripElem *SEQ_render_give_stripelem(const Scene *scene, Sequence *seq, int timeline_frame);
|
||||
|
||||
void SEQ_render_imbuf_from_sequencer_space(struct Scene *scene, struct ImBuf *ibuf);
|
||||
void SEQ_render_pixel_from_sequencer_space_v4(struct Scene *scene, float pixel[4]);
|
||||
void SEQ_render_imbuf_from_sequencer_space(Scene *scene, ImBuf *ibuf);
|
||||
void SEQ_render_pixel_from_sequencer_space_v4(Scene *scene, float pixel[4]);
|
||||
/**
|
||||
* Check if `seq` is muted for rendering.
|
||||
* This function also checks `SeqTimelineChannel` flag.
|
||||
*/
|
||||
bool SEQ_render_is_muted(const struct ListBase *channels, const struct Sequence *seq);
|
||||
bool SEQ_render_is_muted(const ListBase *channels, const Sequence *seq);
|
||||
|
||||
@@ -11,70 +11,65 @@
|
||||
#include "BLI_map.hh"
|
||||
#include "BLI_span.hh"
|
||||
|
||||
struct Editing;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
struct SeqRetimingKey;
|
||||
|
||||
blender::MutableSpan<SeqRetimingKey> SEQ_retiming_keys_get(const Sequence *seq);
|
||||
blender::Map<SeqRetimingKey *, Sequence *> SEQ_retiming_selection_get(const struct Editing *ed);
|
||||
int SEQ_retiming_keys_count(const struct Sequence *seq);
|
||||
bool SEQ_retiming_is_active(const struct Sequence *seq);
|
||||
void SEQ_retiming_data_ensure(struct Sequence *seq);
|
||||
void SEQ_retiming_data_clear(struct Sequence *seq);
|
||||
bool SEQ_retiming_is_allowed(const struct Sequence *seq);
|
||||
blender::Map<SeqRetimingKey *, Sequence *> SEQ_retiming_selection_get(const Editing *ed);
|
||||
int SEQ_retiming_keys_count(const Sequence *seq);
|
||||
bool SEQ_retiming_is_active(const Sequence *seq);
|
||||
void SEQ_retiming_data_ensure(Sequence *seq);
|
||||
void SEQ_retiming_data_clear(Sequence *seq);
|
||||
bool SEQ_retiming_is_allowed(const Sequence *seq);
|
||||
/**
|
||||
* Add new retiming key.
|
||||
* This function always reallocates memory, so when function is used all stored pointers will
|
||||
* become invalid.
|
||||
*/
|
||||
SeqRetimingKey *SEQ_retiming_add_key(const struct Scene *scene,
|
||||
struct Sequence *seq,
|
||||
const int timeline_frame);
|
||||
SeqRetimingKey *SEQ_retiming_add_transition(const struct Scene *scene,
|
||||
struct Sequence *seq,
|
||||
struct SeqRetimingKey *key,
|
||||
const int offset);
|
||||
SeqRetimingKey *SEQ_retiming_add_freeze_frame(const struct Scene *scene,
|
||||
struct Sequence *seq,
|
||||
struct SeqRetimingKey *key,
|
||||
const int offset);
|
||||
bool SEQ_retiming_is_last_key(const struct Sequence *seq, const struct SeqRetimingKey *key);
|
||||
struct SeqRetimingKey *SEQ_retiming_last_key_get(const struct Sequence *seq);
|
||||
void SEQ_retiming_remove_key(const struct Scene *scene,
|
||||
struct Sequence *seq,
|
||||
struct SeqRetimingKey *key);
|
||||
void SEQ_retiming_offset_transition_key(const struct Scene *scene,
|
||||
const struct Sequence *seq,
|
||||
struct SeqRetimingKey *key,
|
||||
const int offset);
|
||||
float SEQ_retiming_key_speed_get(const struct Sequence *seq, const struct SeqRetimingKey *key);
|
||||
void SEQ_retiming_key_speed_set(const struct Scene *scene,
|
||||
struct Sequence *seq,
|
||||
struct SeqRetimingKey *key,
|
||||
const float speed);
|
||||
int SEQ_retiming_key_index_get(const struct Sequence *seq, const struct SeqRetimingKey *key);
|
||||
SeqRetimingKey *SEQ_retiming_key_get_by_timeline_frame(const struct Scene *scene,
|
||||
const struct Sequence *seq,
|
||||
const int timeline_frame);
|
||||
void SEQ_retiming_sound_animation_data_set(const struct Scene *scene, const struct Sequence *seq);
|
||||
float SEQ_retiming_key_timeline_frame_get(const struct Scene *scene,
|
||||
const struct Sequence *seq,
|
||||
const struct SeqRetimingKey *key);
|
||||
void SEQ_retiming_key_timeline_frame_set(const struct Scene *scene,
|
||||
struct Sequence *seq,
|
||||
struct SeqRetimingKey *key,
|
||||
const int timeline_frame);
|
||||
SeqRetimingKey *SEQ_retiming_find_segment_start_key(const struct Sequence *seq,
|
||||
const int frame_index);
|
||||
bool SEQ_retiming_key_is_transition_type(const struct SeqRetimingKey *key);
|
||||
bool SEQ_retiming_key_is_transition_start(const struct SeqRetimingKey *key);
|
||||
SeqRetimingKey *SEQ_retiming_transition_start_get(struct SeqRetimingKey *key);
|
||||
bool SEQ_retiming_key_is_freeze_frame(const struct SeqRetimingKey *key);
|
||||
bool SEQ_retiming_selection_clear(const struct Editing *ed);
|
||||
void SEQ_retiming_selection_append(struct SeqRetimingKey *key);
|
||||
void SEQ_retiming_selection_remove(struct SeqRetimingKey *key);
|
||||
void SEQ_retiming_remove_multiple_keys(struct Sequence *seq,
|
||||
blender::Vector<SeqRetimingKey *> &keys);
|
||||
bool SEQ_retiming_selection_contains(const struct Editing *ed, const struct SeqRetimingKey *key);
|
||||
bool SEQ_retiming_selection_has_whole_transition(const struct Editing *ed,
|
||||
struct SeqRetimingKey *key);
|
||||
bool SEQ_retiming_data_is_editable(const struct Sequence *seq);
|
||||
SeqRetimingKey *SEQ_retiming_add_key(const Scene *scene, Sequence *seq, int timeline_frame);
|
||||
SeqRetimingKey *SEQ_retiming_add_transition(const Scene *scene,
|
||||
Sequence *seq,
|
||||
SeqRetimingKey *key,
|
||||
int offset);
|
||||
SeqRetimingKey *SEQ_retiming_add_freeze_frame(const Scene *scene,
|
||||
Sequence *seq,
|
||||
SeqRetimingKey *key,
|
||||
int offset);
|
||||
bool SEQ_retiming_is_last_key(const Sequence *seq, const SeqRetimingKey *key);
|
||||
SeqRetimingKey *SEQ_retiming_last_key_get(const Sequence *seq);
|
||||
void SEQ_retiming_remove_key(const Scene *scene, Sequence *seq, SeqRetimingKey *key);
|
||||
void SEQ_retiming_offset_transition_key(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
SeqRetimingKey *key,
|
||||
int offset);
|
||||
float SEQ_retiming_key_speed_get(const Sequence *seq, const SeqRetimingKey *key);
|
||||
void SEQ_retiming_key_speed_set(const Scene *scene,
|
||||
Sequence *seq,
|
||||
SeqRetimingKey *key,
|
||||
float speed);
|
||||
int SEQ_retiming_key_index_get(const Sequence *seq, const SeqRetimingKey *key);
|
||||
SeqRetimingKey *SEQ_retiming_key_get_by_timeline_frame(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
int timeline_frame);
|
||||
void SEQ_retiming_sound_animation_data_set(const Scene *scene, const Sequence *seq);
|
||||
float SEQ_retiming_key_timeline_frame_get(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
const SeqRetimingKey *key);
|
||||
void SEQ_retiming_key_timeline_frame_set(const Scene *scene,
|
||||
Sequence *seq,
|
||||
SeqRetimingKey *key,
|
||||
int timeline_frame);
|
||||
SeqRetimingKey *SEQ_retiming_find_segment_start_key(const Sequence *seq, int frame_index);
|
||||
bool SEQ_retiming_key_is_transition_type(const SeqRetimingKey *key);
|
||||
bool SEQ_retiming_key_is_transition_start(const SeqRetimingKey *key);
|
||||
SeqRetimingKey *SEQ_retiming_transition_start_get(SeqRetimingKey *key);
|
||||
bool SEQ_retiming_key_is_freeze_frame(const SeqRetimingKey *key);
|
||||
bool SEQ_retiming_selection_clear(const Editing *ed);
|
||||
void SEQ_retiming_selection_append(SeqRetimingKey *key);
|
||||
void SEQ_retiming_selection_remove(SeqRetimingKey *key);
|
||||
void SEQ_retiming_remove_multiple_keys(Sequence *seq, blender::Vector<SeqRetimingKey *> &keys);
|
||||
bool SEQ_retiming_selection_contains(const Editing *ed, const SeqRetimingKey *key);
|
||||
bool SEQ_retiming_selection_has_whole_transition(const Editing *ed, SeqRetimingKey *key);
|
||||
bool SEQ_retiming_data_is_editable(const Sequence *seq);
|
||||
|
||||
@@ -11,8 +11,6 @@
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
|
||||
struct Sequence *SEQ_select_active_get(struct Scene *scene);
|
||||
bool SEQ_select_active_get_pair(struct Scene *scene,
|
||||
struct Sequence **r_seq_act,
|
||||
struct Sequence **r_seq_other);
|
||||
void SEQ_select_active_set(struct Scene *scene, struct Sequence *seq);
|
||||
Sequence *SEQ_select_active_get(Scene *scene);
|
||||
bool SEQ_select_active_get_pair(Scene *scene, Sequence **r_seq_act, Sequence **r_seq_other);
|
||||
void SEQ_select_active_set(Scene *scene, Sequence *seq);
|
||||
|
||||
@@ -15,6 +15,8 @@ struct BlendLibReader;
|
||||
struct BlendWriter;
|
||||
struct Depsgraph;
|
||||
struct Editing;
|
||||
struct Main;
|
||||
struct MetaStack;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
struct SequencerToolSettings;
|
||||
@@ -34,75 +36,75 @@ enum {
|
||||
#define SEQ_DUPE_ALL (1 << 3) /* otherwise only selected are copied */
|
||||
#define SEQ_DUPE_IS_RECURSIVE_CALL (1 << 4)
|
||||
|
||||
struct SequencerToolSettings *SEQ_tool_settings_init(void);
|
||||
struct SequencerToolSettings *SEQ_tool_settings_ensure(struct Scene *scene);
|
||||
void SEQ_tool_settings_free(struct SequencerToolSettings *tool_settings);
|
||||
eSeqImageFitMethod SEQ_tool_settings_fit_method_get(struct Scene *scene);
|
||||
void SEQ_tool_settings_fit_method_set(struct Scene *scene, eSeqImageFitMethod fit_method);
|
||||
short SEQ_tool_settings_snap_flag_get(struct Scene *scene);
|
||||
short SEQ_tool_settings_snap_mode_get(struct Scene *scene);
|
||||
int SEQ_tool_settings_snap_distance_get(struct Scene *scene);
|
||||
eSeqOverlapMode SEQ_tool_settings_overlap_mode_get(struct Scene *scene);
|
||||
int SEQ_tool_settings_pivot_point_get(struct Scene *scene);
|
||||
struct SequencerToolSettings *SEQ_tool_settings_copy(struct SequencerToolSettings *tool_settings);
|
||||
struct Editing *SEQ_editing_get(const struct Scene *scene);
|
||||
struct Editing *SEQ_editing_ensure(struct Scene *scene);
|
||||
void SEQ_editing_free(struct Scene *scene, bool do_id_user);
|
||||
SequencerToolSettings *SEQ_tool_settings_init();
|
||||
SequencerToolSettings *SEQ_tool_settings_ensure(Scene *scene);
|
||||
void SEQ_tool_settings_free(SequencerToolSettings *tool_settings);
|
||||
eSeqImageFitMethod SEQ_tool_settings_fit_method_get(Scene *scene);
|
||||
void SEQ_tool_settings_fit_method_set(Scene *scene, eSeqImageFitMethod fit_method);
|
||||
short SEQ_tool_settings_snap_flag_get(Scene *scene);
|
||||
short SEQ_tool_settings_snap_mode_get(Scene *scene);
|
||||
int SEQ_tool_settings_snap_distance_get(Scene *scene);
|
||||
eSeqOverlapMode SEQ_tool_settings_overlap_mode_get(Scene *scene);
|
||||
int SEQ_tool_settings_pivot_point_get(Scene *scene);
|
||||
SequencerToolSettings *SEQ_tool_settings_copy(SequencerToolSettings *tool_settings);
|
||||
Editing *SEQ_editing_get(const Scene *scene);
|
||||
Editing *SEQ_editing_ensure(Scene *scene);
|
||||
void SEQ_editing_free(Scene *scene, bool do_id_user);
|
||||
/**
|
||||
* Get seqbase that is being viewed currently. This can be main seqbase or meta strip seqbase
|
||||
*
|
||||
* \param ed: sequence editor data
|
||||
* \return pointer to active seqbase. returns NULL if ed is NULL
|
||||
*/
|
||||
struct ListBase *SEQ_active_seqbase_get(const struct Editing *ed);
|
||||
ListBase *SEQ_active_seqbase_get(const Editing *ed);
|
||||
/**
|
||||
* Set seqbase that is being viewed currently. This can be main seqbase or meta strip seqbase
|
||||
*
|
||||
* \param ed: sequence editor data
|
||||
* \param seqbase: ListBase with strips
|
||||
*/
|
||||
void SEQ_seqbase_active_set(struct Editing *ed, struct ListBase *seqbase);
|
||||
struct Sequence *SEQ_sequence_alloc(ListBase *lb, int timeline_frame, int machine, int type);
|
||||
void SEQ_sequence_free(struct Scene *scene, struct Sequence *seq);
|
||||
void SEQ_seqbase_active_set(Editing *ed, ListBase *seqbase);
|
||||
Sequence *SEQ_sequence_alloc(ListBase *lb, int timeline_frame, int machine, int type);
|
||||
void SEQ_sequence_free(Scene *scene, Sequence *seq);
|
||||
/**
|
||||
* Get #MetaStack that corresponds to current level that is being viewed
|
||||
*
|
||||
* \return pointer to meta stack
|
||||
*/
|
||||
struct MetaStack *SEQ_meta_stack_active_get(const struct Editing *ed);
|
||||
MetaStack *SEQ_meta_stack_active_get(const Editing *ed);
|
||||
/**
|
||||
* Open Meta strip content for editing.
|
||||
*
|
||||
* \param ed: sequence editor data
|
||||
* \param seqm: meta sequence or NULL for top level view
|
||||
*/
|
||||
void SEQ_meta_stack_set(const struct Scene *scene, struct Sequence *dst_seq);
|
||||
void SEQ_meta_stack_set(const Scene *scene, Sequence *dst_seq);
|
||||
/**
|
||||
* Close last Meta strip open for editing.
|
||||
*
|
||||
* \param ed: sequence editor data
|
||||
*/
|
||||
struct Sequence *SEQ_meta_stack_pop(struct Editing *ed);
|
||||
struct Sequence *SEQ_sequence_dupli_recursive(const struct Scene *scene_src,
|
||||
struct Scene *scene_dst,
|
||||
struct ListBase *new_seq_list,
|
||||
struct Sequence *seq,
|
||||
int dupe_flag);
|
||||
void SEQ_sequence_base_dupli_recursive(const struct Scene *scene_src,
|
||||
struct Scene *scene_dst,
|
||||
struct ListBase *nseqbase,
|
||||
const struct ListBase *seqbase,
|
||||
Sequence *SEQ_meta_stack_pop(Editing *ed);
|
||||
Sequence *SEQ_sequence_dupli_recursive(const Scene *scene_src,
|
||||
Scene *scene_dst,
|
||||
ListBase *new_seq_list,
|
||||
Sequence *seq,
|
||||
int dupe_flag);
|
||||
void SEQ_sequence_base_dupli_recursive(const Scene *scene_src,
|
||||
Scene *scene_dst,
|
||||
ListBase *nseqbase,
|
||||
const ListBase *seqbase,
|
||||
int dupe_flag,
|
||||
int flag);
|
||||
bool SEQ_valid_strip_channel(struct Sequence *seq);
|
||||
bool SEQ_valid_strip_channel(Sequence *seq);
|
||||
|
||||
/**
|
||||
* Read and Write functions for `.blend` file data.
|
||||
*/
|
||||
void SEQ_blend_write(struct BlendWriter *writer, struct ListBase *seqbase);
|
||||
void SEQ_blend_read(struct BlendDataReader *reader, struct ListBase *seqbase);
|
||||
void SEQ_blend_write(BlendWriter *writer, ListBase *seqbase);
|
||||
void SEQ_blend_read(BlendDataReader *reader, ListBase *seqbase);
|
||||
|
||||
void SEQ_doversion_250_sound_proxy_update(struct Main *bmain, struct Editing *ed);
|
||||
void SEQ_doversion_250_sound_proxy_update(Main *bmain, Editing *ed);
|
||||
|
||||
/* Depsgraph update function. */
|
||||
|
||||
@@ -111,15 +113,13 @@ void SEQ_doversion_250_sound_proxy_update(struct Main *bmain, struct Editing *ed
|
||||
* This does NOT include actual rendering of the strips, but rather makes them up-to-date for
|
||||
* animation playback and makes them ready for the sequencer's rendering pipeline to render them.
|
||||
*/
|
||||
void SEQ_eval_sequences(struct Depsgraph *depsgraph,
|
||||
struct Scene *scene,
|
||||
struct ListBase *seqbase);
|
||||
void SEQ_eval_sequences(Depsgraph *depsgraph, Scene *scene, ListBase *seqbase);
|
||||
|
||||
/* Defined in `sequence_lookup.cc`. */
|
||||
|
||||
typedef enum eSequenceLookupTag {
|
||||
enum eSequenceLookupTag {
|
||||
SEQ_LOOKUP_TAG_INVALID = (1 << 0),
|
||||
} eSequenceLookupTag;
|
||||
};
|
||||
ENUM_OPERATORS(eSequenceLookupTag, SEQ_LOOKUP_TAG_INVALID)
|
||||
|
||||
/**
|
||||
@@ -132,18 +132,18 @@ ENUM_OPERATORS(eSequenceLookupTag, SEQ_LOOKUP_TAG_INVALID)
|
||||
*
|
||||
* \return pointer to Sequence
|
||||
*/
|
||||
struct Sequence *SEQ_sequence_lookup_seq_by_name(const struct Scene *scene, const char *key);
|
||||
Sequence *SEQ_sequence_lookup_seq_by_name(const Scene *scene, const char *key);
|
||||
|
||||
/**
|
||||
* Free lookup hash data.
|
||||
*
|
||||
* \param scene: scene that owns lookup hash
|
||||
*/
|
||||
void SEQ_sequence_lookup_free(const struct Scene *scene);
|
||||
void SEQ_sequence_lookup_free(const Scene *scene);
|
||||
/**
|
||||
* Find a sequence with a given name.
|
||||
*
|
||||
* \param scene: scene that owns lookup hash
|
||||
* \param tag: tag to set
|
||||
*/
|
||||
void SEQ_sequence_lookup_tag(const struct Scene *scene, eSequenceLookupTag tag);
|
||||
void SEQ_sequence_lookup_tag(const Scene *scene, eSequenceLookupTag tag);
|
||||
|
||||
@@ -8,11 +8,13 @@
|
||||
* \ingroup sequencer
|
||||
*/
|
||||
|
||||
struct EQCurveMappingData;
|
||||
struct Main;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
struct bSound;
|
||||
struct SequencerSoundEqualizer;
|
||||
struct SoundModifierWorkerInfo;
|
||||
struct BlendWriter;
|
||||
struct BlendDataReader;
|
||||
struct ListBase;
|
||||
@@ -24,36 +26,33 @@ struct SoundEqualizerModifierData;
|
||||
#define SOUND_EQUALIZER_SIZE_CONVERSION 2048
|
||||
#define SOUND_EQUALIZER_SIZE_DEFINITION 1000
|
||||
|
||||
void SEQ_sound_update_bounds_all(struct Scene *scene);
|
||||
void SEQ_sound_update_bounds(struct Scene *scene, struct Sequence *seq);
|
||||
void SEQ_sound_update(struct Scene *scene, struct bSound *sound);
|
||||
void SEQ_sound_update_length(struct Main *bmain, struct Scene *scene);
|
||||
float SEQ_sound_pitch_get(const struct Scene *scene, const struct Sequence *seq);
|
||||
struct EQCurveMappingData *SEQ_sound_equalizer_add(struct SoundEqualizerModifierData *semd,
|
||||
float minX,
|
||||
float maxX);
|
||||
void SEQ_sound_blend_write(struct BlendWriter *writer, struct ListBase *soundbase);
|
||||
void SEQ_sound_blend_read_data(struct BlendDataReader *reader, struct ListBase *lb);
|
||||
void SEQ_sound_update_bounds_all(Scene *scene);
|
||||
void SEQ_sound_update_bounds(Scene *scene, Sequence *seq);
|
||||
void SEQ_sound_update(Scene *scene, bSound *sound);
|
||||
void SEQ_sound_update_length(Main *bmain, Scene *scene);
|
||||
float SEQ_sound_pitch_get(const Scene *scene, const Sequence *seq);
|
||||
EQCurveMappingData *SEQ_sound_equalizer_add(SoundEqualizerModifierData *semd,
|
||||
float minX,
|
||||
float maxX);
|
||||
void SEQ_sound_blend_write(BlendWriter *writer, ListBase *soundbase);
|
||||
void SEQ_sound_blend_read_data(BlendDataReader *reader, ListBase *lb);
|
||||
|
||||
void *SEQ_sound_modifier_recreator(struct Sequence *seq,
|
||||
struct SequenceModifierData *smd,
|
||||
void *sound);
|
||||
void *SEQ_sound_modifier_recreator(Sequence *seq, SequenceModifierData *smd, void *sound);
|
||||
|
||||
void SEQ_sound_equalizermodifier_init_data(struct SequenceModifierData *smd);
|
||||
void SEQ_sound_equalizermodifier_free(struct SequenceModifierData *smd);
|
||||
void SEQ_sound_equalizermodifier_copy_data(struct SequenceModifierData *target,
|
||||
struct SequenceModifierData *smd);
|
||||
void *SEQ_sound_equalizermodifier_recreator(struct Sequence *seq,
|
||||
struct SequenceModifierData *smd,
|
||||
void *sound);
|
||||
void SEQ_sound_equalizermodifier_set_graphs(struct SoundEqualizerModifierData *semd, int number);
|
||||
const struct SoundModifierWorkerInfo *SEQ_sound_modifier_worker_info_get(int type);
|
||||
struct EQCurveMappingData *SEQ_sound_equalizermodifier_add_graph(
|
||||
struct SoundEqualizerModifierData *semd, float min_freq, float max_freq);
|
||||
void SEQ_sound_equalizermodifier_remove_graph(struct SoundEqualizerModifierData *semd,
|
||||
struct EQCurveMappingData *gsed);
|
||||
void SEQ_sound_equalizermodifier_init_data(SequenceModifierData *smd);
|
||||
void SEQ_sound_equalizermodifier_free(SequenceModifierData *smd);
|
||||
void SEQ_sound_equalizermodifier_copy_data(SequenceModifierData *target,
|
||||
SequenceModifierData *smd);
|
||||
void *SEQ_sound_equalizermodifier_recreator(Sequence *seq, SequenceModifierData *smd, void *sound);
|
||||
void SEQ_sound_equalizermodifier_set_graphs(SoundEqualizerModifierData *semd, int number);
|
||||
const SoundModifierWorkerInfo *SEQ_sound_modifier_worker_info_get(int type);
|
||||
EQCurveMappingData *SEQ_sound_equalizermodifier_add_graph(SoundEqualizerModifierData *semd,
|
||||
float min_freq,
|
||||
float max_freq);
|
||||
void SEQ_sound_equalizermodifier_remove_graph(SoundEqualizerModifierData *semd,
|
||||
EQCurveMappingData *gsed);
|
||||
|
||||
typedef struct SoundModifierWorkerInfo {
|
||||
struct SoundModifierWorkerInfo {
|
||||
int type;
|
||||
void *(*recreator)(struct Sequence *seq, struct SequenceModifierData *smd, void *sound);
|
||||
} SoundModifierWorkerInfo;
|
||||
void *(*recreator)(Sequence *seq, SequenceModifierData *smd, void *sound);
|
||||
};
|
||||
|
||||
@@ -19,16 +19,14 @@ struct rctf;
|
||||
* \param scene: the Scene instance whose timeline boundaries are extracted from
|
||||
* \param rect: output parameter to be filled with timeline boundaries
|
||||
*/
|
||||
void SEQ_timeline_init_boundbox(const struct Scene *scene, struct rctf *rect);
|
||||
void SEQ_timeline_init_boundbox(const Scene *scene, rctf *rect);
|
||||
/**
|
||||
* Stretch the given rectangle to include the given strips boundaries
|
||||
*
|
||||
* \param seqbase: ListBase in which strips are located
|
||||
* \param rect: output parameter to be filled with strips' boundaries
|
||||
*/
|
||||
void SEQ_timeline_expand_boundbox(const struct Scene *scene,
|
||||
const struct ListBase *seqbase,
|
||||
struct rctf *rect);
|
||||
void SEQ_timeline_expand_boundbox(const Scene *scene, const ListBase *seqbase, rctf *rect);
|
||||
/**
|
||||
* Define boundary rectangle of sequencer timeline and fill in rect data
|
||||
*
|
||||
@@ -36,14 +34,12 @@ void SEQ_timeline_expand_boundbox(const struct Scene *scene,
|
||||
* \param seqbase: ListBase in which strips are located
|
||||
* \param rect: data structure describing rectangle, that will be filled in by this function
|
||||
*/
|
||||
void SEQ_timeline_boundbox(const struct Scene *scene,
|
||||
const struct ListBase *seqbase,
|
||||
struct rctf *rect);
|
||||
void SEQ_timeline_boundbox(const Scene *scene, const ListBase *seqbase, rctf *rect);
|
||||
/**
|
||||
* Get FPS rate of source media. Movie, scene and movie-clip strips are supported.
|
||||
* Returns 0 for unsupported strip or if media can't be loaded.
|
||||
*/
|
||||
float SEQ_time_sequence_get_fps(struct Scene *scene, struct Sequence *seq);
|
||||
float SEQ_time_sequence_get_fps(Scene *scene, Sequence *seq);
|
||||
/**
|
||||
* Find start or end position of next or previous strip.
|
||||
* \param scene: Video editing scene
|
||||
@@ -52,7 +48,7 @@ float SEQ_time_sequence_get_fps(struct Scene *scene, struct Sequence *seq);
|
||||
* \param do_center: find closest strip center if true, otherwise finds closest handle position.
|
||||
* \param do_unselected: only find closest position of unselected strip.
|
||||
*/
|
||||
int SEQ_time_find_next_prev_edit(struct Scene *scene,
|
||||
int SEQ_time_find_next_prev_edit(Scene *scene,
|
||||
int timeline_frame,
|
||||
short side,
|
||||
bool do_skip_mute,
|
||||
@@ -67,66 +63,60 @@ int SEQ_time_find_next_prev_edit(struct Scene *scene,
|
||||
* \param timeline_frame: absolute frame position
|
||||
* \return true if strip intersects with timeline frame.
|
||||
*/
|
||||
bool SEQ_time_strip_intersects_frame(const struct Scene *scene,
|
||||
const struct Sequence *seq,
|
||||
int timeline_frame);
|
||||
bool SEQ_time_strip_intersects_frame(const Scene *scene, const Sequence *seq, int timeline_frame);
|
||||
/* Convert timeline frame so strip frame index. */
|
||||
float SEQ_give_frame_index(const struct Scene *scene, struct Sequence *seq, float timeline_frame);
|
||||
float SEQ_give_frame_index(const Scene *scene, Sequence *seq, float timeline_frame);
|
||||
/**
|
||||
* Returns true if strip has frames without content to render.
|
||||
*/
|
||||
bool SEQ_time_has_still_frames(const struct Scene *scene, const struct Sequence *seq);
|
||||
bool SEQ_time_has_still_frames(const Scene *scene, const Sequence *seq);
|
||||
/**
|
||||
* Returns true if at beginning of strip there is no content to be rendered.
|
||||
*/
|
||||
bool SEQ_time_has_left_still_frames(const struct Scene *scene, const struct Sequence *seq);
|
||||
bool SEQ_time_has_left_still_frames(const Scene *scene, const Sequence *seq);
|
||||
/**
|
||||
* Returns true if at end of strip there is no content to be rendered.
|
||||
*/
|
||||
bool SEQ_time_has_right_still_frames(const struct Scene *scene, const struct Sequence *seq);
|
||||
bool SEQ_time_has_right_still_frames(const Scene *scene, const Sequence *seq);
|
||||
/**
|
||||
* Get timeline frame where strip boundary starts.
|
||||
*/
|
||||
int SEQ_time_left_handle_frame_get(const struct Scene *scene, const struct Sequence *seq);
|
||||
int SEQ_time_left_handle_frame_get(const Scene *scene, const Sequence *seq);
|
||||
/**
|
||||
* Get timeline frame where strip boundary ends.
|
||||
*/
|
||||
int SEQ_time_right_handle_frame_get(const struct Scene *scene, const struct Sequence *seq);
|
||||
int SEQ_time_right_handle_frame_get(const Scene *scene, const Sequence *seq);
|
||||
/**
|
||||
* Set frame where strip boundary starts. This function moves only handle, content is not moved.
|
||||
*/
|
||||
void SEQ_time_left_handle_frame_set(const struct Scene *scene,
|
||||
struct Sequence *seq,
|
||||
int timeline_frame);
|
||||
void SEQ_time_left_handle_frame_set(const Scene *scene, Sequence *seq, int timeline_frame);
|
||||
/**
|
||||
* Set frame where strip boundary ends.
|
||||
* This function moves only handle, content is not moved.
|
||||
*/
|
||||
void SEQ_time_right_handle_frame_set(const struct Scene *scene,
|
||||
struct Sequence *seq,
|
||||
int timeline_frame);
|
||||
void SEQ_time_right_handle_frame_set(const Scene *scene, Sequence *seq, int timeline_frame);
|
||||
/**
|
||||
* Get number of frames (in timeline) that can be rendered.
|
||||
* This can change depending on scene FPS or strip speed factor.
|
||||
*/
|
||||
int SEQ_time_strip_length_get(const struct Scene *scene, const struct Sequence *seq);
|
||||
int SEQ_time_strip_length_get(const Scene *scene, const Sequence *seq);
|
||||
/**
|
||||
* Get timeline frame where strip content starts.
|
||||
*/
|
||||
float SEQ_time_start_frame_get(const struct Sequence *seq);
|
||||
float SEQ_time_start_frame_get(const Sequence *seq);
|
||||
/**
|
||||
* Get timeline frame where strip content ends.
|
||||
*/
|
||||
float SEQ_time_content_end_frame_get(const struct Scene *scene, const struct Sequence *seq);
|
||||
float SEQ_time_content_end_frame_get(const Scene *scene, const Sequence *seq);
|
||||
/**
|
||||
* Set frame where strip content starts.
|
||||
* This function will also move strip handles.
|
||||
*/
|
||||
void SEQ_time_start_frame_set(const struct Scene *scene, struct Sequence *seq, int timeline_frame);
|
||||
void SEQ_time_start_frame_set(const Scene *scene, Sequence *seq, int timeline_frame);
|
||||
/**
|
||||
* Update meta strip content start and end, update sound playback range.
|
||||
* To be used after any contained strip length or position has changed.
|
||||
*
|
||||
* \note this function is currently only used internally and in versioning code.
|
||||
*/
|
||||
void SEQ_time_update_meta_strip_range(const struct Scene *scene, struct Sequence *seq_meta);
|
||||
void SEQ_time_update_meta_strip_range(const Scene *scene, Sequence *seq_meta);
|
||||
|
||||
@@ -13,45 +13,39 @@ struct Scene;
|
||||
struct SeqCollection;
|
||||
struct Sequence;
|
||||
|
||||
bool SEQ_transform_sequence_can_be_translated(struct Sequence *seq);
|
||||
bool SEQ_transform_sequence_can_be_translated(Sequence *seq);
|
||||
/**
|
||||
* Used so we can do a quick check for single image seq
|
||||
* since they work a bit differently to normal image seq's (during transform).
|
||||
*/
|
||||
bool SEQ_transform_single_image_check(struct Sequence *seq);
|
||||
bool SEQ_transform_test_overlap(const struct Scene *scene,
|
||||
struct ListBase *seqbasep,
|
||||
struct Sequence *test);
|
||||
bool SEQ_transform_test_overlap_seq_seq(const struct Scene *scene,
|
||||
struct Sequence *seq1,
|
||||
struct Sequence *seq2);
|
||||
void SEQ_transform_translate_sequence(struct Scene *evil_scene, struct Sequence *seq, int delta);
|
||||
bool SEQ_transform_single_image_check(Sequence *seq);
|
||||
bool SEQ_transform_test_overlap(const Scene *scene, ListBase *seqbasep, Sequence *test);
|
||||
bool SEQ_transform_test_overlap_seq_seq(const Scene *scene, Sequence *seq1, Sequence *seq2);
|
||||
void SEQ_transform_translate_sequence(Scene *evil_scene, Sequence *seq, int delta);
|
||||
/**
|
||||
* \return 0 if there weren't enough space.
|
||||
*/
|
||||
bool SEQ_transform_seqbase_shuffle_ex(struct ListBase *seqbasep,
|
||||
struct Sequence *test,
|
||||
struct Scene *evil_scene,
|
||||
bool SEQ_transform_seqbase_shuffle_ex(ListBase *seqbasep,
|
||||
Sequence *test,
|
||||
Scene *evil_scene,
|
||||
int channel_delta);
|
||||
bool SEQ_transform_seqbase_shuffle(struct ListBase *seqbasep,
|
||||
struct Sequence *test,
|
||||
struct Scene *evil_scene);
|
||||
bool SEQ_transform_seqbase_shuffle_time(struct SeqCollection *strips_to_shuffle,
|
||||
struct SeqCollection *time_dependent_strips,
|
||||
struct ListBase *seqbasep,
|
||||
struct Scene *evil_scene,
|
||||
struct ListBase *markers,
|
||||
bool SEQ_transform_seqbase_shuffle(ListBase *seqbasep, Sequence *test, Scene *evil_scene);
|
||||
bool SEQ_transform_seqbase_shuffle_time(SeqCollection *strips_to_shuffle,
|
||||
SeqCollection *time_dependent_strips,
|
||||
ListBase *seqbasep,
|
||||
Scene *evil_scene,
|
||||
ListBase *markers,
|
||||
bool use_sync_markers);
|
||||
|
||||
void SEQ_transform_handle_overlap(struct Scene *scene,
|
||||
struct ListBase *seqbasep,
|
||||
struct SeqCollection *transformed_strips,
|
||||
struct SeqCollection *time_dependent_strips,
|
||||
void SEQ_transform_handle_overlap(Scene *scene,
|
||||
ListBase *seqbasep,
|
||||
SeqCollection *transformed_strips,
|
||||
SeqCollection *time_dependent_strips,
|
||||
bool use_sync_markers);
|
||||
/**
|
||||
* Check if the selected seq's reference unselected seq's.
|
||||
*/
|
||||
bool SEQ_transform_seqbase_isolated_sel_check(struct ListBase *seqbase);
|
||||
bool SEQ_transform_seqbase_isolated_sel_check(ListBase *seqbase);
|
||||
/**
|
||||
* Move strips and markers (if not locked) that start after timeline_frame by delta frames
|
||||
*
|
||||
@@ -60,8 +54,8 @@ bool SEQ_transform_seqbase_isolated_sel_check(struct ListBase *seqbase);
|
||||
* \param delta: offset in frames to be applied
|
||||
* \param timeline_frame: frame on timeline from where strips are moved
|
||||
*/
|
||||
void SEQ_transform_offset_after_frame(struct Scene *scene,
|
||||
struct ListBase *seqbase,
|
||||
void SEQ_transform_offset_after_frame(Scene *scene,
|
||||
ListBase *seqbase,
|
||||
int delta,
|
||||
int timeline_frame);
|
||||
|
||||
@@ -69,11 +63,11 @@ void SEQ_transform_offset_after_frame(struct Scene *scene,
|
||||
* Check if `seq` can be moved.
|
||||
* This function also checks `SeqTimelineChannel` flag.
|
||||
*/
|
||||
bool SEQ_transform_is_locked(struct ListBase *channels, struct Sequence *seq);
|
||||
bool SEQ_transform_is_locked(ListBase *channels, Sequence *seq);
|
||||
|
||||
/* Image transformation. */
|
||||
|
||||
void SEQ_image_transform_mirror_factor_get(const struct Sequence *seq, float r_mirror[2]);
|
||||
void SEQ_image_transform_mirror_factor_get(const Sequence *seq, float r_mirror[2]);
|
||||
/**
|
||||
* Get strip transform origin offset from image center
|
||||
* NOTE: This function does not apply axis mirror.
|
||||
@@ -82,8 +76,8 @@ void SEQ_image_transform_mirror_factor_get(const struct Sequence *seq, float r_m
|
||||
* \param seq: Sequence to calculate image transform origin
|
||||
* \param r_origin: return value
|
||||
*/
|
||||
void SEQ_image_transform_origin_offset_pixelspace_get(const struct Scene *scene,
|
||||
const struct Sequence *seq,
|
||||
void SEQ_image_transform_origin_offset_pixelspace_get(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
float r_origin[2]);
|
||||
/**
|
||||
* Get 4 corner points of strip image, optionally without rotation component applied.
|
||||
@@ -94,8 +88,8 @@ void SEQ_image_transform_origin_offset_pixelspace_get(const struct Scene *scene,
|
||||
* \param apply_rotation: Apply sequence rotation transform to the quad
|
||||
* \param r_quad: array of 4 2D vectors
|
||||
*/
|
||||
void SEQ_image_transform_quad_get(const struct Scene *scene,
|
||||
const struct Sequence *seq,
|
||||
void SEQ_image_transform_quad_get(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
bool apply_rotation,
|
||||
float r_quad[4][2]);
|
||||
/**
|
||||
@@ -105,16 +99,12 @@ void SEQ_image_transform_quad_get(const struct Scene *scene,
|
||||
* \param seq: Sequence to calculate transformed image quad
|
||||
* \param r_quad: array of 4 2D vectors
|
||||
*/
|
||||
void SEQ_image_transform_final_quad_get(const struct Scene *scene,
|
||||
const struct Sequence *seq,
|
||||
void SEQ_image_transform_final_quad_get(const Scene *scene,
|
||||
const Sequence *seq,
|
||||
float r_quad[4][2]);
|
||||
|
||||
void SEQ_image_preview_unit_to_px(const struct Scene *scene,
|
||||
const float co_src[2],
|
||||
float co_dst[2]);
|
||||
void SEQ_image_preview_unit_from_px(const struct Scene *scene,
|
||||
const float co_src[2],
|
||||
float co_dst[2]);
|
||||
void SEQ_image_preview_unit_to_px(const Scene *scene, const float co_src[2], float co_dst[2]);
|
||||
void SEQ_image_preview_unit_from_px(const Scene *scene, const float co_src[2], float co_dst[2]);
|
||||
|
||||
/**
|
||||
* Get viewport axis aligned bounding box from a collection of sequences.
|
||||
@@ -126,8 +116,5 @@ void SEQ_image_preview_unit_from_px(const struct Scene *scene,
|
||||
* \param r_min: Minimum x and y values
|
||||
* \param r_max: Maximum x and y values
|
||||
*/
|
||||
void SEQ_image_transform_bounding_box_from_collection(struct Scene *scene,
|
||||
struct SeqCollection *strips,
|
||||
bool apply_rotation,
|
||||
float r_min[2],
|
||||
float r_max[2]);
|
||||
void SEQ_image_transform_bounding_box_from_collection(
|
||||
Scene *scene, SeqCollection *strips, bool apply_rotation, float r_min[2], float r_max[2]);
|
||||
|
||||
@@ -16,30 +16,24 @@ struct Scene;
|
||||
struct Sequence;
|
||||
struct StripElem;
|
||||
|
||||
void SEQ_sequence_base_unique_name_recursive(struct Scene *scene,
|
||||
struct ListBase *seqbasep,
|
||||
struct Sequence *seq);
|
||||
const char *SEQ_sequence_give_name(struct Sequence *seq);
|
||||
struct ListBase *SEQ_get_seqbase_from_sequence(struct Sequence *seq,
|
||||
struct ListBase **channels,
|
||||
int *r_offset);
|
||||
const struct Sequence *SEQ_get_topmost_sequence(const struct Scene *scene, int frame);
|
||||
void SEQ_sequence_base_unique_name_recursive(Scene *scene, ListBase *seqbasep, Sequence *seq);
|
||||
const char *SEQ_sequence_give_name(Sequence *seq);
|
||||
ListBase *SEQ_get_seqbase_from_sequence(Sequence *seq, ListBase **channels, int *r_offset);
|
||||
const Sequence *SEQ_get_topmost_sequence(const Scene *scene, int frame);
|
||||
/**
|
||||
* In cases where we don't know the sequence's listbase.
|
||||
*/
|
||||
struct ListBase *SEQ_get_seqbase_by_seq(const struct Scene *scene, struct Sequence *seq);
|
||||
ListBase *SEQ_get_seqbase_by_seq(const Scene *scene, Sequence *seq);
|
||||
/**
|
||||
* Only use as last resort when the StripElem is available but no the Sequence.
|
||||
* (needed for RNA)
|
||||
*/
|
||||
struct Sequence *SEQ_sequence_from_strip_elem(struct ListBase *seqbase, struct StripElem *se);
|
||||
struct Sequence *SEQ_get_sequence_by_name(struct ListBase *seqbase,
|
||||
const char *name,
|
||||
bool recursive);
|
||||
struct Mask *SEQ_active_mask_get(struct Scene *scene);
|
||||
void SEQ_alpha_mode_from_file_extension(struct Sequence *seq);
|
||||
bool SEQ_sequence_has_source(const struct Sequence *seq);
|
||||
void SEQ_set_scale_to_fit(const struct Sequence *seq,
|
||||
Sequence *SEQ_sequence_from_strip_elem(ListBase *seqbase, StripElem *se);
|
||||
Sequence *SEQ_get_sequence_by_name(ListBase *seqbase, const char *name, bool recursive);
|
||||
Mask *SEQ_active_mask_get(Scene *scene);
|
||||
void SEQ_alpha_mode_from_file_extension(Sequence *seq);
|
||||
bool SEQ_sequence_has_source(const Sequence *seq);
|
||||
void SEQ_set_scale_to_fit(const Sequence *seq,
|
||||
int image_width,
|
||||
int image_height,
|
||||
int preview_width,
|
||||
@@ -52,4 +46,4 @@ void SEQ_set_scale_to_fit(const struct Sequence *seq,
|
||||
* \param seq: Sequence which name will be ensured to be unique
|
||||
* \param scene: Scene in which name must be unique
|
||||
*/
|
||||
void SEQ_ensure_unique_name(struct Sequence *seq, struct Scene *scene);
|
||||
void SEQ_ensure_unique_name(Sequence *seq, Scene *scene);
|
||||
|
||||
Reference in New Issue
Block a user