//+build linux, openbsd, freebsd package xlib foreign import xlib "system:X11" foreign xlib { @(link_name="_Xdebug") _Xdebug: i32 } /* ---- X11/Xlib.h ---------------------------------------------------------*/ @(default_calling_convention="c") foreign xlib { // Free data allocated by Xlib XFree :: proc(ptr: rawptr) --- // Opening/closing a display XOpenDisplay :: proc(name: cstring) -> ^Display --- XCloseDisplay :: proc(display: ^Display) --- XSetCloseDownMode :: proc(display: ^Display, mode: CloseMode) --- // Generate a no-op request XNoOp :: proc(display: ^Display) --- // Display macros (connection) XConnectionNumber :: proc(display: ^Display) -> i32 --- XExtendedMaxRequestSize :: proc(display: ^Display) -> int --- XMaxRequestSize :: proc(display: ^Display) -> int --- XLastKnownRequestProcessed :: proc(display: ^Display) -> uint --- XNextRequest :: proc(display: ^Display) -> uint --- XProtocolVersion :: proc(display: ^Display) -> i32 --- XProtocolRevision :: proc(display: ^Display) -> i32 --- XQLength :: proc(display: ^Display) -> i32 --- XServerVendor :: proc(display: ^Display) -> cstring --- XVendorRelease :: proc(display: ^Display) -> i32 --- // Display macros (display properties) XBlackPixel :: proc(display: ^Display, screen_no: i32) -> uint --- XWhitePixel :: proc(display: ^Display, screen_no: i32) -> uint --- XListDepths :: proc(display: ^Display, screen_no: i32, count: ^i32) -> [^]i32 --- XDisplayCells :: proc(display: ^Display, screen_no: i32) -> i32 --- XDisplayPlanes :: proc(display: ^Display, screen_no: i32) -> i32 --- XScreenOfDisplay :: proc(display: ^Display, screen_no: i32) -> ^Screen --- XDisplayString :: proc(display: ^Display) -> cstring --- // Display macros (defaults) XDefaultColormap :: proc(display: ^Display, screen_no: i32) -> Colormap --- XDefaultDepth :: proc(display: ^Display) -> i32 --- XDefaultGC :: proc(display: ^Display, screen_no: i32) -> GC --- XDefaultRootWindow :: proc(display: ^Display) -> Window --- XDefaultScreen :: proc(display: ^Display) -> i32 --- XDefaultVisual :: proc(display: ^Display, screen_no: i32) -> ^Visual --- XDefaultScreenOfDisplay :: proc(display: ^Display) -> ^Screen --- // Display macros (other) XRootWindow :: proc(display: ^Display, screen_no: i32) -> Window --- XScreenCount :: proc(display: ^Display) -> i32 --- // Display image format macros XListPixmapFormats :: proc(display: ^Display, count: ^i32) -> [^]XPixmapFormatValues --- XImageByteOrder :: proc(display: ^Display) -> ByteOrder --- XBitmapUnit :: proc(display: ^Display) -> i32 --- XBitmapBitOrder :: proc(display: ^Display) -> ByteOrder --- XBitmapPad :: proc(display: ^Display) -> i32 --- XDisplayHeight :: proc(display: ^Display, screen_no: i32) -> i32 --- XDisplayHeightMM :: proc(display: ^Display, screen_no: i32) -> i32 --- XDisplayWidth :: proc(display: ^Display, screen_no: i32) -> i32 --- XDisplayWidthMM :: proc(display: ^Display, screen_no: i32) -> i32 --- // Screen macros XBlackPixelsOfScreen :: proc(screen: ^Screen) -> uint --- XWhitePixelsOfScreen :: proc(screen: ^Screen) -> uint --- XCellsOfScreen :: proc(screen: ^Screen) -> i32 --- XDefaultColormapOfScreen :: proc(screen: ^Screen) -> Colormap --- XDefaultDepthOfScreen :: proc(screen: ^Screen) -> i32 --- XDefaultGCOfScreen :: proc(screen: ^Screen) -> GC --- XDefaultVisualOfScreen :: proc(screen: ^Screen) -> ^Visual --- XDoesBackingStore :: proc(screen: ^Screen) -> BackingStore --- XDoesSaveUnders :: proc(screen: ^Screen) -> b32 --- XDisplayOfScreen :: proc(screen: ^Screen) -> ^Display --- XScreenNumberOfScreens :: proc(screen: ^Screen) -> i32 --- XEventMaskOfScreen :: proc(screen: ^Screen) -> EventMask --- XWidthOfScreen :: proc(screen: ^Screen) -> i32 --- XHeightOfScreen :: proc(screen: ^Screen) -> i32 --- XWidthMMOfScreen :: proc(screen: ^Screen) -> i32 --- XHeightMMOfScreen :: proc(screen: ^Screen) -> i32 --- XMaxCmapsOfScreen :: proc(screen: ^Screen) -> i32 --- XMinCmapsOfScreen :: proc(screen: ^Screen) -> i32 --- XPlanesOfScreen :: proc(screen: ^Screen) -> i32 --- XRootWindowOfScreen :: proc(screen: ^Screen) -> Window --- // Threading functions XInitThreads :: proc() -> Status --- XLockDisplay :: proc(display: ^Display) --- XUnlockDisplay :: proc(display: ^Display) --- // Internal connections XAddConnectionWatch :: proc( display: ^Display, procedure: XConnectionWatchProc, data: rawptr, ) -> Status --- XRemoveConnectionWatch :: proc( display: ^Display, procedure: XConnectionWatchProc, data: rawptr, ) -> Status --- XProcessInternalConnections :: proc( display: ^Display, fd: i32, ) --- XInternalConnectionNumbers :: proc( display: ^Display, fds: ^[^]i32, count: ^i32, ) -> Status --- // Windows functions XVisualIDFromVisual :: proc(visual: ^Visual) -> VisualID --- // Windows: creation/destruction XCreateWindow :: proc( display: ^Display, parent: Window, x: i32, y: i32, width: u32, height: u32, bordersz: u32, depth: i32, class: WindowClass, visual: ^Visual, attr_mask: WindowAttributeMask, attr: ^XSetWindowAttributes, ) -> Window --- XCreateSimpleWindow :: proc( display: ^Display, parent: Window, x: i32, y: i32, width: u32, height: u32, bordersz: u32, border: int, bg: int, ) -> Window --- XDestroyWindow :: proc(display: ^Display, window: Window) --- XDestroySubwindows :: proc(display: ^Display, window: Window) --- // Windows: mapping/unmapping XMapWindow :: proc(display: ^Display, window: Window) --- XMapRaised :: proc(display: ^Display, window: Window) --- XMapSubwindows :: proc(display: ^Display, window: Window) --- XUnmapWindow :: proc(display: ^Display, window: Window) --- XUnmapSubwindows :: proc(display: ^Display, window: Window) --- // Windows: configuring XConfigureWindow :: proc( display: ^Display, window: Window, mask: WindowChangesMask, values: XWindowChanges, ) --- XMoveWindow :: proc( display: ^Display, window: Window, x: i32, y: i32, ) --- XResizeWindow :: proc( display: ^Display, window: Window, width: u32, height: u32, ) --- XMoveResizeWindow :: proc( display: ^Display, window: Window, x: i32, y: i32, width: u32, height: u32, ) --- XSetWindowBorderWidth :: proc( display: ^Display, window: Window, width: u32, ) --- // Window: changing stacking order XRaiseWindow :: proc(display: ^Display, window: Window) --- XLowerWindow :: proc(display: ^Display, window: Window) --- XCirculateSubwindows :: proc(display: ^Display, window: Window, direction: CirculationDirection) --- XCirculateSubwindowsUp :: proc(display: ^Display, window: Window) --- XCirculateSubwindowsDown :: proc(display: ^Display, window: Window) --- XRestackWindows :: proc(display: ^Display, windows: [^]Window, nwindows: i32) --- // Window: changing attributes XChangeWindowAttributes :: proc( display: ^Display, window: Window, attr_mask: WindowAttributeMask, attr: XWindowAttributes, ) --- XSetWindowBackground :: proc( display: ^Display, window: Window, pixel: uint, ) --- XSetWindowBackgroundMap :: proc( display: ^Display, window: Window, pixmap: Pixmap, ) --- XSetWindowColormap :: proc( display: ^Display, window: Window, colormap: Colormap, ) --- XDefineCursor :: proc( display: ^Display, window: Window, cursor: Cursor, ) --- XUndefineCursor :: proc( display: ^Display, window: Window, ) --- // Windows: querying information XQueryTree :: proc( display: ^Display, window: Window, root: ^Window, parent: ^Window, children: ^[^]Window, nchildren: ^u32, ) -> Status --- XGetWindowAttributes :: proc( display: ^Display, window: Window, attr: ^XWindowAttributes, ) --- XGetGeometry :: proc( display: ^Display, drawable: Drawable, root: ^Window, x: ^i32, y: ^i32, width: ^u32, height: ^u32, border_sz: ^u32, depth: ^u32, ) -> Status --- // Windows: translating screen coordinates XTranslateCoordinates :: proc( display: ^Display, src_window: Window, dst_window: Window, src_x: i32, src_y: i32, dst_x: ^i32, dst_y: ^i32, ) -> b32 --- XQueryPointer :: proc( display: ^Display, window: Window, root: ^Window, child: ^Window, root_x: ^i32, root_y: ^i32, x: ^i32, y: ^i32, mask: ^KeyMask, ) -> b32 --- // Atoms XInternAtom :: proc( display: ^Display, name: cstring, existing: b32, ) -> Atom --- XInternAtoms :: proc( display: ^Display, names: [^]cstring, count: i32, atoms: [^]Atom, ) -> Status --- XGetAtomName :: proc( display: ^Display, atom: Atom, ) -> cstring --- XGetAtomNames :: proc( display: ^Display, atoms: [^]Atom, count: i32, names: [^]cstring, ) -> Status --- // Windows: Obtaining and changing properties XGetWindowProperty :: proc( display: ^Display, window: Window, property: Atom, long_offs: int, long_len: int, delete: b32, req_type: Atom, act_type: [^]Atom, act_format: [^]i32, nitems: [^]uint, bytes_after: [^]uint, props: ^rawptr, ) -> i32 --- XListProperties :: proc( display: ^Display, window: Window, num: ^i32, ) -> [^]Atom --- XChangeProperty :: proc( display: ^Display, window: Window, property: Atom, type: Atom, format: i32, mode: i32, data: rawptr, count: i32, ) --- XRotateWindowProperties :: proc( display: ^Display, window: Window, props: [^]Atom, nprops: i32, npos: i32, ) --- XDeleteProperty :: proc( display: ^Display, window: Window, prop: Atom, ) --- // Selections XSetSelectionOwner :: proc( display: ^Display, selection: Atom, owber: Window, time: Time, ) --- XGetSelectionOwner :: proc( display: ^Display, selection: Atom, ) -> Window --- XConvertSelection :: proc( display: ^Display, selection: Atom, target: Atom, property: Atom, requestor: Window, time: Time, ) --- // Creating and freeing pixmaps XCreatePixmap :: proc( display: ^Display, drawable: Drawable, width: u32, height: u32, depth: u32, ) -> Pixmap --- XFreePixmap :: proc( display: ^Display, pixmap: Pixmap, ) --- // Creating recoloring and freeing cursors XCreateFontCursor :: proc( display: ^Display, shape: CursorShape, ) -> Cursor --- XCreateGlyphCursor :: proc( display: ^Display, src_font: Font, mask_font: Font, src_char: u32, mask_char: u32, fg: ^XColor, bg: ^XColor, ) -> Cursor --- XCreatePixmapCursor :: proc( display: ^Display, source: Pixmap, mask: Pixmap, fg: XColor, bg: ^XColor, x: u32, y: u32, ) -> Cursor --- XQueryBestCursor :: proc( display: ^Display, drawable: Drawable, width: u32, height: u32, out_width: ^u32, out_height: ^u32, ) -> Status --- XRecolorCursor :: proc( display: ^Display, cursor: Cursor, fg: ^XColor, bg: ^XColor, ) --- XFreeCursor :: proc(display: ^Display, cursor: Cursor) --- // Creation/destruction of colormaps XCreateColormap :: proc( display: ^Display, window: Window, visual: ^Visual, alloc: ColormapAlloc, ) -> Colormap --- XCopyColormapAndFree :: proc( display: ^Display, colormap: Colormap, ) -> Colormap --- XFreeColormap :: proc( display: ^Display, colormap: Colormap, ) --- // Mapping color names to values XLookupColor :: proc( display: ^Display, colomap: Colormap, name: cstring, exact: ^XColor, screen: ^XColor, ) -> Status --- XcmsLookupColor :: proc( display: ^Display, colormap: Colormap, name: cstring, exact: XcmsColor, screen: XcmsColor, format: XcmsColorFormat, ) -> Status --- // Allocating and freeing color cells XAllocColor :: proc( display: ^Display, colormap: Colormap, screen: ^XColor, ) -> Status --- XcmsAllocColor :: proc( display: ^Display, colormap: Colormap, color: ^XcmsColor, format: XcmsColorFormat, ) -> Status --- XAllocNamedColor :: proc( display: ^Display, colormap: Colormap, name: cstring, screen: ^XColor, exact: ^XColor, ) -> Status --- XcmsAllocNamedColor :: proc( display: ^Display, colormap: Colormap, name: cstring, screen: ^XcmsColor, exact: ^XcmsColor, format: XcmsColorFormat, ) -> Status --- XAllocColorCells :: proc( display: ^Display, colormap: Colormap, contig: b32, pmasks: [^]uint, np: u32, pixels: [^]uint, npixels: u32, ) -> Status --- XAllocColorPlanes :: proc( display: ^Display, colormap: Colormap, contig: b32, pixels: [^]uint, ncolors: i32, nreds: i32, ngreens: i32, nblues: i32, rmask: [^]uint, gmask: [^]uint, bmask: [^]uint, ) -> Status --- XFreeColors :: proc( display: ^Display, colormap: Colormap, pixels: [^]uint, npixels: i32, planes: uint, ) --- // Modifying and querying colormap cells XStoreColor :: proc( display: ^Display, colormap: Colormap, color: ^XColor, ) --- XStoreColors :: proc( display: ^Display, colormap: Colormap, color: [^]XColor, ncolors: i32, ) --- XcmsStoreColor :: proc( display: ^Display, colormap: Colormap, color: ^XcmsColor, ) -> Status --- XcmsStoreColors :: proc( display: ^Display, colormap: Colormap, colors: [^]XcmsColor, ncolors: XcmsColor, cflags: [^]b32, ) -> Status --- XStoreNamedColor :: proc( display: ^Display, colormap: Colormap, name: cstring, pixel: uint, flags: ColorFlags, ) --- XQueryColor :: proc( display: ^Display, colormap: Colormap, color: ^XColor, ) --- XQueryColors :: proc( display: ^Display, colormap: Colormap, colors: [^]XColor, ncolors: i32, ) --- XcmsQueryColor :: proc( display: ^Display, colormap: Colormap, color: ^XcmsColor, format: XcmsColorFormat, ) -> Status --- XcmsQueryColors :: proc( display: ^Display, colormap: Colormap, color: [^]XcmsColor, ncolors: i32, format: XcmsColorFormat, ) -> Status --- // Getting and setting the color conversion context (CCC) of a colormap XcmsCCCOfColormap :: proc( display: ^Display, colormap: Colormap, ) -> XcmsCCC --- XcmsSetCCCOfColormap :: proc( display: ^Display, colormap: Colormap, ccc: XcmsCCC) -> XcmsCCC --- XcmsDefaultCCC :: proc(display: ^Display, screen_no: i32) -> XcmsCCC --- // Color conversion context macros XcmsDisplayOfCCC :: proc(ccc: XcmsCCC) -> ^Display --- XcmsVisualOfCCC :: proc(ccc: XcmsCCC) -> ^Visual --- XcmsScreenNumberOfCCC :: proc(ccc: XcmsCCC) -> i32 --- XcmsScreenWhitePointOfCCC :: proc(ccc: XcmsCCC) -> XcmsColor --- XcmsClientWhitePointOfCCC :: proc(ccc: XcmsCCC) -> XcmsColor --- // Modifying the attributes of color conversion context XcmsSetWhitePoint :: proc( ccc: XcmsCCC, color: ^XcmsColor, ) -> Status --- XcmsSetCompressionProc :: proc( ccc: XcmsCCC, cproc: XcmsCompressionProc, data: rawptr, ) -> XcmsCompressionProc --- XcmsSetWhiteAdjustProc :: proc( ccc: XcmsCCC, aproc: XcmsWhiteAdjustProc, data: rawptr, ) -> XcmsWhiteAdjustProc --- // Creating and freeing the color conversion context XcmsCreateCCC :: proc( display: ^Display, screen_no: i32, visual: ^Visual, white_point: ^XcmsColor, cproc: XcmsCompressionProc, cdata: rawptr, aproc: XcmsWhiteAdjustProc, adata: rawptr, ) -> XcmsCCC --- XcmsFreeCCC :: proc(ccc: XcmsCCC) --- // Converting between colorspaces XcmsConvertColors :: proc( ccc: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, format: XcmsColorFormat, cflags: [^]b32, ) -> Status --- // Pre-defined gamut compression callbacks XcmsCIELabClipL :: proc( ctx: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, index: u32, flags: [^]b32, ) -> Status --- XcmsCIELabClipab :: proc( ctx: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, index: u32, flags: [^]b32, ) -> Status --- XcmsCIELabClipLab :: proc( ctx: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, index: u32, flags: [^]b32, ) -> Status --- XcmsCIELuvClipL :: proc( ctx: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, index: u32, flags: [^]b32, ) -> Status --- XcmsCIELuvClipuv :: proc( ctx: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, index: u32, flags: [^]b32, ) -> Status --- XcmsCIELuvClipLuv :: proc( ctx: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, index: u32, flags: [^]b32, ) -> Status --- XcmsTekHVCClipV :: proc( ctx: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, index: u32, flags: [^]b32, ) -> Status --- XcmsTekHVCClipC :: proc( ctx: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, index: u32, flags: [^]b32, ) -> Status --- XcmsTekHVCClipVC :: proc( ctx: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, index: u32, flags: [^]b32, ) -> Status --- // Pre-defined white-point adjustment procedures XcmsCIELabWhiteShiftColors :: proc( ctx: XcmsCCC, initial_white_point: ^XcmsColor, target_white_point: ^XcmsColor, target_format: XcmsColorFormat, colors: [^]XcmsColor, ncolors: u32, compression: [^]b32, ) -> Status --- XcmsCIELuvWhiteShiftColors :: proc( ctx: XcmsCCC, initial_white_point: ^XcmsColor, target_white_point: ^XcmsColor, target_format: XcmsColorFormat, colors: [^]XcmsColor, ncolors: u32, compression: [^]b32, ) -> Status --- XcmsTekHVCWhiteShiftColors :: proc( ctx: XcmsCCC, initial_white_point: ^XcmsColor, target_white_point: ^XcmsColor, target_format: XcmsColorFormat, colors: [^]XcmsColor, ncolors: u32, compression: [^]b32, ) -> Status --- // Color querying XcmsQueryBlack :: proc( ccc: XcmsCCC, format: XcmsColorFormat, color: ^XcmsColor, ) -> Status --- XcmsQueryBlue :: proc( ccc: XcmsCCC, format: XcmsColorFormat, color: ^XcmsColor, ) -> Status --- XcmsQueryGreen :: proc( ccc: XcmsCCC, format: XcmsColorFormat, color: ^XcmsColor, ) -> Status --- XcmsQueryRed :: proc( ccc: XcmsCCC, format: XcmsColorFormat, color: ^XcmsColor, ) -> Status --- XcmsQueryWhite :: proc( ccc: XcmsCCC, format: XcmsColorFormat, color: ^XcmsColor, ) -> Status --- // CIELab queries XcmsCIELabQueryMaxC :: proc( ccc: XcmsCCC, hue: XcmsFloat, lstar: XcmsFloat, color: ^XcmsColor, ) -> Status --- XcmsCIELabQueryMaxL :: proc( ccc: XcmsCCC, hue: XcmsFloat, chroma: XcmsFloat, color: ^XcmsColor, ) -> Status --- XcmsCIELabQueryMaxLC :: proc( ccc: XcmsCCC, hue: XcmsFloat, color: ^XcmsColor, ) -> Status --- XcmsCIELabQueryMinL :: proc( ccc: XcmsCCC, hue: XcmsFloat, chroma: XcmsFloat, color: ^XcmsColor, ) -> Status --- // CIEluv queries XcmsCIELuvQueryMaxC :: proc( ccc: XcmsCCC, hue: XcmsFloat, lstar: XcmsFloat, color: ^XcmsColor, ) -> Status --- XcmsCIELuvQueryMaxL :: proc( ccc: XcmsCCC, hue: XcmsFloat, chroma: XcmsFloat, color: ^XcmsColor, ) -> Status --- XcmsCIELuvQueryMaxLC :: proc( ccc: XcmsCCC, hue: XcmsFloat, color: ^XcmsColor, ) -> Status --- XcmsCIELuvQueryMinL :: proc( ccc: XcmsCCC, hue: XcmsFloat, chroma: XcmsFloat, color: ^XcmsColor, ) -> Status --- // TexHVX queries XcmsTekHVCQueryMaxC :: proc( ccc: XcmsCCC, hue: XcmsFloat, value: XcmsFloat, color: ^XcmsColor, ) -> Status --- XcmsTekHVCQueryMaxV :: proc( ccc: XcmsCCC, hue: XcmsFloat, chroma: XcmsFloat, color: ^XcmsColor, ) -> Status --- XcmsTekHVCQueryMaxVC :: proc( ccc: XcmsCCC, hue: XcmsFloat, color: ^XcmsColor, ) -> Status --- XcmsTekHVCQueryMaxVSamples :: proc( ccc: XcmsCCC, hue: XcmsFloat, colors: [^]XcmsColor, nsamples: u32, ) -> Status --- XcmsTekHVCQueryMinV :: proc( ccc: XcmsCCC, hue: XcmsFloat, chroma: XcmsFloat, color: ^XcmsColor, ) -> Status --- // Graphics context functions XCreateGC :: proc( display: ^Display, drawable: Drawable, mask: GCAttributeMask, attr: ^XGCValues, ) -> GC --- XCopyGC :: proc( display: ^Display, src: GC, dst: GC, mask: GCAttributeMask, ) --- XChangeGC :: proc( display: ^Display, gc: GC, mask: GCAttributeMask, values: ^XGCValues, ) --- XGetGCValues :: proc( display: ^Display, gc: GC, mask: GCAttributeMask, values: ^XGCValues, ) -> Status --- XFreeGC :: proc(display: ^Display, gc: GC) --- XGCContextFromGC :: proc(gc: GC) -> GContext --- XFlushGC :: proc(display: ^Display, gc: GC) --- // Convenience routines for GC XSetState :: proc( display: ^Display, gc: GC, fg: uint, bg: uint, fn: GCFunction, pmask: uint, ) --- XSetForeground :: proc( display: ^Display, gc: GC, fg: uint, ) --- XSetBackground :: proc( display: ^Display, gc: GC, bg: uint, ) --- XSetFunction :: proc( display: ^Display, gc: GC, fn: GCFunction, ) --- XSetPlaneMask :: proc( display: ^Display, gc: GC, pmask: uint, ) --- XSetLineAttributes :: proc( display: ^Display, gc: GC, width: u32, line_style: LineStyle, cap_style: CapStyle, join_style: JoinStyle, ) --- XSetDashes :: proc( display: ^Display, gc: GC, dash_offs: i32, dash_list: [^]i8, n: i32, ) --- XSetFillStyle :: proc( display: ^Display, gc: GC, style: FillStyle, ) --- XSetFillRule :: proc( display: ^Display, gc: GC, rule: FillRule, ) --- XQueryBestSize :: proc( display: ^Display, class: i32, which: Drawable, width: u32, height: u32, out_width: ^u32, out_height: ^u32, ) -> Status --- XQueryBestTile :: proc( display: ^Display, which: Drawable, width: u32, height: u32, out_width: ^u32, out_height: ^u32, ) -> Status --- XQueryBestStripple :: proc( display: ^Display, which: Drawable, width: u32, height: u32, out_width: u32, out_height: u32, ) -> Status --- XSetTile :: proc(display: ^Display, gc: GC, tile: Pixmap) --- XSetStripple :: proc(display: ^Display, gc: GC, stripple: Pixmap) --- XSetTSOrigin :: proc(display: ^Display, gc: GC, x: i32, y: i32) --- XSetFont :: proc(display: ^Display, gc: GC, font: Font) --- XSetClipOrigin :: proc(display: ^Display, gc: GC, x: i32, y: i32) --- XSetClipMask :: proc(display: ^Display, gc: GC, pixmap: Pixmap) --- XSetClipRectangles :: proc( display: ^Display, gc: GC, x: i32, y: i32, rects: [^]XRectangle, n: i32, ordering: i32, ) --- XSetArcMode :: proc(display: ^Display, gc: GC, mode: ArcMode) --- XSetSubwindowMode :: proc(display: ^Display, gc: GC, mode: SubwindowMode) --- XSetGraphicsExposures :: proc(display: ^Display, gc: GC, exp: b32) --- // Graphics functions XClearArea :: proc( display: ^Display, window: Window, x: i32, y: i32, width: u32, height: u32, exp: b32, ) --- XClearWindow :: proc( display: ^Display, window: Window, ) --- XCopyArea :: proc( display: ^Display, src: Drawable, dst: Drawable, gc: GC, src_x: i32, src_y: i32, width: u32, height: u32, dst_x: i32, dst_y: i32, ) --- XCopyPlane :: proc( display: ^Display, src: Drawable, dst: Drawable, gc: GC, src_x: i32, src_y: i32, width: u32, height: u32, dst_x: i32, dst_y: i32, plane: uint, ) --- // Drawing lines, points, rectangles and arc XDrawPoint :: proc( display: ^Display, drawable: Drawable, gc: GC, x: i32, y: i32, ) --- XDrawPoints :: proc( display: Display, drawable: Drawable, gc: GC, point: [^]XPoint, npoints: i32, mode: CoordMode, ) --- XDrawLine :: proc( display: ^Display, drawable: Drawable, gc: GC, x1: i32, y1: i32, x2: i32, y2: i32, ) --- XDrawLines :: proc( display: ^Display, drawable: Drawable, gc: GC, points: [^]XPoint, npoints: i32, ) --- XDrawSegments :: proc( display: ^Display, drawable: Drawable, gc: GC, segs: [^]XSegment, nsegs: i32, ) --- XDrawRectangle :: proc( display: ^Display, drawable: Drawable, gc: GC, x: i32, y: i32, width: u32, height: u32, ) --- XDrawRectangles :: proc( display: ^Display, drawable: Drawable, gc: GC, rects: [^]XRectangle, nrects: i32, ) --- XDrawArc :: proc( display: ^Display, drawable: Drawable, gc: GC, x: i32, y: i32, width: u32, height: u32, angle1: i32, angle2: i32, ) --- XDrawArcs :: proc( display: ^Display, drawable: Drawable, gc: GC, arcs: [^]XArc, narcs: i32, ) --- // Filling areas XFillRectangle :: proc( display: ^Display, drawable: Drawable, gc: GC, x: i32, y: i32, width: u32, height: u32, ) --- XFillRectangles :: proc( display: ^Display, drawable: Drawable, gc: GC, rects: [^]XRectangle, nrects: i32, ) --- XFillPolygon :: proc( display: ^Display, drawable: Drawable, gc: GC, points: [^]XPoint, npoints: i32, shape: Shape, mode: CoordMode, ) --- XFillArc :: proc( display: ^Display, drawable: Drawable, gc: GC, x: i32, y: i32, width: u32, height: u32, angle1: i32, angle2: i32, ) --- XFillArcs :: proc( display: ^Display, drawable: Drawable, gc: GC, arcs: [^]XArc, narcs: i32, ) --- // Font metrics XLoadFont :: proc(display: ^Display, name: cstring) -> Font --- XQueryFont :: proc(display: ^Display, id: XID) -> ^XFontStruct --- XLoadQueryFont :: proc(display: ^Display, name: cstring) -> ^XFontStruct --- XFreeFont :: proc(display: ^Display, font_struct: ^XFontStruct) --- XGetFontProperty :: proc(font_struct: ^XFontStruct, atom: Atom, ret: ^uint) -> b32 --- XUnloadFont :: proc(display: ^Display, font: Font) --- XListFonts :: proc(display: ^Display, pat: cstring, max: i32, count: ^i32) -> [^]cstring --- XFreeFontNames :: proc(display: ^Display, list: [^]cstring) --- XListFontsWithInfo :: proc( display: ^Display, pat: cstring, max: i32, count: ^i32, info: ^[^]XFontStruct, ) -> [^]cstring --- XFreeFontInfo :: proc(names: [^]cstring, info: [^]XFontStruct, count: i32) --- // Computing character string sizes XTextWidth :: proc(font_struct: ^XFontStruct, string: [^]u8, count: i32) -> i32 --- XTextWidth16 :: proc(font_struct: ^XFontStruct, string: [^]XChar2b, count: i32) -> i32 --- XTextExtents :: proc( font_struct: ^XFontStruct, string: [^]u8, nchars: i32, direction: ^FontDirection, ascent: ^i32, descent: ^i32, ret: ^XCharStruct, ) --- XTextExtents16 :: proc( font_struct: ^XFontStruct, string: [^]XChar2b, nchars: i32, direction: ^FontDirection, ascent: ^i32, descent: ^i32, ret: ^XCharStruct, ) --- XQueryTextExtents :: proc( display: ^Display, font_id: XID, string: [^]u8, nchars: i32, direction: ^FontDirection, ascent: ^i32, descent: ^i32, ret: ^XCharStruct, ) --- XQueryTextExtents16 :: proc( display: ^Display, font_id: XID, string: [^]XChar2b, nchars: i32, direction: ^FontDirection, ascent: ^i32, descent: ^i32, ret: ^XCharStruct, ) --- // Drawing complex text XDrawText :: proc( display: ^Display, drawable: Drawable, gc: GC, x: i32, y: i32, items: XTextItem, nitems: i32, ) --- XDrawText16 :: proc( display: ^Display, drawable: Drawable, gc: GC, x: i32, y: i32, items: XTextItem16, nitems: i32, ) --- // Drawing text characters XDrawString :: proc( display: ^Display, drawable: Drawable, gc: GC, x: i32, y: i32, string: [^]u8, length: i32, ) --- XDrawString16 :: proc( display: ^Display, drawable: Drawable, gc: GC, x: i32, y: i32, string: [^]XChar2b, length: i32, ) --- XDrawImageString :: proc( display: ^Display, drawable: Drawable, gc: GC, x: i32, y: i32, string: [^]u8, length: i32, ) --- XDrawImageString16 :: proc( display: ^Display, drawable: Drawable, gc: GC, x: i32, y: i32, string: [^]XChar2b, length: i32, ) --- // Transferring images between client and server XInitImage :: proc(image: ^XImage) -> Status --- XPutImage :: proc( display: ^Display, drawable: Drawable, gc: GC, image: ^XImage, src_x: i32, src_y: i32, dst_x: i32, dst_y: i32, width: u32, height: u32, ) --- XGetImage :: proc( display: ^Display, drawable: Drawable, x: i32, y: i32, width: u32, height: u32, mask: uint, format: ImageFormat, ) -> ^XImage --- XGetSubImage :: proc( display: ^Display, drawable: Drawable, src_x: i32, src_y: i32, width: u32, height: u32, mask: uint, format: ImageFormat, dst: ^XImage, dst_x: i32, dst_y: i32, ) -> ^XImage --- // Window and session manager functions XReparentWindow :: proc( display: ^Display, window: Window, parent: Window, x: i32, y: i32, ) --- XChangeSaveSet :: proc( display: ^Display, window: Window, mode: SaveSetChangeMode, ) --- XAddToSaveSet :: proc( display: ^Display, window: Window, ) --- XRemoveFromSaveSet :: proc( display: ^Display, window: Window, ) --- // Managing installed colormaps XInstallColormap :: proc(display: ^Display, colormap: Colormap) --- XUninstallColormap :: proc(display: ^Display, colormap: Colormap) --- XListInstalledColormaps :: proc(display: ^Display, window: Window, n: ^i32) -> [^]Colormap --- // Setting and retrieving font search paths XSetFontPath :: proc(display: ^Display, dirs: [^]cstring, ndirs: i32) --- XGetFontPath :: proc(display: ^Display, npaths: ^i32) -> [^]cstring --- XFreeFontPath :: proc(list: [^]cstring) --- // Grabbing the server XGrabServer :: proc(display: ^Display) --- XUngrabServer :: proc(display: ^Display) --- // Killing clients XKillClient :: proc(display: ^Display, resource: XID) --- // Controlling the screen saver XSetScreenSaver :: proc( display: ^Display, timeout: i32, interval: i32, blanking: ScreenSaverBlanking, exposures: ScreenSavingExposures, ) --- XForceScreenSaver :: proc(display: ^Display, mode: ScreenSaverForceMode) --- XActivateScreenSaver :: proc(display: ^Display) --- XResetScreenSaver :: proc(display: ^Display) --- XGetScreenSaver :: proc( display: ^Display, timeout: ^i32, interval: ^i32, blanking: ^ScreenSaverBlanking, exposures: ^ScreenSavingExposures, ) --- // Controlling host address XAddHost :: proc(display: ^Display, addr: ^XHostAddress) --- XAddHosts :: proc(display: ^Display, hosts: [^]XHostAddress, nhosts: i32) --- XListHosts :: proc(display: ^Display, nhosts: ^i32, state: [^]b32) -> [^]XHostAddress --- XRemoveHost :: proc(display: ^Display, host: XHostAddress) --- XRemoveHosts :: proc(display: ^Display, hosts: [^]XHostAddress, nhosts: i32) --- // Access control list XSetAccessControl :: proc(display: ^Display, mode: AccessControlMode) --- XEnableAccessControl :: proc(display: ^Display) --- XDisableAccessControl :: proc(display: ^Display) --- // Events XSelectInput :: proc(display: ^Display, window: Window, mask: EventMask) --- XFlush :: proc(display: ^Display) --- XSync :: proc(display: ^Display) --- XEventsQueued :: proc(display: ^Display, mode: EventQueueMode) -> i32 --- XPending :: proc(display: ^Display) -> i32 --- XNextEvent :: proc(display: ^Display, event: ^XEvent) --- XPeekEvent :: proc(display: ^Display, event: ^XEvent) --- // Selecting events using a predicate procedure XIfEvent :: proc( display: ^Display, event: ^XEvent, predicate: #type proc "c" (display: ^Display, event: ^XEvent, ctx: rawptr) -> b32, ctx: rawptr, ) --- XCheckIfEvent :: proc( display: ^Display, event: ^XEvent, predicate: #type proc "c" (display: ^Display, event: ^XEvent, ctx: rawptr) -> b32, arg: rawptr, ) -> b32 --- XPeekIfEvent :: proc( display: ^Display, event: ^XEvent, predicate: #type proc "c" (display: ^Display, event: ^XEvent, ctx: rawptr) -> b32, ctx: rawptr, ) --- // Selecting events using a window or event mask XWindowEvent :: proc( display: ^Display, window: Window, mask: EventMask, event: ^XEvent, ) --- XCheckWindowEvent :: proc( display: ^Display, window: Window, mask: EventMask, event: ^XEvent, ) -> b32 --- XMaskEvent :: proc( display: ^Display, mask: EventMask, event: ^XEvent, ) --- XCheckMaskEvent :: proc( display: ^Display, mask: EventMask, event: ^XEvent, ) -> b32 --- XCheckTypedEvent :: proc( display: ^Display, type: EventType, event: ^XEvent, ) -> b32 --- XCheckTypedWindowEvent :: proc( display: ^Display, window: Window, type: EventType, event: ^XEvent, ) -> b32 --- // Putting events back XPutBackEvent :: proc( display: ^Display, event: ^XEvent, ) --- // Sending events to other applications XSendEvent :: proc( display: ^Display, window: Window, propagate: b32, mask: EventMask, event: ^XEvent, ) -> Status --- // Getting the history of pointer motion XDisplayMotionBufferSize :: proc(display: ^Display) -> uint --- XGetMotionEvents :: proc( display: ^Display, window: Window, start: Time, stop: Time, nevents: ^i32, ) -> [^]XTimeCoord --- // Enabling or disabling synchronization XSetAfterFunction :: proc( display: ^Display, procedure: #type proc "c" (display: ^Display) -> i32, ) -> i32 --- XSynchronize :: proc( display: ^Display, onoff: b32, ) -> i32 --- // Error handling XSetErrorHandler :: proc( handler: #type proc "c" (display: ^Display, event: ^XErrorEvent) -> i32, ) -> i32 --- XGetErrorText :: proc( display: ^Display, code: i32, buffer: [^]u8, size: i32, ) --- XGetErrorDatabaseText :: proc( display: ^Display, name: cstring, message: cstring, default_string: cstring, buffer: [^]u8, size: i32, ) --- XDisplayName :: proc(string: cstring) -> cstring --- XSetIOErrorHandler :: proc( handler: #type proc "c" (display: ^Display) -> i32, ) -> i32 --- // Pointer grabbing XGrabPointer :: proc( display: ^Display, grab_window: Window, owner_events: b32, mask: EventMask, pointer_mode: GrabMode, keyboard_mode: GrabMode, confine_to: Window, cursor: Cursor, time: Time, ) -> i32 --- XUngrabPointer :: proc( display: ^Display, time: Time, ) -> i32 --- XChangeActivePointerGrab :: proc( display: ^Display, event_mask: EventMask, cursor: Cursor, time: Time, ) --- XGrabButton :: proc( display: ^Display, button: u32, modifiers: InputMask, grab_window: Window, owner_events: b32, event_mask: EventMask, pointer_mode: GrabMode, keyboard_mode: GrabMode, confine_to: Window, cursor: Cursor, ) --- XUngrabButton :: proc( display: ^Display, button: u32, modifiers: InputMask, grab_window: Window, ) --- XGrabKeyboard :: proc( display: ^Display, grab_window: Window, owner_events: b32, pointer_mode: GrabMode, keyboard_mode: GrabMode, time: Time, ) -> i32 --- XUngrabKeyboard :: proc( display: ^Display, time: Time, ) --- XGrabKey :: proc( display: ^Display, keycode: i32, modifiers: InputMask, grab_window: Window, owner_events: b32, pointer_mode: GrabMode, keyboard_mode: GrabMode, ) --- XUngrabKey :: proc( display: ^Display, keycode: i32, modifiers: InputMask, grab_window: Window, ) --- // Resuming event processing XAllowEvents :: proc(display: ^Display, evend_mode: AllowEventsMode, time: Time) --- // Moving the pointer XWarpPointer :: proc( display: ^Display, src_window: Window, dst_window: Window, src_x: i32, src_y: i32, src_width: u32, src_height: u32, dst_x: i32, dst_y: i32, ) --- // Controlling input focus XSetInputFocus :: proc( display: ^Display, focus: Window, revert_to: FocusRevert, time: Time, ) --- XGetInputFocus :: proc( display: ^Display, focus: ^Window, revert_to: ^FocusRevert, ) --- // Manipulating the keyboard and pointer settings XChangeKeyboardControl :: proc( display: ^Display, mask: KeyboardControlMask, values: ^XKeyboardControl, ) --- XGetKeyboardControl :: proc( display: ^Display, values: ^XKeyboardState, ) --- XAutoRepeatOn :: proc(display: ^Display) --- XAutoRepeatOff :: proc(display: ^Display) --- XBell :: proc(display: ^Display, percent: i32) --- XQueryKeymap :: proc(display: ^Display, keys: [^]u32) --- XSetPointerMapping :: proc(display: ^Display, map_should_not_be_a_keyword: [^]u8, nmap: i32) -> i32 --- XGetPointerMapping :: proc(display: ^Display, map_should_not_be_a_keyword: [^]u8, nmap: i32) -> i32 --- XChangePointerControl :: proc( display: ^Display, do_accel: b32, do_threshold: b32, accel_numerator: i32, accel_denominator: i32, threshold: i32, ) --- XGetPointerControl :: proc( display: ^Display, accel_numerator: ^i32, accel_denominator: ^i32, threshold: ^i32, ) --- // Manipulating the keyboard encoding XDisplayKeycodes :: proc( display: ^Display, min_keycodes: ^i32, max_keycodes: ^i32, ) --- XGetKeyboardMapping :: proc( display: ^Display, first: KeyCode, count: i32, keysyms_per: ^i32, ) -> ^KeySym --- XChangeKeyboardMapping :: proc( display: ^Display, first: KeyCode, keysyms_per: i32, keysyms: [^]KeySym, num_codes: i32, ) --- XNewModifiermap :: proc(max_keys_per_mode: i32) -> ^XModifierKeymap --- XInsertModifiermapEntry :: proc( modmap: ^XModifierKeymap, keycode_entry: KeyCode, modifier: i32, ) -> ^XModifierKeymap --- XDeleteModifiermapEntry :: proc( modmap: ^XModifierKeymap, keycode_entry: KeyCode, modifier: i32, ) -> ^XModifierKeymap --- XFreeModifiermap :: proc(modmap: ^XModifierKeymap) --- XSetModifierMapping :: proc(display: ^Display, modmap: ^XModifierKeymap) -> i32 --- XGetModifierMapping :: proc(display: ^Display) -> ^XModifierKeymap --- // Manipulating top-level windows XIconifyWindow :: proc( dipslay: ^Display, window: Window, screen_no: i32, ) -> Status --- XWithdrawWindow :: proc( dipslay: ^Display, window: Window, screen_no: i32, ) -> Status --- XReconfigureWMWindow :: proc( dipslay: ^Display, window: Window, screen_no: i32, mask: WindowChangesMask, changes: ^XWindowChanges, ) -> Status --- // Getting and setting the WM_NAME property XSetWMName :: proc( display: ^Display, window: Window, prop: ^XTextProperty, ) --- XGetWMName :: proc( display: ^Display, window: Window, prop: ^XTextProperty, ) -> Status --- XStoreName :: proc( display: ^Display, window: Window, name: cstring, ) --- XFetchName :: proc( display: ^Display, window: Window, name: ^cstring, ) -> Status --- XSetWMIconName :: proc( display: ^Display, window: Window, prop: ^XTextProperty, ) --- XGetWMIconName :: proc( display: ^Display, window: Window, prop: ^XTextProperty, ) -> Status --- XSetIconName :: proc( display: ^Display, window: Window, name: cstring, ) --- XGetIconName :: proc( display: ^Display, window: Window, prop: ^cstring, ) -> Status --- // Setting and reading WM_HINTS property XAllocWMHints :: proc() -> ^XWMHints --- XSetWMHints :: proc( display: ^Display, window: Window, hints: ^XWMHints, ) --- XGetWMHints :: proc( display: ^Display, window: Window, ) -> ^XWMHints --- // Setting and reading MW_NORMAL_HINTS property XAllocSizeHints :: proc() -> ^XSizeHints --- XSetWMNormalHints :: proc( display: ^Display, window: Window, hints: ^XSizeHints, ) --- XGetWMNormalHints :: proc( display: ^Display, window: Window, hints: ^XSizeHints, flags: ^SizeHints, ) -> Status --- XSetWMSizeHints :: proc( display: ^Display, window: Window, hints: ^XSizeHints, prop: Atom, ) --- XGetWMSizeHints :: proc( display: ^Display, window: Window, hints: ^XSizeHints, masks: ^SizeHints, prop: Atom, ) -> Status --- // Setting and reading the WM_CLASS property XAllocClassHint :: proc() -> ^XClassHint --- XSetClassHint :: proc( display: ^Display, window: Window, hint: ^XClassHint, ) --- XGetClassHint :: proc( display: ^Display, window: Window, hint: ^XClassHint, ) -> Status --- // Setting and reading WM_TRANSIENT_FOR property XSetTransientForHint :: proc( display: ^Display, window: Window, prop_window: Window, ) --- XGetTransientForHint :: proc( display: ^Display, window: Window, prop_window: ^Window, ) -> Status --- // Setting and reading the WM_PROTOCOLS property XSetWMProtocols :: proc( display: ^Display, window: Window, protocols: [^]Atom, count: i32, ) -> Status --- XGetWMProtocols :: proc( display: ^Display, window: Window, protocols: ^[^]Atom, count: ^i32, ) -> Status --- // Setting and reading the WM_COLORMAP_WINDOWS property XSetWMColormapWindows :: proc( display: ^Display, window: Window, colormap_windows: [^]Window, count: i32, ) -> Status --- XGetWMColormapWindows :: proc( display: ^Display, window: Window, colormap_windows: ^[^]Window, count: ^i32, ) -> Status --- // Setting and reading the WM_ICON_SIZE_PROPERTY XAllocIconSize :: proc() -> ^XIconSize --- XSetIconSizes :: proc( display: ^Display, window: Window, size_list: [^]XIconSize, count: i32, ) --- XGetIconSizes :: proc( display: ^Display, window: Window, size_list: ^[^]XIconSize, count: ^i32, ) -> Status --- // Using window manager convenience functions XmbSetWMProperties :: proc( display: ^Display, window: Window, window_name: cstring, icon_name: cstring, argv: [^]cstring, argc: i32, normal_hints: ^XSizeHints, wm_hints: ^XWMHints, class_hints: ^XClassHint, ) --- XSetWMProperties :: proc( display: ^Display, window: Window, window_name: ^XTextProperty, argv: [^]cstring, argc: i32, normal_hints: ^XSizeHints, wm_hints: ^XWMHints, class_hints: ^XWMHints, ) --- // Client to session manager communication XSetCommand :: proc( display: ^Display, window: Window, argv: [^]cstring, argc: i32, ) --- XGetCommand :: proc( display: ^Display, window: Window, argv: ^[^]cstring, argc: ^i32, ) -> Status --- XSetWMClientMachine :: proc( display: ^Display, window: Window, prop: ^XTextProperty, ) --- XGetWMClientMachine :: proc( display: ^Display, window: Window, prop: ^XTextProperty, ) -> Status --- XSetRGBColormaps :: proc( display: ^Display, window: Window, colormap: ^XStandardColormap, prop: Atom, ) --- XGetRGBColormaps :: proc( display: ^Display, window: Window, colormap: ^[^]XStandardColormap, count: ^i32, prop: Atom, ) -> Status --- // Keyboard utility functions XLookupKeysym :: proc( event: ^XKeyEvent, index: i32, ) -> KeySym --- XKeycodeToKeysym :: proc( display: ^Display, keycode: KeyCode, index: i32, ) -> KeySym --- XKeysymToKeycode :: proc( display: ^Display, keysym: KeySym, ) -> KeyCode --- XRefreshKeyboardMapping :: proc(event_map: ^XMappingEvent) --- XConvertCase :: proc( keysym: KeySym, lower: ^KeySym, upper: ^KeySym, ) --- XStringToKeysym :: proc(str: cstring) -> KeySym --- XKeysymToString :: proc(keysym: KeySym) -> cstring --- XLookupString :: proc( event: ^XKeyEvent, buffer: [^]u8, count: i32, keysym: ^KeySym, status: ^XComposeStatus, ) -> i32 --- XRebindKeysym :: proc( display: ^Display, keysym: KeySym, list: [^]KeySym, mod_count: i32, string: [^]u8, num_bytes: i32, ) --- // Allocating permanent storage XPermalloc :: proc(size: u32) -> rawptr --- // Parsing the window geometry XParseGeometry :: proc( parsestring: cstring, x_ret: ^i32, y_ret: ^i32, width: ^u32, height: ^u32, ) -> i32 --- XWMGeometry :: proc( display: ^Display, screen_no: i32, user_geom: cstring, def_geom: cstring, bwidth: u32, hints: ^XSizeHints, x_ret: ^i32, y_ret: ^i32, w_ret: ^u32, h_ret: ^u32, grav: ^Gravity, ) -> i32 --- // Creating, copying and destroying regions XCreateRegion :: proc() -> Region --- XPolygonRegion :: proc( points: [^]XPoint, n: i32, fill: FillRule, ) -> Region --- XSetRegion :: proc( display: ^Display, gc: GC, region: Region, ) --- XDestroyRegion :: proc(r: Region) --- // Moving or shrinking regions XOffsetRegion :: proc(region: Region, dx, dy: i32) --- XShrinkRegion :: proc(region: Region, dx, dy: i32) --- // Computing with regions XClipBox :: proc(region: Region, rect: ^XRectangle) --- XIntersectRegion :: proc(sra, srb, ret: Region) --- XUnionRegion :: proc(sra, srb, ret: Region) --- XUnionRectWithRegion :: proc(rect: ^XRectangle, src, dst: Region) --- XSubtractRegion :: proc(sra, srb, ret: Region) --- XXorRegion :: proc(sra, srb, ret: Region) --- XEmptyRegion :: proc(reg: Region) -> b32 --- XEqualRegion :: proc(a,b: Region) -> b32 --- XPointInRegion :: proc(reg: Region, x,y: i32) -> b32 --- XRectInRegion :: proc(reg: Region, x,y: i32, w,h: u32) -> b32 --- // Using cut buffers XStoreBytes :: proc(display: ^Display, bytes: [^]u8, nbytes: i32) --- XStoreBuffer :: proc(display: ^Display, bytes: [^]u8, nbytes: i32, buffer: i32) --- XFetchBytes :: proc(display: ^Display, nbytes: ^i32) -> [^]u8 --- XFetchBuffer :: proc(display: ^Display, nbytes: ^i32, buffer: i32) -> [^]u8 --- // Determining the appropriate visual types XGetVisualInfo :: proc( display: ^Display, mask: VisualInfoMask, info: ^XVisualInfo, nret: ^i32, ) -> [^]XVisualInfo --- XMatchVisualInfo :: proc( display: ^Display, screen_no: i32, depth: i32, class: i32, ret: ^XVisualInfo, ) -> Status --- // Manipulating images XCreateImage :: proc( display: ^Display, visual: ^Visual, depth: u32, format: ImageFormat, offset: i32, data: rawptr, width: u32, height: u32, pad: i32, stride: i32, ) -> ^XImage --- XGetPixel :: proc( image: ^XImage, x: i32, y: i32, ) -> uint --- XPutPixel :: proc( image: ^XImage, x: i32, y: i32, pixel: uint, ) --- XSubImage :: proc( image: ^XImage, x: i32, y: i32, w: u32, h: u32, ) -> ^XImage --- XAddPixel :: proc( image: ^XImage, value: int, ) --- XDestroyImage :: proc(image: ^XImage) --- }