[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47459] trunk/blender/source/blender/ blenkernel/intern/mask.c: code cleanup: mask feather weight - add in checks for u==1 or u==0

Campbell Barton ideasman42 at gmail.com
Tue Jun 5 14:09:30 CEST 2012


Revision: 47459
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47459
Author:   campbellbarton
Date:     2012-06-05 12:09:24 +0000 (Tue, 05 Jun 2012)
Log Message:
-----------
code cleanup: mask feather weight - add in checks for u==1 or u==0

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/mask.c

Modified: trunk/blender/source/blender/blenkernel/intern/mask.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mask.c	2012-06-05 11:46:55 UTC (rev 47458)
+++ trunk/blender/source/blender/blenkernel/intern/mask.c	2012-06-05 12:09:24 UTC (rev 47459)
@@ -780,47 +780,57 @@
 float BKE_mask_point_weight(MaskSpline *spline, MaskSplinePoint *point, float u)
 {
 	MaskSplinePoint *points_array = BKE_mask_spline_point_array_from_point(spline, point);
-
 	BezTriple *bezt = &point->bezt, *bezt_next;
-	float cur_u, cur_w, next_u, next_w, fac;
-	int i;
 
 	bezt_next = mask_spline_point_next_bezt(spline, points_array, point);
 
-	if (!bezt_next)
+	if (!bezt_next) {
 		return bezt->weight;
+	}
+	else if (u <= 0.0) {
+		return bezt->weight;
+	}
+	else if (u >= 1.0f) {
+		return bezt_next->weight;
+	}
+	else {
+		float cur_u, cur_w, next_u, next_w, fac;
+		int i;
 
-	for (i = 0; i < point->tot_uw + 1; i++) {
+		for (i = 0; i < point->tot_uw + 1; i++) {
 
-		if (i == 0) {
-			cur_u = 0.0f;
-			cur_w = bezt->weight;
+			if (i == 0) {
+				cur_u = 0.0f;
+				cur_w = bezt->weight;
+			}
+			else {
+				cur_u = point->uw[i - 1].u;
+				cur_w = point->uw[i - 1].w;
+			}
+
+			if (i == point->tot_uw) {
+				next_u = 1.0f;
+				next_w = bezt_next->weight;
+			}
+			else {
+				next_u = point->uw[i].u;
+				next_w = point->uw[i].w;
+			}
+
+			if (u >= cur_u && u <= next_u) {
+				break;
+			}
 		}
-		else {
-			cur_u = point->uw[i - 1].u;
-			cur_w = point->uw[i - 1].w;
-		}
 
-		if (i == point->tot_uw) {
-			next_u = 1.0f;
-			next_w = bezt_next->weight;
+		fac = (u - cur_u) / (next_u - cur_u);
+
+		if (spline->weight_interp == MASK_SPLINE_INTERP_EASE) {
+			return cur_w + (next_w - cur_w) * (3.0f * fac * fac - 2.0f * fac * fac * fac);
 		}
 		else {
-			next_u = point->uw[i].u;
-			next_w = point->uw[i].w;
+			return (1.0f - fac) * cur_w + fac * next_w;
 		}
-
-		if (u >= cur_u && u <= next_u) {
-			break;
-		}
 	}
-
-	fac = (u - cur_u) / (next_u - cur_u);
-
-	if (spline->weight_interp == MASK_SPLINE_INTERP_EASE)
-		return cur_w + (next_w - cur_w) * (3.0f * fac * fac - 2.0f * fac * fac * fac);
-	else
-		return (1.0f - fac) * cur_w + fac * next_w;
 }
 
 MaskSplinePointUW *BKE_mask_point_sort_uw(MaskSplinePoint *point, MaskSplinePointUW *uw)




More information about the Bf-blender-cvs mailing list