VSE: Add retiming operator macros
Add retiming_add_freeze_frame_slide and retiming_add_transition_slide operator macros to move keys after adding, instead of using fixed duration.
This commit is contained in:
parent
a86ed166d7
commit
daa0219a57
|
@ -946,9 +946,9 @@ class SEQUENCER_MT_strip_retiming(Menu):
|
|||
layout = self.layout
|
||||
|
||||
layout.operator("sequencer.retiming_key_add")
|
||||
layout.operator("sequencer.retiming_freeze_frame_add")
|
||||
layout.operator("sequencer.retiming_add_freeze_frame_slide")
|
||||
col = layout.column()
|
||||
col.operator("sequencer.retiming_transition_add")
|
||||
col.operator("sequencer.retiming_add_transition_slide")
|
||||
col.enabled = is_retiming
|
||||
|
||||
layout.separator()
|
||||
|
@ -1112,7 +1112,7 @@ class SEQUENCER_MT_retiming(Menu):
|
|||
layout.operator_context = 'INVOKE_REGION_WIN'
|
||||
|
||||
layout.operator("sequencer.retiming_key_add")
|
||||
layout.operator("sequencer.retiming_freeze_frame_add")
|
||||
layout.operator("sequencer.retiming_add_freeze_frame_slide")
|
||||
|
||||
|
||||
class SEQUENCER_MT_context_menu(Menu):
|
||||
|
@ -1219,8 +1219,8 @@ class SEQUENCER_MT_context_menu(Menu):
|
|||
layout.operator_context = 'INVOKE_REGION_WIN'
|
||||
|
||||
if context.scene.sequence_editor.selected_retiming_keys:
|
||||
layout.operator("sequencer.retiming_freeze_frame_add")
|
||||
layout.operator("sequencer.retiming_transition_add")
|
||||
layout.operator("sequencer.retiming_add_freeze_frame_slide")
|
||||
layout.operator("sequencer.retiming_add_transition_slide")
|
||||
layout.separator()
|
||||
|
||||
layout.operator("sequencer.retiming_segment_speed_set")
|
||||
|
|
|
@ -146,4 +146,19 @@ void ED_operatormacros_sequencer()
|
|||
|
||||
WM_operatortype_macro_define(ot, "SEQUENCER_OT_duplicate");
|
||||
WM_operatortype_macro_define(ot, "TRANSFORM_OT_seq_slide");
|
||||
|
||||
ot = WM_operatortype_append_macro("SEQUENCER_OT_retiming_add_freeze_frame_slide",
|
||||
"Add Freeze Frame And Slide",
|
||||
"Add freeze frame and move it",
|
||||
OPTYPE_UNDO | OPTYPE_REGISTER);
|
||||
WM_operatortype_macro_define(ot, "SEQUENCER_OT_retiming_freeze_frame_add");
|
||||
WM_operatortype_macro_define(ot, "TRANSFORM_OT_seq_slide");
|
||||
|
||||
ot = WM_operatortype_append_macro(
|
||||
"SEQUENCER_OT_retiming_add_transition_slide",
|
||||
"Add Speed Transition And Slide",
|
||||
"Add smooth transition between 2 retimed segments and change its duration",
|
||||
OPTYPE_UNDO | OPTYPE_REGISTER);
|
||||
WM_operatortype_macro_define(ot, "SEQUENCER_OT_retiming_transition_add");
|
||||
WM_operatortype_macro_define(ot, "TRANSFORM_OT_seq_slide");
|
||||
}
|
||||
|
|
|
@ -340,6 +340,9 @@ static bool freeze_frame_add_new_for_seq(const bContext *C,
|
|||
return false;
|
||||
}
|
||||
|
||||
ED_sequencer_deselect_all(scene);
|
||||
SEQ_retiming_selection_append(freeze);
|
||||
|
||||
SEQ_relations_invalidate_cache_raw(scene, seq);
|
||||
return true;
|
||||
}
|
||||
|
@ -380,8 +383,7 @@ static int sequencer_retiming_freeze_frame_add_exec(bContext *C, wmOperator *op)
|
|||
Scene *scene = CTX_data_scene(C);
|
||||
bool success = false;
|
||||
|
||||
const float fps = scene->r.frs_sec / scene->r.frs_sec_base;
|
||||
int duration = 4 * fps;
|
||||
int duration = 1;
|
||||
|
||||
if (RNA_property_is_set(op->ptr, RNA_struct_find_property(op->ptr, "duration"))) {
|
||||
duration = RNA_int_get(op->ptr, "duration");
|
||||
|
@ -458,6 +460,9 @@ static bool transition_add_new_for_seq(const bContext *C,
|
|||
return false;
|
||||
}
|
||||
|
||||
ED_sequencer_deselect_all(scene);
|
||||
SEQ_retiming_selection_append(transition);
|
||||
|
||||
SEQ_relations_invalidate_cache_raw(scene, seq);
|
||||
return true;
|
||||
}
|
||||
|
@ -481,8 +486,7 @@ static int sequencer_retiming_transition_add_exec(bContext *C, wmOperator *op)
|
|||
Scene *scene = CTX_data_scene(C);
|
||||
bool success = false;
|
||||
|
||||
const float fps = scene->r.frs_sec / scene->r.frs_sec_base;
|
||||
int duration = 4 * fps;
|
||||
int duration = 1;
|
||||
|
||||
if (RNA_property_is_set(op->ptr, RNA_struct_find_property(op->ptr, "duration"))) {
|
||||
duration = RNA_int_get(op->ptr, "duration");
|
||||
|
|
|
@ -527,7 +527,7 @@ SeqRetimingKey *SEQ_retiming_add_freeze_frame(const Scene *scene,
|
|||
|
||||
/* Tag previous key as freeze frame key. This is only a convenient way to prevent creating
|
||||
* speed transitions. When freeze frame is deleted, this flag should be cleared. */
|
||||
return new_key;
|
||||
return new_key + 1;
|
||||
}
|
||||
|
||||
SeqRetimingKey *SEQ_retiming_add_transition(const Scene *scene,
|
||||
|
@ -567,7 +567,7 @@ SeqRetimingKey *SEQ_retiming_add_transition(const Scene *scene,
|
|||
transition_in->original_retiming_factor = orig_retiming_factor;
|
||||
|
||||
seq_retiming_remove_key_ex(seq, seq->retiming_keys + orig_key_index + 1);
|
||||
return seq->retiming_keys + orig_key_index;
|
||||
return seq->retiming_keys + orig_key_index + 1;
|
||||
}
|
||||
|
||||
float SEQ_retiming_key_speed_get(const Sequence *seq, const SeqRetimingKey *key)
|
||||
|
|
Loading…
Reference in New Issue