diff options
author | Benjamin Otte <otte@redhat.com> | 2016-12-19 15:39:43 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2016-12-20 18:01:12 +0100 |
commit | 2034e83a20aaf8d408eada9458aa0d3a7ab65af8 (patch) | |
tree | f419f8bab143c230c33d63b0f9c21fd4dbae2e0c /gtk/gtkcssshadowvalue.c | |
parent | fcc1f554d6ae5169c6156ce33ea7d2a916992b2a (diff) | |
download | gtk+-2034e83a20aaf8d408eada9458aa0d3a7ab65af8.tar.gz |
gsk: Add GskOutsetShadowNode
Diffstat (limited to 'gtk/gtkcssshadowvalue.c')
-rw-r--r-- | gtk/gtkcssshadowvalue.c | 33 |
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 == >K_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 |