[gtk+] shadow: add blur to box-shadow
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] shadow: add blur to box-shadow
- Date: Thu, 20 Sep 2012 00:47:27 +0000 (UTC)
commit 7c3864ba79554f869fbf19b4ca145989747b194b
Author: Andrea Cimitan <andrea cimitan canonical com>
Date: Mon Apr 16 12:02:41 2012 +0100
shadow: add blur to box-shadow
gtk/gtkcssshadowvalue.c | 16 ++++++++++++----
1 files changed, 12 insertions(+), 4 deletions(-)
---
diff --git a/gtk/gtkcssshadowvalue.c b/gtk/gtkcssshadowvalue.c
index cdc3064..af39edc 100644
--- a/gtk/gtkcssshadowvalue.c
+++ b/gtk/gtkcssshadowvalue.c
@@ -440,13 +440,12 @@ _gtk_css_shadow_value_paint_box (const GtkCssValue *shadow,
cairo_t *cr,
const GtkRoundedBox *padding_box)
{
- GtkRoundedBox box;
- double spread;
+ GtkRoundedBox box, clip_box;
+ double spread, radius;
g_return_if_fail (shadow->class == >K_CSS_VALUE_SHADOW);
cairo_save (cr);
- cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD);
_gtk_rounded_box_path (padding_box, cr);
cairo_clip (cr);
@@ -458,11 +457,20 @@ _gtk_css_shadow_value_paint_box (const GtkCssValue *shadow,
spread = _gtk_css_number_value_get (shadow->spread, 0);
_gtk_rounded_box_shrink (&box, spread, spread, spread, spread);
+ clip_box = *padding_box;
+ radius = _gtk_css_number_value_get (shadow->radius, 0);
+ _gtk_rounded_box_shrink (&clip_box, -radius, -radius, -radius, -radius);
+
+ cr = gtk_css_shadow_value_start_drawing (shadow, cr);
+
+ cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD);
_gtk_rounded_box_path (&box, cr);
- _gtk_rounded_box_clip_path (padding_box, cr);
+ _gtk_rounded_box_clip_path (&clip_box, cr);
gdk_cairo_set_source_rgba (cr, _gtk_css_rgba_value_get_rgba (shadow->color));
cairo_fill (cr);
+ cr = gtk_css_shadow_value_finish_drawing (shadow, cr);
+
cairo_restore (cr);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]