|
Blender V4.3
|
#include "DNA_scene_types.h"#include "DNA_sequence_types.h"#include "BLI_listbase.h"#include "BLI_math_matrix.h"#include "BLI_math_rotation.h"#include "BLI_math_vector.h"#include "BLI_math_vector_types.hh"#include "SEQ_animation.hh"#include "SEQ_channels.hh"#include "SEQ_edit.hh"#include "SEQ_effects.hh"#include "SEQ_iterator.hh"#include "SEQ_relations.hh"#include "SEQ_sequencer.hh"#include "SEQ_time.hh"#include "SEQ_transform.hh"#include "sequencer.hh"#include "strip_time.hh"Go to the source code of this file.
Enumerations | |
| enum | eOvelapDescrition { STRIP_OVERLAP_NONE , STRIP_OVERLAP_IS_FULL , STRIP_OVERLAP_IS_INSIDE , STRIP_OVERLAP_LEFT_SIDE , STRIP_OVERLAP_RIGHT_SIDE } |
Functions | |
| bool | SEQ_transform_single_image_check (const Sequence *seq) |
| bool | SEQ_transform_seqbase_isolated_sel_check (ListBase *seqbase) |
| bool | SEQ_transform_sequence_can_be_translated (const Sequence *seq) |
| bool | SEQ_transform_test_overlap_seq_seq (const Scene *scene, Sequence *seq1, Sequence *seq2) |
| bool | SEQ_transform_test_overlap (const Scene *scene, ListBase *seqbasep, Sequence *test) |
| void | SEQ_transform_translate_sequence (Scene *evil_scene, Sequence *seq, int delta) |
| bool | SEQ_transform_seqbase_shuffle_ex (ListBase *seqbasep, Sequence *test, Scene *evil_scene, int channel_delta) |
| bool | SEQ_transform_seqbase_shuffle (ListBase *seqbasep, Sequence *test, Scene *evil_scene) |
| static bool | shuffle_seq_test_overlap (const Scene *scene, const Sequence *seq1, const Sequence *seq2, const int offset) |
| static int | shuffle_seq_time_offset_get (const Scene *scene, blender::Span< Sequence * > strips_to_shuffle, ListBase *seqbasep, char dir) |
| bool | SEQ_transform_seqbase_shuffle_time (blender::Span< Sequence * > strips_to_shuffle, ListBase *seqbasep, Scene *evil_scene, ListBase *markers, const bool use_sync_markers) |
| bool | SEQ_transform_seqbase_shuffle_time (blender::Span< Sequence * > strips_to_shuffle, blender::Span< Sequence * > time_dependent_strips, ListBase *seqbasep, Scene *evil_scene, ListBase *markers, const bool use_sync_markers) |
| static blender::VectorSet< Sequence * > | extract_standalone_strips (blender::Span< Sequence * > transformed_strips) |
| static blender::VectorSet< Sequence * > | query_right_side_strips (const Scene *scene, ListBase *seqbase, blender::Span< Sequence * > transformed_strips, blender::Span< Sequence * > time_dependent_strips) |
| static void | seq_transform_handle_expand_to_fit (Scene *scene, ListBase *seqbasep, blender::Span< Sequence * > transformed_strips, blender::Span< Sequence * > time_dependent_strips, bool use_sync_markers) |
| static blender::VectorSet< Sequence * > | query_overwrite_targets (const Scene *scene, ListBase *seqbasep, blender::Span< Sequence * > transformed_strips) |
| static eOvelapDescrition | overlap_description_get (const Scene *scene, const Sequence *transformed, const Sequence *target) |
| static void | seq_transform_handle_overwrite_split (Scene *scene, ListBase *seqbasep, const Sequence *transformed, Sequence *target) |
| static void | seq_transform_handle_overwrite_trim (Scene *scene, ListBase *seqbasep, const Sequence *transformed, Sequence *target, const eOvelapDescrition overlap) |
| static void | seq_transform_handle_overwrite (Scene *scene, ListBase *seqbasep, blender::Span< Sequence * > transformed_strips) |
| static void | seq_transform_handle_overlap_shuffle (Scene *scene, ListBase *seqbasep, blender::Span< Sequence * > transformed_strips, blender::Span< Sequence * > time_dependent_strips, bool use_sync_markers) |
| void | SEQ_transform_handle_overlap (Scene *scene, ListBase *seqbasep, blender::Span< Sequence * > transformed_strips, bool use_sync_markers) |
| void | SEQ_transform_handle_overlap (Scene *scene, ListBase *seqbasep, blender::Span< Sequence * > transformed_strips, blender::Span< Sequence * > time_dependent_strips, bool use_sync_markers) |
| void | SEQ_transform_offset_after_frame (Scene *scene, ListBase *seqbase, const int delta, const int timeline_frame) |
| bool | SEQ_transform_is_locked (ListBase *channels, const Sequence *seq) |
| void | SEQ_image_transform_mirror_factor_get (const Sequence *seq, float r_mirror[2]) |
| void | SEQ_image_transform_origin_offset_pixelspace_get (const Scene *scene, const Sequence *seq, float r_origin[2]) |
| static void | seq_image_transform_quad_get_ex (const Scene *scene, const Sequence *seq, bool apply_rotation, float r_quad[4][2]) |
| void | SEQ_image_transform_quad_get (const Scene *scene, const Sequence *seq, bool apply_rotation, float r_quad[4][2]) |
| 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 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]) |
| void | SEQ_image_transform_bounding_box_from_collection (Scene *scene, blender::Span< Sequence * > strips, bool apply_rotation, float r_min[2], float r_max[2]) |
| enum eOvelapDescrition |
| Enumerator | |
|---|---|
| STRIP_OVERLAP_NONE | |
| STRIP_OVERLAP_IS_FULL | |
| STRIP_OVERLAP_IS_INSIDE | |
| STRIP_OVERLAP_LEFT_SIDE | |
| STRIP_OVERLAP_RIGHT_SIDE | |
Definition at line 378 of file strip_transform.cc.
|
static |
Definition at line 280 of file strip_transform.cc.
References blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), and SEQ_TYPE_EFFECT.
Referenced by seq_transform_handle_expand_to_fit(), and seq_transform_handle_overlap_shuffle().
|
static |
Definition at line 390 of file strip_transform.cc.
References SEQ_time_left_handle_frame_get(), SEQ_time_right_handle_frame_get(), STRIP_OVERLAP_IS_FULL, STRIP_OVERLAP_IS_INSIDE, STRIP_OVERLAP_LEFT_SIDE, STRIP_OVERLAP_NONE, and STRIP_OVERLAP_RIGHT_SIDE.
Referenced by seq_transform_handle_overwrite().
|
static |
Definition at line 357 of file strip_transform.cc.
References blender::Span< T >::contains(), blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::remove_if(), SEQ_query_unselected_strips(), and SEQ_transform_test_overlap_seq_seq().
Referenced by seq_transform_handle_overwrite().
|
static |
Definition at line 294 of file strip_transform.cc.
References blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), blender::Span< T >::contains(), blender::Span< T >::is_empty(), LISTBASE_FOREACH, MAXFRAME, min_ii(), SELECT, and SEQ_time_left_handle_frame_get().
Referenced by seq_transform_handle_expand_to_fit().
Definition at line 719 of file strip_transform.cc.
Referenced by sequencer_set_2d_cursor_exec().
Definition at line 713 of file strip_transform.cc.
Referenced by calculateCenterCursor2D(), gizmo2d_calc_bounds(), gizmo2d_calc_transform_pivot(), sequencer_preview_region_draw(), and setTransformViewAspect().
| void SEQ_image_transform_bounding_box_from_collection | ( | Scene * | scene, |
| blender::Span< Sequence * > | strips, | ||
| bool | apply_rotation, | ||
| float | r_min[2], | ||
| float | r_max[2] ) |
Get viewport axis aligned bounding box from a collection of sequences. The collection must have one or more strips
| scene | Scene in which strips are located |
| strips | Collection of strips to get the bounding box from |
| apply_rotation | Include sequence rotation transform in the bounding box calculation |
| r_min | Minimum x and y values |
| r_max | Maximum x and y values |
Definition at line 725 of file strip_transform.cc.
References INIT_MINMAX2, minmax_v2v2_v2(), quad, and SEQ_image_transform_quad_get().
Referenced by gizmo2d_calc_bounds(), and seq_view_collection_rect_preview().
| void SEQ_image_transform_final_quad_get | ( | const Scene * | scene, |
| const Sequence * | seq, | ||
| float | r_quad[4][2] ) |
Get 4 corner points of strip image. Corner vectors are in viewport space.
| scene | Scene in which strips are located |
| seq | Sequence to calculate transformed image quad |
| r_quad | array of 4 2D vectors |
Definition at line 706 of file strip_transform.cc.
References seq_image_transform_quad_get_ex().
Referenced by get_strip_screen_quad(), seq_box_select_rect_image_isect(), seq_draw_image_origin_and_outline(), seq_point_image_isect(), seq_snap_source_points_build_preview(), and seq_snap_target_points_build_preview().
Definition at line 606 of file strip_transform.cc.
References Sequence::flag, SEQ_FLIPX, and SEQ_FLIPY.
Referenced by gizmo2d_calc_rotation(), recalcData_sequencer_image(), SEQ_image_transform_origin_offset_pixelspace_get(), and seq_image_transform_quad_get_ex().
| void SEQ_image_transform_origin_offset_pixelspace_get | ( | const Scene * | scene, |
| const Sequence * | seq, | ||
| float | r_origin[2] ) |
Get strip transform origin offset from image center NOTE: This function does not apply axis mirror.
| scene | Scene in which strips are located |
| seq | Sequence to calculate image transform origin |
| r_origin | return value |
Definition at line 619 of file strip_transform.cc.
References mul_v2_v2(), StripElem::orig_height, StripElem::orig_width, SEQ_image_transform_mirror_factor_get(), Sequence::strip, Strip::stripdata, Strip::transform, and StripTransform::xofs.
Referenced by seq_draw_image_origin_and_outline(), seq_get_strip_pivot_median(), seq_select_seq_from_preview(), seq_snap_source_points_build_preview(), seq_snap_target_points_build_preview(), and SeqToTransData().
| void SEQ_image_transform_quad_get | ( | const Scene * | scene, |
| const Sequence * | seq, | ||
| bool | apply_rotation, | ||
| float | r_quad[4][2] ) |
Get 4 corner points of strip image, optionally without rotation component applied. Corner vectors are in viewport space.
| scene | Scene in which strips are located |
| seq | Sequence to calculate transformed image quad |
| apply_rotation | Apply sequence rotation transform to the quad |
| r_quad | array of 4 2D vectors |
Definition at line 698 of file strip_transform.cc.
References seq_image_transform_quad_get_ex().
Referenced by SEQ_image_transform_bounding_box_from_collection().
|
static |
Definition at line 645 of file strip_transform.cc.
References axis_angle_to_mat3_single(), StripCrop::bottom, copy_v2_v2(), Strip::crop, ELEM, float, StripCrop::left, loc_rot_size_to_mat4(), mul_m4_v3(), mul_v2_v2(), StripElem::orig_height, StripElem::orig_width, StripCrop::right, SEQ_image_transform_mirror_factor_get(), SEQ_TYPE_IMAGE, SEQ_TYPE_MOVIE, Sequence::strip, Strip::stripdata, StripCrop::top, Strip::transform, transform_pivot_set_m4(), Sequence::type, and zero_v3().
Referenced by SEQ_image_transform_final_quad_get(), and SEQ_image_transform_quad_get().
|
static |
Definition at line 325 of file strip_transform.cc.
References extract_standalone_strips(), markers, query_right_side_strips(), SEQ_MAX_CHANNELS, and SEQ_transform_seqbase_shuffle_time().
Referenced by SEQ_transform_handle_overlap().
| void SEQ_transform_handle_overlap | ( | Scene * | scene, |
| ListBase * | seqbasep, | ||
| blender::Span< Sequence * > | transformed_strips, | ||
| blender::Span< Sequence * > | time_dependent_strips, | ||
| bool | use_sync_markers ) |
Definition at line 546 of file strip_transform.cc.
References SEQ_OVERLAP_EXPAND, SEQ_OVERLAP_OVERWRITE, SEQ_OVERLAP_SHUFFLE, SEQ_tool_settings_overlap_mode_get(), seq_transform_handle_expand_to_fit(), seq_transform_handle_overlap_shuffle(), seq_transform_handle_overwrite(), SEQ_transform_seqbase_shuffle(), and SEQ_transform_test_overlap().
| void SEQ_transform_handle_overlap | ( | Scene * | scene, |
| ListBase * | seqbasep, | ||
| blender::Span< Sequence * > | transformed_strips, | ||
| bool | use_sync_markers ) |
Definition at line 537 of file strip_transform.cc.
References SEQ_transform_handle_overlap().
Referenced by freeSeqData(), freeSeqData(), retiming_key_overlap(), seq_load_apply_generic_options(), SEQ_transform_handle_overlap(), sequencer_add_movie_multiple_strips(), and sequencer_add_movie_single_strip().
|
static |
Definition at line 523 of file strip_transform.cc.
References extract_standalone_strips(), markers, and SEQ_transform_seqbase_shuffle_time().
Referenced by SEQ_transform_handle_overlap().
|
static |
Definition at line 486 of file strip_transform.cc.
References blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), ELEM, blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::is_empty(), overlap_description_get(), query_overwrite_targets(), SEQ_edit_flag_for_removal(), SEQ_edit_remove_flagged_sequences(), seq_transform_handle_overwrite_split(), seq_transform_handle_overwrite_trim(), STRIP_OVERLAP_IS_FULL, STRIP_OVERLAP_IS_INSIDE, STRIP_OVERLAP_LEFT_SIDE, and STRIP_OVERLAP_RIGHT_SIDE.
Referenced by SEQ_transform_handle_overlap().
|
static |
Definition at line 426 of file strip_transform.cc.
References SEQ_edit_flag_for_removal(), SEQ_edit_remove_flagged_sequences(), SEQ_edit_strip_split(), SEQ_SPLIT_SOFT, SEQ_time_left_handle_frame_get(), and SEQ_time_right_handle_frame_get().
Referenced by seq_transform_handle_overwrite().
|
static |
Definition at line 455 of file strip_transform.cc.
References BLI_assert, SEQ_effect_get_num_inputs(), SEQ_iterator_set_expand(), SEQ_query_by_reference(), SEQ_query_strip_effect_chain(), SEQ_time_left_handle_frame_get(), SEQ_time_left_handle_frame_set(), SEQ_time_right_handle_frame_get(), SEQ_time_right_handle_frame_set(), SEQ_TYPE_EFFECT, STRIP_OVERLAP_LEFT_SIDE, and STRIP_OVERLAP_RIGHT_SIDE.
Referenced by seq_transform_handle_overwrite().
Check if seq can be moved. This function also checks SeqTimelineChannel flag.
Definition at line 599 of file strip_transform.cc.
References Sequence::flag, Sequence::machine, SEQ_channel_get_by_index(), SEQ_channel_is_locked(), SEQ_IGNORE_CHANNEL_LOCK, and SEQ_LOCK.
Referenced by ED_sequencer_can_select_handle(), screen_ctx_selected_editable_sequences(), seq_edit_split_operation_permitted_check(), SeqTransInfo(), sequencer_mute_exec(), sequencer_offset_clear_exec(), sequencer_slip_strips(), sequencer_snap_exec(), sequencer_swap_exec(), sequencer_unmute_exec(), strip_data_handle_flags_set(), and strip_data_lock_flags_set().
| void SEQ_transform_offset_after_frame | ( | Scene * | scene, |
| ListBase * | seqbase, | ||
| int | delta, | ||
| int | timeline_frame ) |
Move strips and markers (if not locked) that start after timeline_frame by delta frames
| scene | Scene in which strips are located |
| seqbase | ListBase in which strips are located |
| delta | offset in frames to be applied |
| timeline_frame | frame on timeline from where strips are moved |
Definition at line 578 of file strip_transform.cc.
References LISTBASE_FOREACH, SEQ_relations_invalidate_cache_preprocessed(), SEQ_time_left_handle_frame_get(), and SEQ_transform_translate_sequence().
Referenced by SEQ_edit_remove_gaps(), and sequencer_gap_insert_exec().
| bool SEQ_transform_seqbase_isolated_sel_check | ( | ListBase * | seqbase | ) |
Check if the selected seq's reference unselected seq's.
Definition at line 38 of file strip_transform.cc.
References LISTBASE_FOREACH, SELECT, and SEQ_TYPE_EFFECT.
Referenced by sequencer_clipboard_copy_exec(), and sequencer_meta_make_exec().
Definition at line 174 of file strip_transform.cc.
References SEQ_transform_seqbase_shuffle_ex().
Referenced by segment_speed_set_exec(), SEQ_edit_move_strip_to_seqbase(), seq_load_apply_generic_options(), seq_transform_cancel(), SEQ_transform_handle_overlap(), sequencer_clipboard_paste_exec(), sequencer_meta_make_exec(), sequencer_meta_separate_exec(), sequencer_offset_clear_exec(), sequencer_reload_exec(), sequencer_separate_images_exec(), sequencer_snap_exec(), sequencer_swap_exec(), and strip_speed_set_exec().
| bool SEQ_transform_seqbase_shuffle_ex | ( | ListBase * | seqbasep, |
| Sequence * | test, | ||
| Scene * | evil_scene, | ||
| int | channel_delta ) |
Definition at line 135 of file strip_transform.cc.
References BLI_assert, ELEM, LISTBASE_FOREACH, Sequence::machine, max_ii(), SEQ_is_valid_strip_channel(), SEQ_MAX_CHANNELS, SEQ_time_left_handle_frame_get(), SEQ_time_right_handle_frame_get(), SEQ_transform_test_overlap(), SEQ_transform_translate_sequence(), and Sequence::start.
Referenced by SEQ_transform_seqbase_shuffle().
| bool SEQ_transform_seqbase_shuffle_time | ( | blender::Span< Sequence * > | strips_to_shuffle, |
| blender::Span< Sequence * > | time_dependent_strips, | ||
| ListBase * | seqbasep, | ||
| Scene * | evil_scene, | ||
| ListBase * | markers, | ||
| const bool | use_sync_markers ) |
Definition at line 244 of file strip_transform.cc.
References false, blender::Span< T >::is_empty(), LISTBASE_FOREACH, ToolSettings::lock_markers, markers, SELECT, SEQ_offset_animdata(), SEQ_transform_translate_sequence(), shuffle_seq_time_offset_get(), and Scene::toolsettings.
| bool SEQ_transform_seqbase_shuffle_time | ( | blender::Span< Sequence * > | strips_to_shuffle, |
| ListBase * | seqbasep, | ||
| Scene * | evil_scene, | ||
| ListBase * | markers, | ||
| const bool | use_sync_markers ) |
Definition at line 233 of file strip_transform.cc.
References markers, and SEQ_transform_seqbase_shuffle_time().
Referenced by seq_transform_handle_expand_to_fit(), seq_transform_handle_overlap_shuffle(), and SEQ_transform_seqbase_shuffle_time().
| bool SEQ_transform_sequence_can_be_translated | ( | const Sequence * | seq | ) |
Definition at line 77 of file strip_transform.cc.
References SEQ_effect_get_num_inputs(), SEQ_TYPE_EFFECT, and Sequence::type.
Referenced by find_nearest_seq(), flushTransSeq(), freeSeqData(), query_time_dependent_strips_strips(), and sequencer_snap_exec().
| bool SEQ_transform_single_image_check | ( | const 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).
Definition at line 33 of file strip_transform.cc.
References Sequence::flag, and SEQ_SINGLE_FRAME_CONTENT.
Referenced by SEQ_give_frame_index(), SEQ_time_left_handle_frame_set(), and strip_draw_context_get().
Definition at line 91 of file strip_transform.cc.
References ListBase::first, Sequence::next, and SEQ_transform_test_overlap_seq_seq().
Referenced by flushTransSeq(), recalcData_sequencer_retiming(), segment_speed_set_exec(), SEQ_edit_move_strip_to_seqbase(), seq_load_apply_generic_options(), seq_load_apply_generic_options_only_test_overlap(), seq_transform_cancel(), SEQ_transform_handle_overlap(), SEQ_transform_seqbase_shuffle_ex(), sequencer_clipboard_paste_exec(), sequencer_meta_make_exec(), sequencer_meta_separate_exec(), sequencer_offset_clear_exec(), sequencer_reload_exec(), sequencer_separate_images_exec(), sequencer_snap_exec(), sequencer_swap_exec(), strip_speed_set_exec(), and update_overlay_strip_position_data().
Definition at line 82 of file strip_transform.cc.
References Sequence::machine, SEQ_time_left_handle_frame_get(), and SEQ_time_right_handle_frame_get().
Referenced by query_overwrite_targets(), and SEQ_transform_test_overlap().
Definition at line 106 of file strip_transform.cc.
References BLI_listbase_is_empty(), Sequence::enddisp, LISTBASE_FOREACH, Sequence::seq1, Sequence::seq2, SEQ_offset_animdata(), seq_sequence_lookup_effects_by_seq(), seq_sequence_lookup_meta_by_seq(), SEQ_time_left_handle_frame_get(), SEQ_time_right_handle_frame_get(), seq_time_translate_handles(), seq_time_update_effects_strip_range(), SEQ_time_update_meta_strip_range(), SEQ_transform_translate_sequence(), SEQ_TYPE_META, Sequence::seqbase, Sequence::start, Sequence::startdisp, and Sequence::type.
Referenced by flushTransSeq(), SEQ_transform_offset_after_frame(), SEQ_transform_seqbase_shuffle_ex(), SEQ_transform_seqbase_shuffle_time(), SEQ_transform_translate_sequence(), sequencer_clipboard_paste_exec(), sequencer_snap_exec(), and swap_sequence().
|
static |
Definition at line 179 of file strip_transform.cc.
References BLI_assert, Sequence::machine, SEQ_time_left_handle_frame_get(), and SEQ_time_right_handle_frame_get().
Referenced by shuffle_seq_time_offset_get().
|
static |
Definition at line 192 of file strip_transform.cc.
References blender::Span< T >::contains(), LISTBASE_FOREACH, max_ii(), min_ii(), SEQ_relation_is_effect_of_strip(), SEQ_time_left_handle_frame_get(), SEQ_time_right_handle_frame_get(), and shuffle_seq_test_overlap().
Referenced by SEQ_transform_seqbase_shuffle_time().