 a0bf0a0f70
			
		
	
	a0bf0a0f70
	
	
	
		
			
			No need to call the private versions anymore now that the real ones don't call into the theming engine.
		
			
				
	
	
		
			1210 lines
		
	
	
		
			38 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			1210 lines
		
	
	
		
			38 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* 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, see <http://www.gnu.org/licenses/>.
 | ||
|  */
 | ||
| 
 | ||
| #include "config.h"
 | ||
| 
 | ||
| #include <math.h>
 | ||
| #include <gtk/gtk.h>
 | ||
| 
 | ||
| #include <gtk/gtkstylecontext.h>
 | ||
| #include <gtk/gtkintl.h>
 | ||
| 
 | ||
| #include "gtkprivate.h"
 | ||
| #include "gtkmodulesprivate.h"
 | ||
| #include "gtkpango.h"
 | ||
| #include "gtkrenderprivate.h"
 | ||
| #include "gtkstylecontextprivate.h"
 | ||
| 
 | ||
| G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 | ||
| 
 | ||
| /**
 | ||
|  * SECTION:gtkthemingengine
 | ||
|  * @Short_description: Theming renderers
 | ||
|  * @Title: GtkThemingEngine
 | ||
|  * @See_also: #GtkStyleContext
 | ||
|  *
 | ||
|  * #GtkThemingEngine was the object used for rendering themed content
 | ||
|  * in GTK+ widgets. It used to allow overriding GTK+'s default
 | ||
|  * implementation of rendering functions by allowing engines to be
 | ||
|  * loaded as modules.
 | ||
|  *
 | ||
|  * #GtkThemingEngine has been deprecated in GTK+ 3.14 and will be
 | ||
|  * ignored for rendering. The advancements in CSS theming are good
 | ||
|  * enough to allow themers to achieve their goals without the need
 | ||
|  * to modify source code.
 | ||
|  */
 | ||
| 
 | ||
| enum {
 | ||
|   PROP_0,
 | ||
|   PROP_NAME
 | ||
| };
 | ||
| 
 | ||
| struct GtkThemingEnginePrivate
 | ||
| {
 | ||
|   GtkStyleContext *context;
 | ||
|   gchar *name;
 | ||
| };
 | ||
| 
 | ||
| static void gtk_theming_engine_finalize          (GObject      *object);
 | ||
| static void gtk_theming_engine_impl_set_property (GObject      *object,
 | ||
|                                                   guint         prop_id,
 | ||
|                                                   const GValue *value,
 | ||
|                                                   GParamSpec   *pspec);
 | ||
| static void gtk_theming_engine_impl_get_property (GObject      *object,
 | ||
|                                                   guint         prop_id,
 | ||
|                                                   GValue       *value,
 | ||
|                                                   GParamSpec   *pspec);
 | ||
| 
 | ||
| static void gtk_theming_engine_render_check (GtkThemingEngine *engine,
 | ||
|                                              cairo_t          *cr,
 | ||
|                                              gdouble           x,
 | ||
|                                              gdouble           y,
 | ||
|                                              gdouble           width,
 | ||
|                                              gdouble           height);
 | ||
| static void gtk_theming_engine_render_option (GtkThemingEngine *engine,
 | ||
|                                               cairo_t          *cr,
 | ||
|                                               gdouble           x,
 | ||
|                                               gdouble           y,
 | ||
|                                               gdouble           width,
 | ||
|                                               gdouble           height);
 | ||
| static void gtk_theming_engine_render_arrow  (GtkThemingEngine *engine,
 | ||
|                                               cairo_t          *cr,
 | ||
|                                               gdouble           angle,
 | ||
|                                               gdouble           x,
 | ||
|                                               gdouble           y,
 | ||
|                                               gdouble           size);
 | ||
| static void gtk_theming_engine_render_background (GtkThemingEngine *engine,
 | ||
|                                                   cairo_t          *cr,
 | ||
|                                                   gdouble           x,
 | ||
|                                                   gdouble           y,
 | ||
|                                                   gdouble           width,
 | ||
|                                                   gdouble           height);
 | ||
| static void gtk_theming_engine_render_frame  (GtkThemingEngine *engine,
 | ||
|                                               cairo_t          *cr,
 | ||
|                                               gdouble           x,
 | ||
|                                               gdouble           y,
 | ||
|                                               gdouble           width,
 | ||
|                                               gdouble           height);
 | ||
| static void gtk_theming_engine_render_expander (GtkThemingEngine *engine,
 | ||
|                                                 cairo_t          *cr,
 | ||
|                                                 gdouble           x,
 | ||
|                                                 gdouble           y,
 | ||
|                                                 gdouble           width,
 | ||
|                                                 gdouble           height);
 | ||
| static void gtk_theming_engine_render_focus    (GtkThemingEngine *engine,
 | ||
|                                                 cairo_t          *cr,
 | ||
|                                                 gdouble           x,
 | ||
|                                                 gdouble           y,
 | ||
|                                                 gdouble           width,
 | ||
|                                                 gdouble           height);
 | ||
| static void gtk_theming_engine_render_layout   (GtkThemingEngine *engine,
 | ||
|                                                 cairo_t          *cr,
 | ||
|                                                 gdouble           x,
 | ||
|                                                 gdouble           y,
 | ||
|                                                 PangoLayout      *layout);
 | ||
| static void gtk_theming_engine_render_line     (GtkThemingEngine *engine,
 | ||
|                                                 cairo_t          *cr,
 | ||
|                                                 gdouble           x0,
 | ||
|                                                 gdouble           y0,
 | ||
|                                                 gdouble           x1,
 | ||
|                                                 gdouble           y1);
 | ||
| static void gtk_theming_engine_render_slider   (GtkThemingEngine *engine,
 | ||
|                                                 cairo_t          *cr,
 | ||
|                                                 gdouble           x,
 | ||
|                                                 gdouble           y,
 | ||
|                                                 gdouble           width,
 | ||
|                                                 gdouble           height,
 | ||
|                                                 GtkOrientation    orientation);
 | ||
| static void gtk_theming_engine_render_frame_gap (GtkThemingEngine *engine,
 | ||
|                                                  cairo_t          *cr,
 | ||
|                                                  gdouble           x,
 | ||
|                                                  gdouble           y,
 | ||
|                                                  gdouble           width,
 | ||
|                                                  gdouble           height,
 | ||
|                                                  GtkPositionType   gap_side,
 | ||
|                                                  gdouble           xy0_gap,
 | ||
|                                                  gdouble           xy1_gap);
 | ||
| static void gtk_theming_engine_render_extension (GtkThemingEngine *engine,
 | ||
|                                                  cairo_t          *cr,
 | ||
|                                                  gdouble           x,
 | ||
|                                                  gdouble           y,
 | ||
|                                                  gdouble           width,
 | ||
|                                                  gdouble           height,
 | ||
|                                                  GtkPositionType   gap_side);
 | ||
| static void gtk_theming_engine_render_handle    (GtkThemingEngine *engine,
 | ||
|                                                  cairo_t          *cr,
 | ||
|                                                  gdouble           x,
 | ||
|                                                  gdouble           y,
 | ||
|                                                  gdouble           width,
 | ||
|                                                  gdouble           height);
 | ||
| static void gtk_theming_engine_render_activity  (GtkThemingEngine *engine,
 | ||
|                                                  cairo_t          *cr,
 | ||
|                                                  gdouble           x,
 | ||
|                                                  gdouble           y,
 | ||
|                                                  gdouble           width,
 | ||
|                                                  gdouble           height);
 | ||
| static GdkPixbuf * gtk_theming_engine_render_icon_pixbuf (GtkThemingEngine    *engine,
 | ||
|                                                           const GtkIconSource *source,
 | ||
|                                                           GtkIconSize          size);
 | ||
| static void gtk_theming_engine_render_icon (GtkThemingEngine *engine,
 | ||
|                                             cairo_t *cr,
 | ||
| 					    GdkPixbuf *pixbuf,
 | ||
|                                             gdouble x,
 | ||
|                                             gdouble y);
 | ||
| static void gtk_theming_engine_render_icon_surface (GtkThemingEngine *engine,
 | ||
| 						    cairo_t *cr,
 | ||
| 						    cairo_surface_t *surface,
 | ||
| 						    gdouble x,
 | ||
| 						    gdouble y);
 | ||
| 
 | ||
| G_DEFINE_TYPE_WITH_PRIVATE (GtkThemingEngine, gtk_theming_engine, G_TYPE_OBJECT)
 | ||
| 
 | ||
| typedef struct GtkThemingModule GtkThemingModule;
 | ||
| typedef struct GtkThemingModuleClass GtkThemingModuleClass;
 | ||
| 
 | ||
| struct GtkThemingModule
 | ||
| {
 | ||
|   GTypeModule parent_instance;
 | ||
|   GModule *module;
 | ||
|   gchar *name;
 | ||
| 
 | ||
|   void (*init) (GTypeModule *module);
 | ||
|   void (*exit) (void);
 | ||
|   GtkThemingEngine * (*create_engine) (void);
 | ||
| };
 | ||
| 
 | ||
| struct GtkThemingModuleClass
 | ||
| {
 | ||
|   GTypeModuleClass parent_class;
 | ||
| };
 | ||
| 
 | ||
| #define GTK_TYPE_THEMING_MODULE  (gtk_theming_module_get_type ())
 | ||
| #define GTK_THEMING_MODULE(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GTK_TYPE_THEMING_MODULE, GtkThemingModule))
 | ||
| #define GTK_IS_THEMING_MODULE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GTK_TYPE_THEMING_MODULE))
 | ||
| 
 | ||
| _GDK_EXTERN
 | ||
| GType gtk_theming_module_get_type (void);
 | ||
| 
 | ||
| G_DEFINE_TYPE (GtkThemingModule, gtk_theming_module, G_TYPE_TYPE_MODULE);
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_engine_class_init (GtkThemingEngineClass *klass)
 | ||
| {
 | ||
|   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 | ||
| 
 | ||
|   object_class->finalize = gtk_theming_engine_finalize;
 | ||
|   object_class->set_property = gtk_theming_engine_impl_set_property;
 | ||
|   object_class->get_property = gtk_theming_engine_impl_get_property;
 | ||
| 
 | ||
|   klass->render_icon = gtk_theming_engine_render_icon;
 | ||
|   klass->render_check = gtk_theming_engine_render_check;
 | ||
|   klass->render_option = gtk_theming_engine_render_option;
 | ||
|   klass->render_arrow = gtk_theming_engine_render_arrow;
 | ||
|   klass->render_background = gtk_theming_engine_render_background;
 | ||
|   klass->render_frame = gtk_theming_engine_render_frame;
 | ||
|   klass->render_expander = gtk_theming_engine_render_expander;
 | ||
|   klass->render_focus = gtk_theming_engine_render_focus;
 | ||
|   klass->render_layout = gtk_theming_engine_render_layout;
 | ||
|   klass->render_line = gtk_theming_engine_render_line;
 | ||
|   klass->render_slider = gtk_theming_engine_render_slider;
 | ||
|   klass->render_frame_gap = gtk_theming_engine_render_frame_gap;
 | ||
|   klass->render_extension = gtk_theming_engine_render_extension;
 | ||
|   klass->render_handle = gtk_theming_engine_render_handle;
 | ||
|   klass->render_activity = gtk_theming_engine_render_activity;
 | ||
|   klass->render_icon_pixbuf = gtk_theming_engine_render_icon_pixbuf;
 | ||
|   klass->render_icon_surface = gtk_theming_engine_render_icon_surface;
 | ||
| 
 | ||
|   /**
 | ||
|    * GtkThemingEngine:name:
 | ||
|    *
 | ||
|    * The theming engine name, this name will be used when registering
 | ||
|    * custom properties, for a theming engine named "Clearlooks" registering
 | ||
|    * a "glossy" custom property, it could be referenced in the CSS file as
 | ||
|    *
 | ||
|    * |[
 | ||
|    * -Clearlooks-glossy: true;
 | ||
|    * ]|
 | ||
|    *
 | ||
|    * Since: 3.0
 | ||
|    */
 | ||
|   g_object_class_install_property (object_class,
 | ||
| 				   PROP_NAME,
 | ||
| 				   g_param_spec_string ("name",
 | ||
|                                                         P_("Name"),
 | ||
|                                                         P_("Theming engine name"),
 | ||
|                                                         NULL,
 | ||
|                                                         G_PARAM_CONSTRUCT_ONLY | GTK_PARAM_READWRITE));
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_engine_init (GtkThemingEngine *engine)
 | ||
| {
 | ||
|   engine->priv = gtk_theming_engine_get_instance_private (engine);
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_engine_finalize (GObject *object)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   priv = GTK_THEMING_ENGINE (object)->priv;
 | ||
|   g_free (priv->name);
 | ||
| 
 | ||
|   G_OBJECT_CLASS (gtk_theming_engine_parent_class)->finalize (object);
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_engine_impl_set_property (GObject      *object,
 | ||
|                                       guint         prop_id,
 | ||
|                                       const GValue *value,
 | ||
|                                       GParamSpec   *pspec)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   priv = GTK_THEMING_ENGINE (object)->priv;
 | ||
| 
 | ||
|   switch (prop_id)
 | ||
|     {
 | ||
|     case PROP_NAME:
 | ||
|       g_free (priv->name);
 | ||
| 
 | ||
|       priv->name = g_value_dup_string (value);
 | ||
|       break;
 | ||
|     default:
 | ||
|       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 | ||
|       break;
 | ||
|     }
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_engine_impl_get_property (GObject    *object,
 | ||
|                                       guint       prop_id,
 | ||
|                                       GValue     *value,
 | ||
|                                       GParamSpec *pspec)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   priv = GTK_THEMING_ENGINE (object)->priv;
 | ||
| 
 | ||
|   switch (prop_id)
 | ||
|     {
 | ||
|     case PROP_NAME:
 | ||
|       g_value_set_string (value, priv->name);
 | ||
|       break;
 | ||
|     default:
 | ||
|       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 | ||
|       break;
 | ||
|     }
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_get_property:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  * @property: the property name
 | ||
|  * @state: state to retrieve the value for
 | ||
|  * @value: (out) (transfer full): return location for the property value,
 | ||
|  *         you must free this memory using g_value_unset() once you are
 | ||
|  *         done with it.
 | ||
|  *
 | ||
|  * Gets a property value as retrieved from the style settings that apply
 | ||
|  * to the currently rendered element.
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.14
 | ||
|  **/
 | ||
| void
 | ||
| gtk_theming_engine_get_property (GtkThemingEngine *engine,
 | ||
|                                  const gchar      *property,
 | ||
|                                  GtkStateFlags     state,
 | ||
|                                  GValue           *value)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
 | ||
|   g_return_if_fail (property != NULL);
 | ||
|   g_return_if_fail (value != NULL);
 | ||
| 
 | ||
|   priv = engine->priv;
 | ||
|   gtk_style_context_get_property (priv->context, property, state, value);
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_get_valist:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  * @state: state to retrieve values for
 | ||
|  * @args: va_list of property name/return location pairs, followed by %NULL
 | ||
|  *
 | ||
|  * Retrieves several style property values that apply to the currently
 | ||
|  * rendered element.
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.14
 | ||
|  **/
 | ||
| void
 | ||
| gtk_theming_engine_get_valist (GtkThemingEngine *engine,
 | ||
|                                GtkStateFlags     state,
 | ||
|                                va_list           args)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
 | ||
| 
 | ||
|   priv = engine->priv;
 | ||
|   gtk_style_context_get_valist (priv->context, state, args);
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_get:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  * @state: state to retrieve values for
 | ||
|  * @...: property name /return value pairs, followed by %NULL
 | ||
|  *
 | ||
|  * Retrieves several style property values that apply to the currently
 | ||
|  * rendered element.
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.14
 | ||
|  **/
 | ||
| void
 | ||
| gtk_theming_engine_get (GtkThemingEngine *engine,
 | ||
|                         GtkStateFlags     state,
 | ||
|                         ...)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
|   va_list args;
 | ||
| 
 | ||
|   g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
 | ||
| 
 | ||
|   priv = engine->priv;
 | ||
| 
 | ||
|   va_start (args, state);
 | ||
|   gtk_style_context_get_valist (priv->context, state, args);
 | ||
|   va_end (args);
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_get_style_property:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  * @property_name: the name of the widget style property
 | ||
|  * @value: (out): Return location for the property value, free with
 | ||
|  *         g_value_unset() after use.
 | ||
|  *
 | ||
|  * Gets the value for a widget style property.
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.14
 | ||
|  **/
 | ||
| void
 | ||
| gtk_theming_engine_get_style_property (GtkThemingEngine *engine,
 | ||
|                                        const gchar      *property_name,
 | ||
|                                        GValue           *value)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
 | ||
|   g_return_if_fail (property_name != NULL);
 | ||
| 
 | ||
|   priv = engine->priv;
 | ||
|   gtk_style_context_get_style_property (priv->context, property_name, value);
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_get_style_valist:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  * @args: va_list of property name/return location pairs, followed by %NULL
 | ||
|  *
 | ||
|  * Retrieves several widget style properties from @engine according to the
 | ||
|  * currently rendered content’s style.
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.14
 | ||
|  **/
 | ||
| void
 | ||
| gtk_theming_engine_get_style_valist (GtkThemingEngine *engine,
 | ||
|                                      va_list           args)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
 | ||
| 
 | ||
|   priv = engine->priv;
 | ||
|   gtk_style_context_get_style_valist (priv->context, args);
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_get_style:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  * @...: property name /return value pairs, followed by %NULL
 | ||
|  *
 | ||
|  * Retrieves several widget style properties from @engine according
 | ||
|  * to the currently rendered content’s style.
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.14
 | ||
|  **/
 | ||
| void
 | ||
| gtk_theming_engine_get_style (GtkThemingEngine *engine,
 | ||
|                               ...)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
|   va_list args;
 | ||
| 
 | ||
|   g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
 | ||
| 
 | ||
|   priv = engine->priv;
 | ||
| 
 | ||
|   va_start (args, engine);
 | ||
|   gtk_style_context_get_style_valist (priv->context, args);
 | ||
|   va_end (args);
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_lookup_color:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  * @color_name: color name to lookup
 | ||
|  * @color: (out): Return location for the looked up color
 | ||
|  *
 | ||
|  * Looks up and resolves a color name in the current style’s color map.
 | ||
|  *
 | ||
|  * Returns: %TRUE if @color_name was found and resolved, %FALSE otherwise
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.14
 | ||
|  **/
 | ||
| gboolean
 | ||
| gtk_theming_engine_lookup_color (GtkThemingEngine *engine,
 | ||
|                                  const gchar      *color_name,
 | ||
|                                  GdkRGBA          *color)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), FALSE);
 | ||
|   g_return_val_if_fail (color_name != NULL, FALSE);
 | ||
| 
 | ||
|   priv = engine->priv;
 | ||
|   return gtk_style_context_lookup_color (priv->context, color_name, color);
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_get_state:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  *
 | ||
|  * returns the state used when rendering.
 | ||
|  *
 | ||
|  * Returns: the state flags
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.14
 | ||
|  **/
 | ||
| GtkStateFlags
 | ||
| gtk_theming_engine_get_state (GtkThemingEngine *engine)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), 0);
 | ||
| 
 | ||
|   priv = engine->priv;
 | ||
|   return gtk_style_context_get_state (priv->context);
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_state_is_running:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  * @state: a widget state
 | ||
|  * @progress: (out): return location for the transition progress
 | ||
|  *
 | ||
|  * Returns %TRUE if there is a transition animation running for the
 | ||
|  * current region (see gtk_style_context_push_animatable_region()).
 | ||
|  *
 | ||
|  * If @progress is not %NULL, the animation progress will be returned
 | ||
|  * there, 0.0 means the state is closest to being %FALSE, while 1.0 means
 | ||
|  * it’s closest to being %TRUE. This means transition animations will
 | ||
|  * run from 0 to 1 when @state is being set to %TRUE and from 1 to 0 when
 | ||
|  * it’s being set to %FALSE.
 | ||
|  *
 | ||
|  * Returns: %TRUE if there is a running transition animation for @state.
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.6: Always returns %FALSE
 | ||
|  **/
 | ||
| gboolean
 | ||
| gtk_theming_engine_state_is_running (GtkThemingEngine *engine,
 | ||
|                                      GtkStateType      state,
 | ||
|                                      gdouble          *progress)
 | ||
| {
 | ||
|   g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), FALSE);
 | ||
| 
 | ||
|   return FALSE;
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_get_path:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  *
 | ||
|  * Returns the widget path used for style matching.
 | ||
|  *
 | ||
|  * Returns: (transfer none): A #GtkWidgetPath
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.14
 | ||
|  **/
 | ||
| const GtkWidgetPath *
 | ||
| gtk_theming_engine_get_path (GtkThemingEngine *engine)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), NULL);
 | ||
| 
 | ||
|   priv = engine->priv;
 | ||
|   return gtk_style_context_get_path (priv->context);
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_has_class:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  * @style_class: class name to look up
 | ||
|  *
 | ||
|  * Returns %TRUE if the currently rendered contents have
 | ||
|  * defined the given class name.
 | ||
|  *
 | ||
|  * Returns: %TRUE if @engine has @class_name defined
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.14
 | ||
|  **/
 | ||
| gboolean
 | ||
| gtk_theming_engine_has_class (GtkThemingEngine *engine,
 | ||
|                               const gchar      *style_class)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), FALSE);
 | ||
| 
 | ||
|   priv = engine->priv;
 | ||
|   return gtk_style_context_has_class (priv->context, style_class);
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_has_region:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  * @style_region: a region name
 | ||
|  * @flags: (out) (allow-none): return location for region flags
 | ||
|  *
 | ||
|  * Returns %TRUE if the currently rendered contents have the
 | ||
|  * region defined. If @flags_return is not %NULL, it is set
 | ||
|  * to the flags affecting the region.
 | ||
|  *
 | ||
|  * Returns: %TRUE if region is defined
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.14
 | ||
|  **/
 | ||
| gboolean
 | ||
| gtk_theming_engine_has_region (GtkThemingEngine *engine,
 | ||
|                                const gchar      *style_region,
 | ||
|                                GtkRegionFlags   *flags)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   if (flags)
 | ||
|     *flags = 0;
 | ||
| 
 | ||
|   g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), FALSE);
 | ||
| 
 | ||
|   priv = engine->priv;
 | ||
| G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 | ||
|   return gtk_style_context_has_region (priv->context, style_region, flags);
 | ||
| G_GNUC_END_IGNORE_DEPRECATIONS
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_get_direction:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  *
 | ||
|  * Returns the widget direction used for rendering.
 | ||
|  *
 | ||
|  * Returns: the widget direction
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.8: Use gtk_theming_engine_get_state() and
 | ||
|  *   check for #GTK_STATE_FLAG_DIR_LTR and
 | ||
|  *   #GTK_STATE_FLAG_DIR_RTL instead.
 | ||
|  **/
 | ||
| GtkTextDirection
 | ||
| gtk_theming_engine_get_direction (GtkThemingEngine *engine)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), GTK_TEXT_DIR_LTR);
 | ||
| 
 | ||
|   priv = engine->priv;
 | ||
|   G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
 | ||
|   return gtk_style_context_get_direction (priv->context);
 | ||
|   G_GNUC_END_IGNORE_DEPRECATIONS;
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_get_junction_sides:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  *
 | ||
|  * Returns the widget direction used for rendering.
 | ||
|  *
 | ||
|  * Returns: the widget direction
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.14
 | ||
|  **/
 | ||
| GtkJunctionSides
 | ||
| gtk_theming_engine_get_junction_sides (GtkThemingEngine *engine)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), 0);
 | ||
| 
 | ||
|   priv = engine->priv;
 | ||
|   return gtk_style_context_get_junction_sides (priv->context);
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_get_color:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  * @state: state to retrieve the color for
 | ||
|  * @color: (out): return value for the foreground color
 | ||
|  *
 | ||
|  * Gets the foreground color for a given state.
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.14
 | ||
|  **/
 | ||
| void
 | ||
| gtk_theming_engine_get_color (GtkThemingEngine *engine,
 | ||
|                               GtkStateFlags     state,
 | ||
|                               GdkRGBA          *color)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
 | ||
| 
 | ||
|   priv = engine->priv;
 | ||
|   gtk_style_context_get_color (priv->context, state, color);
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_get_background_color:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  * @state: state to retrieve the color for
 | ||
|  * @color: (out): return value for the background color
 | ||
|  *
 | ||
|  * Gets the background color for a given state.
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.14
 | ||
|  **/
 | ||
| void
 | ||
| gtk_theming_engine_get_background_color (GtkThemingEngine *engine,
 | ||
|                                          GtkStateFlags     state,
 | ||
|                                          GdkRGBA          *color)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
 | ||
| 
 | ||
|   priv = engine->priv;
 | ||
|   gtk_style_context_get_background_color (priv->context, state, color);
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_get_border_color:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  * @state: state to retrieve the color for
 | ||
|  * @color: (out): return value for the border color
 | ||
|  *
 | ||
|  * Gets the border color for a given state.
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.14
 | ||
|  **/
 | ||
| void
 | ||
| gtk_theming_engine_get_border_color (GtkThemingEngine *engine,
 | ||
|                                      GtkStateFlags     state,
 | ||
|                                      GdkRGBA          *color)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
 | ||
| 
 | ||
|   priv = engine->priv;
 | ||
|   gtk_style_context_get_border_color (priv->context, state, color);
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_get_border:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  * @state: state to retrieve the border for
 | ||
|  * @border: (out): return value for the border settings
 | ||
|  *
 | ||
|  * Gets the border for a given state as a #GtkBorder.
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.14
 | ||
|  **/
 | ||
| void
 | ||
| gtk_theming_engine_get_border (GtkThemingEngine *engine,
 | ||
|                                GtkStateFlags     state,
 | ||
|                                GtkBorder        *border)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
 | ||
| 
 | ||
|   priv = engine->priv;
 | ||
|   gtk_style_context_get_border (priv->context, state, border);
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_get_padding:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  * @state: state to retrieve the padding for
 | ||
|  * @padding: (out): return value for the padding settings
 | ||
|  *
 | ||
|  * Gets the padding for a given state as a #GtkBorder.
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.14
 | ||
|  **/
 | ||
| void
 | ||
| gtk_theming_engine_get_padding (GtkThemingEngine *engine,
 | ||
|                                 GtkStateFlags     state,
 | ||
|                                 GtkBorder        *padding)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
 | ||
| 
 | ||
|   priv = engine->priv;
 | ||
|   gtk_style_context_get_padding (priv->context, state, padding);
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_get_margin:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  * @state: state to retrieve the border for
 | ||
|  * @margin: (out): return value for the margin settings
 | ||
|  *
 | ||
|  * Gets the margin for a given state as a #GtkBorder.
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.14
 | ||
|  **/
 | ||
| void
 | ||
| gtk_theming_engine_get_margin (GtkThemingEngine *engine,
 | ||
|                                GtkStateFlags     state,
 | ||
|                                GtkBorder        *margin)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   g_return_if_fail (GTK_IS_THEMING_ENGINE (engine));
 | ||
| 
 | ||
|   priv = engine->priv;
 | ||
|   gtk_style_context_get_margin (priv->context, state, margin);
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_get_font:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  * @state: state to retrieve the font for
 | ||
|  *
 | ||
|  * Returns the font description for a given state.
 | ||
|  *
 | ||
|  * Returns: (transfer none): the #PangoFontDescription for the given
 | ||
|  *          state. This object is owned by GTK+ and should not be
 | ||
|  *          freed.
 | ||
|  *
 | ||
|  * Since: 3.0
 | ||
|  *
 | ||
|  * Deprecated: 3.8: Use gtk_theming_engine_get()
 | ||
|  **/
 | ||
| const PangoFontDescription *
 | ||
| gtk_theming_engine_get_font (GtkThemingEngine *engine,
 | ||
|                              GtkStateFlags     state)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), NULL);
 | ||
| 
 | ||
|   G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
 | ||
|   priv = engine->priv;
 | ||
|   return gtk_style_context_get_font (priv->context, state);
 | ||
|   G_GNUC_END_IGNORE_DEPRECATIONS;
 | ||
| }
 | ||
| 
 | ||
| /* GtkThemingModule */
 | ||
| 
 | ||
| static gboolean
 | ||
| gtk_theming_module_load (GTypeModule *type_module)
 | ||
| {
 | ||
|   GtkThemingModule *theming_module;
 | ||
|   GModule *module;
 | ||
|   gchar *name, *module_path;
 | ||
| 
 | ||
|   theming_module = GTK_THEMING_MODULE (type_module);
 | ||
|   name = theming_module->name;
 | ||
|   module_path = _gtk_find_module (name, "theming-engines");
 | ||
| 
 | ||
|   if (!module_path)
 | ||
|     return FALSE;
 | ||
| 
 | ||
|   module = g_module_open (module_path, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
 | ||
|   g_free (module_path);
 | ||
| 
 | ||
|   if (!module)
 | ||
|     return FALSE;
 | ||
| 
 | ||
|   if (!g_module_symbol (module, "theme_init",
 | ||
|                         (gpointer *) &theming_module->init) ||
 | ||
|       !g_module_symbol (module, "theme_exit",
 | ||
|                         (gpointer *) &theming_module->exit) ||
 | ||
|       !g_module_symbol (module, "create_engine",
 | ||
|                         (gpointer *) &theming_module->create_engine))
 | ||
|     {
 | ||
|       g_module_close (module);
 | ||
| 
 | ||
|       return FALSE;
 | ||
|     }
 | ||
| 
 | ||
|   theming_module->module = module;
 | ||
| 
 | ||
|   theming_module->init (G_TYPE_MODULE (theming_module));
 | ||
| 
 | ||
|   return TRUE;
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_module_unload (GTypeModule *type_module)
 | ||
| {
 | ||
|   GtkThemingModule *theming_module;
 | ||
| 
 | ||
|   theming_module = GTK_THEMING_MODULE (type_module);
 | ||
| 
 | ||
|   theming_module->exit ();
 | ||
| 
 | ||
|   g_module_close (theming_module->module);
 | ||
| 
 | ||
|   theming_module->module = NULL;
 | ||
|   theming_module->init = NULL;
 | ||
|   theming_module->exit = NULL;
 | ||
|   theming_module->create_engine = NULL;
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_module_class_init (GtkThemingModuleClass *klass)
 | ||
| {
 | ||
|   GTypeModuleClass *module_class = G_TYPE_MODULE_CLASS (klass);
 | ||
| 
 | ||
|   module_class->load = gtk_theming_module_load;
 | ||
|   module_class->unload = gtk_theming_module_unload;
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_module_init (GtkThemingModule *module)
 | ||
| {
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_load:
 | ||
|  * @name: Theme engine name to load
 | ||
|  *
 | ||
|  * Loads and initializes a theming engine module from the
 | ||
|  * standard directories.
 | ||
|  *
 | ||
|  * Returns: (transfer none): A theming engine, or %NULL if
 | ||
|  * the engine @name doesn’t exist.
 | ||
|  *
 | ||
|  * Deprecated: 3.14
 | ||
|  **/
 | ||
| GtkThemingEngine *
 | ||
| gtk_theming_engine_load (const gchar *name)
 | ||
| {
 | ||
|   static GHashTable *engines = NULL;
 | ||
|   static GtkThemingEngine *default_engine;
 | ||
|   GtkThemingEngine *engine = NULL;
 | ||
| 
 | ||
|   if (name)
 | ||
|     {
 | ||
|       if (!engines)
 | ||
|         engines = g_hash_table_new (g_str_hash, g_str_equal);
 | ||
| 
 | ||
|       engine = g_hash_table_lookup (engines, name);
 | ||
| 
 | ||
|       if (!engine)
 | ||
|         {
 | ||
|           GtkThemingModule *module;
 | ||
| 
 | ||
|           module = g_object_new (GTK_TYPE_THEMING_MODULE, NULL);
 | ||
|           g_type_module_set_name (G_TYPE_MODULE (module), name);
 | ||
|           module->name = g_strdup (name);
 | ||
| 
 | ||
|           if (module && g_type_module_use (G_TYPE_MODULE (module)))
 | ||
|             {
 | ||
|               engine = (module->create_engine) ();
 | ||
| 
 | ||
|               if (engine)
 | ||
|                 g_hash_table_insert (engines, module->name, engine);
 | ||
|             }
 | ||
|         }
 | ||
|     }
 | ||
|   else
 | ||
|     {
 | ||
|       if (G_UNLIKELY (!default_engine))
 | ||
|         default_engine = g_object_new (GTK_TYPE_THEMING_ENGINE, NULL);
 | ||
| 
 | ||
|       engine = default_engine;
 | ||
|     }
 | ||
| 
 | ||
|   return engine;
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * gtk_theming_engine_get_screen:
 | ||
|  * @engine: a #GtkThemingEngine
 | ||
|  *
 | ||
|  * Returns the #GdkScreen to which @engine currently rendering to.
 | ||
|  *
 | ||
|  * Returns: (transfer none): a #GdkScreen, or %NULL.
 | ||
|  *
 | ||
|  * Deprecated: 3.14
 | ||
|  **/
 | ||
| GdkScreen *
 | ||
| gtk_theming_engine_get_screen (GtkThemingEngine *engine)
 | ||
| {
 | ||
|   GtkThemingEnginePrivate *priv;
 | ||
| 
 | ||
|   g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), NULL);
 | ||
| 
 | ||
|   priv = engine->priv;
 | ||
|   return gtk_style_context_get_screen (priv->context);
 | ||
| }
 | ||
| 
 | ||
| /* Paint method implementations */
 | ||
| static void
 | ||
| gtk_theming_engine_render_check (GtkThemingEngine *engine,
 | ||
|                                  cairo_t          *cr,
 | ||
|                                  gdouble           x,
 | ||
|                                  gdouble           y,
 | ||
|                                  gdouble           width,
 | ||
|                                  gdouble           height)
 | ||
| {
 | ||
|   gtk_render_check (engine->priv->context, cr, x, y, width, height);
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_engine_render_option (GtkThemingEngine *engine,
 | ||
|                                   cairo_t          *cr,
 | ||
|                                   gdouble           x,
 | ||
|                                   gdouble           y,
 | ||
|                                   gdouble           width,
 | ||
|                                   gdouble           height)
 | ||
| {
 | ||
|   gtk_render_option (engine->priv->context, cr, x, y, width, height);
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_engine_render_arrow (GtkThemingEngine *engine,
 | ||
|                                  cairo_t          *cr,
 | ||
|                                  gdouble           angle,
 | ||
|                                  gdouble           x,
 | ||
|                                  gdouble           y,
 | ||
|                                  gdouble           size)
 | ||
| {
 | ||
|   gtk_render_arrow (engine->priv->context, cr, angle, x, y, size);
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_engine_render_background (GtkThemingEngine *engine,
 | ||
|                                       cairo_t          *cr,
 | ||
|                                       gdouble           x,
 | ||
|                                       gdouble           y,
 | ||
|                                       gdouble           width,
 | ||
|                                       gdouble           height)
 | ||
| {
 | ||
|   gtk_render_background (engine->priv->context, cr, x, y, width, height);
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_engine_render_frame (GtkThemingEngine *engine,
 | ||
|                                  cairo_t          *cr,
 | ||
|                                  gdouble           x,
 | ||
|                                  gdouble           y,
 | ||
|                                  gdouble           width,
 | ||
|                                  gdouble           height)
 | ||
| {
 | ||
|   gtk_render_frame (engine->priv->context, cr, x, y, width, height);
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_engine_render_expander (GtkThemingEngine *engine,
 | ||
|                                     cairo_t          *cr,
 | ||
|                                     gdouble           x,
 | ||
|                                     gdouble           y,
 | ||
|                                     gdouble           width,
 | ||
|                                     gdouble           height)
 | ||
| {
 | ||
|   gtk_render_expander (engine->priv->context, cr, x, y, width, height);
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_engine_render_focus (GtkThemingEngine *engine,
 | ||
|                                  cairo_t          *cr,
 | ||
|                                  gdouble           x,
 | ||
|                                  gdouble           y,
 | ||
|                                  gdouble           width,
 | ||
|                                  gdouble           height)
 | ||
| {
 | ||
|   gtk_render_focus (engine->priv->context, cr, x, y, width, height);
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_engine_render_line (GtkThemingEngine *engine,
 | ||
|                                 cairo_t          *cr,
 | ||
|                                 gdouble           x0,
 | ||
|                                 gdouble           y0,
 | ||
|                                 gdouble           x1,
 | ||
|                                 gdouble           y1)
 | ||
| {
 | ||
|   gtk_render_line (engine->priv->context, cr, x0, y0, x1, y1);
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_engine_render_layout (GtkThemingEngine *engine,
 | ||
|                                   cairo_t          *cr,
 | ||
|                                   gdouble           x,
 | ||
|                                   gdouble           y,
 | ||
|                                   PangoLayout      *layout)
 | ||
| {
 | ||
|   gtk_render_layout (engine->priv->context, cr, x, y, layout);
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_engine_render_slider (GtkThemingEngine *engine,
 | ||
|                                   cairo_t          *cr,
 | ||
|                                   gdouble           x,
 | ||
|                                   gdouble           y,
 | ||
|                                   gdouble           width,
 | ||
|                                   gdouble           height,
 | ||
|                                   GtkOrientation    orientation)
 | ||
| {
 | ||
|   gtk_render_slider (engine->priv->context, cr, x, y, width, height, orientation);
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_engine_render_frame_gap (GtkThemingEngine *engine,
 | ||
|                                      cairo_t          *cr,
 | ||
|                                      gdouble           x,
 | ||
|                                      gdouble           y,
 | ||
|                                      gdouble           width,
 | ||
|                                      gdouble           height,
 | ||
|                                      GtkPositionType   gap_side,
 | ||
|                                      gdouble           xy0_gap,
 | ||
|                                      gdouble           xy1_gap)
 | ||
| {
 | ||
|   gtk_render_frame_gap (engine->priv->context, cr, x, y, width, height, gap_side, xy0_gap, xy1_gap);
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_engine_render_extension (GtkThemingEngine *engine,
 | ||
|                                      cairo_t          *cr,
 | ||
|                                      gdouble           x,
 | ||
|                                      gdouble           y,
 | ||
|                                      gdouble           width,
 | ||
|                                      gdouble           height,
 | ||
|                                      GtkPositionType   gap_side)
 | ||
| {
 | ||
|   gtk_render_extension (engine->priv->context, cr, x, y, width, height, gap_side);
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_engine_render_handle (GtkThemingEngine *engine,
 | ||
|                                   cairo_t          *cr,
 | ||
|                                   gdouble           x,
 | ||
|                                   gdouble           y,
 | ||
|                                   gdouble           width,
 | ||
|                                   gdouble           height)
 | ||
| {
 | ||
|   gtk_render_handle (engine->priv->context, cr, x, y, width, height);
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_engine_render_activity (GtkThemingEngine *engine,
 | ||
|                                     cairo_t          *cr,
 | ||
|                                     gdouble           x,
 | ||
|                                     gdouble           y,
 | ||
|                                     gdouble           width,
 | ||
|                                     gdouble           height)
 | ||
| {
 | ||
|   gtk_render_activity (engine->priv->context, cr, x, y, width, height);
 | ||
| }
 | ||
| 
 | ||
| static GdkPixbuf *
 | ||
| gtk_theming_engine_render_icon_pixbuf (GtkThemingEngine    *engine,
 | ||
|                                        const GtkIconSource *source,
 | ||
|                                        GtkIconSize          size)
 | ||
| {
 | ||
|   return gtk_render_icon_pixbuf (engine->priv->context, source, size);
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_engine_render_icon (GtkThemingEngine *engine,
 | ||
|                                 cairo_t *cr,
 | ||
| 				GdkPixbuf *pixbuf,
 | ||
|                                 gdouble x,
 | ||
|                                 gdouble y)
 | ||
| {
 | ||
|   gtk_render_icon (engine->priv->context, cr, pixbuf, x, y);
 | ||
| }
 | ||
| 
 | ||
| static void
 | ||
| gtk_theming_engine_render_icon_surface (GtkThemingEngine *engine,
 | ||
| 					cairo_t *cr,
 | ||
| 					cairo_surface_t *surface,
 | ||
| 					gdouble x,
 | ||
| 					gdouble y)
 | ||
| {
 | ||
|   gtk_render_icon_surface (engine->priv->context, cr, surface, x, y);
 | ||
| }
 | ||
| 
 | ||
| G_GNUC_END_IGNORE_DEPRECATIONS
 |