[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44443] trunk/blender/source/blender/bmesh : bmesh code cleanup

Campbell Barton ideasman42 at gmail.com
Sun Feb 26 00:41:31 CET 2012


Revision: 44443
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44443
Author:   campbellbarton
Date:     2012-02-25 23:41:31 +0000 (Sat, 25 Feb 2012)
Log Message:
-----------
bmesh code cleanup
* minor edits to header
* make BM_vert_dissolve() easier to read.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/bmesh.h
    trunk/blender/source/blender/bmesh/bmesh_operator_api.h
    trunk/blender/source/blender/bmesh/intern/bmesh_mods.c
    trunk/blender/source/blender/bmesh/intern/bmesh_operator_api_inline.c

Modified: trunk/blender/source/blender/bmesh/bmesh.h
===================================================================
--- trunk/blender/source/blender/bmesh/bmesh.h	2012-02-25 23:29:12 UTC (rev 44442)
+++ trunk/blender/source/blender/bmesh/bmesh.h	2012-02-25 23:41:31 UTC (rev 44443)
@@ -144,12 +144,12 @@
 BMFace *BM_face_create_ngon(BMesh *bm, BMVert *v1, BMVert *v2, BMEdge **edges, int len, int nodouble);
 
 /* stuff for dealing with header flags */
-#define BM_elem_flag_test(ele, hflag)      _bm_elem_flag_test    (&(ele)->head, hflag)
-#define BM_elem_flag_enable(ele, hflag)    _bm_elem_flag_enable  (&(ele)->head, hflag)
-#define BM_elem_flag_disable(ele, hflag)   _bm_elem_flag_disable (&(ele)->head, hflag)
-#define BM_elem_flag_set(ele, hflag, val)  _bm_elem_flag_set     (&(ele)->head, hflag, val)
-#define BM_elem_flag_toggle(ele, hflag)    _bm_elem_flag_toggle  (&(ele)->head, hflag)
-#define BM_elem_flag_merge(ele_a, ele_b)   _bm_elem_flag_merge   (&(ele_a)->head, &(ele_b)->head)
+#define BM_elem_flag_test(   ele, hflag)      _bm_elem_flag_test    (&(ele)->head, hflag)
+#define BM_elem_flag_enable( ele, hflag)      _bm_elem_flag_enable  (&(ele)->head, hflag)
+#define BM_elem_flag_disable(ele, hflag)      _bm_elem_flag_disable (&(ele)->head, hflag)
+#define BM_elem_flag_set(    ele, hflag, val) _bm_elem_flag_set     (&(ele)->head, hflag, val)
+#define BM_elem_flag_toggle( ele, hflag)      _bm_elem_flag_toggle  (&(ele)->head, hflag)
+#define BM_elem_flag_merge(  ele_a, ele_b)    _bm_elem_flag_merge   (&(ele_a)->head, &(ele_b)->head)
 
 BM_INLINE char _bm_elem_flag_test(const BMHeader *element, const char hflag);
 BM_INLINE void _bm_elem_flag_enable(BMHeader *element, const char hflag);

Modified: trunk/blender/source/blender/bmesh/bmesh_operator_api.h
===================================================================
--- trunk/blender/source/blender/bmesh/bmesh_operator_api.h	2012-02-25 23:29:12 UTC (rev 44442)
+++ trunk/blender/source/blender/bmesh/bmesh_operator_api.h	2012-02-25 23:41:31 UTC (rev 44443)
@@ -76,6 +76,18 @@
 struct BMesh;
 struct GHashIterator;
 
+#define BMO_elem_flag_test(   bm, ele, oflag)      _bmo_elem_flag_test    (bm, (ele)->oflags, oflag)
+#define BMO_elem_flag_enable( bm, ele, oflag)      _bmo_elem_flag_enable  (bm, (ele)->oflags, oflag)
+#define BMO_elem_flag_disable(bm, ele, oflag)      _bmo_elem_flag_disable (bm, (ele)->oflags, oflag)
+#define BMO_elem_flag_set(    bm, ele, oflag, val) _bmo_elem_flag_set     (bm, (ele)->oflags, oflag, val)
+#define BMO_elem_flag_toggle( bm, ele, oflag)      _bmo_elem_flag_toggle  (bm, (ele)->oflags, oflag)
+
+BM_INLINE short _bmo_elem_flag_test(BMesh *bm, BMFlagLayer *oflags, const short oflag);
+BM_INLINE void  _bmo_elem_flag_enable(BMesh *bm, BMFlagLayer *oflags, const short oflag);
+BM_INLINE void  _bmo_elem_flag_disable(BMesh *bm, BMFlagLayer *oflags, const short oflag);
+BM_INLINE void  _bmo_elem_flag_set(BMesh *bm, BMFlagLayer *oflags, const short oflag, int val);
+BM_INLINE void  _bmo_elem_flag_toggle(BMesh *bm, BMFlagLayer *oflags, const short oflag);
+
 /* slot type arrays are terminated by the last member
  * having a slot type of 0.*/
 #define BMO_OP_SLOT_SENTINEL	0

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_mods.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_mods.c	2012-02-25 23:29:12 UTC (rev 44442)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_mods.c	2012-02-25 23:41:31 UTC (rev 44443)
@@ -59,28 +59,17 @@
 #if 1
 int BM_vert_dissolve(BMesh *bm, BMVert *v)
 {
-	BMIter iter;
-	BMEdge *e;
-	int len = 0;
-
-	if (!v) {
-		return FALSE;
-	}
+	const int len = BM_vert_edge_count(v);
 	
-	e = BM_iter_new(&iter, bm, BM_EDGES_OF_VERT, v);
-	for ( ; e; e = BM_iter_step(&iter)) {
-		len++;
-	}
-	
 	if (len == 1) {
-		if (v->e)
-			BM_edge_kill(bm, v->e);
-		BM_vert_kill(bm, v);
+		BM_vert_kill(bm, v); /* will kill edges too */
 		return TRUE;
 	}
-
-	if (!BM_vert_is_manifold(bm, v)) {
-		if (!v->e) BM_vert_kill(bm, v);
+	else if (!BM_vert_is_manifold(bm, v)) {
+		if (!v->e) {
+			BM_vert_kill(bm, v);
+			return TRUE;
+		}
 		else if (!v->e->l) {
 			if (len == 2) {
 				BM_vert_collapse_edge(bm, v->e, v);
@@ -88,18 +77,18 @@
 			else {
 				/* this may be too harsh, we could do nothing here instead.
 				 * To test, connect 3 edges to a vert and dissolve the vert. It will be removed */
-				BM_edge_kill(bm, v->e);
-				BM_vert_kill(bm, v);
+
+				BM_vert_kill(bm, v); /* will kill edges too */
 			}
+			return TRUE;
 		}
 		else {
 			return FALSE;
 		}
-
-		return TRUE;
 	}
-
-	return BM_disk_dissolve(bm, v);
+	else {
+		return BM_disk_dissolve(bm, v);
+	}
 }
 
 int BM_disk_dissolve(BMesh *bm, BMVert *v)

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_operator_api_inline.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_operator_api_inline.c	2012-02-25 23:29:12 UTC (rev 44442)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_operator_api_inline.c	2012-02-25 23:41:31 UTC (rev 44443)
@@ -41,7 +41,7 @@
  * ghash or a mapping slot to do it. */
 
 /* flags 15 and 16 (1<<14 and 1<<15) are reserved for bmesh api use */
-BM_INLINE int _bmo_elem_flag_test(BMesh *bm, BMFlagLayer *oflags, const short oflag)
+BM_INLINE short _bmo_elem_flag_test(BMesh *bm, BMFlagLayer *oflags, const short oflag)
 {
     return oflags[bm->stackdepth-1].f & oflag;
 }
@@ -67,12 +67,6 @@
 	oflags[bm->stackdepth-1].f ^= oflag;
 }
 
-#define BMO_elem_flag_test(   bm, ele, oflag)      _bmo_elem_flag_test    (bm, (ele)->oflags, oflag)
-#define BMO_elem_flag_enable( bm, ele, oflag)      _bmo_elem_flag_enable  (bm, (ele)->oflags, oflag)
-#define BMO_elem_flag_disable(bm, ele, oflag)      _bmo_elem_flag_disable (bm, (ele)->oflags, oflag)
-#define BMO_elem_flag_set(    bm, ele, oflag, val) _bmo_elem_flag_set     (bm, (ele)->oflags, oflag, val)
-#define BMO_elem_flag_toggle( bm, ele, oflag)      _bmo_elem_flag_toggle  (bm, (ele)->oflags, oflag)
-
 BM_INLINE void BMO_slot_map_int_insert(BMesh *bm, BMOperator *op, const char *slotname,
                                        void *element, int val)
 {




More information about the Bf-blender-cvs mailing list