diff options
-rw-r--r-- | release/scripts/startup/bl_ui/space_sequencer.py | 5 | ||||
-rw-r--r-- | source/blender/editors/space_sequencer/sequencer_draw.c | 38 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_space_types.h | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_space.c | 5 |
4 files changed, 47 insertions, 2 deletions
diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py index f7abbeca0b1..591cff820fe 100644 --- a/release/scripts/startup/bl_ui/space_sequencer.py +++ b/release/scripts/startup/bl_ui/space_sequencer.py @@ -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" diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index 3249eae8c7f..63449193cba 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -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); } diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h index 755010cd8a5..c170e711756 100644 --- a/source/blender/makesdna/DNA_space_types.h +++ b/source/blender/makesdna/DNA_space_types.h @@ -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 */ diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 730a272d250..8c54c48fbe5 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -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) |