[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44091] branches/bmesh/blender/source/ blender/editors/mesh/knifetool.c: Code cleanup: add and use knife list utility functions

Howard Trickey howard.trickey at gmail.com
Mon Feb 13 15:45:17 CET 2012


Revision: 44091
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44091
Author:   howardt
Date:     2012-02-13 14:45:17 +0000 (Mon, 13 Feb 2012)
Log Message:
-----------
Code cleanup: add and use knife list utility functions

In preparation for code in progress that uses lists
allocated out of the knife arena.  This also makes
existing code more readable and understandable IMO.

Also removed an #if'd out function that will not
ever be needed.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/editors/mesh/knifetool.c

Modified: branches/bmesh/blender/source/blender/editors/mesh/knifetool.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/knifetool.c	2012-02-13 14:37:07 UTC (rev 44090)
+++ branches/bmesh/blender/source/blender/editors/mesh/knifetool.c	2012-02-13 14:45:17 UTC (rev 44091)
@@ -180,6 +180,22 @@
 	ED_view3d_project_float(kcd->ar, co, sco, kcd->projmat);
 }
 
+static ListBase *knife_empty_list(knifetool_opdata *kcd) {
+	ListBase *lst;
+
+	lst = BLI_memarena_alloc(kcd->arena, sizeof(ListBase));
+	lst->first = lst->last = NULL;
+	return lst;
+}
+
+static void knife_append_list(knifetool_opdata *kcd, ListBase *lst, void *elem) {
+	Ref *ref;
+
+	ref = BLI_mempool_calloc(kcd->refs);
+	ref->ref = elem;
+	BLI_addtail(lst, ref);
+}
+
 static KnifeEdge *new_knife_edge(knifetool_opdata *kcd)
 {
 	kcd->totkedge++;
@@ -188,15 +204,8 @@
 
 static void knife_add_to_vert_edges(knifetool_opdata *kcd, KnifeEdge* kfe)
 {
-	Ref *ref;
-
-	ref = BLI_mempool_calloc(kcd->refs);
-	ref->ref = kfe;
-	BLI_addtail(&kfe->v1->edges, ref);
-
-	ref = BLI_mempool_calloc(kcd->refs);
-	ref->ref = kfe;
-	BLI_addtail(&kfe->v2->edges, ref);
+	knife_append_list(kcd, &kfe->v1->edges, kfe);
+	knife_append_list(kcd, &kfe->v2->edges, kfe);
 }
 
 static KnifeVert *new_knife_vert(knifetool_opdata *kcd, float *co, float *cageco)
@@ -233,7 +242,6 @@
 {
 	KnifeEdge *kfe = BLI_ghash_lookup(kcd->origedgemap, e);
 	if (!kfe) {
-		Ref *ref;
 		BMIter iter;
 		BMFace *f;
 		
@@ -247,9 +255,7 @@
 		BLI_ghash_insert(kcd->origedgemap, e, kfe);
 		
 		BM_ITER(f, &iter, kcd->em->bm, BM_FACES_OF_EDGE, e) {
-			ref = BLI_mempool_calloc(kcd->refs);
-			ref->ref = f;
-			BLI_addtail(&kfe->faces, ref);
+			knife_append_list(kcd, &kfe->faces, f);
 			
 			/* ensures the kedges lst for this f is initialized,
 			 * it automatically adds kfe by itself */
@@ -311,13 +317,10 @@
 		BMIter iter;
 		BMEdge *e;
 		
-		lst = BLI_memarena_alloc(kcd->arena, sizeof(ListBase));
-		lst->first = lst->last = NULL;
+		lst = knife_empty_list(kcd);
 		
 		BM_ITER(e, &iter, kcd->em->bm, BM_EDGES_OF_FACE, f) {
-			Ref *ref = BLI_mempool_calloc(kcd->refs);
-			ref->ref = get_bm_knife_edge(kcd, e);
-			BLI_addtail(lst, ref);
+			knife_append_list(kcd, lst, get_bm_knife_edge(kcd, e));
 		}
 		
 		BLI_ghash_insert(kcd->kedgefacemap, f, lst);
@@ -360,15 +363,8 @@
 
 static void knife_edge_append_face(knifetool_opdata *kcd, KnifeEdge *kfe, BMFace *f)
 {
-	ListBase *lst = knife_get_face_kedges(kcd, f);
-	Ref *ref = BLI_mempool_calloc(kcd->refs);
-	
-	ref->ref = kfe;
-	BLI_addtail(lst, ref);
-	
-	ref = BLI_mempool_calloc(kcd->refs);
-	ref->ref = f;
-	BLI_addtail(&kfe->faces, ref);
+	knife_append_list(kcd, knife_get_face_kedges(kcd, f), kfe);
+	knife_append_list(kcd, &kfe->faces, f);
 }
 
 static KnifeVert *knife_split_edge(knifetool_opdata *kcd, KnifeEdge *kfe, float co[3], KnifeEdge **newkfe_out)
@@ -404,27 +400,6 @@
 	return newkfe->v2;
 }
 
-#if 0
-static void knife_copy_edge_facelist(knifetool_opdata *kcd, KnifeEdge *dest, KnifeEdge *source) 
-{
-	Ref *ref, *ref2;
-	
-	for (ref2 = source->faces.first; ref2; ref2 = ref2->next) {
-		ListBase *lst = knife_get_face_kedges(kcd, ref2->ref);
-		
-		/* add new edge to face knife edge list */
-		ref = BLI_mempool_calloc(kcd->refs);
-		ref->ref = dest;
-		BLI_addtail(lst, ref);
-		
-		/* add face to new edge's face list */
-		ref = BLI_mempool_calloc(kcd->refs);
-		ref->ref = ref2->ref;
-		BLI_addtail(&dest->faces, ref);
-	}
-}
-#endif
-
 static void knife_add_single_cut(knifetool_opdata *kcd)
 {
 	KnifeEdge *kfe = new_knife_edge(kcd), *kfe2 = NULL, *kfe3 = NULL;
@@ -531,20 +506,15 @@
 static void knife_get_vert_faces(knifetool_opdata *kcd, KnifeVert* kfv, BMFace *facef, ListBase *lst)
 {
 	BMIter bmiter;
-	Ref *ref;
 	BMFace *f;
 
 	if (kfv->isface && facef) {
-		ref = BLI_mempool_calloc(kcd->refs);
-		ref->ref = facef;
-		BLI_addtail(lst, ref);
+		knife_append_list(kcd, lst, facef);
 	}
 	else if (kfv->v) {
 		BMesh *bm = kcd->em->bm;
 		BM_ITER(f, &bmiter, bm, BM_FACES_OF_VERT, kfv->v) {
-			ref = BLI_mempool_calloc(kcd->refs);
-			ref->ref = f;
-			BLI_addtail(lst, ref);
+			knife_append_list(kcd, lst, f);
 		}
 	}
 }
@@ -552,15 +522,12 @@
 static void knife_get_edge_faces(knifetool_opdata *kcd, KnifeEdge* kfe, ListBase *lst)
 {
 	BMIter bmiter;
-	Ref *ref;
 	BMFace *f;
 
 	if (kfe->e) {
 		BMesh *bm = kcd->em->bm;
 		BM_ITER(f, &bmiter, bm, BM_FACES_OF_EDGE, kfe->e) {
-			ref = BLI_mempool_calloc(kcd->refs);
-			ref->ref = f;
-			BLI_addtail(lst, ref);
+			knife_append_list(kcd, lst, f);
 		}
 	}
 }




More information about the Bf-blender-cvs mailing list