[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