]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Add initial x11, xcb, and cairo-xcb bindings
authorJürg Billeter <j@bitron.ch>
Thu, 23 Apr 2009 22:09:08 +0000 (00:09 +0200)
committerJürg Billeter <j@bitron.ch>
Thu, 7 May 2009 19:47:17 +0000 (21:47 +0200)
Fixes bug 515435.

vapi/Makefile.am
vapi/cairo-xcb.deps [new file with mode: 0644]
vapi/cairo-xcb.vapi [new file with mode: 0644]
vapi/gdk-2.0.vapi
vapi/gdk-x11-2.0.deps
vapi/packages/gdk-2.0/gdk-2.0.metadata
vapi/x11.vapi [new file with mode: 0644]
vapi/xcb.vapi [new file with mode: 0644]

index f6f23415c3b16a5b8bef403625b3c9e875e7e9ac..e2733b9f825922f79445101ce4f77be29101e410 100644 (file)
@@ -9,6 +9,8 @@ dist_vapi_DATA = \
        atk.vapi \
        bzlib.vapi \
        cairo.vapi \
+       cairo-xcb.deps \
+       cairo-xcb.vapi \
        curses.vapi \
        dbus-glib-1.vapi \
        enchant.vapi \
@@ -141,6 +143,8 @@ dist_vapi_DATA = \
        vte.vapi \
        webkit-1.0.deps \
        webkit-1.0.vapi \
+       x11.vapi \
+       xcb.vapi \
        zlib.vapi \
        $(NULL)
 
diff --git a/vapi/cairo-xcb.deps b/vapi/cairo-xcb.deps
new file mode 100644 (file)
index 0000000..76d7f9e
--- /dev/null
@@ -0,0 +1,3 @@
+cairo
+xcb
+
diff --git a/vapi/cairo-xcb.vapi b/vapi/cairo-xcb.vapi
new file mode 100644 (file)
index 0000000..066ac9f
--- /dev/null
@@ -0,0 +1,31 @@
+/* cairo-xcb.vala
+ *
+ * Copyright (C) 2009  Jürg Billeter
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+ *
+ * Author:
+ *     Jürg Billeter <j@bitron.ch>
+ */
+
+namespace Cairo {
+       [Compact]
+       [CCode (cname = "cairo_surface_t", cheader_filename = "cairo-xcb.h")]
+       public class XcbSurface : Surface {
+               [CCode (cname = "cairo_xcb_surface_create")]
+               public XcbSurface (Xcb.Connection connection, Xcb.Drawable drawable, Xcb.VisualType visual, int width, int height);
+               public void set_size (int width, int height);
+       }
+}
index 38e1287c038ce6175acfdc546c5410abd72e70e4..b73a8fe1a9548fdc93c1750f01c33815816fe762 100644 (file)
@@ -592,10 +592,6 @@ namespace Gdk {
                public void unstick ();
                public void withdraw ();
        }
-       [Compact]
-       [CCode (cheader_filename = "gdk/gdk.h")]
-       public class XEvent {
-       }
        [CCode (cheader_filename = "gdk/gdk.h")]
        [SimpleType]
        public struct Atom {
@@ -972,6 +968,9 @@ namespace Gdk {
        public struct WindowRedirect {
                public static void to_drawable (Gdk.Window window, Gdk.Drawable drawable, int src_x, int src_y, int dest_x, int dest_y, int width, int height);
        }
+       [CCode (type_id = "GDK_TYPE_XEVENT", cheader_filename = "gdk/gdk.h")]
+       public struct XEvent {
+       }
        [CCode (cprefix = "GDK_AXIS_", cheader_filename = "gdk/gdk.h")]
        public enum AxisUse {
                IGNORE,
index 5fb9885d4286a24293375ca1f739b0c9327f9648..2667f6ff2f0834715004d28cdfef281c0d9db63e 100644 (file)
@@ -4,3 +4,4 @@ gdk-pixbuf-2.0
 cairo
 pango
 pangocairo
+x11
index 2acec0ce720cfc16097a9b10c8e43eb6ec6ecda9..265861cd1037402b3b355dc7ce5775c77ce48f57 100644 (file)
@@ -132,3 +132,4 @@ gdk_window_get_position.y is_out="1"
 gdk_window_get_root_origin.x is_out="1"
 gdk_window_get_root_origin.y is_out="1"
 gdk_window_invalidate_rect.rect nullable="1"
+GdkXEvent is_value_type="1"
diff --git a/vapi/x11.vapi b/vapi/x11.vapi
new file mode 100644 (file)
index 0000000..b7944f3
--- /dev/null
@@ -0,0 +1,634 @@
+/* x11.vapi
+ *
+ * Copyright (C) 2009  Jürg Billeter
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+ *
+ * Author:
+ *     Jürg Billeter <j@bitron.ch>
+ */
+
+[CCode (cprefix = "", lower_case_cprefix = "", cheader_filename = "X11/Xlib.h,X11/Xatom.h,X11/Xutil.h")]
+namespace X {
+       [Compact]
+       [CCode (cname = "Display", ref_function = "", unref_function = "")]
+       public class Display {
+               [CCode (cname = "XAddToSaveSet")]
+               public int add_to_save_set (Window w);
+               [CCode (cname = "XAllowEvents")]
+               public int allow_events (int event_mode, int time);
+               [CCode (cname = "XChangeProperty")]
+               public int change_property (Window w, Atom property, Atom type, int format, int mode, [CCode (array_length = false)] uchar[] data, int nelements);
+               [CCode (cname = "XChangeWindowAttributes")]
+               public int change_window_attributes (Window w, ulong valuemask, SetWindowAttributes attributes);
+               [CCode (cname = "XConfigureWindow")]
+               public int configure_window (Window w, uint value_mask, WindowChanges values);
+               [CCode (cname = "ConnectionNumber")]
+               public int connection_number ();
+               [CCode (cname = "DefaultRootWindow")]
+               public Window default_root_window ();
+               [CCode (cname = "DisplayString")]
+               public string display_string ();
+               [CCode (cname = "XFlush")]
+               public int flush ();
+               [CCode (cname = "XGetKeyboardMapping", array_length = false)]
+               public weak uint[] get_keyboard_mapping (uint first_keycode, int keycode_count, ref int keysyms_per_keycode_return);
+               [CCode (cname = "XGetModifierMapping")]
+               public ModifierKeymap get_modifier_mapping ();
+               [CCode (cname = "XGetSelectionOwner")]
+               public Window get_selection_owner (Atom selection);
+               [CCode (cname = "XGetWindowAttributes")]
+               public void get_window_attributes (Window w, out WindowAttributes window_attributes_return);
+               [CCode (cname = "XGetWindowProperty")]
+               public int get_window_property (Window w, Atom property, long long_offset, long long_length, bool delete, Atom req_type, out Atom actual_type_return, out int actual_format_return, out ulong nitems_return, out ulong bytes_after_return, out void* prop_return);
+               [CCode (cname = "XGrabButton")]
+               public int grab_button (uint button, uint modifiers, Window grab_window, bool owner_events, uint event_mask, int pointer_mode, int keyboard_mode, Window confine_to, uint cursor);
+               [CCode (cname = "XGrabPointer")]
+               public int grab_pointer (Window grab_window, bool owner_events, uint event_mask, int pointer_mode, int keyboard_mode, Window confine_to, uint cursor, int time);
+               [CCode (cname = "XGrabServer")]
+               public int grab_server ();
+               [CCode (cname = "XInternAtom")]
+               public Atom intern_atom (string atom_name, bool only_if_exists);
+               [CCode (cname = "XInternAtoms")]
+               public void intern_atoms (string[] names, bool only_if_exists, [CCode (array_length = false)] Atom[] atoms_return);
+               [CCode (cname = "XDisplayKeycodes")]
+               public int keycodes (ref int min_keycodes_return, ref int max_keycodes_return);
+               [CCode (cname = "XMapWindow")]
+               public int map_window (Window w);
+               [CCode (cname = "XNextEvent")]
+               public int next_event (ref Event event_return);
+               [CCode (cname = "XPending")]
+               public int pending ();
+               [CCode (cname = "XRaiseWindow")]
+               public int raise_window (Window w);
+               [CCode (cname = "XReparentWindow")]
+               public int reparent_window (Window w, Window parent, int x, int y);
+               [CCode (cname = "XResizeWindow")]
+               public int resize_window (Window w, uint width, uint height);
+               [CCode (cname = "XRootWindow")]
+               public Window root_window (int screen_number);
+               [CCode (cname = "ScreenCount")]
+               public int screen_count ();
+               [CCode (cname = "XScreenOfDisplay")]
+               public weak Screen screen_of_display (int screen_number);
+               [CCode (cname = "XSelectInput")]
+               public int select_input (Window w, long event_mask);
+               [CCode (cname = "XSendEvent")]
+               public void send_event (Window w, bool prpagate, long event_mask, ref Event event_send);
+               [CCode (cname = "XSetSelectionOwner")]
+               public Window set_selection_owner (Atom selection, Window owner, int time);
+               [CCode (cname = "XSetInputFocus")]
+               public int set_input_focus (Window focus, int revert_to, int time);
+               [CCode (cname = "XUngrabButton")]
+               public int ungrab_button (uint button, uint modifiers, Window grab_window);
+               [CCode (cname = "XUngrabPointer")]
+               public int ungrab_pointer (int time);
+               [CCode (cname = "XUngrabServer")]
+               public int ungrab_server ();
+               [CCode (cname = "XUnmapWindow")]
+               public int unmap_window (Window w);
+               [CCode (cname = "XQueryTree")]
+               public void query_tree (Window w, out Window root_return, out Window parent_return, out Window[] children_return);
+               [CCode (cname = "XWindowEvent")]
+               public int window_event (Window w, EventMask event_mask, out Event event_return);
+       }
+
+       [Compact]
+       [CCode (cname = "XModifierKeymap", free_function = "XFreeModifiermap")]
+       public class ModifierKeymap {
+               // The server's max # of keys per modifier
+               public int max_keypermod;
+               // An 8 by max_keypermod array of modifiers
+               public uchar[] modifiermap;
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "Atom")]
+       public struct Atom {
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "Window")]
+       public struct Window {
+       }
+
+       public struct Visual {
+       }
+
+       public struct WindowChanges {
+               public int x;
+               public int y;
+               public int width;
+               public int height;
+               public int border_width;
+               public Window sibling;
+               public int stack_mode;
+       }
+       public struct SizeHints {
+               public long @flags;
+               public int x;
+               public int y;
+               public int width;
+               public int height;
+       }
+
+       [CCode (cname = "XCreateWindow")]
+       public Window create_window (Display display, Window parent, int x, int y, uint width, uint height, uint border_width, int depth, uint @class, Visual? visual, X.CW valuemask, ref SetWindowAttributes attributes);
+
+       public struct SetWindowAttributes {
+               // public Pixmap background_pixmap;     /* background or None or ParentRelative */
+               public ulong background_pixel;  /* background pixel */
+               // public Pixmap border_pixmap; /* border of the window */
+               public ulong border_pixel;      /* border pixel value */
+               public int bit_gravity;         /* one of bit gravity values */
+               public int win_gravity;         /* one of the window gravity values */
+               public int backing_store;               /* NotUseful, WhenMapped, Always */
+               public ulong backing_planes;/* planes to be preseved if possible */
+               public ulong backing_pixel;/* value to use in restoring planes */
+               public bool save_under;         /* should bits under be saved? (popups) */
+               public long event_mask;         /* set of events that should be saved */
+               public long do_not_propagate_mask;      /* set of events that should not propagate */
+               public bool override_redirect;  /* boolean value for override-redirect */
+               // public Colormap colormap;            /* color map to be associated with window */
+               // public Cursor cursor;                /* cursor to be displayed (or None) */
+       }
+
+       public struct WindowAttributes {
+               public int x;
+               public int y;                   /* location of window */
+               public int width;
+               public int height;              /* width and height of window */
+               public int border_width;                /* border width of window */
+               public int depth;               /* depth of window */
+               public Visual visual;           /* the associated visual structure */
+               public Window root;             /* root of screen containing window */
+               public int @class;                      /* InputOutput, InputOnly*/
+               public int bit_gravity;         /* one of bit gravity values */
+               public int win_gravity;         /* one of the window gravity values */
+               public int backing_store;               /* NotUseful, WhenMapped, Always */
+               public ulong backing_planes;/* planes to be preserved if possible */
+               public ulong backing_pixel;/* value to be used when restoring planes */
+               public bool save_under;         /* boolean, should bits under be saved? */
+               // public Colormap colormap;            /* color map to be associated with window */
+               public bool map_installed;              /* boolean, is color map currently installed*/
+               public int map_state;           /* IsUnmapped, IsUnviewable, IsViewable */
+               public long all_event_masks;    /* set of events all people have interest in*/
+               public long your_event_mask;    /* my event mask */
+               public long do_not_propagate_mask; /* set of events that should not propagate */
+               public bool override_redirect;  /* boolean value for override-redirect */
+               // public Screen screen;                /* back pointer to correct screen */
+       }
+
+       [CCode (cname = "CopyFromParent")]
+       public const int COPY_FROM_PARENT;
+
+       [CCode (cname = "CurrentTime")]
+       public const ulong CURRENT_TIME;
+
+       [CCode (cname = "Success")]
+       public int Success;
+
+       [CCode (cname = "XFree")]
+       public int free (void* data);
+
+       [CCode (cprefix = "CW")]
+       public enum CW {
+               OverrideRedirect,
+               EventMask,
+               BorderWidth,
+               X,
+               Y,
+               Width,
+               Height
+       }
+
+       [CCode (cprefix = "GrabMode")]
+       public enum GrabMode {
+               Sync,
+               Async
+       }
+
+       [CCode (cprefix = "")]
+       public enum EventMask {
+               NoEventMask,
+               KeyPressMask,
+               KeyReleaseMask,
+               ButtonPressMask,
+               ButtonReleaseMask,
+               EnterWindowMask,
+               LeaveWindowMask,
+               PointerMotionMask,
+               PointerMotionHintMask,
+               Button1MotionMask,
+               Button2MotionMask,
+               Button3MotionMask,
+               Button4MotionMask,
+               Button5MotionMask,
+               ButtonMotionMask,
+               KeymapStateMask,
+               ExposureMask,
+               VisibilityChangeMask,
+               StructureNotifyMask,
+               ResizeRedirectMask,
+               SubstructureNotifyMask,
+               SubstructureRedirectMask,
+               FocusChangeMask,
+               PropertyChangeMask,
+               ColormapChangeMask,
+               OwnerGrabButtonMask
+       }
+
+       [CCode (cprefix = "")]
+       public enum KeyMask {
+               ShiftMask,
+               LockMask,
+               ControlMask,
+               Mod1Mask,
+               Mod2Mask,
+               Mod3Mask,
+               Mod4Mask,
+               Mod5Mask
+       }
+
+       [CCode (cprefix = "")]
+       public enum EventType {
+               KeyPress,
+               KeyRelease,
+               ButtonPress,
+               ButtonRelease,
+               MotionNotify,
+               EnterNotify,
+               LeaveNotify,
+               FocusIn,
+               FocusOut,
+               KeymapNotify,
+               Expose,
+               GraphicsExpose,
+               NoExpose,
+               VisibilityNotify,
+               CreateNotify,
+               DestroyNotify,
+               UnmapNotify,
+               MapNotify,
+               MapRequest,
+               ReparentNotify,
+               ConfigureNotify,
+               ConfigureRequest,
+               GravityNotify,
+               ResizeRequest,
+               CirculateNotify,
+               CirculateRequest,
+               PropertyNotify,
+               SelectionClear,
+               SelectionRequest,
+               SelectionNotify,
+               ColormapNotify,
+               ClientMessage,
+               MappingNotify
+       }
+
+       // union
+       public struct Event {
+               public int type;
+               public AnyEvent xany;
+               public KeyEvent xkey;
+               public ButtonEvent xbutton;
+               public MotionEvent xmotion;
+               public CrossingEvent xcrossing;
+               public CreateWindowEvent xcreatewindow;
+               public DestroyWindowEvent xdestroywindow;
+               public UnmapEvent xunmap;
+               public MapEvent xmap;
+               public MapRequestEvent xmaprequest;
+               public ReparentEvent xreparent;
+               public ConfigureEvent xconfigure;
+               public GravityEvent xgravity;
+               public ConfigureRequestEvent xconfigurerequest;
+               public CirculateEvent xcirculate;
+               public CirculateRequestEvent xcirculaterequest;
+               public PropertyEvent xproperty;
+               public SelectionEvent xselection;
+               public ClientMessageEvent xclient;
+       }
+
+       public struct AnyEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window window;
+       }
+
+       public struct KeyEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window window;
+               public Window root;
+               public Window subwindow;
+               public ulong time;
+               public int x;
+               public int y;
+               public int x_root;
+               public int y_root;
+               public uint state;
+               public uint keycode;
+               public bool same_screen;
+       }
+
+       public struct ButtonEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window window;
+               public Window subwindow;
+               public ulong time;
+               public int x;
+               public int y;
+               public int x_root;
+               public int y_root;
+               public uint state;
+               public uint button;
+               public bool same_screen;
+       }
+
+       public struct MotionEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window window;
+               public Window subwindow;
+               public ulong time;
+               public int x;
+               public int y;
+               public int x_root;
+               public int y_root;
+               public uint state;
+               public char is_hint;
+               public bool same_screen;
+       }
+
+       public struct CrossingEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window window;
+               public Window root;
+               public Window subwindow;
+               public ulong time;
+               public int x;
+               public int y;
+               public int x_root;
+               public int y_root;
+               public int mode;
+               public int detail;
+               public bool same_screen;
+               public bool focus;
+               public uint state;
+       }
+
+       public struct CreateWindowEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window parent;
+               public Window window;
+               public int x;
+               public int y;
+               public int width;
+               public int height;
+               public int border_width;
+               public bool override_redirect;
+       }
+
+       public struct DestroyWindowEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window event;
+               public Window window;
+       }
+
+       public struct UnmapEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window event;
+               public Window window;
+               public bool from_configure;
+       }
+
+       public struct MapEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window event;
+               public Window window;
+               public bool override_redirect;
+       }
+
+       public struct MapRequestEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window parent;
+               public Window window;
+       }
+
+       public struct ReparentEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window event;
+               public Window window;
+               public Window parent;
+               public int x;
+               public int y;
+               public bool override_redirect;
+       }
+
+       public struct ConfigureEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window event;
+               public Window window;
+               public int x;
+               public int y;
+               public int width;
+               public int height;
+               public int border_width;
+               public Window above;
+               public bool override_redirect;
+       }
+
+       public struct GravityEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window event;
+               public Window window;
+               public int x;
+               public int y;
+       }
+
+       public struct ConfigureRequestEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window parent;
+               public Window window;
+               public int x;
+               public int y;
+               public int width;
+               public int height;
+               public int border_width;
+               public Window above;
+               public int detail;
+               public ulong value_mask;
+       }
+
+       public struct CirculateEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window event;
+               public Window window;
+               public int place;
+       }
+
+       public struct CirculateRequestEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window parent;
+               public Window window;
+               public int place;
+       }
+
+       public struct PropertyEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window window;
+               public Atom atom;
+               public ulong time;
+               public int state;
+       }
+
+       public struct SelectionEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window requestor;
+               public Atom selection;
+               public Atom target;
+               public Atom property;
+               public ulong time;
+       }
+
+       public struct ClientMessageEvent {
+               public int type;
+               public ulong serial;    /* # of last request processed by server */
+               public bool send_event; /* true if this came from a SendEvent request */
+               public unowned Display display; /* Display the event was read from */
+               public Window window;
+               public Atom message_type;
+               public int format;
+               public ClientMessageEventData data;
+       }
+
+       // union
+       public struct ClientMessageEventData {
+               public unowned char[] b;
+               public unowned short[] s;
+               public unowned long[] l;
+       }
+
+       [CCode (cprefix = "PropMode")]
+       public enum PropMode {
+               Replace,
+               Prepend,
+               Append
+       }
+
+       [CCode (cprefix = "")]
+       public enum AllowEventsMode {
+               AsyncPointer,
+               SyncPointer,
+               ReplayPointer,
+               AsyncKeyboard,
+               SyncKeyboard,
+               ReplayKeyboard,
+               AsyncBoth,
+               SyncBoth
+       }
+
+       [CCode (cprefix = "")]
+       public enum MapState {
+               IsUnmapped,
+               IsUnviewable,
+               IsViewable
+       }
+
+       [CCode (cprefix = "RevertTo")]
+       public enum RevertTo {
+               None,
+               PointerRoot,
+               Parent
+       }
+
+       [Compact]
+       [CCode (cname = "Screen")]
+       public class Screen {
+               public Display display;
+               public Window root;
+               public int width;
+               public int height;
+       }
+
+       public const X.Atom XA_ATOM;
+       public const X.Atom XA_CARDINAL;
+       public const X.Atom XA_WINDOW;
+       public const X.Atom XA_WM_CLASS;
+       public const X.Atom XA_WM_HINTS;
+       public const X.Atom XA_WM_ICON_NAME;
+       public const X.Atom XA_WM_NAME;
+       public const X.Atom XA_WM_NORMAL_HINTS;
+       public const X.Atom XA_WM_TRANSIENT_FOR;
+
+       public const uint XK_Num_Lock;
+       public const uint XK_Scroll_Lock;
+}
+
diff --git a/vapi/xcb.vapi b/vapi/xcb.vapi
new file mode 100644 (file)
index 0000000..eee9afd
--- /dev/null
@@ -0,0 +1,224 @@
+/* xcb.vapi
+ *
+ * Copyright (C) 2009  Jürg Billeter
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+ *
+ * Author:
+ *     Jürg Billeter <j@bitron.ch>
+ */
+
+[CCode (lower_case_cprefix = "xcb_", cheader_filename = "xcb/xcb.h")]
+namespace Xcb {
+       [Compact]
+       [CCode (cname = "xcb_connection_t", cprefix = "xcb_", ref_function = "", unref_function = "")]
+       public class Connection {
+               public void disconnect ();
+               public void flush ();
+               public uint32 generate_id ();
+               public Setup get_setup ();
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_setup_t", ref_function = "", unref_function = "")]
+       public class Setup {
+               public ScreenIterator roots_iterator ();
+       }
+
+       public const char COPY_FROM_PARENT;
+
+       [CCode (cname = "xcb_window_class_t")]
+       public enum WindowClass {
+               COPY_FROM_PARENT,
+               INPUT_OUTPUT,
+               INPUT_ONLY
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_generic_event_t", ref_function = "", unref_function = "")]
+       public class GenericEvent {
+               public uint8 response_type;
+       }
+
+       public const uint8 BUTTON_PRESS;
+       public const uint8 BUTTON_RELEASE;
+       public const uint8 EXPOSE;
+       public const uint8 MOTION_NOTIFY;
+       public const uint8 ENTER_NOTIFY;
+       public const uint8 LEAVE_NOTIFY;
+
+       [CCode (cname = "xcb_button_press_event_t", ref_function = "", unref_function = "")]
+       public class ButtonPressEvent : GenericEvent {
+               public Button detail;
+               public Window root;
+               public Window event;
+               public Window child;
+               public uint16 root_x;
+               public uint16 root_y;
+               public uint16 event_x;
+               public uint16 event_y;
+       }
+
+       [CCode (cname = "xcb_button_release_event_t", ref_function = "", unref_function = "")]
+       public class ButtonReleaseEvent : GenericEvent {
+               public Button detail;
+               public Window root;
+               public Window event;
+               public Window child;
+               public uint16 root_x;
+               public uint16 root_y;
+               public uint16 event_x;
+               public uint16 event_y;
+       }
+
+       [CCode (cname = "xcb_motion_notify_event_t", ref_function = "", unref_function = "")]
+       public class MotionNotifyEvent : GenericEvent {
+               public Window root;
+               public Window event;
+               public Window child;
+               public uint16 root_x;
+               public uint16 root_y;
+               public uint16 event_x;
+               public uint16 event_y;
+       }
+
+       [CCode (cname = "xcb_expose_event_t", ref_function = "", unref_function = "")]
+       public class ExposeEvent : GenericEvent {
+               public Window window;
+               public uint16 x;
+               public uint16 y;
+               public uint16 width;
+               public uint16 height;
+       }
+
+       [CCode (cname = "xcb_cw_t")]
+       public enum CW {
+               BACK_PIXMAP,
+               BACK_PIXEL,
+               BORDER_PIXMAP,
+               BORDER_PIXEL,
+               BIT_GRAVITY,
+               WIN_GRAVITY,
+               BACKING_STORE,
+               BACKING_PLANES,
+               BACKING_PIXEL,
+               OVERRIDE_REDIRECT,
+               SAVE_UNDER,
+               EVENT_MASK,
+               DONT_PROPAGATE,
+               COLORMAP,
+               CURSOR
+       }
+
+       [CCode (cname = "xcb_event_mask_t")]
+       public enum EventMask {
+               NO_EVENT,
+               KEY_PRESS,
+               KEY_RELEASE,
+               BUTTON_PRESS,
+               BUTTON_RELEASE,
+               ENTER_WINDOW,
+               LEAVE_WINDOW,
+               POINTER_MOTION,
+               POINTER_MOTION_HINT,
+               BUTTON_1MOTION,
+               BUTTON_2MOTION,
+               BUTTON_3MOTION,
+               BUTTON_4MOTION,
+               BUTTON_5MOTION,
+               BUTTON_MOTION,
+               KEYMAP_STATE,
+               EXPOSURE,
+               VISIBILITY_CHANGE,
+               STRUCTURE_NOTIFY,
+               RESIZE_REDIRECT,
+               SUBSTRUCTURE_NOTIFY,
+               SUBSTRUCTURE_REDIRECT,
+               FOCUS_CHANGE,
+               PROPERTY_CHANGE,
+               COLOR_MAP_CHANGE,
+               OWNER_GRAB_BUTTON
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_screen_t", ref_function = "", unref_function = "")]
+       public class Screen {
+               public Window root;
+               public uint32 white_pixel;
+               public uint32 black_pixel;
+               public VisualID root_visual;
+               public DepthIterator allowed_depths_iterator ();
+       }
+
+       [CCode (cname = "xcb_screen_iterator_t")]
+       public struct ScreenIterator {
+               public unowned Screen data;
+               public int rem;
+               public int next;
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_depth_t", ref_function = "", unref_function = "")]
+       public class Depth {
+               public uint8 depth;
+               public VisualTypeIterator visuals_iterator ();
+       }
+
+       [CCode (cname = "xcb_depth_iterator_t")]
+       public struct DepthIterator {
+               public unowned Depth data;
+               public int rem;
+               [CCode (cname = "xcb_depth_next")]
+               public void next ();
+       }
+
+       [CCode (cname = "xcb_visualtype_iterator_t")]
+       public struct VisualTypeIterator {
+               public unowned VisualType data;
+               public int rem;
+               [CCode (cname = "xcb_visualtype_next")]
+               public void next ();
+       }
+
+       public Connection connect (string? display = null, out int screen = null);
+       public VoidCookie create_window (Connection connection, uint8 depth, Window wid, Window parent, int16 x, int16 y, uint16 width, uint16 height, uint16 border_width, uint16 _class, VisualID visual, uint32 value_mask, [CCode (array_length = false)] uint32[] value_list);
+       public VoidCookie map_window (Connection connection, Window wid);
+
+       public struct VoidCookie {
+       }
+
+       public struct VisualID : uint32 {
+       }
+
+       public struct Button : uint8 {
+       }
+
+       [CCode (cname = "xcb_drawable_t")]
+       public struct Drawable : uint32 {
+       }
+
+       [CCode (cname = "xcb_window_t")]
+       public struct Window : Drawable {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_visualtype_t", ref_function = "", unref_function = "")]
+       public class VisualType {
+               public VisualID visual_id;
+               public uint8 _class;
+               public uint8 bits_per_rgb_value;
+       }
+}
+