Revision: 49024
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49024
Author:   nazgul
Date:     2012-07-18 11:48:13 +0000 (Wed, 18 Jul 2012)
Log Message:
-----------
Fixed wrong self-intersection check for non-closed splines

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-07-18 
11:01:23 UTC (rev 49023)
+++ trunk/blender/source/blender/blenkernel/intern/mask.c       2012-07-18 
11:48:13 UTC (rev 49024)
@@ -512,7 +512,7 @@
        *diagonal_bucket_b_r = &buckets[diagonal_bucket_b_index];
 }
 
-static void spline_feather_collapse_inner_loops(float (*feather_points)[2], 
int tot_feather_point)
+static void spline_feather_collapse_inner_loops(MaskSpline *spline, float 
(*feather_points)[2], int tot_feather_point)
 {
 #define BUCKET_INDEX(co) \
        feather_bucket_index_from_coord(co, min, bucket_scale, buckets_per_side)
@@ -541,8 +541,12 @@
                int next = i + 1;
                float delta;
 
-               if (next == tot_feather_point)
-                       next = 0;
+               if (next == tot_feather_point) {
+                       if (spline->flag & MASK_SPLINE_CYCLIC)
+                               next = 0;
+                       else
+                               break;
+               }
 
                delta = fabsf(feather_points[i][0] - feather_points[next][0]);
                if (delta > max_delta_x)
@@ -585,8 +589,12 @@
                int start = i, end = i + 1;
                int start_bucket_index, end_bucket_index;
 
-               if (end == tot_feather_point)
-                       end = 0;
+               if (end == tot_feather_point) {
+                       if (spline->flag & MASK_SPLINE_CYCLIC)
+                               end = 0;
+                       else
+                               break;
+               }
 
                start_bucket_index = BUCKET_INDEX(feather_points[start]);
                end_bucket_index = BUCKET_INDEX(feather_points[end]);
@@ -718,7 +726,7 @@
 
        /* this is slow! - don't do on draw */
        if (do_collapse) {
-               spline_feather_collapse_inner_loops(feather, tot);
+               spline_feather_collapse_inner_loops(spline, feather, tot);
        }
 
        return feather;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to