[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