gsk: Store blend mode in the render node

This commit is contained in:
Emmanuele Bassi
2016-07-01 12:12:30 +01:00
parent bf09ce93c8
commit 81e992e1ff
3 changed files with 52 additions and 0 deletions

View File

@@ -1226,6 +1226,49 @@ gsk_render_node_set_name (GskRenderNode *node,
node->name = g_strdup (name);
}
/**
* gsk_render_node_set_blend_mode:
* @node: a #GskRenderNode
* @blend_mode: the blend mode to be applied to the node's children
*
* Sets the blend mode to be used when rendering the children
* of the @node.
*
* The default value is %GSK_BLEND_MODE_DEFAULT.
*
* Since: 3.22
*/
void
gsk_render_node_set_blend_mode (GskRenderNode *node,
GskBlendMode blend_mode)
{
g_return_if_fail (GSK_IS_RENDER_NODE (node));
g_return_if_fail (!node->is_mutable);
if (node->blend_mode == blend_mode)
return;
node->blend_mode = blend_mode;
}
/**
* gsk_render_node_get_blend_mode:
* @node: a #GskRenderNode
*
* Retrieves the blend mode set by gsk_render_node_set_blend_mode().
*
* Returns: the blend mode
*
* Since: 3.22
*/
GskBlendMode
gsk_render_node_get_blend_mode (GskRenderNode *node)
{
g_return_val_if_fail (GSK_IS_RENDER_NODE (node), GSK_BLEND_MODE_DEFAULT);
return node->blend_mode;
}
/**
* gsk_render_node_get_draw_context:
* @node: a #GskRenderNode

View File

@@ -115,6 +115,12 @@ gboolean gsk_render_node_is_opaque (GskRenderNode *
GDK_AVAILABLE_IN_3_22
cairo_t * gsk_render_node_get_draw_context (GskRenderNode *node);
GDK_AVAILABLE_IN_3_22
void gsk_render_node_set_blend_mode (GskRenderNode *node,
GskBlendMode blend_mode);
GDK_AVAILABLE_IN_3_22
GskBlendMode gsk_render_node_get_blend_mode (GskRenderNode *node);
GDK_AVAILABLE_IN_3_22
void gsk_render_node_set_name (GskRenderNode *node,
const char *name);

View File

@@ -37,6 +37,9 @@ struct _GskRenderNode
/* Paint opacity */
double opacity;
/* Blend mode */
GskBlendMode blend_mode;
/* Clip rectangle */
graphene_rect_t bounds;