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:
-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)