]> Pileus Git - ~andy/gtk/commitdiff
shadow: add _gtk_icon_shadow_paint()
authorCosimo Cecchi <cosimoc@gnome.org>
Sat, 21 May 2011 03:51:16 +0000 (23:51 -0400)
committerBenjamin Otte <otte@redhat.com>
Thu, 9 Jun 2011 21:17:09 +0000 (23:17 +0200)
Paints a shadow of the current source, using the defined colors.

gtk/gtkshadow.c
gtk/gtkshadowprivate.h

index ce84e4bff61a11f47e50b3626c336904b057783c..c8757b33ba3494fca7fcf1c2e97e356bbdcf38f6 100644 (file)
@@ -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);
+    }
+}
index 1594dc6a20ef4b9065f9cf16136a548ff1481460..6f1165566d7128bade2657d6ada7fbc1e55b92df 100644 (file)
@@ -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__ */