mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-11 03:10:09 +00:00
Some header cleanups
Move GtkGradient to their own files, also move GtkBorder out of gtkstyle.h, so that header can be all deprecated.
This commit is contained in:
parent
1915a19503
commit
e598f17871
@ -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">
|
||||
|
@ -5314,33 +5314,6 @@ GTK_STYLE_PROVIDER_GET_IFACE
|
||||
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>
|
||||
@ -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>
|
||||
@ -5531,6 +5510,43 @@ GTK_TYPE_THEMING_ENGINE
|
||||
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>
|
||||
@ -5570,12 +5586,6 @@ gtk_paint_layout
|
||||
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
|
||||
|
@ -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)
|
||||
|
@ -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>
|
||||
|
76
gtk/gtkborder.c
Normal file
76
gtk/gtkborder.c
Normal file
@ -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)
|
68
gtk/gtkborder.h
Normal file
68
gtk/gtkborder.h
Normal file
@ -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__ */
|
@ -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>
|
||||
|
282
gtk/gtkgradient.c
Normal file
282
gtk/gtkgradient.c
Normal file
@ -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;
|
||||
}
|
57
gtk/gtkgradient.h
Normal file
57
gtk/gtkgradient.h
Normal file
@ -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__ */
|
@ -31,6 +31,7 @@
|
||||
#include "gtktypeutils.h"
|
||||
#include "gtkprivate.h"
|
||||
#include "gtkcssprovider.h"
|
||||
#include "gtksymboliccolor.h"
|
||||
#include "gtkversion.h"
|
||||
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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__ */
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
GType gtk_symbolic_color_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_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);
|
||||
GtkSymbolicColor * gtk_symbolic_color_ref (GtkSymbolicColor *color);
|
||||
void gtk_symbolic_color_unref (GtkSymbolicColor *color);
|
||||
|
||||
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_symbolic_color_resolve (GtkSymbolicColor *color,
|
||||
GtkStyleProperties *props,
|
||||
GdkRGBA *resolved_color);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@ -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"
|
||||
|
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user