[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44680] trunk/blender/source/blender: code cleanup - give edge split more helpful var names and replace edgetag macros with static functions .
Campbell Barton
ideasman42 at gmail.com
Tue Mar 6 18:23:35 CET 2012
Revision: 44680
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44680
Author: campbellbarton
Date: 2012-03-06 17:23:26 +0000 (Tue, 06 Mar 2012)
Log Message:
-----------
code cleanup - give edge split more helpful var names and replace edgetag macros with static functions.
Modified Paths:
--------------
trunk/blender/source/blender/bmesh/intern/bmesh_core.c
trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c
trunk/blender/source/blender/bmesh/operators/bmo_bevel.c
trunk/blender/source/blender/bmesh/operators/bmo_create.c
trunk/blender/source/blender/bmesh/operators/bmo_edgesplit.c
trunk/blender/source/blender/editors/mesh/bmesh_select.c
trunk/blender/source/blender/editors/mesh/bmesh_tools.c
trunk/blender/source/blender/editors/mesh/bmesh_utils.c
Modified: trunk/blender/source/blender/bmesh/intern/bmesh_core.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_core.c 2012-03-06 16:22:41 UTC (rev 44679)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_core.c 2012-03-06 17:23:26 UTC (rev 44680)
@@ -144,10 +144,12 @@
bm->totloop++;
- if (example)
+ if (example) {
CustomData_bmesh_copy_data(&bm->ldata, &bm->ldata, example->head.data, &l->head.data);
- else
+ }
+ else {
CustomData_bmesh_set_default(&bm->ldata, &l->head.data);
+ }
return l;
}
Modified: trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c 2012-03-06 16:22:41 UTC (rev 44679)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c 2012-03-06 17:23:26 UTC (rev 44680)
@@ -697,10 +697,12 @@
return NULL;
}
- if (lwalk->l)
+ if (lwalk->l) {
return lwalk->l->e;
- else
+ }
+ else {
return lwalk->wireedge;
+ }
}
static void *bmw_EdgeringWalker_step(BMWalker *walker)
Modified: trunk/blender/source/blender/bmesh/operators/bmo_bevel.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_bevel.c 2012-03-06 16:22:41 UTC (rev 44679)
+++ trunk/blender/source/blender/bmesh/operators/bmo_bevel.c 2012-03-06 17:23:26 UTC (rev 44680)
@@ -522,10 +522,12 @@
if (!vv || BMO_elem_flag_test(bm, vv, BEVEL_FLAG))
continue;
- if (j)
+ if (j) {
v1 = vv;
- else
+ }
+ else {
v2 = vv;
+ }
break;
}
}
Modified: trunk/blender/source/blender/bmesh/operators/bmo_create.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_create.c 2012-03-06 16:22:41 UTC (rev 44679)
+++ trunk/blender/source/blender/bmesh/operators/bmo_create.c 2012-03-06 17:23:26 UTC (rev 44680)
@@ -228,11 +228,13 @@
rad = count_edge_faces(bm, e);
- if (rad < 2)
+ if (rad < 2) {
starte = e;
- else
+ }
+ else {
continue;
-
+ }
+
/* do two passes, going forward then backwar */
for (i = 0; i < 2; i++) {
BLI_smallhash_init(hash);
Modified: trunk/blender/source/blender/bmesh/operators/bmo_edgesplit.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_edgesplit.c 2012-03-06 16:22:41 UTC (rev 44679)
+++ trunk/blender/source/blender/bmesh/operators/bmo_edgesplit.c 2012-03-06 17:23:26 UTC (rev 44680)
@@ -46,7 +46,7 @@
#define FACE_DEL 1
#define FACE_NEW 2
-static BMFace *remake_face(BMesh *bm, EdgeTag *etags, BMFace *f, BMVert **verts, BMEdge **edges_tmp)
+static BMFace *remake_face(BMesh *bm, EdgeTag *etags, BMFace *f, BMVert **f_verts, BMEdge **edges_tmp)
{
BMIter liter1, liter2;
EdgeTag *et;
@@ -57,12 +57,12 @@
int i;
/* we do final edge last */
- lastv1 = verts[f->len - 1];
- lastv2 = verts[0];
- /* v1 = verts[0]; */ /* UNUSED */
- /* v2 = verts[1]; */ /* UNUSED */
+ lastv1 = f_verts[f->len - 1];
+ lastv2 = f_verts[0];
+ /* v1 = f_verts[0]; */ /* UNUSED */
+ /* v2 = f_verts[1]; */ /* UNUSED */
for (i = 0; i < f->len - 1; i++) {
- e = BM_edge_create(bm, verts[i], verts[i + 1], NULL, TRUE);
+ e = BM_edge_create(bm, f_verts[i], f_verts[i + 1], NULL, TRUE);
if (!e) {
return NULL;
}
@@ -71,7 +71,7 @@
edges_tmp[i] = BM_edge_create(bm, lastv1, lastv2, NULL, TRUE);
- f2 = BM_face_create(bm, verts, edges_tmp, f->len, FALSE);
+ f2 = BM_face_create(bm, f_verts, edges_tmp, f->len, FALSE);
if (!f2) {
return NULL;
}
@@ -199,16 +199,37 @@
}
}
+/* helper functions for edge tag's */
+BM_INLINE BMVert *bm_edge_tag_vert_get(EdgeTag *et, BMVert *v, BMLoop *l)
+{
+ return (l->e->v1 == v) ? et->newv1 : et->newv2;
+}
+
+BM_INLINE void bm_edge_tag_vert_set(EdgeTag *et, BMVert *v, BMLoop *l, BMVert *vset)
+{
+ if (l->e->v1 == v) {
+ et->newv1 = vset;
+ }
+ else {
+ et->newv2 = vset;
+ }
+}
+
void bmo_edgesplit_exec(BMesh *bm, BMOperator *op)
{
- EdgeTag *etags, *et;
+ EdgeTag *etags, *et; /* edge aligned array of tags */
BMIter iter, liter;
BMOIter siter;
BMFace *f, *f2;
- BMLoop *l, *nextl, *prevl, *l2, *l3;
+ BMLoop *l, *l2, *l3;
+ BMLoop *l_next, *l_prev;
BMEdge *e, *e2;
- BMVert *v, *v2, **verts = NULL;
- BLI_array_declare(verts);
+ BMVert *v, *v2;
+
+ /* face/vert aligned vert array */
+ BMVert **f_verts = NULL;
+ BLI_array_declare(f_verts);
+
BMEdge **edges_tmp = NULL;
BLI_array_declare(edges_tmp);
int i, j;
@@ -238,25 +259,15 @@
BM_mesh_elem_index_ensure(bm, BM_EDGE);
-#ifdef ETV
-# undef ETV
-#endif
-#ifdef SETETV
-# undef SETETV
-#endif
-
-#define ETV(et, v, l) (l->e->v1 == v ? et->newv1 : et->newv2)
-#define SETETV(et, v, l, vs) l->e->v1 == v ? (et->newv1 = vs) : (et->newv2 = vs)
-
BM_ITER(f, &iter, bm, BM_FACES_OF_MESH, NULL) {
if (BMO_elem_flag_test(bm, f, FACE_NEW)) {
continue;
}
- BLI_array_empty(verts);
- BLI_array_growitems(verts, f->len);
- memset(verts, 0, sizeof(BMVert *) * f->len);
+ BLI_array_empty(f_verts);
+ BLI_array_growitems(f_verts, f->len);
+ memset(f_verts, 0, sizeof(BMVert *) * f->len);
/* this is passed onto remake_face() so it doesnt need to allocate
* a new array on each call. */
@@ -266,38 +277,37 @@
i = 0;
BM_ITER(l, &liter, bm, BM_LOOPS_OF_FACE, f) {
if (!BMO_elem_flag_test(bm, l->e, EDGE_SEAM)) {
- if (!verts[i]) {
+ if (!f_verts[i]) {
et = &etags[BM_elem_index_get(l->e)];
- if (ETV(et, l->v, l)) {
- verts[i] = ETV(et, l->v, l);
+ if (bm_edge_tag_vert_get(et, l->v, l)) {
+ f_verts[i] = bm_edge_tag_vert_get(et, l->v, l);
}
- else
- {
- verts[i] = l->v;
+ else {
+ f_verts[i] = l->v;
}
}
i++;
continue;
}
- nextl = l->next;
- prevl = l->prev;
+ l_next = l->next;
+ l_prev = l->prev;
for (j = 0; j < 2; j++) {
/* correct as long as i & j dont change during the loop */
const int fv_index = j ? (i + 1) % f->len : i; /* face vert index */
- l2 = j ? nextl : prevl;
+ l2 = j ? l_next : l_prev;
v = j ? l2->v : l->v;
if (BMO_elem_flag_test(bm, l2->e, EDGE_SEAM)) {
- if (verts[fv_index] == NULL) {
+ if (f_verts[fv_index] == NULL) {
/* make unique vert here for this face only */
v2 = BM_vert_create(bm, v->co, v);
- verts[fv_index] = v2;
+ f_verts[fv_index] = v2;
}
else {
- v2 = verts[fv_index];
+ v2 = f_verts[fv_index];
}
}
else {
@@ -324,12 +334,12 @@
if (l3 == NULL || (BMO_elem_flag_test(bm, l3->e, EDGE_SEAM) && l3->e != l->e)) {
et = &etags[BM_elem_index_get(l2->e)];
- if (ETV(et, v, l2) == NULL) {
+ if (bm_edge_tag_vert_get(et, v, l2) == NULL) {
v2 = BM_vert_create(bm, v->co, v);
l3 = l2;
do {
- SETETV(et, v, l3, v2);
+ bm_edge_tag_vert_set(et, v, l3, v2);
if (BM_edge_face_count(l3->e) != 2) {
break;
}
@@ -341,13 +351,13 @@
} while (l3 != l2 && !BMO_elem_flag_test(bm, l3->e, EDGE_SEAM));
}
else {
- v2 = ETV(et, v, l2);
+ v2 = bm_edge_tag_vert_get(et, v, l2);
}
- verts[fv_index] = v2;
+ f_verts[fv_index] = v2;
}
else {
- verts[fv_index] = v;
+ f_verts[fv_index] = v;
}
}
}
@@ -363,14 +373,14 @@
float no2[3];
float angle_error;
printf(" ** found QUAD\n");
- normal_tri_v3(no1, verts[0]->co, verts[1]->co, verts[2]->co);
- normal_tri_v3(no2, verts[0]->co, verts[2]->co, verts[3]->co);
+ normal_tri_v3(no1, f_verts[0]->co, f_verts[1]->co, f_verts[2]->co);
+ normal_tri_v3(no2, f_verts[0]->co, f_verts[2]->co, f_verts[3]->co);
if ((angle_error = angle_v3v3(no1, no2)) > 0.05) {
printf(" ERROR %.4f\n", angle_error);
- print_v3("0", verts[0]->co);
- print_v3("1", verts[1]->co);
- print_v3("2", verts[2]->co);
- print_v3("3", verts[3]->co);
+ print_v3("0", f_verts[0]->co);
+ print_v3("1", f_verts[1]->co);
+ print_v3("2", f_verts[2]->co);
+ print_v3("3", f_verts[3]->co);
}
}
@@ -379,13 +389,12 @@
}
#endif
- f2 = remake_face(bm, etags, f, verts, edges_tmp);
- if (!f2) {
- continue;
+ f2 = remake_face(bm, etags, f, f_verts, edges_tmp);
+ if (f2) {
+ BMO_elem_flag_enable(bm, f, FACE_DEL);
+ BMO_elem_flag_enable(bm, f2, FACE_NEW);
}
-
- BMO_elem_flag_enable(bm, f, FACE_DEL);
- BMO_elem_flag_enable(bm, f2, FACE_NEW);
+ /* else { ... should we raise an error here, or an assert? - campbell */
}
/* remake_face() sets invalid indices,
@@ -421,10 +430,7 @@
BMO_slot_buffer_from_flag(bm, op, "edgeout1", EDGE_RET1, BM_EDGE);
BMO_slot_buffer_from_flag(bm, op, "edgeout2", EDGE_RET2, BM_EDGE);
- BLI_array_free(verts);
+ BLI_array_free(f_verts);
BLI_array_free(edges_tmp);
if (etags) MEM_freeN(etags);
}
-
-#undef ETV
-#undef SETETV
Modified: trunk/blender/source/blender/editors/mesh/bmesh_select.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/bmesh_select.c 2012-03-06 16:22:41 UTC (rev 44679)
+++ trunk/blender/source/blender/editors/mesh/bmesh_select.c 2012-03-06 17:23:26 UTC (rev 44680)
@@ -335,10 +335,12 @@
if (data->dist > 3) {
int temp = abs(data->mval[0] - x) + abs(data->mval[1]- y);
if (BM_elem_flag_test(eve, BM_ELEM_SELECT) == data->select) {
- if (data->strict == 1)
+ if (data->strict == 1) {
return;
- else
+ }
+ else {
temp += 5;
+ }
}
if (temp < data->dist) {
Modified: trunk/blender/source/blender/editors/mesh/bmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/bmesh_tools.c 2012-03-06 16:22:41 UTC (rev 44679)
+++ trunk/blender/source/blender/editors/mesh/bmesh_tools.c 2012-03-06 17:23:26 UTC (rev 44680)
@@ -66,10 +66,12 @@
static void add_normal_aligned(float nor[3], const float add[3])
{
- if (dot_v3v3(nor, add) < -0.9999f)
+ if (dot_v3v3(nor, add) < -0.9999f) {
sub_v3_v3(nor, add);
- else
+ }
+ else {
sub_v3_v3(nor, add);
+ }
}
@@ -2646,8 +2648,9 @@
mul_v3_fl(co, blend);
add_v3_v3v3(eve->co, eve->co, co);
}
- else
+ else {
interp_v3_v3v3(eve->co, eve->co, co, blend);
+ }
copy_v3_v3(sco, co);
}
Modified: trunk/blender/source/blender/editors/mesh/bmesh_utils.c
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list