From 2418d67e238d32a465c003b01baeac739e10402c 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 53d423c396..269bb03d8a 100644 --- a/gsk/gskrendernodeimpl.c +++ b/gsk/gskrendernodeimpl.c @@ -4073,6 +4073,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); @@ -4085,8 +4086,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; }