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 void gtk_draw_string (GtkStyle *style,
466 GtkStateType state_type,
469 const gchar *string);
470 void gtk_draw_box (GtkStyle *style,
472 GtkStateType state_type,
473 GtkShadowType shadow_type,
478 void gtk_draw_flat_box (GtkStyle *style,
480 GtkStateType state_type,
481 GtkShadowType shadow_type,
486 void gtk_draw_check (GtkStyle *style,
488 GtkStateType state_type,
489 GtkShadowType shadow_type,
494 void gtk_draw_option (GtkStyle *style,
496 GtkStateType state_type,
497 GtkShadowType shadow_type,
502 void gtk_draw_tab (GtkStyle *style,
504 GtkStateType state_type,
505 GtkShadowType shadow_type,
510 void gtk_draw_shadow_gap (GtkStyle *style,
512 GtkStateType state_type,
513 GtkShadowType shadow_type,
518 GtkPositionType gap_side,
521 void gtk_draw_box_gap (GtkStyle *style,
523 GtkStateType state_type,
524 GtkShadowType shadow_type,
529 GtkPositionType gap_side,
532 void gtk_draw_extension (GtkStyle *style,
534 GtkStateType state_type,
535 GtkShadowType shadow_type,
540 GtkPositionType gap_side);
541 void gtk_draw_focus (GtkStyle *style,
547 void gtk_draw_slider (GtkStyle *style,
549 GtkStateType state_type,
550 GtkShadowType shadow_type,
555 GtkOrientation orientation);
556 void gtk_draw_handle (GtkStyle *style,
558 GtkStateType state_type,
559 GtkShadowType shadow_type,
564 GtkOrientation orientation);
565 void gtk_draw_expander (GtkStyle *style,
567 GtkStateType state_type,
571 void gtk_draw_layout (GtkStyle *style,
573 GtkStateType state_type,
576 PangoLayout *layout);
578 void gtk_paint_hline (GtkStyle *style,
580 GtkStateType state_type,
587 void gtk_paint_vline (GtkStyle *style,
589 GtkStateType state_type,
596 void gtk_paint_shadow (GtkStyle *style,
598 GtkStateType state_type,
599 GtkShadowType shadow_type,
607 void gtk_paint_polygon (GtkStyle *style,
609 GtkStateType state_type,
610 GtkShadowType shadow_type,
617 void gtk_paint_arrow (GtkStyle *style,
619 GtkStateType state_type,
620 GtkShadowType shadow_type,
624 GtkArrowType arrow_type,
630 void gtk_paint_diamond (GtkStyle *style,
632 GtkStateType state_type,
633 GtkShadowType shadow_type,
641 void gtk_paint_string (GtkStyle *style,
643 GtkStateType state_type,
649 const gchar *string);
650 void gtk_paint_box (GtkStyle *style,
652 GtkStateType state_type,
653 GtkShadowType shadow_type,
661 void gtk_paint_flat_box (GtkStyle *style,
663 GtkStateType state_type,
664 GtkShadowType shadow_type,
672 void gtk_paint_check (GtkStyle *style,
674 GtkStateType state_type,
675 GtkShadowType shadow_type,
683 void gtk_paint_option (GtkStyle *style,
685 GtkStateType state_type,
686 GtkShadowType shadow_type,
694 void gtk_paint_tab (GtkStyle *style,
696 GtkStateType state_type,
697 GtkShadowType shadow_type,
705 void gtk_paint_shadow_gap (GtkStyle *style,
707 GtkStateType state_type,
708 GtkShadowType shadow_type,
716 GtkPositionType gap_side,
719 void gtk_paint_box_gap (GtkStyle *style,
721 GtkStateType state_type,
722 GtkShadowType shadow_type,
730 GtkPositionType gap_side,
733 void gtk_paint_extension (GtkStyle *style,
735 GtkStateType state_type,
736 GtkShadowType shadow_type,
744 GtkPositionType gap_side);
745 void gtk_paint_focus (GtkStyle *style,
754 void gtk_paint_slider (GtkStyle *style,
756 GtkStateType state_type,
757 GtkShadowType shadow_type,
765 GtkOrientation orientation);
766 void gtk_paint_handle (GtkStyle *style,
768 GtkStateType state_type,
769 GtkShadowType shadow_type,
777 GtkOrientation orientation);
778 void gtk_paint_expander (GtkStyle *style,
780 GtkStateType state_type,
787 void gtk_paint_layout (GtkStyle *style,
789 GtkStateType state_type,
795 PangoLayout *layout);
800 #endif /* __cplusplus */
803 #endif /* __GTK_STYLE_H__ */