[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44590] trunk/blender/source/blender: bmmesh api - use struct rather than int[4] to initialize mesh sizes.

Campbell Barton ideasman42 at gmail.com
Thu Mar 1 21:09:18 CET 2012


Revision: 44590
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44590
Author:   campbellbarton
Date:     2012-03-01 20:09:17 +0000 (Thu, 01 Mar 2012)
Log Message:
-----------
bmmesh api - use struct rather than int[4] to initialize mesh sizes.

also correct bad assert() in previous commit.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/customdata.c
    trunk/blender/source/blender/blenkernel/intern/mesh.c
    trunk/blender/source/blender/blenkernel/intern/modifiers_bmesh.c
    trunk/blender/source/blender/bmesh/bmesh.h
    trunk/blender/source/blender/bmesh/bmesh_class.h
    trunk/blender/source/blender/bmesh/bmesh_operator_api.h
    trunk/blender/source/blender/bmesh/intern/bmesh_construct.c
    trunk/blender/source/blender/bmesh/intern/bmesh_mesh.c
    trunk/blender/source/blender/bmesh/intern/bmesh_mesh.h
    trunk/blender/source/blender/bmesh/intern/bmesh_operator_api_inline.c
    trunk/blender/source/blender/bmesh/intern/bmesh_walkers.c
    trunk/blender/source/blender/bmesh/operators/bmo_dissolve.c
    trunk/blender/source/blender/bmesh/operators/bmo_dupe.c
    trunk/blender/source/blender/bmesh/operators/bmo_edgesplit.c
    trunk/blender/source/blender/bmesh/operators/bmo_mesh_conv.c
    trunk/blender/source/blender/bmesh/tools/BME_bevel.c
    trunk/blender/source/blender/editors/mesh/bmesh_tools.c
    trunk/blender/source/blender/editors/mesh/bmesh_utils.c
    trunk/blender/source/blender/editors/mesh/knifetool.c

Modified: trunk/blender/source/blender/blenkernel/intern/customdata.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/customdata.c	2012-03-01 20:05:14 UTC (rev 44589)
+++ trunk/blender/source/blender/blenkernel/intern/customdata.c	2012-03-01 20:09:17 UTC (rev 44590)
@@ -51,6 +51,7 @@
 #include "BLI_mempool.h"
 #include "BLI_utildefines.h"
 
+#include "BKE_utildefines.h"
 #include "BKE_customdata.h"
 #include "BKE_customdata_file.h"
 #include "BKE_global.h"

Modified: trunk/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh.c	2012-03-01 20:05:14 UTC (rev 44589)
+++ trunk/blender/source/blender/blenkernel/intern/mesh.c	2012-03-01 20:09:17 UTC (rev 44590)
@@ -526,7 +526,7 @@
 {
 	BMesh *bm;
 
-	bm = BM_mesh_create(ob, bm_mesh_allocsize_default);
+	bm = BM_mesh_create(ob, &bm_mesh_allocsize_default);
 
 	BMO_op_callf(bm, "mesh_to_bmesh mesh=%p object=%p set_shapekey=%b", me, ob, TRUE);
 

Modified: trunk/blender/source/blender/blenkernel/intern/modifiers_bmesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifiers_bmesh.c	2012-03-01 20:05:14 UTC (rev 44589)
+++ trunk/blender/source/blender/blenkernel/intern/modifiers_bmesh.c	2012-03-01 20:09:17 UTC (rev 44590)
@@ -143,8 +143,12 @@
 	BMEditMesh *em = existing;
 	BMesh *bm;
 
-	if (em) bm = em->bm;
-	else bm = BM_mesh_create(ob, bm_mesh_allocsize_default);
+	if (em) {
+		bm = em->bm;
+	}
+	else {
+		bm = BM_mesh_create(ob, &bm_mesh_allocsize_default);
+	}
 
 	DM_to_bmesh_ex(dm, bm);
 
@@ -164,7 +168,7 @@
 {
 	BMesh *bm;
 
-	bm = BM_mesh_create(ob, bm_mesh_allocsize_default);
+	bm = BM_mesh_create(ob, &bm_mesh_allocsize_default);
 
 	DM_to_bmesh_ex(dm, bm);
 

Modified: trunk/blender/source/blender/bmesh/bmesh.h
===================================================================
--- trunk/blender/source/blender/bmesh/bmesh.h	2012-03-01 20:05:14 UTC (rev 44589)
+++ trunk/blender/source/blender/bmesh/bmesh.h	2012-03-01 20:09:17 UTC (rev 44590)
@@ -201,63 +201,13 @@
 #include "DNA_listBase.h"
 #include "DNA_customdata_types.h"
 
+#include <stdlib.h>
 #include "BLI_utildefines.h"
 
 #include "bmesh_class.h"
 
 /*forward declarations*/
 
-/*
- * BMHeader
- *
- * All mesh elements begin with a BMHeader. This structure
- * hold several types of data
- *
- * 1: The type of the element (vert, edge, loop or face)
- * 2: Persistant "header" flags/markings (sharp, seam, select, hidden, ect)
-      note that this is different from the "tool" flags.
- * 3: Unique ID in the bmesh.
- * 4: some elements for internal record keeping.
- *
-*/
-
-/* BMHeader->htype (char) */
-enum {
-	BM_VERT = 1,
-	BM_EDGE = 2,
-	BM_LOOP = 4,
-	BM_FACE = 8
-};
-
-#define BM_ALL (BM_VERT | BM_EDGE | BM_LOOP | BM_FACE)
-
-/* BMHeader->hflag (char) */
-enum {
-	BM_ELEM_SELECT  = (1 << 0),
-	BM_ELEM_HIDDEN  = (1 << 1),
-	BM_ELEM_SEAM    = (1 << 2),
-	BM_ELEM_SMOOTH  = (1 << 3), /* used for faces and edges, note from the user POV,
-                                  * this is a sharp edge when disabled */
-
-	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 2 spare flags which is awesome but since we're limited to 8
-	 * only add new flags with care! - campbell */
-	/* BM_ELEM_SPARE  = (1 << 5), */
-	/* BM_ELEM_SPARE  = (1 << 6), */
-
-	BM_ELEM_INTERNAL_TAG = (1 << 7) /* for low level internal API tagging,
-                                     * since tools may want to tag verts and
-                                     * not have functions clobber them */
-};
-
-/* Mesh Level Ops */
-extern int bm_mesh_allocsize_default[4];
-
-
 /* ------------------------------------------------------------------------- */
 /* bmesh_inline.c */
 

Modified: trunk/blender/source/blender/bmesh/bmesh_class.h
===================================================================
--- trunk/blender/source/blender/bmesh/bmesh_class.h	2012-03-01 20:05:14 UTC (rev 44589)
+++ trunk/blender/source/blender/bmesh/bmesh_class.h	2012-03-01 20:09:17 UTC (rev 44590)
@@ -47,6 +47,19 @@
  *
  * hrm. it doesnt but stull works ok, remove the comment above? - campbell.
  */
+
+/**
+ * BMHeader
+ *
+ * All mesh elements begin with a BMHeader. This structure
+ * hold several types of data
+ *
+ * 1: The type of the element (vert, edge, loop or face)
+ * 2: Persistant "header" flags/markings (smooth, seam, select, hidden, ect)
+ *     note that this is different from the "tool" flags.
+ * 3: Unique ID in the bmesh.
+ * 4: some elements for internal record keeping.
+ */
 typedef struct BMHeader {
 	void *data; /* customdata layers */
 	int index; /* notes:
@@ -188,4 +201,37 @@
 	int opflag; /* current operator flag */
 } BMesh;
 
+/* BMHeader->htype (char) */
+enum {
+	BM_VERT = 1,
+	BM_EDGE = 2,
+	BM_LOOP = 4,
+	BM_FACE = 8
+};
+
+#define BM_ALL (BM_VERT | BM_EDGE | BM_LOOP | BM_FACE)
+
+/* BMHeader->hflag (char) */
+enum {
+	BM_ELEM_SELECT  = (1 << 0),
+	BM_ELEM_HIDDEN  = (1 << 1),
+	BM_ELEM_SEAM    = (1 << 2),
+	BM_ELEM_SMOOTH  = (1 << 3), /* used for faces and edges, note from the user POV,
+                                  * this is a sharp edge when disabled */
+
+	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 2 spare flags which is awesome but since we're limited to 8
+	 * only add new flags with care! - campbell */
+	/* BM_ELEM_SPARE  = (1 << 5), */
+	/* BM_ELEM_SPARE  = (1 << 6), */
+
+	BM_ELEM_INTERNAL_TAG = (1 << 7) /* for low level internal API tagging,
+                                     * since tools may want to tag verts and
+                                     * not have functions clobber them */
+};
+
 #endif /* __BMESH_CLASS_H__ */

Modified: trunk/blender/source/blender/bmesh/bmesh_operator_api.h
===================================================================
--- trunk/blender/source/blender/bmesh/bmesh_operator_api.h	2012-03-01 20:05:14 UTC (rev 44589)
+++ trunk/blender/source/blender/bmesh/bmesh_operator_api.h	2012-03-01 20:09:17 UTC (rev 44590)
@@ -31,13 +31,9 @@
 extern "C" {
 #endif
 
-#include "BLI_memarena.h"
 #include "BLI_ghash.h"
 
-#include "BKE_utildefines.h"
-
 #include <stdarg.h>
-#include <string.h> /* for memcpy */
 
 /*
  * operators represent logical, executable mesh modules.  all topological
@@ -140,7 +136,7 @@
 	int needflag;
 	int flag;
 	struct BMOpSlot slots[BMO_OP_MAX_SLOTS]; void (*exec)(BMesh *bm, struct BMOperator *op);
-	MemArena *arena;
+	struct MemArena *arena;
 } BMOperator;
 
 #define MAX_SLOTNAME	32

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_construct.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_construct.c	2012-03-01 20:05:14 UTC (rev 44589)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_construct.c	2012-03-01 20:09:17 UTC (rev 44590)
@@ -589,17 +589,17 @@
 	int i, j;
 
 	/* allocate a bmesh */
-	bm = BM_mesh_create(bmold->ob, bm_mesh_allocsize_default);
+	bm = BM_mesh_create(bmold->ob, &bm_mesh_allocsize_default);
 
 	CustomData_copy(&bmold->vdata, &bm->vdata, CD_MASK_BMESH, CD_CALLOC, 0);
 	CustomData_copy(&bmold->edata, &bm->edata, CD_MASK_BMESH, CD_CALLOC, 0);
 	CustomData_copy(&bmold->ldata, &bm->ldata, CD_MASK_BMESH, CD_CALLOC, 0);
 	CustomData_copy(&bmold->pdata, &bm->pdata, CD_MASK_BMESH, CD_CALLOC, 0);
 
-	CustomData_bmesh_init_pool(&bm->vdata, bm_mesh_allocsize_default[0]);
-	CustomData_bmesh_init_pool(&bm->edata, bm_mesh_allocsize_default[1]);
-	CustomData_bmesh_init_pool(&bm->ldata, bm_mesh_allocsize_default[2]);
-	CustomData_bmesh_init_pool(&bm->pdata, bm_mesh_allocsize_default[3]);
+	CustomData_bmesh_init_pool(&bm->vdata, bm_mesh_allocsize_default.totvert);
+	CustomData_bmesh_init_pool(&bm->edata, bm_mesh_allocsize_default.totedge);
+	CustomData_bmesh_init_pool(&bm->ldata, bm_mesh_allocsize_default.totloop);
+	CustomData_bmesh_init_pool(&bm->pdata, bm_mesh_allocsize_default.totface);
 
 	vtable = MEM_mallocN(sizeof(BMVert *) * bmold->totvert, "BM_mesh_copy vtable");
 	etable = MEM_mallocN(sizeof(BMEdge *) * bmold->totedge, "BM_mesh_copy etable");

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_mesh.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_mesh.c	2012-03-01 20:05:14 UTC (rev 44589)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_mesh.c	2012-03-01 20:09:17 UTC (rev 44590)
@@ -44,14 +44,14 @@
 #include "bmesh_private.h"
 
 /* used as an extern, defined in bmesh.h */
-int bm_mesh_allocsize_default[4] = {512, 512, 2048, 512};
+BMAllocTemplate bm_mesh_allocsize_default = {512, 512, 2048, 512};
 
-static void bm_mempool_init(BMesh *bm, const int allocsize[4])
+static void bm_mempool_init(BMesh *bm, const BMAllocTemplate *allocsize)
 {
-	bm->vpool =        BLI_mempool_create(sizeof(BMVert),     allocsize[0], allocsize[0], FALSE, TRUE);
-	bm->epool =        BLI_mempool_create(sizeof(BMEdge),     allocsize[1], allocsize[1], FALSE, TRUE);
-	bm->lpool =        BLI_mempool_create(sizeof(BMLoop),     allocsize[2], allocsize[2], FALSE, FALSE);
-	bm->fpool =        BLI_mempool_create(sizeof(BMFace),     allocsize[3], allocsize[3], FALSE, TRUE);
+	bm->vpool =        BLI_mempool_create(sizeof(BMVert),     allocsize->totvert, allocsize->totvert, FALSE, TRUE);
+	bm->epool =        BLI_mempool_create(sizeof(BMEdge),     allocsize->totedge, allocsize->totedge, FALSE, TRUE);
+	bm->lpool =        BLI_mempool_create(sizeof(BMLoop),     allocsize->totloop, allocsize->totloop, FALSE, FALSE);
+	bm->fpool =        BLI_mempool_create(sizeof(BMFace),     allocsize->totface, allocsize->totface, FALSE, TRUE);
 
 #ifdef USE_BMESH_HOLES
 	bm->looplistpool = BLI_mempool_create(sizeof(BMLoopList), allocsize[3], allocsize[3], FALSE, FALSE);
@@ -70,7 +70,7 @@
  *
  * \note ob is needed by multires
  */

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list