Changeset View
Changeset View
Standalone View
Standalone View
source/blender/sequencer/intern/strip_transform.c
| Show First 20 Lines • Show All 247 Lines • ▼ Show 20 Lines | if (seq->type == SEQ_TYPE_META) { | ||||
| /* Ensure that meta bounds are updated, but this function prevents resets seq->start and | /* Ensure that meta bounds are updated, but this function prevents resets seq->start and | ||||
| * start/end point in timeline. */ | * start/end point in timeline. */ | ||||
| SEQ_time_update_meta_strip_range(evil_scene, seq); | SEQ_time_update_meta_strip_range(evil_scene, seq); | ||||
| /* Move meta start/end points. */ | /* Move meta start/end points. */ | ||||
| SEQ_transform_set_left_handle_frame(seq, seq->startdisp + delta); | SEQ_transform_set_left_handle_frame(seq, seq->startdisp + delta); | ||||
| SEQ_transform_set_right_handle_frame(seq, seq->enddisp + delta); | SEQ_transform_set_right_handle_frame(seq, seq->enddisp + delta); | ||||
| } | } | ||||
| SEQ_time_update_sequence(evil_scene, seq); | ListBase *seqbase = SEQ_active_seqbase_get(SEQ_editing_get(evil_scene)); | ||||
| SEQ_time_update_sequence(evil_scene, seqbase, seq); | |||||
| } | } | ||||
| /* return 0 if there weren't enough space */ | /* return 0 if there weren't enough space */ | ||||
| bool SEQ_transform_seqbase_shuffle_ex(ListBase *seqbasep, | bool SEQ_transform_seqbase_shuffle_ex(ListBase *seqbasep, | ||||
| Sequence *test, | Sequence *test, | ||||
| Scene *evil_scene, | Scene *evil_scene, | ||||
| int channel_delta) | int channel_delta) | ||||
| { | { | ||||
| const int orig_machine = test->machine; | const int orig_machine = test->machine; | ||||
| BLI_assert(ELEM(channel_delta, -1, 1)); | BLI_assert(ELEM(channel_delta, -1, 1)); | ||||
| test->machine += channel_delta; | test->machine += channel_delta; | ||||
| SEQ_time_update_sequence(evil_scene, test); | SEQ_time_update_sequence(evil_scene, seqbasep, test); | ||||
| while (SEQ_transform_test_overlap(seqbasep, test)) { | while (SEQ_transform_test_overlap(seqbasep, test)) { | ||||
| if ((channel_delta > 0) ? (test->machine >= MAXSEQ) : (test->machine < 1)) { | if ((channel_delta > 0) ? (test->machine >= MAXSEQ) : (test->machine < 1)) { | ||||
| break; | break; | ||||
| } | } | ||||
| test->machine += channel_delta; | test->machine += channel_delta; | ||||
| /* XXX: I don't think this is needed since were only moving vertically, Campbell. */ | /* XXX: I don't think this is needed since were only moving vertically, Campbell. */ | ||||
| SEQ_time_update_sequence(evil_scene, test); | SEQ_time_update_sequence(evil_scene, seqbasep, test); | ||||
| } | } | ||||
| if (!SEQ_valid_strip_channel(test)) { | if (!SEQ_valid_strip_channel(test)) { | ||||
| /* Blender 2.4x would remove the strip. | /* Blender 2.4x would remove the strip. | ||||
| * nicer to move it to the end */ | * nicer to move it to the end */ | ||||
| Sequence *seq; | Sequence *seq; | ||||
| int new_frame = test->enddisp; | int new_frame = test->enddisp; | ||||
| for (seq = seqbasep->first; seq; seq = seq->next) { | for (seq = seqbasep->first; seq; seq = seq->next) { | ||||
| if (seq->machine == orig_machine) { | if (seq->machine == orig_machine) { | ||||
| new_frame = max_ii(new_frame, seq->enddisp); | new_frame = max_ii(new_frame, seq->enddisp); | ||||
| } | } | ||||
| } | } | ||||
| test->machine = orig_machine; | test->machine = orig_machine; | ||||
| new_frame = new_frame + (test->start - test->startdisp); /* adjust by the startdisp */ | new_frame = new_frame + (test->start - test->startdisp); /* adjust by the startdisp */ | ||||
| SEQ_transform_translate_sequence(evil_scene, test, new_frame - test->start); | SEQ_transform_translate_sequence(evil_scene, test, new_frame - test->start); | ||||
| SEQ_time_update_sequence(evil_scene, test); | SEQ_time_update_sequence(evil_scene, seqbasep, test); | ||||
| return false; | return false; | ||||
| } | } | ||||
| return true; | return true; | ||||
| } | } | ||||
| bool SEQ_transform_seqbase_shuffle(ListBase *seqbasep, Sequence *test, Scene *evil_scene) | bool SEQ_transform_seqbase_shuffle(ListBase *seqbasep, Sequence *test, Scene *evil_scene) | ||||
| { | { | ||||
| ▲ Show 20 Lines • Show All 43 Lines • ▼ Show 20 Lines | SEQ_ITERATOR_FOREACH (seq, strips_to_shuffle) { | ||||
| seq->startdisp += ofs; | seq->startdisp += ofs; | ||||
| seq->enddisp += ofs; | seq->enddisp += ofs; | ||||
| } | } | ||||
| tot_ofs += ofs; | tot_ofs += ofs; | ||||
| } | } | ||||
| SEQ_ITERATOR_FOREACH (seq, strips_to_shuffle) { | SEQ_ITERATOR_FOREACH (seq, strips_to_shuffle) { | ||||
| SEQ_time_update_sequence_bounds(scene, seq); /* corrects dummy startdisp/enddisp values */ | SEQ_time_update_sequence(scene, seqbasep, seq); /* corrects dummy startdisp/enddisp values */ | ||||
| } | } | ||||
| return tot_ofs; | return tot_ofs; | ||||
| } | } | ||||
| bool SEQ_transform_seqbase_shuffle_time(SeqCollection *strips_to_shuffle, | bool SEQ_transform_seqbase_shuffle_time(SeqCollection *strips_to_shuffle, | ||||
| ListBase *seqbasep, | ListBase *seqbasep, | ||||
| Scene *evil_scene, | Scene *evil_scene, | ||||
| Show All 36 Lines | |||||
| void SEQ_transform_offset_after_frame(Scene *scene, | void SEQ_transform_offset_after_frame(Scene *scene, | ||||
| ListBase *seqbase, | ListBase *seqbase, | ||||
| const int delta, | const int delta, | ||||
| const int timeline_frame) | const int timeline_frame) | ||||
| { | { | ||||
| LISTBASE_FOREACH (Sequence *, seq, seqbase) { | LISTBASE_FOREACH (Sequence *, seq, seqbase) { | ||||
| if (seq->startdisp >= timeline_frame) { | if (seq->startdisp >= timeline_frame) { | ||||
| SEQ_transform_translate_sequence(scene, seq, delta); | SEQ_transform_translate_sequence(scene, seq, delta); | ||||
| SEQ_time_update_sequence(scene, seq); | SEQ_time_update_sequence(scene, seqbase, seq); | ||||
| SEQ_relations_invalidate_cache_preprocessed(scene, seq); | SEQ_relations_invalidate_cache_preprocessed(scene, seq); | ||||
| } | } | ||||
| } | } | ||||
| if (!scene->toolsettings->lock_markers) { | if (!scene->toolsettings->lock_markers) { | ||||
| LISTBASE_FOREACH (TimeMarker *, marker, &scene->markers) { | LISTBASE_FOREACH (TimeMarker *, marker, &scene->markers) { | ||||
| if (marker->frame >= timeline_frame) { | if (marker->frame >= timeline_frame) { | ||||
| marker->frame += delta; | marker->frame += delta; | ||||
| ▲ Show 20 Lines • Show All 102 Lines • Show Last 20 Lines | |||||