[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56919] trunk/blender/source/blender/ editors/uvedit/uvedit_ops.c: code cleanup: remove some kludge from uv loop select
Campbell Barton
ideasman42 at gmail.com
Sun May 19 19:20:10 CEST 2013
Revision: 56919
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56919
Author: campbellbarton
Date: 2013-05-19 17:20:10 +0000 (Sun, 19 May 2013)
Log Message:
-----------
code cleanup: remove some kludge from uv loop select
Modified Paths:
--------------
trunk/blender/source/blender/editors/uvedit/uvedit_ops.c
Modified: trunk/blender/source/blender/editors/uvedit/uvedit_ops.c
===================================================================
--- trunk/blender/source/blender/editors/uvedit/uvedit_ops.c 2013-05-19 16:52:44 UTC (rev 56918)
+++ trunk/blender/source/blender/editors/uvedit/uvedit_ops.c 2013-05-19 17:20:10 UTC (rev 56919)
@@ -928,12 +928,9 @@
first->flag = 1;
}
-static UvMapVert *uv_select_edgeloop_vertex_map_get(UvVertMap *vmap, BMFace *efa, int a)
+static UvMapVert *uv_select_edgeloop_vertex_map_get(UvVertMap *vmap, BMFace *efa, BMLoop *l)
{
UvMapVert *iterv, *first;
- BMLoop *l;
-
- l = BM_iter_at_index(NULL, BM_LOOPS_OF_FACE, efa, a);
first = EDBM_uv_vert_map_at_index(vmap, BM_elem_index_get(l->v));
for (iterv = first; iterv; iterv = iterv->next) {
@@ -1006,8 +1003,10 @@
BMLoop *l;
MTexPoly *tf;
UvVertMap *vmap;
- UvMapVert *iterv1, *iterv2;
- int a, looking, nverts, starttotf, select;
+ UvMapVert *iterv_curr;
+ UvMapVert *iterv_next;
+ int starttotf;
+ bool looking, select;
const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
const int cd_poly_tex_offset = CustomData_get_offset(&em->bm->pdata, CD_MTEXPOLY);
@@ -1025,22 +1024,20 @@
BM_mesh_elem_hflag_disable_all(em->bm, BM_FACE, BM_ELEM_TAG, FALSE);
/* set flags for first face and verts */
- nverts = hit->efa->len;
- iterv1 = uv_select_edgeloop_vertex_map_get(vmap, hit->efa, hit->lindex);
- iterv2 = uv_select_edgeloop_vertex_map_get(vmap, hit->efa, (hit->lindex + 1) % nverts);
- uv_select_edgeloop_vertex_loop_flag(iterv1);
- uv_select_edgeloop_vertex_loop_flag(iterv2);
+ iterv_curr = uv_select_edgeloop_vertex_map_get(vmap, hit->efa, hit->l);
+ iterv_next = uv_select_edgeloop_vertex_map_get(vmap, hit->efa, hit->l->next);
+ uv_select_edgeloop_vertex_loop_flag(iterv_curr);
+ uv_select_edgeloop_vertex_loop_flag(iterv_next);
starttotf = 0;
- uv_select_edgeloop_edge_tag_faces(em, iterv1, iterv2, &starttotf);
+ uv_select_edgeloop_edge_tag_faces(em, iterv_curr, iterv_next, &starttotf);
/* sorry, first edge isn't even ok */
- if (iterv1->flag == 0 && iterv2->flag == 0) looking = 0;
- else looking = 1;
+ looking = !(iterv_curr->flag == 0 && iterv_next->flag == 0);
/* iterate */
while (looking) {
- looking = 0;
+ looking = false;
/* find correct valence edges which are not tagged yet, but connect to tagged one */
@@ -1048,23 +1045,21 @@
tf = BM_ELEM_CD_GET_VOID_P(efa, cd_poly_tex_offset);
if (!BM_elem_flag_test(efa, BM_ELEM_TAG) && uvedit_face_visible_test(scene, ima, efa, tf)) {
- nverts = efa->len;
- for (a = 0; a < nverts; a++) {
+ BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
/* check face not hidden and not tagged */
- iterv1 = uv_select_edgeloop_vertex_map_get(vmap, efa, a);
- iterv2 = uv_select_edgeloop_vertex_map_get(vmap, efa, (a + 1) % nverts);
-
- if (!iterv1 || !iterv2)
+ if (!(iterv_curr = uv_select_edgeloop_vertex_map_get(vmap, efa, l)))
continue;
+ if (!(iterv_next = uv_select_edgeloop_vertex_map_get(vmap, efa, l->next)))
+ continue;
/* check if vertex is tagged and has right valence */
- if (iterv1->flag || iterv2->flag) {
- if (uv_select_edgeloop_edge_tag_faces(em, iterv1, iterv2, &starttotf)) {
- looking = 1;
+ if (iterv_curr->flag || iterv_next->flag) {
+ if (uv_select_edgeloop_edge_tag_faces(em, iterv_curr, iterv_next, &starttotf)) {
+ looking = true;
BM_elem_flag_enable(efa, BM_ELEM_TAG);
- uv_select_edgeloop_vertex_loop_flag(iterv1);
- uv_select_edgeloop_vertex_loop_flag(iterv2);
+ uv_select_edgeloop_vertex_loop_flag(iterv_curr);
+ uv_select_edgeloop_vertex_loop_flag(iterv_next);
break;
}
}
@@ -1074,31 +1069,25 @@
}
/* do the actual select/deselect */
- nverts = hit->efa->len;
- iterv1 = uv_select_edgeloop_vertex_map_get(vmap, hit->efa, hit->lindex);
- iterv2 = uv_select_edgeloop_vertex_map_get(vmap, hit->efa, (hit->lindex + 1) % nverts);
- iterv1->flag = 1;
- iterv2->flag = 1;
+ iterv_curr = uv_select_edgeloop_vertex_map_get(vmap, hit->efa, hit->l);
+ iterv_next = uv_select_edgeloop_vertex_map_get(vmap, hit->efa, hit->l->next);
+ iterv_curr->flag = 1;
+ iterv_next->flag = 1;
if (extend) {
- if (uvedit_uv_select_test(scene, hit->l, cd_loop_uv_offset))
- select = 0;
- else
- select = 1;
+ select = !(uvedit_uv_select_test(scene, hit->l, cd_loop_uv_offset));
}
- else
- select = 1;
+ else {
+ select = true;
+ }
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
- a = 0;
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
- iterv1 = uv_select_edgeloop_vertex_map_get(vmap, efa, a);
+ iterv_curr = uv_select_edgeloop_vertex_map_get(vmap, efa, l);
- if (iterv1->flag) {
+ if (iterv_curr->flag) {
uvedit_uv_select_set(em, scene, l, select, false, cd_loop_uv_offset);
}
-
- a++;
}
}
@@ -2114,9 +2103,7 @@
/* mark 1 vertex as being hit */
BLI_array_grow_items(hitv, hit.efa->len);
BLI_array_grow_items(hituv, hit.efa->len);
- for (i = 0; i < hit.efa->len; i++) {
- hitv[i] = 0xFFFFFFFF;
- }
+ fill_vn_i(hitv, hit.efa->len, 0xFFFFFFFF);
hitv[hit.lindex] = hit.vert1;
hituv[hit.lindex] = hit.luv->uv;
More information about the Bf-blender-cvs
mailing list