Commit: 8f0a44a5d55d0f348c924d75be10565e8cecb6ab
Author: Campbell Barton
Date:   Sat Jun 25 11:24:25 2016 +1000
Branches: master
https://developer.blender.org/rB8f0a44a5d55d0f348c924d75be10565e8cecb6ab

Cleanup: use BLI_bitmap for bevel-split

===================================================================

M       source/blender/blenkernel/BKE_displist.h
M       source/blender/blenkernel/intern/displist.c
M       source/blender/render/intern/source/convertblender.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_displist.h 
b/source/blender/blenkernel/BKE_displist.h
index 3b09677..9625f05 100644
--- a/source/blender/blenkernel/BKE_displist.h
+++ b/source/blender/blenkernel/BKE_displist.h
@@ -45,10 +45,14 @@
 #define DL_VERTS                7
 
 /* dl->flag */
-#define DL_CYCL_U       1
-#define DL_CYCL_V       2
-#define DL_FRONT_CURVE  4
-#define DL_BACK_CURVE   8
+enum {
+       /** U/V swapped here compared with #Nurb.flagu, #Nurb.flagv and 
#CU_NURB_CYCLIC */
+       DL_CYCL_U       = (1 << 0),
+       DL_CYCL_V       = (1 << 1),
+
+       DL_FRONT_CURVE  = (1 << 2),
+       DL_BACK_CURVE   = (1 << 3),
+};
 
 
 /* prototypes */
@@ -70,7 +74,7 @@ typedef struct DispList {
        int charidx;
        int totindex;               /* indexed array drawing surfaces */
 
-       unsigned int *bevelSplitFlag;
+       unsigned int *bevel_split;  /* BLI_bitmap */
 } DispList;
 
 void BKE_displist_copy(struct ListBase *lbn, struct ListBase *lb);
diff --git a/source/blender/blenkernel/intern/displist.c 
b/source/blender/blenkernel/intern/displist.c
index 98cbe47..b69141f 100644
--- a/source/blender/blenkernel/intern/displist.c
+++ b/source/blender/blenkernel/intern/displist.c
@@ -71,7 +71,7 @@ void BKE_displist_elem_free(DispList *dl)
                if (dl->verts) MEM_freeN(dl->verts);
                if (dl->nors) MEM_freeN(dl->nors);
                if (dl->index) MEM_freeN(dl->index);
-               if (dl->bevelSplitFlag) MEM_freeN(dl->bevelSplitFlag);
+               if (dl->bevel_split) MEM_freeN(dl->bevel_split);
                MEM_freeN(dl);
        }
 }
@@ -144,8 +144,9 @@ void BKE_displist_copy(ListBase *lbn, ListBase *lb)
                dln->nors = MEM_dupallocN(dl->nors);
                dln->index = MEM_dupallocN(dl->index);
 
-               if (dl->bevelSplitFlag)
-                       dln->bevelSplitFlag = MEM_dupallocN(dl->bevelSplitFlag);
+               if (dl->bevel_split) {
+                       dln->bevel_split = MEM_dupallocN(dl->bevel_split);
+               }
 
                dl = dl->next;
        }
@@ -1642,8 +1643,7 @@ static void do_makeDispListCurveTypes(Scene *scene, 
Object *ob, ListBase *dispba
                                                        /* CU_2D conflicts with 
R_NOPUNOFLIP */
                                                        dl->rt = nu->flag & 
~CU_2D;
 
-                                                       dl->bevelSplitFlag = 
MEM_callocN(sizeof(*dl->bevelSplitFlag) * ((steps + 0x1F) >> 5),
-                                                                               
         "bevelSplitFlag");
+                                                       dl->bevel_split = 
BLI_BITMAP_NEW(steps, "bevel_split");
 
                                                        /* for each point of 
poly make a bevel piece */
                                                        bevp_first =  
bl->bevpoints;
@@ -1683,7 +1683,7 @@ static void do_makeDispListCurveTypes(Scene *scene, 
Object *ob, ListBase *dispba
                                                                }
 
                                                                if 
(bevp->split_tag) {
-                                                                       
dl->bevelSplitFlag[a >> 5] |= 1 << (a & 0x1F);
+                                                                       
BLI_BITMAP_ENABLE(dl->bevel_split, a);
                                                                }
 
                                                                /* rotate bevel 
piece and write in data */
diff --git a/source/blender/render/intern/source/convertblender.c 
b/source/blender/render/intern/source/convertblender.c
index 8c84777..9948ac9 100644
--- a/source/blender/render/intern/source/convertblender.c
+++ b/source/blender/render/intern/source/convertblender.c
@@ -2816,7 +2816,7 @@ static void init_render_curve(Render *re, ObjectRen *obr, 
int timeoffset)
                                                }
                                        }
 
-                                       if (dl->bevelSplitFlag || 
timeoffset==0) {
+                                       if (dl->bevel_split || timeoffset == 0) 
{
                                                const int startvlak= 
obr->totvlak;
 
                                                for (a=0; a<dl->parts; a++) {
@@ -2856,10 +2856,15 @@ static void init_render_curve(Render *re, ObjectRen 
*obr, int timeoffset)
                                                        }
                                                }
 
-                                               if (dl->bevelSplitFlag) {
-                                                       for (a=0; 
a<dl->parts-1+!!(dl->flag&DL_CYCL_V); a++)
-                                                               if 
(dl->bevelSplitFlag[a>>5]&(1<<(a&0x1F)))
-                                                                       
split_v_renderfaces(obr, startvlak, startvert, dl->parts, dl->nr, a, 
dl->flag&DL_CYCL_V, dl->flag&DL_CYCL_U);
+                                               if (dl->bevel_split) {
+                                                       for (a = 0; a < 
dl->parts - 1 + !!(dl->flag & DL_CYCL_V); a++) {
+                                                               if 
(BLI_BITMAP_TEST(dl->bevel_split, a)) {
+                                                                       
split_v_renderfaces(
+                                                                               
obr, startvlak, startvert, dl->parts, dl->nr, a,
+                                                                               
/* intentionally swap (v, u) --> (u, v) */
+                                                                               
dl->flag & DL_CYCL_V, dl->flag & DL_CYCL_U);
+                                                               }
+                                                       }
                                                }
 
                                                /* vertex normals */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to