gtkstylecontext.h 12.1 KB
Newer Older
Carlos Garnacho's avatar
Carlos Garnacho committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
/* 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_STYLE_CONTEXT_H__
#define __GTK_STYLE_CONTEXT_H__

#include <glib-object.h>
24 25
#include <gtk/gtkstyleprovider.h>
#include <gtk/gtkwidgetpath.h>
Carlos Garnacho's avatar
Carlos Garnacho committed
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41

G_BEGIN_DECLS

#define GTK_TYPE_STYLE_CONTEXT         (gtk_style_context_get_type ())
#define GTK_STYLE_CONTEXT(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GTK_TYPE_STYLE_CONTEXT, GtkStyleContext))
#define GTK_STYLE_CONTEXT_CLASS(c)     (G_TYPE_CHECK_CLASS_CAST    ((c), GTK_TYPE_STYLE_CONTEXT, GtkStyleContextClass))
#define GTK_IS_STYLE_CONTEXT(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GTK_TYPE_STYLE_CONTEXT))
#define GTK_IS_STYLE_CONTEXT_CLASS(c)  (G_TYPE_CHECK_CLASS_TYPE    ((c), GTK_TYPE_STYLE_CONTEXT))
#define GTK_STYLE_CONTEXT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS  ((o), GTK_TYPE_STYLE_CONTEXT, GtkStyleContextClass))

typedef struct GtkStyleContext GtkStyleContext;
typedef struct GtkStyleContextClass GtkStyleContextClass;

struct GtkStyleContext
{
  GObject parent_object;
42
  gpointer priv;
Carlos Garnacho's avatar
Carlos Garnacho committed
43 44 45 46 47
};

struct GtkStyleContextClass
{
  GObjectClass parent_class;
48 49

  void (* changed) (GtkStyleContext *context);
Carlos Garnacho's avatar
Carlos Garnacho committed
50 51 52 53 54 55 56 57 58 59 60
};

GType gtk_style_context_get_type (void) G_GNUC_CONST;

void gtk_style_context_add_provider    (GtkStyleContext  *context,
                                        GtkStyleProvider *provider,
                                        guint             priority);

void gtk_style_context_remove_provider (GtkStyleContext  *context,
                                        GtkStyleProvider *provider);

61 62 63
void gtk_style_context_save    (GtkStyleContext *context);
void gtk_style_context_restore (GtkStyleContext *context);

64 65
void gtk_style_context_get_property (GtkStyleContext *context,
                                     const gchar     *property,
66
                                     GtkStateFlags    state,
67 68
                                     GValue          *value);
void gtk_style_context_get_valist   (GtkStyleContext *context,
69
                                     GtkStateFlags    state,
70 71
                                     va_list          args);
void gtk_style_context_get          (GtkStyleContext *context,
72
                                     GtkStateFlags    state,
73 74
                                     ...) G_GNUC_NULL_TERMINATED;

75 76 77 78 79
void          gtk_style_context_set_state    (GtkStyleContext *context,
                                              GtkStateFlags    flags);
GtkStateFlags gtk_style_context_get_state    (GtkStyleContext *context);

gboolean      gtk_style_context_is_state_set (GtkStyleContext *context,
80 81
                                              GtkStateType     state,
                                              gdouble         *progress);
82

83 84 85 86
void          gtk_style_context_set_path     (GtkStyleContext *context,
                                              GtkWidgetPath   *path);
G_CONST_RETURN GtkWidgetPath * gtk_style_context_get_path (GtkStyleContext *context);

87 88
GList *  gtk_style_context_list_classes (GtkStyleContext *context);

89 90 91 92 93 94 95
void     gtk_style_context_set_class   (GtkStyleContext *context,
                                        const gchar     *class_name);
void     gtk_style_context_unset_class (GtkStyleContext *context,
                                        const gchar     *class_name);
gboolean gtk_style_context_has_class   (GtkStyleContext *context,
                                        const gchar     *class_name);

96 97 98 99 100 101 102 103 104 105
GList *  gtk_style_context_list_regions (GtkStyleContext *context);

void     gtk_style_context_set_region   (GtkStyleContext    *context,
                                         const gchar        *region_name,
                                         GtkRegionFlags      flags);
void     gtk_style_context_unset_region (GtkStyleContext    *context,
                                         const gchar        *region_name);
gboolean gtk_style_context_has_region   (GtkStyleContext    *context,
                                         const gchar        *region_name,
                                         GtkRegionFlags     *flags_return);
106

107 108 109
void gtk_style_context_get_style_property (GtkStyleContext *context,
                                           const gchar     *property_name,
                                           GValue          *value);
110 111 112 113
void gtk_style_context_get_style_valist   (GtkStyleContext *context,
                                           va_list          args);
void gtk_style_context_get_style          (GtkStyleContext *context,
                                           ...);
114

115 116 117
GtkIconSet * gtk_style_context_lookup_icon_set (GtkStyleContext *context,
						const gchar     *stock_id);

118 119 120 121
void        gtk_style_context_set_screen (GtkStyleContext *context,
                                          GdkScreen       *screen);
GdkScreen * gtk_style_context_get_screen (GtkStyleContext *context);

122 123 124 125
void             gtk_style_context_set_direction (GtkStyleContext  *context,
                                                  GtkTextDirection  direction);
GtkTextDirection gtk_style_context_get_direction (GtkStyleContext  *context);

126 127 128 129
void             gtk_style_context_set_junction_sides (GtkStyleContext  *context,
						       GtkJunctionSides  sides);
GtkJunctionSides gtk_style_context_get_junction_sides (GtkStyleContext  *context);

130 131 132
gboolean gtk_style_context_lookup_color (GtkStyleContext *context,
                                         const gchar     *color_name,
                                         GdkColor        *color);
133

134 135 136 137 138 139 140 141 142 143
void  gtk_style_context_notify_state_change (GtkStyleContext *context,
                                             GdkWindow       *window,
                                             gpointer         region_id,
                                             GtkStateType     state,
                                             gboolean         state_value);
void gtk_style_context_push_animatable_region (GtkStyleContext *context,
                                               gpointer         region_id);
void gtk_style_context_pop_animatable_region  (GtkStyleContext *context);


144 145 146 147
/* Semi-private API */
const GValue * _gtk_style_context_peek_style_property (GtkStyleContext *context,
                                                       GType            widget_type,
                                                       GParamSpec      *pspec);
148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
void           _gtk_style_context_invalidate_animation_areas (GtkStyleContext *context);
void           _gtk_style_context_coalesce_animation_areas   (GtkStyleContext *context);

/* 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);
164

165 166 167
void gtk_style_context_invalidate (GtkStyleContext *context);


168 169 170 171 172 173 174
/* Paint methods */
void gtk_render_check (GtkStyleContext *context,
                       cairo_t         *cr,
                       gdouble          x,
                       gdouble          y,
                       gdouble          width,
                       gdouble          height);
175 176 177 178 179 180
void gtk_render_option (GtkStyleContext *context,
                        cairo_t         *cr,
                        gdouble          x,
                        gdouble          y,
                        gdouble          width,
                        gdouble          height);
181 182 183 184 185 186
void gtk_render_arrow  (GtkStyleContext *context,
                        cairo_t         *cr,
                        gdouble          angle,
                        gdouble          x,
                        gdouble          y,
                        gdouble          size);
187 188 189 190 191 192
void gtk_render_background (GtkStyleContext *context,
                            cairo_t         *cr,
                            gdouble          x,
                            gdouble          y,
                            gdouble          width,
                            gdouble          height);
193 194 195 196 197 198
void gtk_render_frame  (GtkStyleContext *context,
                        cairo_t         *cr,
                        gdouble          x,
                        gdouble          y,
                        gdouble          width,
                        gdouble          height);
199 200 201 202 203 204
void gtk_render_expander (GtkStyleContext *context,
                          cairo_t         *cr,
                          gdouble          x,
                          gdouble          y,
                          gdouble          width,
                          gdouble          height);
205 206 207 208 209 210
void gtk_render_focus    (GtkStyleContext *context,
                          cairo_t         *cr,
                          gdouble          x,
                          gdouble          y,
                          gdouble          width,
                          gdouble          height);
211 212 213 214 215
void gtk_render_layout   (GtkStyleContext *context,
                          cairo_t         *cr,
                          gdouble          x,
                          gdouble          y,
                          PangoLayout     *layout);
216 217 218 219 220 221
void gtk_render_line     (GtkStyleContext *context,
                          cairo_t         *cr,
                          gdouble          x0,
                          gdouble          y0,
                          gdouble          x1,
                          gdouble          y1);
222 223 224 225 226 227 228
void gtk_render_slider   (GtkStyleContext *context,
                          cairo_t         *cr,
                          gdouble          x,
                          gdouble          y,
                          gdouble          width,
                          gdouble          height,
                          GtkOrientation   orientation);
229 230 231 232 233 234 235 236 237
void gtk_render_frame_gap (GtkStyleContext *context,
                           cairo_t         *cr,
                           gdouble          x,
                           gdouble          y,
                           gdouble          width,
                           gdouble          height,
                           GtkPositionType  gap_side,
                           gdouble          xy0_gap,
                           gdouble          xy1_gap);
238 239 240 241 242 243 244
void gtk_render_extension (GtkStyleContext *context,
                           cairo_t         *cr,
                           gdouble          x,
                           gdouble          y,
                           gdouble          width,
                           gdouble          height,
                           GtkPositionType  gap_side);
245 246 247 248 249 250 251
void gtk_render_handle    (GtkStyleContext *context,
                           cairo_t         *cr,
                           gdouble          x,
                           gdouble          y,
                           gdouble          width,
                           gdouble          height,
                           GtkOrientation   orientation);
252

Carlos Garnacho's avatar
Carlos Garnacho committed
253 254 255
G_END_DECLS

#endif /* __GTK_STYLE_CONTEXT_H__ */