diff options
author | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2020-10-22 21:11:48 -0300 |
---|---|---|
committer | Marge Bot <marge-bot@gnome.org> | 2020-11-25 16:34:29 +0000 |
commit | 1fdde25b3e385602f1843b0eb068859164d7d350 (patch) | |
tree | 1510e6135d9213c83b2666b294351cd1ddfdf7df | |
parent | c3534d339008f65ba35ded2686ffa94e2bf23ffc (diff) | |
download | mutter-1fdde25b3e385602f1843b0eb068859164d7d350.tar.gz |
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>
-rw-r--r-- | clutter/clutter/clutter-paint-volume-private.h | 3 | ||||
-rw-r--r-- | clutter/clutter/clutter-paint-volume.c | 22 |
2 files changed, 25 insertions, 0 deletions
diff --git a/clutter/clutter/clutter-paint-volume-private.h b/clutter/clutter/clutter-paint-volume-private.h index 5d51e5bf3..0a52b60c4 100644 --- a/clutter/clutter/clutter-paint-volume-private.h +++ b/clutter/clutter/clutter-paint-volume-private.h @@ -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__ */ diff --git a/clutter/clutter/clutter-paint-volume.c b/clutter/clutter/clutter-paint-volume.c index 97077f7d1..a55c5a8e4 100644 --- a/clutter/clutter/clutter-paint-volume.c +++ b/clutter/clutter/clutter-paint-volume.c @@ -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); +} |