39 return ((seq->
len == 1) &&
50 for (seq = seqbase->
first; seq; seq = seq->
next) {
62 for (seq = seqbase->
first; seq; seq = seq->
next) {
124 seq = seqbasep->
first;
146 for (seq_child = seq->
seqbase.
first; seq_child; seq_child = seq_child->
next) {
170 const int orig_machine = test->
machine;
173 test->
machine += channel_delta;
179 test->
machine += channel_delta;
189 for (seq = seqbasep->
first; seq; seq = seq->
next) {
190 if (seq->
machine == orig_machine) {
229 bool all_conflicts_resolved =
false;
231 while (!all_conflicts_resolved) {
232 all_conflicts_resolved =
true;
243 "Strip overlaps with itself or another strip, that is to be shuffled. "
244 "This should never happen.");
248 all_conflicts_resolved =
false;
272 const bool use_sync_markers)
276 int offset = (-offset_l < offset_r) ? offset_l : offset_r;
285 if (time_dependent_strips !=
NULL) {
294 for (marker =
markers->first; marker; marker = marker->
next) {
302 return offset ? false :
true;
353 bool use_sync_markers)
358 scene, seqbasep, transformed_strips, time_dependent_strips);
370 standalone_strips, time_dependent_strips, seqbasep,
scene,
markers, use_sync_markers);
392 bool does_overlap =
false;
396 if (seq == seq_transformed) {
565 bool use_sync_markers)
572 standalone_strips, time_dependent_strips, seqbasep,
scene,
markers, use_sync_markers);
580 bool use_sync_markers)
584 switch (overlap_mode) {
587 scene, seqbasep, transformed_strips, time_dependent_strips, use_sync_markers);
594 scene, seqbasep, transformed_strips, time_dependent_strips, use_sync_markers);
612 const int timeline_frame)
623 if (marker->frame >= timeline_frame) {
624 marker->frame += delta;
656 if (strip_elem ==
NULL) {
666 r_origin[0] = (image_size[0] *
transform->origin[0]) - (image_size[0] * 0.5f) +
transform->xofs;
667 r_origin[1] = (image_size[1] *
transform->origin[1]) - (image_size[1] * 0.5f) +
transform->yofs;
673 mul_v2_v2(r_origin, viewport_pixel_aspect);
690 float transform_matrix[4][4];
691 float rotation_matrix[3][3];
697 const float origin[2] = {image_size[0] *
transform->origin[0],
699 const float pivot[3] = {origin[0] - (image_size[0] / 2), origin[1] - (image_size[1] / 2), 0.0f};
702 float quad_temp[4][3];
703 for (
int i = 0; i < 4; i++) {
707 quad_temp[0][0] = (image_size[0] / 2) - crop->
right;
708 quad_temp[0][1] = (image_size[1] / 2) - crop->
top;
709 quad_temp[1][0] = (image_size[0] / 2) - crop->
right;
710 quad_temp[1][1] = (-image_size[1] / 2) + crop->
bottom;
711 quad_temp[2][0] = (-image_size[0] / 2) + crop->
left;
712 quad_temp[2][1] = (-image_size[1] / 2) + crop->
bottom;
713 quad_temp[3][0] = (-image_size[0] / 2) + crop->
left;
714 quad_temp[3][1] = (image_size[1] / 2) - crop->
top;
721 for (
int i = 0; i < 4; i++) {
722 mul_m4_v3(transform_matrix, quad_temp[i]);
724 mul_v2_v2(quad_temp[i], viewport_pixel_aspect);
765 for (
int i = 0; i < 4; i++) {
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
MINLINE int min_ii(int a, int b)
MINLINE int max_ii(int a, int b)
void loc_rot_size_to_mat4(float R[4][4], const float loc[3], const float rot[3][3], const float size[3])
void transform_pivot_set_m4(float mat[4][4], const float pivot[3])
void mul_m4_v3(const float M[4][4], float r[3])
void axis_angle_to_mat3_single(float R[3][3], char axis, float angle)
MINLINE void mul_v2_v2(float r[2], const float a[2])
MINLINE void copy_v2_v2(float r[2], const float a[2])
void minmax_v2v2_v2(float min[2], float max[2], const float vec[2])
MINLINE void zero_v2(float r[2])
#define INIT_MINMAX2(min, max)
#define CLOG_WARN(clg_ref,...)
@ SEQ_IGNORE_CHANNEL_LOCK
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert a producing a negative Combine Generate a color from its and blue channels(Deprecated)") DefNode(ShaderNode
#define SEQ_ITERATOR_FOREACH(var, collection)
void SEQ_offset_animdata(Scene *scene, Sequence *seq, int ofs)
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
SeqTimelineChannel * SEQ_channel_get_by_index(const ListBase *channels, const int channel_index)
bool SEQ_channel_is_locked(const SeqTimelineChannel *channel)
int SEQ_effect_get_num_inputs(int seq_type)
const vector< Marker > & markers
SeqCollection * SEQ_query_by_reference(Sequence *seq_reference, const Scene *scene, ListBase *seqbase, void seq_query_func(const Scene *scene, Sequence *seq_reference, ListBase *seqbase, SeqCollection *collection))
uint SEQ_collection_len(const SeqCollection *collection)
void SEQ_query_strip_effect_chain(const Scene *scene, Sequence *seq_reference, ListBase *seqbase, SeqCollection *collection)
void SEQ_collection_expand(const Scene *scene, ListBase *seqbase, SeqCollection *collection, void seq_query_func(const Scene *scene, Sequence *seq_reference, ListBase *seqbase, SeqCollection *collection))
bool SEQ_collection_remove_strip(Sequence *seq, SeqCollection *collection)
SeqCollection * SEQ_collection_create(const char *name)
bool SEQ_collection_append_strip(Sequence *seq, SeqCollection *collection)
SeqCollection * SEQ_query_unselected_strips(ListBase *seqbase)
bool SEQ_collection_has_strip(const Sequence *seq, const SeqCollection *collection)
void SEQ_collection_free(SeqCollection *collection)
ccl_gpu_kernel_postfix ccl_global float int int int int float bool int offset
SeqCollection * seq_sequence_lookup_effects_by_seq(const Scene *scene, const Sequence *key)
Sequence * seq_sequence_lookup_meta_by_seq(const Scene *scene, const Sequence *key)
eSeqOverlapMode SEQ_tool_settings_overlap_mode_get(Scene *scene)
bool SEQ_valid_strip_channel(Sequence *seq)
void SEQ_edit_flag_for_removal(Scene *scene, ListBase *seqbase, Sequence *seq)
Sequence * SEQ_edit_strip_split(Main *bmain, Scene *scene, ListBase *seqbase, Sequence *seq, const int timeline_frame, const eSeqSplitMethod method, const char **r_error)
void SEQ_edit_remove_flagged_sequences(Scene *scene, ListBase *seqbase)
bool SEQ_relation_is_effect_of_strip(const Sequence *effect, const Sequence *input)
void SEQ_relations_invalidate_cache_preprocessed(Scene *scene, Sequence *seq)
void SEQ_time_right_handle_frame_set(const Scene *scene, Sequence *seq, int val)
void SEQ_time_update_meta_strip_range(const Scene *scene, Sequence *seq_meta)
void seq_time_update_effects_strip_range(const Scene *scene, SeqCollection *effects)
void seq_time_translate_handles(const Scene *scene, Sequence *seq, const int offset)
int SEQ_time_left_handle_frame_get(const Scene *UNUSED(scene), const Sequence *seq)
void SEQ_time_left_handle_frame_set(const Scene *scene, Sequence *seq, int val)
int SEQ_time_right_handle_frame_get(const Scene *scene, const Sequence *seq)
struct ToolSettings * toolsettings
StripTransform * transform