[Bf-blender-cvs] [3a65f0bfef7] temp-vse-snapping: Update rebased on master, arc pulled some very weird base, and I didn't notice
Richard Antalik
noreply at git.blender.org
Mon Jun 21 09:13:23 CEST 2021
Commit: 3a65f0bfef7a9774471e2109e6e184100bdd5e15
Author: Richard Antalik
Date: Sat Jun 19 10:52:06 2021 +0200
Branches: temp-vse-snapping
https://developer.blender.org/rB3a65f0bfef7a9774471e2109e6e184100bdd5e15
Update rebased on master, arc pulled some very weird base, and I didn't notice
===================================================================
M release/scripts/addons
M release/scripts/startup/bl_ui/space_sequencer.py
M source/blender/editors/transform/CMakeLists.txt
M source/blender/editors/transform/transform_convert.h
M source/blender/editors/transform/transform_convert_sequencer.c
M source/blender/editors/transform/transform_mode_edge_seq_slide.c
M source/blender/editors/transform/transform_snap.c
M source/blender/editors/transform/transform_snap.h
A source/blender/editors/transform/transform_snap_sequencer.c
M source/blender/makesdna/DNA_scene_types.h
M source/blender/makesrna/intern/rna_scene.c
M source/blender/sequencer/SEQ_iterator.h
M source/blender/sequencer/intern/iterator.c
===================================================================
diff --git a/release/scripts/addons b/release/scripts/addons
index ec07ed4c2e0..f86f25e6221 160000
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@ -1 +1 @@
-Subproject commit ec07ed4c2e0495bea7fbe0b546d25e35211506a9
+Subproject commit f86f25e62217264495d05f116ccb09d575fe9841
diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py
index 07d9b0ee1f8..dbaae5de233 100644
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@ -162,6 +162,14 @@ class SEQUENCER_HT_header(Header):
if tool_settings.use_proportional_edit:
row.prop(tool_settings, "proportional_edit_falloff", icon_only=True)
+ if st.view_type in {'SEQUENCER', 'SEQUENCER_PREVIEW'}:
+ tool_settings = context.tool_settings.sequencer_tool_settings
+ row = layout.row(align=True)
+ row.prop(tool_settings, "use_snapping", text="")
+ sub = row.row(align=True)
+ sub.popover(panel="SEQUENCER_PT_snapping")
+ layout.separator_spacer()
+
row = layout.row(align=True)
row.prop(st, "show_strip_overlay", text="", icon='OVERLAY')
sub = row.row(align=True)
@@ -2265,6 +2273,36 @@ class SEQUENCER_PT_custom_props(SequencerButtonsPanel, PropertyPanel, Panel):
bl_category = "Strip"
+class SEQUENCER_PT_snapping(Panel):
+ bl_space_type = 'SEQUENCE_EDITOR'
+ bl_region_type = 'HEADER'
+ bl_label = "Snapping"
+
+ def draw(self, context):
+ tool_settings = context.tool_settings.sequencer_tool_settings
+
+ layout = self.layout
+ col = layout.column()
+ col.label(text="Snap To")
+ col.prop(tool_settings, "snap_to_strip_start")
+ col.prop(tool_settings, "snap_to_strip_end")
+ col.prop(tool_settings, "snap_to_playhead")
+ col.separator()
+ col.prop(tool_settings, "snap_ignore_muted")
+ col.prop(tool_settings, "snap_ignore_sound")
+ col.separator()
+
+ col.label(text="Snap Source")
+ col.prop(tool_settings, "snap_source")
+ col.prop(tool_settings, "snap_side")
+ col.separator()
+
+ col.label(text="Snap Settings")
+ col.prop(tool_settings, "snap_threshold", slider=True)
+ col.prop(tool_settings, "snap_sensitivity", slider=True)
+ col.separator()
+
+
classes = (
SEQUENCER_MT_change,
SEQUENCER_HT_tool_header,
@@ -2334,6 +2372,8 @@ classes = (
SEQUENCER_PT_annotation,
SEQUENCER_PT_annotation_onion,
+
+ SEQUENCER_PT_snapping,
)
if __name__ == "__main__": # only for live edit.
diff --git a/source/blender/editors/transform/CMakeLists.txt b/source/blender/editors/transform/CMakeLists.txt
index b0bc5c6abda..ad0a330f0f4 100644
--- a/source/blender/editors/transform/CMakeLists.txt
+++ b/source/blender/editors/transform/CMakeLists.txt
@@ -102,6 +102,7 @@ set(SRC
transform_orientations.c
transform_snap.c
transform_snap_object.c
+ transform_snap_sequencer.c
transform.h
transform_constraints.h
diff --git a/source/blender/editors/transform/transform_convert.h b/source/blender/editors/transform/transform_convert.h
index 918ce0739ed..d92c24385ae 100644
--- a/source/blender/editors/transform/transform_convert.h
+++ b/source/blender/editors/transform/transform_convert.h
@@ -32,6 +32,7 @@ struct ListBase;
struct Object;
struct TransData;
struct TransDataCurveHandleFlags;
+struct TransSeqSnapData;
struct TransInfo;
struct bContext;
@@ -47,9 +48,14 @@ void clipUVData(TransInfo *t);
/* transform_convert_mesh.c */
void transform_convert_mesh_customdatacorrect_init(TransInfo *t);
+/* transform_snap_sequencer.c */
+struct TransSeqSnapData *seq_snap_data_alloc(TransInfo *t, struct ListBase *seqbase);
+void seq_snap_data_free(struct TransSeqSnapData *data);
+
/* transform_convert_sequencer.c */
-int transform_convert_sequencer_get_snap_bound(TransInfo *t);
+struct TransSeqSnapData *transform_convert_sequencer_get_snap_data(TransInfo *t);
void transform_convert_sequencer_channel_clamp(TransInfo *t);
+
/********************* intern **********************/
/* transform_convert.c */
diff --git a/source/blender/editors/transform/transform_convert_sequencer.c b/source/blender/editors/transform/transform_convert_sequencer.c
index eb8641f5070..2275aeee79f 100644
--- a/source/blender/editors/transform/transform_convert_sequencer.c
+++ b/source/blender/editors/transform/transform_convert_sequencer.c
@@ -63,9 +63,7 @@ typedef struct TransDataSeq {
*/
typedef struct TransSeq {
TransDataSeq *tdseq;
- int min;
- int max;
- bool snap_left;
+ struct TransSeqSnapData *snap_data;
int selection_channel_range_min;
int selection_channel_range_max;
} TransSeq;
@@ -254,38 +252,7 @@ static int SeqToTransData_build(
static void SeqTransDataBounds(TransInfo *t, ListBase *seqbase, TransSeq *ts)
{
- Sequence *seq;
- int count, flag;
- int max = INT32_MIN, min = INT32_MAX;
-
- for (seq = seqbase->first; seq; seq = seq->next) {
-
- /* just to get the flag since there are corner cases where this isn't totally obvious */
- SeqTransInfo(t, seq, &count, &flag);
-
- /* use 'flag' which is derived from seq->flag but modified for special cases */
- if (flag & SELECT) {
- if (flag & (SEQ_LEFTSEL | SEQ_RIGHTSEL)) {
- if (flag & SEQ_LEFTSEL) {
- min = min_ii(seq->startdisp, min);
- max = max_ii(seq->startdisp, max);
- }
- if (flag & SEQ_RIGHTSEL) {
- min = min_ii(seq->enddisp, min);
- max = max_ii(seq->enddisp, max);
- }
- }
- else {
- min = min_ii(seq->startdisp, min);
- max = max_ii(seq->enddisp, max);
- }
- }
- }
-
- if (ts) {
- ts->max = max;
- ts->min = min;
- }
+ ts->snap_data = seq_snap_data_alloc(t, seqbase);
}
static void free_transform_custom_data(TransCustomData *custom_data)
@@ -293,6 +260,7 @@ static void free_transform_custom_data(TransCustomData *custom_data)
if ((custom_data->data != NULL) && custom_data->use_free) {
TransSeq *ts = custom_data->data;
MEM_freeN(ts->tdseq);
+ seq_snap_data_free(ts->snap_data);
MEM_freeN(custom_data->data);
custom_data->data = NULL;
}
@@ -355,7 +323,7 @@ static void seq_transform_update_effects(TransInfo *t, SeqCollection *collection
Sequence *seq;
SEQ_ITERATOR_FOREACH (seq, collection) {
if ((seq->type & SEQ_TYPE_EFFECT) && (seq->seq1 || seq->seq2 || seq->seq3)) {
- SEQ_time_update_sequence(t->scene, seq);
+ SEQ_time_update_sequence(t->scene, seq);
}
}
}
@@ -544,15 +512,8 @@ void createTransSeqData(TransInfo *t)
/* loop 2: build transdata array */
SeqToTransData_build(t, ed->seqbasep, td, td2d, tdsq);
- SeqTransDataBounds(t, ed->seqbasep, ts);
-
- if (t->flag & T_MODAL) {
- /* set the snap mode based on how close the mouse is at the end/start points */
- int xmouse = (int)UI_view2d_region_to_view_x((View2D *)t->view, t->mouse.imval[0]);
- if (abs(xmouse - ts->max) > abs(xmouse - ts->min)) {
- ts->snap_left = true;
- }
- }
+ /* Snapping data. */
+ ts->snap_data = seq_snap_data_alloc(t, ed->seqbasep);
ts->selection_channel_range_min = MAXSEQ + 1;
LISTBASE_FOREACH (Sequence *, seq, SEQ_active_seqbase_get(ed)) {
@@ -734,10 +695,10 @@ void transform_convert_sequencer_channel_clamp(TransInfo *t)
}
}
-int transform_convert_sequencer_get_snap_bound(TransInfo *t)
+struct TransSeqSnapData *transform_convert_sequencer_get_snap_data(TransInfo *t)
{
TransSeq *ts = TRANS_DATA_CONTAINER_FIRST_SINGLE(t)->custom.type.data;
- return ts->snap_left ? ts->min : ts->max;
+ return ts->snap_data;
}
/** \} */
diff --git a/source/blender/editors/transform/transform_mode_edge_seq_slide.c b/source/blender/editors/transform/transform_mode_edge_seq_slide.c
index 7e7b79c9f90..ee876a9b19a 100644
--- a/source/blender/editors/transform/transform_mode_edge_seq_slide.c
+++ b/source/blender/editors/transform/transform_mode_edge_seq_slide.c
@@ -107,7 +107,7 @@ static void applySeqSlide(TransInfo *t, const int mval[2])
char str[UI_MAX_DRAW_STR];
float values_final[3] = {0.0f};
- snapSequenceBounds(t, mval);
+ seq_snap_offset_apply(t, mval);
transform_convert_sequencer_channel_clamp(t);
if (applyNumInput(&t->num, values_final)) {
if (t->con.mode & CON_APPLY) {
diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c
index bebef049718..f61d72e72f4 100644
--- a/source/blender/editors/transform/transform_snap.c
+++ b/source/blender/editors/transform/transform_snap.c
@@ -41,6 +41,7 @@
#include "RNA_access.h"
+#include "SEQ_iterator.h"
#include "SEQ_sequencer.h"
#include "SEQ_time.h"
@@ -190,7 +191,7 @@ void drawSnapping(const struct bContext *C, TransInfo *t)
RegionView3D *rv3d = CTX_wm_region_view3d(C);
if (!BLI_listbase_is_empty(&t->tsnap.points)) {
- /* Draw snap points. */
+ /* Draw snap source_points. */
float size = 2.0f * UI_GetThemeValuef(TH_VERTEX_SIZE);
float view_inv[4][4];
@@ -739,7 +740,7 @@ static void setSnappingCallback(TransInfo *t)
void addSnapPoint(TransInfo *t)
{
- /* Currently only 3D viewport works for snapping points. */
+ /* Currently only 3D viewport works for snapping source_points. */
if (t->tsnap.status & POINT_INIT && t->spacetype == SPACE_VIEW3D) {
TransSnapPoint *p = MEM_callocN(sizeof(TransSnapPoint), "SnapPoint");
@@ -1430,28 +1431,6 @@ void snapFrameTransform(TransInfo *t,
*r_val = (float)val;
}
-/*================================================================*/
-
-void snapSequenceBounds(TransInfo *t, const int mval[2])
-{
- /* Reuse increment, strictly speaking could be another snap mode, but leave as is. */
- if (!(t->modifiers & MOD_SNAP_INVERT)) {
- return;
- }
-
- /* Convert to frame range. */
- float xmouse, ymouse;
- UI_view2d_region_to_view(&t->region->v2d, mval[0], mval[1], &xmouse, &ymouse);
- const int frame_curr = round_fl_to_int(xmouse);
-
- /* Now find the closest sequence. */
- const int frame_near = SEQ_time_find_next_prev_edi
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list