[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44224] branches/bmesh/blender/source/ blender: minor bmesh api changes.

Campbell Barton ideasman42 at gmail.com
Sat Feb 18 12:44:36 CET 2012


Revision: 44224
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44224
Author:   campbellbarton
Date:     2012-02-18 11:44:30 +0000 (Sat, 18 Feb 2012)
Log Message:
-----------
minor bmesh api changes.
- use SMOOTH flag for edges (removed sharp flag and inverted), gives us an extra flag slot available.
- rename BM_edge_is_nonmanifold --> BM_edge_is_manifold and invert result, BM_vert_is_nonmanifold too.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/bmesh/bmesh.h
    branches/bmesh/blender/source/blender/bmesh/bmesh_queries.h
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_queries.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c
    branches/bmesh/blender/source/blender/bmesh/operators/bmo_extrude.c
    branches/bmesh/blender/source/blender/bmesh/operators/bmo_join_triangles.c
    branches/bmesh/blender/source/blender/bmesh/operators/bmo_utils.c
    branches/bmesh/blender/source/blender/bmesh/tools/BME_bevel.c
    branches/bmesh/blender/source/blender/editors/mesh/bmesh_select.c
    branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
    branches/bmesh/blender/source/blender/editors/space_view3d/drawobject.c
    branches/bmesh/blender/source/blender/editors/uvedit/uvedit_ops.c
    branches/bmesh/blender/source/blender/modifiers/intern/MOD_edgesplit.c

Modified: branches/bmesh/blender/source/blender/bmesh/bmesh.h
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/bmesh.h	2012-02-18 11:34:53 UTC (rev 44223)
+++ branches/bmesh/blender/source/blender/bmesh/bmesh.h	2012-02-18 11:44:30 UTC (rev 44224)
@@ -92,21 +92,23 @@
 #define BM_FACE 	8
 #define BM_ALL		(BM_VERT | BM_EDGE | BM_LOOP | BM_FACE)
 
-/* BMHeader->hflag (char, all bits used!) */
-#define BM_ELEM_SELECT	(1<<0)
-#define BM_ELEM_HIDDEN	(1<<1)
-#define BM_ELEM_SEAM	(1<<2)
-#define BM_ELEM_SHARP	(1<<3)
-#define BM_ELEM_SMOOTH	(1<<4)
-#define BM_ELEM_TAG     (1<<5) /* internal flag, used for ensuring correct normals
-                                * during multires interpolation, and any other time
-                                * when temp tagging is handy.
-                                * always assume dirty & clear before use. */
+/* BMHeader->hflag (char) */
+#define BM_ELEM_SELECT	(1 << 0)
+#define BM_ELEM_HIDDEN	(1 << 1)
+#define BM_ELEM_SEAM	(1 << 2)
+#define BM_ELEM_SMOOTH	(1 << 3) /* used for faces and edges, note from the user POV,
+                                  * this is a sharp edge when disabled */
 
-/* we have 2 spare flags which is awesome but since we're limited to 8
+#define BM_ELEM_TAG     (1 << 4) /* internal flag, used for ensuring correct normals
+                                  * during multires interpolation, and any other time
+                                  * when temp tagging is handy.
+                                  * always assume dirty & clear before use. */
+
+/* we have 3 spare flags which is awesome but since we're limited to 8
  * only add new flags with care! - campbell */
-/* #define BM_TMP_SPARE	 (1<<6) */
-/* #define BM_NONORMCALC (1<<7) */ /* UNUSED */
+/* #define BM_ELEM_SPARE	 (1<<5) */
+/* #define BM_ELEM_SPARE	 (1<<6) */
+/* #define BM_ELEM_NONORMCALC (1<<7) */ /* UNUSED */
 
 /* stub */
 void bmesh_error(void);

Modified: branches/bmesh/blender/source/blender/bmesh/bmesh_queries.h
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/bmesh_queries.h	2012-02-18 11:34:53 UTC (rev 44223)
+++ branches/bmesh/blender/source/blender/bmesh/bmesh_queries.h	2012-02-18 11:44:30 UTC (rev 44224)
@@ -72,13 +72,13 @@
 /*returns true if e is a wire edge*/
 int BM_edge_is_wire(struct BMesh *bm, struct BMEdge *e);
 
-/* returns true if v is part of a non-manifold edge in the mesh,
+/* returns FALSE if v is part of a non-manifold edge in the mesh,
  * I believe this includes if it's part of both a wire edge and
  * a face.*/
-int BM_vert_is_nonmanifold(struct BMesh *bm, struct BMVert *v);
+int BM_vert_is_manifold(struct BMesh *bm, struct BMVert *v);
 
-/* returns true if e is shared by more then two faces. */
-int BM_edge_is_nonmanifold(struct BMesh *bm, struct BMEdge *e);
+/* returns FALSE if e is shared by more then two faces. */
+int BM_edge_is_manifold(struct BMesh *bm, struct BMEdge *e);
 
 /* returns true if e is a boundary edge, e.g. has only 1 face bordering it. */
 int BM_edge_is_boundry(struct BMEdge *e);

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c	2012-02-18 11:34:53 UTC (rev 44223)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c	2012-02-18 11:44:30 UTC (rev 44224)
@@ -789,10 +789,10 @@
 }
 char BM_edge_flag_from_mflag(const short meflag)
 {
-	return ( ((meflag & SELECT)       ? BM_ELEM_SELECT : 0) |
-	         ((meflag & ME_SEAM)      ? BM_ELEM_SEAM   : 0) |
-	         ((meflag & ME_SHARP)     ? BM_ELEM_SHARP  : 0) |
-	         ((meflag & ME_HIDE)      ? BM_ELEM_HIDDEN : 0)
+	return ( ((meflag & SELECT)        ? BM_ELEM_SELECT : 0) |
+	         ((meflag & ME_SEAM)       ? BM_ELEM_SEAM   : 0) |
+	         ((meflag & ME_SHARP) == 0 ? BM_ELEM_SMOOTH : 0) | /* invert */
+	         ((meflag & ME_HIDE)       ? BM_ELEM_HIDDEN : 0)
 	         );
 }
 char BM_face_flag_from_mflag(const char  meflag)
@@ -818,7 +818,7 @@
 
 	return ( ((hflag & BM_ELEM_SELECT)       ? SELECT    : 0) |
 	         ((hflag & BM_ELEM_SEAM)         ? ME_SEAM   : 0) |
-	         ((hflag & BM_ELEM_SHARP)        ? ME_SHARP  : 0) |
+	         ((hflag & BM_ELEM_SMOOTH) == 0  ? ME_SHARP  : 0) |
 	         ((hflag & BM_ELEM_HIDDEN)       ? ME_HIDE   : 0) |
 	         ((BM_edge_is_wire(NULL, eed)) ? ME_LOOSEEDGE : 0) | /* not typical */
 	         (ME_EDGEDRAW | ME_EDGERENDER)

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c	2012-02-18 11:34:53 UTC (rev 44223)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c	2012-02-18 11:44:30 UTC (rev 44224)
@@ -79,7 +79,7 @@
 		return TRUE;
 	}
 
-	if (BM_vert_is_nonmanifold(bm, v)) {
+	if (!BM_vert_is_manifold(bm, v)) {
 		if (!v->e) BM_vert_kill(bm, v);
 		else if (!v->e->l) {
 			BM_edge_kill(bm, v->e);
@@ -101,7 +101,7 @@
 	BMEdge *e, *keepedge = NULL, *baseedge = NULL;
 	int len = 0;
 
-	if (BM_vert_is_nonmanifold(bm, v)) {
+	if (!BM_vert_is_manifold(bm, v)) {
 		return FALSE;
 	}
 	

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_queries.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_queries.c	2012-02-18 11:34:53 UTC (rev 44223)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_queries.c	2012-02-18 11:44:30 UTC (rev 44224)
@@ -338,7 +338,7 @@
  *	1 for true, 0 for false.
  */
 
-int BM_vert_is_nonmanifold(BMesh *UNUSED(bm), BMVert *v)
+int BM_vert_is_manifold(BMesh *UNUSED(bm), BMVert *v)
 {
 	BMEdge *e, *oe;
 	BMLoop *l;
@@ -346,7 +346,7 @@
 
 	if (v->e == NULL) {
 		/* loose vert */
-		return TRUE;
+		return FALSE;
 	}
 
 	/* count edges while looking for non-manifold edges */
@@ -354,12 +354,12 @@
 	for (len = 0, e = v->e; e != oe || (e == oe && len == 0); len++, e = bmesh_disk_nextedge(e, v)) {
 		if (e->l == NULL) {
 			/* loose edge */
-			return TRUE;
+			return FALSE;
 		}
 
 		if (bmesh_radial_length(e->l) > 2) {
 			/* edge shared by more than two faces */
-			return TRUE;
+			return FALSE;
 		}
 	}
 
@@ -392,10 +392,10 @@
 
 	if (count < len) {
 		/* vert shared by multiple regions */
-		return TRUE;
+		return FALSE;
 	}
 
-	return FALSE;
+	return TRUE;
 }
 
 /*
@@ -409,13 +409,13 @@
  *	1 for true, 0 for false.
  */
 
-int BM_edge_is_nonmanifold(BMesh *UNUSED(bm), BMEdge *e)
+int BM_edge_is_manifold(BMesh *UNUSED(bm), BMEdge *e)
 {
 	int count = BM_edge_face_count(e);
 	if (count != 2 && count != 1) {
-		return TRUE;
+		return FALSE;
 	}
-	return FALSE;
+	return TRUE;
 }
 
 /*

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c	2012-02-18 11:34:53 UTC (rev 44223)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c	2012-02-18 11:44:30 UTC (rev 44224)
@@ -268,7 +268,7 @@
 	if (iwalk->lastv == e->v1) v = e->v2;
 	else v = e->v1;
 
-	if (BM_vert_is_nonmanifold(walker->bm, v)) {
+	if (!BM_vert_is_manifold(walker->bm, v)) {
 		BMW_reset(walker);
 		BMO_error_raise(walker->bm, NULL, BMERR_WALKER_FAILED,
 		                "Non-manifold vert "
@@ -561,7 +561,7 @@
 	}
 	
 	/* Don't start a face loop from non-manifold edges */
-	if (BM_edge_is_nonmanifold(bm, e)) {
+	if (!BM_edge_is_manifold(bm, e)) {
 		return FALSE;
 	}
 
@@ -719,7 +719,7 @@
 		return lwalk->wireedge;
 
 	e = l->e;
-	if (BM_edge_is_nonmanifold(bm, e)) {
+	if (!BM_edge_is_manifold(bm, e)) {
 		/* walker won't traverse to a non-manifold edge, but may
 		 * be started on one, and should not traverse *away* from
 		 * a non-manfold edge (non-manifold edges are never in an
@@ -730,12 +730,12 @@
 	l = l->radial_next;
 	l = l->next->next;
 	
-	if ((l->f->len != 4) || BM_edge_is_nonmanifold(bm, l->e)) {
+	if ((l->f->len != 4) || !BM_edge_is_manifold(bm, l->e)) {
 		l = lwalk->l->next->next;
 	}
 
 	/* only walk to manifold edge */
-	if ((l->f->len == 4) && !BM_edge_is_nonmanifold(bm, l->e) &&
+	if ((l->f->len == 4) && BM_edge_is_manifold(bm, l->e) &&
 	    !BLI_ghash_haskey(walker->visithash, l->e)) {
 		lwalk = BMW_state_add(walker);
 		lwalk->l = l;

Modified: branches/bmesh/blender/source/blender/bmesh/operators/bmo_extrude.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/bmo_extrude.c	2012-02-18 11:34:53 UTC (rev 44223)
+++ branches/bmesh/blender/source/blender/bmesh/operators/bmo_extrude.c	2012-02-18 11:44:30 UTC (rev 44224)
@@ -410,7 +410,7 @@
 	edge_face_count = NULL; /* dont re-use */
 
 	BM_ITER(v, &viter, bm, BM_VERTS_OF_MESH, NULL) {
-		if (BM_vert_is_nonmanifold(bm, v)) {
+		if (!BM_vert_is_manifold(bm, v)) {
 			BMO_elem_flag_enable(bm, v, VERT_NONMAN);
 			continue;
 		}

Modified: branches/bmesh/blender/source/blender/bmesh/operators/bmo_join_triangles.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/bmo_join_triangles.c	2012-02-18 11:34:53 UTC (rev 44223)
+++ branches/bmesh/blender/source/blender/bmesh/operators/bmo_join_triangles.c	2012-02-18 11:44:30 UTC (rev 44224)
@@ -285,7 +285,7 @@
 		v3 = e->l->next->v;
 		v4 = e->l->radial_next->prev->v;
 
-		if (dosharp && BM_elem_flag_test(e, BM_ELEM_SHARP))
+		if (dosharp && !BM_elem_flag_test(e, BM_ELEM_SMOOTH))
 			continue;
 		
 		if ((douvs || dovcols) && compareFaceAttribs(bm, e, douvs, dovcols))

Modified: branches/bmesh/blender/source/blender/bmesh/operators/bmo_utils.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/bmo_utils.c	2012-02-18 11:34:53 UTC (rev 44223)
+++ branches/bmesh/blender/source/blender/bmesh/operators/bmo_utils.c	2012-02-18 11:44:30 UTC (rev 44224)
@@ -835,7 +835,7 @@
 						break;
 
 					case SIMEDGE_SHARP:
-						if (BM_elem_flag_test(e, BM_ELEM_SHARP) == BM_elem_flag_test(es, BM_ELEM_SHARP)) {
+						if (BM_elem_flag_test(e, BM_ELEM_SMOOTH) == BM_elem_flag_test(es, BM_ELEM_SMOOTH)) {
 							BMO_elem_flag_enable(bm, e, EDGE_MARK);
 							cont = 0;
 						}


@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list