[Bf-blender-cvs] [4f50531b210] temp-vse-preview-transform: Use pivot point from sequencer tool settings, Limit pivot points to implemented and useful modes.
Richard Antalik
noreply at git.blender.org
Fri Sep 10 11:40:18 CEST 2021
Commit: 4f50531b21034e2a76ecb03e55038398bfec9e63
Author: Richard Antalik
Date: Mon Sep 6 22:43:24 2021 +0200
Branches: temp-vse-preview-transform
https://developer.blender.org/rB4f50531b21034e2a76ecb03e55038398bfec9e63
Use pivot point from sequencer tool settings, Limit pivot points to implemented and useful modes.
===================================================================
M release/scripts/startup/bl_ui/space_sequencer.py
M source/blender/blenloader/intern/versioning_300.c
M source/blender/editors/transform/transform_generics.c
M source/blender/makesdna/DNA_scene_types.h
M source/blender/makesrna/intern/rna_scene.c
M source/blender/sequencer/SEQ_sequencer.h
M source/blender/sequencer/intern/sequencer.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py
index c5119e5113f..0decfe71b78 100644
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@ -142,12 +142,13 @@ class SEQUENCER_HT_header(Header):
layout.separator_spacer()
tool_settings = context.tool_settings
- layout.prop(tool_settings, "transform_pivot_point", text="", icon_only=True)
+ sequencer_tool_settings = tool_settings.sequencer_tool_settings
- layout.separator_spacer()
+ 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'}:
- 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)
diff --git a/source/blender/blenloader/intern/versioning_300.c b/source/blender/blenloader/intern/versioning_300.c
index f050de6e6e9..9062c089401 100644
--- a/source/blender/blenloader/intern/versioning_300.c
+++ b/source/blender/blenloader/intern/versioning_300.c
@@ -1095,5 +1095,9 @@ void blo_do_versions_300(FileData *fd, Library *UNUSED(lib), Main *bmain)
*/
{
/* Keep this block, even when empty. */
+ LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
+ SequencerToolSettings *sequencer_tool_settings = SEQ_tool_settings_ensure(scene);
+ sequencer_tool_settings->pivot_point = V3D_AROUND_LOCAL_ORIGINS;
+ }
}
}
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index cff213a0abf..066aa81a0cb 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -59,6 +59,8 @@
#include "UI_resources.h"
#include "UI_view2d.h"
+#include "SEQ_sequencer.h"
+
#include "transform.h"
#include "transform_convert.h"
#include "transform_mode.h"
@@ -342,7 +344,7 @@ void initTransInfo(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve
}
else if (t->spacetype == SPACE_SEQ && region->regiontype == RGN_TYPE_PREVIEW) {
t->view = ®ion->v2d;
- t->around = t->scene->toolsettings->transform_pivot_point;
+ t->around = SEQ_tool_settings_pivot_point_get(t->scene);
}
else {
if (region) {
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 7800e7f9efe..f2244b4ae61 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -1344,6 +1344,7 @@ typedef struct SequencerToolSettings {
/** When there are many snap points, 0-1 range corresponds to resolution from boundbox to all
* possible snap points. */
int snap_distance;
+ int pivot_point;
} SequencerToolSettings;
typedef enum eSeqOverlapMode {
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 0583cdeb1bb..7a86ce1e1c8 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -3525,6 +3525,19 @@ static void rna_def_sequencer_tool_settings(BlenderRNA *brna)
{0, NULL, 0, NULL, NULL},
};
+ static const EnumPropertyItem pivot_points[] = {
+ //{V3D_AROUND_CENTER_BOUNDS, "CENTER", ICON_PIVOT_BOUNDBOX, "Bounding Box Center", ""}, // Do we need this? (not implemented)
+ // Is active element needed?
+ {V3D_AROUND_CENTER_MEDIAN, "MEDIAN", ICON_PIVOT_MEDIAN, "Median Point", ""},
+ //{V3D_AROUND_CURSOR, "CURSOR", ICON_PIVOT_CURSOR, "2D Cursor", ""}, // TODO / Do we need this?
+ {V3D_AROUND_LOCAL_ORIGINS,
+ "INDIVIDUAL_ORIGINS",
+ ICON_PIVOT_INDIVIDUAL,
+ "Individual Origins",
+ "Pivot around each selected island's own median point"},
+ {0, NULL, 0, NULL, NULL},
+
+ };
srna = RNA_def_struct(brna, "SequencerToolSettings", NULL);
RNA_def_struct_path_func(srna, "rna_SequencerToolSettings_path");
RNA_def_struct_ui_text(srna, "Sequencer Tool Settings", "");
@@ -3568,6 +3581,10 @@ static void rna_def_sequencer_tool_settings(BlenderRNA *brna)
prop = RNA_def_property(srna, "overlap_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, scale_overlap_modes);
RNA_def_property_ui_text(prop, "Overlap Mode", "How to resolve overlap after transformation");
+
+ prop = RNA_def_property(srna, "pivot_point", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_items(prop, pivot_points);
+ RNA_def_property_ui_text(prop, "Pivot Point", "Rotation or scaling pivot point");
}
static void rna_def_unified_paint_settings(BlenderRNA *brna)
diff --git a/source/blender/sequencer/SEQ_sequencer.h b/source/blender/sequencer/SEQ_sequencer.h
index d7800d208a4..7e733817630 100644
--- a/source/blender/sequencer/SEQ_sequencer.h
+++ b/source/blender/sequencer/SEQ_sequencer.h
@@ -64,6 +64,7 @@ short SEQ_tool_settings_snap_flag_get(struct Scene *scene);
short SEQ_tool_settings_snap_mode_get(struct Scene *scene);
int SEQ_tool_settings_snap_distance_get(struct Scene *scene);
eSeqOverlapMode SEQ_tool_settings_overlap_mode_get(struct Scene *scene);
+int SEQ_tool_settings_pivot_point_get(struct Scene *scene);
struct SequencerToolSettings *SEQ_tool_settings_copy(struct SequencerToolSettings *tool_settings);
struct Editing *SEQ_editing_get(const struct Scene *scene);
struct Editing *SEQ_editing_ensure(struct Scene *scene);
diff --git a/source/blender/sequencer/intern/sequencer.c b/source/blender/sequencer/intern/sequencer.c
index bf5942090c9..00ae805a470 100644
--- a/source/blender/sequencer/intern/sequencer.c
+++ b/source/blender/sequencer/intern/sequencer.c
@@ -321,6 +321,7 @@ SequencerToolSettings *SEQ_tool_settings_init(void)
SEQ_SNAP_TO_STRIP_HOLD;
tool_settings->snap_distance = 15;
tool_settings->overlap_mode = SEQ_OVERLAP_SHUFFLE;
+ tool_settings->pivot_point = V3D_AROUND_LOCAL_ORIGINS;
return tool_settings;
}
@@ -377,6 +378,12 @@ eSeqOverlapMode SEQ_tool_settings_overlap_mode_get(Scene *scene)
return tool_settings->overlap_mode;
}
+int SEQ_tool_settings_pivot_point_get(Scene *scene)
+{
+ const SequencerToolSettings *tool_settings = SEQ_tool_settings_ensure(scene);
+ return tool_settings->pivot_point;
+}
+
/**
* Get seqbase that is being viewed currently. This can be main seqbase or meta strip seqbase
*
More information about the Bf-blender-cvs
mailing list