diff options
author | Marc-André Lureau <marcandre.lureau@gmail.com> | 2013-09-13 18:11:16 +0200 |
---|---|---|
committer | Frediano Ziglio <fziglio@redhat.com> | 2015-11-06 10:10:40 +0000 |
commit | e76f40295209103cc7a0cf7003f8422c7e02577d (patch) | |
tree | 2f7942facb13d189acabe5f52fa14f0a9ab9c042 /server/tree.c | |
parent | c9bb089869bd7bed1abaf37bb6233356ef61a242 (diff) | |
download | spice-e76f40295209103cc7a0cf7003f8422c7e02577d.tar.gz spice-e76f40295209103cc7a0cf7003f8422c7e02577d.tar.xz spice-e76f40295209103cc7a0cf7003f8422c7e02577d.zip |
worker: move shadow_new() and container_new()
Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
Diffstat (limited to 'server/tree.c')
-rw-r--r-- | server/tree.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/server/tree.c b/server/tree.c index ed7d39ad..64fa6db9 100644 --- a/server/tree.c +++ b/server/tree.c @@ -180,3 +180,42 @@ void tree_item_dump(TreeItem *item) spice_return_if_fail(item != NULL); tree_foreach(item, dump_item, &di); } + +Shadow* shadow_new(DrawItem *item, const SpicePoint *delta) +{ + spice_return_val_if_fail(item->shadow == NULL, NULL); + if (!delta->x && !delta->y) { + return NULL; + } + + Shadow *shadow = spice_new(Shadow, 1); + + shadow->base.type = TREE_ITEM_TYPE_SHADOW; + shadow->base.container = NULL; + shadow->owner = item; + region_clone(&shadow->base.rgn, &item->base.rgn); + region_offset(&shadow->base.rgn, delta->x, delta->y); + ring_item_init(&shadow->base.siblings_link); + region_init(&shadow->on_hold); + item->shadow = shadow; + + return shadow; +} + +Container* container_new(DrawItem *item) +{ + Container *container = spice_new(Container, 1); + + container->base.type = TREE_ITEM_TYPE_CONTAINER; + container->base.container = item->base.container; + item->base.container = container; + item->container_root = TRUE; + region_clone(&container->base.rgn, &item->base.rgn); + ring_item_init(&container->base.siblings_link); + ring_add_after(&container->base.siblings_link, &item->base.siblings_link); + ring_remove(&item->base.siblings_link); + ring_init(&container->items); + ring_add(&container->items, &item->base.siblings_link); + + return container; +} |