Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2020-03-06 19:18:10 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2020-03-09 16:47:59 +0300
commit598ab525da3df3fef2033c159c570688c7282a8f (patch)
treeba2bd0b8fc6ee5d264512bf655def1a6ee5d7b31 /source/blender/bmesh
parentee5d7bc16b243f309c84bce5deddf3a86b7f4c14 (diff)
Cleanup: Replace ABS/SQUARE/CUBE with function calls
While it might be handy to have type-less functionality which is similar to how C++ math is implemented it can not be easily achieved with just preprocessor in a way which does not have side-effects on wrong usage. There macros where often used on a non-trivial expression, and there was at least one usage where it was causing an actual side effect/bug on Windows (see change around square_f(sh[index++]) in studiolight.c). For such cases it is handy to have a function which is guaranteed to have zero side-effects. The motivation behind actually removing the macros is that there is already a way to do similar calculation. Also, not having such macros is a way to guarantee that its usage is not changed in a way which have side-effects and that it's not used as an inspiration for cases where it should not be used. Differential Revision: https://developer.blender.org/D7051
Diffstat (limited to 'source/blender/bmesh')
-rw-r--r--source/blender/bmesh/intern/bmesh_edgeloop.c4
-rw-r--r--source/blender/bmesh/operators/bmo_planar_faces.c2
-rw-r--r--source/blender/bmesh/tools/bmesh_decimate_collapse.c2
-rw-r--r--source/blender/bmesh/tools/bmesh_intersect_edges.c10
-rw-r--r--source/blender/bmesh/tools/bmesh_region_match.c9
5 files changed, 16 insertions, 11 deletions
diff --git a/source/blender/bmesh/intern/bmesh_edgeloop.c b/source/blender/bmesh/intern/bmesh_edgeloop.c
index 49c71bf8298..c07bae5e3f2 100644
--- a/source/blender/bmesh/intern/bmesh_edgeloop.c
+++ b/source/blender/bmesh/intern/bmesh_edgeloop.c
@@ -82,7 +82,7 @@ static bool bm_loop_build(BMEdgeLoopStore *el_store, BMVert *v_prev, BMVert *v,
BMVert *v_next;
BMVert *v_first = v;
- BLI_assert(ABS(dir) == 1);
+ BLI_assert(abs(dir) == 1);
if (!BM_elem_flag_test(v, BM_ELEM_INTERNAL_TAG)) {
return true;
@@ -224,7 +224,7 @@ static bool bm_loop_path_build_step(BLI_mempool *vs_pool,
{
ListBase lb_tmp = {NULL, NULL};
struct VertStep *vs, *vs_next;
- BLI_assert(ABS(dir) == 1);
+ BLI_assert(abs(dir) == 1);
for (vs = lb->first; vs; vs = vs_next) {
BMIter iter;
diff --git a/source/blender/bmesh/operators/bmo_planar_faces.c b/source/blender/bmesh/operators/bmo_planar_faces.c
index 30aa473b2c7..9315d002d46 100644
--- a/source/blender/bmesh/operators/bmo_planar_faces.c
+++ b/source/blender/bmesh/operators/bmo_planar_faces.c
@@ -44,7 +44,7 @@ void bmo_planar_faces_exec(BMesh *bm, BMOperator *op)
const int faces_num = BMO_slot_buffer_count(op->slots_in, "faces");
const float eps = 0.00001f;
- const float eps_sq = SQUARE(eps);
+ const float eps_sq = square_f(eps);
BMOIter oiter;
BMFace *f;
diff --git a/source/blender/bmesh/tools/bmesh_decimate_collapse.c b/source/blender/bmesh/tools/bmesh_decimate_collapse.c
index 56febf12e71..c183f370faa 100644
--- a/source/blender/bmesh/tools/bmesh_decimate_collapse.c
+++ b/source/blender/bmesh/tools/bmesh_decimate_collapse.c
@@ -411,7 +411,7 @@ static int *bm_edge_symmetry_map(BMesh *bm, uint symmetry_axis, float limit)
BMEdge *e, **etable;
uint i;
int *edge_symmetry_map;
- const float limit_sq = SQUARE(limit);
+ const float limit_sq = square_f(limit);
KDTree_3d *tree;
tree = BLI_kdtree_3d_new(bm->totedge);
diff --git a/source/blender/bmesh/tools/bmesh_intersect_edges.c b/source/blender/bmesh/tools/bmesh_intersect_edges.c
index ce40256221e..6a51bceb6ac 100644
--- a/source/blender/bmesh/tools/bmesh_intersect_edges.c
+++ b/source/blender/bmesh/tools/bmesh_intersect_edges.c
@@ -272,7 +272,7 @@ static bool bm_edgexvert_isect_impl(BMVert *v,
}
if (v != e_v) {
- float dist_sq_vert = SQUARE(dist_sq_vert_factor) * len_squared_v3(dir);
+ float dist_sq_vert = square_f(dist_sq_vert_factor) * len_squared_v3(dir);
if (dist_sq_vert < data_dist_sq) {
/* Vert x Vert is already handled elsewhere. */
return false;
@@ -380,8 +380,8 @@ static bool bm_edgexedge_isect_impl(struct EDBMSplitData *data,
return false;
}
- float dist_sq_va = SQUARE(dist_sq_va_factor) * len_squared_v3(dir_a);
- float dist_sq_vb = SQUARE(dist_sq_vb_factor) * len_squared_v3(dir_b);
+ float dist_sq_va = square_f(dist_sq_va_factor) * len_squared_v3(dir_a);
+ float dist_sq_vb = square_f(dist_sq_vb_factor) * len_squared_v3(dir_b);
if (dist_sq_va < data->dist_sq || dist_sq_vb < data->dist_sq) {
/* Vert x Edge is already handled elsewhere. */
@@ -503,7 +503,7 @@ bool BM_mesh_intersect_edges(
BLI_Stack **pair_stack_vertxvert = pair_stack;
BLI_Stack **pair_stack_edgexelem = &pair_stack[KDOP_TREE_TYPE];
- const float dist_sq = SQUARE(dist);
+ const float dist_sq = square_f(dist);
const float dist_half = dist / 2;
struct EDBMSplitData data = {
@@ -511,7 +511,7 @@ bool BM_mesh_intersect_edges(
.pair_stack = pair_stack,
.cut_edges_len = 0,
.dist_sq = dist_sq,
- .dist_sq_sq = SQUARE(dist_sq),
+ .dist_sq_sq = square_f(dist_sq),
};
BM_mesh_elem_table_ensure(bm, BM_VERT | BM_EDGE);
diff --git a/source/blender/bmesh/tools/bmesh_region_match.c b/source/blender/bmesh/tools/bmesh_region_match.c
index c30992fa296..b4c2c3f091e 100644
--- a/source/blender/bmesh/tools/bmesh_region_match.c
+++ b/source/blender/bmesh/tools/bmesh_region_match.c
@@ -921,6 +921,11 @@ static void bm_face_array_visit(BMFace **faces,
/* signed user id */
typedef intptr_t SUID_Int;
+BLI_INLINE intptr_t abs_intptr(intptr_t a)
+{
+ return (a < 0) ? -a : a;
+}
+
static bool bm_edge_is_region_boundary(BMEdge *e)
{
if (e->l->radial_next != e->l) {
@@ -984,7 +989,7 @@ static SUID_Int bm_face_region_vert_boundary_id(BMVert *v)
id ^= (tot * PRIME_VERT_MID_B);
- return id ? ABS(id) : 1;
+ return id ? abs_intptr(id) : 1;
# undef PRIME_VERT_SMALL_A
# undef PRIME_VERT_SMALL_B
@@ -1039,7 +1044,7 @@ static SUID_Int bm_face_region_vert_pass_id(GHash *gh, BMVert *v)
/* disallow 0 & min (since it can't be flipped) */
id = (UNLIKELY(id == 0) ? 1 : UNLIKELY(id < id_min) ? id_min : id);
- return ABS(id);
+ return abs_intptr(id);
# undef PRIME_VERT_MID_A
# undef PRIME_VERT_MID_B