Revision: 44144
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44144
Author:   campbellbarton
Date:     2012-02-16 11:48:09 +0000 (Thu, 16 Feb 2012)
Log Message:
-----------
some minor refactoring for edge disk link's, typedef their own struct type.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/bmesh/bmesh.h
    branches/bmesh/blender/source/blender/bmesh/bmesh_class.h
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_interp.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_newcore.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_private.h
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_structure.c
    branches/bmesh/blender/source/blender/bmesh/operators/bmo_create.c

Modified: branches/bmesh/blender/source/blender/bmesh/bmesh.h
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/bmesh.h 2012-02-16 09:44:22 UTC 
(rev 44143)
+++ branches/bmesh/blender/source/blender/bmesh/bmesh.h 2012-02-16 11:48:09 UTC 
(rev 44144)
@@ -278,8 +278,8 @@
 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);

Modified: branches/bmesh/blender/source/blender/bmesh/bmesh_class.h
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/bmesh_class.h   2012-02-16 
09:44:22 UTC (rev 44143)
+++ branches/bmesh/blender/source/blender/bmesh/bmesh_class.h   2012-02-16 
11:48:09 UTC (rev 44144)
@@ -59,9 +59,9 @@
        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 @@
        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 {

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_interp.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_interp.c   
2012-02-16 09:44:22 UTC (rev 44143)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_interp.c   
2012-02-16 11:48:09 UTC (rev 44144)
@@ -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 @@
  *     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 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])

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_newcore.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_newcore.c  
2012-02-16 09:44:22 UTC (rev 44143)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_newcore.c  
2012-02-16 11:48:09 UTC (rev 44144)
@@ -341,8 +341,13 @@
                                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)

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_private.h
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_private.h  
2012-02-16 09:44:22 UTC (rev 44143)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_private.h  
2012-02-16 11:48:09 UTC (rev 44144)
@@ -50,10 +50,10 @@
         __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);

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_structure.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_structure.c        
2012-02-16 09:44:22 UTC (rev 44143)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_structure.c        
2012-02-16 11:48:09 UTC (rev 44144)
@@ -65,12 +65,12 @@
 {
        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_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 @@
 
 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;
 }
 

Modified: branches/bmesh/blender/source/blender/bmesh/operators/bmo_create.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/bmo_create.c  
2012-02-16 09:44:22 UTC (rev 44143)
+++ branches/bmesh/blender/source/blender/bmesh/operators/bmo_create.c  
2012-02-16 11:48:09 UTC (rev 44144)
@@ -63,13 +63,7 @@
 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 @@
 
 /****  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 @@
                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);

@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to