[Bf-blender-cvs] [fa2c1698b07] master: VSE: Image transform tools
Richard Antalik
noreply at git.blender.org
Tue Sep 21 10:59:03 CEST 2021
Commit: fa2c1698b077f510175e79adf3dbf3e1602b1030
Author: Richard Antalik
Date: Tue Sep 21 09:38:30 2021 +0200
Branches: master
https://developer.blender.org/rBfa2c1698b077f510175e79adf3dbf3e1602b1030
VSE: Image transform tools
Add tools for image manipulation in sequencer preview region.
This includes:
- Translate, rotate and resize operators, tools and gizmos
- Origin for image transformation
- Median point and individual origins pivot modes
- Select and Box select operator works in preview
- Image overlay drawing
ref T90156
Reviewed By: campbellbarton
Differential Revision: https://developer.blender.org/D12105
===================================================================
M release/scripts/presets/keyconfig/keymap_data/blender_default.py
M release/scripts/startup/bl_ui/space_sequencer.py
M release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
M source/blender/blenkernel/BKE_blender_version.h
M source/blender/blenloader/intern/versioning_300.c
M source/blender/blenloader/intern/versioning_defaults.c
M source/blender/editors/animation/anim_ops.c
M source/blender/editors/space_sequencer/sequencer_draw.c
M source/blender/editors/space_sequencer/sequencer_select.c
M source/blender/editors/space_sequencer/space_sequencer.c
M source/blender/editors/transform/CMakeLists.txt
M source/blender/editors/transform/transform.c
M source/blender/editors/transform/transform.h
M source/blender/editors/transform/transform_convert.c
M source/blender/editors/transform/transform_convert.h
A source/blender/editors/transform/transform_convert_sequencer_image.c
M source/blender/editors/transform/transform_draw_cursors.c
M source/blender/editors/transform/transform_generics.c
M source/blender/editors/transform/transform_gizmo_2d.c
M source/blender/editors/transform/transform_mode.c
M source/blender/editors/transform/transform_snap_sequencer.c
M source/blender/makesdna/DNA_scene_types.h
M source/blender/makesdna/DNA_sequence_types.h
M source/blender/makesdna/DNA_space_types.h
M source/blender/makesrna/intern/rna_scene.c
M source/blender/makesrna/intern/rna_sequencer.c
M source/blender/makesrna/intern/rna_space.c
M source/blender/sequencer/SEQ_iterator.h
M source/blender/sequencer/SEQ_sequencer.h
M source/blender/sequencer/SEQ_transform.h
M source/blender/sequencer/intern/iterator.c
M source/blender/sequencer/intern/render.c
M source/blender/sequencer/intern/sequencer.c
M source/blender/sequencer/intern/strip_transform.c
===================================================================
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 4120006edad..a2edf5e541d 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -2588,6 +2588,9 @@ def km_sequencercommon(params):
("wm.context_toggle_enum", {"type": 'TAB', "value": 'PRESS', "ctrl": True},
{"properties": [("data_path", 'space_data.view_type'), ("value_1", 'SEQUENCER'), ("value_2", 'PREVIEW')]}),
("sequencer.refresh_all", {"type": 'R', "value": 'PRESS', "ctrl": True}, None),
+ ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS'}, None),
+ ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True},
+ {"properties": [("extend", True)]}),
])
if params.select_mouse == 'LEFTMOUSE' and not params.legacy:
@@ -2670,9 +2673,6 @@ def km_sequencer(params):
for i in range(10)
)
),
- ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS'}, None),
- ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True},
- {"properties": [("extend", True)]}),
("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "alt": True},
{"properties": [("linked_handle", True)]}),
("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "alt": True},
@@ -2749,6 +2749,15 @@ def km_sequencerpreview(params):
("sequencer.view_zoom_ratio", {"type": 'NUMPAD_8', "value": 'PRESS'},
{"properties": [("ratio", 0.125)]}),
("sequencer.sample", {"type": params.action_mouse, "value": 'PRESS'}, None),
+ ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
+ ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
+ ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
+ ("sequencer.strip_transform_clear", {"type": 'G', "alt": True, "value": 'PRESS'},
+ {"properties": [("property", 'POSITION')]}),
+ ("sequencer.strip_transform_clear", {"type": 'S', "alt": True, "value": 'PRESS'},
+ {"properties": [("property", 'SCALE')]}),
+ ("sequencer.strip_transform_clear", {"type": 'R', "alt": True, "value": 'PRESS'},
+ {"properties": [("property", 'ROTATION')]}),
])
return keymap
@@ -7316,6 +7325,39 @@ def km_sequencer_editor_tool_blade(_params):
)
+def km_sequencer_editor_tool_move(params):
+ return (
+ "Sequencer Tool: Move",
+ {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'},
+ {"items": [
+ ("transform.translate", {"type": params.tool_tweak, "value": 'ANY'},
+ {"properties": [("release_confirm", True)]}),
+ ]},
+ )
+
+
+def km_sequencer_editor_tool_rotate(params):
+ return (
+ "Sequencer Tool: Rotate",
+ {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'},
+ {"items": [
+ ("transform.rotate", {"type": params.tool_tweak, "value": 'ANY'},
+ {"properties": [("release_confirm", True)]}),
+ ]},
+ )
+
+
+def km_sequencer_editor_tool_scale(params):
+ return (
+ "Sequencer Tool: Scale",
+ {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'},
+ {"items": [
+ ("transform.resize", {"type": params.tool_tweak, "value": 'ANY'},
+ {"properties": [("release_confirm", True)]}),
+ ]},
+ )
+
+
# ------------------------------------------------------------------------------
# Full Configuration
@@ -7569,6 +7611,9 @@ def generate_keymaps(params=None):
km_sequencer_editor_tool_select_box(params),
km_sequencer_editor_tool_blade(params),
km_sequencer_editor_tool_generic_sample(params),
+ km_sequencer_editor_tool_scale(params),
+ km_sequencer_editor_tool_rotate(params),
+ km_sequencer_editor_tool_move(params),
]
# ------------------------------------------------------------------------------
diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py
index 88cf8db686c..806b6100cc8 100644
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@ -141,9 +141,14 @@ class SEQUENCER_HT_header(Header):
layout.separator_spacer()
+ tool_settings = context.tool_settings
+ sequencer_tool_settings = tool_settings.sequencer_tool_settings
+
+ if st.view_type == 'PREVIEW':
+ layout.prop(sequencer_tool_settings, "pivot_point", text="", icon_only=True)
+ layout.separator_spacer()
+
if st.view_type in {'SEQUENCER', 'SEQUENCER_PREVIEW'}:
- tool_settings = context.tool_settings
- sequencer_tool_settings = tool_settings.sequencer_tool_settings
row = layout.row(align=True)
row.prop(sequencer_tool_settings, "overlap_mode", text="")
row = layout.row(align=True)
@@ -209,6 +214,7 @@ class SEQUENCER_PT_preview_overlay(Panel):
layout = self.layout
layout.active = st.show_strip_overlay
+ layout.prop(overlay_settings, "show_image_outline")
layout.prop(ed, "show_overlay", text="Frame Overlay")
layout.prop(overlay_settings, "show_safe_areas", text="Safe Areas")
layout.prop(overlay_settings, "show_metadata", text="Metadata")
@@ -1756,6 +1762,9 @@ class SEQUENCER_PT_adjust_transform(SequencerButtonsPanel, Panel):
col = layout.column(align=True)
col.prop(strip.transform, "rotation", text="Rotation")
+ col = layout.column(align=True)
+ col.prop(strip.transform, "origin")
+
row = layout.row(heading="Mirror")
sub = row.row(align=True)
sub.prop(strip, "use_flip_x", text="X", toggle=True)
diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
index a513ab4b2d4..77a6ff79598 100644
--- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
@@ -2454,6 +2454,39 @@ class _defs_sequencer_generic:
keymap="Sequencer Tool: Sample",
)
+ @ToolDef.from_fn
+ def translate():
+ return dict(
+ idname="builtin.move",
+ label="Move",
+ icon="ops.transform.translate",
+ widget="SEQUENCER_GGT_gizmo2d_translate",
+ operator="transform.translate",
+ keymap="Sequencer Tool: Move",
+ )
+
+ @ToolDef.from_fn
+ def rotate():
+ return dict(
+ idname="builtin.rotate",
+ label="Rotate",
+ icon="ops.transform.rotate",
+ widget="SEQUENCER_GGT_gizmo2d_rotate",
+ operator="transform.rotate",
+ keymap="Sequencer Tool: Rotate",
+ )
+
+ @ToolDef.from_fn
+ def scale():
+ return dict(
+ idname="builtin.scale",
+ label="Scale",
+ icon="ops.transform.resize",
+ widget="SEQUENCER_GGT_gizmo2d_resize",
+ operator="transform.resize",
+ keymap="Sequencer Tool: Scale",
+ )
+
class _defs_sequencer_select:
@ToolDef.from_fn
@@ -3045,6 +3078,10 @@ class SEQUENCER_PT_tools_active(ToolSelectPanelHelper, Panel):
None: [
],
'PREVIEW': [
+ *_tools_select,
+ _defs_sequencer_generic.translate,
+ _defs_sequencer_generic.rotate,
+ _defs_sequencer_generic.scale,
_defs_sequencer_generic.sample,
*_tools_annotate,
],
@@ -3054,6 +3091,9 @@ class SEQUENCER_PT_tools_active(ToolSelectPanelHelper, Panel):
],
'SEQUENCER_PREVIEW': [
*_tools_select,
+ _defs_sequencer_generic.translate,
+ _defs_sequencer_generic.rotate,
+ _defs_sequencer_generic.scale,
_defs_sequencer_generic.blade,
_defs_sequencer_generic.sample,
*_tools_annotate,
diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h
index 63d6b9121d2..b3ee2f411d7 100644
--- a/source/blender/blenkernel/BKE_blender_version.h
+++ b/source/blender/blenkernel/BKE_blender_version.h
@@ -39,7 +39,7 @@ extern "C" {
/* Blender file format version. */
#define BLENDER_FILE_VERSION BLENDER_VERSION
-#define BLENDER_FILE_SUBVERSION 23
+#define BLENDER_FILE_SUBVERSION 24
/* Minimum Blender version that supports reading file written with the current
* version. Older Blender versions will test this and show a warning if the file
diff --git a/source/blender/blenloader/intern/versioning_300.c b/source/blender/blenloader/intern/versioning_300.c
index 30e7c9bde4c..d0fa6c282f4 100644
--- a/source/blender/blenloader/intern/versioning_300.c
+++ b/source/blender/blenloader/intern/versioning_300.c
@@ -64,6 +64,7 @@
#include "MEM_guardedalloc.h"
#include "readfile.h"
+#include "SEQ_iterator.h"
#include "SEQ_sequencer.h"
#include "RNA_access.h"
@@ -774,6 +775,14 @@ static void version_geometry_nodes_change_legacy_names(bNodeTree *ntree)
}
}
}
+static bool seq_transform_origin_set(Sequence *seq, void *UNUSED(user_data))
+{
+ StripTransform *transform = seq->strip->transform;
+ if (seq->strip->transform != NULL) {
+ transform->origin[0] = transform->origin[1] = 0.5f;
+ }
+ return true;
+}
/* NOLINTNEXTLINE: readability-function-size */
void blo_do_versions_300(FileData *fd, Library *UNUSED(lib), Main *bmain)
@@ -1290,6 +1299,27 @@ void blo_do_versions_300(FileData *fd, Library *UNUSED(lib), Main *bmain)
}
}
+ if (!MAIN_VERSION_ATLEAST(bmain, 300, 24)) {
+ LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
+ SequencerToolSettings *sequencer_tool_settings = SEQ_tool_settings_ensure(scene);
+ sequencer_tool_settings->pivot_point = V3D_AROUND_CENTER_MEDIAN;
+
+ if (scene->ed != NULL) {
+ SEQ_for_each_callback(&sc
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list