36#define SEQ_EDGE_PAN_INSIDE_PAD 3.5
37#define SEQ_EDGE_PAN_OUTSIDE_PAD 0
38#define SEQ_EDGE_PAN_SPEED_RAMP 1
39#define SEQ_EDGE_PAN_MAX_SPEED 4
40#define SEQ_EDGE_PAN_DELAY 1.0f
41#define SEQ_EDGE_PAN_ZOOM_INFLUENCE 0.5f
90 int cfra = scene->r.cfra;
104 *r_count = *r_flag = 0;
106 else if (left > cfra) {
114 *r_count = *r_flag = 0;
116 else if (right < cfra) {
178 td2d->
loc[0] = start_left;
183 td2d->
loc[0] = start_left;
192 td2d->
loc2d =
nullptr;
201 td->extra = (
void *)tdsq;
222 td->ival = td2d->
loc[0];
261 if ((custom_data->
data !=
nullptr) && custom_data->
use_free) {
265 custom_data->
data =
nullptr;
274 for (
Sequence *seq : transformed_strips) {
291 for (
Sequence *seq : transformed_strips) {
304 for (
int a = 0; a < tc->
data_len; a++, td++) {
323 for (
Sequence *seq : transformed_strips) {
324 seq->flag &= ~SEQ_IGNORE_CHANNEL_LOCK;
371 input = effect->
seq2;
378 Sequence *input = effect, *seq_iter = effect;
379 while (seq_iter !=
nullptr) {
403 bool strip_added =
true;
405 while (strip_added) {
408 for (
Sequence *seq : strips_no_handles) {
409 if (time_dependent_strips.
contains(seq)) {
414 if (seq->seq1 && time_dependent_strips.
contains(seq->seq1)) {
415 if (seq->seq2 && !time_dependent_strips.
contains(seq->seq2)) {
419 time_dependent_strips.
add(seq);
430 for (
Sequence *seq : selected_strips) {
432 if (seq->seq1 ==
nullptr || seq->seq2 ==
nullptr) {
441 time_dependent_strips.
add(seq);
512 if ((seq->flag &
SELECT) != 0) {
561 int a, new_frame, offset;
581 float edge_pan_offset[2] = {0.0f, 0.0f};
596 if (
abs(offset) >
abs(max_offset)) {
611 int new_right_frame =
round_fl_to_int(td->loc[0] + edge_pan_offset[0]);
647 for (
Sequence *seq : transformed_strips) {
649 seq->
flag &= ~SEQ_OVERLAP;
664 for (a = 0, td = tc->
data; a < tc->
data_len; a++, td++) {
668 if (seq != seq_prev) {
699 sseq->
flag &= ~SPACE_SEQ_DESELECT_STRIP_HANDLE;
736 if (min_channel_after_transform < 1) {
737 r_val[1] -= min_channel_after_transform - 1;
#define LISTBASE_FOREACH(type, var, list)
MINLINE int round_fl_to_int(float a)
MINLINE int min_ii(int a, int b)
MINLINE int max_ii(int a, int b)
void unit_m3(float m[3][3])
MINLINE void copy_v3_v3(float r[3], const float a[3])
void BLI_rctf_transform_pt_v(const rctf *dst, const rctf *src, float xy_dst[2], const float xy_src[2])
bool BLI_rctf_compare(const struct rctf *rect_a, const struct rctf *rect_b, float limit)
void DEG_id_tag_update(ID *id, unsigned int flags)
@ ID_RECALC_SEQUENCER_STRIPS
@ SPACE_SEQ_DESELECT_STRIP_HANDLE
Read Guarded memory(de)allocation.
constexpr int SEQ_MAX_CHANNELS
void UI_view2d_edge_pan_set_limits(View2DEdgePanData *vpd, float xmin, float xmax, float ymin, float ymax)
void UI_view2d_edge_pan_cancel(bContext *C, View2DEdgePanData *vpd)
void UI_view2d_edge_pan_init(bContext *C, View2DEdgePanData *vpd, float inside_pad, float outside_pad, float speed_ramp, float max_speed, float delay, float zoom_influence)
void UI_view2d_edge_pan_apply(bContext *C, View2DEdgePanData *vpd, const int xy[2]) ATTR_NONNULL(1
int ED_markers_post_apply_transform(ListBase *markers, Scene *scene, int mode, float value, char side)
void SEQ_offset_animdata(Scene *scene, Sequence *seq, int ofs)
ListBase * SEQ_channels_displayed_get(Editing *ed)
bool contains(const Key &key) const
void add_multiple(Span< Key > keys)
int64_t remove_if(Predicate &&predicate)
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
void SEQ_iterator_set_expand(const Scene *scene, ListBase *seqbase, VectorSet< Sequence * > &strips, void seq_query_func(const Scene *scene, Sequence *seq_reference, ListBase *seqbase, VectorSet< Sequence * > &strips))
void SEQ_query_strip_effect_chain(const Scene *scene, Sequence *reference_strip, ListBase *seqbase, VectorSet< Sequence * > &strips)
VectorSet< Sequence * > SEQ_query_selected_strips(ListBase *seqbase)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
ListBase * SEQ_active_seqbase_get(const Editing *ed)
Editing * SEQ_editing_get(const Scene *scene)
void SEQ_relations_invalidate_cache_composite(Scene *scene, Sequence *seq)
void SEQ_time_right_handle_frame_set(const Scene *scene, Sequence *seq, int timeline_frame)
void SEQ_time_left_handle_frame_set(const Scene *scene, Sequence *seq, int timeline_frame)
int SEQ_time_left_handle_frame_get(const Scene *, const Sequence *seq)
int SEQ_time_right_handle_frame_get(const Scene *scene, const Sequence *seq)
void(* free_cb)(TransInfo *, TransDataContainer *tc, TransCustomData *custom_data)
TransCustomDataContainer custom
View2DEdgePanData edge_pan
int selection_channel_range_max
int selection_channel_range_min
blender::VectorSet< Sequence * > time_dependent_strips
ccl_device_inline int abs(int x)