summaryrefslogtreecommitdiff
path: root/gtk/gtkcssshadowvalue.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2016-12-19 15:39:43 +0100
committerBenjamin Otte <otte@redhat.com>2016-12-20 18:01:12 +0100
commit2034e83a20aaf8d408eada9458aa0d3a7ab65af8 (patch)
treef419f8bab143c230c33d63b0f9c21fd4dbae2e0c /gtk/gtkcssshadowvalue.c
parentfcc1f554d6ae5169c6156ce33ea7d2a916992b2a (diff)
downloadgtk+-2034e83a20aaf8d408eada9458aa0d3a7ab65af8.tar.gz
gsk: Add GskOutsetShadowNode
Diffstat (limited to 'gtk/gtkcssshadowvalue.c')
-rw-r--r--gtk/gtkcssshadowvalue.c33
1 files changed, 18 insertions, 15 deletions
diff --git a/gtk/gtkcssshadowvalue.c b/gtk/gtkcssshadowvalue.c
index 91b24bf200..d9e1aaa3fb 100644
--- a/gtk/gtkcssshadowvalue.c
+++ b/gtk/gtkcssshadowvalue.c
@@ -1035,12 +1035,13 @@ _gtk_css_shadow_value_paint_box (const GtkCssValue *shadow,
}
void
-gtk_css_shadow_value_snapshot_outset (const GtkCssValue *shadow,
- GtkSnapshot *snapshot,
- const GskRoundedRect*border_box)
+gtk_css_shadow_value_snapshot_outset (const GtkCssValue *shadow,
+ GtkSnapshot *snapshot,
+ const GskRoundedRect *border_box)
{
- GtkBorder extents;
- cairo_t *cr;
+ GskRoundedRect outline;
+ GskRenderNode *node;
+ double off_x, off_y;
g_return_if_fail (shadow->class == &GTK_CSS_VALUE_SHADOW);
@@ -1048,17 +1049,19 @@ gtk_css_shadow_value_snapshot_outset (const GtkCssValue *shadow,
if (gdk_rgba_is_clear (_gtk_css_rgba_value_get_rgba (shadow->color)))
return;
- gtk_css_shadow_value_get_extents (shadow, &extents);
+ gtk_snapshot_get_offset (snapshot, &off_x, &off_y);
+ gsk_rounded_rect_init_copy (&outline, border_box);
+ gsk_rounded_rect_offset (&outline, off_x, off_y);
- cr = gtk_snapshot_append_cairo_node (snapshot,
- &GRAPHENE_RECT_INIT (
- border_box->bounds.origin.x - extents.left,
- border_box->bounds.origin.y - extents.top,
- border_box->bounds.size.width + extents.left + extents.right,
- border_box->bounds.size.height + extents.top + extents.bottom),
- "Outset Shadow");
- _gtk_css_shadow_value_paint_box (shadow, cr, border_box);
- cairo_destroy (cr);
+ node = gsk_outset_shadow_node_new (&outline,
+ _gtk_css_rgba_value_get_rgba (shadow->color),
+ _gtk_css_number_value_get (shadow->hoffset, 0),
+ _gtk_css_number_value_get (shadow->voffset, 0),
+ _gtk_css_number_value_get (shadow->spread, 0),
+ _gtk_css_number_value_get (shadow->radius, 0));
+ gsk_render_node_set_name (node, "Outset Shadow");
+ gtk_snapshot_append_node (snapshot, node);
+ gsk_render_node_unref (node);
}
void