[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