diff options
Diffstat (limited to 'source/blender/blenkernel/intern/mask.c')
-rw-r--r-- | source/blender/blenkernel/intern/mask.c | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/source/blender/blenkernel/intern/mask.c b/source/blender/blenkernel/intern/mask.c index 94e53755ac4..9e070bbef22 100644 --- a/source/blender/blenkernel/intern/mask.c +++ b/source/blender/blenkernel/intern/mask.c @@ -533,7 +533,6 @@ void BKE_mask_point_segment_co(MaskSpline *spline, MaskSplinePoint *point, float MaskSplinePoint *points_array = BKE_mask_spline_point_array_from_point(spline, point); BezTriple *bezt = &point->bezt, *bezt_next; - float q0[2], q1[2], q2[2], r0[2], r1[2]; bezt_next = BKE_mask_spline_point_next_bezt(spline, points_array, point); @@ -542,14 +541,7 @@ void BKE_mask_point_segment_co(MaskSpline *spline, MaskSplinePoint *point, float return; } - interp_v2_v2v2(q0, bezt->vec[1], bezt->vec[2], u); - interp_v2_v2v2(q1, bezt->vec[2], bezt_next->vec[0], u); - interp_v2_v2v2(q2, bezt_next->vec[0], bezt_next->vec[1], u); - - interp_v2_v2v2(r0, q0, q1, u); - interp_v2_v2v2(r1, q1, q2, u); - - interp_v2_v2v2(co, r0, r1, u); + interp_v2_v2v2v2v2_cubic(co, bezt->vec[1], bezt->vec[2], bezt_next->vec[0], bezt_next->vec[1], u); } BLI_INLINE void orthogonal_direction_get(float vec[2], float result[2]) @@ -848,11 +840,11 @@ Mask *BKE_mask_copy_nolib(Mask *mask) return mask_new; } -Mask *BKE_mask_copy(Mask *mask) +Mask *BKE_mask_copy(Main *bmain, Mask *mask) { Mask *mask_new; - mask_new = BKE_libblock_copy(&mask->id); + mask_new = BKE_libblock_copy(bmain, &mask->id); BLI_listbase_clear(&mask_new->masklayers); @@ -861,8 +853,9 @@ Mask *BKE_mask_copy(Mask *mask) /* enable fake user by default */ id_fake_user_set(&mask->id); - if (mask->id.lib) { - BKE_id_lib_local_paths(G.main, mask->id.lib, &mask_new->id); + if (ID_IS_LINKED_DATABLOCK(mask)) { + BKE_id_expand_local(&mask_new->id); + BKE_id_lib_local_paths(bmain, mask->id.lib, &mask_new->id); } return mask_new; |