Blender  V3.3
Typedefs | Enumerations | Functions | Variables
strip_transform.c File Reference
#include "DNA_scene_types.h"
#include "DNA_sequence_types.h"
#include "BLI_listbase.h"
#include "BLI_math.h"
#include "BKE_main.h"
#include "BKE_scene.h"
#include "BKE_sound.h"
#include "SEQ_animation.h"
#include "SEQ_channels.h"
#include "SEQ_edit.h"
#include "SEQ_effects.h"
#include "SEQ_iterator.h"
#include "SEQ_relations.h"
#include "SEQ_sequencer.h"
#include "SEQ_time.h"
#include "SEQ_transform.h"
#include "sequencer.h"
#include "strip_time.h"
#include "CLG_log.h"

Go to the source code of this file.

Typedefs

typedef enum eOvelapDescrition eOvelapDescrition
 

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 (Sequence *seq)
 
bool SEQ_transform_seqbase_isolated_sel_check (ListBase *seqbase)
 
void SEQ_transform_fix_single_image_seq_offsets (const Scene *scene, Sequence *seq)
 
bool SEQ_transform_sequence_can_be_translated (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, SeqCollection *strips_to_shuffle, ListBase *seqbasep, char dir)
 
bool SEQ_transform_seqbase_shuffle_time (SeqCollection *strips_to_shuffle, SeqCollection *time_dependent_strips, ListBase *seqbasep, Scene *evil_scene, ListBase *markers, const bool use_sync_markers)
 
static SeqCollectionextract_standalone_strips (SeqCollection *transformed_strips)
 
static SeqCollectionquery_right_side_strips (const Scene *scene, ListBase *seqbase, SeqCollection *transformed_strips, SeqCollection *time_dependent_strips)
 
static void seq_transform_handle_expand_to_fit (Scene *scene, ListBase *seqbasep, SeqCollection *transformed_strips, SeqCollection *time_dependent_strips, bool use_sync_markers)
 
static SeqCollectionquery_overwrite_targets (const Scene *scene, ListBase *seqbasep, SeqCollection *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, SeqCollection *transformed_strips)
 
static void seq_transform_handle_overlap_shuffle (Scene *scene, ListBase *seqbasep, SeqCollection *transformed_strips, SeqCollection *time_dependent_strips, bool use_sync_markers)
 
void SEQ_transform_handle_overlap (Scene *scene, ListBase *seqbasep, SeqCollection *transformed_strips, SeqCollection *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, 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, SeqCollection *strips, bool apply_rotation, float r_min[2], float r_max[2])
 

Variables

static CLG_LogRef LOG = {"seq.strip_transform"}
 

Typedef Documentation

◆ eOvelapDescrition

Enumeration Type Documentation

◆ eOvelapDescrition

Enumerator
STRIP_OVERLAP_NONE 
STRIP_OVERLAP_IS_FULL 
STRIP_OVERLAP_IS_INSIDE 
STRIP_OVERLAP_LEFT_SIDE 
STRIP_OVERLAP_RIGHT_SIDE 

Definition at line 412 of file strip_transform.c.

Function Documentation

◆ extract_standalone_strips()

static SeqCollection* extract_standalone_strips ( SeqCollection transformed_strips)
static

◆ overlap_description_get()

static eOvelapDescrition overlap_description_get ( const Scene scene,
const Sequence transformed,
const Sequence target 
)
static

◆ query_overwrite_targets()

static SeqCollection* query_overwrite_targets ( const Scene scene,
ListBase seqbasep,
SeqCollection transformed_strips 
)
static

◆ query_right_side_strips()

static SeqCollection* query_right_side_strips ( const Scene scene,
ListBase seqbase,
SeqCollection transformed_strips,
SeqCollection time_dependent_strips 
)
static

◆ SEQ_image_preview_unit_from_px()

void SEQ_image_preview_unit_from_px ( const Scene scene,
const float  co_src[2],
float  co_dst[2] 
)

Definition at line 750 of file strip_transform.c.

References Scene::r, scene, RenderData::xsch, and RenderData::ysch.

Referenced by sequencer_set_2d_cursor_exec().

◆ SEQ_image_preview_unit_to_px()

void SEQ_image_preview_unit_to_px ( const Scene scene,
const float  co_src[2],
float  co_dst[2] 
)

◆ SEQ_image_transform_bounding_box_from_collection()

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] 
)

Get viewport axis aligned bounding box from a collection of sequences. The collection must have one or more strips

Parameters
sceneScene in which strips are located
stripsCollection of strips to get the bounding box from
apply_rotationInclude sequence rotation transform in the bounding box calculation
r_minMinimum x and y values
r_maxMaximum x and y values

Definition at line 756 of file strip_transform.c.

References INIT_MINMAX2, minmax_v2v2_v2(), quad, scene, SEQ_image_transform_quad_get(), and SEQ_ITERATOR_FOREACH.

Referenced by gizmo2d_calc_bounds(), and seq_view_collection_rect_preview().

◆ SEQ_image_transform_final_quad_get()

void SEQ_image_transform_final_quad_get ( const Scene scene,
const Sequence seq,
float  r_quad[4][2] 
)

◆ SEQ_image_transform_mirror_factor_get()

void SEQ_image_transform_mirror_factor_get ( const Sequence seq,
float  r_mirror[2] 
)

◆ SEQ_image_transform_origin_offset_pixelspace_get()

void SEQ_image_transform_origin_offset_pixelspace_get ( const Scene scene,
const Sequence seq,
float  r_origin[2] 
)

◆ SEQ_image_transform_quad_get()

void SEQ_image_transform_quad_get ( const Scene scene,
const Sequence seq,
bool  apply_rotation,
float  r_quad[4][2] 
)

◆ seq_image_transform_quad_get_ex()

static void seq_image_transform_quad_get_ex ( const Scene scene,
const Sequence seq,
bool  apply_rotation,
float  r_quad[4][2] 
)
static

◆ SEQ_transform_fix_single_image_seq_offsets()

void SEQ_transform_fix_single_image_seq_offsets ( const Scene scene,
Sequence seq 
)

◆ seq_transform_handle_expand_to_fit()

static void seq_transform_handle_expand_to_fit ( Scene scene,
ListBase seqbasep,
SeqCollection transformed_strips,
SeqCollection time_dependent_strips,
bool  use_sync_markers 
)
static

◆ SEQ_transform_handle_overlap()

void SEQ_transform_handle_overlap ( Scene scene,
ListBase seqbasep,
SeqCollection transformed_strips,
SeqCollection time_dependent_strips,
bool  use_sync_markers 
)

◆ seq_transform_handle_overlap_shuffle()

static void seq_transform_handle_overlap_shuffle ( Scene scene,
ListBase seqbasep,
SeqCollection transformed_strips,
SeqCollection time_dependent_strips,
bool  use_sync_markers 
)
static

◆ seq_transform_handle_overwrite()

static void seq_transform_handle_overwrite ( Scene scene,
ListBase seqbasep,
SeqCollection transformed_strips 
)
static

◆ seq_transform_handle_overwrite_split()

static void seq_transform_handle_overwrite_split ( Scene scene,
ListBase seqbasep,
const Sequence transformed,
Sequence target 
)
static

◆ seq_transform_handle_overwrite_trim()

static void seq_transform_handle_overwrite_trim ( Scene scene,
ListBase seqbasep,
const Sequence transformed,
Sequence target,
const eOvelapDescrition  overlap 
)
static

◆ SEQ_transform_is_locked()

bool SEQ_transform_is_locked ( struct ListBase channels,
struct Sequence seq 
)

◆ SEQ_transform_offset_after_frame()

void SEQ_transform_offset_after_frame ( struct Scene scene,
struct ListBase seqbase,
int  delta,
int  timeline_frame 
)

Move strips and markers (if not locked) that start after timeline_frame by delta frames

Parameters
sceneScene in which strips are located
seqbaseListBase in which strips are located
deltaoffset in frames to be applied
timeline_frameframe on timeline from where strips are moved

Definition at line 609 of file strip_transform.c.

References LISTBASE_FOREACH, ToolSettings::lock_markers, Scene::markers, scene, SEQ_relations_invalidate_cache_preprocessed(), SEQ_time_left_handle_frame_get(), SEQ_transform_translate_sequence(), and Scene::toolsettings.

Referenced by SEQ_edit_remove_gaps(), and sequencer_gap_insert_exec().

◆ SEQ_transform_seqbase_isolated_sel_check()

bool SEQ_transform_seqbase_isolated_sel_check ( struct ListBase seqbase)

Check if the selected seq's reference unselected seq's.

Definition at line 44 of file strip_transform.c.

References ListBase::first, Sequence::flag, Sequence::next, SELECT, Sequence::seq1, Sequence::seq2, Sequence::seq3, SEQ_TYPE_EFFECT, and Sequence::type.

Referenced by sequencer_copy_exec(), and sequencer_meta_make_exec().

◆ SEQ_transform_seqbase_shuffle()

bool SEQ_transform_seqbase_shuffle ( ListBase seqbasep,
Sequence test,
Scene evil_scene 
)

◆ SEQ_transform_seqbase_shuffle_ex()

bool SEQ_transform_seqbase_shuffle_ex ( struct ListBase seqbasep,
struct Sequence test,
struct Scene evil_scene,
int  channel_delta 
)

◆ SEQ_transform_seqbase_shuffle_time()

bool SEQ_transform_seqbase_shuffle_time ( SeqCollection strips_to_shuffle,
SeqCollection time_dependent_strips,
ListBase seqbasep,
Scene evil_scene,
ListBase markers,
const bool  use_sync_markers 
)

◆ SEQ_transform_sequence_can_be_translated()

bool SEQ_transform_sequence_can_be_translated ( Sequence seq)

◆ SEQ_transform_single_image_check()

bool SEQ_transform_single_image_check ( struct 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 37 of file strip_transform.c.

References Sequence::len, SEQ_effect_get_num_inputs(), SEQ_TYPE_EFFECT, SEQ_TYPE_IMAGE, and Sequence::type.

Referenced by draw_seq_strip(), and SEQ_transform_fix_single_image_seq_offsets().

◆ SEQ_transform_test_overlap()

bool SEQ_transform_test_overlap ( const Scene scene,
ListBase seqbasep,
Sequence test 
)

◆ SEQ_transform_test_overlap_seq_seq()

bool SEQ_transform_test_overlap_seq_seq ( const Scene scene,
Sequence seq1,
Sequence seq2 
)

◆ SEQ_transform_translate_sequence()

void SEQ_transform_translate_sequence ( Scene evil_scene,
Sequence seq,
int  delta 
)

◆ shuffle_seq_test_overlap()

static bool shuffle_seq_test_overlap ( const Scene scene,
const Sequence seq1,
const Sequence seq2,
const int  offset 
)
static

◆ shuffle_seq_time_offset_get()

static int shuffle_seq_time_offset_get ( const Scene scene,
SeqCollection strips_to_shuffle,
ListBase seqbasep,
char  dir 
)
static

Variable Documentation

◆ LOG

CLG_LogRef LOG = {"seq.strip_transform"}
static

Definition at line 35 of file strip_transform.c.

Referenced by shuffle_seq_time_offset_get().