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_background (GtkStyle *style,
348 GtkStateType state_type,
355 void gtk_draw_hline (GtkStyle *style,
357 GtkStateType state_type,
361 void gtk_draw_vline (GtkStyle *style,
363 GtkStateType state_type,
367 void gtk_draw_shadow (GtkStyle *style,
369 GtkStateType state_type,
370 GtkShadowType shadow_type,
375 void gtk_draw_polygon (GtkStyle *style,
377 GtkStateType state_type,
378 GtkShadowType shadow_type,
382 void gtk_draw_arrow (GtkStyle *style,
384 GtkStateType state_type,
385 GtkShadowType shadow_type,
386 GtkArrowType arrow_type,
392 void gtk_draw_diamond (GtkStyle *style,
394 GtkStateType state_type,
395 GtkShadowType shadow_type,
400 void gtk_draw_oval (GtkStyle *style,
402 GtkStateType state_type,
403 GtkShadowType shadow_type,
408 void gtk_draw_string (GtkStyle *style,
410 GtkStateType state_type,
413 const gchar *string);
414 void gtk_draw_box (GtkStyle *style,
416 GtkStateType state_type,
417 GtkShadowType shadow_type,
422 void gtk_draw_flat_box (GtkStyle *style,
424 GtkStateType state_type,
425 GtkShadowType shadow_type,
430 void gtk_draw_check (GtkStyle *style,
432 GtkStateType state_type,
433 GtkShadowType shadow_type,
438 void gtk_draw_option (GtkStyle *style,
440 GtkStateType state_type,
441 GtkShadowType shadow_type,
446 void gtk_draw_cross (GtkStyle *style,
448 GtkStateType state_type,
449 GtkShadowType shadow_type,
454 void gtk_draw_ramp (GtkStyle *style,
456 GtkStateType state_type,
457 GtkShadowType shadow_type,
458 GtkArrowType arrow_type,
463 void gtk_draw_tab (GtkStyle *style,
465 GtkStateType state_type,
466 GtkShadowType shadow_type,
471 void gtk_draw_shadow_gap (GtkStyle *style,
473 GtkStateType state_type,
474 GtkShadowType shadow_type,
479 GtkPositionType gap_side,
482 void gtk_draw_box_gap (GtkStyle *style,
484 GtkStateType state_type,
485 GtkShadowType shadow_type,
490 GtkPositionType gap_side,
493 void gtk_draw_extension (GtkStyle *style,
495 GtkStateType state_type,
496 GtkShadowType shadow_type,
501 GtkPositionType gap_side);
502 void gtk_draw_focus (GtkStyle *style,
508 void gtk_draw_slider (GtkStyle *style,
510 GtkStateType state_type,
511 GtkShadowType shadow_type,
516 GtkOrientation orientation);
517 void gtk_draw_handle (GtkStyle *style,
519 GtkStateType state_type,
520 GtkShadowType shadow_type,
525 GtkOrientation orientation);
527 void gtk_paint_hline (GtkStyle *style,
529 GtkStateType state_type,
536 void gtk_paint_vline (GtkStyle *style,
538 GtkStateType state_type,
545 void gtk_paint_shadow (GtkStyle *style,
547 GtkStateType state_type,
548 GtkShadowType shadow_type,
556 void gtk_paint_polygon (GtkStyle *style,
558 GtkStateType state_type,
559 GtkShadowType shadow_type,
566 void gtk_paint_arrow (GtkStyle *style,
568 GtkStateType state_type,
569 GtkShadowType shadow_type,
573 GtkArrowType arrow_type,
579 void gtk_paint_diamond (GtkStyle *style,
581 GtkStateType state_type,
582 GtkShadowType shadow_type,
590 void gtk_paint_oval (GtkStyle *style,
592 GtkStateType state_type,
593 GtkShadowType shadow_type,
601 void gtk_paint_string (GtkStyle *style,
603 GtkStateType state_type,
609 const gchar *string);
610 void gtk_paint_box (GtkStyle *style,
612 GtkStateType state_type,
613 GtkShadowType shadow_type,
621 void gtk_paint_flat_box (GtkStyle *style,
623 GtkStateType state_type,
624 GtkShadowType shadow_type,
632 void gtk_paint_check (GtkStyle *style,
634 GtkStateType state_type,
635 GtkShadowType shadow_type,
643 void gtk_paint_option (GtkStyle *style,
645 GtkStateType state_type,
646 GtkShadowType shadow_type,
654 void gtk_paint_cross (GtkStyle *style,
656 GtkStateType state_type,
657 GtkShadowType shadow_type,
665 void gtk_paint_ramp (GtkStyle *style,
667 GtkStateType state_type,
668 GtkShadowType shadow_type,
672 GtkArrowType arrow_type,
677 void gtk_paint_tab (GtkStyle *style,
679 GtkStateType state_type,
680 GtkShadowType shadow_type,
688 void gtk_paint_shadow_gap (GtkStyle *style,
690 GtkStateType state_type,
691 GtkShadowType shadow_type,
699 GtkPositionType gap_side,
702 void gtk_paint_box_gap (GtkStyle *style,
704 GtkStateType state_type,
705 GtkShadowType shadow_type,
713 GtkPositionType gap_side,
716 void gtk_paint_extension (GtkStyle *style,
718 GtkStateType state_type,
719 GtkShadowType shadow_type,
727 GtkPositionType gap_side);
728 void gtk_paint_focus (GtkStyle *style,
737 void gtk_paint_slider (GtkStyle *style,
739 GtkStateType state_type,
740 GtkShadowType shadow_type,
748 GtkOrientation orientation);
749 void gtk_paint_handle (GtkStyle *style,
751 GtkStateType state_type,
752 GtkShadowType shadow_type,
760 GtkOrientation orientation);
764 void gtk_style_apply_default_pixmap (GtkStyle *style,
766 GtkStateType state_type,
775 #endif /* __cplusplus */
778 #endif /* __GTK_STYLE_H__ */