Code cleanup: BKE_nurbList_handles_set used some strange logic

This commit is contained in:
Campbell Barton 2014-03-30 14:04:24 +11:00
parent 5819421e1b
commit 0782187979
2 changed files with 18 additions and 19 deletions

View File

@ -127,7 +127,7 @@ int BKE_nurbList_verts_count_without_handles(struct ListBase *nurb);
void BKE_nurbList_free(struct ListBase *lb);
void BKE_nurbList_duplicate(struct ListBase *lb1, struct ListBase *lb2);
void BKE_nurbList_handles_set(struct ListBase *editnurb, short code);
void BKE_nurbList_handles_set(struct ListBase *editnurb, const char code);
void BKE_nurbList_handles_recalculate(struct ListBase *editnurb, const bool calc_length, const char flag);
void BKE_nurbList_handles_autocalc(ListBase *editnurb, int flag);

View File

@ -3342,7 +3342,7 @@ void BKE_nurbList_handles_autocalc(ListBase *editnurb, int flag)
}
}
void BKE_nurbList_handles_set(ListBase *editnurb, short code)
void BKE_nurbList_handles_set(ListBase *editnurb, const char code)
{
/* code==1: set autohandle */
/* code==2: set vectorhandle */
@ -3353,9 +3353,8 @@ void BKE_nurbList_handles_set(ListBase *editnurb, short code)
Nurb *nu;
BezTriple *bezt;
int a;
short ok = 0;
if (code == 1 || code == 2) {
if (ELEM(code, HD_AUTO, HD_VECT)) {
nu = editnurb->first;
while (nu) {
if (nu->type == CU_BEZIER) {
@ -3382,46 +3381,46 @@ void BKE_nurbList_handles_set(ListBase *editnurb, short code)
}
}
else {
char h_new = HD_FREE;
/* there is 1 handle not FREE: FREE it all, else make ALIGNED */
nu = editnurb->first;
if (code == 5) {
ok = HD_ALIGN;
h_new = HD_ALIGN;
}
else if (code == 6) {
ok = HD_FREE;
h_new = HD_FREE;
}
else {
/* Toggle */
while (nu) {
for (nu = editnurb->first; nu; nu = nu->next) {
if (nu->type == CU_BEZIER) {
bezt = nu->bezt;
a = nu->pntsu;
while (a--) {
if ((bezt->f1 & SELECT) && bezt->h1) ok = 1;
if ((bezt->f3 & SELECT) && bezt->h2) ok = 1;
if (ok) break;
if (((bezt->f1 & SELECT) && bezt->h1 != HD_FREE) ||
((bezt->f3 & SELECT) && bezt->h2 != HD_FREE))
{
h_new = HD_AUTO;
break;
}
bezt++;
}
}
nu = nu->next;
}
if (ok) ok = HD_FREE;
else ok = HD_ALIGN;
h_new = (h_new == HD_FREE) ? HD_ALIGN : HD_FREE;
}
nu = editnurb->first;
while (nu) {
for (nu = editnurb->first; nu; nu = nu->next) {
if (nu->type == CU_BEZIER) {
bezt = nu->bezt;
a = nu->pntsu;
while (a--) {
if (bezt->f1 & SELECT) bezt->h1 = ok;
if (bezt->f3 & SELECT) bezt->h2 = ok;
if (bezt->f1 & SELECT) bezt->h1 = h_new;
if (bezt->f3 & SELECT) bezt->h2 = h_new;
bezt++;
}
BKE_nurb_handles_calc(nu);
}
nu = nu->next;
}
}
}