Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Fog <tintwotin>2021-03-20 03:21:07 +0300
committerRichard Antalik <richardantalik@gmail.com>2021-03-20 03:40:53 +0300
commit3d9ee83d88186248fb66823662a04d1a0429e1ae (patch)
tree48c3d67a57453234f58469760828c7e78e76a7af /source/blender/editors
parent1c095203c275f84e6b024e09203ca228d19b8070 (diff)
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
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/space_sequencer/sequencer_draw.c38
1 files changed, 36 insertions, 2 deletions
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);
}