From b6b66803c015947472424efad75fdecc254709f9 Mon Sep 17 00:00:00 2001 From: Cosimo Cecchi Date: Fri, 20 May 2011 23:51:16 -0400 Subject: [PATCH] shadow: add _gtk_icon_shadow_paint() Paints a shadow of the current source, using the defined colors. --- gtk/gtkshadow.c | 23 +++++++++++++++++++++++ gtk/gtkshadowprivate.h | 3 +++ 2 files changed, 26 insertions(+) diff --git a/gtk/gtkshadow.c b/gtk/gtkshadow.c index ce84e4bff6..c8757b33ba 100644 --- a/gtk/gtkshadow.c +++ b/gtk/gtkshadow.c @@ -275,3 +275,26 @@ _gtk_text_shadow_paint_layout (GtkShadow *shadow, } } +void +_gtk_icon_shadow_paint (GtkShadow *shadow, + cairo_t *cr) +{ + GList *l; + GtkShadowElement *element; + cairo_pattern_t *pattern; + + for (l = g_list_last (shadow->elements); l != NULL; l = l->prev) + { + element = l->data; + + cairo_save (cr); + pattern = cairo_pattern_reference (cairo_get_source (cr)); + gdk_cairo_set_source_rgba (cr, &element->color); + + cairo_translate (cr, element->hoffset, element->voffset); + cairo_mask (cr, pattern); + + cairo_restore (cr); + cairo_pattern_destroy (pattern); + } +} diff --git a/gtk/gtkshadowprivate.h b/gtk/gtkshadowprivate.h index 1594dc6a20..6f1165566d 100644 --- a/gtk/gtkshadowprivate.h +++ b/gtk/gtkshadowprivate.h @@ -58,6 +58,9 @@ void _gtk_text_shadow_paint_layout (GtkShadow *shadow, cairo_t *cr, PangoLayout *layout); +void _gtk_icon_shadow_paint (GtkShadow *shadow, + cairo_t *cr); + G_END_DECLS #endif /* __GTK_SHADOW_H__ */