[gtk/matthiasc/lottie-serialization: 4/5] path: Fix serialization for circles
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/matthiasc/lottie-serialization: 4/5] path: Fix serialization for circles
- Date: Sat, 28 Nov 2020 17:33:14 +0000 (UTC)
commit a62d6b992f0cca182575d82c254e2e345e1b45d7
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Nov 28 11:56:25 2020 -0500
path: Fix serialization for circles
The svg A can not do a full circle, since it is a two point
parametrization - if the start and end point are the same,
it draws nothing. So, use two arcs.
gsk/gskpath.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
---
diff --git a/gsk/gskpath.c b/gsk/gskpath.c
index 6356e97090..7da1ed1f3b 100644
--- a/gsk/gskpath.c
+++ b/gsk/gskpath.c
@@ -552,15 +552,22 @@ gsk_circle_contour_print (const GskContour *contour,
GString *string)
{
const GskCircleContour *self = (const GskCircleContour *) contour;
+ float mid_angle = (self->end_angle - self->start_angle) / 2;
g_string_append (string, "M ");
_g_string_append_point (string, &GSK_CIRCLE_POINT_INIT (self, self->start_angle));
g_string_append (string, " A ");
_g_string_append_point (string, &GRAPHENE_POINT_INIT (self->radius, self->radius));
- g_string_append_printf (string, " 0 %u %u ",
- fabs (self->start_angle - self->end_angle) > 180 ? 1 : 0,
+ g_string_append_printf (string, " 0 0 %u",
+ self->start_angle < self->end_angle ? 0 : 1);
+ _g_string_append_point (string, &GSK_CIRCLE_POINT_INIT (self, mid_angle));
+ g_string_append (string, " A ");
+ _g_string_append_point (string, &GRAPHENE_POINT_INIT (self->radius, self->radius));
+ g_string_append_printf (string, " 0 0 %u",
self->start_angle < self->end_angle ? 0 : 1);
_g_string_append_point (string, &GSK_CIRCLE_POINT_INIT (self, self->end_angle));
+ if (fabs (self->start_angle - self->end_angle >= 360))
+ g_string_append (string, "Z");
}
static gboolean
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]