[gtk/path-work-rebased: 1026/1045] curve: Add gsk_curve_get_normal




commit fd4a87b7304e0a80a31abb5a388aeabd511400b7
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Dec 23 13:36:19 2020 -0500

    curve: Add gsk_curve_get_normal
    
    Its easy but thats no reason not to have this api.

 gsk/gskcurve.c        | 13 +++++++++++++
 gsk/gskcurveprivate.h |  3 +++
 2 files changed, 16 insertions(+)
---
diff --git a/gsk/gskcurve.c b/gsk/gskcurve.c
index b0727f7ae5..1ad2f87927 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,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]