[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58579] trunk/blender/source/blender: code cleanup: use iterator macros, and replace BM_LOOPS_OF_FACE with direct loop access when converting a bmesh to a mesh .
Campbell Barton
ideasman42 at gmail.com
Wed Jul 24 20:38:56 CEST 2013
Revision: 58579
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58579
Author: campbellbarton
Date: 2013-07-24 18:38:55 +0000 (Wed, 24 Jul 2013)
Log Message:
-----------
code cleanup: use iterator macros, and replace BM_LOOPS_OF_FACE with direct loop access when converting a bmesh to a mesh.
Modified Paths:
--------------
trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c
trunk/blender/source/blender/bmesh/operators/bmo_dupe.c
trunk/blender/source/blender/editors/mesh/editmesh_select.c
trunk/blender/source/blender/editors/mesh/editmesh_tools.c
Modified: trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c 2013-07-24 18:06:41 UTC (rev 58578)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c 2013-07-24 18:38:55 UTC (rev 58579)
@@ -583,9 +583,8 @@
MEdge *med, *medge;
BMVert *v, *eve;
BMEdge *e;
- BMLoop *l;
BMFace *f;
- BMIter iter, liter;
+ BMIter iter;
int i, j, ototvert;
const int cd_vert_bweight_offset = CustomData_get_offset(&bm->vdata, CD_BWEIGHT);
@@ -699,23 +698,27 @@
i = 0;
j = 0;
BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) {
+ BMLoop *l_iter, *l_first;
mpoly->loopstart = j;
mpoly->totloop = f->len;
mpoly->mat_nr = f->mat_nr;
mpoly->flag = BM_face_flag_to_mflag(f);
- l = BM_iter_new(&liter, bm, BM_LOOPS_OF_FACE, f);
- for ( ; l; l = BM_iter_step(&liter), j++, mloop++) {
- mloop->e = BM_elem_index_get(l->e);
- mloop->v = BM_elem_index_get(l->v);
+ l_iter = l_first = BM_FACE_FIRST_LOOP(f);
+ do {
+ mloop->e = BM_elem_index_get(l_iter->e);
+ mloop->v = BM_elem_index_get(l_iter->v);
- /* copy over customdat */
- CustomData_from_bmesh_block(&bm->ldata, &me->ldata, l->head.data, j);
- BM_CHECK_ELEMENT(l);
- BM_CHECK_ELEMENT(l->e);
- BM_CHECK_ELEMENT(l->v);
- }
+ /* copy over customdata */
+ CustomData_from_bmesh_block(&bm->ldata, &me->ldata, l_iter->head.data, j);
+ j++;
+ mloop++;
+ BM_CHECK_ELEMENT(l_iter);
+ BM_CHECK_ELEMENT(l_iter->e);
+ BM_CHECK_ELEMENT(l_iter->v);
+ } while ((l_iter = l_iter->next) != l_first);
+
if (f == bm->act_face) me->act_face = i;
/* copy over customdata */
Modified: trunk/blender/source/blender/bmesh/operators/bmo_dupe.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_dupe.c 2013-07-24 18:06:41 UTC (rev 58578)
+++ trunk/blender/source/blender/bmesh/operators/bmo_dupe.c 2013-07-24 18:38:55 UTC (rev 58579)
@@ -150,10 +150,7 @@
#endif
/* lookup edge */
- for (i = 0, source_loop = BM_iter_new(&iter, source_mesh, BM_LOOPS_OF_FACE, source_face);
- source_loop;
- source_loop = BM_iter_step(&iter), i++)
- {
+ BM_ITER_ELEM_INDEX (source_loop, &iter, source_face, BM_LOOPS_OF_FACE, i) {
vtar[i] = BLI_ghash_lookup(vhash, source_loop->v);
edar[i] = BLI_ghash_lookup(ehash, source_loop->e);
}
Modified: trunk/blender/source/blender/editors/mesh/editmesh_select.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_select.c 2013-07-24 18:06:41 UTC (rev 58578)
+++ trunk/blender/source/blender/editors/mesh/editmesh_select.c 2013-07-24 18:38:55 UTC (rev 58579)
@@ -1590,8 +1590,7 @@
}
if (em->bm->totfacesel) {
- efa = BM_iter_new(&iter, em->bm, BM_FACES_OF_MESH, NULL);
- for (; efa; efa = BM_iter_step(&iter)) {
+ BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
if (BM_elem_flag_test(efa, BM_ELEM_SELECT)) {
BM_face_select_set(em->bm, efa, true);
}
Modified: trunk/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_tools.c 2013-07-24 18:06:41 UTC (rev 58578)
+++ trunk/blender/source/blender/editors/mesh/editmesh_tools.c 2013-07-24 18:38:55 UTC (rev 58579)
@@ -2277,7 +2277,7 @@
/* store percentage of edge cut for KNIFE_EXACT here.*/
slot_edge_percents = BMO_slot_get(bmop.slots_in, "edge_percents");
- for (be = BM_iter_new(&iter, bm, BM_EDGES_OF_MESH, NULL); be; be = BM_iter_step(&iter)) {
+ BM_ITER_MESH (be, &iter, bm, BM_EDGES_OF_MESH) {
bool is_cut = false;
if (BM_elem_flag_test(be, BM_ELEM_SELECT)) {
const float *sco_a = screen_vert_coords[BM_elem_index_get(be->v1)];
More information about the Bf-blender-cvs
mailing list