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
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2014-04-24 19:31:52 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-04-24 21:13:35 +0400
commitd5647a37b4ba74f4d3255257e35b8fa2049ded92 (patch)
tree9f27d84c3acf1ef2569ea1fe651693e8cd959bfb /source
parent72e905271316dfe7674648830da518f156fe4386 (diff)
BoxPack: flag verts used in packed boxes
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenlib/intern/boxpack2d.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/source/blender/blenlib/intern/boxpack2d.c b/source/blender/blenlib/intern/boxpack2d.c
index aa90b5e0eb9..1d9d0405a51 100644
--- a/source/blender/blenlib/intern/boxpack2d.c
+++ b/source/blender/blenlib/intern/boxpack2d.c
@@ -45,8 +45,9 @@ typedef struct BoxVert {
float x;
float y;
- int free : 8; /* vert status */
- int pad : 24;
+ int free : 8; /* vert status */
+ unsigned int used : 1;
+ unsigned int _pad : 23;
unsigned int index;
struct BoxPack *trb; /* top right box */
@@ -199,6 +200,7 @@ void BLI_box_pack_2d(BoxPack *boxarray, const unsigned int len, float *tot_width
vert->isect_cache[2] = vert->isect_cache[3] = NULL;
vert->free = CORNERFLAGS & ~TRF;
vert->trb = box;
+ vert->used = false;
vert->index = i++;
box->v[BL] = vert; vert++;
@@ -207,6 +209,7 @@ void BLI_box_pack_2d(BoxPack *boxarray, const unsigned int len, float *tot_width
vert->isect_cache[2] = vert->isect_cache[3] = NULL;
vert->free = CORNERFLAGS & ~BLF;
vert->blb = box;
+ vert->used = false;
vert->index = i++;
box->v[TR] = vert; vert++;
@@ -215,6 +218,7 @@ void BLI_box_pack_2d(BoxPack *boxarray, const unsigned int len, float *tot_width
vert->isect_cache[2] = vert->isect_cache[3] = NULL;
vert->free = CORNERFLAGS & ~BRF;
vert->brb = box;
+ vert->used = false;
vert->index = i++;
box->v[TL] = vert; vert++;
@@ -222,7 +226,8 @@ void BLI_box_pack_2d(BoxPack *boxarray, const unsigned int len, float *tot_width
vert->isect_cache[0] = vert->isect_cache[1] =
vert->isect_cache[2] = vert->isect_cache[3] = NULL;
vert->free = CORNERFLAGS & ~TLF;
- vert->tlb = box;
+ vert->tlb = box;
+ vert->used = false;
vert->index = i++;
box->v[BR] = vert; vert++;
}
@@ -245,6 +250,10 @@ void BLI_box_pack_2d(BoxPack *boxarray, const unsigned int len, float *tot_width
SET_BOXBOTTOM(box, 0.0f);
box->x = box->y = 0.0f;
+ for (i = 0; i < 4; i++) {
+ box->v[i]->used = true;
+ }
+
for (i = 0; i < 3; i++)
vertex_pack_indices[i] = box->v[i + 1]->index;
verts_pack_len = 3;
@@ -428,7 +437,8 @@ void BLI_box_pack_2d(BoxPack *boxarray, const unsigned int len, float *tot_width
/* End logical check */
for (k = 0; k < 4; k++) {
- if (box->v[k] != vert) {
+ if (box->v[k]->used == false) {
+ box->v[k]->used = true;
vertex_pack_indices[verts_pack_len] = box->v[k]->index;
verts_pack_len++;
}