summaryrefslogtreecommitdiff
path: root/gsk/gskrendernodeimpl.c
diff options
context:
space:
mode:
Diffstat (limited to 'gsk/gskrendernodeimpl.c')
-rw-r--r--gsk/gskrendernodeimpl.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/gsk/gskrendernodeimpl.c b/gsk/gskrendernodeimpl.c
index c7751b8e3a..9a9705d0fd 100644
--- a/gsk/gskrendernodeimpl.c
+++ b/gsk/gskrendernodeimpl.c
@@ -2780,6 +2780,17 @@ gsk_container_node_get_child (const GskRenderNode *node,
return self->children[idx];
}
+GskRenderNode **
+gsk_container_node_get_children (const GskRenderNode *node,
+ guint *n_children)
+{
+ const GskContainerNode *self = (const GskContainerNode *) node;
+
+ *n_children = self->n_children;
+
+ return self->children;
+}
+
/*** GSK_TRANSFORM_NODE ***/
/**
@@ -2793,6 +2804,7 @@ struct _GskTransformNode
GskRenderNode *child;
GskTransform *transform;
+ float dx, dy;
};
static void
@@ -2944,6 +2956,11 @@ gsk_transform_node_new (GskRenderNode *child,
self->child = gsk_render_node_ref (child);
self->transform = gsk_transform_ref (transform);
+ if (gsk_transform_get_category (transform) >= GSK_TRANSFORM_CATEGORY_2D_TRANSLATE)
+ gsk_transform_to_translate (transform, &self->dx, &self->dy);
+ else
+ self->dx = self->dy = 0;
+
gsk_transform_transform_bounds (self->transform,
&child->bounds,
&node->bounds);
@@ -2983,6 +3000,17 @@ gsk_transform_node_get_transform (const GskRenderNode *node)
return self->transform;
}
+void
+gsk_transform_node_get_translate (const GskRenderNode *node,
+ float *dx,
+ float *dy)
+{
+ const GskTransformNode *self = (const GskTransformNode *) node;
+
+ *dx = self->dx;
+ *dy = self->dy;
+}
+
/*** GSK_OPACITY_NODE ***/
/**