aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2021-08-17 12:24:11 +0200
committerSimon Zeni <simon@bl4ckb0ne.ca>2021-09-08 09:50:08 -0400
commit968c1df7e978d57ad5d21bcf3c6506a465ae7de6 (patch)
tree2421c2442d5dfd1fd1c6aebd076eb80cef6632d3 /include
parent872993f95d79700662a5cab4aae8c167751c9486 (diff)
scene: add scene outputs
These allow describing an output's viewport inside the scene-graph.
Diffstat (limited to 'include')
-rw-r--r--include/wlr/types/wlr_scene.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/include/wlr/types/wlr_scene.h b/include/wlr/types/wlr_scene.h
index 651840c3..6e3c13cd 100644
--- a/include/wlr/types/wlr_scene.h
+++ b/include/wlr/types/wlr_scene.h
@@ -56,6 +56,8 @@ struct wlr_scene_node {
/** The root scene-graph node. */
struct wlr_scene {
struct wlr_scene_node node;
+
+ struct wl_list outputs; // wlr_scene_output.link
};
/** A scene-graph node displaying a single surface. */
@@ -75,6 +77,16 @@ struct wlr_scene_rect {
float color[4];
};
+/** A viewport for an output in the scene-graph */
+struct wlr_scene_output {
+ struct wlr_output *output;
+ struct wl_list link; // wlr_scene.outputs
+ struct wlr_scene *scene;
+ struct wlr_addon addon;
+
+ int x, y;
+};
+
typedef void (*wlr_scene_node_iterator_func_t)(struct wlr_scene_node *node,
int sx, int sy, void *data);
@@ -161,4 +173,21 @@ void wlr_scene_rect_set_size(struct wlr_scene_rect *rect, int width, int height)
*/
void wlr_scene_rect_set_color(struct wlr_scene_rect *rect, const float color[static 4]);
+/**
+ * Add a viewport for the specified output to the scene-graph.
+ *
+ * An output can only be added once to the scene-graph.
+ */
+struct wlr_scene_output *wlr_scene_output_create(struct wlr_scene *scene,
+ struct wlr_output *output);
+/**
+ * Destroy a scene-graph output.
+ */
+void wlr_scene_output_destroy(struct wlr_scene_output *scene_output);
+/**
+ * Set the output's position in the scene-graph.
+ */
+void wlr_scene_output_set_position(struct wlr_scene_output *scene_output,
+ int lx, int ly);
+
#endif