mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-02 12:48:14 +00:00
1550 lines
39 KiB
Odin
1550 lines
39 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) -> ^Screen ---
|
|
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,
|
|
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 ---
|
|
}
|