Changeset View
Changeset View
Standalone View
Standalone View
source/blender/sequencer/intern/strip_transform.c
| Show First 20 Lines • Show All 42 Lines • ▼ Show 20 Lines | |||||
| { | { | ||||
| return seq->start; | return seq->start; | ||||
| } | } | ||||
| static int seq_tx_get_end(Sequence *seq) | static int seq_tx_get_end(Sequence *seq) | ||||
| { | { | ||||
| return seq->start + seq->len; | return seq->start + seq->len; | ||||
| } | } | ||||
| int SEQ_transform_get_left_handle_frame(Sequence *seq, bool metaclip) | int SEQ_transform_get_left_handle_frame(Sequence *seq) | ||||
| { | { | ||||
| if (metaclip && seq->tmp) { | |||||
| /* return the range clipped by the parents range */ | |||||
| return max_ii(SEQ_transform_get_left_handle_frame(seq, false), | |||||
| SEQ_transform_get_left_handle_frame((Sequence *)seq->tmp, true)); | |||||
| } | |||||
| return (seq->start - seq->startstill) + seq->startofs; | return (seq->start - seq->startstill) + seq->startofs; | ||||
| } | } | ||||
| int SEQ_transform_get_right_handle_frame(Sequence *seq, bool metaclip) | int SEQ_transform_get_right_handle_frame(Sequence *seq) | ||||
| { | { | ||||
| if (metaclip && seq->tmp) { | |||||
| /* return the range clipped by the parents range */ | |||||
| return min_ii(SEQ_transform_get_right_handle_frame(seq, false), | |||||
| SEQ_transform_get_right_handle_frame((Sequence *)seq->tmp, true)); | |||||
| } | |||||
| return ((seq->start + seq->len) + seq->endstill) - seq->endofs; | return ((seq->start + seq->len) + seq->endstill) - seq->endofs; | ||||
| } | } | ||||
| void SEQ_transform_set_left_handle_frame(Sequence *seq, int val) | void SEQ_transform_set_left_handle_frame(Sequence *seq, int val) | ||||
| { | { | ||||
| if (val < (seq)->start) { | if (val < (seq)->start) { | ||||
| seq->startstill = abs(val - (seq)->start); | seq->startstill = abs(val - (seq)->start); | ||||
| seq->startofs = 0; | seq->startofs = 0; | ||||
| ▲ Show 20 Lines • Show All 69 Lines • ▼ Show 20 Lines | |||||
| /** | /** | ||||
| * Use to impose limits when dragging/extending - so impossible situations don't happen. | * Use to impose limits when dragging/extending - so impossible situations don't happen. | ||||
| * Cant use the #SEQ_LEFTSEL and #SEQ_LEFTSEL directly because the strip may be in a meta-strip. | * Cant use the #SEQ_LEFTSEL and #SEQ_LEFTSEL directly because the strip may be in a meta-strip. | ||||
| */ | */ | ||||
| void SEQ_transform_handle_xlimits(Sequence *seq, int leftflag, int rightflag) | void SEQ_transform_handle_xlimits(Sequence *seq, int leftflag, int rightflag) | ||||
| { | { | ||||
| if (leftflag) { | if (leftflag) { | ||||
| if (SEQ_transform_get_left_handle_frame(seq, false) >= | if (SEQ_transform_get_left_handle_frame(seq) >= SEQ_transform_get_right_handle_frame(seq)) { | ||||
| SEQ_transform_get_right_handle_frame(seq, false)) { | SEQ_transform_set_left_handle_frame(seq, SEQ_transform_get_right_handle_frame(seq) - 1); | ||||
| SEQ_transform_set_left_handle_frame(seq, | |||||
| SEQ_transform_get_right_handle_frame(seq, false) - 1); | |||||
| } | } | ||||
| if (SEQ_transform_single_image_check(seq) == 0) { | if (SEQ_transform_single_image_check(seq) == 0) { | ||||
| if (SEQ_transform_get_left_handle_frame(seq, false) >= seq_tx_get_end(seq)) { | if (SEQ_transform_get_left_handle_frame(seq) >= seq_tx_get_end(seq)) { | ||||
| SEQ_transform_set_left_handle_frame(seq, seq_tx_get_end(seq) - 1); | SEQ_transform_set_left_handle_frame(seq, seq_tx_get_end(seq) - 1); | ||||
| } | } | ||||
| /* doesn't work now - TODO */ | /* doesn't work now - TODO */ | ||||
| #if 0 | #if 0 | ||||
| if (seq_tx_get_start(seq) >= seq_tx_get_final_right(seq, 0)) { | if (seq_tx_get_start(seq) >= seq_tx_get_final_right(seq, 0)) { | ||||
| int ofs; | int ofs; | ||||
| ofs = seq_tx_get_start(seq) - seq_tx_get_final_right(seq, 0); | ofs = seq_tx_get_start(seq) - seq_tx_get_final_right(seq, 0); | ||||
| seq->start -= ofs; | seq->start -= ofs; | ||||
| seq_tx_set_final_left(seq, seq_tx_get_final_left(seq, 0) + ofs); | seq_tx_set_final_left(seq, seq_tx_get_final_left(seq, 0) + ofs); | ||||
| } | } | ||||
| #endif | #endif | ||||
| } | } | ||||
| } | } | ||||
| if (rightflag) { | if (rightflag) { | ||||
| if (SEQ_transform_get_right_handle_frame(seq, false) <= | if (SEQ_transform_get_right_handle_frame(seq) <= SEQ_transform_get_left_handle_frame(seq)) { | ||||
| SEQ_transform_get_left_handle_frame(seq, false)) { | SEQ_transform_set_right_handle_frame(seq, SEQ_transform_get_left_handle_frame(seq) + 1); | ||||
| SEQ_transform_set_right_handle_frame(seq, | |||||
| SEQ_transform_get_left_handle_frame(seq, false) + 1); | |||||
| } | } | ||||
| if (SEQ_transform_single_image_check(seq) == 0) { | if (SEQ_transform_single_image_check(seq) == 0) { | ||||
| if (SEQ_transform_get_right_handle_frame(seq, false) <= seq_tx_get_start(seq)) { | if (SEQ_transform_get_right_handle_frame(seq) <= seq_tx_get_start(seq)) { | ||||
| SEQ_transform_set_right_handle_frame(seq, seq_tx_get_start(seq) + 1); | SEQ_transform_set_right_handle_frame(seq, seq_tx_get_start(seq) + 1); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| /* sounds cannot be extended past their endpoints */ | /* sounds cannot be extended past their endpoints */ | ||||
| if (seq->type == SEQ_TYPE_SOUND_RAM) { | if (seq->type == SEQ_TYPE_SOUND_RAM) { | ||||
| seq->startstill = 0; | seq->startstill = 0; | ||||
| seq->endstill = 0; | seq->endstill = 0; | ||||
| } | } | ||||
| } | } | ||||
| void SEQ_transform_fix_single_image_seq_offsets(Sequence *seq) | void SEQ_transform_fix_single_image_seq_offsets(Sequence *seq) | ||||
| { | { | ||||
| int left, start, offset; | int left, start, offset; | ||||
| if (!SEQ_transform_single_image_check(seq)) { | if (!SEQ_transform_single_image_check(seq)) { | ||||
| return; | return; | ||||
| } | } | ||||
| /* make sure the image is always at the start since there is only one, | /* make sure the image is always at the start since there is only one, | ||||
| * adjusting its start should be ok */ | * adjusting its start should be ok */ | ||||
| left = SEQ_transform_get_left_handle_frame(seq, false); | left = SEQ_transform_get_left_handle_frame(seq); | ||||
| start = seq->start; | start = seq->start; | ||||
| if (start != left) { | if (start != left) { | ||||
| offset = left - start; | offset = left - start; | ||||
| SEQ_transform_set_left_handle_frame(seq, | SEQ_transform_set_left_handle_frame(seq, SEQ_transform_get_left_handle_frame(seq) - offset); | ||||
| SEQ_transform_get_left_handle_frame(seq, false) - offset); | SEQ_transform_set_right_handle_frame(seq, SEQ_transform_get_right_handle_frame(seq) - offset); | ||||
| SEQ_transform_set_right_handle_frame( | |||||
| seq, SEQ_transform_get_right_handle_frame(seq, false) - offset); | |||||
| seq->start += offset; | seq->start += offset; | ||||
| } | } | ||||
| } | } | ||||
| bool SEQ_transform_sequence_can_be_translated(Sequence *seq) | bool SEQ_transform_sequence_can_be_translated(Sequence *seq) | ||||
| { | { | ||||
| return !(seq->type & SEQ_TYPE_EFFECT) || (SEQ_effect_get_num_inputs(seq->type) == 0); | return !(seq->type & SEQ_TYPE_EFFECT) || (SEQ_effect_get_num_inputs(seq->type) == 0); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 204 Lines • Show Last 20 Lines | |||||