[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