[Bf-blender-cvs] [0782187] master: Code cleanup: BKE_nurbList_handles_set used some strange logic

Campbell Barton noreply at git.blender.org
Sun Mar 30 06:05:00 CEST 2014


Commit: 0782187979b67a743fe612d7404fe5698a4a7f24
Author: Campbell Barton
Date:   Sun Mar 30 14:04:24 2014 +1100
https://developer.blender.org/rB0782187979b67a743fe612d7404fe5698a4a7f24

Code cleanup: BKE_nurbList_handles_set used some strange logic

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

M	source/blender/blenkernel/BKE_curve.h
M	source/blender/blenkernel/intern/curve.c

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

diff --git a/source/blender/blenkernel/BKE_curve.h b/source/blender/blenkernel/BKE_curve.h
index 407dc06..0db2e6a 100644
--- a/source/blender/blenkernel/BKE_curve.h
+++ b/source/blender/blenkernel/BKE_curve.h
@@ -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);
diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c
index d564025..109909e 100644
--- a/source/blender/blenkernel/intern/curve.c
+++ b/source/blender/blenkernel/intern/curve.c
@@ -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;
 		}
 	}
 }




More information about the Bf-blender-cvs mailing list