From de29a01682ac76e1b788ac935f99b9bd2866bea5 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 15 Dec 2020 23:10:43 -0500 Subject: [PATCH] gsk: Use stroke bounds in the stroke node We can use gsk_path_get_stroke_bounds to get a better estimate for the bounds of the stroke node. --- gsk/gskrendernodeimpl.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gsk/gskrendernodeimpl.c b/gsk/gskrendernodeimpl.c index b3dd1348bf..5124b5f1fa 100644 --- a/gsk/gskrendernodeimpl.c +++ b/gsk/gskrendernodeimpl.c @@ -4024,6 +4024,7 @@ gsk_stroke_node_new (GskRenderNode *child, { GskStrokeNode *self; GskRenderNode *node; + graphene_rect_t path_bounds; g_return_val_if_fail (GSK_IS_RENDER_NODE (child), NULL); g_return_val_if_fail (path != NULL, NULL); @@ -4036,8 +4037,10 @@ gsk_stroke_node_new (GskRenderNode *child, self->path = gsk_path_ref (path); gsk_stroke_init_copy (&self->stroke, stroke); - /* XXX: Figure out a way to compute bounds from the path */ - graphene_rect_init_from_rect (&node->bounds, &child->bounds); + if (gsk_path_get_stroke_bounds (path, stroke, &path_bounds)) + graphene_rect_intersection (&path_bounds, &child->bounds, &node->bounds); + else + graphene_rect_init_from_rect (&node->bounds, graphene_rect_zero ()); return node; }