VSE: Ensure retiming handle at strip right handle
When strip is split it is hard to add new retiming handle to it's end. Ensuring this handle exists greatly improves workflow.
This commit is contained in:
parent
b61316c7ad
commit
438ff8fd04
|
@ -670,7 +670,7 @@ static bool do_versions_sequencer_init_retiming_tool_data(Sequence *seq, void *u
|
|||
|
||||
const int content_length = SEQ_time_strip_length_get(scene, seq);
|
||||
|
||||
SEQ_retiming_data_ensure(seq);
|
||||
SEQ_retiming_data_ensure(scene, seq);
|
||||
|
||||
SeqRetimingHandle *handle = &seq->retiming_handles[seq->retiming_handle_num - 1];
|
||||
handle->strip_frame_index = round_fl_to_int(content_length / seq->speed_factor);
|
||||
|
|
|
@ -429,7 +429,7 @@ static void gizmo_retime_handle_draw(const bContext *C, wmGizmo *gz)
|
|||
immBindBuiltinProgram(GPU_SHADER_3D_UNIFORM_COLOR);
|
||||
|
||||
Sequence *seq = active_seq_from_context(C);
|
||||
SEQ_retiming_data_ensure(seq);
|
||||
SEQ_retiming_data_ensure(CTX_data_scene(C), seq);
|
||||
MutableSpan handles = SEQ_retiming_handles_get(seq);
|
||||
|
||||
for (const SeqRetimingHandle &handle : handles) {
|
||||
|
@ -454,7 +454,7 @@ static int gizmo_retime_handle_test_select(bContext *C, wmGizmo *gz, const int m
|
|||
gizmo->mouse_over_seq = nullptr;
|
||||
|
||||
Sequence *seq = active_seq_from_context(C);
|
||||
SEQ_retiming_data_ensure(seq);
|
||||
SEQ_retiming_data_ensure(scene, seq);
|
||||
const SeqRetimingHandle *handle = mouse_over_handle_get(
|
||||
scene, seq, UI_view2d_fromcontext(C), mval);
|
||||
const int handle_index = SEQ_retiming_handle_index_get(seq, handle);
|
||||
|
@ -531,7 +531,7 @@ static int gizmo_retime_remove_test_select(bContext *C, wmGizmo *gz, const int m
|
|||
Scene *scene = CTX_data_scene(C);
|
||||
Sequence *seq = active_seq_from_context(C);
|
||||
|
||||
SEQ_retiming_data_ensure(seq);
|
||||
SEQ_retiming_data_ensure(scene, seq);
|
||||
const SeqRetimingHandle *handle = mouse_over_handle_get(
|
||||
scene, seq, UI_view2d_fromcontext(C), mval);
|
||||
const int handle_index = SEQ_retiming_handle_index_get(seq, handle);
|
||||
|
@ -690,7 +690,7 @@ static void gizmo_retime_speed_set_draw(const bContext *C, wmGizmo * /* gz */)
|
|||
immBindBuiltinProgram(GPU_SHADER_3D_UNIFORM_COLOR);
|
||||
|
||||
Sequence *seq = active_seq_from_context(C);
|
||||
SEQ_retiming_data_ensure(seq);
|
||||
SEQ_retiming_data_ensure(CTX_data_scene(C), seq);
|
||||
MutableSpan handles = SEQ_retiming_handles_get(seq);
|
||||
|
||||
for (const SeqRetimingHandle &handle : handles) {
|
||||
|
@ -711,7 +711,7 @@ static int gizmo_retime_speed_set_test_select(bContext *C, wmGizmo *gz, const in
|
|||
const View2D *v2d = UI_view2d_fromcontext(C);
|
||||
|
||||
Sequence *seq = active_seq_from_context(C);
|
||||
SEQ_retiming_data_ensure(seq);
|
||||
SEQ_retiming_data_ensure(scene, seq);
|
||||
|
||||
for (const SeqRetimingHandle &handle : SEQ_retiming_handles_get(seq)) {
|
||||
if (SEQ_retiming_handle_is_transition_type(&handle)) {
|
||||
|
|
|
@ -325,7 +325,7 @@ static int sequesequencer_retiming_handle_add_exec(bContext *C, wmOperator *op)
|
|||
const Editing *ed = SEQ_editing_get(scene);
|
||||
Sequence *seq = ed->act_seq;
|
||||
|
||||
SEQ_retiming_data_ensure(seq);
|
||||
SEQ_retiming_data_ensure(scene, seq);
|
||||
|
||||
float timeline_frame;
|
||||
if (RNA_struct_property_is_set(op->ptr, "timeline_frame")) {
|
||||
|
|
|
@ -18,7 +18,7 @@ struct SeqRetimingHandle;
|
|||
|
||||
int SEQ_retiming_handles_count(const struct Sequence *seq);
|
||||
bool SEQ_retiming_is_active(const struct Sequence *seq);
|
||||
void SEQ_retiming_data_ensure(struct Sequence *seq);
|
||||
void SEQ_retiming_data_ensure(const struct Scene *scene, struct Sequence *seq);
|
||||
void SEQ_retiming_data_clear(struct Sequence *seq);
|
||||
bool SEQ_retiming_is_allowed(const struct Sequence *seq);
|
||||
|
||||
|
|
|
@ -88,7 +88,7 @@ int SEQ_retiming_handles_count(const Sequence *seq)
|
|||
return seq->retiming_handle_num;
|
||||
}
|
||||
|
||||
void SEQ_retiming_data_ensure(Sequence *seq)
|
||||
void SEQ_retiming_data_ensure(const Scene *scene, Sequence *seq)
|
||||
{
|
||||
if (!SEQ_retiming_is_allowed(seq)) {
|
||||
return;
|
||||
|
@ -104,6 +104,8 @@ void SEQ_retiming_data_ensure(Sequence *seq)
|
|||
handle->strip_frame_index = seq->len;
|
||||
handle->retiming_factor = 1.0f;
|
||||
seq->retiming_handle_num = 2;
|
||||
|
||||
SEQ_retiming_add_handle(scene, seq, SEQ_time_right_handle_frame_get(scene, seq));
|
||||
}
|
||||
|
||||
void SEQ_retiming_data_clear(Sequence *seq)
|
||||
|
|
Loading…
Reference in New Issue