labwc/src/common/scene-helpers.c

46 lines
1.1 KiB
C

// SPDX-License-Identifier: GPL-2.0-only
#include <assert.h>
#include <wlr/types/wlr_scene.h>
struct wlr_scene_rect *
lab_wlr_scene_get_rect(struct wlr_scene_node *node)
{
assert(node->type == WLR_SCENE_NODE_RECT);
return (struct wlr_scene_rect *)node;
}
struct wlr_scene_tree *
lab_scene_tree_from_node(struct wlr_scene_node *node)
{
assert(node->type == WLR_SCENE_NODE_TREE);
return (struct wlr_scene_tree *)node;
}
struct wlr_surface *
lab_wlr_surface_from_node(struct wlr_scene_node *node)
{
struct wlr_scene_buffer *buffer;
struct wlr_scene_surface *scene_surface;
if (node && node->type == WLR_SCENE_NODE_BUFFER) {
buffer = wlr_scene_buffer_from_node(node);
scene_surface = wlr_scene_surface_from_buffer(buffer);
if (scene_surface) {
return scene_surface->surface;
}
}
return NULL;
}
struct wlr_scene_node *
lab_wlr_scene_get_prev_node(struct wlr_scene_node *node)
{
assert(node);
struct wlr_scene_node *prev;
prev = wl_container_of(node->link.prev, node, link);
if (&prev->link == &node->parent->children) {
return NULL;
}
return prev;
}