[Bf-blender-cvs] [c3291825bf9] temp-gpencil-io: GPencil: Cleanup, remove tmp and is_left variable

Falk David noreply at git.blender.org
Wed Mar 3 22:12:06 CET 2021


Commit: c3291825bf976b3d9d4a5477dee84ffc3c0c06a3
Author: Falk David
Date:   Wed Mar 3 22:11:52 2021 +0100
Branches: temp-gpencil-io
https://developer.blender.org/rBc3291825bf976b3d9d4a5477dee84ffc3c0c06a3

GPencil: Cleanup, remove tmp and is_left variable

Clean up the perimeter calculation code.

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

M	source/blender/blenkernel/intern/gpencil_geom.c

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

diff --git a/source/blender/blenkernel/intern/gpencil_geom.c b/source/blender/blenkernel/intern/gpencil_geom.c
index fa07d2f85de..d07b1ccaf38 100644
--- a/source/blender/blenkernel/intern/gpencil_geom.c
+++ b/source/blender/blenkernel/intern/gpencil_geom.c
@@ -3487,15 +3487,13 @@ void BKE_gpencil_stroke_to_view_space(RegionView3D *rv3d, bGPDstroke *gps, float
  */
 void BKE_gpencil_stroke_from_view_space(RegionView3D *rv3d, bGPDstroke *gps, float diff_mat[4][4])
 {
-  float tmp[3];
   float inverse_diff_mat[4][4];
   invert_m4_m4(inverse_diff_mat, diff_mat);
 
   for (int i = 0; i < gps->totpoints; i++) {
     bGPDspoint *pt = &gps->points[i];
-    mul_v3_m4v3(tmp, rv3d->viewinv, &pt->x);
-    mul_m4_v3(inverse_diff_mat, tmp);
-    copy_v3_v3(&pt->x, tmp);
+    mul_v3_m4v3(&pt->x, rv3d->viewinv, &pt->x);
+    mul_m4_v3(inverse_diff_mat, &pt->x);
   }
 }
 
@@ -3505,14 +3503,12 @@ void BKE_gpencil_stroke_from_view_space(RegionView3D *rv3d, bGPDstroke *gps, flo
 typedef struct tPerimeterPoint {
   struct tPerimeterPoint *next, *prev;
   float x, y, z;
-  bool is_left;
 } tPerimeterPoint;
 
-static tPerimeterPoint *new_perimeter_point(const float pt[3], bool is_left)
+static tPerimeterPoint *new_perimeter_point(const float pt[3])
 {
   tPerimeterPoint *new_pt = MEM_callocN(sizeof(tPerimeterPoint), __func__);
   copy_v3_v3(&new_pt->x, pt);
-  new_pt->is_left = is_left;
   return new_pt;
 }
 
@@ -3521,8 +3517,7 @@ static int generate_arc_from_point_to_point(ListBase *list,
                                             tPerimeterPoint *to,
                                             float center_pt[3],
                                             int subdivisions,
-                                            bool clockwise,
-                                            bool is_left)
+                                            bool clockwise)
 {
   float vec_from[2];
   float vec_to[2];
@@ -3536,9 +3531,9 @@ static int generate_arc_from_point_to_point(ListBase *list,
   float det = cross_v2v2(vec_from, vec_to);
   float angle = clockwise ? M_PI - atan2f(-det, -dot) : atan2f(-det, -dot) + M_PI;
 
-  /* number of points is 2^(n+1) + 1 on half a circle (n=subdivisions)
+  /* Number of points is 2^(n+1) + 1 on half a circle (n=subdivisions)
    * so we multiply by (angle / pi) to get the right amount of
-   * points to insert */
+   * points to insert. */
   int num_points = (int)(((1 << (subdivisions + 1)) - 1) * (angle / M_PI));
   if (num_points > 0) {
     float angle_incr = angle / (float)num_points;
@@ -3563,7 +3558,7 @@ static int generate_arc_from_point_to_point(ListBase *list,
       add_v2_v2(vec_p, center_pt);
       vec_p[2] = center_pt[2];
 
-      tPerimeterPoint *new_point = new_perimeter_point(vec_p, is_left);
+      tPerimeterPoint *new_point = new_perimeter_point(vec_p);
       if (clockwise) {
         BLI_insertlinkbefore(list, last_point, new_point);
       }
@@ -3581,7 +3576,7 @@ static int generate_arc_from_point_to_point(ListBase *list,
 }
 
 static int generate_semi_circle_from_point_to_point(
-    ListBase *list, tPerimeterPoint *from, tPerimeterPoint *to, int subdivisions, bool is_left)
+    ListBase *list, tPerimeterPoint *from, tPerimeterPoint *to, int subdivisions)
 {
   int num_points = (1 << (subdivisions + 1)) + 1;
   float center_pt[3];
@@ -3593,19 +3588,19 @@ static int generate_semi_circle_from_point_to_point(
     return 0;
   }
 
-  float vec_p[3];  // temp vector to do the vector math
+  float vec_p[3];
   float angle_incr = M_PI / ((float)num_points - 1);
 
   tPerimeterPoint *last_point = from;
   for (int i = 1; i < num_points; i++) {
     float angle = i * angle_incr;
 
-    /* rotate vector around point to get perimeter points */
+    /* Rotate vector around point to get perimeter points. */
     rotate_v2_v2fl(vec_p, vec_center, angle);
     add_v2_v2(vec_p, center_pt);
     vec_p[2] = center_pt[2];
 
-    tPerimeterPoint *new_point = new_perimeter_point(vec_p, is_left);
+    tPerimeterPoint *new_point = new_perimeter_point(vec_p);
     BLI_insertlinkafter(list, last_point, new_point);
 
     last_point = new_point;
@@ -3619,8 +3614,7 @@ static int generate_perimeter_cap(const float point[4],
                                   float radius,
                                   ListBase *list,
                                   int subdivisions,
-                                  short cap_type,
-                                  bool is_left)
+                                  short cap_type)
 {
   float cap_vec[2];
   sub_v2_v2v2(cap_vec, other_point, point);
@@ -3647,8 +3641,8 @@ static int generate_perimeter_cap(const float point[4],
   copy_v3_v3(vec_perimeter_inv, point);
   add_v2_v2(vec_perimeter_inv, cap_nvec_inv);
 
-  tPerimeterPoint *p_pt = new_perimeter_point(vec_perimeter, is_left);
-  tPerimeterPoint *p_pt_inv = new_perimeter_point(vec_perimeter_inv, is_left);
+  tPerimeterPoint *p_pt = new_perimeter_point(vec_perimeter);
+  tPerimeterPoint *p_pt_inv = new_perimeter_point(vec_perimeter_inv);
 
   BLI_addtail(list, p_pt);
   BLI_addtail(list, p_pt_inv);
@@ -3656,7 +3650,7 @@ static int generate_perimeter_cap(const float point[4],
   int num_points = 0;
   if (cap_type == GP_STROKE_CAP_ROUND) {
     num_points += generate_semi_circle_from_point_to_point(
-        list, p_pt, p_pt_inv, subdivisions, is_left);
+        list, p_pt, p_pt_inv, subdivisions);
   }
 
   return num_points + 2;
@@ -3723,8 +3717,7 @@ static ListBase *gpencil_stroke_perimeter_ex(const bGPdata *gpd,
                                                  first_radius,
                                                  perimeter_right_side,
                                                  subdivisions,
-                                                 gps->caps[0],
-                                                 false);
+                                                 gps->caps[0]);
 
   /* generate perimeter points  */
   float curr_pt[3], next_pt[3], prev_pt[3];
@@ -3802,8 +3795,8 @@ static ListBase *gpencil_stroke_perimeter_ex(const bGPdata *gpd,
       negate_v2(nvec_next);
       add_v2_v2(nvec_next_pt, nvec_next);
 
-      tPerimeterPoint *normal_prev = new_perimeter_point(nvec_prev_pt, true);
-      tPerimeterPoint *normal_next = new_perimeter_point(nvec_next_pt, false);
+      tPerimeterPoint *normal_prev = new_perimeter_point(nvec_prev_pt);
+      tPerimeterPoint *normal_next = new_perimeter_point(nvec_next_pt);
 
       BLI_addtail(perimeter_left_side, normal_prev);
       BLI_addtail(perimeter_right_side, normal_next);
@@ -3821,15 +3814,15 @@ static ListBase *gpencil_stroke_perimeter_ex(const bGPdata *gpd,
         copy_v3_v3(nvec_next_pt, curr_pt);
         add_v2_v2(nvec_next_pt, nvec_next);
 
-        tPerimeterPoint *normal_prev = new_perimeter_point(nvec_prev_pt, true);
-        tPerimeterPoint *normal_next = new_perimeter_point(nvec_next_pt, true);
+        tPerimeterPoint *normal_prev = new_perimeter_point(nvec_prev_pt);
+        tPerimeterPoint *normal_next = new_perimeter_point(nvec_next_pt);
 
         BLI_addtail(perimeter_left_side, normal_prev);
         BLI_addtail(perimeter_left_side, normal_next);
         num_perimeter_points += 2;
 
         num_perimeter_points += generate_arc_from_point_to_point(
-            perimeter_left_side, normal_prev, normal_next, curr_pt, subdivisions, true, true);
+            perimeter_left_side, normal_prev, normal_next, curr_pt, subdivisions, true);
 
         if (miter_length < prev_length && miter_length < next_length) {
           copy_v3_v3(miter_right_pt, curr_pt);
@@ -3841,7 +3834,7 @@ static ListBase *gpencil_stroke_perimeter_ex(const bGPdata *gpd,
           add_v2_v2(miter_right_pt, nvec_next);
         }
 
-        tPerimeterPoint *miter_right = new_perimeter_point(miter_right_pt, false);
+        tPerimeterPoint *miter_right = new_perimeter_point(miter_right_pt);
         BLI_addtail(perimeter_right_side, miter_right);
         num_perimeter_points++;
       }
@@ -3856,15 +3849,15 @@ static ListBase *gpencil_stroke_perimeter_ex(const bGPdata *gpd,
         copy_v3_v3(nvec_next_pt, curr_pt);
         add_v2_v2(nvec_next_pt, nvec_next);
 
-        tPerimeterPoint *normal_prev = new_perimeter_point(nvec_prev_pt, false);
-        tPerimeterPoint *normal_next = new_perimeter_point(nvec_next_pt, false);
+        tPerimeterPoint *normal_prev = new_perimeter_point(nvec_prev_pt);
+        tPerimeterPoint *normal_next = new_perimeter_point(nvec_next_pt);
 
         BLI_addtail(perimeter_right_side, normal_prev);
         BLI_addtail(perimeter_right_side, normal_next);
         num_perimeter_points += 2;
 
         num_perimeter_points += generate_arc_from_point_to_point(
-            perimeter_right_side, normal_prev, normal_next, curr_pt, subdivisions, false, false);
+            perimeter_right_side, normal_prev, normal_next, curr_pt, subdivisions, false);
 
         if (miter_length < prev_length && miter_length < next_length) {
           copy_v3_v3(miter_left_pt, curr_pt);
@@ -3876,7 +3869,7 @@ static ListBase *gpencil_stroke_perimeter_ex(const bGPdata *gpd,
           add_v2_v2(miter_left_pt, nvec_prev);
         }
 
-        tPerimeterPoint *miter_left = new_perimeter_point(miter_left_pt, true);
+        tPerimeterPoint *miter_left = new_perimeter_point(miter_left_pt);
         BLI_addtail(perimeter_left_side, miter_left);
         num_perimeter_points++;
       }
@@ -3885,7 +3878,7 @@ static ListBase *gpencil_stroke_perimeter_ex(const bGPdata *gpd,
 
   /* generate points for end cap */
   num_perimeter_points += generate_perimeter_cap(
-      last_pt, last_prev_pt, last_radius, perimeter_right_side, subdivisions, gps->caps[1], false);
+      last_pt, last_prev_pt, last_radius, perimeter_right_side, subdivisions, gps->caps[1]);
 
   /* merge both sides to one list */
   BLI_listbase_reverse(perimeter_right_side);
@@ -3900,7 +3893,7 @@ static ListBase *gpencil_stroke_perimeter_ex(const bGPdata *gpd,
   interp_v3_v3v3(close_pt, &close_last->x, &close_first->x, 0.99f);
 
   if (compare_v3v3(close_pt, &close_first->x, FLT_EPSILON) == false) {
-    tPerimeterPoint *close_p_pt = new_perimeter_point(close_pt, true);
+    tPerimeterPoint *close_p_pt = new_perimeter_point(cl

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list