Files
Odin/vendor/x11/xlib/xlib_procs.odin
T
2023-12-01 12:00:45 +11:00

1910 lines
48 KiB
Odin

//+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) ---
}