diff --git a/gsk/gskcurve.c b/gsk/gskcurve.c index b8cf96d7e9..768c493461 100644 --- a/gsk/gskcurve.c +++ b/gsk/gskcurve.c @@ -430,6 +430,19 @@ gsk_curve_curve_get_tangent (const GskCurve *curve, graphene_vec2_normalize (tangent, tangent); } +void +gsk_curve_get_normal (const GskCurve *curve, + float t, + graphene_vec2_t *normal) +{ + graphene_vec2_t tangent; + + gsk_curve_get_tangent (curve, t, &tangent); + graphene_vec2_init (normal, + - graphene_vec2_get_y (&tangent), + graphene_vec2_get_x (&tangent)); +} + static void gsk_curve_curve_split (const GskCurve *curve, float progress, diff --git a/gsk/gskcurveprivate.h b/gsk/gskcurveprivate.h index ade1418f77..196cc3e17c 100644 --- a/gsk/gskcurveprivate.h +++ b/gsk/gskcurveprivate.h @@ -100,6 +100,9 @@ void gsk_curve_get_point (const GskCurve void gsk_curve_get_tangent (const GskCurve *curve, float progress, graphene_vec2_t *tangent); +void gsk_curve_get_normal (const GskCurve *curve, + float progress, + graphene_vec2_t *normal); void gsk_curve_split (const GskCurve *curve, float progress, GskCurve *start,