[Bf-blender-cvs] [a5f7c7b433e] temp-vse-snapping: Fix hold offset snapping, add defauts to versioning.
Richard Antalik
noreply at git.blender.org
Mon Jun 21 09:13:23 CEST 2021
Commit: a5f7c7b433ecd472cbefa0fefbbbbd819cf5a1ff
Author: Richard Antalik
Date: Mon Jun 21 09:09:22 2021 +0200
Branches: temp-vse-snapping
https://developer.blender.org/rBa5f7c7b433ecd472cbefa0fefbbbbd819cf5a1ff
Fix hold offset snapping, add defauts to versioning.
===================================================================
M source/blender/blenloader/intern/versioning_300.c
M source/blender/editors/transform/transform_snap_sequencer.c
M source/blender/makesdna/DNA_scene_types.h
M source/blender/makesrna/intern/rna_scene.c
===================================================================
diff --git a/source/blender/blenloader/intern/versioning_300.c b/source/blender/blenloader/intern/versioning_300.c
index 0fe1267b871..b2c1bc3f1c2 100644
--- a/source/blender/blenloader/intern/versioning_300.c
+++ b/source/blender/blenloader/intern/versioning_300.c
@@ -42,6 +42,8 @@
#include "BLO_readfile.h"
#include "readfile.h"
+#include "SEQ_sequencer.h"
+
#include "MEM_guardedalloc.h"
#include "versioning_common.h"
@@ -403,5 +405,14 @@ 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 *tool_settings = SEQ_tool_settings_ensure(scene);
+ tool_settings->snap_flag = SEQ_SNAP_TO_STRIP_START | SEQ_SNAP_TO_STRIP_END |
+ SEQ_SNAP_TO_PLAYHEAD | SEQ_SNAP_TO_STRIP_HOLD |
+ SEQ_SNAP_IGNORE_MUTED;
+ tool_settings->snap_source = SEQ_SNAP_EACH_STRIP;
+ tool_settings->snap_side = SEQ_SNAP_SOURCE_SIDE_BOTH;
+ tool_settings->snap_threshold = 25;
+ }
}
}
diff --git a/source/blender/editors/transform/transform_snap_sequencer.c b/source/blender/editors/transform/transform_snap_sequencer.c
index 8e34d11d5bb..7c2ea242850 100644
--- a/source/blender/editors/transform/transform_snap_sequencer.c
+++ b/source/blender/editors/transform/transform_snap_sequencer.c
@@ -53,18 +53,18 @@ typedef struct TransSeqSnapData {
int *target_snap_points;
int target_snap_point_count;
- eSeqTransformFlag snap_side;
+ eSeqSnapFlag snap_side;
} TransSeqSnapData;
/* -------------------------------------------------------------------- */
/** \name Snap sources
* \{ */
-static eSeqTransformFlag seq_snap_source_side_get(TransInfo *t, SeqCollection *snap_sources)
+static eSeqSnapFlag seq_snap_source_side_get(TransInfo *t, SeqCollection *snap_sources)
{
SequencerToolSettings *tool_settings = SEQ_tool_settings_ensure(t->scene);
- if ((tool_settings->snap_side & SEQ_SNAP_SOURCE_MOUSE) == 0) {
+ if ((tool_settings->snap_side & SEQ_SNAP_SOURCE_SIDE_MOUSE) == 0) {
return tool_settings->snap_side;
}
@@ -82,9 +82,9 @@ static eSeqTransformFlag seq_snap_source_side_get(TransInfo *t, SeqCollection *s
/* Set the snap mode based on how close the mouse is at the end/start source_snap_points. */
int xmouse = (int)UI_view2d_region_to_view_x((View2D *)t->view, t->mouse.imval[0]);
if (abs(xmouse - boundbox_max) > abs(xmouse - boundbox_min)) {
- return SEQ_SNAP_SOURCE_LEFT;
+ return SEQ_SNAP_SOURCE_SIDE_LEFT;
}
- return SEQ_SNAP_SOURCE_RIGHT;
+ return SEQ_SNAP_SOURCE_SIDE_RIGHT;
}
static int seq_get_snap_source_points_count(TransInfo *t,
@@ -98,7 +98,7 @@ static int seq_get_snap_source_points_count(TransInfo *t,
count = SEQ_collection_count(snap_sources);
}
- if (snap_data->snap_side == SEQ_SNAP_SOURCE_BOTH) {
+ if (snap_data->snap_side == SEQ_SNAP_SOURCE_SIDE_BOTH) {
count *= 2;
}
return count;
@@ -128,11 +128,11 @@ static void seq_snap_source_points_build_set_min_max(
max = snap_data->source_point_max;
}
- if (snap_data->snap_side & (SEQ_SNAP_SOURCE_LEFT | SEQ_SNAP_SOURCE_BOTH)) {
+ if (snap_data->snap_side & (SEQ_SNAP_SOURCE_SIDE_LEFT | SEQ_SNAP_SOURCE_SIDE_BOTH)) {
snap_data->source_snap_points[*r_i] = left;
*r_i += 1;
}
- if (snap_data->snap_side & (SEQ_SNAP_SOURCE_RIGHT | SEQ_SNAP_SOURCE_BOTH)) {
+ if (snap_data->snap_side & (SEQ_SNAP_SOURCE_SIDE_RIGHT | SEQ_SNAP_SOURCE_SIDE_BOTH)) {
snap_data->source_snap_points[*r_i] = right;
*r_i += 1;
}
@@ -191,11 +191,10 @@ static SeqCollection *query_snap_targets(const TransInfo *t)
if ((seq->flag & SELECT)) {
continue; /* Selected are being transformed. */
}
- if ((seq->flag & SEQ_MUTE) && (tool_settings->transform_flag & SEQ_SNAP_IGNORE_MUTED)) {
+ if ((seq->flag & SEQ_MUTE) && (tool_settings->snap_flag & SEQ_SNAP_IGNORE_MUTED)) {
continue;
}
- if (seq->type == SEQ_TYPE_SOUND_RAM &&
- (tool_settings->transform_flag & SEQ_SNAP_IGNORE_SOUND)) {
+ if (seq->type == SEQ_TYPE_SOUND_RAM && (tool_settings->snap_flag & SEQ_SNAP_IGNORE_SOUND)) {
continue;
}
SEQ_collection_append_strip(seq, collection);
@@ -210,19 +209,19 @@ static int seq_get_snap_target_points_count(TransInfo *t,
SequencerToolSettings *tool_settings = SEQ_tool_settings_ensure(t->scene);
int count = 0; /* in case of SEQ_SNAP_SELECTION */
- if (tool_settings->transform_flag & SEQ_SNAP_TO_STRIP_START) {
+ if (tool_settings->snap_flag & SEQ_SNAP_TO_STRIP_START) {
count++;
}
- if (tool_settings->transform_flag & SEQ_SNAP_TO_STRIP_END) {
+ if (tool_settings->snap_flag & SEQ_SNAP_TO_STRIP_END) {
count++;
}
- if (tool_settings->transform_flag & SEQ_SNAP_TO_STRIP_HOLD) {
+ if (tool_settings->snap_flag & SEQ_SNAP_TO_STRIP_HOLD) {
count += 2;
}
count *= SEQ_collection_count(snap_targets);
- if (tool_settings->transform_flag & SEQ_SNAP_TO_PLAYHEAD) {
+ if (tool_settings->snap_flag & SEQ_SNAP_TO_PLAYHEAD) {
count++;
}
@@ -248,24 +247,30 @@ static void seq_snap_target_points_build(TransInfo *t,
int i = 0;
- if (tool_settings->transform_flag & SEQ_SNAP_TO_PLAYHEAD) {
+ if (tool_settings->snap_flag & SEQ_SNAP_TO_PLAYHEAD) {
snap_data->target_snap_points[i] = CFRA;
i++;
}
Sequence *seq;
SEQ_ITERATOR_FOREACH (seq, snap_targets) {
- if (tool_settings->transform_flag & SEQ_SNAP_TO_STRIP_START) {
+ if (tool_settings->snap_flag & SEQ_SNAP_TO_STRIP_START) {
snap_data->target_snap_points[i] = seq->startdisp;
i++;
}
- if (tool_settings->transform_flag & SEQ_SNAP_TO_STRIP_END) {
+ if (tool_settings->snap_flag & SEQ_SNAP_TO_STRIP_END) {
snap_data->target_snap_points[i] = seq->enddisp;
i++;
}
- if (tool_settings->transform_flag & SEQ_SNAP_TO_STRIP_HOLD) {
- const int content_start = min_ii(seq->enddisp, seq->start);
- const int content_end = max_ii(seq->startdisp, seq->start + seq->len);
+ if (tool_settings->snap_flag & SEQ_SNAP_TO_STRIP_HOLD) {
+ int content_start = min_ii(seq->enddisp, seq->start);
+ int content_end = max_ii(seq->startdisp, seq->start + seq->len);
+ if (seq->anim_startofs == 0) {
+ content_start = seq->startdisp;
+ }
+ if (seq->anim_endofs == 0) {
+ content_end = seq->enddisp;
+ }
snap_data->target_snap_points[i] = content_start;
snap_data->target_snap_points[i + 1] = content_end;
i += 2;
@@ -288,7 +293,7 @@ static bool seq_snap_use_snapping(const TransInfo *t)
}
SequencerToolSettings *tool_settings = SEQ_tool_settings_ensure(t->scene);
- return (bool)(tool_settings->transform_flag & SEQ_USE_SNAPPING) ^
+ return (bool)(tool_settings->snap_flag & SEQ_USE_SNAPPING) ^
(bool)(t->modifiers & MOD_SNAP_INVERT);
}
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index c586b064ff0..f60e4c49bf0 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -1334,11 +1334,11 @@ typedef struct MeshStatVis {
typedef struct SequencerToolSettings {
/* eSeqImageFitMethod */
int fit_method;
- /*eSeqTransformFlag */
- int transform_flag;
+ /*eSeqSnapFlag */
+ int snap_flag;
/** When there are many snap points, 0-1 range corresponds to resolution from boundbox to all
* possible snap points. */
- int snap_sdensity;
+ int snap_density;
int snap_threshold;
int snap_source;
int snap_side;
@@ -1351,7 +1351,7 @@ typedef enum eSeqImageFitMethod {
SEQ_USE_ORIGINAL_SIZE,
} eSeqImageFitMethod;
-typedef enum eSeqTransformFlag {
+typedef enum eSeqSnapFlag {
SEQ_USE_SNAPPING = (1 << 0),
/* Snap targets. */
SEQ_SNAP_TO_STRIP_START = (1 << 1),
@@ -1366,12 +1366,12 @@ typedef enum eSeqTransformFlag {
SEQ_SNAP_SELECTION = (1 << 7),
/* Snap source side. */
- SEQ_SNAP_SOURCE_LEFT = (1 << 8),
- SEQ_SNAP_SOURCE_RIGHT = (1 << 9),
- SEQ_SNAP_SOURCE_BOTH = (1 << 10),
- SEQ_SNAP_SOURCE_MOUSE = (1 << 11),
+ SEQ_SNAP_SOURCE_SIDE_LEFT = (1 << 8),
+ SEQ_SNAP_SOURCE_SIDE_RIGHT = (1 << 9),
+ SEQ_SNAP_SOURCE_SIDE_BOTH = (1 << 10),
+ SEQ_SNAP_SOURCE_SIDE_MOUSE = (1 << 11),
-} eSeqTransformFlag;
+} eSeqSnapFlag;
/* *************************************************************** */
/* Tool Settings */
@@ -2041,7 +2041,7 @@ extern const char *RE_engine_id_CYCLES;
/* Base.flag is in DNA_object_types.h */
-/** #ToolSettings.transform_flag */
+/** #ToolSettings.snap_flag */
enum {
SCE_XFORM_AXIS_ALIGN = (1 << 0),
SCE_XFORM_DATA_ORIGIN = (1 << 1),
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 1dcf076691a..b4a3b156f2b 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -3516,10 +3516,10 @@ static void rna_def_sequencer_tool_settings(BlenderRNA *brna)
};
static const EnumPropertyItem snap_sides[] = {
- {SEQ_SNAP_SOURCE_LEFT, "LEFT", 0, "Left", "Snap only source start"},
- {SEQ_SNAP_SOURCE_RIGHT, "RIGHT", 0, "Right", "Snap only source end"},
- {SEQ_SNAP_SOURCE_BOTH, "BOTH", 0, "Both", "Snap both sides"},
- {SEQ_SNAP_SOURCE_MOUSE,
+ {SEQ_SNAP_SOURCE_SIDE_LEFT, "LEFT", 0, "Left", "Snap only source start"},
+ {SEQ_SNAP_SOURCE_SIDE_RIGHT, "RIGHT", 0, "Right", "Snap only source end"},
+ {SEQ_SNAP_SOURCE_SIDE_BOTH, "BOTH", 0, "Both", "Snap both sides"},
+ {SEQ_SNAP_SOURCE_SIDE_MOUSE,
"MOUSE",
0,
"Use Mouse Position",
@@ -3538,38 +3538,38 @@ static void rna_def_sequencer_tool_settings(BlenderRNA *brna)
/* Transform snapping. */
prop = RNA_def_property(srna, "use_snapping", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "transform_flag", SEQ_USE_SNAPPING);
+ RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SEQ_USE_SNAPPING);
RNA_def_property_boolean_default(prop, true);
RNA_def_property_ui_icon(prop, ICON_SNAP_OFF, 1);
RNA_def_property_ui_text(prop, "Use Snapping", "Snap to strip edges or current fram
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list