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:
authorCampbell Barton <ideasman42@gmail.com>2012-04-23 06:17:57 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-04-23 06:17:57 +0400
commit792f536b368067fd27d0eefbe1bf6c91123220f4 (patch)
tree125ac2b55c19bc3ea0ec49b684810cb983ffff4d /source/blender/bmesh
parent16ff7e40e66f93484695445b89090547de78d086 (diff)
code cleanup: better use of BLI_array_* (grow in larger steps where possible), include BMO_iter_new in for loops.
Diffstat (limited to 'source/blender/bmesh')
-rw-r--r--source/blender/bmesh/intern/bmesh_mods.c13
-rw-r--r--source/blender/bmesh/intern/bmesh_mods.h2
-rw-r--r--source/blender/bmesh/intern/bmesh_operator_api.h3
-rw-r--r--source/blender/bmesh/operators/bmo_extrude.c13
-rw-r--r--source/blender/bmesh/operators/bmo_inset.c4
-rw-r--r--source/blender/bmesh/operators/bmo_subdivide.c8
-rw-r--r--source/blender/bmesh/operators/bmo_triangulate.c21
-rw-r--r--source/blender/bmesh/operators/bmo_utils.c21
8 files changed, 33 insertions, 52 deletions
diff --git a/source/blender/bmesh/intern/bmesh_mods.c b/source/blender/bmesh/intern/bmesh_mods.c
index 3474d4b3194..a5e761af783 100644
--- a/source/blender/bmesh/intern/bmesh_mods.c
+++ b/source/blender/bmesh/intern/bmesh_mods.c
@@ -758,7 +758,7 @@ BMVert *BM_edge_split_n(BMesh *bm, BMEdge *e, int numcuts)
/**
* Checks if a face is valid in the data structure
*/
-int BM_face_validate(BMesh *bm, BMFace *face, FILE *err)
+int BM_face_validate(BMFace *face, FILE *err)
{
BMIter iter;
BLI_array_declare(verts);
@@ -771,10 +771,9 @@ int BM_face_validate(BMesh *bm, BMFace *face, FILE *err)
fflush(err);
}
- for (l = BM_iter_new(&iter, bm, BM_LOOPS_OF_FACE, face); l; l = BM_iter_step(&iter)) {
- BLI_array_growone(verts);
- verts[BLI_array_count(verts) - 1] = l->v;
-
+ BLI_array_growitems(verts, face->len);
+ BM_ITER_ELEM_INDEX (l, &iter, face, BM_LOOPS_OF_FACE, i) {
+ verts[i] = l->v;
if (l->e->v1 == l->e->v2) {
fprintf(err, "Found bmesh edge with identical verts!\n");
fprintf(err, " edge ptr: %p, vert: %p\n", l->e, l->e->v1);
@@ -783,8 +782,8 @@ int BM_face_validate(BMesh *bm, BMFace *face, FILE *err)
}
}
- for (i = 0; i < BLI_array_count(verts); i++) {
- for (j = 0; j < BLI_array_count(verts); j++) {
+ for (i = 0; i < face->len; i++) {
+ for (j = 0; j < face->len; j++) {
if (j == i) {
continue;
}
diff --git a/source/blender/bmesh/intern/bmesh_mods.h b/source/blender/bmesh/intern/bmesh_mods.h
index 2cb599f75d3..802c6cca05d 100644
--- a/source/blender/bmesh/intern/bmesh_mods.h
+++ b/source/blender/bmesh/intern/bmesh_mods.h
@@ -57,7 +57,7 @@ BMVert *BM_edge_split(BMesh *bm, BMEdge *e, BMVert *v, BMEdge **r_e, float perce
BMVert *BM_edge_split_n(BMesh *bm, BMEdge *e, int numcuts);
-int BM_face_validate(BMesh *bm, BMFace *face, FILE *err);
+int BM_face_validate(BMFace *face, FILE *err);
void BM_edge_calc_rotate(BMEdge *e, int ccw,
BMLoop **r_l1, BMLoop **r_l2);
diff --git a/source/blender/bmesh/intern/bmesh_operator_api.h b/source/blender/bmesh/intern/bmesh_operator_api.h
index b01b80f1ef4..bf66388fb9e 100644
--- a/source/blender/bmesh/intern/bmesh_operator_api.h
+++ b/source/blender/bmesh/intern/bmesh_operator_api.h
@@ -413,8 +413,7 @@ void *BMO_iter_map_value_p(BMOIter *iter);
float BMO_iter_map_value_f(BMOIter *iter);
#define BMO_ITER(ele, iter, bm, op, slotname, restrict) \
- ele = BMO_iter_new(iter, bm, op, slotname, restrict); \
- for ( ; ele; ele = BMO_iter_step(iter))
+ for (ele = BMO_iter_new(iter, bm, op, slotname, restrict); ele; ele = BMO_iter_step(iter))
/******************* Inlined Functions********************/
typedef void (*opexec)(BMesh *bm, BMOperator *op);
diff --git a/source/blender/bmesh/operators/bmo_extrude.c b/source/blender/bmesh/operators/bmo_extrude.c
index db665c06f82..19e2dd85b0e 100644
--- a/source/blender/bmesh/operators/bmo_extrude.c
+++ b/source/blender/bmesh/operators/bmo_extrude.c
@@ -184,8 +184,7 @@ void bmo_extrude_edge_only_exec(BMesh *bm, BMOperator *op)
BMO_op_initf(bm, &dupeop, "dupe geom=%fve", EXT_INPUT);
BMO_op_exec(bm, &dupeop);
- e = BMO_iter_new(&siter, bm, &dupeop, "boundarymap", 0);
- for ( ; e; e = BMO_iter_step(&siter)) {
+ for (e = BMO_iter_new(&siter, bm, &dupeop, "boundarymap", 0); e; e = BMO_iter_step(&siter)) {
e2 = BMO_iter_map_value(&siter);
e2 = *(BMEdge **)e2;
@@ -226,8 +225,7 @@ void bmo_extrude_vert_indiv_exec(BMesh *bm, BMOperator *op)
BMVert *v, *dupev;
BMEdge *e;
- v = BMO_iter_new(&siter, bm, op, "verts", BM_VERT);
- for ( ; v; v = BMO_iter_step(&siter)) {
+ for (v = BMO_iter_new(&siter, bm, op, "verts", BM_VERT); v; v = BMO_iter_step(&siter)) {
dupev = BM_vert_create(bm, v->co, v);
e = BM_edge_create(bm, v, dupev, NULL, FALSE);
@@ -343,8 +341,8 @@ void bmo_extrude_face_region_exec(BMesh *bm, BMOperator *op)
}
BMO_slot_copy(&dupeop, op, "newout", "geomout");
- e = BMO_iter_new(&siter, bm, &dupeop, "boundarymap", 0);
- for ( ; e; e = BMO_iter_step(&siter)) {
+
+ for (e = BMO_iter_new(&siter, bm, &dupeop, "boundarymap", 0); e; e = BMO_iter_step(&siter)) {
/* this should always be wire, so this is mainly a speedup to avoid map lookup */
if (BM_edge_is_wire(e) && BMO_slot_map_contains(bm, op, "exclude", e)) {
@@ -389,8 +387,7 @@ void bmo_extrude_face_region_exec(BMesh *bm, BMOperator *op)
}
/* link isolated vert */
- v = BMO_iter_new(&siter, bm, &dupeop, "isovertmap", 0);
- for ( ; v; v = BMO_iter_step(&siter)) {
+ for (v = BMO_iter_new(&siter, bm, &dupeop, "isovertmap", 0); v; v = BMO_iter_step(&siter)) {
v2 = *((void **)BMO_iter_map_value(&siter));
BM_edge_create(bm, v, v2, v->e, TRUE);
}
diff --git a/source/blender/bmesh/operators/bmo_inset.c b/source/blender/bmesh/operators/bmo_inset.c
index 6e3024c0fa1..ee52f8bc0a9 100644
--- a/source/blender/bmesh/operators/bmo_inset.c
+++ b/source/blender/bmesh/operators/bmo_inset.c
@@ -524,8 +524,8 @@ void bmo_inset_exec(BMesh *bm, BMOperator *op)
BM_ITER_MESH_INDEX (v, &iter, bm, BM_VERTS_OF_MESH, i) {
if (BM_elem_flag_test(v, BM_ELEM_TAG)) {
const float fac = (depth *
- (use_relative_offset ? bm_vert_avg_tag_dist(v) : 1.0f) *
- (use_even_boundry ? BM_vert_calc_shell_factor(v) : 1.0f));
+ (use_relative_offset ? bm_vert_avg_tag_dist(v) : 1.0f) *
+ (use_even_boundry ? BM_vert_calc_shell_factor(v) : 1.0f));
madd_v3_v3v3fl(varr_co[i], v->co, v->no, fac);
}
}
diff --git a/source/blender/bmesh/operators/bmo_subdivide.c b/source/blender/bmesh/operators/bmo_subdivide.c
index d629585f7cd..e2f00e3187f 100644
--- a/source/blender/bmesh/operators/bmo_subdivide.c
+++ b/source/blender/bmesh/operators/bmo_subdivide.c
@@ -1042,9 +1042,8 @@ void BM_mesh_esubdivideflag(Object *UNUSED(obedit), BMesh *bm, int flag, float s
BMOIter iter;
BMElem *ele;
// int i;
-
- ele = BMO_iter_new(&iter, bm, &op, "outinner", BM_EDGE|BM_VERT);
- for ( ; ele; ele = BMO_iter_step(&iter)) {
+
+ for (ele = BMO_iter_new(&iter, bm, &op, "outinner", BM_EDGE | BM_VERT); ele; ele = BMO_iter_step(&iter)) {
BM_elem_select_set(bm, ele, TRUE);
}
}
@@ -1056,8 +1055,7 @@ void BM_mesh_esubdivideflag(Object *UNUSED(obedit), BMesh *bm, int flag, float s
/* deselect input */
BM_mesh_elem_hflag_disable_all(bm, BM_VERT | BM_EDGE | BM_FACE, BM_ELEM_SELECT, FALSE);
- ele = BMO_iter_new(&iter, bm, &op, "outinner", BM_EDGE|BM_VERT);
- for ( ; ele; ele = BMO_iter_step(&iter)) {
+ for (ele = BMO_iter_new(&iter, bm, &op, "outinner", BM_EDGE | BM_VERT); ele; ele = BMO_iter_step(&iter)) {
BM_elem_select_set(bm, ele, TRUE);
if (ele->head.htype == BM_VERT) {
diff --git a/source/blender/bmesh/operators/bmo_triangulate.c b/source/blender/bmesh/operators/bmo_triangulate.c
index 916b10d707e..7fd6cf6769c 100644
--- a/source/blender/bmesh/operators/bmo_triangulate.c
+++ b/source/blender/bmesh/operators/bmo_triangulate.c
@@ -51,21 +51,16 @@ void bmo_triangulate_exec(BMesh *bm, BMOperator *op)
BLI_array_declare(newfaces);
float (*projectverts)[3] = NULL;
BLI_array_declare(projectverts);
- int i, lastlen = 0 /* , count = 0 */;
+ int i;
const int use_beauty = BMO_slot_bool_get(op, "use_beauty");
- face = BMO_iter_new(&siter, bm, op, "faces", BM_FACE);
- for ( ; face; face = BMO_iter_step(&siter)) {
- if (lastlen < face->len) {
- BLI_array_empty(projectverts);
- BLI_array_empty(newfaces);
- for (lastlen = 0; lastlen < face->len; lastlen++) {
- BLI_array_growone(projectverts);
- BLI_array_growone(projectverts);
- BLI_array_growone(projectverts);
- BLI_array_growone(newfaces);
- }
- }
+ for (face = BMO_iter_new(&siter, bm, op, "faces", BM_FACE); face; face = BMO_iter_step(&siter)) {
+
+ BLI_array_empty(projectverts);
+ BLI_array_empty(newfaces);
+
+ BLI_array_growitems(projectverts, face->len * 3);
+ BLI_array_growitems(newfaces, face->len);
BM_face_triangulate(bm, face, projectverts, EDGE_NEW, FACE_NEW, newfaces, use_beauty);
diff --git a/source/blender/bmesh/operators/bmo_utils.c b/source/blender/bmesh/operators/bmo_utils.c
index 801fa2012cf..3cfa70f6e6c 100644
--- a/source/blender/bmesh/operators/bmo_utils.c
+++ b/source/blender/bmesh/operators/bmo_utils.c
@@ -1046,12 +1046,10 @@ void bmo_face_reverseuvs_exec(BMesh *bm, BMOperator *op)
/* now that we have the uvs in the array, reverse! */
i = 0;
- BM_ITER_ELEM (lf, &l_iter, fs, BM_LOOPS_OF_FACE) {
+ BM_ITER_ELEM_INDEX (lf, &l_iter, fs, BM_LOOPS_OF_FACE, i) {
/* current loop uv is the previous loop uv */
MLoopUV *luv = CustomData_bmesh_get(&bm->ldata, lf->head.data, CD_MLOOPUV);
- luv->uv[0] = uvs[(fs->len - i - 1)][0];
- luv->uv[1] = uvs[(fs->len - i - 1)][1];
- i++;
+ copy_v2_v2(luv->uv, uvs[(fs->len - i - 1)]);
}
}
}
@@ -1140,25 +1138,20 @@ void bmo_face_reversecolors_exec(BMesh *bm, BMOperator *op)
BMO_ITER (fs, &fs_iter, bm, op, "faces", BM_FACE) {
if (CustomData_has_layer(&(bm->ldata), CD_MLOOPCOL)) {
BMLoop *lf; /* current face loops */
- int i = 0;
+ int i;
BLI_array_empty(cols);
- BM_ITER_ELEM (lf, &l_iter, fs, BM_LOOPS_OF_FACE) {
- MLoopCol *lcol = CustomData_bmesh_get(&bm->ldata, lf->head.data, CD_MLOOPCOL);
+ BLI_array_growitems(cols, fs->len);
- /* current loop uv is the previous loop color */
- BLI_array_growone(cols);
- cols[i] = *lcol;
- i++;
+ BM_ITER_ELEM_INDEX (lf, &l_iter, fs, BM_LOOPS_OF_FACE, i) {
+ cols[i] = *((MLoopCol *)CustomData_bmesh_get(&bm->ldata, lf->head.data, CD_MLOOPCOL));
}
/* now that we have the uvs in the array, reverse! */
- i = 0;
- BM_ITER_ELEM (lf, &l_iter, fs, BM_LOOPS_OF_FACE) {
+ BM_ITER_ELEM_INDEX (lf, &l_iter, fs, BM_LOOPS_OF_FACE, i) {
/* current loop uv is the previous loop color */
MLoopCol *lcol = CustomData_bmesh_get(&bm->ldata, lf->head.data, CD_MLOOPCOL);
*lcol = cols[(fs->len - i - 1)];
- i++;
}
}
}