[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