[Bf-blender-cvs] [e7a6efa] master: Code Cleanup: move delete funcs out of bmesh_construct.c into own file

Campbell Barton noreply at git.blender.org
Thu Jan 16 23:22:55 CET 2014


Commit: e7a6efa2a78f216db928617c73a12b784aaf21e8
Author: Campbell Barton
Date:   Fri Jan 17 09:21:30 2014 +1100
https://developer.blender.org/rBe7a6efa2a78f216db928617c73a12b784aaf21e8

Code Cleanup: move delete funcs out of bmesh_construct.c into own file

===================================================================

M	source/blender/bmesh/CMakeLists.txt
M	source/blender/bmesh/bmesh.h
M	source/blender/bmesh/intern/bmesh_construct.c
M	source/blender/bmesh/intern/bmesh_construct.h
A	source/blender/bmesh/intern/bmesh_delete.c
A	source/blender/bmesh/intern/bmesh_delete.h

===================================================================

diff --git a/source/blender/bmesh/CMakeLists.txt b/source/blender/bmesh/CMakeLists.txt
index 8d87e29..2cd256e 100644
--- a/source/blender/bmesh/CMakeLists.txt
+++ b/source/blender/bmesh/CMakeLists.txt
@@ -80,6 +80,8 @@ set(SRC
 	intern/bmesh_core.h
 	intern/bmesh_edgeloop.c
 	intern/bmesh_edgeloop.h
+	intern/bmesh_delete.c
+	intern/bmesh_delete.h
 	intern/bmesh_inline.h
 	intern/bmesh_interp.c
 	intern/bmesh_interp.h
diff --git a/source/blender/bmesh/bmesh.h b/source/blender/bmesh/bmesh.h
index 52aeff7..8b5250b 100644
--- a/source/blender/bmesh/bmesh.h
+++ b/source/blender/bmesh/bmesh.h
@@ -244,6 +244,7 @@ extern "C" {
 
 #include "intern/bmesh_core.h"
 #include "intern/bmesh_construct.h"
+#include "intern/bmesh_delete.h"
 #include "intern/bmesh_edgeloop.h"
 #include "intern/bmesh_interp.h"
 #include "intern/bmesh_iterators.h"
diff --git a/source/blender/bmesh/intern/bmesh_construct.c b/source/blender/bmesh/intern/bmesh_construct.c
index 1a7464c..a8f8f92 100644
--- a/source/blender/bmesh/intern/bmesh_construct.c
+++ b/source/blender/bmesh/intern/bmesh_construct.c
@@ -494,225 +494,6 @@ BMFace *BM_face_create_ngon_vcloud(BMesh *bm, BMVert **vert_arr, int len,
 	return f;
 }
 
-/**
- * Called by operators to remove elements that they have marked for
- * removal.
- */
-void BMO_remove_tagged_faces(BMesh *bm, const short oflag)
-{
-	BMFace *f, *f_next;
-	BMIter iter;
-
-	BM_ITER_MESH_MUTABLE (f, f_next, &iter, bm, BM_FACES_OF_MESH) {
-		if (BMO_elem_flag_test(bm, f, oflag)) {
-			BM_face_kill(bm, f);
-		}
-	}
-}
-
-void BMO_remove_tagged_edges(BMesh *bm, const short oflag)
-{
-	BMEdge *e, *e_next;
-	BMIter iter;
-
-	BM_ITER_MESH_MUTABLE (e, e_next, &iter, bm, BM_EDGES_OF_MESH) {
-		if (BMO_elem_flag_test(bm, e, oflag)) {
-			BM_edge_kill(bm, e);
-		}
-	}
-}
-
-void BMO_remove_tagged_verts(BMesh *bm, const short oflag)
-{
-	BMVert *v, *v_next;
-	BMIter iter;
-
-	BM_ITER_MESH_MUTABLE (v, v_next, &iter, bm, BM_VERTS_OF_MESH) {
-		if (BMO_elem_flag_test(bm, v, oflag)) {
-			BM_vert_kill(bm, v);
-		}
-	}
-}
-
-/**
- * you need to make remove tagged verts/edges/faces
- * api functions that take a filter callback.....
- * and this new filter type will be for opstack flags.
- * This is because the BM_remove_taggedXXX functions bypass iterator API.
- *  - Ops don't care about 'UI' considerations like selection state, hide state, etc.
- *    If you want to work on unhidden selections for instance,
- *    copy output from a 'select context' operator to another operator....
- */
-
-static void bmo_remove_tagged_context_verts(BMesh *bm, const short oflag)
-{
-	BMVert *v;
-	BMEdge *e;
-	BMFace *f;
-
-	BMIter iter;
-	BMIter itersub;
-
-	BM_ITER_MESH (v, &iter, bm, BM_VERTS_OF_MESH) {
-		if (BMO_elem_flag_test(bm, v, oflag)) {
-			/* Visit edge */
-			BM_ITER_ELEM (e, &itersub, v, BM_EDGES_OF_VERT) {
-				BMO_elem_flag_enable(bm, e, oflag);
-			}
-			/* Visit face */
-			BM_ITER_ELEM (f, &itersub, v, BM_FACES_OF_VERT) {
-				BMO_elem_flag_enable(bm, f, oflag);
-			}
-		}
-	}
-
-	BMO_remove_tagged_faces(bm, oflag);
-	BMO_remove_tagged_edges(bm, oflag);
-	BMO_remove_tagged_verts(bm, oflag);
-}
-
-static void bmo_remove_tagged_context_edges(BMesh *bm, const short oflag)
-{
-	BMEdge *e;
-	BMFace *f;
-
-	BMIter iter;
-	BMIter itersub;
-
-	BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
-		if (BMO_elem_flag_test(bm, e, oflag)) {
-			BM_ITER_ELEM (f, &itersub, e, BM_FACES_OF_EDGE) {
-				BMO_elem_flag_enable(bm, f, oflag);
-			}
-		}
-	}
-	BMO_remove_tagged_faces(bm, oflag);
-	BMO_remove_tagged_edges(bm, oflag);
-}
-
-#define DEL_WIREVERT	(1 << 10)
-
-/**
- * \warning oflag applies to different types in some contexts,
- * not just the type being removed.
- *
- * \warning take care, uses operator flag DEL_WIREVERT
- */
-void BMO_remove_tagged_context(BMesh *bm, const short oflag, const int type)
-{
-	BMVert *v;
-	BMEdge *e;
-	BMFace *f;
-
-	BMIter viter;
-	BMIter eiter;
-	BMIter fiter;
-
-	switch (type) {
-		case DEL_VERTS:
-		{
-			bmo_remove_tagged_context_verts(bm, oflag);
-
-			break;
-		}
-		case DEL_EDGES:
-		{
-			/* flush down to vert */
-			BM_ITER_MESH (e, &eiter, bm, BM_EDGES_OF_MESH) {
-				if (BMO_elem_flag_test(bm, e, oflag)) {
-					BMO_elem_flag_enable(bm, e->v1, oflag);
-					BMO_elem_flag_enable(bm, e->v2, oflag);
-				}
-			}
-			bmo_remove_tagged_context_edges(bm, oflag);
-			/* remove loose vertice */
-			BM_ITER_MESH (v, &viter, bm, BM_VERTS_OF_MESH) {
-				if (BMO_elem_flag_test(bm, v, oflag) && (!(v->e)))
-					BMO_elem_flag_enable(bm, v, DEL_WIREVERT);
-			}
-			BMO_remove_tagged_verts(bm, DEL_WIREVERT);
-
-			break;
-		}
-		case DEL_EDGESFACES:
-		{
-			bmo_remove_tagged_context_edges(bm, oflag);
-
-			break;
-		}
-		case DEL_ONLYFACES:
-		{
-			BMO_remove_tagged_faces(bm, oflag);
-
-			break;
-		}
-		case DEL_ONLYTAGGED:
-		{
-			BMO_remove_tagged_faces(bm, oflag);
-			BMO_remove_tagged_edges(bm, oflag);
-			BMO_remove_tagged_verts(bm, oflag);
-
-			break;
-		}
-		case DEL_FACES:
-		{
-			/* go through and mark all edges and all verts of all faces for delete */
-			BM_ITER_MESH (f, &fiter, bm, BM_FACES_OF_MESH) {
-				if (BMO_elem_flag_test(bm, f, oflag)) {
-					for (e = BM_iter_new(&eiter, bm, BM_EDGES_OF_FACE, f); e; e = BM_iter_step(&eiter))
-						BMO_elem_flag_enable(bm, e, oflag);
-					for (v = BM_iter_new(&viter, bm, BM_VERTS_OF_FACE, f); v; v = BM_iter_step(&viter))
-						BMO_elem_flag_enable(bm, v, oflag);
-				}
-			}
-			/* now go through and mark all remaining faces all edges for keeping */
-			BM_ITER_MESH (f, &fiter, bm, BM_FACES_OF_MESH) {
-				if (!BMO_elem_flag_test(bm, f, oflag)) {
-					for (e = BM_iter_new(&eiter, bm, BM_EDGES_OF_FACE, f); e; e = BM_iter_step(&eiter)) {
-						BMO_elem_flag_disable(bm, e, oflag);
-					}
-					for (v = BM_iter_new(&viter, bm, BM_VERTS_OF_FACE, f); v; v = BM_iter_step(&viter)) {
-						BMO_elem_flag_disable(bm, v, oflag);
-					}
-				}
-			}
-			/* also mark all the vertices of remaining edges for keeping */
-			BM_ITER_MESH (e, &eiter, bm, BM_EDGES_OF_MESH) {
-				if (!BMO_elem_flag_test(bm, e, oflag)) {
-					BMO_elem_flag_disable(bm, e->v1, oflag);
-					BMO_elem_flag_disable(bm, e->v2, oflag);
-				}
-			}
-			/* now delete marked face */
-			BMO_remove_tagged_faces(bm, oflag);
-			/* delete marked edge */
-			BMO_remove_tagged_edges(bm, oflag);
-			/* remove loose vertice */
-			BMO_remove_tagged_verts(bm, oflag);
-
-			break;
-		}
-		case DEL_ALL:
-		{
-			/* does this option even belong in here? */
-			BM_ITER_MESH (f, &fiter, bm, BM_FACES_OF_MESH) {
-				BMO_elem_flag_enable(bm, f, oflag);
-			}
-			BM_ITER_MESH (e, &eiter, bm, BM_EDGES_OF_MESH) {
-				BMO_elem_flag_enable(bm, e, oflag);
-			}
-			BM_ITER_MESH (v, &viter, bm, BM_VERTS_OF_MESH) {
-				BMO_elem_flag_enable(bm, v, oflag);
-			}
-
-			BMO_remove_tagged_faces(bm, oflag);
-			BMO_remove_tagged_edges(bm, oflag);
-			BMO_remove_tagged_verts(bm, oflag);
-
-			break;
-		}
-	}
-}
 /*************************************************************/
 
 
diff --git a/source/blender/bmesh/intern/bmesh_construct.h b/source/blender/bmesh/intern/bmesh_construct.h
index e85c97d..12d3a4b 100644
--- a/source/blender/bmesh/intern/bmesh_construct.h
+++ b/source/blender/bmesh/intern/bmesh_construct.h
@@ -44,12 +44,6 @@ BMFace *BM_face_create_ngon_verts(BMesh *bm, BMVert **vert_arr, const int len,
 BMFace *BM_face_create_ngon_vcloud(BMesh *bm, BMVert **vert_arr, int len,
                                    const BMFace *f_example, const eBMCreateFlag create_flag);
 
-void BMO_remove_tagged_faces(BMesh *bm, const short oflag);
-void BMO_remove_tagged_edges(BMesh *bm, const short oflag);
-void BMO_remove_tagged_verts(BMesh *bm, const short oflag);
-
-void BMO_remove_tagged_context(BMesh *bm, const short oflag, const int type);
-
 void BM_elem_attrs_copy_ex(BMesh *bm_src, BMesh *bm_dst, const void *ele_src_v, void *ele_dst_v,
                            const char hflag_mask);
 void BM_elem_attrs_copy(BMesh *bm_src, BMesh *bm_dst, const void *ele_src_v, void *ele_dst_v);
diff --git a/source/blender/bmesh/intern/bmesh_delete.c b/source/blender/bmesh/intern/bmesh_delete.c
new file mode 100644
index 0000000..45d95fc
--- /dev/null
+++ b/source/blender/bmesh/intern/bmesh_delete.c
@@ -0,0 +1,259 @@
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2007 Blender Foundation.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): Geoffrey Bantle.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+/** \file blender/bmesh/intern/bmesh_delete.c
+ *  \ingroup bmesh
+ *
+ * BM remove functions.
+ */
+
+#include "MEM_guardedalloc.h"
+
+#include "BLI_utildefines.h"
+
+#include "bmesh.h"
+#include "intern/bmesh_private.h"
+
+/**
+ * Called by operators to remove elements that they have marked for
+ * removal.
+ */
+void BMO_remove_tagged_faces(BMesh *bm, const short oflag)
+{
+	BMFace *f, *f_next;
+	BMIter iter;
+
+	BM_ITER_MESH_MUTABLE (f, f_next, &iter, bm, BM_FACES_OF_MESH) {
+		if (BMO_elem_flag_test(bm, f, oflag)) {
+			BM_face_kill(bm, f);
+		}
+	}
+}
+
+void BMO_remove_tagged_edges(BMesh *bm, const short oflag)
+{
+	BMEdge *e, *e_next;
+	BMIter iter;
+
+	BM_ITER_MESH_MUTABLE (e, e_next, &iter, bm, BM_EDGES_OF_MESH) {
+		if (BMO_elem_flag_test(bm, e, oflag)) {
+			BM_edge_kill(bm, e);
+		}
+	}
+}
+
+void BMO_remove_tagged_verts(BMesh *bm, const short oflag)
+{
+	BMVert *v, *v_next;
+	BMIter iter;
+
+	BM_ITER_MESH_MUTABLE (v, v_next, &iter, bm, BM_VERTS_OF_MESH) 

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list