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);
526 void gtk_paint_hline (GtkStyle *style,
528 GtkStateType state_type,
535 void gtk_paint_vline (GtkStyle *style,
537 GtkStateType state_type,
544 void gtk_paint_shadow (GtkStyle *style,
546 GtkStateType state_type,
547 GtkShadowType shadow_type,
555 void gtk_paint_polygon (GtkStyle *style,
557 GtkStateType state_type,
558 GtkShadowType shadow_type,
565 void gtk_paint_arrow (GtkStyle *style,
567 GtkStateType state_type,
568 GtkShadowType shadow_type,
572 GtkArrowType arrow_type,
578 void gtk_paint_diamond (GtkStyle *style,
580 GtkStateType state_type,
581 GtkShadowType shadow_type,
589 void gtk_paint_oval (GtkStyle *style,
591 GtkStateType state_type,
592 GtkShadowType shadow_type,
600 void gtk_paint_string (GtkStyle *style,
602 GtkStateType state_type,
608 const gchar *string);
609 void gtk_paint_box (GtkStyle *style,
611 GtkStateType state_type,
612 GtkShadowType shadow_type,
620 void gtk_paint_flat_box (GtkStyle *style,
622 GtkStateType state_type,
623 GtkShadowType shadow_type,
631 void gtk_paint_check (GtkStyle *style,
633 GtkStateType state_type,
634 GtkShadowType shadow_type,
642 void gtk_paint_option (GtkStyle *style,
644 GtkStateType state_type,
645 GtkShadowType shadow_type,
653 void gtk_paint_cross (GtkStyle *style,
655 GtkStateType state_type,
656 GtkShadowType shadow_type,
664 void gtk_paint_ramp (GtkStyle *style,
666 GtkStateType state_type,
667 GtkShadowType shadow_type,
671 GtkArrowType arrow_type,
676 void gtk_paint_tab (GtkStyle *style,
678 GtkStateType state_type,
679 GtkShadowType shadow_type,
687 void gtk_paint_shadow_gap (GtkStyle *style,
689 GtkStateType state_type,
690 GtkShadowType shadow_type,
698 GtkPositionType gap_side,
701 void gtk_paint_box_gap (GtkStyle *style,
703 GtkStateType state_type,
704 GtkShadowType shadow_type,
712 GtkPositionType gap_side,
715 void gtk_paint_extension (GtkStyle *style,
717 GtkStateType state_type,
718 GtkShadowType shadow_type,
726 GtkPositionType gap_side);
727 void gtk_paint_focus (GtkStyle *style,
736 void gtk_paint_slider (GtkStyle *style,
738 GtkStateType state_type,
739 GtkShadowType shadow_type,
747 GtkOrientation orientation);
748 void gtk_paint_handle (GtkStyle *style,
750 GtkStateType state_type,
751 GtkShadowType shadow_type,
759 GtkOrientation orientation);
763 #endif /* __cplusplus */
766 #endif /* __GTK_STYLE_H__ */