[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45729] trunk/blender/source/blender/bmesh /intern/bmesh_core.c: code cleanup: minor edits to bmesh_jfke(), move simple checks first.

Campbell Barton ideasman42 at gmail.com
Wed Apr 18 06:44:50 CEST 2012


Revision: 45729
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45729
Author:   campbellbarton
Date:     2012-04-18 04:44:50 +0000 (Wed, 18 Apr 2012)
Log Message:
-----------
code cleanup: minor edits to bmesh_jfke(), move simple checks first.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/intern/bmesh_core.c

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_core.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_core.c	2012-04-18 04:32:55 UTC (rev 45728)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_core.c	2012-04-18 04:44:50 UTC (rev 45729)
@@ -1594,13 +1594,13 @@
  * \par Examples:
  *
  *           A                   B
- *      ----------           ----------
+ *      +--------+           +--------+
  *      |        |           |        |
  *      |   f1   |           |   f1   |
  *     v1========v2 = Ok!    v1==V2==v3 == Wrong!
  *      |   f2   |           |   f2   |
  *      |        |           |        |
- *      ----------           ----------
+ *      +--------+           +--------+
  *
  * In the example A, faces \a f1 and \a f2 are joined by a single edge,
  * and the euler can safely be used.
@@ -1617,13 +1617,18 @@
 BMFace *bmesh_jfke(BMesh *bm, BMFace *f1, BMFace *f2, BMEdge *e)
 {
 	BMLoop *l_iter, *f1loop = NULL, *f2loop = NULL;
-	int newlen = 0, i, f1len = 0, f2len = 0, radlen = 0, edok, shared;
+	int newlen = 0, i, f1len = 0, f2len = 0, edok;
 
-	/* can't join a face to itsel */
+	/* can't join a face to itself */
 	if (f1 == f2) {
 		return NULL;
 	}
 
+	/* validate that edge is 2-manifold edge */
+	if (BM_edge_is_manifold(e)) {
+		return NULL;
+	}
+
 	/* verify that e is in both f1 and f2 */
 	f1len = f1->len;
 	f2len = f2->len;
@@ -1633,12 +1638,6 @@
 	{
 		return NULL;
 	}
-	
-	/* validate that edge is 2-manifold edg */
-	radlen = bmesh_radial_length(f1loop);
-	if (radlen != 2) {
-		return NULL;
-	}
 
 	/* validate direction of f2's loop cycle is compatible */
 	if (f1loop->v == f2loop->v) {
@@ -1647,17 +1646,16 @@
 
 	/* validate that for each face, each vertex has another edge in its disk cycle that is
 	 * not e, and not shared. */
-	if ( bmesh_radial_face_find(f1loop->next->e, f2) ||
-	     bmesh_radial_face_find(f1loop->prev->e, f2) ||
-	     bmesh_radial_face_find(f2loop->next->e, f1) ||
-	     bmesh_radial_face_find(f2loop->prev->e, f1) )
+	if (bmesh_radial_face_find(f1loop->next->e, f2) ||
+	    bmesh_radial_face_find(f1loop->prev->e, f2) ||
+	    bmesh_radial_face_find(f2loop->next->e, f1) ||
+	    bmesh_radial_face_find(f2loop->prev->e, f1) )
 	{
 		return NULL;
 	}
 
-	/* validate only one shared edg */
-	shared = BM_face_share_edge_count(f1, f2);
-	if (shared > 1) {
+	/* validate only one shared edge */
+	if (BM_face_share_edge_count(f1, f2) > 1) {
 		return NULL;
 	}
 
@@ -1697,7 +1695,7 @@
 	/* increase length of f1 */
 	f1->len += (f2->len - 2);
 
-	/* make sure each loop points to the proper fac */
+	/* make sure each loop points to the proper face */
 	newlen = f1->len;
 	for (i = 0, l_iter = BM_FACE_FIRST_LOOP(f1); i < newlen; i++, l_iter = l_iter->next)
 		l_iter->f = f1;




More information about the Bf-blender-cvs mailing list