| 1 | /* GTK - The GIMP Toolkit | 
| 2 |  * Copyright (C) 2010 Carlos Garnacho <carlosg@gnome.org> | 
| 3 |  * | 
| 4 |  * This library is free software; you can redistribute it and/or | 
| 5 |  * modify it under the terms of the GNU Lesser General Public | 
| 6 |  * License as published by the Free Software Foundation; either | 
| 7 |  * version 2 of the License, or (at your option) any later version. | 
| 8 |  * | 
| 9 |  * This library is distributed in the hope that it will be useful, | 
| 10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
| 12 |  * Lesser General Public License for more details. | 
| 13 |  * | 
| 14 |  * You should have received a copy of the GNU Lesser General Public | 
| 15 |  * License along with this library. If not, see <http://www.gnu.org/licenses/>. | 
| 16 |  */ | 
| 17 |  | 
| 18 | #ifndef __GTK_THEMING_ENGINE_H__ | 
| 19 | #define __GTK_THEMING_ENGINE_H__ | 
| 20 |  | 
| 21 | #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) | 
| 22 | #error "Only <gtk/gtk.h> can be included directly." | 
| 23 | #endif | 
| 24 |  | 
| 25 | #include <glib-object.h> | 
| 26 | #include <cairo.h> | 
| 27 |  | 
| 28 | #include <gtk/gtkborder.h> | 
| 29 | #include <gtk/gtkenums.h> | 
| 30 | #include <gtk/deprecated/gtkstyleproperties.h> | 
| 31 | #include <gtk/gtktypes.h> | 
| 32 |  | 
| 33 | G_BEGIN_DECLS | 
| 34 |  | 
| 35 | #define GTK_TYPE_THEMING_ENGINE         (gtk_theming_engine_get_type ()) | 
| 36 | #define GTK_THEMING_ENGINE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GTK_TYPE_THEMING_ENGINE, GtkThemingEngine)) | 
| 37 | #define GTK_THEMING_ENGINE_CLASS(c)     (G_TYPE_CHECK_CLASS_CAST    ((c), GTK_TYPE_THEMING_ENGINE, GtkThemingEngineClass)) | 
| 38 | #define GTK_IS_THEMING_ENGINE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GTK_TYPE_THEMING_ENGINE)) | 
| 39 | #define GTK_IS_THEMING_ENGINE_CLASS(c)  (G_TYPE_CHECK_CLASS_TYPE    ((c), GTK_TYPE_THEMING_ENGINE)) | 
| 40 | #define GTK_THEMING_ENGINE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS  ((o), GTK_TYPE_THEMING_ENGINE, GtkThemingEngineClass)) | 
| 41 |  | 
| 42 | typedef struct _GtkThemingEngine GtkThemingEngine; | 
| 43 | typedef struct GtkThemingEnginePrivate GtkThemingEnginePrivate; | 
| 44 | typedef struct _GtkThemingEngineClass GtkThemingEngineClass; | 
| 45 |  | 
| 46 | struct _GtkThemingEngine | 
| 47 | { | 
| 48 |   GObject parent_object; | 
| 49 |   GtkThemingEnginePrivate *priv; | 
| 50 | }; | 
| 51 |  | 
| 52 | /** | 
| 53 |  * GtkThemingEngineClass: | 
| 54 |  * @parent_class: The parent class. | 
| 55 |  * @render_line: Renders a line between two points. | 
| 56 |  * @render_background: Renders the background area of a widget region. | 
| 57 |  * @render_frame: Renders the frame around a widget area. | 
| 58 |  * @render_frame_gap: Renders the frame around a widget area with a gap in it. | 
| 59 |  * @render_extension: Renders a extension to a box, usually a notebook tab. | 
| 60 |  * @render_check: Renders a checkmark, as in #GtkCheckButton. | 
| 61 |  * @render_option: Renders an option, as in #GtkRadioButton. | 
| 62 |  * @render_arrow: Renders an arrow pointing to a certain direction. | 
| 63 |  * @render_expander: Renders an element what will expose/expand part of | 
| 64 |  *                   the UI, as in #GtkExpander. | 
| 65 |  * @render_focus: Renders the focus indicator. | 
| 66 |  * @render_layout: Renders a #PangoLayout | 
| 67 |  * @render_slider: Renders a slider control, as in #GtkScale. | 
| 68 |  * @render_handle: Renders a handle to drag UI elements, as in #GtkPaned. | 
| 69 |  * @render_activity: Renders an area displaying activity, such as in #GtkSpinner, | 
| 70 |  *                   or #GtkProgressBar. | 
| 71 |  * @render_icon_pixbuf: Renders an icon as a #GdkPixbuf. | 
| 72 |  * @render_icon: Renders an icon given as a #GdkPixbuf. | 
| 73 |  * @render_icon_surface: Renders an icon given as a #cairo_surface_t. | 
| 74 |  * | 
| 75 |  * Base class for theming engines. | 
| 76 |  */ | 
| 77 | struct _GtkThemingEngineClass | 
| 78 | { | 
| 79 |   GObjectClass parent_class; | 
| 80 |  | 
| 81 |   /*< public >*/ | 
| 82 |  | 
| 83 |   void (* render_line) (GtkThemingEngine *engine, | 
| 84 |                         cairo_t          *cr, | 
| 85 |                         gdouble           x0, | 
| 86 |                         gdouble           y0, | 
| 87 |                         gdouble           x1, | 
| 88 |                         gdouble           y1); | 
| 89 |   void (* render_background) (GtkThemingEngine *engine, | 
| 90 |                               cairo_t          *cr, | 
| 91 |                               gdouble           x, | 
| 92 |                               gdouble           y, | 
| 93 |                               gdouble           width, | 
| 94 |                               gdouble           height); | 
| 95 |   void (* render_frame) (GtkThemingEngine *engine, | 
| 96 |                          cairo_t          *cr, | 
| 97 |                          gdouble           x, | 
| 98 |                          gdouble           y, | 
| 99 |                          gdouble           width, | 
| 100 |                          gdouble           height); | 
| 101 |   void (* render_frame_gap) (GtkThemingEngine *engine, | 
| 102 |                              cairo_t          *cr, | 
| 103 |                              gdouble           x, | 
| 104 |                              gdouble           y, | 
| 105 |                              gdouble           width, | 
| 106 |                              gdouble           height, | 
| 107 |                              GtkPositionType   gap_side, | 
| 108 |                              gdouble           xy0_gap, | 
| 109 |                              gdouble           xy1_gap); | 
| 110 |   void (* render_extension) (GtkThemingEngine *engine, | 
| 111 |                              cairo_t          *cr, | 
| 112 |                              gdouble           x, | 
| 113 |                              gdouble           y, | 
| 114 |                              gdouble           width, | 
| 115 |                              gdouble           height, | 
| 116 |                              GtkPositionType   gap_side); | 
| 117 |   void (* render_check) (GtkThemingEngine *engine, | 
| 118 |                          cairo_t          *cr, | 
| 119 |                          gdouble           x, | 
| 120 |                          gdouble           y, | 
| 121 |                          gdouble           width, | 
| 122 |                          gdouble           height); | 
| 123 |   void (* render_option) (GtkThemingEngine *engine, | 
| 124 |                           cairo_t          *cr, | 
| 125 |                           gdouble           x, | 
| 126 |                           gdouble           y, | 
| 127 |                           gdouble           width, | 
| 128 |                           gdouble           height); | 
| 129 |   void (* render_arrow) (GtkThemingEngine *engine, | 
| 130 |                          cairo_t          *cr, | 
| 131 |                          gdouble           angle, | 
| 132 |                          gdouble           x, | 
| 133 |                          gdouble           y, | 
| 134 |                          gdouble           size); | 
| 135 |   void (* render_expander) (GtkThemingEngine *engine, | 
| 136 |                             cairo_t          *cr, | 
| 137 |                             gdouble           x, | 
| 138 |                             gdouble           y, | 
| 139 |                             gdouble           width, | 
| 140 |                             gdouble           height); | 
| 141 |   void (* render_focus) (GtkThemingEngine *engine, | 
| 142 |                          cairo_t          *cr, | 
| 143 |                          gdouble           x, | 
| 144 |                          gdouble           y, | 
| 145 |                          gdouble           width, | 
| 146 |                          gdouble           height); | 
| 147 |   void (* render_layout) (GtkThemingEngine *engine, | 
| 148 |                           cairo_t          *cr, | 
| 149 |                           gdouble           x, | 
| 150 |                           gdouble           y, | 
| 151 |                           PangoLayout      *layout); | 
| 152 |   void (* render_slider) (GtkThemingEngine *engine, | 
| 153 |                           cairo_t          *cr, | 
| 154 |                           gdouble           x, | 
| 155 |                           gdouble           y, | 
| 156 |                           gdouble           width, | 
| 157 |                           gdouble           height, | 
| 158 |                           GtkOrientation    orientation); | 
| 159 |   void (* render_handle)    (GtkThemingEngine *engine, | 
| 160 |                              cairo_t          *cr, | 
| 161 |                              gdouble           x, | 
| 162 |                              gdouble           y, | 
| 163 |                              gdouble           width, | 
| 164 |                              gdouble           height); | 
| 165 |   void (* render_activity) (GtkThemingEngine *engine, | 
| 166 |                             cairo_t          *cr, | 
| 167 |                             gdouble           x, | 
| 168 |                             gdouble           y, | 
| 169 |                             gdouble           width, | 
| 170 |                             gdouble           height); | 
| 171 |  | 
| 172 |   GdkPixbuf * (* render_icon_pixbuf) (GtkThemingEngine    *engine, | 
| 173 |                                       const GtkIconSource *source, | 
| 174 |                                       GtkIconSize          size); | 
| 175 |   void (* render_icon) (GtkThemingEngine *engine, | 
| 176 |                         cairo_t          *cr, | 
| 177 | 			GdkPixbuf        *pixbuf, | 
| 178 |                         gdouble           x, | 
| 179 |                         gdouble           y); | 
| 180 |   void (* render_icon_surface) (GtkThemingEngine *engine, | 
| 181 | 				cairo_t          *cr, | 
| 182 | 				cairo_surface_t  *surface, | 
| 183 | 				gdouble           x, | 
| 184 | 				gdouble           y); | 
| 185 |  | 
| 186 |   /*< private >*/ | 
| 187 |   gpointer padding[14]; | 
| 188 | }; | 
| 189 |  | 
| 190 | GDK_DEPRECATED_IN_3_14 | 
| 191 | GType gtk_theming_engine_get_type (void) G_GNUC_CONST; | 
| 192 |  | 
| 193 | /* function implemented in gtkcsscustomproperty.c */ | 
| 194 | GDK_DEPRECATED_IN_3_8 | 
| 195 | void gtk_theming_engine_register_property (const gchar            *name_space, | 
| 196 |                                            GtkStylePropertyParser  parse_func, | 
| 197 |                                            GParamSpec             *pspec); | 
| 198 |  | 
| 199 | GDK_DEPRECATED_IN_3_14 | 
| 200 | void gtk_theming_engine_get_property (GtkThemingEngine *engine, | 
| 201 |                                       const gchar      *property, | 
| 202 |                                       GtkStateFlags     state, | 
| 203 |                                       GValue           *value); | 
| 204 | GDK_DEPRECATED_IN_3_14 | 
| 205 | void gtk_theming_engine_get_valist   (GtkThemingEngine *engine, | 
| 206 |                                       GtkStateFlags     state, | 
| 207 |                                       va_list           args); | 
| 208 | GDK_DEPRECATED_IN_3_14 | 
| 209 | void gtk_theming_engine_get          (GtkThemingEngine *engine, | 
| 210 |                                       GtkStateFlags     state, | 
| 211 |                                       ...) G_GNUC_NULL_TERMINATED; | 
| 212 |  | 
| 213 | GDK_DEPRECATED_IN_3_14 | 
| 214 | void gtk_theming_engine_get_style_property (GtkThemingEngine *engine, | 
| 215 |                                             const gchar      *property_name, | 
| 216 |                                             GValue           *value); | 
| 217 | GDK_DEPRECATED_IN_3_14 | 
| 218 | void gtk_theming_engine_get_style_valist   (GtkThemingEngine *engine, | 
| 219 |                                             va_list           args); | 
| 220 | GDK_DEPRECATED_IN_3_14 | 
| 221 | void gtk_theming_engine_get_style          (GtkThemingEngine *engine, | 
| 222 |                                             ...); | 
| 223 |  | 
| 224 | GDK_DEPRECATED_IN_3_14 | 
| 225 | gboolean gtk_theming_engine_lookup_color (GtkThemingEngine *engine, | 
| 226 |                                           const gchar      *color_name, | 
| 227 |                                           GdkRGBA          *color); | 
| 228 |  | 
| 229 | GDK_DEPRECATED_IN_3_14 | 
| 230 | const GtkWidgetPath * gtk_theming_engine_get_path (GtkThemingEngine *engine); | 
| 231 |  | 
| 232 | GDK_DEPRECATED_IN_3_14 | 
| 233 | gboolean gtk_theming_engine_has_class  (GtkThemingEngine *engine, | 
| 234 |                                         const gchar      *style_class); | 
| 235 | GDK_DEPRECATED_IN_3_14 | 
| 236 | gboolean gtk_theming_engine_has_region (GtkThemingEngine *engine, | 
| 237 |                                         const gchar      *style_region, | 
| 238 |                                         GtkRegionFlags   *flags); | 
| 239 |  | 
| 240 | GDK_DEPRECATED_IN_3_14 | 
| 241 | GtkStateFlags gtk_theming_engine_get_state        (GtkThemingEngine *engine); | 
| 242 | GDK_DEPRECATED_IN_3_6 | 
| 243 | gboolean      gtk_theming_engine_state_is_running (GtkThemingEngine *engine, | 
| 244 |                                                    GtkStateType      state, | 
| 245 |                                                    gdouble          *progress); | 
| 246 |  | 
| 247 | GDK_DEPRECATED_IN_3_8_FOR(gtk_theming_engine_get_state) | 
| 248 | GtkTextDirection gtk_theming_engine_get_direction (GtkThemingEngine *engine); | 
| 249 |  | 
| 250 | GDK_DEPRECATED_IN_3_14 | 
| 251 | GtkJunctionSides gtk_theming_engine_get_junction_sides (GtkThemingEngine *engine); | 
| 252 |  | 
| 253 | /* Helper functions */ | 
| 254 | GDK_DEPRECATED_IN_3_14 | 
| 255 | void gtk_theming_engine_get_color            (GtkThemingEngine *engine, | 
| 256 |                                               GtkStateFlags     state, | 
| 257 |                                               GdkRGBA          *color); | 
| 258 | GDK_DEPRECATED_IN_3_14 | 
| 259 | void gtk_theming_engine_get_background_color (GtkThemingEngine *engine, | 
| 260 |                                               GtkStateFlags     state, | 
| 261 |                                               GdkRGBA          *color); | 
| 262 | GDK_DEPRECATED_IN_3_14 | 
| 263 | void gtk_theming_engine_get_border_color     (GtkThemingEngine *engine, | 
| 264 |                                               GtkStateFlags     state, | 
| 265 |                                               GdkRGBA          *color); | 
| 266 |  | 
| 267 | GDK_DEPRECATED_IN_3_14 | 
| 268 | void gtk_theming_engine_get_border  (GtkThemingEngine *engine, | 
| 269 |                                      GtkStateFlags     state, | 
| 270 |                                      GtkBorder        *border); | 
| 271 | GDK_DEPRECATED_IN_3_14 | 
| 272 | void gtk_theming_engine_get_padding (GtkThemingEngine *engine, | 
| 273 |                                      GtkStateFlags     state, | 
| 274 |                                      GtkBorder        *padding); | 
| 275 | GDK_DEPRECATED_IN_3_14 | 
| 276 | void gtk_theming_engine_get_margin  (GtkThemingEngine *engine, | 
| 277 |                                      GtkStateFlags     state, | 
| 278 |                                      GtkBorder        *margin); | 
| 279 |  | 
| 280 | GDK_DEPRECATED_IN_3_8_FOR(gtk_theming_engine_get) | 
| 281 | const PangoFontDescription * gtk_theming_engine_get_font (GtkThemingEngine *engine, | 
| 282 |                                                           GtkStateFlags     state); | 
| 283 |  | 
| 284 | GDK_DEPRECATED_IN_3_14 | 
| 285 | GtkThemingEngine * gtk_theming_engine_load (const gchar *name); | 
| 286 |  | 
| 287 | GDK_DEPRECATED_IN_3_14 | 
| 288 | GdkScreen * gtk_theming_engine_get_screen (GtkThemingEngine *engine); | 
| 289 |  | 
| 290 | G_END_DECLS | 
| 291 |  | 
| 292 | #endif /* __GTK_THEMING_ENGINE_H__ */ | 
| 293 |  |