[Bf-blender-cvs] [a0b2ec5529b] temp-vse-preview-transform2: Use 0-1 range for origin position

Richard Antalik noreply at git.blender.org
Wed Sep 15 17:19:55 CEST 2021


Commit: a0b2ec5529b255388c0a90b208e79db183a60b4f
Author: Richard Antalik
Date:   Fri Sep 10 11:24:09 2021 +0200
Branches: temp-vse-preview-transform2
https://developer.blender.org/rBa0b2ec5529b255388c0a90b208e79db183a60b4f

Use 0-1 range for origin position

===================================================================

M	source/blender/blenloader/intern/versioning_300.c
M	source/blender/editors/space_sequencer/sequencer_draw.c
M	source/blender/editors/transform/transform_convert_sequencer_image.c
M	source/blender/editors/transform/transform_gizmo_2d.c
M	source/blender/makesrna/intern/rna_sequencer.c
M	source/blender/sequencer/SEQ_transform.h
M	source/blender/sequencer/intern/render.c
M	source/blender/sequencer/intern/strip_transform.c

===================================================================

diff --git a/source/blender/blenloader/intern/versioning_300.c b/source/blender/blenloader/intern/versioning_300.c
index 428301c7c7d..b7baa204eaa 100644
--- a/source/blender/blenloader/intern/versioning_300.c
+++ b/source/blender/blenloader/intern/versioning_300.c
@@ -768,7 +768,7 @@ 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;
-  transform->origin[0] = transform->origin[1] = 0.0f;
+  transform->origin[0] = transform->origin[1] = 0.5f;
   return true;
 }
 
@@ -1248,6 +1248,10 @@ void blo_do_versions_300(FileData *fd, Library *UNUSED(lib), Main *bmain)
     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(&scene->ed->seqbase, seq_transform_origin_set, NULL);
+      }
     }
   }
 }
diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c
index ef0979ee592..9b4c075f109 100644
--- a/source/blender/editors/space_sequencer/sequencer_draw.c
+++ b/source/blender/editors/space_sequencer/sequencer_draw.c
@@ -2050,8 +2050,7 @@ static int sequencer_draw_get_transform_preview_frame(Scene *scene)
 
 static void seq_draw_image_origin_and_outline(const bContext *C, Sequence *seq)
 {
-  Editing *ed = SEQ_editing_get(CTX_data_scene(C));
-  if ((seq->flag & SELECT) == 0 && seq != ed->act_seq) {
+  if ((seq->flag & SELECT) == 0) {
     return;
   }
   if (ED_screen_animation_no_scrub(CTX_wm_manager(C))) {
@@ -2060,9 +2059,12 @@ static void seq_draw_image_origin_and_outline(const bContext *C, Sequence *seq)
 
   const StripTransform *transform = seq->strip->transform;
 
+  float origin[2];
+  SEQ_image_transform_origin_offset_get(CTX_data_scene(C), seq, origin);
+
   /* Origin. */
-  float x = transform->xofs + transform->origin[0];
-  float y = transform->yofs + transform->origin[1];
+  float x = transform->xofs + origin[0];
+  float y = transform->yofs + origin[1];
 
   GPUVertFormat *format = immVertexFormat();
   uint pos = GPU_vertformat_attr_add(format, "pos", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
@@ -2083,9 +2085,19 @@ static void seq_draw_image_origin_and_outline(const bContext *C, Sequence *seq)
                        (const float[]){transform->xofs, transform->yofs},
                        transform->rotation,
                        (const float[]){transform->scale_x, transform->scale_y});
-  transform_pivot_set_m3(transform_matrix, transform->origin);
+  transform_pivot_set_m3(transform_matrix, origin);
+
+  float image_size[2];
+  if (strip_elem == NULL) {
+    Scene *scene = CTX_data_scene(C);
+    image_size[0] = scene->r.xsch;
+    image_size[1] = scene->r.ysch;
+  }
+  else {
+    image_size[0] = strip_elem->orig_height;
+    image_size[1] = strip_elem->orig_height;
+  }
 
-  float image_size[2] = {strip_elem->orig_height, strip_elem->orig_height};
   mul_v2_fl(image_size, 0.5f);
   float a[2] = {image_size[0], image_size[1]};
   float b[2] = {image_size[0], -image_size[1]};
@@ -2102,12 +2114,7 @@ static void seq_draw_image_origin_and_outline(const bContext *C, Sequence *seq)
   immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
 
   float col[3];
-  if (seq == ed->act_seq) {
-    UI_GetThemeColor3fv(TH_SEQ_ACTIVE, col);
-  }
-  else {
-    UI_GetThemeColor3fv(TH_SEQ_SELECTED, col);
-  }
+  UI_GetThemeColor3fv(TH_SEQ_SELECTED, col);
   immUniformColor3fv(col);
   immUniform1f("lineWidth", U.pixelsize);
   immBegin(GPU_PRIM_LINE_LOOP, 4);
diff --git a/source/blender/editors/transform/transform_convert_sequencer_image.c b/source/blender/editors/transform/transform_convert_sequencer_image.c
index b7f0324fe58..1a4ee0d5b2d 100644
--- a/source/blender/editors/transform/transform_convert_sequencer_image.c
+++ b/source/blender/editors/transform/transform_convert_sequencer_image.c
@@ -51,12 +51,17 @@ typedef struct TransDataSeq {
   float orig_rotation;
 } TransDataSeq;
 
-static TransData *SeqToTransData(
-    Sequence *seq, TransData *td, TransData2D *td2d, TransDataSeq *tdseq, int vert_index)
+static TransData *SeqToTransData(const Scene *scene,
+                                 Sequence *seq,
+                                 TransData *td,
+                                 TransData2D *td2d,
+                                 TransDataSeq *tdseq,
+                                 int vert_index)
 {
   const StripTransform *transform = seq->strip->transform;
-  float vertex[2] = {transform->xofs + transform->origin[0],
-                     transform->yofs + transform->origin[1]};
+  float origin[2];
+  SEQ_image_transform_origin_offset_get(scene, seq, origin);
+  float vertex[2] = {transform->xofs + origin[0], transform->yofs + origin[1]};
 
   /* Add control vertex, so rotation and scale can be calculated. */
   if (vert_index == 1) {
@@ -72,8 +77,8 @@ static TransData *SeqToTransData(
   td->loc = td2d->loc;
   copy_v3_v3(td->iloc, td->loc);
 
-  td->center[0] = transform->xofs + transform->origin[0];
-  td->center[1] = transform->yofs + transform->origin[1];
+  td->center[0] = transform->xofs + origin[0];
+  td->center[1] = transform->yofs + origin[1];
 
   memset(td->axismtx, 0, sizeof(td->axismtx));
   td->axismtx[2][2] = 1.0f;
@@ -115,9 +120,9 @@ void createTransSeqImageData(TransInfo *t)
 
   Sequence *seq;
   SEQ_ITERATOR_FOREACH (seq, strips) {
-    SeqToTransData(seq, td++, td2d++, tdseq++, 0);
-    SeqToTransData(seq, td++, td2d++, tdseq++, 1);
-    SeqToTransData(seq, td++, td2d++, tdseq++, 2);
+    SeqToTransData(t->scene, seq, td++, td2d++, tdseq++, 0);
+    SeqToTransData(t->scene, seq, td++, td2d++, tdseq++, 1);
+    SeqToTransData(t->scene, seq, td++, td2d++, tdseq++, 2);
   }
 
   SEQ_collection_free(strips);
@@ -148,8 +153,10 @@ void recalcData_sequencer_image(TransInfo *t)
     TransDataSeq *tdseq = td->extra;
     Sequence *seq = tdseq->seq;
     StripTransform *transform = seq->strip->transform;
-    transform->xofs = round_fl_to_int(loc[0] - transform->origin[0]);
-    transform->yofs = round_fl_to_int(loc[1] - transform->origin[1]);
+    float origin[2];
+    SEQ_image_transform_origin_offset_get(t->scene, seq, origin);
+    transform->xofs = round_fl_to_int(loc[0] - origin[0]);
+    transform->yofs = round_fl_to_int(loc[1] - origin[1]);
     transform->scale_x = tdseq->orig_scale_x * fabs(len_v2(handle_x));
     transform->scale_y = tdseq->orig_scale_y * fabs(len_v2(handle_y));
     /* Scaling can cause negative rotation. */
diff --git a/source/blender/editors/transform/transform_gizmo_2d.c b/source/blender/editors/transform/transform_gizmo_2d.c
index 599043ce1e0..a5940bea8f5 100644
--- a/source/blender/editors/transform/transform_gizmo_2d.c
+++ b/source/blender/editors/transform/transform_gizmo_2d.c
@@ -52,6 +52,7 @@
 #include "SEQ_iterator.h"
 #include "SEQ_sequencer.h"
 #include "SEQ_time.h"
+#include "SEQ_transform.h"
 
 #include "transform.h" /* own include */
 
@@ -290,8 +291,10 @@ static bool gizmo2d_calc_center(const bContext *C, float r_center[2])
     Sequence *seq;
     SEQ_ITERATOR_FOREACH (seq, strips) {
       StripTransform *transform = seq->strip->transform;
-      r_center[0] += transform->xofs + transform->origin[0];
-      r_center[1] += transform->yofs + transform->origin[1];
+      float origin[2];
+      SEQ_image_transform_origin_offset_get(CTX_data_scene(C), seq, origin);
+      r_center[0] += transform->xofs + origin[0];
+      r_center[1] += transform->yofs + origin[1];
     }
     r_center[0] /= SEQ_collection_len(strips);
     r_center[1] /= SEQ_collection_len(strips);
diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c
index c2a9b2aa056..96687ba73d2 100644
--- a/source/blender/makesrna/intern/rna_sequencer.c
+++ b/source/blender/makesrna/intern/rna_sequencer.c
@@ -1445,7 +1445,7 @@ static void rna_def_strip_transform(BlenderRNA *brna)
   prop = RNA_def_property(srna, "origin", PROP_FLOAT, PROP_PIXEL);
   RNA_def_property_float_sdna(prop, NULL, "origin");
   RNA_def_property_ui_text(prop, "Origin", "Origin of image for transformation");
-  RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 100, 2);
+  RNA_def_property_ui_range(prop, 0, 1, 1, 3);
   RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_SequenceTransform_update");
 
   RNA_def_struct_path_func(srna, "rna_SequenceTransform_path");
diff --git a/source/blender/sequencer/SEQ_transform.h b/source/blender/sequencer/SEQ_transform.h
index 1977835f627..9d83359045b 100644
--- a/source/blender/sequencer/SEQ_transform.h
+++ b/source/blender/sequencer/SEQ_transform.h
@@ -60,6 +60,9 @@ void SEQ_transform_offset_after_frame(struct Scene *scene,
                                       struct ListBase *seqbase,
                                       const int delta,
                                       const int timeline_frame);
+void SEQ_image_transform_origin_offset_get(const struct Scene *scene,
+                                           const struct Sequence *seq,
+                                           float r_origin[2]);
 
 #ifdef __cplusplus
 }
diff --git a/source/blender/sequencer/intern/render.c b/source/blender/sequencer/intern/render.c
index a63cfed4427..2fe4aa2aca6 100644
--- a/source/blender/sequencer/intern/render.c
+++ b/source/blender/sequencer/intern/render.c
@@ -72,6 +72,7 @@
 #include "SEQ_render.h"
 #include "SEQ_sequencer.h"
 #include "SEQ_time.h"
+#include "SEQ_transform.h"
 #include "SEQ_utils.h"
 
 #include "effects.h"
@@ -396,7 +397,8 @@ static bool seq_need_scale_to_render_size(const Sequence *seq, bool is_proxy_ima
   return false;
 }
 
-static void sequencer_image_crop_transform_matrix(const Sequence *seq,
+static void sequencer_image_crop_transform_matrix(const Scene *scene,
+                                                  const Sequence *seq,
                                                   const ImBuf *in,
                                                   const ImBuf *out,
                       

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list