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 Library 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 * Library General Public License for more details.
14 * You should have received a copy of the GNU Library 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.
19 #ifndef __GTK_STYLE_H__
20 #define __GTK_STYLE_H__
24 #include <gtk/gtkenums.h>
28 #endif /* __cplusplus */
30 typedef struct _GtkStyle GtkStyle;
31 typedef struct _GtkStyleClass GtkStyleClass;
33 /* Some forward declarations needed to rationalize the header
37 typedef struct _GtkThemeEngine GtkThemeEngine;
38 typedef struct _GtkRcStyle GtkRcStyle;
40 /* We make this forward declaration here, since we pass
41 * GtkWidgt's to the draw functions.
43 typedef struct _GtkWidget GtkWidget;
45 /* This is used for having dynamic style changing stuff */
46 /* fg, bg, light, dark, mid, text, base */
47 #define GTK_STYLE_NUM_STYLECOLORS() 7*5
49 #define GTK_STYLE_ATTACHED(style) (((GtkStyle*)(style))->attach_count > 0)
75 GdkPixmap *bg_pixmap[5];
82 GdkColormap *colormap;
84 GtkStyleClass *klass; /* Not private - reorder me */
85 GtkThemeEngine *engine;
89 GtkRcStyle *rc_style; /* the Rc style from which this style
99 void (*draw_hline) (GtkStyle *style,
101 GtkStateType state_type,
108 void (*draw_vline) (GtkStyle *style,
110 GtkStateType state_type,
117 void (*draw_shadow) (GtkStyle *style,
119 GtkStateType state_type,
120 GtkShadowType shadow_type,
128 void (*draw_polygon) (GtkStyle *style,
130 GtkStateType state_type,
131 GtkShadowType shadow_type,
138 void (*draw_arrow) (GtkStyle *style,
140 GtkStateType state_type,
141 GtkShadowType shadow_type,
145 GtkArrowType arrow_type,
151 void (*draw_diamond) (GtkStyle *style,
153 GtkStateType state_type,
154 GtkShadowType shadow_type,
162 void (*draw_oval) (GtkStyle *style,
164 GtkStateType state_type,
165 GtkShadowType shadow_type,
173 void (*draw_string) (GtkStyle *style,
175 GtkStateType state_type,
181 const gchar *string);
182 void (*draw_box) (GtkStyle *style,
184 GtkStateType state_type,
185 GtkShadowType shadow_type,
193 void (*draw_flat_box) (GtkStyle *style,
195 GtkStateType state_type,
196 GtkShadowType shadow_type,
204 void (*draw_check) (GtkStyle *style,
206 GtkStateType state_type,
207 GtkShadowType shadow_type,
215 void (*draw_option) (GtkStyle *style,
217 GtkStateType state_type,
218 GtkShadowType shadow_type,
226 void (*draw_cross) (GtkStyle *style,
228 GtkStateType state_type,
229 GtkShadowType shadow_type,
237 void (*draw_ramp) (GtkStyle *style,
239 GtkStateType state_type,
240 GtkShadowType shadow_type,
244 GtkArrowType arrow_type,
249 void (*draw_tab) (GtkStyle *style,
251 GtkStateType state_type,
252 GtkShadowType shadow_type,
260 void (*draw_shadow_gap) (GtkStyle *style,
262 GtkStateType state_type,
263 GtkShadowType shadow_type,
271 GtkPositionType gap_side,
274 void (*draw_box_gap) (GtkStyle *style,
276 GtkStateType state_type,
277 GtkShadowType shadow_type,
285 GtkPositionType gap_side,
288 void (*draw_extension) (GtkStyle *style,
290 GtkStateType state_type,
291 GtkShadowType shadow_type,
299 GtkPositionType gap_side);
300 void (*draw_focus) (GtkStyle *style,
309 void (*draw_slider) (GtkStyle *style,
311 GtkStateType state_type,
312 GtkShadowType shadow_type,
320 GtkOrientation orientation);
321 void (*draw_handle) (GtkStyle *style,
323 GtkStateType state_type,
324 GtkShadowType shadow_type,
332 GtkOrientation orientation);
335 GtkStyle* gtk_style_new (void);
336 GtkStyle* gtk_style_copy (GtkStyle *style);
337 GtkStyle* gtk_style_attach (GtkStyle *style,
339 void gtk_style_detach (GtkStyle *style);
340 GtkStyle* gtk_style_ref (GtkStyle *style);
341 void gtk_style_unref (GtkStyle *style);
342 void gtk_style_set_background (GtkStyle *style,
344 GtkStateType state_type);
345 void gtk_style_apply_default_pixmap(GtkStyle *style,
347 GtkStateType state_type,
354 void gtk_draw_hline (GtkStyle *style,
356 GtkStateType state_type,
360 void gtk_draw_vline (GtkStyle *style,
362 GtkStateType state_type,
366 void gtk_draw_shadow (GtkStyle *style,
368 GtkStateType state_type,
369 GtkShadowType shadow_type,
374 void gtk_draw_polygon (GtkStyle *style,
376 GtkStateType state_type,
377 GtkShadowType shadow_type,
381 void gtk_draw_arrow (GtkStyle *style,
383 GtkStateType state_type,
384 GtkShadowType shadow_type,
385 GtkArrowType arrow_type,
391 void gtk_draw_diamond (GtkStyle *style,
393 GtkStateType state_type,
394 GtkShadowType shadow_type,
399 void gtk_draw_oval (GtkStyle *style,
401 GtkStateType state_type,
402 GtkShadowType shadow_type,
407 void gtk_draw_string (GtkStyle *style,
409 GtkStateType state_type,
412 const gchar *string);
413 void gtk_draw_box (GtkStyle *style,
415 GtkStateType state_type,
416 GtkShadowType shadow_type,
421 void gtk_draw_flat_box (GtkStyle *style,
423 GtkStateType state_type,
424 GtkShadowType shadow_type,
429 void gtk_draw_check (GtkStyle *style,
431 GtkStateType state_type,
432 GtkShadowType shadow_type,
437 void gtk_draw_option (GtkStyle *style,
439 GtkStateType state_type,
440 GtkShadowType shadow_type,
445 void gtk_draw_cross (GtkStyle *style,
447 GtkStateType state_type,
448 GtkShadowType shadow_type,
453 void gtk_draw_ramp (GtkStyle *style,
455 GtkStateType state_type,
456 GtkShadowType shadow_type,
457 GtkArrowType arrow_type,
462 void gtk_draw_tab (GtkStyle *style,
464 GtkStateType state_type,
465 GtkShadowType shadow_type,
470 void gtk_draw_shadow_gap (GtkStyle *style,
472 GtkStateType state_type,
473 GtkShadowType shadow_type,
478 GtkPositionType gap_side,
481 void gtk_draw_box_gap (GtkStyle *style,
483 GtkStateType state_type,
484 GtkShadowType shadow_type,
489 GtkPositionType gap_side,
492 void gtk_draw_extension (GtkStyle *style,
494 GtkStateType state_type,
495 GtkShadowType shadow_type,
500 GtkPositionType gap_side);
501 void gtk_draw_focus (GtkStyle *style,
507 void gtk_draw_slider (GtkStyle *style,
509 GtkStateType state_type,
510 GtkShadowType shadow_type,
515 GtkOrientation orientation);
516 void gtk_draw_handle (GtkStyle *style,
518 GtkStateType state_type,
519 GtkShadowType shadow_type,
524 GtkOrientation orientation);
546 void gtk_paint_hline (GtkStyle *style,
548 GtkStateType state_type,
555 void gtk_paint_vline (GtkStyle *style,
557 GtkStateType state_type,
564 void gtk_paint_shadow (GtkStyle *style,
566 GtkStateType state_type,
567 GtkShadowType shadow_type,
575 void gtk_paint_polygon (GtkStyle *style,
577 GtkStateType state_type,
578 GtkShadowType shadow_type,
585 void gtk_paint_arrow (GtkStyle *style,
587 GtkStateType state_type,
588 GtkShadowType shadow_type,
592 GtkArrowType arrow_type,
598 void gtk_paint_diamond (GtkStyle *style,
600 GtkStateType state_type,
601 GtkShadowType shadow_type,
609 void gtk_paint_oval (GtkStyle *style,
611 GtkStateType state_type,
612 GtkShadowType shadow_type,
620 void gtk_paint_string (GtkStyle *style,
622 GtkStateType state_type,
628 const gchar *string);
629 void gtk_paint_box (GtkStyle *style,
631 GtkStateType state_type,
632 GtkShadowType shadow_type,
640 void gtk_paint_flat_box (GtkStyle *style,
642 GtkStateType state_type,
643 GtkShadowType shadow_type,
651 void gtk_paint_check (GtkStyle *style,
653 GtkStateType state_type,
654 GtkShadowType shadow_type,
662 void gtk_paint_option (GtkStyle *style,
664 GtkStateType state_type,
665 GtkShadowType shadow_type,
673 void gtk_paint_cross (GtkStyle *style,
675 GtkStateType state_type,
676 GtkShadowType shadow_type,
684 void gtk_paint_ramp (GtkStyle *style,
686 GtkStateType state_type,
687 GtkShadowType shadow_type,
691 GtkArrowType arrow_type,
696 void gtk_paint_tab (GtkStyle *style,
698 GtkStateType state_type,
699 GtkShadowType shadow_type,
707 void gtk_paint_shadow_gap (GtkStyle *style,
709 GtkStateType state_type,
710 GtkShadowType shadow_type,
718 GtkPositionType gap_side,
721 void gtk_paint_box_gap (GtkStyle *style,
723 GtkStateType state_type,
724 GtkShadowType shadow_type,
732 GtkPositionType gap_side,
735 void gtk_paint_extension (GtkStyle *style,
737 GtkStateType state_type,
738 GtkShadowType shadow_type,
746 GtkPositionType gap_side);
747 void gtk_paint_focus (GtkStyle *style,
756 void gtk_paint_slider (GtkStyle *style,
758 GtkStateType state_type,
759 GtkShadowType shadow_type,
767 GtkOrientation orientation);
768 void gtk_paint_handle (GtkStyle *style,
770 GtkStateType state_type,
771 GtkShadowType shadow_type,
779 GtkOrientation orientation);
781 void gtk_reset_widget_shapes(GtkWidget *widget);
785 #endif /* __cplusplus */
788 #endif /* __GTK_STYLE_H__ */