Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-04-18 08:44:50 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-04-18 08:44:50 +0400
commitdf27c315ce8eb72ee7d7d5d8aa3deb1645e88866 (patch)
tree44571f67664c78ff61eb5df17e164b948073de10 /source/blender
parenta1337caac02fa0ecda0cd6ee7652c489d9c1c2d8 (diff)
code cleanup: minor edits to bmesh_jfke(), move simple checks first.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/bmesh/intern/bmesh_core.c34
1 files changed, 16 insertions, 18 deletions
diff --git a/source/blender/bmesh/intern/bmesh_core.c b/source/blender/bmesh/intern/bmesh_core.c
index 765c1c3e774..8b1fee3b33f 100644
--- a/source/blender/bmesh/intern/bmesh_core.c
+++ b/source/blender/bmesh/intern/bmesh_core.c
@@ -1594,13 +1594,13 @@ BMEdge *bmesh_jekv(BMesh *bm, BMEdge *ke, BMVert *kv, const short check_edge_dou
* \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 @@ BMEdge *bmesh_jekv(BMesh *bm, BMEdge *ke, BMVert *kv, const short check_edge_dou
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 @@ BMFace *bmesh_jfke(BMesh *bm, BMFace *f1, BMFace *f2, BMEdge *e)
{
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 @@ BMFace *bmesh_jfke(BMesh *bm, BMFace *f1, BMFace *f2, BMEdge *e)
/* 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 @@ BMFace *bmesh_jfke(BMesh *bm, BMFace *f1, BMFace *f2, BMEdge *e)
/* 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;