]> Pileus Git - ~andy/gtk/blob - gtk/gtkstyle.h
Changed LGPL address for FSF in all .h and .c files
[~andy/gtk] / gtk / gtkstyle.h
1 /* GTK - The GIMP Toolkit
2  * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
3  *
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.
8  *
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.
13  *
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.
18  */
19 #ifndef __GTK_STYLE_H__
20 #define __GTK_STYLE_H__
21
22
23 #include <gdk/gdk.h>
24 #include <gtk/gtkenums.h>
25
26
27 #ifdef __cplusplus
28 extern "C" {
29 #endif /* __cplusplus */
30
31
32 typedef struct _GtkStyle       GtkStyle;
33 typedef struct _GtkStyleClass  GtkStyleClass;
34
35 /* This is used for having dynamic style changing stuff */
36 /* fg, bg, light, dark, mid, text, base */
37 #define GTK_STYLE_NUM_STYLECOLORS() 7*5
38
39 #define GTK_STYLE_ATTACHED(style)       (((GtkStyle*)(style))->attach_count > 0)
40
41 struct _GtkStyle
42 {
43   GdkColor fg[5];
44   GdkColor bg[5];
45   GdkColor light[5];
46   GdkColor dark[5];
47   GdkColor mid[5];
48   GdkColor text[5];
49   GdkColor base[5];
50
51   GdkColor black;
52   GdkColor white;
53   GdkFont *font;
54
55   GdkGC *fg_gc[5];
56   GdkGC *bg_gc[5];
57   GdkGC *light_gc[5];
58   GdkGC *dark_gc[5];
59   GdkGC *mid_gc[5];
60   GdkGC *text_gc[5];
61   GdkGC *base_gc[5];
62   GdkGC *black_gc;
63   GdkGC *white_gc;
64
65   GdkPixmap *bg_pixmap[5];
66
67   gint ref_count;
68   gint attach_count;
69
70   gint depth;
71   GdkColormap *colormap;
72
73   GtkStyleClass *klass;
74 };
75
76 struct _GtkStyleClass
77 {
78   gint xthickness;
79   gint ythickness;
80
81   void (*draw_hline)   (GtkStyle      *style,
82                         GdkWindow     *window,
83                         GtkStateType   state_type,
84                         gint           x1,
85                         gint           x2,
86                         gint           y);
87   void (*draw_vline)   (GtkStyle      *style,
88                         GdkWindow     *window,
89                         GtkStateType   state_type,
90                         gint           y1,
91                         gint           y2,
92                         gint           x);
93   void (*draw_shadow)  (GtkStyle      *style,
94                         GdkWindow     *window,
95                         GtkStateType   state_type,
96                         GtkShadowType  shadow_type,
97                         gint           x,
98                         gint           y,
99                         gint           width,
100                         gint           height);
101   void (*draw_polygon) (GtkStyle      *style,
102                         GdkWindow     *window,
103                         GtkStateType   state_type,
104                         GtkShadowType  shadow_type,
105                         GdkPoint      *point,
106                         gint           npoints,
107                         gint           fill);
108   void (*draw_arrow)   (GtkStyle      *style,
109                         GdkWindow     *window,
110                         GtkStateType   state_type,
111                         GtkShadowType  shadow_type,
112                         GtkArrowType   arrow_type,
113                         gint           fill,
114                         gint           x,
115                         gint           y,
116                         gint           width,
117                         gint           height);
118   void (*draw_diamond) (GtkStyle      *style,
119                         GdkWindow     *window,
120                         GtkStateType   state_type,
121                         GtkShadowType  shadow_type,
122                         gint           x,
123                         gint           y,
124                         gint           width,
125                         gint           height);
126   void (*draw_oval)    (GtkStyle      *style,
127                         GdkWindow     *window,
128                         GtkStateType   state_type,
129                         GtkShadowType  shadow_type,
130                         gint           x,
131                         gint           y,
132                         gint           width,
133                         gint           height);
134   void (*draw_string)  (GtkStyle      *style,
135                         GdkWindow     *window,
136                         GtkStateType   state_type,
137                         gint           x,
138                         gint           y,
139                         const gchar   *string);
140 };
141
142
143 GtkStyle* gtk_style_new            (void);
144 GtkStyle* gtk_style_copy           (GtkStyle     *style);
145 GtkStyle* gtk_style_attach         (GtkStyle     *style,
146                                     GdkWindow    *window);
147 void      gtk_style_detach         (GtkStyle     *style);
148 GtkStyle* gtk_style_ref            (GtkStyle     *style);
149 void      gtk_style_unref          (GtkStyle     *style);
150 void      gtk_style_set_background (GtkStyle     *style,
151                                     GdkWindow    *window,
152                                     GtkStateType  state_type);
153
154
155 void gtk_draw_hline   (GtkStyle      *style,
156                        GdkWindow     *window,
157                        GtkStateType   state_type,
158                        gint           x1,
159                        gint           x2,
160                        gint           y);
161 void gtk_draw_vline   (GtkStyle      *style,
162                        GdkWindow     *window,
163                        GtkStateType   state_type,
164                        gint           y1,
165                        gint           y2,
166                        gint           x);
167 void gtk_draw_shadow  (GtkStyle      *style,
168                        GdkWindow     *window,
169                        GtkStateType   state_type,
170                        GtkShadowType  shadow_type,
171                        gint           x,
172                        gint           y,
173                        gint           width,
174                        gint           height);
175 void gtk_draw_polygon (GtkStyle      *style,
176                        GdkWindow     *window,
177                        GtkStateType   state_type,
178                        GtkShadowType  shadow_type,
179                        GdkPoint      *points,
180                        gint           npoints,
181                        gint           fill);
182 void gtk_draw_arrow   (GtkStyle      *style,
183                        GdkWindow     *window,
184                        GtkStateType   state_type,
185                        GtkShadowType  shadow_type,
186                        GtkArrowType   arrow_type,
187                        gint           fill,
188                        gint           x,
189                        gint           y,
190                        gint           width,
191                        gint           height);
192 void gtk_draw_diamond (GtkStyle      *style,
193                        GdkWindow     *window,
194                        GtkStateType   state_type,
195                        GtkShadowType  shadow_type,
196                        gint           x,
197                        gint           y,
198                        gint           width,
199                        gint           height);
200 void gtk_draw_oval    (GtkStyle      *style,
201                        GdkWindow     *window,
202                        GtkStateType   state_type,
203                        GtkShadowType  shadow_type,
204                        gint           x,
205                        gint           y,
206                        gint           width,
207                        gint           height);
208 void gtk_draw_string  (GtkStyle      *style,
209                        GdkWindow     *window,
210                        GtkStateType   state_type,
211                        gint           x,
212                        gint           y,
213                        const gchar   *string);
214
215
216 #ifdef __cplusplus
217 }
218 #endif /* __cplusplus */
219
220
221 #endif /* __GTK_STYLE_H__ */