gtkstylecontext.h 12.7 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
};

GType gtk_style_context_get_type (void) G_GNUC_CONST;

54
55
56
57
58
59
void gtk_style_context_add_provider_for_screen    (GdkScreen        *screen,
                                                   GtkStyleProvider *provider,
                                                   guint             priority);
void gtk_style_context_remove_provider_for_screen (GdkScreen        *screen,
                                                   GtkStyleProvider *provider);

Carlos Garnacho's avatar
Carlos Garnacho committed
60
61
62
63
64
65
66
void gtk_style_context_add_provider    (GtkStyleContext  *context,
                                        GtkStyleProvider *provider,
                                        guint             priority);

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

67
68
69
void gtk_style_context_save    (GtkStyleContext *context);
void gtk_style_context_restore (GtkStyleContext *context);

70
71
void gtk_style_context_get_property (GtkStyleContext *context,
                                     const gchar     *property,
72
                                     GtkStateFlags    state,
73
74
                                     GValue          *value);
void gtk_style_context_get_valist   (GtkStyleContext *context,
75
                                     GtkStateFlags    state,
76
77
                                     va_list          args);
void gtk_style_context_get          (GtkStyleContext *context,
78
                                     GtkStateFlags    state,
79
80
                                     ...) G_GNUC_NULL_TERMINATED;

81
82
83
84
85
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,
86
87
                                              GtkStateType     state,
                                              gdouble         *progress);
88

89
90
91
92
void          gtk_style_context_set_path     (GtkStyleContext *context,
                                              GtkWidgetPath   *path);
G_CONST_RETURN GtkWidgetPath * gtk_style_context_get_path (GtkStyleContext *context);

93
94
GList *  gtk_style_context_list_classes (GtkStyleContext *context);

95
96
97
98
99
100
101
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);

102
103
104
105
106
107
108
109
110
111
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);
112

113
114
115
void gtk_style_context_get_style_property (GtkStyleContext *context,
                                           const gchar     *property_name,
                                           GValue          *value);
116
117
118
119
void gtk_style_context_get_style_valist   (GtkStyleContext *context,
                                           va_list          args);
void gtk_style_context_get_style          (GtkStyleContext *context,
                                           ...);
120

121
122
123
GtkIconSet * gtk_style_context_lookup_icon_set (GtkStyleContext *context,
						const gchar     *stock_id);

124
125
126
127
void        gtk_style_context_set_screen (GtkStyleContext *context,
                                          GdkScreen       *screen);
GdkScreen * gtk_style_context_get_screen (GtkStyleContext *context);

128
129
130
131
void             gtk_style_context_set_direction (GtkStyleContext  *context,
                                                  GtkTextDirection  direction);
GtkTextDirection gtk_style_context_get_direction (GtkStyleContext  *context);

132
133
134
135
void             gtk_style_context_set_junction_sides (GtkStyleContext  *context,
						       GtkJunctionSides  sides);
GtkJunctionSides gtk_style_context_get_junction_sides (GtkStyleContext  *context);

136
137
138
gboolean gtk_style_context_lookup_color (GtkStyleContext *context,
                                         const gchar     *color_name,
                                         GdkColor        *color);
139

140
141
142
143
144
145
146
147
148
149
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);


150
151
152
153
/* Semi-private API */
const GValue * _gtk_style_context_peek_style_property (GtkStyleContext *context,
                                                       GType            widget_type,
                                                       GParamSpec      *pspec);
154
void           _gtk_style_context_invalidate_animation_areas (GtkStyleContext *context);
155
156
157
void           _gtk_style_context_coalesce_animation_areas   (GtkStyleContext *context,
                                                              gint             rel_x,
                                                              gint             rel_y);
158
159
160
161
162
163
164
165
166
167
168
169
170
171

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

173
void gtk_style_context_invalidate (GtkStyleContext *context);
174
void gtk_style_context_reset_widgets (GdkScreen *screen);
175

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

Carlos Garnacho's avatar
Carlos Garnacho committed
261
262
263
G_END_DECLS

#endif /* __GTK_STYLE_CONTEXT_H__ */