ability to calculate mask curve and feather with predefined resolution (*_ex functions)
authorCampbell Barton <ideasman42@gmail.com>
Wed, 11 Jul 2012 20:18:46 +0000 (20:18 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 11 Jul 2012 20:18:46 +0000 (20:18 +0000)
source/blender/blenkernel/BKE_mask.h
source/blender/blenkernel/intern/mask.c

index 936628bf0e79c5bae3b77f0d1d85485acbeedc59..384bc327a8171ddfcb4bbf451fb5d71cd1d2b0ef 100644 (file)
@@ -67,9 +67,10 @@ struct MaskSpline *BKE_mask_spline_add(struct MaskLayer *masklay);
 float (*BKE_mask_spline_differentiate(struct MaskSpline *spline, int *tot_diff_point))[2];
 float (*BKE_mask_spline_feather_differentiated_points(struct MaskSpline *spline, int *tot_feather_point))[2];
 
+float (*BKE_mask_spline_differentiate_with_resolution_ex(struct MaskSpline *spline, const int resol, int *tot_diff_point))[2];
 float (*BKE_mask_spline_differentiate_with_resolution(struct MaskSpline *spline, int width, int height, int *tot_diff_point))[2];
-float (*BKE_mask_spline_feather_differentiated_points_with_resolution(struct MaskSpline *spline,
-                                                                      int width, int height, int *tot_feather_point))[2];
+float (*BKE_mask_spline_feather_differentiated_points_with_resolution_ex(struct MaskSpline *spline, const int resol, int *tot_feather_point))[2];
+float (*BKE_mask_spline_feather_differentiated_points_with_resolution(struct MaskSpline *spline, int width, int height, int *tot_feather_point))[2];
 
 float (*BKE_mask_spline_feather_points(struct MaskSpline *spline, int *tot_feather_point))[2];
 
index 6f6f15955cdb05dd3e88ae4888fe299513f9831e..ea152e4c188cff6c0098dfec60abd386a8850f55 100644 (file)
@@ -314,14 +314,14 @@ static int BKE_mask_spline_feather_resolution(MaskSpline *spline, int width, int
        return resol;
 }
 
-float (*BKE_mask_spline_differentiate_with_resolution(MaskSpline *spline, int width, int height,
-                                                      int *tot_diff_point))[2]
+float (*BKE_mask_spline_differentiate_with_resolution_ex(MaskSpline *spline, const int resol,
+                                                         int *tot_diff_point))[2]
 {
        MaskSplinePoint *points_array = BKE_mask_spline_point_array(spline);
 
        MaskSplinePoint *point, *prev;
        float (*diff_points)[2], (*fp)[2];
-       int a, len, resol = BKE_mask_spline_resolution(spline, width, height);
+       int a, len;
 
        if (spline->tot_point <= 1) {
                /* nothing to differentiate */
@@ -378,18 +378,26 @@ float (*BKE_mask_spline_differentiate_with_resolution(MaskSpline *spline, int wi
        return diff_points;
 }
 
+float (*BKE_mask_spline_differentiate_with_resolution(MaskSpline *spline, int width, int height,
+                                                      int *tot_diff_point))[2]
+{
+       int resol = BKE_mask_spline_resolution(spline, width, height);
+
+       return BKE_mask_spline_differentiate_with_resolution_ex(spline, resol, tot_diff_point);
+}
+
 float (*BKE_mask_spline_differentiate(MaskSpline *spline, int *tot_diff_point))[2]
 {
        return BKE_mask_spline_differentiate_with_resolution(spline, 0, 0, tot_diff_point);
 }
 
-float (*BKE_mask_spline_feather_differentiated_points_with_resolution(MaskSpline *spline, int width, int height,
-                                                                      int *tot_feather_point))[2]
+float (*BKE_mask_spline_feather_differentiated_points_with_resolution_ex(MaskSpline *spline, const int resol,
+                                                                         int *tot_feather_point))[2]
 {
        MaskSplinePoint *points_array = BKE_mask_spline_point_array(spline);
 
        float (*feather)[2], (*fp)[2];
-       int i, j, tot, resol = BKE_mask_spline_feather_resolution(spline, width, height);
+       int i, j, tot;
 
        tot = resol * spline->tot_point;
        feather = fp = MEM_mallocN(tot * sizeof(*feather), "mask spline feather diff points");
@@ -416,6 +424,14 @@ float (*BKE_mask_spline_feather_differentiated_points_with_resolution(MaskSpline
        return feather;
 }
 
+float (*BKE_mask_spline_feather_differentiated_points_with_resolution(MaskSpline *spline, int width, int height,
+                                                                      int *tot_feather_point))[2]
+{
+       int resol = BKE_mask_spline_feather_resolution(spline, width, height);
+
+       return BKE_mask_spline_feather_differentiated_points_with_resolution_ex(spline, resol, tot_feather_point);
+}
+
 float (*BKE_mask_spline_feather_differentiated_points(MaskSpline *spline, int *tot_feather_point))[2]
 {
        return BKE_mask_spline_feather_differentiated_points_with_resolution(spline, 0, 0, tot_feather_point);