Revision: 18246
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18246
Author:   briggs
Date:     2009-01-02 05:23:12 +0100 (Fri, 02 Jan 2009)

Log Message:
-----------
-> Fixed BM_remove_tagged_XXX functions

BM_remove_tagged/verts/edges/faces are now API functions
and use operator flag layers to do their work. This meant
that I also removed the BM_Delete_XXX functions since they
were no longer relevant.

Modified Paths:
--------------
    branches/bmesh/bmesh/bmesh.h
    branches/bmesh/bmesh/intern/bmesh_construct.c

Modified: branches/bmesh/bmesh/bmesh.h
===================================================================
--- branches/bmesh/bmesh/bmesh.h        2009-01-02 04:18:18 UTC (rev 18245)
+++ branches/bmesh/bmesh/bmesh.h        2009-01-02 04:23:12 UTC (rev 18246)
@@ -193,10 +193,11 @@
 struct BMFace *BM_Make_Quadtriangle(struct BMesh *bm, struct BMVert **verts, 
BMEdge **edges, int len, struct BMFace *example, int nodouble);
 struct BMFace *BM_Make_Ngon(struct BMesh *bm, struct BMVert *v1, struct BMVert 
*v2, struct BMEdge **edges, int len, int nodouble);
 void BM_Copy_Attributes(struct BMesh *source_mesh, struct BMesh *target_mesh, 
void *source, void *target);
-void BM_Delete_Face(struct BMesh *bm, struct BMFace *f);
-void BM_Delete_Edge(struct BMesh *bm, struct BMVert *v);
-void BM_Delete_Vert(struct BMesh *bm, struct BMVert *v);
+void BM_remove_tagged_faces(struct BMesh *bm, int flag);
+void BM_remove_tagged_edges(struct BMesh *bm, int flag);
+void BM_remove_tagged_verts(struct BMesh *bm, int flag);
 
+
 /*Modification*/
 struct BMFace *BM_Join_Faces(struct BMesh *bm, struct BMFace *f1, struct 
BMFace *f2, struct BMEdge *e, int calcnorm, int weldUVs);
 struct BMFace *BM_Split_Face(struct BMesh *bm, struct BMFace *f, struct BMVert 
*v1, struct BMVert *v2, struct BMLoop **nl, struct BMEdge *example, int 
calcnorm);

Modified: branches/bmesh/bmesh/intern/bmesh_construct.c
===================================================================
--- branches/bmesh/bmesh/intern/bmesh_construct.c       2009-01-02 04:18:18 UTC 
(rev 18245)
+++ branches/bmesh/bmesh/intern/bmesh_construct.c       2009-01-02 04:23:12 UTC 
(rev 18246)
@@ -222,72 +222,27 @@
 
 /*bmesh_make_face_from_face(BMesh *bm, BMFace *source, BMFace *target) */
 
-/*
- * BMESH DELETE XXX FUNCTIONS
- *
- * Functions for deleting the vertices, edges
- * and faces of a mesh. Note that these functions
- * only flag geometry for removal. The actual deletion
- * is done by the remove tagged XXX functions
- *
- * TO CONSIDER: This may be better to use the private flag
- * layers allocated for each operator rather than using the system flag.
- *
-*/
 
-void BM_Delete_Face(BMesh *bm, BMFace *f)
-{
-       bmesh_set_sysflag(&(f->head), BMESH_DELETE);
-}
-
-void BM_Delete_Edge(BMesh *bm, BMVert *e)
-{
-       BMFace *f = NULL;
-       BMIter edgefaces;
-       
-       for(f = BMIter_New(&edgefaces, bm, BM_FACES_OF_EDGE, e ); f; f = 
BMIter_Step(&edgefaces))
-               bmesh_set_sysflag((BMHeader*)f, BMESH_DELETE);
-       bmesh_set_sysflag((BMHeader*)e, BMESH_DELETE);
-}
-void BM_Delete_Vert(BMesh *bm, BMVert *v)
-{
-       BMFace *f = NULL;
-       BMEdge *e = NULL;
-       BMIter vertfaces;
-       BMIter vertedges;
-       
-       /*first delete the faces around the vertex*/
-       for(f = BMIter_New(&vertfaces, bm, BM_FACES_OF_VERT, v ); f; f = 
BMIter_Step(&vertfaces))
-               bmesh_set_sysflag((BMHeader*)f, BMESH_DELETE);  
-       
-
-       for(e = BMIter_New(&vertedges, bm, BM_EDGES_OF_VERT, v ); e; e = 
BMIter_Step(&vertedges))
-               bmesh_set_sysflag((BMHeader*)e, BMESH_DELETE);
-       
-       bmesh_set_sysflag((BMHeader*)v, BMESH_DELETE);
-}
-
 /*
  * REMOVE TAGGED XXX
  *
- * Called at the end of bmesh_end_edit. Removes
- * Elements that have been marked for removal in the modelling loop.
- * We bypass iterator API for this to ensure correct results.
+ * Called by operators to remove elements that they have marked for
+ * removal.
  *
 */
 
-static void remove_tagged_faces(BMesh *bm)
+void BM_remove_tagged_faces(BMesh *bm, int flag)
 {
        BMHeader *current, *next;
 
        current = bm->polys.first;
        while(current){
                next = current->next;
-               if( bmesh_test_sysflag(current, BMESH_DELETE) ) bmesh_kf(bm, 
(BMFace*)current);
+               if(BMO_TestFlag(bm, current, flag)) bmesh_kf(bm, 
(BMFace*)current);
                current = next;
        }
 }
-static void remove_tagged_edges(BMesh *bm)
+void BM_remove_tagged_edges(BMesh *bm, int flag)
 {
        BMHeader *current, *next;
        
@@ -295,12 +250,12 @@
        
        while(current){
                next = current->next;
-               if( bmesh_test_sysflag(current, BMESH_DELETE) ) bmesh_ke(bm, 
(BMEdge*)current);
+               if(BMO_TestFlag(bm, current, flag)) bmesh_ke(bm, 
(BMEdge*)current);
                current = next;
        }
 }
 
-static void remove_tagged_verts(BMesh *bm)
+void BM_remove_tagged_verts(BMesh *bm, int flag)
 {
        BMHeader *current, *next;
 
@@ -308,7 +263,7 @@
 
        while(current){
                next = current->next;
-               if( bmesh_test_sysflag(current, BMESH_DELETE) ) 
bmesh_kv(bm,(BMVert*)current);
+               if(BMO_TestFlag(bm, current, flag)) 
bmesh_kv(bm,(BMVert*)current);
                current = next;
        }
 }


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

Reply via email to