clutter/paint-volume: Add new API to convert to graphene_box_t

Will be used to cull when picking based on the actor's projected
paint volume.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1520>
This commit is contained in:
Georges Basile Stavracas Neto 2020-10-22 21:11:48 -03:00 committed by Marge Bot
parent c3534d3390
commit 1fdde25b3e
2 changed files with 25 additions and 0 deletions

View File

@ -133,6 +133,9 @@ void _clutter_paint_volume_get_stage_paint_box (ClutterPaintVolu
void _clutter_paint_volume_transform_relative (ClutterPaintVolume *pv,
ClutterActor *relative_to_ancestor);
void clutter_paint_volume_to_box (ClutterPaintVolume *pv,
graphene_box_t *box);
G_END_DECLS
#endif /* __CLUTTER_PAINT_VOLUME_PRIVATE_H__ */

View File

@ -1131,3 +1131,25 @@ _clutter_paint_volume_transform_relative (ClutterPaintVolume *pv,
_clutter_paint_volume_transform (pv, &matrix);
}
void
clutter_paint_volume_to_box (ClutterPaintVolume *pv,
graphene_box_t *box)
{
int vertex_count;
if (pv->is_empty)
{
graphene_box_init_from_box (box, graphene_box_empty ());
return;
}
_clutter_paint_volume_complete (pv);
if (G_LIKELY (pv->is_2d))
vertex_count = 4;
else
vertex_count = 8;
graphene_box_init_from_points (box, vertex_count, pv->vertices);
}