[gtk/matthiasc/lottie2: 37/40] Implement gsk_circle_contour_add_segment
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/matthiasc/lottie2: 37/40] Implement gsk_circle_contour_add_segment
- Date: Thu, 26 Nov 2020 02:04:17 +0000 (UTC)
commit a3443b655ca666e72ee82c59ffdd5a4e2ab7ed8d
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 b337c2253a..95a6737e24 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;
@@ -634,6 +638,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,
@@ -641,7 +652,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]