Files
test/source/blender/sequencer/intern/strip_time.hh
Richard Antalik 3fccfe0bc6 VSE: Use C++ containers for strip iteration
Use `VectorSet`, `Vector` or `Span` instead of `SeqCollection` struct.
It is now possible to use native `for` loops and `SEQ_ITERATOR_FOREACH`
macro can be removed.

Another feature is, sets of strips no longer needs to be freed. However,
this poses a limitation, that query functions can not be used in case,
where these sets need to be available outside of scope where they are
created.

Pull Request: https://projects.blender.org/blender/blender/pulls/111909
2023-11-06 01:36:44 +01:00

51 lines
1.9 KiB
C++

/* SPDX-FileCopyrightText: 2004 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#include <BLI_span.hh>
/** \file
* \ingroup sequencer
*/
struct ListBase;
struct Scene;
struct Sequence;
struct SeqCollection;
void seq_update_sound_bounds_recursive(const struct Scene *scene, struct Sequence *metaseq);
/* Describes gap between strips in timeline. */
typedef struct GapInfo {
int gap_start_frame; /* Start frame of the gap. */
int gap_length; /* Length of the gap. */
bool gap_exists; /* False if there are no gaps. */
} GapInfo;
/**
* Find first gap between strips after initial_frame and describe it by filling data of r_gap_info
*
* \param scene: Scene in which strips are located.
* \param seqbase: ListBase in which strips are located.
* \param initial_frame: frame on timeline from where gaps are searched for.
* \param r_gap_info: data structure describing gap, that will be filled in by this function.
*/
void seq_time_gap_info_get(const struct Scene *scene,
struct ListBase *seqbase,
int initial_frame,
struct GapInfo *r_gap_info);
void seq_time_effect_range_set(const struct Scene *scene, Sequence *seq);
/**
* Update strip `startdisp` and `enddisp` (n-input effects have no length to calculate these).
*/
void seq_time_update_effects_strip_range(const struct Scene *scene,
blender::Span<Sequence *> &effects);
void seq_time_translate_handles(const struct Scene *scene, struct Sequence *seq, const int offset);
float seq_time_media_playback_rate_factor_get(const struct Scene *scene,
const struct Sequence *seq);
int seq_time_strip_original_content_length_get(const struct Scene *scene,
const struct Sequence *seq);
float seq_retiming_evaluate(const struct Sequence *seq, const float frame_index);