]> Pileus Git - ~andy/gtk/commitdiff
Add a background example to the docs
authorMatthias Clasen <mclasen@redhat.com>
Tue, 23 Nov 2010 18:36:44 +0000 (13:36 -0500)
committerCarlos Garnacho <carlosg@gnome.org>
Sat, 4 Dec 2010 14:39:38 +0000 (15:39 +0100)
docs/reference/gtk/Makefile.am
docs/reference/gtk/gtk-docs.sgml
docs/reference/gtk/images/background.png [new file with mode: 0644]
gtk/gtkstylecontext.c
tests/styleexamples.c

index fb96f4144415a16d6536332be2beb4db0ed4e65d..9af5bd6935444286353bfeb8360e8348bf2766d5 100644 (file)
@@ -345,7 +345,8 @@ HTML_IMAGES = \
        $(srcdir)/images/checks.png                                     \
        $(srcdir)/images/options.png                                    \
        $(srcdir)/images/arrows.png                                     \
-       $(srcdir)/images/expanders.png
+       $(srcdir)/images/expanders.png                                  \
+       $(srcdir)/images/background.png
 
 # Extra options to supply to gtkdoc-fixref
 FIXXREF_OPTIONS=--extra-dir=../gdk/html \
index 5214878f873bb77744e77ae3cacbc12191254eb1..505531a640d86b18de9b9f5189621cc9c71d6936 100644 (file)
@@ -3,6 +3,8 @@
                "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
 <!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'">
 <!ENTITY version SYSTEM "version.xml">
+<!ENTITY pi "&#960;">
+<!ENTITY solidus "&#8260;">
 ]>
 <book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
   <bookinfo>
diff --git a/docs/reference/gtk/images/background.png b/docs/reference/gtk/images/background.png
new file mode 100644 (file)
index 0000000..ad6ea36
Binary files /dev/null and b/docs/reference/gtk/images/background.png differ
index 1099b703f8fe15db5805cfaf43674307bf149344..dbde6231ee0f254ba16f802ba514e7518a1b9779 100644 (file)
@@ -3027,6 +3027,12 @@ gtk_render_arrow (GtkStyleContext *context,
  *
  * Renders the background of an element.
  *
+ * <example>
+ * <title>Typical background rendering, showing the effect of
+ * @border-image, @border-width and @border-radius</title>
+ * <inlinegraphic fileref="background.png" format="PNG"/>
+ * </example>
+ *
  * Since: 3.0.
  **/
 void
index 13c57d8368e2e23a82fe3adae647a991c51ddfa9..a382c8868d7349bfd6eb0c96c8dc5fe2ef7639a5 100644 (file)
@@ -94,6 +94,57 @@ draw_cb_expanders (GtkWidget *widget, cairo_t *cr)
   return TRUE;
 }
 
+static gboolean
+draw_cb_background (GtkWidget *widget, cairo_t *cr)
+{
+  GtkStyleProvider *provider;
+  GtkStyleContext *context;
+
+  context = gtk_widget_get_style_context (widget);
+
+  gtk_style_context_save (context);
+
+  provider = (GtkStyleProvider *)gtk_css_provider_new ();
+  gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider),
+                                   "* {\n"
+                                   "   border-radius: 10;\n"
+                                   "   border-width: 0;\n"
+                                   "   background-image: -gtk-gradient (linear, left top, right bottom, from(#ff00ff), to(#aabbcc));\n"
+                                   "}\n", -1, NULL);
+  gtk_style_context_add_provider (context, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+  gtk_style_context_set_junction_sides (context, 0);
+  gtk_render_background (context, cr, 12, 12, 100, 100);
+  gtk_style_context_remove_provider (context, provider);
+  gtk_style_context_restore (context);
+
+  return TRUE;
+}
+
+static gboolean
+draw_cb_frame (GtkWidget *widget, cairo_t *cr)
+{
+  GtkStyleProvider *provider;
+  GtkStyleContext *context;
+
+  context = gtk_widget_get_style_context (widget);
+
+  gtk_style_context_save (context);
+
+  provider = (GtkStyleProvider *)gtk_css_provider_new ();
+  gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider),
+                                   ".frame {\n"
+                                   "   border-image: url('gradient1.png') 10 10 10 10 stretch;\n"
+                                   "   border-style; solid\n"
+                                   "}\n", -1, NULL);
+  gtk_style_context_add_provider (context, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+  gtk_style_context_set_junction_sides (context, 0);
+  gtk_render_frame (context, cr, 12, 12, 25, 25);
+  gtk_style_context_remove_provider (context, provider);
+  gtk_style_context_restore (context);
+
+  return TRUE;
+}
+
 static char *what;
 
 static gboolean
@@ -106,7 +157,11 @@ draw_cb (GtkWidget *widget, cairo_t *cr)
   else if (strcmp (what, "arrow") == 0)
     return draw_cb_arrows (widget, cr);
   else if (strcmp (what, "expander") == 0)
-    return draw_cb_expanders (widget ,cr);
+    return draw_cb_expanders (widget, cr);
+  else if (strcmp (what, "background") == 0)
+    return draw_cb_background (widget, cr);
+  else if (strcmp (what, "frame") == 0)
+    return draw_cb_frame (widget, cr);
 
   return FALSE;
 }