1 /* GTK - The GIMP Toolkit
2 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
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.
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.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
21 * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
22 * file for a list of people on the GTK+ Team. See the ChangeLog
23 * files for a list of changes. These files are distributed with
24 * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
27 #ifndef __GTK_STYLE_H__
28 #define __GTK_STYLE_H__
32 #include <gtk/gtkenums.h>
33 #include <pango/pango.h>
37 #endif /* __cplusplus */
39 typedef struct _GtkStyle GtkStyle;
40 typedef struct _GtkStyleClass GtkStyleClass;
42 #define GTK_TYPE_STYLE (gtk_style_get_type ())
43 #define GTK_STYLE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GTK_TYPE_STYLE, GtkStyle))
44 #define GTK_STYLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_STYLE, GtkStyleClass))
45 #define GTK_IS_STYLE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GTK_TYPE_STYLE))
46 #define GTK_IS_STYLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_STYLE))
47 #define GTK_STYLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_STYLE, GtkStyleClass))
49 /* Some forward declarations needed to rationalize the header
52 typedef struct _GtkThemeEngine GtkThemeEngine;
53 typedef struct _GtkRcStyle GtkRcStyle;
54 typedef struct _GtkIconSet GtkIconSet;
55 typedef struct _GtkIconSource GtkIconSource;
57 /* We make this forward declaration here, since we pass
58 * GtkWidgt's to the draw functions.
60 typedef struct _GtkWidget GtkWidget;
62 /* This is used for having dynamic style changing stuff
63 * fg, bg, light, dark, mid, text, base
65 #define GTK_STYLE_NUM_STYLECOLORS() (7 * 5)
67 #define GTK_STYLE_ATTACHED(style) (((GtkStyle*) (style))->attach_count > 0)
71 GObject parent_instance;
86 PangoFontDescription *font_desc;
101 GdkPixmap *bg_pixmap[5];
108 GdkColormap *colormap;
110 GtkRcStyle *rc_style; /* the Rc style from which this style
115 GSList *icon_factories;
118 struct _GtkStyleClass
120 GObjectClass parent_class;
122 /* Initialize for a particular colormap/depth
123 * combination. style->colormap/style->depth will have
124 * been set at this point. Will typically chain to parent.
126 void (*realize) (GtkStyle *style);
128 /* Clean up for a particular colormap/depth combination. Will
129 * typically chain to parent.
131 void (*unrealize) (GtkStyle *style);
133 /* Make style an exact duplicate of src.
135 void (*copy) (GtkStyle *style,
138 /* Create an empty style of the same type as this style.
139 * The default implementation, which does
140 * g_object_new (G_OBJECT_TYPE (style), NULL);
141 * should work in most cases.
143 GtkStyle *(*clone) (GtkStyle *style);
145 /* Initialize the GtkStyle with the values in the GtkRcStyle.
146 * should chain to the parent implementation.
148 void (*init_from_rc) (GtkStyle *style,
149 GtkRcStyle *rc_style);
151 void (*set_background) (GtkStyle *style,
153 GtkStateType state_type);
156 GdkPixbuf * (* render_icon) (GtkStyle *style,
157 const GtkIconSource *source,
158 GtkTextDirection direction,
162 const gchar *detail);
167 void (*draw_hline) (GtkStyle *style,
169 GtkStateType state_type,
176 void (*draw_vline) (GtkStyle *style,
178 GtkStateType state_type,
185 void (*draw_shadow) (GtkStyle *style,
187 GtkStateType state_type,
188 GtkShadowType shadow_type,
196 void (*draw_polygon) (GtkStyle *style,
198 GtkStateType state_type,
199 GtkShadowType shadow_type,
206 void (*draw_arrow) (GtkStyle *style,
208 GtkStateType state_type,
209 GtkShadowType shadow_type,
213 GtkArrowType arrow_type,
219 void (*draw_diamond) (GtkStyle *style,
221 GtkStateType state_type,
222 GtkShadowType shadow_type,
230 void (*draw_string) (GtkStyle *style,
232 GtkStateType state_type,
238 const gchar *string);
239 void (*draw_box) (GtkStyle *style,
241 GtkStateType state_type,
242 GtkShadowType shadow_type,
250 void (*draw_flat_box) (GtkStyle *style,
252 GtkStateType state_type,
253 GtkShadowType shadow_type,
261 void (*draw_check) (GtkStyle *style,
263 GtkStateType state_type,
264 GtkShadowType shadow_type,
272 void (*draw_option) (GtkStyle *style,
274 GtkStateType state_type,
275 GtkShadowType shadow_type,
283 void (*draw_tab) (GtkStyle *style,
285 GtkStateType state_type,
286 GtkShadowType shadow_type,
294 void (*draw_shadow_gap) (GtkStyle *style,
296 GtkStateType state_type,
297 GtkShadowType shadow_type,
305 GtkPositionType gap_side,
308 void (*draw_box_gap) (GtkStyle *style,
310 GtkStateType state_type,
311 GtkShadowType shadow_type,
319 GtkPositionType gap_side,
322 void (*draw_extension) (GtkStyle *style,
324 GtkStateType state_type,
325 GtkShadowType shadow_type,
333 GtkPositionType gap_side);
334 void (*draw_focus) (GtkStyle *style,
343 void (*draw_slider) (GtkStyle *style,
345 GtkStateType state_type,
346 GtkShadowType shadow_type,
354 GtkOrientation orientation);
355 void (*draw_handle) (GtkStyle *style,
357 GtkStateType state_type,
358 GtkShadowType shadow_type,
366 GtkOrientation orientation);
368 void (*draw_expander) (GtkStyle *style,
370 GtkStateType state_type,
377 void (*draw_layout) (GtkStyle *style,
379 GtkStateType state_type,
385 PangoLayout *layout);
389 GType gtk_style_get_type (void) G_GNUC_CONST;
390 GtkStyle* gtk_style_new (void);
391 GtkStyle* gtk_style_copy (GtkStyle *style);
392 GtkStyle* gtk_style_attach (GtkStyle *style,
394 void gtk_style_detach (GtkStyle *style);
395 GtkStyle* gtk_style_ref (GtkStyle *style);
396 void gtk_style_unref (GtkStyle *style);
397 void gtk_style_set_background (GtkStyle *style,
399 GtkStateType state_type);
400 void gtk_style_apply_default_background (GtkStyle *style,
403 GtkStateType state_type,
410 GtkIconSet* gtk_style_lookup_icon_set (GtkStyle *style,
411 const gchar *stock_id);
412 GdkPixbuf * gtk_style_render_icon (GtkStyle *style,
413 const GtkIconSource *source,
414 GtkTextDirection direction,
418 const gchar *detail);
419 void gtk_draw_hline (GtkStyle *style,
421 GtkStateType state_type,
425 void gtk_draw_vline (GtkStyle *style,
427 GtkStateType state_type,
431 void gtk_draw_shadow (GtkStyle *style,
433 GtkStateType state_type,
434 GtkShadowType shadow_type,
439 void gtk_draw_polygon (GtkStyle *style,
441 GtkStateType state_type,
442 GtkShadowType shadow_type,
446 void gtk_draw_arrow (GtkStyle *style,
448 GtkStateType state_type,
449 GtkShadowType shadow_type,
450 GtkArrowType arrow_type,
456 void gtk_draw_diamond (GtkStyle *style,
458 GtkStateType state_type,
459 GtkShadowType shadow_type,
464 #ifndef GTK_DISABLE_DEPRECATED
465 void gtk_draw_string (GtkStyle *style,
467 GtkStateType state_type,
470 const gchar *string);
471 #endif /* GTK_DISABLE_DEPRECATED */
472 void gtk_draw_box (GtkStyle *style,
474 GtkStateType state_type,
475 GtkShadowType shadow_type,
480 void gtk_draw_flat_box (GtkStyle *style,
482 GtkStateType state_type,
483 GtkShadowType shadow_type,
488 void gtk_draw_check (GtkStyle *style,
490 GtkStateType state_type,
491 GtkShadowType shadow_type,
496 void gtk_draw_option (GtkStyle *style,
498 GtkStateType state_type,
499 GtkShadowType shadow_type,
504 void gtk_draw_tab (GtkStyle *style,
506 GtkStateType state_type,
507 GtkShadowType shadow_type,
512 void gtk_draw_shadow_gap (GtkStyle *style,
514 GtkStateType state_type,
515 GtkShadowType shadow_type,
520 GtkPositionType gap_side,
523 void gtk_draw_box_gap (GtkStyle *style,
525 GtkStateType state_type,
526 GtkShadowType shadow_type,
531 GtkPositionType gap_side,
534 void gtk_draw_extension (GtkStyle *style,
536 GtkStateType state_type,
537 GtkShadowType shadow_type,
542 GtkPositionType gap_side);
543 void gtk_draw_focus (GtkStyle *style,
549 void gtk_draw_slider (GtkStyle *style,
551 GtkStateType state_type,
552 GtkShadowType shadow_type,
557 GtkOrientation orientation);
558 void gtk_draw_handle (GtkStyle *style,
560 GtkStateType state_type,
561 GtkShadowType shadow_type,
566 GtkOrientation orientation);
567 void gtk_draw_expander (GtkStyle *style,
569 GtkStateType state_type,
573 void gtk_draw_layout (GtkStyle *style,
575 GtkStateType state_type,
578 PangoLayout *layout);
580 void gtk_paint_hline (GtkStyle *style,
582 GtkStateType state_type,
589 void gtk_paint_vline (GtkStyle *style,
591 GtkStateType state_type,
598 void gtk_paint_shadow (GtkStyle *style,
600 GtkStateType state_type,
601 GtkShadowType shadow_type,
609 void gtk_paint_polygon (GtkStyle *style,
611 GtkStateType state_type,
612 GtkShadowType shadow_type,
619 void gtk_paint_arrow (GtkStyle *style,
621 GtkStateType state_type,
622 GtkShadowType shadow_type,
626 GtkArrowType arrow_type,
632 void gtk_paint_diamond (GtkStyle *style,
634 GtkStateType state_type,
635 GtkShadowType shadow_type,
643 #ifndef GTK_DISABLE_DEPRECATED
644 void gtk_paint_string (GtkStyle *style,
646 GtkStateType state_type,
652 const gchar *string);
653 #endif /* GTK_DISABLE_DEPRECATED */
654 void gtk_paint_box (GtkStyle *style,
656 GtkStateType state_type,
657 GtkShadowType shadow_type,
665 void gtk_paint_flat_box (GtkStyle *style,
667 GtkStateType state_type,
668 GtkShadowType shadow_type,
676 void gtk_paint_check (GtkStyle *style,
678 GtkStateType state_type,
679 GtkShadowType shadow_type,
687 void gtk_paint_option (GtkStyle *style,
689 GtkStateType state_type,
690 GtkShadowType shadow_type,
698 void gtk_paint_tab (GtkStyle *style,
700 GtkStateType state_type,
701 GtkShadowType shadow_type,
709 void gtk_paint_shadow_gap (GtkStyle *style,
711 GtkStateType state_type,
712 GtkShadowType shadow_type,
720 GtkPositionType gap_side,
723 void gtk_paint_box_gap (GtkStyle *style,
725 GtkStateType state_type,
726 GtkShadowType shadow_type,
734 GtkPositionType gap_side,
737 void gtk_paint_extension (GtkStyle *style,
739 GtkStateType state_type,
740 GtkShadowType shadow_type,
748 GtkPositionType gap_side);
749 void gtk_paint_focus (GtkStyle *style,
758 void gtk_paint_slider (GtkStyle *style,
760 GtkStateType state_type,
761 GtkShadowType shadow_type,
769 GtkOrientation orientation);
770 void gtk_paint_handle (GtkStyle *style,
772 GtkStateType state_type,
773 GtkShadowType shadow_type,
781 GtkOrientation orientation);
782 void gtk_paint_expander (GtkStyle *style,
784 GtkStateType state_type,
791 void gtk_paint_layout (GtkStyle *style,
793 GtkStateType state_type,
799 PangoLayout *layout);
804 #endif /* __cplusplus */
807 #endif /* __GTK_STYLE_H__ */