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)
 {

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to