]> Pileus Git - ~andy/gtk/blob - gdk/gdkdrawable.h
#136672, reported by Christian Persch; fixes based on a patch by Soeren
[~andy/gtk] / gdk / gdkdrawable.h
1 #ifndef __GDK_DRAWABLE_H__
2 #define __GDK_DRAWABLE_H__
3
4 #include <gdk/gdktypes.h>
5 #include <gdk/gdkgc.h>
6 #include <gdk/gdkrgb.h>
7 #include <gdk-pixbuf/gdk-pixbuf.h>
8
9 #ifdef __cplusplus
10 extern "C" {
11 #endif /* __cplusplus */
12
13 typedef struct _GdkDrawableClass GdkDrawableClass;
14
15 #define GDK_TYPE_DRAWABLE              (gdk_drawable_get_type ())
16 #define GDK_DRAWABLE(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_DRAWABLE, GdkDrawable))
17 #define GDK_DRAWABLE_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_DRAWABLE, GdkDrawableClass))
18 #define GDK_IS_DRAWABLE(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_DRAWABLE))
19 #define GDK_IS_DRAWABLE_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_DRAWABLE))
20 #define GDK_DRAWABLE_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_DRAWABLE, GdkDrawableClass))
21
22 struct _GdkDrawable
23 {
24   GObject parent_instance;
25 };
26  
27 struct _GdkDrawableClass 
28 {
29   GObjectClass parent_class;
30   
31   GdkGC *(*create_gc)    (GdkDrawable    *drawable,
32                           GdkGCValues    *values,
33                           GdkGCValuesMask mask);
34   void (*draw_rectangle) (GdkDrawable  *drawable,
35                           GdkGC        *gc,
36                           gboolean      filled,
37                           gint          x,
38                           gint          y,
39                           gint          width,
40                           gint          height);
41   void (*draw_arc)       (GdkDrawable  *drawable,
42                           GdkGC        *gc,
43                           gboolean      filled,
44                           gint          x,
45                           gint          y,
46                           gint          width,
47                           gint          height,
48                           gint          angle1,
49                           gint          angle2);
50   void (*draw_polygon)   (GdkDrawable  *drawable,
51                           GdkGC        *gc,
52                           gboolean      filled,
53                           GdkPoint     *points,
54                           gint          npoints);
55   void (*draw_text)      (GdkDrawable  *drawable,
56                           GdkFont      *font,
57                           GdkGC        *gc,
58                           gint          x,
59                           gint          y,
60                           const gchar  *text,
61                           gint          text_length);
62   void (*draw_text_wc)   (GdkDrawable    *drawable,
63                           GdkFont        *font,
64                           GdkGC          *gc,
65                           gint            x,
66                           gint            y,
67                           const GdkWChar *text,
68                           gint            text_length);
69   void (*draw_drawable)  (GdkDrawable  *drawable,
70                           GdkGC        *gc,
71                           GdkDrawable  *src,
72                           gint          xsrc,
73                           gint          ysrc,
74                           gint          xdest,
75                           gint          ydest,
76                           gint          width,
77                           gint          height);
78   void (*draw_points)    (GdkDrawable  *drawable,
79                           GdkGC        *gc,
80                           GdkPoint     *points,
81                           gint          npoints);
82   void (*draw_segments)  (GdkDrawable  *drawable,
83                           GdkGC        *gc,
84                           GdkSegment   *segs,
85                           gint          nsegs);
86  void (*draw_lines)     (GdkDrawable  *drawable,
87                           GdkGC        *gc,
88                           GdkPoint     *points,
89                           gint          npoints);
90
91   void (*draw_glyphs)    (GdkDrawable      *drawable,
92                           GdkGC            *gc,
93                           PangoFont        *font,
94                           gint              x,
95                           gint              y,
96                           PangoGlyphString *glyphs);
97
98   void (*draw_image)     (GdkDrawable *drawable,
99                           GdkGC       *gc,
100                           GdkImage    *image,
101                           gint         xsrc,
102                           gint         ysrc,
103                           gint         xdest,
104                           gint         ydest,
105                           gint         width,
106                           gint         height);
107   
108   gint (*get_depth)      (GdkDrawable  *drawable);
109   void (*get_size)       (GdkDrawable  *drawable,
110                           gint         *width,
111                           gint         *height);
112
113   void (*set_colormap)   (GdkDrawable  *drawable,
114                           GdkColormap  *cmap);
115
116   GdkColormap* (*get_colormap)  (GdkDrawable  *drawable);
117   GdkVisual*   (*get_visual)    (GdkDrawable  *drawable);
118   GdkScreen*   (*get_screen)    (GdkDrawable  *drawable);
119
120   GdkImage*    (*get_image)  (GdkDrawable  *drawable,
121                               gint          x,
122                               gint          y,
123                               gint          width,
124                               gint          height);
125
126   GdkRegion*   (*get_clip_region)    (GdkDrawable  *drawable);
127   GdkRegion*   (*get_visible_region) (GdkDrawable  *drawable);
128
129   GdkDrawable* (*get_composite_drawable) (GdkDrawable *drawable,
130                                           gint         x,
131                                           gint         y,
132                                           gint         width,
133                                           gint         height,
134                                           gint        *composite_x_offset,
135                                           gint        *composite_y_offset);
136
137   void         (*draw_pixbuf) (GdkDrawable *drawable,
138                                GdkGC       *gc,
139                                GdkPixbuf   *pixbuf,
140                                gint         src_x,
141                                gint         src_y,
142                                gint         dest_x,
143                                gint         dest_y,
144                                gint         width,
145                                gint         height,
146                                GdkRgbDither dither,
147                                gint         x_dither,
148                                gint         y_dither);
149   GdkImage*    (*_copy_to_image) (GdkDrawable    *drawable,
150                                   GdkImage       *image,
151                                   gint            src_x,
152                                   gint            src_y,
153                                   gint            dest_x,
154                                   gint            dest_y,
155                                   gint            width,
156                                   gint            height);
157
158   /* Padding for future expansion */
159   void         (*_gdk_reserved1)  (void);
160   void         (*_gdk_reserved2)  (void);
161   void         (*_gdk_reserved3)  (void);
162   void         (*_gdk_reserved4)  (void);
163   void         (*_gdk_reserved5)  (void);
164   void         (*_gdk_reserved6)  (void);
165   void         (*_gdk_reserved7)  (void);
166   void         (*_gdk_reserved9)  (void);
167   void         (*_gdk_reserved10) (void);
168   void         (*_gdk_reserved11) (void);
169   void         (*_gdk_reserved12) (void);
170   void         (*_gdk_reserved13) (void);
171   void         (*_gdk_reserved14) (void);
172   void         (*_gdk_reserved15) (void);
173   void         (*_gdk_reserved16) (void);
174 };
175
176 GType           gdk_drawable_get_type     (void);
177
178 /* Manipulation of drawables
179  */
180
181 #ifndef GDK_DISABLE_DEPRECATED
182 void            gdk_drawable_set_data     (GdkDrawable    *drawable,
183                                            const gchar    *key,
184                                            gpointer       data,
185                                            GDestroyNotify  destroy_func);
186 gpointer        gdk_drawable_get_data     (GdkDrawable    *drawable,
187                                            const gchar    *key);
188 #endif /* GDK_DISABLE_DEPRECATED */
189
190 void            gdk_drawable_get_size     (GdkDrawable    *drawable,
191                                            gint           *width,
192                                            gint           *height);
193 void            gdk_drawable_set_colormap (GdkDrawable    *drawable,
194                                            GdkColormap    *colormap);
195 GdkColormap*    gdk_drawable_get_colormap (GdkDrawable    *drawable);
196 GdkVisual*      gdk_drawable_get_visual   (GdkDrawable    *drawable);
197 gint            gdk_drawable_get_depth    (GdkDrawable    *drawable);
198 GdkScreen*      gdk_drawable_get_screen   (GdkDrawable    *drawable);
199 GdkDisplay*     gdk_drawable_get_display  (GdkDrawable    *drawable);
200
201 #ifndef GDK_DISABLE_DEPRECATED
202 GdkDrawable*    gdk_drawable_ref          (GdkDrawable    *drawable);
203 void            gdk_drawable_unref        (GdkDrawable    *drawable);
204 #endif /* GDK_DISABLE_DEPRECATED */
205
206 /* Drawing
207  */
208 void gdk_draw_point     (GdkDrawable      *drawable,
209                          GdkGC            *gc,
210                          gint              x,
211                          gint              y);
212 void gdk_draw_line      (GdkDrawable      *drawable,
213                          GdkGC            *gc,
214                          gint              x1_,
215                          gint              y1_,
216                          gint              x2_,
217                          gint              y2_);
218 void gdk_draw_rectangle (GdkDrawable      *drawable,
219                          GdkGC            *gc,
220                          gboolean          filled,
221                          gint              x,
222                          gint              y,
223                          gint              width,
224                          gint              height);
225 void gdk_draw_arc       (GdkDrawable      *drawable,
226                          GdkGC            *gc,
227                          gboolean          filled,
228                          gint              x,
229                          gint              y,
230                          gint              width,
231                          gint              height,
232                          gint              angle1,
233                          gint              angle2);
234 void gdk_draw_polygon   (GdkDrawable      *drawable,
235                          GdkGC            *gc,
236                          gboolean          filled,
237                          GdkPoint         *points,
238                          gint              npoints);
239 #if !defined (GDK_DISABLE_DEPRECATED) || defined (GTK_COMPILATION)
240 /* Used by gtk_default_draw_string () */
241 void gdk_draw_string    (GdkDrawable      *drawable,
242                          GdkFont          *font,
243                          GdkGC            *gc,
244                          gint              x,
245                          gint              y,
246                          const gchar      *string);
247 #endif /* !GDK_DISABLE_DEPRECATED || GTK_COMPILATION */
248 #if !defined (GDK_DISABLE_DEPRECATED) || defined (GDK_COMPILATION)
249 /* Used by gdk_pixmap_draw_text (), gdk_window_draw_text() */
250 void gdk_draw_text      (GdkDrawable      *drawable,
251                          GdkFont          *font,
252                          GdkGC            *gc,
253                          gint              x,
254                          gint              y,
255                          const gchar      *text,
256                          gint              text_length);
257 /* Used by gdk_pixmap_draw_text_wc (), gdk_window_draw_text_wc () */
258 void gdk_draw_text_wc   (GdkDrawable      *drawable,
259                          GdkFont          *font,
260                          GdkGC            *gc,
261                          gint              x,
262                          gint              y,
263                          const GdkWChar   *text,
264                          gint              text_length);
265 #endif /* !GDK_DISABLE_DEPRECATED || GDK_COMPILATION */
266 void gdk_draw_drawable  (GdkDrawable      *drawable,
267                          GdkGC            *gc,
268                          GdkDrawable      *src,
269                          gint              xsrc,
270                          gint              ysrc,
271                          gint              xdest,
272                          gint              ydest,
273                          gint              width,
274                          gint              height);
275 void gdk_draw_image     (GdkDrawable      *drawable,
276                          GdkGC            *gc,
277                          GdkImage         *image,
278                          gint              xsrc,
279                          gint              ysrc,
280                          gint              xdest,
281                          gint              ydest,
282                          gint              width,
283                          gint              height);
284 void gdk_draw_points    (GdkDrawable      *drawable,
285                          GdkGC            *gc,
286                          GdkPoint         *points,
287                          gint              npoints);
288 void gdk_draw_segments  (GdkDrawable      *drawable,
289                          GdkGC            *gc,
290                          GdkSegment       *segs,
291                          gint              nsegs);
292 void gdk_draw_lines     (GdkDrawable      *drawable,
293                          GdkGC            *gc,
294                          GdkPoint         *points,
295                          gint              npoints);
296 void gdk_draw_pixbuf    (GdkDrawable      *drawable,
297                          GdkGC            *gc,
298                          GdkPixbuf        *pixbuf,
299                          gint              src_x,
300                          gint              src_y,
301                          gint              dest_x,
302                          gint              dest_y,
303                          gint              width,
304                          gint              height,
305                          GdkRgbDither      dither,
306                          gint              x_dither,
307                          gint              y_dither);
308
309 void gdk_draw_glyphs      (GdkDrawable      *drawable,
310                            GdkGC            *gc,
311                            PangoFont        *font,
312                            gint              x,
313                            gint              y,
314                            PangoGlyphString *glyphs);
315 void gdk_draw_layout_line (GdkDrawable      *drawable,
316                            GdkGC            *gc,
317                            gint              x,
318                            gint              y,
319                            PangoLayoutLine  *line);
320 void gdk_draw_layout      (GdkDrawable      *drawable,
321                            GdkGC            *gc,
322                            gint              x,
323                            gint              y,
324                            PangoLayout      *layout);
325
326 void gdk_draw_layout_line_with_colors (GdkDrawable     *drawable,
327                                        GdkGC           *gc,
328                                        gint             x,
329                                        gint             y,
330                                        PangoLayoutLine *line,
331                                        const GdkColor  *foreground,
332                                        const GdkColor  *background);
333 void gdk_draw_layout_with_colors      (GdkDrawable     *drawable,
334                                        GdkGC           *gc,
335                                        gint             x,
336                                        gint             y,
337                                        PangoLayout     *layout,
338                                        const GdkColor  *foreground,
339                                        const GdkColor  *background);
340
341 #ifndef GDK_DISABLE_DEPRECATED
342 #define gdk_draw_pixmap                gdk_draw_drawable
343 #define gdk_draw_bitmap                gdk_draw_drawable
344 #endif /* GDK_DISABLE_DEPRECATED */
345
346 GdkImage* gdk_drawable_get_image      (GdkDrawable *drawable,
347                                        gint         x,
348                                        gint         y,
349                                        gint         width,
350                                        gint         height);
351 GdkImage *gdk_drawable_copy_to_image (GdkDrawable  *drawable,
352                                       GdkImage     *image,
353                                       gint          src_x,
354                                       gint          src_y,
355                                       gint          dest_x,
356                                       gint          dest_y,
357                                       gint          width,
358                                       gint          height);
359
360 GdkRegion *gdk_drawable_get_clip_region    (GdkDrawable *drawable);
361 GdkRegion *gdk_drawable_get_visible_region (GdkDrawable *drawable);
362
363 #ifdef __cplusplus
364 }
365 #endif /* __cplusplus */
366
367 #endif /* __GDK_DRAWABLE_H__ */