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
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
-rw-r--r--release/scripts/startup/bl_ui/space_sequencer.py5
-rw-r--r--source/blender/editors/space_sequencer/sequencer_draw.c38
-rw-r--r--source/blender/makesdna/DNA_space_types.h1
-rw-r--r--source/blender/makesrna/intern/rna_space.c5
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)