summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2016-08-08 19:34:03 +0100
committerEmmanuele Bassi <ebassi@gnome.org>2016-08-09 17:31:55 +0100
commite80800692edc0c51a76ef56472402208d4868805 (patch)
tree25b64336ab31b78f301ddaf14802af9bdcce6a47
parent0dcfd78be94a10ce811d181c705efc335aa5d027 (diff)
downloadgtk+-e80800692edc0c51a76ef56472402208d4868805.tar.gz
gsk: Remove child-transform from render nodes
The child-transform is useful only if we also provide clipping to the parent nodes, otherwise children will just be drawn outside of the parent's bounds. We'll introduce child transforms either at a higher layer, or once we add clipping support to GskRenderNode.
-rw-r--r--docs/reference/gsk/gsk3-sections.txt1
-rw-r--r--gsk/gskrendernode.c36
-rw-r--r--gsk/gskrendernode.h3
-rw-r--r--gsk/gskrendernodeprivate.h4
4 files changed, 3 insertions, 41 deletions
diff --git a/docs/reference/gsk/gsk3-sections.txt b/docs/reference/gsk/gsk3-sections.txt
index 36160daca9..c412444fb6 100644
--- a/docs/reference/gsk/gsk3-sections.txt
+++ b/docs/reference/gsk/gsk3-sections.txt
@@ -55,7 +55,6 @@ gsk_render_node_contains
gsk_render_node_set_bounds
gsk_render_node_set_transform
gsk_render_node_set_anchor_point
-gsk_render_node_set_child_transform
gsk_render_node_set_opacity
gsk_render_node_set_hidden
gsk_render_node_is_hidden
diff --git a/gsk/gskrendernode.c b/gsk/gskrendernode.c
index 716ecfae00..1ec296e6f3 100644
--- a/gsk/gskrendernode.c
+++ b/gsk/gskrendernode.c
@@ -177,7 +177,6 @@ gsk_render_node_init (GskRenderNode *self)
graphene_rect_init_from_rect (&self->bounds, graphene_rect_zero ());
graphene_matrix_init_identity (&self->transform);
- graphene_matrix_init_identity (&self->child_transform);
graphene_point3d_init (&self->anchor_point, 0.f, 0.f, 0.f);
@@ -962,31 +961,6 @@ gsk_render_node_set_anchor_point (GskRenderNode *node,
}
/**
- * gsk_render_node_set_child_transform:
- * @node: a #GskRenderNode
- * @transform: (nullable): a transformation matrix
- *
- * Sets the transformation matrix used when rendering the children
- * of @node.
- *
- * Since: 3.22
- */
-void
-gsk_render_node_set_child_transform (GskRenderNode *node,
- const graphene_matrix_t *transform)
-{
- g_return_if_fail (GSK_IS_RENDER_NODE (node));
- g_return_if_fail (node->is_mutable);
-
- if (transform == NULL)
- graphene_matrix_init_identity (&node->child_transform);
- else
- graphene_matrix_init_from_matrix (&node->child_transform, transform);
-
- node->child_transform_set = !graphene_matrix_is_identity (&node->child_transform);
-}
-
-/**
* gsk_render_node_set_opacity:
* @node: a #GskRenderNode
* @opacity: the opacity of the node, between 0 (fully transparent) and
@@ -1177,11 +1151,10 @@ gsk_render_node_update_world_matrix (GskRenderNode *node,
if (force || node->needs_world_matrix_update)
{
- GSK_NOTE (RENDER_NODE, g_print ("Updating cached world matrix on node %p [parent=%p, t_set=%s, ct_set=%s]\n",
+ GSK_NOTE (RENDER_NODE, g_print ("Updating cached world matrix on node %p [parent=%p, t_set=%s]\n",
node,
node->parent != NULL ? node->parent : 0,
- node->transform_set ? "y" : "n",
- node->parent != NULL && node->parent->child_transform_set ? "y" : "n"));
+ node->transform_set ? "y" : "n"));
if (node->parent == NULL)
{
@@ -1195,10 +1168,7 @@ gsk_render_node_update_world_matrix (GskRenderNode *node,
GskRenderNode *parent = node->parent;
graphene_matrix_t tmp;
- if (parent->child_transform_set)
- graphene_matrix_init_from_matrix (&tmp, &parent->child_transform);
- else
- graphene_matrix_init_identity (&tmp);
+ graphene_matrix_init_identity (&tmp);
if (node->transform_set)
graphene_matrix_multiply (&tmp, &node->transform, &tmp);
diff --git a/gsk/gskrendernode.h b/gsk/gskrendernode.h
index ced2630872..afeab20219 100644
--- a/gsk/gskrendernode.h
+++ b/gsk/gskrendernode.h
@@ -98,9 +98,6 @@ GDK_AVAILABLE_IN_3_22
void gsk_render_node_set_anchor_point (GskRenderNode *node,
const graphene_point3d_t *offset);
GDK_AVAILABLE_IN_3_22
-void gsk_render_node_set_child_transform (GskRenderNode *node,
- const graphene_matrix_t *transform);
-GDK_AVAILABLE_IN_3_22
void gsk_render_node_set_opacity (GskRenderNode *node,
double opacity);
GDK_AVAILABLE_IN_3_22
diff --git a/gsk/gskrendernodeprivate.h b/gsk/gskrendernodeprivate.h
index 0dce747026..85cb2b839e 100644
--- a/gsk/gskrendernodeprivate.h
+++ b/gsk/gskrendernodeprivate.h
@@ -55,15 +55,11 @@ struct _GskRenderNode
graphene_point3d_t anchor_point;
- /* Transformations applied to the children of the node */
- graphene_matrix_t child_transform;
-
/* Bit fields; leave at the end */
gboolean is_mutable : 1;
gboolean hidden : 1;
gboolean opaque : 1;
gboolean transform_set : 1;
- gboolean child_transform_set : 1;
gboolean needs_world_matrix_update : 1;
};