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