[gtk+] Some header cleanups
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Some header cleanups
- Date: Sat, 4 Dec 2010 15:25:22 +0000 (UTC)
commit e598f17871086a233e9bfabae98c56908201e3e3
Author: Matthias Clasen <mclasen redhat com>
Date: Thu Nov 25 20:39:53 2010 -0500
Some header cleanups
Move GtkGradient to their own files, also move GtkBorder out of
gtkstyle.h, so that header can be all deprecated.
docs/reference/gtk/gtk-docs.sgml | 16 +-
docs/reference/gtk/gtk3-sections.txt | 87 ++++++-----
gtk/Makefile.am | 58 ++++----
gtk/gtk.h | 2 +
gtk/gtkborder.c | 76 +++++++++
gtk/gtkborder.h | 68 ++++++++
gtk/gtkcssprovider.c | 6 +-
gtk/gtkgradient.c | 282 ++++++++++++++++++++++++++++++++++
gtk/gtkgradient.h | 57 +++++++
gtk/gtksettings.c | 1 +
gtk/gtkstyle.c | 50 +------
gtk/gtkstyle.h | 26 ---
gtk/gtkstylecontext.c | 4 +-
gtk/gtkstylecontext.h | 14 --
gtk/gtkstyleproperties.c | 6 +-
gtk/gtkstyleproperties.h | 13 +-
gtk/gtksymboliccolor.c | 262 +++-----------------------------
gtk/gtksymboliccolor.h | 51 ++----
gtk/gtkwidget.c | 1 +
gtk/gtkwidget.h | 1 +
20 files changed, 629 insertions(+), 452 deletions(-)
---
diff --git a/docs/reference/gtk/gtk-docs.sgml b/docs/reference/gtk/gtk-docs.sgml
index 505531a..3671b67 100644
--- a/docs/reference/gtk/gtk-docs.sgml
+++ b/docs/reference/gtk/gtk-docs.sgml
@@ -40,14 +40,10 @@
<xi:include href="xml/gtkaccelmap.xml" />
<xi:include href="xml/gtkclipboard.xml" />
<xi:include href="xml/gtkdnd.xml" />
- <xi:include href="xml/gtkicontheme.xml" />
<xi:include href="xml/gtkstock.xml" />
- <xi:include href="xml/gtkiconfactory.xml" />
- <xi:include href="xml/gtkrc.xml" />
<xi:include href="xml/gtksettings.xml" />
<xi:include href="xml/gtkbindings.xml" />
<xi:include href="xml/gtkenums.xml" />
- <xi:include href="xml/gtkstyle.xml" />
<xi:include href="xml/gtkselection.xml" />
<xi:include href="xml/gtktesting.xml" />
<xi:include href="xml/filesystem.xml" />
@@ -55,12 +51,18 @@
<part id="theming">
<title>Theming in GTK+</title>
- <xi:include href="xml/gtkwidgetpath.xml" />
- <xi:include href="xml/gtkstyleprovider.xml" />
- <xi:include href="xml/gtkstyleproperties.xml" />
<xi:include href="xml/gtkstylecontext.xml" />
<xi:include href="xml/gtkcssprovider.xml" />
+ <xi:include href="xml/gtkstyleprovider.xml" />
+ <xi:include href="xml/gtkstyleproperties.xml" />
<xi:include href="xml/gtkthemingengine.xml" />
+ <xi:include href="xml/gtkwidgetpath.xml" />
+ <xi:include href="xml/gtksymboliccolor.xml" />
+ <xi:include href="xml/gtkgradient.xml" />
+ <xi:include href="xml/gtkicontheme.xml" />
+ <xi:include href="xml/gtkiconfactory.xml" />
+ <xi:include href="xml/gtkrc.xml" />
+ <xi:include href="xml/gtkstyle.xml" />
</part>
<part id="gtkobjects">
diff --git a/docs/reference/gtk/gtk3-sections.txt b/docs/reference/gtk/gtk3-sections.txt
index f17596a..7120208 100644
--- a/docs/reference/gtk/gtk3-sections.txt
+++ b/docs/reference/gtk/gtk3-sections.txt
@@ -5315,33 +5315,6 @@ gtk_style_provider_get_type
</SECTION>
<SECTION>
-<FILE>gtksymboliccolor</FILE>
-<TITLE>GtkSymbolicColor</TITLE>
-GtkSymbolicColor
-GtkGradient
-gtk_symbolic_color_new_literal
-gtk_symbolic_color_new_mix
-gtk_symbolic_color_new_name
-gtk_symbolic_color_new_shade
-gtk_symbolic_color_new_alpha
-gtk_symbolic_color_resolve
-gtk_symbolic_color_ref
-gtk_symbolic_color_unref
-gtk_gradient_new_linear
-gtk_gradient_new_radial
-gtk_gradient_add_color_stop
-gtk_gradient_resolve
-gtk_gradient_ref
-gtk_gradient_unref
-<SUBSECTION Standard>
-GTK_TYPE_GRADIENT
-GTK_TYPE_SYMBOLIC_COLOR
-<SUBSECTION Private>
-gtk_symbolic_color_get_type
-gtk_gradient_get_type
-</SECTION>
-
-<SECTION>
<FILE>gtkstyleproperties</FILE>
<TITLE>GtkStyleProperties</TITLE>
GtkStyleProperties
@@ -5446,9 +5419,12 @@ gtk_style_context_has_region
gtk_style_context_list_regions
gtk_style_context_set_screen
gtk_style_context_set_state
-gtk_style_context_state_transition_start
-gtk_style_context_state_transition_stop
-gtk_style_context_state_transition_update
+
+<SUBSECTION>
+GtkBorder
+gtk_border_new
+gtk_border_copy
+gtk_border_free
<SUBSECTION>
gtk_render_arrow
@@ -5474,8 +5450,11 @@ GTK_STYLE_CONTEXT_CLASS
GTK_STYLE_CONTEXT_GET_CLASS
GTK_IS_STYLE_CONTEXT
GTK_IS_STYLE_CONTEXT_CLASS
+GTK_TYPE_BORDER
+
<SUBSECTION Private>
gtk_style_context_get_type
+gtk_border_get_type
</SECTION>
<SECTION>
@@ -5532,6 +5511,43 @@ gtk_theming_engine_get_type
</SECTION>
<SECTION>
+<FILE>gtksymboliccolor</FILE>
+<TITLE>GtkSymbolicColor</TITLE>
+GtkSymbolicColor
+gtk_symbolic_color_new_literal
+gtk_symbolic_color_new_name
+gtk_symbolic_color_new_shade
+gtk_symbolic_color_new_alpha
+gtk_symbolic_color_new_mix
+gtk_symbolic_color_ref
+gtk_symbolic_color_unref
+gtk_symbolic_color_resolve
+
+<SUBSECTION Standard>
+GTK_TYPE_SYMBOLIC_COLOR
+
+<SUBSECTION Private>
+gtk_symbolic_color_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gtkgradient</FILE>
+<TITLE>GtkGradient</TITLE>
+GtkGradient
+gtk_gradient_new_linear
+gtk_gradient_new_radial
+gtk_gradient_add_color_stop
+gtk_gradient_ref
+gtk_gradient_unref
+gtk_gradient_resolve
+
+<SUBSECTION Standard>
+GTK_TYPE_GRADIENT
+
+gtk_gradient_get_type
+</SECTION>
+
+<SECTION>
<FILE>gtkstyle</FILE>
<TITLE>GtkStyle</TITLE>
GTK_STYLE_ATTACHED
@@ -5571,12 +5587,6 @@ gtk_paint_resize_grip
gtk_draw_insertion_cursor
<SUBSECTION>
-GtkBorder
-gtk_border_new
-gtk_border_copy
-gtk_border_free
-
-<SUBSECTION>
GtkRcProperty
GtkRcPropertyParser
@@ -5588,10 +5598,8 @@ GTK_TYPE_STYLE
GTK_STYLE_CLASS
GTK_IS_STYLE_CLASS
GTK_STYLE_GET_CLASS
-GTK_TYPE_BORDER
-<SUBSECTION Private>
+
gtk_style_get_type
-gtk_border_get_type
GtkThemeEngine
</SECTION>
@@ -6012,6 +6020,7 @@ gtk_icon_info_get_builtin_pixbuf
gtk_icon_info_load_icon
gtk_icon_info_load_symbolic
gtk_icon_info_load_symbolic_for_style
+gtk_icon_info_load_symbolic_for_context
gtk_icon_info_set_raw_coordinates
gtk_icon_info_get_embedded_rect
gtk_icon_info_get_attach_points
diff --git a/gtk/Makefile.am b/gtk/Makefile.am
index 14bde8c..e69d293 100644
--- a/gtk/Makefile.am
+++ b/gtk/Makefile.am
@@ -167,6 +167,7 @@ gtk_public_h_sources = \
gtkbbox.h \
gtkbin.h \
gtkbindings.h \
+ gtkborder.h \
gtkbox.h \
gtkbuilder.h \
gtkbuildable.h \
@@ -179,7 +180,7 @@ gtk_public_h_sources = \
gtkcellrenderercombo.h \
gtkcellrendererpixbuf.h \
gtkcellrendererprogress.h \
- gtkcellrendererspin.h \
+ gtkcellrendererspin.h \
gtkcellrendererspinner.h\
gtkcellrenderertext.h \
gtkcellrenderertoggle.h \
@@ -194,26 +195,27 @@ gtk_public_h_sources = \
gtkcomboboxtext.h \
gtkcontainer.h \
gtkcssprovider.h \
- gtkdebug.h \
+ gtkdebug.h \
gtkdialog.h \
gtkdnd.h \
gtkdrawingarea.h \
- gtkeditable.h \
+ gtkeditable.h \
gtkentry.h \
gtkentrybuffer.h \
gtkentrycompletion.h \
gtkenums.h \
gtkeventbox.h \
gtkexpander.h \
- gtkfilechooser.h \
- gtkfilechooserbutton.h \
- gtkfilechooserdialog.h \
- gtkfilechooserwidget.h \
+ gtkfilechooser.h \
+ gtkfilechooserbutton.h \
+ gtkfilechooserdialog.h \
+ gtkfilechooserwidget.h \
gtkfilefilter.h \
gtkfixed.h \
gtkfontbutton.h \
gtkfontsel.h \
gtkframe.h \
+ gtkgradient.h \
gtkgrid.h \
gtkhandlebox.h \
gtkhbbox.h \
@@ -235,7 +237,7 @@ gtk_public_h_sources = \
gtkinfobar.h \
gtkinvisible.h \
gtklabel.h \
- gtklayout.h \
+ gtklayout.h \
gtklinkbutton.h \
gtkliststore.h \
gtkmain.h \
@@ -247,7 +249,7 @@ gtk_public_h_sources = \
gtkmessagedialog.h \
gtkmisc.h \
gtkmodules.h \
- gtkmountoperation.h \
+ gtkmountoperation.h \
gtknotebook.h \
gtkoffscreenwindow.h \
gtkorientable.h \
@@ -257,7 +259,7 @@ gtk_public_h_sources = \
gtkplug.h \
gtkprintcontext.h \
gtkprintoperation.h \
- gtkprintoperationpreview.h \
+ gtkprintoperationpreview.h \
gtkprintsettings.h \
gtkprogressbar.h \
gtkradioaction.h \
@@ -269,13 +271,13 @@ gtk_public_h_sources = \
gtkrecentaction.h \
gtkrecentchooser.h \
gtkrecentchooserdialog.h \
- gtkrecentchoosermenu.h \
+ gtkrecentchoosermenu.h \
gtkrecentchooserwidget.h \
- gtkrecentfilter.h \
+ gtkrecentfilter.h \
gtkrecentmanager.h \
gtkscale.h \
gtkscalebutton.h \
- gtkscrollable.h \
+ gtkscrollable.h \
gtkscrollbar.h \
gtkscrolledwindow.h \
gtkselection.h \
@@ -299,7 +301,7 @@ gtk_public_h_sources = \
gtkswitch.h \
gtksymboliccolor.h \
gtktable.h \
- gtktearoffmenuitem.h \
+ gtktearoffmenuitem.h \
gtktestutils.h \
gtktextbuffer.h \
gtktextbufferrichtext.h \
@@ -461,6 +463,7 @@ gtk_base_c_sources = \
gtkbbox.c \
gtkbin.c \
gtkbindings.c \
+ gtkborder.c \
gtkbox.c \
gtkbuildable.c \
gtkbuilder.c \
@@ -490,7 +493,7 @@ gtk_base_c_sources = \
gtkcssprovider.c \
gtkdialog.c \
gtkdrawingarea.c \
- gtkeditable.c \
+ gtkeditable.c \
gtkentry.c \
gtkentrybuffer.c \
gtkentrycompletion.c \
@@ -508,9 +511,10 @@ gtk_base_c_sources = \
gtkfilesystem.c \
gtkfilesystemmodel.c \
gtkfixed.c \
- gtkfontbutton.c \
- gtkfontsel.c \
+ gtkfontbutton.c \
+ gtkfontsel.c \
gtkframe.c \
+ gtkgradient.c \
gtkgrid.c \
gtkhandlebox.c \
gtkhbbox.c \
@@ -549,7 +553,7 @@ gtk_base_c_sources = \
gtkmisc.c \
gtkmnemonichash.c \
gtkmodules.c \
- gtkmountoperation.c \
+ gtkmountoperation.c \
gtknotebook.c \
gtkoffscreenwindow.c \
gtkorientable.c \
@@ -561,7 +565,7 @@ gtk_base_c_sources = \
gtkplug.c \
gtkprintcontext.c \
gtkprintoperation.c \
- gtkprintoperationpreview.c \
+ gtkprintoperationpreview.c \
gtkprintsettings.c \
gtkprintutils.c \
gtkprogressbar.c \
@@ -570,20 +574,20 @@ gtk_base_c_sources = \
gtkradiomenuitem.c \
gtkradiotoolbutton.c \
gtkrange.c \
- gtkrbtree.c \
+ gtkrbtree.c \
gtkrc.c \
gtkrecentaction.c \
gtkrecentchooserdefault.c \
- gtkrecentchooserdialog.c \
- gtkrecentchoosermenu.c \
- gtkrecentchooserwidget.c \
+ gtkrecentchooserdialog.c\
+ gtkrecentchoosermenu.c \
+ gtkrecentchooserwidget.c\
gtkrecentchooserutils.c \
gtkrecentchooser.c \
gtkrecentfilter.c \
gtkrecentmanager.c \
gtkscale.c \
gtkscalebutton.c \
- gtkscrollable.c \
+ gtkscrollable.c \
gtkscrollbar.c \
gtkscrolledwindow.c \
gtkselection.c \
@@ -607,7 +611,7 @@ gtk_base_c_sources = \
gtkswitch.c \
gtksymboliccolor.c \
gtktable.c \
- gtktearoffmenuitem.c \
+ gtktearoffmenuitem.c \
gtktestutils.c \
gtktextbtree.c \
gtktextbuffer.c \
@@ -633,7 +637,7 @@ gtk_base_c_sources = \
gtktoolbar.c \
gtktoolbutton.c \
gtktoolitem.c \
- gtktoolitemgroup.c \
+ gtktoolitemgroup.c \
gtktoolpalette.c \
gtktoolshell.c \
gtktooltip.c \
@@ -660,7 +664,7 @@ gtk_base_c_sources = \
gtkvseparator.c \
gtkwidget.c \
gtkwidgetpath.c \
- gtkwindow-decorate.c \
+ gtkwindow-decorate.c \
gtkwindow.c \
$(gtk_clipboard_dnd_c_sources) \
$(gtk_appchooser_impl_c_sources)
diff --git a/gtk/gtk.h b/gtk/gtk.h
index 36d9a33..3b1155d 100644
--- a/gtk/gtk.h
+++ b/gtk/gtk.h
@@ -51,6 +51,7 @@
#include <gtk/gtkbbox.h>
#include <gtk/gtkbin.h>
#include <gtk/gtkbindings.h>
+#include <gtk/gtkborder.h>
#include <gtk/gtkbox.h>
#include <gtk/gtkbuildable.h>
#include <gtk/gtkbuilder.h>
@@ -98,6 +99,7 @@
#include <gtk/gtkfontbutton.h>
#include <gtk/gtkfontsel.h>
#include <gtk/gtkframe.h>
+#include <gtk/gtkgradient.h>
#include <gtk/gtkgrid.h>
#include <gtk/gtkhandlebox.h>
#include <gtk/gtkhbbox.h>
diff --git a/gtk/gtkborder.c b/gtk/gtkborder.c
new file mode 100644
index 0000000..6ea466a
--- /dev/null
+++ b/gtk/gtkborder.c
@@ -0,0 +1,76 @@
+/* GTK - The GIMP Toolkit
+ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
+ * file for a list of people on the GTK+ Team. See the ChangeLog
+ * files for a list of changes. These files are distributed with
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
+ */
+
+#include "config.h"
+
+#include "gtkborder.h"
+
+/**
+ * gtk_border_new:
+ *
+ * Allocates a new #GtkBorder structure and initializes its elements to zero.
+ *
+ * Returns: a newly allocated #GtkBorder. Free with gtk_border_free()
+ *
+ * Since: 2.14
+ */
+GtkBorder *
+gtk_border_new (void)
+{
+ return g_slice_new0 (GtkBorder);
+}
+
+/**
+ * gtk_border_copy:
+ * @border_: a #GtkBorder
+ *
+ * Copies a #GtkBorder structure.
+ *
+ * Returns: a copy of @border_.
+ */
+GtkBorder *
+gtk_border_copy (const GtkBorder *border_)
+{
+ g_return_val_if_fail (border_ != NULL, NULL);
+
+ return g_slice_dup (GtkBorder, border_);
+}
+
+/**
+ * gtk_border_free:
+ * @border_: a #GtkBorder
+ *
+ * Frees a #GtkBorder structure.
+ */
+void
+gtk_border_free (GtkBorder *border_)
+{
+ g_slice_free (GtkBorder, border_);
+}
+
+G_DEFINE_BOXED_TYPE (GtkBorder, gtk_border,
+ gtk_border_copy,
+ gtk_border_free)
diff --git a/gtk/gtkborder.h b/gtk/gtkborder.h
new file mode 100644
index 0000000..51a5b7b
--- /dev/null
+++ b/gtk/gtkborder.h
@@ -0,0 +1,68 @@
+/* GTK - The GIMP Toolkit
+ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
+ * file for a list of people on the GTK+ Team. See the ChangeLog
+ * files for a list of changes. These files are distributed with
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
+ */
+
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#error "Only <gtk/gtk.h> can be included directly."
+#endif
+
+#ifndef __GTK_BORDER_H__
+#define __GTK_BORDER_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GtkBorder GtkBorder;
+
+#define GTK_TYPE_BORDER (gtk_border_get_type ())
+
+/**
+ * GtkBorder:
+ * @left: The width of the left border.
+ * @right: The width of the right border.
+ * @top: The width of the top border.
+ * @bottom: The width of the bottom border.
+ *
+ * A struct that specifies a border around a rectangular area that can
+ * be of different width on each side.
+ */
+struct _GtkBorder
+{
+ gint16 left;
+ gint16 right;
+ gint16 top;
+ gint16 bottom;
+};
+
+GType gtk_border_get_type (void) G_GNUC_CONST;
+GtkBorder *gtk_border_new (void) G_GNUC_MALLOC;
+GtkBorder *gtk_border_copy (const GtkBorder *border_);
+void gtk_border_free (GtkBorder *border_);
+
+
+G_END_DECLS
+
+#endif /* __GTK_BORDER_H__ */
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c
index b2fde39..76fd866 100644
--- a/gtk/gtkcssprovider.c
+++ b/gtk/gtkcssprovider.c
@@ -36,9 +36,9 @@
* @Title: GtkCssProvider
* @See_also: #GtkStyleContext, #GtkStyleProvider
*
- * #GtkCssProvider is an object implementing #GtkStyleProvider, it is able
- * to parse <ulink url="http://www.w3.org/TR/CSS2">CSS</ulink>-like input
- * in order to style widgets.
+ * GtkCssProvider is an object implementing the #GtkStyleProvider interface.
+ * It is able to parse <ulink url="http://www.w3.org/TR/CSS2">CSS</ulink>-like
+ * input in order to style widgets.
*
* <refsect2 id="gtkcssprovider-files">
* <title>Default files</title>
diff --git a/gtk/gtkgradient.c b/gtk/gtkgradient.c
new file mode 100644
index 0000000..a19b8fe
--- /dev/null
+++ b/gtk/gtkgradient.c
@@ -0,0 +1,282 @@
+/* GTK - The GIMP Toolkit
+ * Copyright (C) 2010 Carlos Garnacho <carlosg gnome org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+#include "gtkgradient.h"
+#include "gtkstyleproperties.h"
+#include "gtkintl.h"
+
+/**
+ * SECTION:gtkgradient
+ * @Short_description: Gradients
+ * @Title: GtkGradient
+ *
+ * GtkGradient is a boxed type that represents a gradient.
+ * It is the result of parsing a
+ * <link linkend="gtkcssprovider-gradients">gradient expression</link>.
+ * To obtain the gradient represented by a GtkGradient, it has to
+ * be resolved with gtk_gradient_resolve(), which replaces all
+ * symbolic color references by the colors they refer to (in a given
+ * context) and constructs a #cairo_pattern_t value.
+ *
+ * It is not normally necessary to deal directly with #GtkGradients,
+ * since they are mostly used behind the scenes by #GtkStyleContext and
+ * #GtkCssProvider.
+ */
+
+G_DEFINE_BOXED_TYPE (GtkGradient, gtk_gradient,
+ gtk_gradient_ref, gtk_gradient_unref)
+
+typedef struct ColorStop ColorStop;
+
+struct ColorStop
+{
+ gdouble offset;
+ GtkSymbolicColor *color;
+};
+
+struct _GtkGradient
+{
+ gdouble x0;
+ gdouble y0;
+ gdouble x1;
+ gdouble y1;
+ gdouble radius0;
+ gdouble radius1;
+
+ GArray *stops;
+
+ guint ref_count;
+};
+
+/**
+ * gtk_gradient_new_linear:
+ * @x0: X coordinate of the starting point
+ * @y0: Y coordinate of the starting point
+ * @x1: X coordinate of the end point
+ * @y1: Y coordinate of the end point
+ *
+ * Creates a new linear gradient along the line defined by (x0, y0) and (x1, y1). Before using the gradient
+ * a number of stop colors must be added through gtk_gradient_add_color_stop().
+ *
+ * Returns: A newly created #GtkGradient
+ *
+ * Since: 3.0
+ **/
+GtkGradient *
+gtk_gradient_new_linear (gdouble x0,
+ gdouble y0,
+ gdouble x1,
+ gdouble y1)
+{
+ GtkGradient *gradient;
+
+ gradient = g_slice_new (GtkGradient);
+ gradient->stops = g_array_new (FALSE, FALSE, sizeof (ColorStop));
+
+ gradient->x0 = x0;
+ gradient->y0 = y0;
+ gradient->x1 = x1;
+ gradient->y1 = y1;
+ gradient->radius0 = 0;
+ gradient->radius1 = 0;
+
+ gradient->ref_count = 1;
+
+ return gradient;
+}
+
+/**
+ * gtk_gradient_new_radial:
+ * @x0: X coordinate of the start circle
+ * @y0: Y coordinate of the start circle
+ * @radius0: radius of the start circle
+ * @x1: X coordinate of the end circle
+ * @y1: Y coordinate of the end circle
+ * @radius1: radius of the end circle
+ *
+ * Creates a new radial gradient along the two circles defined by (x0, y0, radius0) and
+ * (x1, y1, radius1). Before using the gradient a number of stop colors must be added
+ * through gtk_gradient_add_color_stop().
+ *
+ * Returns: A newly created #GtkGradient
+ *
+ * Since: 3.0
+ **/
+GtkGradient *
+gtk_gradient_new_radial (gdouble x0,
+ gdouble y0,
+ gdouble radius0,
+ gdouble x1,
+ gdouble y1,
+ gdouble radius1)
+{
+ GtkGradient *gradient;
+
+ gradient = g_slice_new (GtkGradient);
+ gradient->stops = g_array_new (FALSE, FALSE, sizeof (ColorStop));
+
+ gradient->x0 = x0;
+ gradient->y0 = y0;
+ gradient->x1 = x1;
+ gradient->y1 = y1;
+ gradient->radius0 = radius0;
+ gradient->radius1 = radius1;
+
+ gradient->ref_count = 1;
+
+ return gradient;
+}
+
+/**
+ * gtk_gradient_add_color_stop:
+ * @gradient: a #GtkGradient
+ * @offset: offset for the color stop
+ * @color: color to use
+ *
+ * Adds a stop color to @gradient.
+ *
+ * Since: 3.0
+ **/
+void
+gtk_gradient_add_color_stop (GtkGradient *gradient,
+ gdouble offset,
+ GtkSymbolicColor *color)
+{
+ ColorStop stop;
+
+ g_return_if_fail (gradient != NULL);
+
+ stop.offset = offset;
+ stop.color = gtk_symbolic_color_ref (color);
+
+ g_array_append_val (gradient->stops, stop);
+}
+
+/**
+ * gtk_gradient_ref:
+ * @gradient: a #GtkGradient
+ *
+ * Increases the reference count of @gradient.
+ *
+ * Returns: The same @gradient
+ *
+ * Since: 3.0
+ **/
+GtkGradient *
+gtk_gradient_ref (GtkGradient *gradient)
+{
+ g_return_val_if_fail (gradient != NULL, NULL);
+
+ gradient->ref_count++;
+
+ return gradient;
+}
+
+/**
+ * gtk_gradient_unref:
+ * @gradient: a #GtkGradient
+ *
+ * Decreases the reference count of @gradient, freeing its memory
+ * if the reference count reaches 0.
+ *
+ * Since: 3.0
+ **/
+void
+gtk_gradient_unref (GtkGradient *gradient)
+{
+ g_return_if_fail (gradient != NULL);
+
+ gradient->ref_count--;
+
+ if (gradient->ref_count == 0)
+ {
+ guint i;
+
+ for (i = 0; i < gradient->stops->len; i++)
+ {
+ ColorStop *stop;
+
+ stop = &g_array_index (gradient->stops, ColorStop, i);
+ gtk_symbolic_color_unref (stop->color);
+ }
+
+ g_array_free (gradient->stops, TRUE);
+ g_slice_free (GtkGradient, gradient);
+ }
+}
+
+/**
+ * gtk_gradient_resolve:
+ * @gradient: a #GtkGradient
+ * @props: #GtkStyleProperties to use when resolving named colors
+ * @resolved_gradient: (out): return location for the resolved pattern
+ *
+ * If @gradient is resolvable, @resolved_gradient will be filled in
+ * with the resolved gradient as a cairo_pattern_t, and %TRUE will
+ * be returned. Generally, if @gradient can't be resolved, it is
+ * due to it being defined on top of a named color that doesn't
+ * exist in @props.
+ *
+ * Returns: %TRUE if the gradient has been resolved
+ *
+ * Since: 3.0
+ **/
+gboolean
+gtk_gradient_resolve (GtkGradient *gradient,
+ GtkStyleProperties *props,
+ cairo_pattern_t **resolved_gradient)
+{
+ cairo_pattern_t *pattern;
+ guint i;
+
+ g_return_val_if_fail (gradient != NULL, FALSE);
+ g_return_val_if_fail (GTK_IS_STYLE_PROPERTIES (props), FALSE);
+ g_return_val_if_fail (resolved_gradient != NULL, FALSE);
+
+ if (gradient->radius0 == 0 && gradient->radius1 == 0)
+ pattern = cairo_pattern_create_linear (gradient->x0, gradient->y0,
+ gradient->x1, gradient->y1);
+ else
+ pattern = cairo_pattern_create_radial (gradient->x0, gradient->y0,
+ gradient->radius0,
+ gradient->x1, gradient->y1,
+ gradient->radius1);
+
+ for (i = 0; i < gradient->stops->len; i++)
+ {
+ ColorStop *stop;
+ GdkRGBA color;
+
+ stop = &g_array_index (gradient->stops, ColorStop, i);
+
+ if (!gtk_symbolic_color_resolve (stop->color, props, &color))
+ {
+ cairo_pattern_destroy (pattern);
+ return FALSE;
+ }
+
+ cairo_pattern_add_color_stop_rgba (pattern, stop->offset,
+ color.red, color.green,
+ color.blue, color.alpha);
+ }
+
+ *resolved_gradient = pattern;
+ return TRUE;
+}
diff --git a/gtk/gtkgradient.h b/gtk/gtkgradient.h
new file mode 100644
index 0000000..3e6b70f
--- /dev/null
+++ b/gtk/gtkgradient.h
@@ -0,0 +1,57 @@
+/* GTK - The GIMP Toolkit
+ * Copyright (C) 2010 Carlos Garnacho <carlosg gnome org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __GTK_GRADIENT_H__
+#define __GTK_GRADIENT_H__
+
+#include <gdk/gdk.h>
+#include <gtk/gtkstyleproperties.h>
+#include <gtk/gtksymboliccolor.h>
+
+G_BEGIN_DECLS
+
+#define GTK_TYPE_GRADIENT (gtk_gradient_get_type ())
+
+GType gtk_gradient_get_type (void) G_GNUC_CONST;
+
+GtkGradient * gtk_gradient_new_linear (gdouble x0,
+ gdouble y0,
+ gdouble x1,
+ gdouble y1);
+GtkGradient * gtk_gradient_new_radial (gdouble x0,
+ gdouble y0,
+ gdouble radius0,
+ gdouble x1,
+ gdouble y1,
+ gdouble radius1);
+
+void gtk_gradient_add_color_stop (GtkGradient *gradient,
+ gdouble offset,
+ GtkSymbolicColor *color);
+
+GtkGradient * gtk_gradient_ref (GtkGradient *gradient);
+void gtk_gradient_unref (GtkGradient *gradient);
+
+gboolean gtk_gradient_resolve (GtkGradient *gradient,
+ GtkStyleProperties *props,
+ cairo_pattern_t **resolved_gradient);
+
+G_END_DECLS
+
+#endif /* __GTK_GRADIENT_H__ */
diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c
index 8b70038..58fd2c1 100644
--- a/gtk/gtksettings.c
+++ b/gtk/gtksettings.c
@@ -31,6 +31,7 @@
#include "gtktypeutils.h"
#include "gtkprivate.h"
#include "gtkcssprovider.h"
+#include "gtksymboliccolor.h"
#include "gtkversion.h"
#ifdef GDK_WINDOWING_X11
diff --git a/gtk/gtkstyle.c b/gtk/gtkstyle.c
index 3c8cdc5..a59f1e4 100644
--- a/gtk/gtkstyle.c
+++ b/gtk/gtkstyle.c
@@ -41,6 +41,7 @@
#include "gtkintl.h"
#include "gtkdebug.h"
#include "gtkspinner.h"
+#include "gtkborder.h"
/**
@@ -60,7 +61,9 @@
* Usually applications should not need to use or modify the #GtkStyle of their
* widgets.
*
+ * <warning>
* In GTK+ 3.0, GtkStyle has been deprecated and replaced by #GtkStyleContext.
+ * </warning>
*/
@@ -4576,53 +4579,6 @@ gtk_paint_spinner (GtkStyle *style,
cairo_restore (cr);
}
-/**
- * gtk_border_new:
- *
- * Allocates a new #GtkBorder structure and initializes its elements to zero.
- *
- * Returns: a new empty #GtkBorder. The newly allocated #GtkBorder should be
- * freed with gtk_border_free()
- *
- * Since: 2.14
- **/
-GtkBorder *
-gtk_border_new (void)
-{
- return g_slice_new0 (GtkBorder);
-}
-
-/**
- * gtk_border_copy:
- * @border_: a #GtkBorder.
- * @returns: a copy of @border_.
- *
- * Copies a #GtkBorder structure.
- **/
-GtkBorder *
-gtk_border_copy (const GtkBorder *border)
-{
- g_return_val_if_fail (border != NULL, NULL);
-
- return g_slice_dup (GtkBorder, border);
-}
-
-/**
- * gtk_border_free:
- * @border_: a #GtkBorder.
- *
- * Frees a #GtkBorder structure.
- **/
-void
-gtk_border_free (GtkBorder *border)
-{
- g_slice_free (GtkBorder, border);
-}
-
-G_DEFINE_BOXED_TYPE (GtkBorder, gtk_border,
- gtk_border_copy,
- gtk_border_free)
-
typedef struct _CursorInfo CursorInfo;
struct _CursorInfo
diff --git a/gtk/gtkstyle.h b/gtk/gtkstyle.h
index 8bd38ec..3d44b1f 100644
--- a/gtk/gtkstyle.h
+++ b/gtk/gtkstyle.h
@@ -45,12 +45,9 @@ G_BEGIN_DECLS
#define GTK_IS_STYLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_STYLE))
#define GTK_STYLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_STYLE, GtkStyleClass))
-#define GTK_TYPE_BORDER (gtk_border_get_type ())
-
/* Some forward declarations needed to rationalize the header
* files.
*/
-typedef struct _GtkBorder GtkBorder;
typedef struct _GtkStyle GtkStyle;
typedef struct _GtkStyleClass GtkStyleClass;
typedef struct _GtkThemeEngine GtkThemeEngine;
@@ -383,29 +380,6 @@ struct _GtkStyleClass
void (*_gtk_reserved11) (void);
};
-/**
- * GtkBorder:
- * @left: The width of the left border.
- * @right: The width of the right border.
- * @top: The width of the top border.
- * @bottom: The width of the bottom border.
- *
- * A struct that specifies a border around a rectangular area that can
- * be of different width on each side.
- */
-struct _GtkBorder
-{
- gint16 left;
- gint16 right;
- gint16 top;
- gint16 bottom;
-};
-
-GType gtk_border_get_type (void) G_GNUC_CONST;
-GtkBorder *gtk_border_new (void) G_GNUC_MALLOC;
-GtkBorder *gtk_border_copy (const GtkBorder *border_);
-void gtk_border_free (GtkBorder *border_);
-
#if !defined(GTK_DISABLE_DEPRECATED) || defined(GTK_COMPILATION)
GType gtk_style_get_type (void) G_GNUC_CONST;
diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c
index 61d3b7b..190579d 100644
--- a/gtk/gtkstylecontext.c
+++ b/gtk/gtkstylecontext.c
@@ -30,14 +30,14 @@
#include "gtkwidget.h"
#include "gtkwindow.h"
#include "gtkprivate.h"
+#include "gtksymboliccolor.h"
#include "gtkanimationdescription.h"
#include "gtktimeline.h"
/**
* SECTION:gtkstylecontext
- * @Short_description: rendering UI elements
+ * @Short_description: Rendering UI elements
* @Title: GtkStyleContext
- * @See_also:
*
* #GtkStyleContext is an object that stores styling information affecting
* a widget defined by #GtkWidgetPath.
diff --git a/gtk/gtkstylecontext.h b/gtk/gtkstylecontext.h
index 43f3893..2868c85 100644
--- a/gtk/gtkstylecontext.h
+++ b/gtk/gtkstylecontext.h
@@ -430,20 +430,6 @@ void _gtk_style_context_coalesce_animation_areas (GtkStyleContext *c
gint rel_x,
gint rel_y);
-/* Animation for state changes */
-void gtk_style_context_state_transition_start (GtkStyleContext *context,
- gpointer identifier,
- GtkWidget *widget,
- GtkStateType state,
- gboolean value,
- GdkRectangle *rect);
-void gtk_style_context_state_transition_update (GtkStyleContext *context,
- gpointer identifier,
- GdkRectangle *rect,
- GtkStateType state);
-void gtk_style_context_state_transition_stop (GtkStyleContext *context,
- gpointer identifier);
-
void gtk_style_context_invalidate (GtkStyleContext *context);
void gtk_style_context_reset_widgets (GdkScreen *screen);
diff --git a/gtk/gtkstyleproperties.c b/gtk/gtkstyleproperties.c
index 5c54b21..49c05d9 100644
--- a/gtk/gtkstyleproperties.c
+++ b/gtk/gtkstyleproperties.c
@@ -19,16 +19,20 @@
#include "config.h"
+#include "gtkstyleproperties.h"
+
#include <stdlib.h>
#include <gobject/gvaluecollector.h>
#include <cairo-gobject.h>
#include "gtktypebuiltins.h"
#include "gtkstyleprovider.h"
-#include "gtkstyleproperties.h"
+#include "gtksymboliccolor.h"
#include "gtkprivate.h"
#include "gtkthemingengine.h"
#include "gtkanimationdescription.h"
+#include "gtkborder.h"
+#include "gtkgradient.h"
#include "gtk9slice.h"
#include "gtkintl.h"
diff --git a/gtk/gtkstyleproperties.h b/gtk/gtkstyleproperties.h
index c419459..8a243b7 100644
--- a/gtk/gtkstyleproperties.h
+++ b/gtk/gtkstyleproperties.h
@@ -22,8 +22,7 @@
#include <glib-object.h>
#include <gdk/gdk.h>
-#include "gtkenums.h"
-#include "gtksymboliccolor.h"
+#include <gtk/gtkenums.h>
G_BEGIN_DECLS
@@ -37,6 +36,9 @@ G_BEGIN_DECLS
typedef struct _GtkStyleProperties GtkStyleProperties;
typedef struct _GtkStylePropertiesClass GtkStylePropertiesClass;
+typedef struct _GtkSymbolicColor GtkSymbolicColor;
+typedef struct _GtkGradient GtkGradient;
+
struct _GtkStyleProperties
{
GObject parent_object;
@@ -101,13 +103,6 @@ void gtk_style_properties_merge (GtkStyleProperties *props,
const GtkStyleProperties *props_to_merge,
gboolean replace);
-gboolean gtk_symbolic_color_resolve (GtkSymbolicColor *color,
- GtkStyleProperties *props,
- GdkRGBA *resolved_color);
-gboolean gtk_gradient_resolve (GtkGradient *gradient,
- GtkStyleProperties *props,
- cairo_pattern_t **resolved_gradient);
-
G_END_DECLS
#endif /* __GTK_STYLE_PROPERTIES_H__ */
diff --git a/gtk/gtksymboliccolor.c b/gtk/gtksymboliccolor.c
index cb5a919..2345cfa 100644
--- a/gtk/gtksymboliccolor.c
+++ b/gtk/gtksymboliccolor.c
@@ -22,10 +22,27 @@
#include "gtkstyleproperties.h"
#include "gtkintl.h"
+/**
+ * SECTION:gtksymboliccolor
+ * @Short_description: Symbolic colors
+ * @Title: GtkSymbolicColor
+ *
+ * GtkSymbolicColor is a boxed type that represents a symbolic color.
+ * It is the result of parsing a
+ * <link linkend="gtkcssprovider-symbolic-colors">color expression</link>.
+ * To obtain the color represented by a GtkSymbolicColor, it has to
+ * be resolved with gtk_symbolic_color_resolve(), which replaces all
+ * symbolic color references by the colors they refer to (in a given
+ * context) and evaluates mix, shade and other expressions, resulting
+ * in a #GdkRGBA value.
+ *
+ * It is not normally necessary to deal directly with #GtkSymbolicColors,
+ * since they are mostly used behind the scenes by #GtkStyleContext and
+ * #GtkCssProvider.
+ */
+
G_DEFINE_BOXED_TYPE (GtkSymbolicColor, gtk_symbolic_color,
- gtk_symbolic_color_ref, gtk_symbolic_color_unref)
-G_DEFINE_BOXED_TYPE (GtkGradient, gtk_gradient,
- gtk_gradient_ref, gtk_gradient_unref)
+ gtk_symbolic_color_ref, gtk_symbolic_color_unref)
/* Symbolic colors */
typedef enum {
@@ -61,28 +78,6 @@ struct _GtkSymbolicColor
};
};
-typedef struct ColorStop ColorStop;
-
-struct ColorStop
-{
- gdouble offset;
- GtkSymbolicColor *color;
-};
-
-struct _GtkGradient
-{
- gdouble x0;
- gdouble y0;
- gdouble x1;
- gdouble y1;
- gdouble radius0;
- gdouble radius1;
-
- GArray *stops;
-
- guint ref_count;
-};
-
/**
* gtk_symbolic_color_new_literal:
* @color: a #GdkRGBA
@@ -561,220 +556,3 @@ gtk_symbolic_color_resolve (GtkSymbolicColor *color,
return FALSE;
}
-
-/* GtkGradient */
-/**
- * gtk_gradient_new_linear:
- * @x0: X coordinate of the starting point
- * @y0: Y coordinate of the starting point
- * @x1: X coordinate of the end point
- * @y1: Y coordinate of the end point
- *
- * Creates a new linear gradient along the line defined by (x0, y0) and (x1, y1). Before using the gradient
- * a number of stop colors must be added through gtk_gradient_add_color_stop().
- *
- * Returns: A newly created #GtkGradient
- *
- * Since: 3.0
- **/
-GtkGradient *
-gtk_gradient_new_linear (gdouble x0,
- gdouble y0,
- gdouble x1,
- gdouble y1)
-{
- GtkGradient *gradient;
-
- gradient = g_slice_new (GtkGradient);
- gradient->stops = g_array_new (FALSE, FALSE, sizeof (ColorStop));
-
- gradient->x0 = x0;
- gradient->y0 = y0;
- gradient->x1 = x1;
- gradient->y1 = y1;
- gradient->radius0 = 0;
- gradient->radius1 = 0;
-
- gradient->ref_count = 1;
-
- return gradient;
-}
-
-/**
- * gtk_gradient_new_radial:
- * @x0: X coordinate of the start circle
- * @y0: Y coordinate of the start circle
- * @radius0: radius of the start circle
- * @x1: X coordinate of the end circle
- * @y1: Y coordinate of the end circle
- * @radius1: radius of the end circle
- *
- * Creates a new radial gradient along the two circles defined by (x0, y0, radius0) and
- * (x1, y1, radius1). Before using the gradient a number of stop colors must be added
- * through gtk_gradient_add_color_stop().
- *
- * Returns: A newly created #GtkGradient
- *
- * Since: 3.0
- **/
-GtkGradient *
-gtk_gradient_new_radial (gdouble x0,
- gdouble y0,
- gdouble radius0,
- gdouble x1,
- gdouble y1,
- gdouble radius1)
-{
- GtkGradient *gradient;
-
- gradient = g_slice_new (GtkGradient);
- gradient->stops = g_array_new (FALSE, FALSE, sizeof (ColorStop));
-
- gradient->x0 = x0;
- gradient->y0 = y0;
- gradient->x1 = x1;
- gradient->y1 = y1;
- gradient->radius0 = radius0;
- gradient->radius1 = radius1;
-
- gradient->ref_count = 1;
-
- return gradient;
-}
-
-/**
- * gtk_gradient_add_color_stop:
- * @gradient: a #GtkGradient
- * @offset: offset for the color stop
- * @color: color to use
- *
- * Adds a stop color to @gradient.
- *
- * Since: 3.0
- **/
-void
-gtk_gradient_add_color_stop (GtkGradient *gradient,
- gdouble offset,
- GtkSymbolicColor *color)
-{
- ColorStop stop;
-
- g_return_if_fail (gradient != NULL);
-
- stop.offset = offset;
- stop.color = gtk_symbolic_color_ref (color);
-
- g_array_append_val (gradient->stops, stop);
-}
-
-/**
- * gtk_gradient_ref:
- * @gradient: a #GtkGradient
- *
- * Increases the reference count of @gradient.
- *
- * Returns: The same @gradient
- *
- * Since: 3.0
- **/
-GtkGradient *
-gtk_gradient_ref (GtkGradient *gradient)
-{
- g_return_val_if_fail (gradient != NULL, NULL);
-
- gradient->ref_count++;
-
- return gradient;
-}
-
-/**
- * gtk_gradient_unref:
- * @gradient: a #GtkGradient
- *
- * Decreases the reference count of @gradient, freeing its memory
- * if the reference count reaches 0.
- *
- * Since: 3.0
- **/
-void
-gtk_gradient_unref (GtkGradient *gradient)
-{
- g_return_if_fail (gradient != NULL);
-
- gradient->ref_count--;
-
- if (gradient->ref_count == 0)
- {
- guint i;
-
- for (i = 0; i < gradient->stops->len; i++)
- {
- ColorStop *stop;
-
- stop = &g_array_index (gradient->stops, ColorStop, i);
- gtk_symbolic_color_unref (stop->color);
- }
-
- g_array_free (gradient->stops, TRUE);
- g_slice_free (GtkGradient, gradient);
- }
-}
-
-/**
- * gtk_gradient_resolve:
- * @gradient: a #GtkGradient
- * @props: #GtkStyleProperties to use when resolving named colors
- * @resolved_gradient: (out): return location for the resolved pattern
- *
- * If @gradient is resolvable, @resolved_gradient will be filled in
- * with the resolved gradient as a cairo_pattern_t, and %TRUE will
- * be returned. Generally, if @gradient can't be resolved, it is
- * due to it being defined on top of a named color that doesn't
- * exist in @props.
- *
- * Returns: %TRUE if the gradient has been resolved
- *
- * Since: 3.0
- **/
-gboolean
-gtk_gradient_resolve (GtkGradient *gradient,
- GtkStyleProperties *props,
- cairo_pattern_t **resolved_gradient)
-{
- cairo_pattern_t *pattern;
- guint i;
-
- g_return_val_if_fail (gradient != NULL, FALSE);
- g_return_val_if_fail (GTK_IS_STYLE_PROPERTIES (props), FALSE);
- g_return_val_if_fail (resolved_gradient != NULL, FALSE);
-
- if (gradient->radius0 == 0 && gradient->radius1 == 0)
- pattern = cairo_pattern_create_linear (gradient->x0, gradient->y0,
- gradient->x1, gradient->y1);
- else
- pattern = cairo_pattern_create_radial (gradient->x0, gradient->y0,
- gradient->radius0,
- gradient->x1, gradient->y1,
- gradient->radius1);
-
- for (i = 0; i < gradient->stops->len; i++)
- {
- ColorStop *stop;
- GdkRGBA color;
-
- stop = &g_array_index (gradient->stops, ColorStop, i);
-
- if (!gtk_symbolic_color_resolve (stop->color, props, &color))
- {
- cairo_pattern_destroy (pattern);
- return FALSE;
- }
-
- cairo_pattern_add_color_stop_rgba (pattern, stop->offset,
- color.red, color.green,
- color.blue, color.alpha);
- }
-
- *resolved_gradient = pattern;
- return TRUE;
-}
diff --git a/gtk/gtksymboliccolor.h b/gtk/gtksymboliccolor.h
index fdcb915..462f086 100644
--- a/gtk/gtksymboliccolor.h
+++ b/gtk/gtksymboliccolor.h
@@ -21,49 +21,30 @@
#define __GTK_SYMBOLIC_COLOR_H__
#include <gdk/gdk.h>
+#include <gtk/gtkstyleproperties.h>
G_BEGIN_DECLS
-/* Dummy typedefs */
-typedef struct _GtkSymbolicColor GtkSymbolicColor;
-typedef struct _GtkGradient GtkGradient;
-
#define GTK_TYPE_SYMBOLIC_COLOR (gtk_symbolic_color_get_type ())
-#define GTK_TYPE_GRADIENT (gtk_gradient_get_type ())
-
-GType gtk_symbolic_color_get_type (void) G_GNUC_CONST;
-GType gtk_gradient_get_type (void) G_GNUC_CONST;
-
-GtkSymbolicColor * gtk_symbolic_color_new_literal (const GdkRGBA *color);
-GtkSymbolicColor * gtk_symbolic_color_new_name (const gchar *name);
-GtkSymbolicColor * gtk_symbolic_color_new_shade (GtkSymbolicColor *color,
- gdouble factor);
-GtkSymbolicColor * gtk_symbolic_color_new_alpha (GtkSymbolicColor *color,
- gdouble factor);
-GtkSymbolicColor * gtk_symbolic_color_new_mix (GtkSymbolicColor *color1,
- GtkSymbolicColor *color2,
- gdouble factor);
-GtkSymbolicColor * gtk_symbolic_color_ref (GtkSymbolicColor *color);
-void gtk_symbolic_color_unref (GtkSymbolicColor *color);
+GType gtk_symbolic_color_get_type (void) G_GNUC_CONST;
-GtkGradient * gtk_gradient_new_linear (gdouble x0,
- gdouble y0,
- gdouble x1,
- gdouble y1);
-GtkGradient * gtk_gradient_new_radial (gdouble x0,
- gdouble y0,
- gdouble radius0,
- gdouble x1,
- gdouble y1,
- gdouble radius1);
+GtkSymbolicColor * gtk_symbolic_color_new_literal (const GdkRGBA *color);
+GtkSymbolicColor * gtk_symbolic_color_new_name (const gchar *name);
+GtkSymbolicColor * gtk_symbolic_color_new_shade (GtkSymbolicColor *color,
+ gdouble factor);
+GtkSymbolicColor * gtk_symbolic_color_new_alpha (GtkSymbolicColor *color,
+ gdouble factor);
+GtkSymbolicColor * gtk_symbolic_color_new_mix (GtkSymbolicColor *color1,
+ GtkSymbolicColor *color2,
+ gdouble factor);
-void gtk_gradient_add_color_stop (GtkGradient *gradient,
- gdouble offset,
- GtkSymbolicColor *color);
+GtkSymbolicColor * gtk_symbolic_color_ref (GtkSymbolicColor *color);
+void gtk_symbolic_color_unref (GtkSymbolicColor *color);
-GtkGradient * gtk_gradient_ref (GtkGradient *gradient);
-void gtk_gradient_unref (GtkGradient *gradient);
+gboolean gtk_symbolic_color_resolve (GtkSymbolicColor *color,
+ GtkStyleProperties *props,
+ GdkRGBA *resolved_color);
G_END_DECLS
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 324ed3d..1c0bfee 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -59,6 +59,7 @@
#include "gtkbuilderprivate.h"
#include "gtksizerequest.h"
#include "gtkstylecontext.h"
+#include "gtksymboliccolor.h"
#include "gtkcssprovider.h"
#include "gtkanimationdescription.h"
#include "gtkversion.h"
diff --git a/gtk/gtkwidget.h b/gtk/gtkwidget.h
index 6240c64..7f68855 100644
--- a/gtk/gtkwidget.h
+++ b/gtk/gtkwidget.h
@@ -35,6 +35,7 @@
#include <gtk/gtkaccelgroup.h>
#include <gtk/gtkadjustment.h>
#include <gtk/gtkstyle.h>
+#include <gtk/gtkborder.h>
#include <gtk/gtksettings.h>
#include <gtk/gtkstylecontext.h>
#include <gtk/gtkwidgetpath.h>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]