VSE: Preview images when moving strip handles
Add option to override current frame whem transforming strip handles. Option can be found in View menu of VSE preview, or in timeline when using backdrop. Reviewed By: ISS Differential Revision: https://developer.blender.org/D10424
This commit is contained in:
parent
1c095203c2
commit
3d9ee83d88
Notes:
blender-bot
2023-02-14 11:00:17 +01:00
Referenced by commit ee07bfa3a0
, Fix crash transforming sequences
|
@ -352,8 +352,12 @@ class SEQUENCER_MT_view(Menu):
|
|||
if is_sequencer_view:
|
||||
layout.prop(st, "show_region_hud")
|
||||
|
||||
layout.separator()
|
||||
|
||||
if st.view_type == 'SEQUENCER':
|
||||
layout.prop(st, "show_backdrop", text="Preview as Backdrop")
|
||||
if is_preview or st.show_backdrop:
|
||||
layout.prop(st, "show_transform_preview", text="Preview During Transform")
|
||||
|
||||
layout.separator()
|
||||
|
||||
|
@ -724,6 +728,7 @@ class SEQUENCER_MT_strip_image_transform(Menu):
|
|||
layout.operator("sequencer.strip_transform_clear", text="Clear Rotation").property = 'ROTATION'
|
||||
layout.operator("sequencer.strip_transform_clear", text="Clear All").property = 'ALL'
|
||||
|
||||
|
||||
class SEQUENCER_MT_strip_transform(Menu):
|
||||
bl_label = "Transform"
|
||||
|
||||
|
|
|
@ -1818,6 +1818,30 @@ static ImBuf *sequencer_get_scope(Scene *scene, SpaceSeq *sseq, ImBuf *ibuf, boo
|
|||
return scope;
|
||||
}
|
||||
|
||||
static bool sequencer_draw_get_transform_preview(SpaceSeq *sseq, Scene *scene)
|
||||
{
|
||||
Sequence *last_seq = SEQ_select_active_get(scene);
|
||||
|
||||
return (G.moving & G_TRANSFORM_SEQ) && (last_seq->flag & SELECT) &&
|
||||
((last_seq->flag & SEQ_LEFTSEL) || (last_seq->flag & SEQ_RIGHTSEL)) &&
|
||||
(sseq->draw_flag & SEQ_DRAW_TRANSFORM_PREVIEW);
|
||||
}
|
||||
|
||||
static int sequencer_draw_get_transform_preview_frame(Scene *scene)
|
||||
{
|
||||
Sequence *last_seq = SEQ_select_active_get(scene);
|
||||
int preview_frame;
|
||||
|
||||
if (last_seq->flag & SEQ_RIGHTSEL) {
|
||||
preview_frame = last_seq->enddisp - 1;
|
||||
}
|
||||
else {
|
||||
preview_frame = last_seq->startdisp;
|
||||
}
|
||||
|
||||
return preview_frame;
|
||||
}
|
||||
|
||||
void sequencer_draw_preview(const bContext *C,
|
||||
Scene *scene,
|
||||
ARegion *region,
|
||||
|
@ -1842,9 +1866,14 @@ void sequencer_draw_preview(const bContext *C,
|
|||
return;
|
||||
}
|
||||
|
||||
int preview_frame = timeline_frame;
|
||||
if (sequencer_draw_get_transform_preview(sseq, scene)) {
|
||||
preview_frame = sequencer_draw_get_transform_preview_frame(scene);
|
||||
}
|
||||
|
||||
/* Get image. */
|
||||
ibuf = sequencer_ibuf_get(
|
||||
bmain, region, depsgraph, scene, sseq, timeline_frame, offset, names[sseq->multiview_eye]);
|
||||
bmain, region, depsgraph, scene, sseq, preview_frame, offset, names[sseq->multiview_eye]);
|
||||
|
||||
/* Setup off-screen buffers. */
|
||||
GPUViewport *viewport = WM_draw_region_get_viewport(region);
|
||||
|
@ -2356,7 +2385,12 @@ void draw_timeline_seq(const bContext *C, ARegion *region)
|
|||
|
||||
/* Only draw backdrop in timeline view. */
|
||||
if (sseq->view == SEQ_VIEW_SEQUENCE && sseq->draw_flag & SEQ_DRAW_BACKDROP) {
|
||||
sequencer_draw_preview(C, scene, region, sseq, scene->r.cfra, 0, false, true);
|
||||
int preview_frame = scene->r.cfra;
|
||||
if (sequencer_draw_get_transform_preview(sseq, scene)) {
|
||||
preview_frame = sequencer_draw_get_transform_preview_frame(scene);
|
||||
}
|
||||
|
||||
sequencer_draw_preview(C, scene, region, sseq, preview_frame, 0, false, true);
|
||||
UI_view2d_view_ortho(v2d);
|
||||
}
|
||||
|
||||
|
|
|
@ -626,6 +626,7 @@ typedef enum eSpaceSeq_RegionType {
|
|||
typedef enum eSpaceSeq_DrawFlag {
|
||||
SEQ_DRAW_BACKDROP = (1 << 0),
|
||||
SEQ_DRAW_OFFSET_EXT = (1 << 1),
|
||||
SEQ_DRAW_TRANSFORM_PREVIEW = (1 << 2),
|
||||
} eSpaceSeq_DrawFlag;
|
||||
|
||||
/* SpaceSeq.flag */
|
||||
|
|
|
@ -5434,6 +5434,11 @@ static void rna_def_space_sequencer(BlenderRNA *brna)
|
|||
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_SHOW_STRIP_DURATION);
|
||||
RNA_def_property_ui_text(prop, "Show Duration", "");
|
||||
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_SEQUENCER, NULL);
|
||||
|
||||
prop = RNA_def_property(srna, "show_transform_preview", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "draw_flag", SEQ_DRAW_TRANSFORM_PREVIEW);
|
||||
RNA_def_property_ui_text(prop, "Transform Preview", "Show preview of the transformed frames");
|
||||
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_SEQUENCER, NULL);
|
||||
}
|
||||
|
||||
static void rna_def_space_text(BlenderRNA *brna)
|
||||
|
|
Loading…
Reference in New Issue