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_oval) (GtkStyle *style,
232 GtkStateType state_type,
233 GtkShadowType shadow_type,
241 void (*draw_string) (GtkStyle *style,
243 GtkStateType state_type,
249 const gchar *string);
250 void (*draw_box) (GtkStyle *style,
252 GtkStateType state_type,
253 GtkShadowType shadow_type,
261 void (*draw_flat_box) (GtkStyle *style,
263 GtkStateType state_type,
264 GtkShadowType shadow_type,
272 void (*draw_check) (GtkStyle *style,
274 GtkStateType state_type,
275 GtkShadowType shadow_type,
283 void (*draw_option) (GtkStyle *style,
285 GtkStateType state_type,
286 GtkShadowType shadow_type,
294 void (*draw_cross) (GtkStyle *style,
296 GtkStateType state_type,
297 GtkShadowType shadow_type,
305 void (*draw_ramp) (GtkStyle *style,
307 GtkStateType state_type,
308 GtkShadowType shadow_type,
312 GtkArrowType arrow_type,
317 void (*draw_tab) (GtkStyle *style,
319 GtkStateType state_type,
320 GtkShadowType shadow_type,
328 void (*draw_shadow_gap) (GtkStyle *style,
330 GtkStateType state_type,
331 GtkShadowType shadow_type,
339 GtkPositionType gap_side,
342 void (*draw_box_gap) (GtkStyle *style,
344 GtkStateType state_type,
345 GtkShadowType shadow_type,
353 GtkPositionType gap_side,
356 void (*draw_extension) (GtkStyle *style,
358 GtkStateType state_type,
359 GtkShadowType shadow_type,
367 GtkPositionType gap_side);
368 void (*draw_focus) (GtkStyle *style,
377 void (*draw_slider) (GtkStyle *style,
379 GtkStateType state_type,
380 GtkShadowType shadow_type,
388 GtkOrientation orientation);
389 void (*draw_handle) (GtkStyle *style,
391 GtkStateType state_type,
392 GtkShadowType shadow_type,
400 GtkOrientation orientation);
403 GType gtk_style_get_type (void) G_GNUC_CONST;
404 GtkStyle* gtk_style_new (void);
405 GtkStyle* gtk_style_copy (GtkStyle *style);
406 GtkStyle* gtk_style_attach (GtkStyle *style,
408 void gtk_style_detach (GtkStyle *style);
409 GtkStyle* gtk_style_ref (GtkStyle *style);
410 void gtk_style_unref (GtkStyle *style);
411 void gtk_style_set_background (GtkStyle *style,
413 GtkStateType state_type);
414 void gtk_style_apply_default_background (GtkStyle *style,
417 GtkStateType state_type,
424 GtkIconSet* gtk_style_lookup_icon_set (GtkStyle *style,
425 const gchar *stock_id);
426 GdkPixbuf * gtk_style_render_icon (GtkStyle *style,
427 const GtkIconSource *source,
428 GtkTextDirection direction,
432 const gchar *detail);
433 void gtk_draw_hline (GtkStyle *style,
435 GtkStateType state_type,
439 void gtk_draw_vline (GtkStyle *style,
441 GtkStateType state_type,
445 void gtk_draw_shadow (GtkStyle *style,
447 GtkStateType state_type,
448 GtkShadowType shadow_type,
453 void gtk_draw_polygon (GtkStyle *style,
455 GtkStateType state_type,
456 GtkShadowType shadow_type,
460 void gtk_draw_arrow (GtkStyle *style,
462 GtkStateType state_type,
463 GtkShadowType shadow_type,
464 GtkArrowType arrow_type,
470 void gtk_draw_diamond (GtkStyle *style,
472 GtkStateType state_type,
473 GtkShadowType shadow_type,
478 void gtk_draw_oval (GtkStyle *style,
480 GtkStateType state_type,
481 GtkShadowType shadow_type,
486 void gtk_draw_string (GtkStyle *style,
488 GtkStateType state_type,
491 const gchar *string);
492 void gtk_draw_box (GtkStyle *style,
494 GtkStateType state_type,
495 GtkShadowType shadow_type,
500 void gtk_draw_flat_box (GtkStyle *style,
502 GtkStateType state_type,
503 GtkShadowType shadow_type,
508 void gtk_draw_check (GtkStyle *style,
510 GtkStateType state_type,
511 GtkShadowType shadow_type,
516 void gtk_draw_option (GtkStyle *style,
518 GtkStateType state_type,
519 GtkShadowType shadow_type,
524 void gtk_draw_cross (GtkStyle *style,
526 GtkStateType state_type,
527 GtkShadowType shadow_type,
532 void gtk_draw_ramp (GtkStyle *style,
534 GtkStateType state_type,
535 GtkShadowType shadow_type,
536 GtkArrowType arrow_type,
541 void gtk_draw_tab (GtkStyle *style,
543 GtkStateType state_type,
544 GtkShadowType shadow_type,
549 void gtk_draw_shadow_gap (GtkStyle *style,
551 GtkStateType state_type,
552 GtkShadowType shadow_type,
557 GtkPositionType gap_side,
560 void gtk_draw_box_gap (GtkStyle *style,
562 GtkStateType state_type,
563 GtkShadowType shadow_type,
568 GtkPositionType gap_side,
571 void gtk_draw_extension (GtkStyle *style,
573 GtkStateType state_type,
574 GtkShadowType shadow_type,
579 GtkPositionType gap_side);
580 void gtk_draw_focus (GtkStyle *style,
586 void gtk_draw_slider (GtkStyle *style,
588 GtkStateType state_type,
589 GtkShadowType shadow_type,
594 GtkOrientation orientation);
595 void gtk_draw_handle (GtkStyle *style,
597 GtkStateType state_type,
598 GtkShadowType shadow_type,
603 GtkOrientation orientation);
605 void gtk_paint_hline (GtkStyle *style,
607 GtkStateType state_type,
614 void gtk_paint_vline (GtkStyle *style,
616 GtkStateType state_type,
623 void gtk_paint_shadow (GtkStyle *style,
625 GtkStateType state_type,
626 GtkShadowType shadow_type,
634 void gtk_paint_polygon (GtkStyle *style,
636 GtkStateType state_type,
637 GtkShadowType shadow_type,
644 void gtk_paint_arrow (GtkStyle *style,
646 GtkStateType state_type,
647 GtkShadowType shadow_type,
651 GtkArrowType arrow_type,
657 void gtk_paint_diamond (GtkStyle *style,
659 GtkStateType state_type,
660 GtkShadowType shadow_type,
668 void gtk_paint_oval (GtkStyle *style,
670 GtkStateType state_type,
671 GtkShadowType shadow_type,
679 void gtk_paint_string (GtkStyle *style,
681 GtkStateType state_type,
687 const gchar *string);
688 void gtk_paint_box (GtkStyle *style,
690 GtkStateType state_type,
691 GtkShadowType shadow_type,
699 void gtk_paint_flat_box (GtkStyle *style,
701 GtkStateType state_type,
702 GtkShadowType shadow_type,
710 void gtk_paint_check (GtkStyle *style,
712 GtkStateType state_type,
713 GtkShadowType shadow_type,
721 void gtk_paint_option (GtkStyle *style,
723 GtkStateType state_type,
724 GtkShadowType shadow_type,
732 void gtk_paint_cross (GtkStyle *style,
734 GtkStateType state_type,
735 GtkShadowType shadow_type,
743 void gtk_paint_ramp (GtkStyle *style,
745 GtkStateType state_type,
746 GtkShadowType shadow_type,
750 GtkArrowType arrow_type,
755 void gtk_paint_tab (GtkStyle *style,
757 GtkStateType state_type,
758 GtkShadowType shadow_type,
766 void gtk_paint_shadow_gap (GtkStyle *style,
768 GtkStateType state_type,
769 GtkShadowType shadow_type,
777 GtkPositionType gap_side,
780 void gtk_paint_box_gap (GtkStyle *style,
782 GtkStateType state_type,
783 GtkShadowType shadow_type,
791 GtkPositionType gap_side,
794 void gtk_paint_extension (GtkStyle *style,
796 GtkStateType state_type,
797 GtkShadowType shadow_type,
805 GtkPositionType gap_side);
806 void gtk_paint_focus (GtkStyle *style,
815 void gtk_paint_slider (GtkStyle *style,
817 GtkStateType state_type,
818 GtkShadowType shadow_type,
826 GtkOrientation orientation);
827 void gtk_paint_handle (GtkStyle *style,
829 GtkStateType state_type,
830 GtkShadowType shadow_type,
838 GtkOrientation orientation);
843 #endif /* __cplusplus */
846 #endif /* __GTK_STYLE_H__ */