gtkstylecontext.h 13 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

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))

36
37
typedef struct GtkStyleContext GtkStyleContext;
typedef struct GtkStyleContextClass GtkStyleContextClass;
Carlos Garnacho's avatar
Carlos Garnacho committed
38

39
struct GtkStyleContext
Carlos Garnacho's avatar
Carlos Garnacho committed
40
41
{
  GObject parent_object;
42
  gpointer priv;
Carlos Garnacho's avatar
Carlos Garnacho committed
43
44
};

45
struct GtkStyleContextClass
Carlos Garnacho's avatar
Carlos Garnacho committed
46
47
{
  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
GtkStyleContext * gtk_style_context_new (void);

56
57
58
59
60
61
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
62
63
64
65
66
67
68
void gtk_style_context_add_provider    (GtkStyleContext  *context,
                                        GtkStyleProvider *provider,
                                        guint             priority);

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

69
70
71
void gtk_style_context_save    (GtkStyleContext *context);
void gtk_style_context_restore (GtkStyleContext *context);

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

83
84
85
86
void          gtk_style_context_set_state    (GtkStyleContext *context,
                                              GtkStateFlags    flags);
GtkStateFlags gtk_style_context_get_state    (GtkStyleContext *context);

87
88
89
gboolean      gtk_style_context_state_is_running (GtkStyleContext *context,
                                                  GtkStateType     state,
                                                  gdouble         *progress);
90

91
92
93
94
void          gtk_style_context_set_path     (GtkStyleContext *context,
                                              GtkWidgetPath   *path);
G_CONST_RETURN GtkWidgetPath * gtk_style_context_get_path (GtkStyleContext *context);

95
96
GList *  gtk_style_context_list_classes (GtkStyleContext *context);

97
98
99
100
101
102
103
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);

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

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

123
124
125
GtkIconSet * gtk_style_context_lookup_icon_set (GtkStyleContext *context,
						const gchar     *stock_id);

126
127
128
129
void        gtk_style_context_set_screen (GtkStyleContext *context,
                                          GdkScreen       *screen);
GdkScreen * gtk_style_context_get_screen (GtkStyleContext *context);

130
131
132
133
void             gtk_style_context_set_direction (GtkStyleContext  *context,
                                                  GtkTextDirection  direction);
GtkTextDirection gtk_style_context_get_direction (GtkStyleContext  *context);

134
135
136
137
void             gtk_style_context_set_junction_sides (GtkStyleContext  *context,
						       GtkJunctionSides  sides);
GtkJunctionSides gtk_style_context_get_junction_sides (GtkStyleContext  *context);

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

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


152
153
154
155
/* Semi-private API */
const GValue * _gtk_style_context_peek_style_property (GtkStyleContext *context,
                                                       GType            widget_type,
                                                       GParamSpec      *pspec);
156
void           _gtk_style_context_invalidate_animation_areas (GtkStyleContext *context);
157
158
159
void           _gtk_style_context_coalesce_animation_areas   (GtkStyleContext *context,
                                                              gint             rel_x,
                                                              gint             rel_y);
160

161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
/* 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);

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

Carlos Garnacho's avatar
Carlos Garnacho committed
268
269
270
G_END_DECLS

#endif /* __GTK_STYLE_CONTEXT_H__ */