ability to calculate mask curve and feather with predefined resolution (*_ex functions)

This commit is contained in:
Campbell Barton 2012-07-11 20:18:46 +00:00
parent b63b8ea69d
commit 83d2314edf
2 changed files with 25 additions and 8 deletions

View 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];

View 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);