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-02-16 15:48:09 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-02-16 15:48:09 +0400
commitf241451d1743afb1b2d9453c45a2529a58efb745 (patch)
treefcf4eb947bf97449401ea8c9e4c29a27473639e4
parent5fe525a6f634d1fbef212505f5669977cdbeff4b (diff)
some minor refactoring for edge disk link's, typedef their own struct type.
-rw-r--r--source/blender/bmesh/bmesh.h4
-rw-r--r--source/blender/bmesh/bmesh_class.h20
-rw-r--r--source/blender/bmesh/intern/bmesh_interp.c10
-rw-r--r--source/blender/bmesh/intern/bmesh_newcore.c7
-rw-r--r--source/blender/bmesh/intern/bmesh_private.h6
-rw-r--r--source/blender/bmesh/intern/bmesh_structure.c54
-rw-r--r--source/blender/bmesh/operators/bmo_create.c43
7 files changed, 72 insertions, 72 deletions
diff --git a/source/blender/bmesh/bmesh.h b/source/blender/bmesh/bmesh.h
index 3684fd7aead..a9936c31b36 100644
--- a/source/blender/bmesh/bmesh.h
+++ b/source/blender/bmesh/bmesh.h
@@ -278,8 +278,8 @@ void BM_face_multires_bounds_smooth(BMesh *bm, BMFace *f);
void BM_loop_interp_multires(BMesh *bm, BMLoop *target, BMFace *source);
void BM_vert_interp_from_face(BMesh *bm, BMVert *v, BMFace *source);
-void BM_data_interp_from_verts(BMesh *bm, BMVert *v1, BMVert *v2, BMVert *v, float fac);
-void BM_data_interp_face_vert_edge(BMesh *bm, BMVert *v1, BMVert *v2, BMVert *v, struct BMEdge *e1, float fac);
+void BM_data_interp_from_verts(BMesh *bm, BMVert *v1, BMVert *v2, BMVert *v, const float fac);
+void BM_data_interp_face_vert_edge(BMesh *bm, BMVert *v1, BMVert *v2, BMVert *v, struct BMEdge *e1, const float fac);
void BM_data_layer_add(BMesh *em, CustomData *data, int type);
void BM_data_layer_add_named(BMesh *bm, CustomData *data, int type, const char *name);
void BM_data_layer_free(BMesh *em, CustomData *data, int type);
diff --git a/source/blender/bmesh/bmesh_class.h b/source/blender/bmesh/bmesh_class.h
index 2802233d9f2..25443051027 100644
--- a/source/blender/bmesh/bmesh_class.h
+++ b/source/blender/bmesh/bmesh_class.h
@@ -59,9 +59,9 @@ typedef struct BMHeader {
char hflag; /* this would be a CD layer, see below */
} BMHeader;
-/*note: need some way to specify custom locations for custom data layers. so we can
-make them point directly into structs. and some way to make it only happen to the
-active layer, and properly update when switching active layers.*/
+/* note: need some way to specify custom locations for custom data layers. so we can
+ * make them point directly into structs. and some way to make it only happen to the
+ * active layer, and properly update when switching active layers.*/
typedef struct BMVert {
BMHeader head;
@@ -70,18 +70,18 @@ typedef struct BMVert {
struct BMEdge *e;
} BMVert;
+/* disk link structure, only used by edges */
+typedef struct BMDiskLink {
+ struct BMEdge *next, *prev;
+} BMDiskLink;
+
typedef struct BMEdge {
BMHeader head;
struct BMVert *v1, *v2;
struct BMLoop *l;
- /*disk cycle pointers*/
- struct {
- struct BMEdge *next, *prev;
- } dlink1;
- struct {
- struct BMEdge *next, *prev;
- } dlink2;
+ /* disk cycle pointers */
+ BMDiskLink v1_disk_link, v2_disk_link;
} BMEdge;
typedef struct BMLoop {
diff --git a/source/blender/bmesh/intern/bmesh_interp.c b/source/blender/bmesh/intern/bmesh_interp.c
index 13b13fdf3cf..d5f22690d63 100644
--- a/source/blender/bmesh/intern/bmesh_interp.c
+++ b/source/blender/bmesh/intern/bmesh_interp.c
@@ -50,7 +50,7 @@
*
* Interpolates per-vertex data from two sources to a target.
*/
-void BM_data_interp_from_verts(BMesh *bm, BMVert *v1, BMVert *v2, BMVert *v, float fac)
+void BM_data_interp_from_verts(BMesh *bm, BMVert *v1, BMVert *v2, BMVert *v, const float fac)
{
if (v1->head.data && v2->head.data) {
/* first see if we can avoid interpolation */
@@ -108,7 +108,7 @@ static void UNUSED_FUNCTION(BM_Data_Vert_Average)(BMesh *UNUSED(bm), BMFace *UNU
* Nothing
*/
-void BM_data_interp_face_vert_edge(BMesh *bm, BMVert *v1, BMVert *UNUSED(v2), BMVert *v, BMEdge *e1, float fac)
+void BM_data_interp_face_vert_edge(BMesh *bm, BMVert *v1, BMVert *UNUSED(v2), BMVert *v, BMEdge *e1, const float fac)
{
void *src[2];
float w[2];
@@ -295,9 +295,9 @@ static void cent_quad_v3_d(double *cent, double *v1, double *v2, double *v3, dou
static void UNUSED_FUNCTION(cent_tri_v3_d)(double *cent, double *v1, double *v2, double *v3)
{
- cent[0] = 0.33333 * (v1[0] + v2[0] + v3[0]);
- cent[1] = 0.33333 * (v1[1] + v2[1] + v3[1]);
- cent[2] = 0.33333 * (v1[2] + v2[2] + v3[2]);
+ cent[0] = (1.0 / 3.0) * (v1[0] + v2[0] + v3[0]);
+ cent[1] = (1.0 / 3.0) * (v1[1] + v2[1] + v3[1]);
+ cent[2] = (1.0 / 3.0) * (v1[2] + v2[2] + v3[2]);
}
static void UNUSED_FUNCTION(cross_v3_v3v3_d)(double r[3], const double a[3], const double b[3])
diff --git a/source/blender/bmesh/intern/bmesh_newcore.c b/source/blender/bmesh/intern/bmesh_newcore.c
index 2d267bd0835..5c738b3e028 100644
--- a/source/blender/bmesh/intern/bmesh_newcore.c
+++ b/source/blender/bmesh/intern/bmesh_newcore.c
@@ -341,8 +341,13 @@ int bmesh_check_element(BMesh *UNUSED(bm), void *element, const char htype)
err |= 8;
if (e->l && e->l->f->head.htype != BM_FACE)
err |= 16;
- if (e->dlink1.prev == NULL || e->dlink2.prev == NULL || e->dlink1.next == NULL || e->dlink2.next == NULL)
+ if (e->v1_disk_link.prev == NULL ||
+ e->v2_disk_link.prev == NULL ||
+ e->v1_disk_link.next == NULL ||
+ e->v2_disk_link.next == NULL)
+ {
err |= 32;
+ }
if (e->l && (e->l->radial_next == NULL || e->l->radial_prev == NULL))
err |= 64;
if (e->l && e->l->f->len <= 0)
diff --git a/source/blender/bmesh/intern/bmesh_private.h b/source/blender/bmesh/intern/bmesh_private.h
index 399fb3dbfa8..d362479c4d1 100644
--- a/source/blender/bmesh/intern/bmesh_private.h
+++ b/source/blender/bmesh/intern/bmesh_private.h
@@ -50,10 +50,10 @@ int bmesh_check_element(BMesh *bm, void *element, const char htype);
__LINE__, __FILE__); \
}
-#define BM_EDGE_LINK_GET(e, v) ( \
+#define BM_EDGE_DISK_LINK_GET(e, v) ( \
((v) == ((BMEdge*)(e))->v1) ? \
- (Link *)&(((BMEdge*)(e))->dlink1) : \
- (Link *)&(((BMEdge*)(e))->dlink2) \
+ &((e)->v1_disk_link) : \
+ &((e)->v2_disk_link) \
)
int bmesh_radial_length(struct BMLoop *l);
diff --git a/source/blender/bmesh/intern/bmesh_structure.c b/source/blender/bmesh/intern/bmesh_structure.c
index 0177bbe5fd3..268d8bfa346 100644
--- a/source/blender/bmesh/intern/bmesh_structure.c
+++ b/source/blender/bmesh/intern/bmesh_structure.c
@@ -65,12 +65,12 @@ int bmesh_edge_swapverts(BMEdge *e, BMVert *orig, BMVert *newv)
{
if (e->v1 == orig) {
e->v1 = newv;
- e->dlink1.next = e->dlink1.prev = NULL;
+ e->v1_disk_link.next = e->v1_disk_link.prev = NULL;
return TRUE;
}
else if (e->v2 == orig) {
e->v2 = newv;
- e->dlink2.next = e->dlink2.prev = NULL;
+ e->v2_disk_link.next = e->v2_disk_link.prev = NULL;
return TRUE;
}
return FALSE;
@@ -151,24 +151,24 @@ int bmesh_edge_swapverts(BMEdge *e, BMVert *orig, BMVert *newv)
int bmesh_disk_append_edge(struct BMEdge *e, struct BMVert *v)
{
if (!v->e) {
- Link *e1 = BM_EDGE_LINK_GET(e, v);
+ BMDiskLink *dl1 = BM_EDGE_DISK_LINK_GET(e, v);
v->e = e;
- e1->next = e1->prev = (Link *)e;
+ dl1->next = dl1->prev = e;
}
else {
- Link *e1, *e2, *e3;
+ BMDiskLink *dl1, *dl2, *dl3;
- e1 = BM_EDGE_LINK_GET(e, v);
- e2 = BM_EDGE_LINK_GET(v->e, v);
- e3 = e2->prev ? BM_EDGE_LINK_GET(e2->prev, v) : NULL;
+ dl1 = BM_EDGE_DISK_LINK_GET(e, v);
+ dl2 = BM_EDGE_DISK_LINK_GET(v->e, v);
+ dl3 = dl2->prev ? BM_EDGE_DISK_LINK_GET(dl2->prev, v) : NULL;
- e1->next = (Link *)v->e;
- e1->prev = e2->prev;
+ dl1->next = v->e;
+ dl1->prev = dl2->prev;
- e2->prev = (Link *)e;
- if (e3)
- e3->next = (Link *)e;
+ dl2->prev = e;
+ if (dl3)
+ dl3->next = e;
}
return TRUE;
@@ -176,40 +176,40 @@ int bmesh_disk_append_edge(struct BMEdge *e, struct BMVert *v)
void bmesh_disk_remove_edge(struct BMEdge *e, struct BMVert *v)
{
- Link *e1, *e2;
+ BMDiskLink *dl1, *dl2;
- e1 = BM_EDGE_LINK_GET(e, v);
- if (e1->prev) {
- e2 = BM_EDGE_LINK_GET(e1->prev, v);
- e2->next = e1->next;
+ dl1 = BM_EDGE_DISK_LINK_GET(e, v);
+ if (dl1->prev) {
+ dl2 = BM_EDGE_DISK_LINK_GET(dl1->prev, v);
+ dl2->next = dl1->next;
}
- if (e1->next) {
- e2 = BM_EDGE_LINK_GET(e1->next, v);
- e2->prev = e1->prev;
+ if (dl1->next) {
+ dl2 = BM_EDGE_DISK_LINK_GET(dl1->next, v);
+ dl2->prev = dl1->prev;
}
if (v->e == e)
- v->e = (e != (BMEdge *)e1->next) ? (BMEdge *)e1->next : NULL;
+ v->e = (e != (BMEdge *)dl1->next) ? (BMEdge *)dl1->next : NULL;
- e1->next = e1->prev = NULL;
+ dl1->next = dl1->prev = NULL;
}
struct BMEdge *bmesh_disk_nextedge(struct BMEdge *e, struct BMVert *v)
{
if (v == e->v1)
- return e->dlink1.next;
+ return e->v1_disk_link.next;
if (v == e->v2)
- return e->dlink2.next;
+ return e->v2_disk_link.next;
return NULL;
}
static BMEdge *bmesh_disk_prevedge(BMEdge *e, BMVert *v)
{
if (v == e->v1)
- return e->dlink1.prev;
+ return e->v1_disk_link.prev;
if (v == e->v2)
- return e->dlink2.prev;
+ return e->v2_disk_link.prev;
return NULL;
}
diff --git a/source/blender/bmesh/operators/bmo_create.c b/source/blender/bmesh/operators/bmo_create.c
index 5deaa516d3d..325156aa568 100644
--- a/source/blender/bmesh/operators/bmo_create.c
+++ b/source/blender/bmesh/operators/bmo_create.c
@@ -63,13 +63,7 @@ typedef struct PathBase {
typedef struct EdgeData {
int tag;
int ftag;
-
- struct {
- struct BMEdge *next, *prev;
- } dlink1;
- struct {
- struct BMEdge *next, *prev;
- } dlink2;
+ BMDiskLink v1_disk_link, v2_disk_link;
} EdgeData;
typedef struct VertData {
@@ -82,10 +76,10 @@ static int count_edge_faces(BMesh *bm, BMEdge *e);
/**** rotation system code * */
-#define RS_GET_EDGE_LINK(e, v, ed) ( \
+#define RS_GET_EDGE_LINK(e, v, e_data) ( \
(v) == ((BMEdge *)(e))->v1 ? \
- (Link *)&(((EdgeData *)(ed))->dlink1) : \
- (Link *)&(((EdgeData *)(ed))->dlink2) \
+ &(((EdgeData *)(e_data))->v1_disk_link) : \
+ &(((EdgeData *)(e_data))->v2_disk_link) \
)
@@ -102,19 +96,20 @@ static int rotsys_append_edge(struct BMEdge *e, struct BMVert *v,
e1->next = e1->prev = (Link *)e;
}
else {
- Link *e1, *e2, *e3;
+ BMDiskLink *dl1, *dl2, *dl3;
EdgeData *ved = &edata[BM_elem_index_get(vd->e)];
- e1 = RS_GET_EDGE_LINK(e, v, ed);
- e2 = RS_GET_EDGE_LINK(vd->e, v, ved);
- e3 = e2->prev ? RS_GET_EDGE_LINK(e2->prev, v, &edata[BM_elem_index_get(e2->prev)]) : NULL;
+ dl1 = RS_GET_EDGE_LINK(e, v, ed);
+ dl2 = RS_GET_EDGE_LINK(vd->e, v, ved);
+ dl3 = dl2->prev ? RS_GET_EDGE_LINK(dl2->prev, v, &edata[BM_elem_index_get(dl2->prev)]) : NULL;
- e1->next = (Link *)vd->e;
- e1->prev = e2->prev;
+ dl1->next = vd->e;
+ dl1->prev = dl2->prev;
- e2->prev = (Link *)e;
- if (e3)
- e3->next = (Link *)e;
+ dl2->prev = e;
+ if (dl3) {
+ dl3->next = e;
+ }
}
return TRUE;
@@ -125,7 +120,7 @@ static void UNUSED_FUNCTION(rotsys_remove_edge)(struct BMEdge *e, struct BMVert
{
EdgeData *ed = edata + BM_elem_index_get(e);
VertData *vd = vdata + BM_elem_index_get(v);
- Link *e1, *e2;
+ BMDiskLink *e1, *e2;
e1 = RS_GET_EDGE_LINK(e, v, ed);
if (e1->prev) {
@@ -148,9 +143,9 @@ static struct BMEdge *rotsys_nextedge(struct BMEdge *e, struct BMVert *v,
EdgeData *edata, VertData *UNUSED(vdata))
{
if (v == e->v1)
- return edata[BM_elem_index_get(e)].dlink1.next;
+ return edata[BM_elem_index_get(e)].v1_disk_link.next;
if (v == e->v2)
- return edata[BM_elem_index_get(e)].dlink2.next;
+ return edata[BM_elem_index_get(e)].v2_disk_link.next;
return NULL;
}
@@ -158,9 +153,9 @@ static BMEdge *rotsys_prevedge(BMEdge *e, BMVert *v,
EdgeData *edata, VertData *UNUSED(vdata))
{
if (v == e->v1)
- return edata[BM_elem_index_get(e)].dlink1.prev;
+ return edata[BM_elem_index_get(e)].v1_disk_link.prev;
if (v == e->v2)
- return edata[BM_elem_index_get(e)].dlink2.prev;
+ return edata[BM_elem_index_get(e)].v2_disk_link.prev;
return NULL;
}