[vala] Add initial x11, xcb, and cairo-xcb bindings



commit bcdf1d1a3c077b19cb2c6d5d3454c6f06e79435e
Author: Jürg Billeter <j bitron ch>
Date:   Fri Apr 24 00:09:08 2009 +0200

    Add initial x11, xcb, and cairo-xcb bindings
    
    Fixes bug 515435.
---
 vapi/Makefile.am                       |    4 +
 vapi/cairo-xcb.deps                    |    3 +
 vapi/cairo-xcb.vapi                    |   31 ++
 vapi/gdk-2.0.vapi                      |    7 +-
 vapi/gdk-x11-2.0.deps                  |    1 +
 vapi/packages/gdk-2.0/gdk-2.0.metadata |    1 +
 vapi/x11.vapi                          |  634 ++++++++++++++++++++++++++++++++
 vapi/xcb.vapi                          |  224 +++++++++++
 8 files changed, 901 insertions(+), 4 deletions(-)

diff --git a/vapi/Makefile.am b/vapi/Makefile.am
index f6f2341..e2733b9 100644
--- a/vapi/Makefile.am
+++ b/vapi/Makefile.am
@@ -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
index 0000000..76d7f9e
--- /dev/null
+++ b/vapi/cairo-xcb.deps
@@ -0,0 +1,3 @@
+cairo
+xcb
+
diff --git a/vapi/cairo-xcb.vapi b/vapi/cairo-xcb.vapi
new file mode 100644
index 0000000..066ac9f
--- /dev/null
+++ b/vapi/cairo-xcb.vapi
@@ -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);
+	}
+}
diff --git a/vapi/gdk-2.0.vapi b/vapi/gdk-2.0.vapi
index 38e1287..b73a8fe 100644
--- a/vapi/gdk-2.0.vapi
+++ b/vapi/gdk-2.0.vapi
@@ -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,
diff --git a/vapi/gdk-x11-2.0.deps b/vapi/gdk-x11-2.0.deps
index 5fb9885..2667f6f 100644
--- a/vapi/gdk-x11-2.0.deps
+++ b/vapi/gdk-x11-2.0.deps
@@ -4,3 +4,4 @@ gdk-pixbuf-2.0
 cairo
 pango
 pangocairo
+x11
diff --git a/vapi/packages/gdk-2.0/gdk-2.0.metadata b/vapi/packages/gdk-2.0/gdk-2.0.metadata
index 2acec0c..265861c 100644
--- a/vapi/packages/gdk-2.0/gdk-2.0.metadata
+++ b/vapi/packages/gdk-2.0/gdk-2.0.metadata
@@ -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
index 0000000..b7944f3
--- /dev/null
+++ b/vapi/x11.vapi
@@ -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
index 0000000..eee9afd
--- /dev/null
+++ b/vapi/xcb.vapi
@@ -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;
+	}
+}
+



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]