mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-26 14:45:58 +01:00
scene: add wlr_scene_node_coords
This commit is contained in:
parent
04d105760d
commit
9195b77e14
2 changed files with 22 additions and 0 deletions
|
@ -118,6 +118,12 @@ void wlr_scene_node_place_below(struct wlr_scene_node *node,
|
||||||
*/
|
*/
|
||||||
void wlr_scene_node_reparent(struct wlr_scene_node *node,
|
void wlr_scene_node_reparent(struct wlr_scene_node *node,
|
||||||
struct wlr_scene_node *new_parent);
|
struct wlr_scene_node *new_parent);
|
||||||
|
/**
|
||||||
|
* Get the node's layout-local coordinates.
|
||||||
|
*
|
||||||
|
* True is returned if the node and all of its ancestors are enabled.
|
||||||
|
*/
|
||||||
|
bool wlr_scene_node_coords(struct wlr_scene_node *node, int *lx, int *ly);
|
||||||
/**
|
/**
|
||||||
* Call `iterator` on each surface in the scene-graph, with the surface's
|
* Call `iterator` on each surface in the scene-graph, with the surface's
|
||||||
* position in layout coordinates. The function is called from root to leaves
|
* position in layout coordinates. The function is called from root to leaves
|
||||||
|
|
|
@ -193,6 +193,22 @@ void wlr_scene_node_reparent(struct wlr_scene_node *node,
|
||||||
wl_list_insert(new_parent->state.children.prev, &node->state.link);
|
wl_list_insert(new_parent->state.children.prev, &node->state.link);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wlr_scene_node_coords(struct wlr_scene_node *node,
|
||||||
|
int *lx_ptr, int *ly_ptr) {
|
||||||
|
int lx = 0, ly = 0;
|
||||||
|
bool enabled = true;
|
||||||
|
while (node != NULL) {
|
||||||
|
lx += node->state.x;
|
||||||
|
ly += node->state.y;
|
||||||
|
enabled = enabled && node->state.enabled;
|
||||||
|
node = node->parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
*lx_ptr = lx;
|
||||||
|
*ly_ptr = ly;
|
||||||
|
return enabled;
|
||||||
|
}
|
||||||
|
|
||||||
static void scene_node_for_each_surface(struct wlr_scene_node *node,
|
static void scene_node_for_each_surface(struct wlr_scene_node *node,
|
||||||
int lx, int ly, wlr_surface_iterator_func_t user_iterator,
|
int lx, int ly, wlr_surface_iterator_func_t user_iterator,
|
||||||
void *user_data) {
|
void *user_data) {
|
||||||
|
|
Loading…
Reference in a new issue