[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45583] trunk/blender/source/blender: bmesh api changes:

Campbell Barton ideasman42 at gmail.com
Fri Apr 13 06:02:30 CEST 2012


Revision: 45583
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45583
Author:   campbellbarton
Date:     2012-04-13 04:02:26 +0000 (Fri, 13 Apr 2012)
Log Message:
-----------
bmesh api changes:
- remove recently added BM_mesh_select_flush_strip(), functions purpose wasn't clear.
- add BM_mesh_elem_hflag_disable_test(), BM_mesh_elem_hflag_enable_test()
  to match existing BM_mesh_elem_hflag_enable/disable_all(), these take a hflag to test before editing each element.
  This replaces the need for BM_mesh_select_flush_strip().

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/intern/bmesh_marking.c
    trunk/blender/source/blender/bmesh/intern/bmesh_marking.h
    trunk/blender/source/blender/bmesh/intern/bmesh_operators.c
    trunk/blender/source/blender/bmesh/operators/bmo_inset.c
    trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c
    trunk/blender/source/blender/editors/mesh/editmesh_tools.c
    trunk/blender/source/blender/editors/mesh/editmesh_utils.c
    trunk/blender/source/blender/editors/uvedit/uvedit_ops.c
    trunk/blender/source/blender/modifiers/intern/MOD_array.c

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_marking.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_marking.c	2012-04-13 03:41:07 UTC (rev 45582)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_marking.c	2012-04-13 04:02:26 UTC (rev 45583)
@@ -446,47 +446,6 @@
 }
 
 /**
- * \brief De-Select, Re-Select elements
- * Awkwardly named function
- *
- * Deselect's one type of elements then re-selects another,
- * Use case is to de-select stray edges or verts.
- */
-void BM_mesh_select_flush_strip(BMesh *bm, const char htype_desel, const char htype_sel, const char hflag_test)
-{
-	const char iter_types[3] = {BM_VERTS_OF_MESH,
-	                            BM_EDGES_OF_MESH,
-	                            BM_FACES_OF_MESH};
-
-	const char flag_types[3] = {BM_VERT, BM_EDGE, BM_FACE};
-
-	BMIter iter;
-	BMElem *ele;
-	int i;
-
-	for (i = 0; i < 3; i++) {
-		if (htype_desel & flag_types[i]) {
-			ele = BM_iter_new(&iter, bm, iter_types[i], NULL);
-			for ( ; ele; ele = BM_iter_step(&iter)) {
-				BM_elem_flag_disable(ele, BM_ELEM_SELECT);
-			}
-		}
-	}
-
-	for (i = 0; i < 3; i++) {
-		if (htype_sel & flag_types[i]) {
-			ele = BM_iter_new(&iter, bm, iter_types[i], NULL);
-			for ( ; ele; ele = BM_iter_step(&iter)) {
-				if (BM_elem_flag_test(ele, hflag_test)) {
-					BM_elem_select_set(bm, ele, TRUE);
-				}
-			}
-		}
-	}
-
-}
-
-/**
  * counts number of elements with flag enabled/disabled
  */
 static int bm_mesh_flag_count(BMesh *bm, const char htype, const char hflag,
@@ -520,12 +479,12 @@
 	return tot;
 }
 
-int BM_mesh_enabled_flag_count(BMesh *bm, const char htype, const char hflag, int respecthide)
+int BM_mesh_elem_hflag_count_enabled(BMesh *bm, const char htype, const char hflag, int respecthide)
 {
 	return bm_mesh_flag_count(bm, htype, hflag, respecthide, TRUE);
 }
 
-int BM_mesh_disabled_flag_count(BMesh *bm, const char htype, const char hflag, int respecthide)
+int BM_mesh_elem_hflag_count_disabled(BMesh *bm, const char htype, const char hflag, int respecthide)
 {
 	return bm_mesh_flag_count(bm, htype, hflag, respecthide, FALSE);
 }
@@ -813,7 +772,8 @@
 	}
 }
 
-void BM_mesh_elem_flag_disable_all(BMesh *bm, const char htype, const char hflag, int respecthide)
+void BM_mesh_elem_hflag_disable_test(BMesh *bm, const char htype, const char hflag,
+                                     int respecthide, const char hflag_test)
 {
 	const char iter_types[3] = {BM_VERTS_OF_MESH,
 	                            BM_EDGES_OF_MESH,
@@ -831,7 +791,8 @@
 
 	if ((htype == (BM_VERT | BM_EDGE | BM_FACE)) &&
 	    (hflag == BM_ELEM_SELECT) &&
-	    (respecthide == FALSE))
+	    (respecthide == FALSE) &&
+	    (hflag_test == 0))
 	{
 		/* fast path for deselect all, avoid topology loops
 		 * since we know all will be de-selected anyway. */
@@ -852,6 +813,9 @@
 					if (respecthide && BM_elem_flag_test(ele, BM_ELEM_HIDDEN)) {
 						continue;
 					}
+					if (hflag_test && !BM_elem_flag_test(ele, hflag_test)) {
+						continue;
+					}
 
 					if (hflag & BM_ELEM_SELECT) {
 						BM_elem_select_set(bm, ele, FALSE);
@@ -863,7 +827,8 @@
 	}
 }
 
-void BM_mesh_elem_flag_enable_all(BMesh *bm, const char htype, const char hflag, int respecthide)
+void BM_mesh_elem_hflag_enable_test(BMesh *bm, const char htype, const char hflag,
+                                    int respecthide, const char hflag_test)
 {
 	const char iter_types[3] = {BM_VERTS_OF_MESH,
 	                            BM_EDGES_OF_MESH,
@@ -896,6 +861,9 @@
 				if (respecthide && BM_elem_flag_test(ele, BM_ELEM_HIDDEN)) {
 					continue;
 				}
+				if (hflag_test && !BM_elem_flag_test(ele, hflag_test)) {
+					continue;
+				}
 
 				if (hflag & BM_ELEM_SELECT) {
 					BM_elem_select_set(bm, ele, TRUE);
@@ -906,6 +874,20 @@
 	}
 }
 
+void BM_mesh_elem_hflag_disable_all(BMesh *bm, const char htype, const char hflag,
+                                    int respecthide)
+{
+	/* call with 0 hflag_test */
+	BM_mesh_elem_hflag_disable_test(bm, htype, hflag, respecthide, 0);
+}
+
+void BM_mesh_elem_hflag_enable_all(BMesh *bm, const char htype, const char hflag,
+                                   int respecthide)
+{
+	/* call with 0 hflag_test */
+	BM_mesh_elem_hflag_enable_test(bm, htype, hflag, respecthide, 0);
+}
+
 /***************** Mesh Hiding stuff *********** */
 
 static void vert_flush_hide_set(BMesh *bm, BMVert *v)

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_marking.h
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_marking.h	2012-04-13 03:41:07 UTC (rev 45582)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_marking.h	2012-04-13 04:02:26 UTC (rev 45583)
@@ -45,9 +45,16 @@
 #define BM_elem_select_set(bm, ele, hide) _bm_elem_select_set(bm, &(ele)->head, hide)
 void _bm_elem_select_set(BMesh *bm, BMHeader *ele, int select);
 
-void BM_mesh_elem_flag_enable_all(BMesh *bm, const char htype, const char hflag, int respecthide);
-void BM_mesh_elem_flag_disable_all(BMesh *bm, const char htype, const char hflag, int respecthide);
+void BM_mesh_elem_hflag_enable_test(BMesh *bm, const char htype, const char hflag,
+                                    int respecthide, const char hflag_test);
+void BM_mesh_elem_hflag_disable_test(BMesh *bm, const char htype, const char hflag,
+                                     int respecthide, const char hflag_test);
 
+void BM_mesh_elem_hflag_enable_all(BMesh *bm, const char htype, const char hflag,
+                                   int respecthide);
+void BM_mesh_elem_hflag_disable_all(BMesh *bm, const char htype, const char hflag,
+                                    int respecthide);
+
 /* individual element select functions, BM_elem_select_set is a shortcut for these
  * that automatically detects which one to use*/
 void BM_vert_select_set(BMesh *bm, BMVert *v, int select);
@@ -60,11 +67,9 @@
 void BM_mesh_deselect_flush(BMesh *bm);
 void BM_mesh_select_flush(BMesh *bm);
 
-void BM_mesh_select_flush_strip(BMesh *bm, const char htype_desel, const char htype_sel, const char hflag_test);
+int BM_mesh_elem_hflag_count_enabled(BMesh *bm, const char htype, const char hflag, int respecthide);
+int BM_mesh_elem_hflag_count_disabled(BMesh *bm, const char htype, const char hflag, int respecthide);
 
-int BM_mesh_enabled_flag_count(BMesh *bm, const char htype, const char hflag, int respecthide);
-int BM_mesh_disabled_flag_count(BMesh *bm, const char htype, const char hflag, int respecthide);
-
 /* edit selection stuff */
 void    BM_active_face_set(BMesh *em, BMFace *f);
 BMFace *BM_active_face_get(BMesh *bm, int sloppy);

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_operators.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_operators.c	2012-04-13 03:41:07 UTC (rev 45582)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_operators.c	2012-04-13 04:02:26 UTC (rev 45583)
@@ -701,9 +701,9 @@
 	BLI_assert(ELEM(TRUE, FALSE, test_for_enabled));
 
 	if (test_for_enabled)
-		totelement = BM_mesh_enabled_flag_count(bm, htype, hflag, TRUE);
+		totelement = BM_mesh_elem_hflag_count_enabled(bm, htype, hflag, TRUE);
 	else
-		totelement = BM_mesh_disabled_flag_count(bm, htype, hflag, TRUE);
+		totelement = BM_mesh_elem_hflag_count_disabled(bm, htype, hflag, TRUE);
 
 	if (totelement) {
 		BMIter iter;

Modified: trunk/blender/source/blender/bmesh/operators/bmo_inset.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_inset.c	2012-04-13 03:41:07 UTC (rev 45582)
+++ trunk/blender/source/blender/bmesh/operators/bmo_inset.c	2012-04-13 04:02:26 UTC (rev 45583)
@@ -123,11 +123,11 @@
 	int i, j, k;
 
 	if (use_outset == FALSE) {
-		BM_mesh_elem_flag_disable_all(bm, BM_FACE, BM_ELEM_TAG, FALSE);
+		BM_mesh_elem_hflag_disable_all(bm, BM_FACE, BM_ELEM_TAG, FALSE);
 		BMO_slot_buffer_hflag_enable(bm, op, "faces", BM_FACE, BM_ELEM_TAG, FALSE);
 	}
 	else {
-		BM_mesh_elem_flag_enable_all(bm, BM_FACE, BM_ELEM_TAG, FALSE);
+		BM_mesh_elem_hflag_enable_all(bm, BM_FACE, BM_ELEM_TAG, FALSE);
 		BMO_slot_buffer_hflag_disable(bm, op, "faces", BM_FACE, BM_ELEM_TAG, FALSE);
 	}
 

Modified: trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c	2012-04-13 03:41:07 UTC (rev 45582)
+++ trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c	2012-04-13 04:02:26 UTC (rev 45583)
@@ -1054,7 +1054,7 @@
 		// int i;
 		
 		/* deselect input */
-		BM_mesh_elem_flag_disable_all(bm, BM_VERT | BM_EDGE | BM_FACE, BM_ELEM_SELECT, FALSE);
+		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)) {

Modified: trunk/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_tools.c	2012-04-13 03:41:07 UTC (rev 45582)
+++ trunk/blender/source/blender/editors/mesh/editmesh_tools.c	2012-04-13 04:02:26 UTC (rev 45583)
@@ -3548,7 +3548,7 @@
 
 	EDBM_op_init(em, &bmop, op, "split geom=%hvef use_only_faces=%b", BM_ELEM_SELECT, FALSE);
 	BMO_op_exec(em->bm, &bmop);
-	BM_mesh_elem_flag_disable_all(em->bm, BM_VERT | BM_EDGE | BM_FACE, BM_ELEM_SELECT, FALSE);
+	BM_mesh_elem_hflag_disable_all(em->bm, BM_VERT | BM_EDGE | BM_FACE, BM_ELEM_SELECT, FALSE);
 	BMO_slot_buffer_hflag_enable(em->bm, &bmop, "geomout", BM_ALL, BM_ELEM_SELECT, TRUE);
 	if (!EDBM_op_finish(em, &bmop, op, TRUE)) {
 		return OPERATOR_CANCELLED;
@@ -4531,10 +4531,10 @@
 		BMO_slot_buffer_hflag_enable(em->bm, &bmop, "faceout", BM_FACE, BM_ELEM_SELECT, TRUE);
 	}
 	else {
-		BM_mesh_elem_flag_disable_all(em->bm, BM_VERT | BM_EDGE, BM_ELEM_SELECT, FALSE);
+		BM_mesh_elem_hflag_disable_all(em->bm, BM_VERT | BM_EDGE, BM_ELEM_SELECT, FALSE);
 		BMO_slot_buffer_hflag_disable(em->bm, &bmop, "faceout", BM_FACE, BM_ELEM_SELECT, FALSE);
-		/* so selected faces verts & edges get selected */
-		BM_mesh_select_flush_strip(em->bm, BM_VERT | BM_EDGE, BM_FACE, BM_ELEM_SELECT);
+		/* re-select faces so the verts and edges get selected too */

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list