]> Pileus Git - ~andy/gtk/blob - gdk/x11/gdkdrawable-x11.h
1de1e50c3e270861f65136863bb72fc64a077b21
[~andy/gtk] / gdk / x11 / gdkdrawable-x11.h
1 /* GDK - The GIMP Drawing Kit
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 Lesser 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  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser 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
20 /*
21  * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
22  * file for a list of people on the GTK+ Team.  See the ChangeLog
23  * files for a list of changes.  These files are distributed with
24  * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
25  */
26
27 #ifndef __GDK_DRAWABLE_X11_H__
28 #define __GDK_DRAWABLE_X11_H__
29
30 #include <config.h>
31
32 #include <gdk/gdkdrawable.h>
33
34 #include <X11/Xlib.h>
35 #include <X11/Xft/Xft.h>
36
37 #ifdef __cplusplus
38 extern "C" {
39 #endif /* __cplusplus */
40
41 /* Drawable implementation for X11
42  */
43
44 typedef enum
45 {
46   GDK_X11_FORMAT_NONE,
47   GDK_X11_FORMAT_EXACT_MASK,
48   GDK_X11_FORMAT_ARGB_MASK,
49   GDK_X11_FORMAT_ARGB
50 } GdkX11FormatType;
51
52 typedef struct _GdkDrawableImplX11 GdkDrawableImplX11;
53 typedef struct _GdkDrawableImplX11Class GdkDrawableImplX11Class;
54
55 #define GDK_TYPE_DRAWABLE_IMPL_X11              (_gdk_drawable_impl_x11_get_type ())
56 #define GDK_DRAWABLE_IMPL_X11(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_DRAWABLE_IMPL_X11, GdkDrawableImplX11))
57 #define GDK_DRAWABLE_IMPL_X11_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_DRAWABLE_IMPL_X11, GdkDrawableImplX11Class))
58 #define GDK_IS_DRAWABLE_IMPL_X11(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_DRAWABLE_IMPL_X11))
59 #define GDK_IS_DRAWABLE_IMPL_X11_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_DRAWABLE_IMPL_X11))
60 #define GDK_DRAWABLE_IMPL_X11_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_DRAWABLE_IMPL_X11, GdkDrawableImplX11Class))
61
62 struct _GdkDrawableImplX11
63 {
64   GdkDrawable parent_instance;
65
66   GdkDrawable *wrapper;
67   
68   GdkColormap *colormap;
69   
70   Window xid;
71   GdkScreen *screen;
72
73   XftDraw *xft_draw;
74   cairo_surface_t *cairo_surface;
75 };
76  
77 struct _GdkDrawableImplX11Class 
78 {
79   GdkDrawableClass parent_class;
80
81 };
82
83 GType _gdk_drawable_impl_x11_get_type (void);
84
85 void  _gdk_x11_convert_to_format      (guchar           *src_buf,
86                                        gint              src_rowstride,
87                                        guchar           *dest_buf,
88                                        gint              dest_rowstride,
89                                        GdkX11FormatType  dest_format,
90                                        GdkByteOrder      dest_byteorder,
91                                        gint              width,
92                                        gint              height);
93
94 /* Note that the following take GdkDrawableImplX11, not the wrapper drawable */
95 void _gdk_x11_drawable_draw_xtrapezoids (GdkDrawable  *drawable,
96                                          GdkGC        *gc,
97                                          XTrapezoid   *xtrapezoids,
98                                          int           n_trapezoids);
99 void _gdk_x11_drawable_draw_xft_glyphs  (GdkDrawable  *drawable,
100                                          GdkGC        *gc,
101                                          XftFont      *xft_font,
102                                          XftGlyphSpec *glyphs,
103                                          gint          n_glyphs);
104
105 #ifdef __cplusplus
106 }
107 #endif /* __cplusplus */
108
109 #endif /* __GDK_DRAWABLE_X11_H__ */