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