Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-11-16 14:15:25 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-11-16 14:15:25 +0400
commit3edbd1d0e2b8b09af60cec4e058b795fc0c2a1f7 (patch)
tree33976ee725ca361ebee0fe224f295a387bb9c495 /source/blender/bmesh/operators/bmo_bevel.c
parentf5b356bf188528fd618cacaa22f6c72b3a625e09 (diff)
bevel: save some memory by aligning struct members.
Diffstat (limited to 'source/blender/bmesh/operators/bmo_bevel.c')
-rw-r--r--source/blender/bmesh/operators/bmo_bevel.c33
1 files changed, 20 insertions, 13 deletions
diff --git a/source/blender/bmesh/operators/bmo_bevel.c b/source/blender/bmesh/operators/bmo_bevel.c
index 28e28b67399..47295a44a84 100644
--- a/source/blender/bmesh/operators/bmo_bevel.c
+++ b/source/blender/bmesh/operators/bmo_bevel.c
@@ -37,17 +37,21 @@
#include "intern/bmesh_operators_private.h" /* own include */
/* experemental - Campbell */
-// #define USE_ALTERNATE_ADJ
+//#define USE_ALTERNATE_ADJ
#define BEVEL_FLAG 1
#define EDGE_SELECTED 2
#define BEVEL_EPSILON 1e-6
+/* for testing */
+// #pragma GCC diagnostic error "-Wpadded"
+
/* Constructed vertex, sometimes later instantiated as BMVert */
typedef struct NewVert {
BMVert *v;
float co[3];
+ int _pad;
} NewVert;
struct BoundVert;
@@ -56,28 +60,34 @@ struct BoundVert;
typedef struct EdgeHalf {
struct EdgeHalf *next, *prev; /* in CCW order */
BMEdge *e; /* original mesh edge */
- int isbev; /* is this edge beveled? */
- int isrev; /* is e->v2 the vertex at this end? */
- int seg; /* how many segments for the bevel */
- float offset; /* offset for this edge */
BMFace *fprev; /* face between this edge and previous, if any */
BMFace *fnext; /* face between this edge and next, if any */
struct BoundVert *leftv; /* left boundary vert (looking along edge to end) */
struct BoundVert *rightv; /* right boundary vert, if beveled */
+ short isbev; /* is this edge beveled? */
+ short isrev; /* is e->v2 the vertex at this end? */
+ int seg; /* how many segments for the bevel */
+ float offset; /* offset for this edge */
+// int _pad;
} EdgeHalf;
/* An element in a cyclic boundary of a Vertex Mesh (VMesh) */
typedef struct BoundVert {
struct BoundVert *next, *prev; /* in CCW order */
- int index; /* used for vmesh indexing */
NewVert nv;
EdgeHalf *efirst; /* first of edges attached here: in CCW order */
EdgeHalf *elast;
EdgeHalf *ebev; /* beveled edge whose left side is attached here, if any */
+ int index; /* used for vmesh indexing */
+// int _pad;
} BoundVert;
/* Mesh structure replacing a vertex */
typedef struct VMesh {
+ NewVert *mesh; /* allocated array - size and structure depends on kind */
+ BoundVert *boundstart; /* start of boundary double-linked list */
+ int count; /* number of vertices in the boundary */
+ int seg; /* common # of segments for segmented edges */
enum {
M_NONE, /* no polygon mesh needed */
M_POLY, /* a simple polygon */
@@ -86,10 +96,7 @@ typedef struct VMesh {
M_TRI_FAN, /* a simple polygon - fan filled */
M_QUAD_STRIP, /* a simple polygon - cut into paralelle strips */
} mesh_kind;
- int count; /* number of vertices in the boundary */
- int seg; /* common # of segments for segmented edges */
- BoundVert *boundstart; /* start of boundary double-linked list */
- NewVert *mesh; /* allocated array - size and structure depends on kind */
+// int _pad;
} VMesh;
/* Data for a vertex involved in a bevel */
@@ -101,9 +108,7 @@ typedef struct BevVert {
VMesh *vmesh; /* mesh structure for replacing vertex */
} BevVert;
-/*
- * Bevel parameters and state
- */
+/* Bevel parameters and state */
typedef struct BevelParams {
/* hash of BevVert for each vertex involved in bevel
* GHash: (key=(BMVert *), value=(BevVert *)) */
@@ -114,6 +119,8 @@ typedef struct BevelParams {
int seg; /* number of segments in beveled edge profile */
} BevelParams;
+// #pragma GCC diagnostic ignored "-Wpadded"
+
//#include "bevdebug.c"
/* Make a new BoundVert of the given kind, insert it at the end of the circular linked