summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2020-10-22 21:11:48 -0300
committerMarge Bot <marge-bot@gnome.org>2020-11-25 16:34:29 +0000
commit1fdde25b3e385602f1843b0eb068859164d7d350 (patch)
tree1510e6135d9213c83b2666b294351cd1ddfdf7df
parentc3534d339008f65ba35ded2686ffa94e2bf23ffc (diff)
downloadmutter-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.h3
-rw-r--r--clutter/clutter/clutter-paint-volume.c22
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);
+}