[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45946] trunk/blender/source/blender/ editors/uvedit/uvedit_ops.c: code cleanup: dont use bmesh operator flags outside a bmesh operator, use hflag tagging instead.

Campbell Barton ideasman42 at gmail.com
Tue Apr 24 22:33:40 CEST 2012


Revision: 45946
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45946
Author:   campbellbarton
Date:     2012-04-24 20:33:39 +0000 (Tue, 24 Apr 2012)
Log Message:
-----------
code cleanup: dont use bmesh operator flags outside a bmesh operator, use hflag tagging instead.

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	2012-04-24 19:59:06 UTC (rev 45945)
+++ trunk/blender/source/blender/editors/uvedit/uvedit_ops.c	2012-04-24 20:33:39 UTC (rev 45946)
@@ -82,8 +82,6 @@
 
 #include "uvedit_intern.h"
 
-#define EFA_F1_FLAG 2
-
 static void select_all_perform(Scene *scene, Image *ima, BMEditMesh *em, int action);
 
 /************************* state testing ************************/
@@ -895,9 +893,22 @@
 	return found;
 }
 
+UvElement *ED_uv_element_get(UvElementMap *map, BMFace *efa, BMLoop *l)
+{
+	UvElement *element;
+
+	element = map->vert[BM_elem_index_get(l->v)];
+
+	for (; element; element = element->next)
+		if (element->face == efa)
+			return element;
+
+	return NULL;
+}
+
 /*********************** loop select ***********************/
 
-static void uv_vertex_loop_flag(UvMapVert *first)
+static void select_edgeloop_uv_vertex_loop_flag(UvMapVert *first)
 {
 	UvMapVert *iterv;
 	int count = 0;
@@ -913,7 +924,7 @@
 		first->flag = 1;
 }
 
-static UvMapVert *uv_vertex_map_get(UvVertMap *vmap, BMFace *efa, int a)
+static UvMapVert *select_edgeloop_uv_vertex_map_get(UvVertMap *vmap, BMFace *efa, int a)
 {
 	UvMapVert *iterv, *first;
 	BMLoop *l;
@@ -931,21 +942,8 @@
 	return NULL;
 }
 
-UvElement *ED_uv_element_get(UvElementMap *map, BMFace *efa, BMLoop *l)
+static int select_edgeloop_uv_edge_tag_faces(BMEditMesh *em, UvMapVert *first1, UvMapVert *first2, int *totface)
 {
-	UvElement *element;
-
-	element = map->vert[BM_elem_index_get(l->v)];
-
-	for (; element; element = element->next)
-		if (element->face == efa)
-			return element;
-
-	return NULL;
-}
-
-static int uv_edge_tag_faces(BMEditMesh *em, UvMapVert *first1, UvMapVert *first2, int *totface)
-{
 	UvMapVert *iterv1, *iterv2;
 	BMFace *efa;
 	int tot = 0;
@@ -962,7 +960,7 @@
 			if (iterv1->f == iterv2->f) {
 				/* if face already tagged, don't do this edge */
 				efa = EDBM_face_at_index(em, iterv1->f);
-				if (BMO_elem_flag_test(em->bm, efa, EFA_F1_FLAG))
+				if (BM_elem_flag_test(efa, BM_ELEM_TAG))
 					return 0;
 
 				tot++;
@@ -987,7 +985,7 @@
 
 			if (iterv1->f == iterv2->f) {
 				efa = EDBM_face_at_index(em, iterv1->f);
-				BMO_elem_flag_enable(em->bm, efa, EFA_F1_FLAG);
+				BM_elem_flag_enable(efa, BM_ELEM_TAG);
 				break;
 			}
 		}
@@ -1005,33 +1003,29 @@
 	MTexPoly *tf;
 	UvVertMap *vmap;
 	UvMapVert *iterv1, *iterv2;
-	int a, count, looking, nverts, starttotf, select;
+	int a, looking, nverts, starttotf, select;
 
 	/* setup */
 	EDBM_index_arrays_init(em, 0, 0, 1);
 	vmap = EDBM_uv_vert_map_create(em, 0, 0, limit);
 
-	BM_mesh_elem_index_ensure(em->bm, BM_VERT);
+	BM_mesh_elem_index_ensure(em->bm, BM_VERT | BM_FACE);
 
 	if (!extend) {
 		select_all_perform(scene, ima, em, SEL_DESELECT);
 	}
 
-	BM_ITER_MESH_INDEX (efa, &iter, em->bm, BM_FACES_OF_MESH, count) {
-		BMO_elem_flag_disable(em->bm, efa, EFA_F1_FLAG);
-		BM_elem_index_set(efa, count); /* set_inline */
-	}
-	em->bm->elem_index_dirty &= ~BM_FACE;
+	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_vertex_map_get(vmap, hit->efa, hit->lindex);
-	iterv2 = uv_vertex_map_get(vmap, hit->efa, (hit->lindex + 1) % nverts);
-	uv_vertex_loop_flag(iterv1);
-	uv_vertex_loop_flag(iterv2);
+	iterv1 = select_edgeloop_uv_vertex_map_get(vmap, hit->efa, hit->lindex);
+	iterv2 = select_edgeloop_uv_vertex_map_get(vmap, hit->efa, (hit->lindex + 1) % nverts);
+	select_edgeloop_uv_vertex_loop_flag(iterv1);
+	select_edgeloop_uv_vertex_loop_flag(iterv2);
 
 	starttotf = 0;
-	uv_edge_tag_faces(em, iterv1, iterv2, &starttotf);
+	select_edgeloop_uv_edge_tag_faces(em, iterv1, iterv2, &starttotf);
 
 	/* sorry, first edge isn't even ok */
 	if (iterv1->flag == 0 && iterv2->flag == 0) looking = 0;
@@ -1046,24 +1040,24 @@
 		BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
 			tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
 
-			if (!BMO_elem_flag_test(em->bm, efa, EFA_F1_FLAG) && uvedit_face_visible_test(scene, ima, efa, tf)) {
+			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++) {
 					/* check face not hidden and not tagged */
-					iterv1 = uv_vertex_map_get(vmap, efa, a);
-					iterv2 = uv_vertex_map_get(vmap, efa, (a + 1) % nverts);
+					iterv1 = select_edgeloop_uv_vertex_map_get(vmap, efa, a);
+					iterv2 = select_edgeloop_uv_vertex_map_get(vmap, efa, (a + 1) % nverts);
 					
 					if (!iterv1 || !iterv2)
 						continue;
 
 					/* check if vertex is tagged and has right valence */
 					if (iterv1->flag || iterv2->flag) {
-						if (uv_edge_tag_faces(em, iterv1, iterv2, &starttotf)) {
+						if (select_edgeloop_uv_edge_tag_faces(em, iterv1, iterv2, &starttotf)) {
 							looking = 1;
-							BMO_elem_flag_enable(em->bm, efa, EFA_F1_FLAG);
+							BM_elem_flag_enable(efa, BM_ELEM_TAG);
 
-							uv_vertex_loop_flag(iterv1);
-							uv_vertex_loop_flag(iterv2);
+							select_edgeloop_uv_vertex_loop_flag(iterv1);
+							select_edgeloop_uv_vertex_loop_flag(iterv2);
 							break;
 						}
 					}
@@ -1074,8 +1068,8 @@
 
 	/* do the actual select/deselect */
 	nverts = hit->efa->len;
-	iterv1 = uv_vertex_map_get(vmap, hit->efa, hit->lindex);
-	iterv2 = uv_vertex_map_get(vmap, hit->efa, (hit->lindex + 1) % nverts);
+	iterv1 = select_edgeloop_uv_vertex_map_get(vmap, hit->efa, hit->lindex);
+	iterv2 = select_edgeloop_uv_vertex_map_get(vmap, hit->efa, (hit->lindex + 1) % nverts);
 	iterv1->flag = 1;
 	iterv2->flag = 1;
 
@@ -1091,7 +1085,7 @@
 	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_vertex_map_get(vmap, efa, a);
+			iterv1 = select_edgeloop_uv_vertex_map_get(vmap, efa, a);
 
 			if (iterv1->flag) {
 				if (select) uvedit_uv_select_enable(em, scene, l, FALSE);




More information about the Bf-blender-cvs mailing list