Currently retiming is quite awkward, when you need to retime multiple strips strips in sync. It is possible to use meta strips, but this is still not great. This is resolved by implementing selection. General changes: Gizmos are removed, since they are designed to operate only on active strip and don't support selection. Transform operator code is implemented for retiming data, which allows more sophisticated manipulation. Instead of drawing marker-like symbols, keyframes are drawn to represent retiming data. Retiming handles are now called keys. To have consistent names, DNA structures have been renamed. Retiming data is drawn on strip as overlay. UI changes: Retiming tool is removed. To edit retiming data, press Ctrl + R, select a key and move it. When retiming is edited, retiming menu and context menu shows more relevant features, like making transitions. Strip and retiming key selection can not be combined. It is possible to use box select operator to select keys, if any key is selected. Otherwise strips are selected. Adding retiming keys is possible with I shortcut or from menu. Retiming keys are always drawn at strip left and right boundary. These keys do not really exist until they are selected. This is to simplify retiming of strips that are resized. These keys are called "fake keys" in code. API changes: Functions, properties and types related to retiming handles are renamed to retiming keys: retiming_handle_add() -> retiming_key_add() retiming_handle_move() -> retiming_key_move() retiming_handle_remove() -> retiming_key_remove() retiming_handles -> retiming_keys RetimingHandle -> RetimingKey Retiming editing "mode" is activated by setting `Sequence.show_retiming_keys`. Pull Request: https://projects.blender.org/blender/blender/pulls/109044
49 lines
1.4 KiB
C++
49 lines
1.4 KiB
C++
/* SPDX-FileCopyrightText: 2009 Blender Authors
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
/** \file
|
|
* \ingroup editors
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
struct Scene;
|
|
struct Sequence;
|
|
struct SpaceSeq;
|
|
struct bContext;
|
|
|
|
void ED_sequencer_select_sequence_single(Scene *scene, Sequence *seq, bool deselect_all);
|
|
/**
|
|
* Iterates over a scene's sequences and deselects all of them.
|
|
*
|
|
* \param scene: scene containing sequences to be deselected.
|
|
* \return true if any sequences were deselected; false otherwise.
|
|
*/
|
|
bool ED_sequencer_deselect_all(Scene *scene);
|
|
|
|
bool ED_space_sequencer_maskedit_mask_poll(bContext *C);
|
|
bool ED_space_sequencer_check_show_maskedit(SpaceSeq *sseq, Scene *scene);
|
|
bool ED_space_sequencer_maskedit_poll(bContext *C);
|
|
|
|
/**
|
|
* Are we displaying the seq output (not channels or histogram).
|
|
*/
|
|
bool ED_space_sequencer_check_show_imbuf(SpaceSeq *sseq);
|
|
|
|
bool ED_space_sequencer_check_show_strip(SpaceSeq *sseq);
|
|
/**
|
|
* Check if there is animation shown during playback.
|
|
*
|
|
* - Colors of color strips are displayed on the strip itself.
|
|
* - Backdrop is drawn.
|
|
*/
|
|
bool ED_space_sequencer_has_playback_animation(const SpaceSeq *sseq, const Scene *scene);
|
|
|
|
void ED_operatormacros_sequencer();
|
|
|
|
Sequence *ED_sequencer_special_preview_get();
|
|
void ED_sequencer_special_preview_set(bContext *C, const int mval[2]);
|
|
void ED_sequencer_special_preview_clear();
|
|
bool sequencer_retiming_mode_is_active(const struct bContext *C);
|