[gtk/matthiasc/lottie2] Implement gsk_circle_contour_add_segment



commit ae8c9e37eb9e60ed03dfe7c58f80670ff0a8a5bb
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Nov 25 17:35:50 2020 -0500

    Implement gsk_circle_contour_add_segment

 gsk/gskpath.c | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)
---
diff --git a/gsk/gskpath.c b/gsk/gskpath.c
index 594ddd3b7c..caff9dc78d 100644
--- a/gsk/gskpath.c
+++ b/gsk/gskpath.c
@@ -155,6 +155,10 @@ gsk_find_point_on_line (const graphene_point_t *a,
     }
 }
 
+static GskContour *
+gsk_path_builder_add_contour_by_klass (GskPathBuilder        *builder,
+                                       const GskContourClass *klass);
+
 /* RECT CONTOUR */
 
 typedef struct _GskRectContour GskRectContour;
@@ -623,6 +627,13 @@ gsk_circle_contour_copy (const GskContour *contour,
   *target = *self;
 }
 
+static void
+gsk_circle_contour_init (GskContour             *contour,
+                         const graphene_point_t *center,
+                         float                   radius,
+                         float                   start_angle,
+                         float                   end_angle);
+
 static void
 gsk_circle_contour_add_segment (const GskContour *contour,
                                 GskPathBuilder   *builder,
@@ -630,7 +641,17 @@ gsk_circle_contour_add_segment (const GskContour *contour,
                                 float             start,
                                 float             end)
 {
-  g_warning ("FIXME");
+  const GskCircleContour *self = (const GskCircleContour *) contour;
+  float delta = self->end_angle - self->start_angle;
+  float length = self->radius * DEG_TO_RAD (delta);
+  GskContour *segment;
+
+  segment = gsk_path_builder_add_contour_by_klass (builder, contour->klass);
+
+  gsk_circle_contour_init (segment,
+                           &self->center, self->radius,
+                           self->start_angle + start/length * delta,
+                           self->start_angle + end/length * delta);
 }
 
 static const GskContourClass GSK_CIRCLE_CONTOUR_CLASS =


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