diff options
author | Alexander Larsson <alexl@redhat.com> | 2013-05-06 09:48:10 +0200 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2013-05-06 16:20:03 +0200 |
commit | 70774bf9789df10ec298e4b5b44b98a2c83c9037 (patch) | |
tree | ebf653c87af6379ba804797bbab876b14ae24e6a /gtk/gtkcssshadowvalue.c | |
parent | c91e706e2bbba1f45895996638c7065def087d21 (diff) | |
download | gtk+-70774bf9789df10ec298e4b5b44b98a2c83c9037.tar.gz |
GtkCssShadowValue: Break out the shadow rendering code
This makes it easier to call it multiple times which we
want to do later.
Diffstat (limited to 'gtk/gtkcssshadowvalue.c')
-rw-r--r-- | gtk/gtkcssshadowvalue.c | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/gtk/gtkcssshadowvalue.c b/gtk/gtkcssshadowvalue.c index 53ab8c1ab5..cf533a1ce6 100644 --- a/gtk/gtkcssshadowvalue.c +++ b/gtk/gtkcssshadowvalue.c @@ -475,6 +475,27 @@ _gtk_css_shadow_value_get_geometry (const GtkCssValue *shadow, *spread = _gtk_css_number_value_get (shadow->spread, 0); } +static void +draw_shadow (const GtkCssValue *shadow, + cairo_t *cr, + GtkRoundedBox *box, + GtkRoundedBox *clip_box) +{ + cairo_t *shadow_cr; + + shadow_cr = gtk_css_shadow_value_start_drawing (shadow, cr); + + cairo_set_fill_rule (shadow_cr, CAIRO_FILL_RULE_EVEN_ODD); + _gtk_rounded_box_path (box, shadow_cr); + if (shadow->inset) + _gtk_rounded_box_clip_path (clip_box, shadow_cr); + + gdk_cairo_set_source_rgba (shadow_cr, _gtk_css_rgba_value_get_rgba (shadow->color)); + cairo_fill (shadow_cr); + + gtk_css_shadow_value_finish_drawing (shadow, shadow_cr); +} + void _gtk_css_shadow_value_paint_box (const GtkCssValue *shadow, cairo_t *cr, @@ -520,17 +541,7 @@ _gtk_css_shadow_value_paint_box (const GtkCssValue *shadow, clip_box = *padding_box; _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); - if (shadow->inset) - _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); + draw_shadow (shadow, cr, &box, &clip_box); cairo_restore (cr); } |