From: Jürg Billeter Date: Thu, 23 Apr 2009 22:09:08 +0000 (+0200) Subject: Add initial x11, xcb, and cairo-xcb bindings X-Git-Tag: 0.7.3~39 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bcdf1d1a3c077b19cb2c6d5d3454c6f06e79435e;p=thirdparty%2Fvala.git Add initial x11, xcb, and cairo-xcb bindings Fixes bug 515435. --- diff --git a/vapi/Makefile.am b/vapi/Makefile.am index f6f23415c..e2733b9f8 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 000000000..76d7f9e9b --- /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 000000000..066ac9fea --- /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 + */ + +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 38e1287c0..b73a8fe1a 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 5fb9885d4..2667f6ff2 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 2acec0ce7..265861cd1 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 000000000..b7944f328 --- /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 + */ + +[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 000000000..eee9afd65 --- /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 + */ + +[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; + } +} +