Files
Odin/vendor/x11/xlib/xlib_procs.odin
2026-02-27 09:54:26 -03:00

2078 lines
53 KiB
Odin

#+build linux, openbsd, freebsd
package xlib
foreign import xlib "system:X11"
foreign xlib {
@(link_name="_Xdebug") _Xdebug: i32
}
foreign import xcursor "system:Xcursor"
@(default_calling_convention="c", link_prefix="X")
foreign xcursor {
cursorGetTheme :: proc(display: ^Display) -> cstring ---
cursorGetDefaultSize :: proc(display: ^Display) -> i32 ---
cursorLibraryLoadCursor :: proc(display: ^Display, name: cstring) -> Cursor ---
cursorLibraryLoadImage :: proc(name: cstring, theme: cstring, size: i32) -> rawptr ---
cursorImageCreate :: proc(width: i32, height: i32) -> ^CursorImage ---
cursorImageLoadCursor :: proc(display: ^Display, img: ^CursorImage) -> Cursor ---
cursorImageDestroy :: proc(img: rawptr) ---
}
foreign import xfixes "system:Xfixes"
@(default_calling_convention="c", link_prefix="XFixes")
foreign xfixes {
HideCursor :: proc(display: ^Display, window: Window) ---
ShowCursor :: proc(display: ^Display, window: Window) ---
}
foreign import xrandr "system:Xrandr"
@(default_calling_convention="c")
foreign xrandr {
XRRSizes :: proc(display: ^Display, screen: i32, nsizes: ^i32) -> [^]XRRScreenSize ---
XRRGetScreenResources :: proc(display: ^Display, window: Window) -> ^XRRScreenResources ---
XRRFreeScreenResources :: proc(resources: ^XRRScreenResources) ---
XRRGetOutputInfo :: proc(display: ^Display, resources: ^XRRScreenResources, output: RROutput) -> ^XRROutputInfo ---
XRRFreeOutputInfo :: proc(output_info: ^XRROutputInfo) ---
XRRGetCrtcInfo :: proc(display: ^Display, resources: ^XRRScreenResources, crtc: RRCrtc) -> ^XRRCrtcInfo ---
XRRFreeCrtcInfo :: proc(crtc_info: ^XRRCrtcInfo) ---
XRRGetMonitors :: proc(dpy: ^Display, window: Window, get_active: b32, nmonitors: ^i32) -> [^]XRRMonitorInfo ---
}
foreign import xinput "system:Xi"
foreign xinput {
XISelectEvents :: proc(display: ^Display, window: Window, masks: [^]XIEventMask, num_masks: i32) -> i32 ---
XIQueryVersion :: proc(display: ^Display, major: ^i32, minor: ^i32) -> Status ---
}
XISetMask :: proc(ptr: [^]u8, event: XIEventType) {
ptr[cast(i32)event >> 3] |= (1 << cast(uint)((cast(i32)event) & 7))
}
XIMaskIsSet :: proc(ptr: [^]u8, event: i32) -> bool {
return (ptr[event >> 3] & (1 << cast(uint)((event) & 7))) != 0
}
/* ---- X11/Xlib.h ---------------------------------------------------------*/
@(default_calling_convention="c", link_prefix="X")
foreign xlib {
// Free data allocated by Xlib
Free :: proc(ptr: rawptr) ---
// Opening/closing a display
OpenDisplay :: proc(name: cstring) -> ^Display ---
CloseDisplay :: proc(display: ^Display) ---
SetCloseDownMode :: proc(display: ^Display, mode: CloseMode) ---
// Generate a no-op request
NoOp :: proc(display: ^Display) ---
// Display macros (connection)
ConnectionNumber :: proc(display: ^Display) -> i32 ---
ExtendedMaxRequestSize :: proc(display: ^Display) -> int ---
MaxRequestSize :: proc(display: ^Display) -> int ---
LastKnownRequestProcessed :: proc(display: ^Display) -> uint ---
NextRequest :: proc(display: ^Display) -> uint ---
ProtocolVersion :: proc(display: ^Display) -> i32 ---
ProtocolRevision :: proc(display: ^Display) -> i32 ---
QLength :: proc(display: ^Display) -> i32 ---
ServerVendor :: proc(display: ^Display) -> cstring ---
VendorRelease :: proc(display: ^Display) -> i32 ---
// Display macros (display properties)
BlackPixel :: proc(display: ^Display, screen_no: i32) -> uint ---
WhitePixel :: proc(display: ^Display, screen_no: i32) -> uint ---
ListDepths :: proc(display: ^Display, screen_no: i32, count: ^i32) -> [^]i32 ---
DisplayCells :: proc(display: ^Display, screen_no: i32) -> i32 ---
DisplayPlanes :: proc(display: ^Display, screen_no: i32) -> i32 ---
ScreenOfDisplay :: proc(display: ^Display, screen_no: i32) -> ^Screen ---
DisplayString :: proc(display: ^Display) -> cstring ---
// Display macros (defaults)
DefaultColormap :: proc(display: ^Display, screen_no: i32) -> Colormap ---
DefaultDepth :: proc(display: ^Display, screen_no: i32) -> i32 ---
DefaultGC :: proc(display: ^Display, screen_no: i32) -> GC ---
DefaultRootWindow :: proc(display: ^Display) -> Window ---
DefaultScreen :: proc(display: ^Display) -> i32 ---
DefaultVisual :: proc(display: ^Display, screen_no: i32) -> ^Visual ---
DefaultScreenOfDisplay :: proc(display: ^Display) -> ^Screen ---
// Display macros (other)
RootWindow :: proc(display: ^Display, screen_no: i32) -> Window ---
ScreenCount :: proc(display: ^Display) -> i32 ---
// Display image format macros
ListPixmapFormats :: proc(display: ^Display, count: ^i32) -> [^]XPixmapFormatValues ---
ImageByteOrder :: proc(display: ^Display) -> ByteOrder ---
BitmapUnit :: proc(display: ^Display) -> i32 ---
BitmapBitOrder :: proc(display: ^Display) -> ByteOrder ---
BitmapPad :: proc(display: ^Display) -> i32 ---
DisplayHeight :: proc(display: ^Display, screen_no: i32) -> i32 ---
DisplayHeightMM :: proc(display: ^Display, screen_no: i32) -> i32 ---
DisplayWidth :: proc(display: ^Display, screen_no: i32) -> i32 ---
DisplayWidthMM :: proc(display: ^Display, screen_no: i32) -> i32 ---
// Screen macros
BlackPixelsOfScreen :: proc(screen: ^Screen) -> uint ---
WhitePixelsOfScreen :: proc(screen: ^Screen) -> uint ---
CellsOfScreen :: proc(screen: ^Screen) -> i32 ---
DefaultColormapOfScreen :: proc(screen: ^Screen) -> Colormap ---
DefaultDepthOfScreen :: proc(screen: ^Screen) -> i32 ---
DefaultGCOfScreen :: proc(screen: ^Screen) -> GC ---
DefaultVisualOfScreen :: proc(screen: ^Screen) -> ^Visual ---
DoesBackingStore :: proc(screen: ^Screen) -> BackingStore ---
DoesSaveUnders :: proc(screen: ^Screen) -> b32 ---
DisplayOfScreen :: proc(screen: ^Screen) -> ^Display ---
ScreenNumberOfScreen :: proc(screen: ^Screen) -> i32 ---
EventMaskOfScreen :: proc(screen: ^Screen) -> EventMask ---
WidthOfScreen :: proc(screen: ^Screen) -> i32 ---
HeightOfScreen :: proc(screen: ^Screen) -> i32 ---
WidthMMOfScreen :: proc(screen: ^Screen) -> i32 ---
HeightMMOfScreen :: proc(screen: ^Screen) -> i32 ---
MaxCmapsOfScreen :: proc(screen: ^Screen) -> i32 ---
MinCmapsOfScreen :: proc(screen: ^Screen) -> i32 ---
PlanesOfScreen :: proc(screen: ^Screen) -> i32 ---
RootWindowOfScreen :: proc(screen: ^Screen) -> Window ---
// Threading functions
InitThreads :: proc() -> Status ---
LockDisplay :: proc(display: ^Display) ---
UnlockDisplay :: proc(display: ^Display) ---
// Internal connections
AddConnectionWatch :: proc(
display: ^Display,
procedure: XConnectionWatchProc,
data: rawptr,
) -> Status ---
RemoveConnectionWatch :: proc(
display: ^Display,
procedure: XConnectionWatchProc,
data: rawptr,
) -> Status ---
ProcessInternalConnections :: proc(
display: ^Display,
fd: i32,
) ---
InternalConnectionNumbers :: proc(
display: ^Display,
fds: ^[^]i32,
count: ^i32,
) -> Status ---
// Windows functions
VisualIDFromVisual :: proc(visual: ^Visual) -> VisualID ---
// Windows: creation/destruction
CreateWindow :: 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 ---
CreateSimpleWindow :: proc(
display: ^Display,
parent: Window,
x: i32,
y: i32,
width: u32,
height: u32,
bordersz: u32,
border: uint,
bg: uint,
) -> Window ---
DestroyWindow :: proc(display: ^Display, window: Window) ---
DestroySubwindows :: proc(display: ^Display, window: Window) ---
// Windows: mapping/unmapping
MapWindow :: proc(display: ^Display, window: Window) ---
MapRaised :: proc(display: ^Display, window: Window) ---
MapSubwindows :: proc(display: ^Display, window: Window) ---
UnmapWindow :: proc(display: ^Display, window: Window) ---
UnmapSubwindows :: proc(display: ^Display, window: Window) ---
// Windows: configuring
ConfigureWindow :: proc(
display: ^Display,
window: Window,
mask: WindowChangesMask,
changes: ^XWindowChanges,
) -> i32 ---
MoveWindow :: proc(
display: ^Display,
window: Window,
x: i32,
y: i32,
) ---
ResizeWindow :: proc(
display: ^Display,
window: Window,
width: u32,
height: u32,
) ---
MoveResizeWindow :: proc(
display: ^Display,
window: Window,
x: i32,
y: i32,
width: u32,
height: u32,
) ---
SetWindowBorderWidth :: proc(
display: ^Display,
window: Window,
width: u32,
) ---
SetWindowBorder :: proc(
display: ^Display,
window: Window,
pixel: uint,
) ---
// Window: changing stacking order
RaiseWindow :: proc(display: ^Display, window: Window) ---
LowerWindow :: proc(display: ^Display, window: Window) ---
CirculateSubwindows :: proc(display: ^Display, window: Window, direction: CirculationDirection) ---
CirculateSubwindowsUp :: proc(display: ^Display, window: Window) ---
CirculateSubwindowsDown :: proc(display: ^Display, window: Window) ---
RestackWindows :: proc(display: ^Display, windows: [^]Window, nwindows: i32) ---
// Window: changing attributes
ChangeWindowAttributes :: proc(
display: ^Display,
window: Window,
attr_mask: WindowAttributeMask,
attr: ^XSetWindowAttributes,
) ---
SetWindowBackground :: proc(
display: ^Display,
window: Window,
pixel: uint,
) ---
SetWindowBackgroundPixmap :: proc(
display: ^Display,
window: Window,
pixmap: Pixmap,
) ---
SetWindowColormap :: proc(
display: ^Display,
window: Window,
colormap: Colormap,
) ---
DefineCursor :: proc(
display: ^Display,
window: Window,
cursor: Cursor,
) -> i32 ---
UndefineCursor :: proc(
display: ^Display,
window: Window,
) -> i32 ---
// Windows: querying information
QueryTree :: proc(
display: ^Display,
window: Window,
root: ^Window,
parent: ^Window,
children: ^[^]Window,
nchildren: ^u32,
) -> Status ---
GetWindowAttributes :: proc(
display: ^Display,
window: Window,
attr: ^XWindowAttributes,
) -> i32 ---
GetGeometry :: 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
TranslateCoordinates :: proc(
display: ^Display,
src_window: Window,
dst_window: Window,
src_x: i32,
src_y: i32,
dst_x: ^i32,
dst_y: ^i32,
) -> b32 ---
QueryPointer :: proc(
display: ^Display,
window: Window,
root: ^Window,
child: ^Window,
root_x: ^i32,
root_y: ^i32,
x: ^i32,
y: ^i32,
mask: ^KeyMask,
) -> b32 ---
// Atoms
InternAtom :: proc(
display: ^Display,
name: cstring,
existing: b32,
) -> Atom ---
InternAtoms :: proc(
display: ^Display,
names: [^]cstring,
count: i32,
atoms: [^]Atom,
) -> Status ---
GetAtomName :: proc(
display: ^Display,
atom: Atom,
) -> cstring ---
GetAtomNames :: proc(
display: ^Display,
atoms: [^]Atom,
count: i32,
names: [^]cstring,
) -> Status ---
// Windows: Obtaining and changing properties
GetWindowProperty :: 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 ---
ListProperties :: proc(
display: ^Display,
window: Window,
num: ^i32,
) -> [^]Atom ---
ChangeProperty :: proc(
display: ^Display,
window: Window,
property: Atom,
type: Atom,
format: i32,
mode: i32,
data: rawptr,
count: i32,
) -> i32 ---
RotateWindowProperties :: proc(
display: ^Display,
window: Window,
props: [^]Atom,
nprops: i32,
npos: i32,
) -> i32 ---
DeleteProperty :: proc(
display: ^Display,
window: Window,
prop: Atom,
) -> i32 ---
// Selections
SetSelectionOwner :: proc(
display: ^Display,
selection: Atom,
owner: Window,
time: Time,
) ---
GetSelectionOwner :: proc(
display: ^Display,
selection: Atom,
) -> Window ---
ConvertSelection :: proc(
display: ^Display,
selection: Atom,
target: Atom,
property: Atom,
requestor: Window,
time: Time,
) ---
GetTextProperty :: proc(
display: ^Display,
window: Window,
text_prop_return: ^XTextProperty,
property: Atom,
) -> Status ---
SetTextProperty :: proc(
display: ^Display,
window: Window,
text_prop: ^XTextProperty,
property: Atom,
) ---
// Creating and freeing pixmaps
CreatePixmap :: proc(
display: ^Display,
drawable: Drawable,
width: u32,
height: u32,
depth: u32,
) -> Pixmap ---
FreePixmap :: proc(
display: ^Display,
pixmap: Pixmap,
) ---
// Creating recoloring and freeing cursors
CreateFontCursor :: proc(
display: ^Display,
shape: CursorShape,
) -> Cursor ---
CreateGlyphCursor :: proc(
display: ^Display,
src_font: Font,
mask_font: Font,
src_char: u32,
mask_char: u32,
fg: ^XColor,
bg: ^XColor,
) -> Cursor ---
CreatePixmapCursor :: proc(
display: ^Display,
source: Pixmap,
mask: Pixmap,
fg: XColor,
bg: ^XColor,
x: u32,
y: u32,
) -> Cursor ---
QueryBestCursor :: proc(
display: ^Display,
drawable: Drawable,
width: u32,
height: u32,
out_width: ^u32,
out_height: ^u32,
) -> Status ---
RecolorCursor :: proc(
display: ^Display,
cursor: Cursor,
fg: ^XColor,
bg: ^XColor,
) ---
FreeCursor :: proc(display: ^Display, cursor: Cursor) ---
// Creation/destruction of colormaps
CreateColormap :: proc(
display: ^Display,
window: Window,
visual: ^Visual,
alloc: ColormapAlloc,
) -> Colormap ---
CopyColormapAndFree :: proc(
display: ^Display,
colormap: Colormap,
) -> Colormap ---
FreeColormap :: proc(
display: ^Display,
colormap: Colormap,
) ---
// Mapping color names to values
LookupColor :: proc(
display: ^Display,
colomap: Colormap,
name: cstring,
exact: ^XColor,
screen: ^XColor,
) -> Status ---
// Allocating and freeing color cells
AllocColor :: proc(
display: ^Display,
colormap: Colormap,
screen: ^XColor,
) -> Status ---
AllocNamedColor :: proc(
display: ^Display,
colormap: Colormap,
name: cstring,
screen: ^XColor,
exact: ^XColor,
) -> Status ---
AllocColorCells :: proc(
display: ^Display,
colormap: Colormap,
contig: b32,
pmasks: [^]uint,
np: u32,
pixels: [^]uint,
npixels: u32,
) -> Status ---
AllocColorPlanes :: proc(
display: ^Display,
colormap: Colormap,
contig: b32,
pixels: [^]uint,
ncolors: i32,
nreds: i32,
ngreens: i32,
nblues: i32,
rmask: [^]uint,
gmask: [^]uint,
bmask: [^]uint,
) -> Status ---
FreeColors :: proc(
display: ^Display,
colormap: Colormap,
pixels: [^]uint,
npixels: i32,
planes: uint,
) ---
// Modifying and querying colormap cells
StoreColor :: proc(
display: ^Display,
colormap: Colormap,
color: ^XColor,
) ---
StoreColors :: proc(
display: ^Display,
colormap: Colormap,
color: [^]XColor,
ncolors: i32,
) ---
// Graphics context functions
CreateGC :: proc(
display: ^Display,
drawable: Drawable,
mask: GCAttributeMask,
attr: ^XGCValues,
) -> GC ---
CopyGC :: proc(
display: ^Display,
src: GC,
dst: GC,
mask: GCAttributeMask,
) ---
ChangeGC :: proc(
display: ^Display,
gc: GC,
mask: GCAttributeMask,
values: ^XGCValues,
) ---
GetGCValues :: proc(
display: ^Display,
gc: GC,
mask: GCAttributeMask,
values: ^XGCValues,
) -> Status ---
FreeGC :: proc(display: ^Display, gc: GC) ---
GCContextFromGC :: proc(gc: GC) -> GContext ---
FlushGC :: proc(display: ^Display, gc: GC) ---
// Convenience routines for GC
SetState :: proc(
display: ^Display,
gc: GC,
fg: uint,
bg: uint,
fn: GCFunction,
pmask: uint,
) ---
SetForeground :: proc(
display: ^Display,
gc: GC,
fg: uint,
) ---
SetBackground :: proc(
display: ^Display,
gc: GC,
bg: uint,
) ---
SetFunction :: proc(
display: ^Display,
gc: GC,
fn: GCFunction,
) ---
SetPlaneMask :: proc(
display: ^Display,
gc: GC,
pmask: uint,
) ---
SetLineAttributes :: proc(
display: ^Display,
gc: GC,
width: u32,
line_style: LineStyle,
cap_style: CapStyle,
join_style: JoinStyle,
) ---
SetDashes :: proc(
display: ^Display,
gc: GC,
dash_offs: i32,
dash_list: [^]i8,
n: i32,
) ---
SetFillStyle :: proc(
display: ^Display,
gc: GC,
style: FillStyle,
) ---
SetFillRule :: proc(
display: ^Display,
gc: GC,
rule: FillRule,
) ---
QueryBestSize :: proc(
display: ^Display,
class: i32,
which: Drawable,
width: u32,
height: u32,
out_width: ^u32,
out_height: ^u32,
) -> Status ---
QueryBestTile :: proc(
display: ^Display,
which: Drawable,
width: u32,
height: u32,
out_width: ^u32,
out_height: ^u32,
) -> Status ---
QueryBestStripple :: proc(
display: ^Display,
which: Drawable,
width: u32,
height: u32,
out_width: u32,
out_height: u32,
) -> Status ---
SetTile :: proc(display: ^Display, gc: GC, tile: Pixmap) ---
SetStripple :: proc(display: ^Display, gc: GC, stripple: Pixmap) ---
SetTSOrigin :: proc(display: ^Display, gc: GC, x: i32, y: i32) ---
SetFont :: proc(display: ^Display, gc: GC, font: Font) ---
SetClipOrigin :: proc(display: ^Display, gc: GC, x: i32, y: i32) ---
SetClipMask :: proc(display: ^Display, gc: GC, pixmap: Pixmap) ---
SetClipRectangles :: proc(
display: ^Display,
gc: GC,
x: i32,
y: i32,
rects: [^]XRectangle,
n: i32,
ordering: i32,
) ---
SetArcMode :: proc(display: ^Display, gc: GC, mode: ArcMode) ---
SetSubwindowMode :: proc(display: ^Display, gc: GC, mode: SubwindowMode) ---
SetGraphicsExposures :: proc(display: ^Display, gc: GC, exp: b32) ---
// Graphics functions
ClearArea :: proc(
display: ^Display,
window: Window,
x: i32,
y: i32,
width: u32,
height: u32,
exp: b32,
) ---
ClearWindow :: proc(
display: ^Display,
window: Window,
) ---
CopyArea :: 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,
) ---
CopyPlane :: 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
DrawPoint :: proc(
display: ^Display,
drawable: Drawable,
gc: GC,
x: i32,
y: i32,
) ---
DrawPoints :: proc(
display: Display,
drawable: Drawable,
gc: GC,
point: [^]XPoint,
npoints: i32,
mode: CoordMode,
) ---
DrawLine :: proc(
display: ^Display,
drawable: Drawable,
gc: GC,
x1: i32,
y1: i32,
x2: i32,
y2: i32,
) ---
DrawLines :: proc(
display: ^Display,
drawable: Drawable,
gc: GC,
points: [^]XPoint,
npoints: i32,
) ---
DrawSegments :: proc(
display: ^Display,
drawable: Drawable,
gc: GC,
segs: [^]XSegment,
nsegs: i32,
) ---
DrawRectangle :: proc(
display: ^Display,
drawable: Drawable,
gc: GC,
x: i32,
y: i32,
width: u32,
height: u32,
) ---
DrawRectangles :: proc(
display: ^Display,
drawable: Drawable,
gc: GC,
rects: [^]XRectangle,
nrects: i32,
) ---
DrawArc :: proc(
display: ^Display,
drawable: Drawable,
gc: GC,
x: i32,
y: i32,
width: u32,
height: u32,
angle1: i32,
angle2: i32,
) ---
DrawArcs :: proc(
display: ^Display,
drawable: Drawable,
gc: GC,
arcs: [^]XArc,
narcs: i32,
) ---
// Filling areas
FillRectangle :: proc(
display: ^Display,
drawable: Drawable,
gc: GC,
x: i32,
y: i32,
width: u32,
height: u32,
) ---
FillRectangles :: proc(
display: ^Display,
drawable: Drawable,
gc: GC,
rects: [^]XRectangle,
nrects: i32,
) ---
FillPolygon :: proc(
display: ^Display,
drawable: Drawable,
gc: GC,
points: [^]XPoint,
npoints: i32,
shape: Shape,
mode: CoordMode,
) ---
FillArc :: proc(
display: ^Display,
drawable: Drawable,
gc: GC,
x: i32,
y: i32,
width: u32,
height: u32,
angle1: i32,
angle2: i32,
) ---
FillArcs :: proc(
display: ^Display,
drawable: Drawable,
gc: GC,
arcs: [^]XArc,
narcs: i32,
) ---
// Font metrics
LoadFont :: proc(display: ^Display, name: cstring) -> Font ---
QueryFont :: proc(display: ^Display, id: XID) -> ^XFontStruct ---
LoadQueryFont :: proc(display: ^Display, name: cstring) -> ^XFontStruct ---
FreeFont :: proc(display: ^Display, font_struct: ^XFontStruct) ---
GetFontProperty :: proc(font_struct: ^XFontStruct, atom: Atom, ret: ^uint) -> b32 ---
UnloadFont :: proc(display: ^Display, font: Font) ---
ListFonts :: proc(display: ^Display, pat: cstring, max: i32, count: ^i32) -> [^]cstring ---
FreeFontNames :: proc(display: ^Display, list: [^]cstring) ---
ListFontsWithInfo :: proc(
display: ^Display,
pat: cstring,
max: i32,
count: ^i32,
info: ^[^]XFontStruct,
) -> [^]cstring ---
FreeFontInfo :: proc(names: [^]cstring, info: [^]XFontStruct, count: i32) ---
// Computing character string sizes
TextWidth :: proc(font_struct: ^XFontStruct, string: [^]u8, count: i32) -> i32 ---
TextWidth16 :: proc(font_struct: ^XFontStruct, string: [^]XChar2b, count: i32) -> i32 ---
TextExtents :: proc(
font_struct: ^XFontStruct,
string: [^]u8,
nchars: i32,
direction: ^FontDirection,
ascent: ^i32,
descent: ^i32,
ret: ^XCharStruct,
) ---
TextExtents16 :: proc(
font_struct: ^XFontStruct,
string: [^]XChar2b,
nchars: i32,
direction: ^FontDirection,
ascent: ^i32,
descent: ^i32,
ret: ^XCharStruct,
) ---
QueryTextExtents :: proc(
display: ^Display,
font_id: XID,
string: [^]u8,
nchars: i32,
direction: ^FontDirection,
ascent: ^i32,
descent: ^i32,
ret: ^XCharStruct,
) ---
QueryTextExtents16 :: proc(
display: ^Display,
font_id: XID,
string: [^]XChar2b,
nchars: i32,
direction: ^FontDirection,
ascent: ^i32,
descent: ^i32,
ret: ^XCharStruct,
) ---
// Drawing complex text
DrawText :: proc(
display: ^Display,
drawable: Drawable,
gc: GC,
x: i32,
y: i32,
items: XTextItem,
nitems: i32,
) ---
DrawText16 :: proc(
display: ^Display,
drawable: Drawable,
gc: GC,
x: i32,
y: i32,
items: XTextItem16,
nitems: i32,
) ---
// Drawing text characters
DrawString :: proc(
display: ^Display,
drawable: Drawable,
gc: GC,
x: i32,
y: i32,
string: [^]u8,
length: i32,
) ---
DrawString16 :: proc(
display: ^Display,
drawable: Drawable,
gc: GC,
x: i32,
y: i32,
string: [^]XChar2b,
length: i32,
) ---
DrawImageString :: proc(
display: ^Display,
drawable: Drawable,
gc: GC,
x: i32,
y: i32,
string: [^]u8,
length: i32,
) ---
DrawImageString16 :: proc(
display: ^Display,
drawable: Drawable,
gc: GC,
x: i32,
y: i32,
string: [^]XChar2b,
length: i32,
) ---
// Transferring images between client and server
InitImage :: proc(image: ^XImage) -> Status ---
PutImage :: 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,
) ---
GetImage :: proc(
display: ^Display,
drawable: Drawable,
x: i32,
y: i32,
width: u32,
height: u32,
mask: uint,
format: ImageFormat,
) -> ^XImage ---
GetSubImage :: 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
ReparentWindow :: proc(
display: ^Display,
window: Window,
parent: Window,
x: i32,
y: i32,
) ---
ChangeSaveSet :: proc(
display: ^Display,
window: Window,
mode: SaveSetChangeMode,
) ---
AddToSaveSet :: proc(
display: ^Display,
window: Window,
) ---
RemoveFromSaveSet :: proc(
display: ^Display,
window: Window,
) ---
// Managing installed colormaps
InstallColormap :: proc(display: ^Display, colormap: Colormap) ---
UninstallColormap :: proc(display: ^Display, colormap: Colormap) ---
ListInstalledColormaps :: proc(display: ^Display, window: Window, n: ^i32) -> [^]Colormap ---
// Setting and retrieving font search paths
SetFontPath :: proc(display: ^Display, dirs: [^]cstring, ndirs: i32) ---
GetFontPath :: proc(display: ^Display, npaths: ^i32) -> [^]cstring ---
FreeFontPath :: proc(list: [^]cstring) ---
// Grabbing the server
GrabServer :: proc(display: ^Display) ---
UngrabServer :: proc(display: ^Display) ---
// Killing clients
KillClient :: proc(display: ^Display, resource: XID) ---
// Controlling the screen saver
SetScreenSaver :: proc(
display: ^Display,
timeout: i32,
interval: i32,
blanking: ScreenSaverBlanking,
exposures: ScreenSavingExposures,
) ---
ForceScreenSaver :: proc(display: ^Display, mode: ScreenSaverForceMode) ---
ActivateScreenSaver :: proc(display: ^Display) ---
ResetScreenSaver :: proc(display: ^Display) ---
GetScreenSaver :: proc(
display: ^Display,
timeout: ^i32,
interval: ^i32,
blanking: ^ScreenSaverBlanking,
exposures: ^ScreenSavingExposures,
) ---
// Controlling host address
AddHost :: proc(display: ^Display, addr: ^XHostAddress) ---
AddHosts :: proc(display: ^Display, hosts: [^]XHostAddress, nhosts: i32) ---
ListHosts :: proc(display: ^Display, nhosts: ^i32, state: [^]b32) -> [^]XHostAddress ---
RemoveHost :: proc(display: ^Display, host: XHostAddress) ---
RemoveHosts :: proc(display: ^Display, hosts: [^]XHostAddress, nhosts: i32) ---
// Access control list
SetAccessControl :: proc(display: ^Display, mode: AccessControlMode) ---
EnableAccessControl :: proc(display: ^Display) ---
DisableAccessControl :: proc(display: ^Display) ---
// Events
SelectInput :: proc(display: ^Display, window: Window, mask: EventMask) ---
Flush :: proc(display: ^Display) -> i32 ---
Sync :: proc(display: ^Display, discard: bool) -> i32 ---
EventsQueued :: proc(display: ^Display, mode: EventQueueMode) -> i32 ---
Pending :: proc(display: ^Display) -> i32 ---
NextEvent :: proc(display: ^Display, event: ^XEvent) ---
PeekEvent :: proc(display: ^Display, event: ^XEvent) ---
FilterEvent :: proc(event: ^XEvent, window: Window) -> b32 ---
GetEventData :: proc(display: ^Display, cookie: ^XGenericEventCookie) -> b32 ---
FreeEventData :: proc(display: ^Display, cookie: ^XGenericEventCookie) ---
// Selecting events using a predicate procedure
IfEvent :: proc(
display: ^Display,
event: ^XEvent,
predicate: #type proc "c" (display: ^Display, event: ^XEvent, ctx: rawptr) -> b32,
ctx: rawptr,
) ---
CheckIfEvent :: proc(
display: ^Display,
event: ^XEvent,
predicate: #type proc "c" (display: ^Display, event: ^XEvent, ctx: rawptr) -> b32,
arg: rawptr,
) -> b32 ---
PeekIfEvent :: 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
WindowEvent :: proc(
display: ^Display,
window: Window,
mask: EventMask,
event: ^XEvent,
) ---
CheckWindowEvent :: proc(
display: ^Display,
window: Window,
mask: EventMask,
event: ^XEvent,
) -> b32 ---
MaskEvent :: proc(
display: ^Display,
mask: EventMask,
event: ^XEvent,
) ---
CheckMaskEvent :: proc(
display: ^Display,
mask: EventMask,
event: ^XEvent,
) -> b32 ---
CheckTypedEvent :: proc(
display: ^Display,
type: EventType,
event: ^XEvent,
) -> b32 ---
CheckTypedWindowEvent :: proc(
display: ^Display,
window: Window,
type: EventType,
event: ^XEvent,
) -> b32 ---
// Putting events back
PutBackEvent :: proc(
display: ^Display,
event: ^XEvent,
) ---
// Sending events to other applications
SendEvent :: proc(
display: ^Display,
window: Window,
propagate: b32,
mask: EventMask,
event: ^XEvent,
) -> Status ---
// Getting the history of pointer motion
DisplayMotionBufferSize :: proc(display: ^Display) -> uint ---
GetMotionEvents :: proc(
display: ^Display,
window: Window,
start: Time,
stop: Time,
nevents: ^i32,
) -> [^]XTimeCoord ---
// Enabling or disabling synchronization
SetAfterFunction :: proc(
display: ^Display,
procedure: #type proc "c" (display: ^Display) -> i32,
) -> proc "c" (display: ^Display) -> i32 ---
Synchronize :: proc(
display: ^Display,
onoff: b32,
) -> proc "c" (display: ^Display) -> i32 ---
// Error handling
SetErrorHandler :: proc(
handler: #type proc "c" (display: ^Display, event: ^XErrorEvent) -> i32,
) -> proc "c" (display: ^Display, event: ^XErrorEvent) -> i32 ---
GetErrorText :: proc(
display: ^Display,
code: i32,
buffer: [^]u8,
size: i32,
) ---
GetErrorDatabaseText :: proc(
display: ^Display,
name: cstring,
message: cstring,
default_string: cstring,
buffer: [^]u8,
size: i32,
) ---
DisplayName :: proc(string: cstring) -> cstring ---
SetIOErrorHandler :: proc(
handler: #type proc "c" (display: ^Display) -> i32,
) -> proc "c" (display: ^Display) -> i32 ---
// Pointer grabbing
GrabPointer :: 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 ---
UngrabPointer :: proc(
display: ^Display,
time: Time,
) -> i32 ---
ChangeActivePointerGrab :: proc(
display: ^Display,
event_mask: EventMask,
cursor: Cursor,
time: Time,
) ---
GrabButton :: 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,
) ---
UngrabButton :: proc(
display: ^Display,
button: u32,
modifiers: InputMask,
grab_window: Window,
) ---
GrabKeyboard :: proc(
display: ^Display,
grab_window: Window,
owner_events: b32,
pointer_mode: GrabMode,
keyboard_mode: GrabMode,
time: Time,
) -> i32 ---
UngrabKeyboard :: proc(
display: ^Display,
time: Time,
) ---
GrabKey :: proc(
display: ^Display,
keycode: i32,
modifiers: InputMask,
grab_window: Window,
owner_events: b32,
pointer_mode: GrabMode,
keyboard_mode: GrabMode,
) ---
UngrabKey :: proc(
display: ^Display,
keycode: i32,
modifiers: InputMask,
grab_window: Window,
) ---
// Resuming event processing
AllowEvents :: proc(display: ^Display, evend_mode: AllowEventsMode, time: Time) ---
// Moving the pointer
WarpPointer :: 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
SetInputFocus :: proc(
display: ^Display,
focus: Window,
revert_to: FocusRevert,
time: Time,
) ---
GetInputFocus :: proc(
display: ^Display,
focus: ^Window,
revert_to: ^FocusRevert,
) ---
// Manipulating the keyboard and pointer settings
ChangeKeyboardControl :: proc(
display: ^Display,
mask: KeyboardControlMask,
values: ^XKeyboardControl,
) ---
GetKeyboardControl :: proc(
display: ^Display,
values: ^XKeyboardState,
) ---
AutoRepeatOn :: proc(display: ^Display) ---
AutoRepeatOff :: proc(display: ^Display) ---
Bell :: proc(display: ^Display, percent: i32) ---
QueryKeymap :: proc(display: ^Display, keys: [^]u32) ---
SetPointerMapping :: proc(display: ^Display, map_should_not_be_a_keyword: [^]u8, nmap: i32) -> i32 ---
GetPointerMapping :: proc(display: ^Display, map_should_not_be_a_keyword: [^]u8, nmap: i32) -> i32 ---
ChangePointerControl :: proc(
display: ^Display,
do_accel: b32,
do_threshold: b32,
accel_numerator: i32,
accel_denominator: i32,
threshold: i32,
) ---
GetPointerControl :: proc(
display: ^Display,
accel_numerator: ^i32,
accel_denominator: ^i32,
threshold: ^i32,
) ---
// Manipulating the keyboard encoding
DisplayKeycodes :: proc(
display: ^Display,
min_keycodes: ^i32,
max_keycodes: ^i32,
) ---
GetKeyboardMapping :: proc(
display: ^Display,
first: KeyCode,
count: i32,
keysyms_per: ^i32,
) -> ^KeySym ---
ChangeKeyboardMapping :: proc(
display: ^Display,
first: KeyCode,
keysyms_per: i32,
keysyms: [^]KeySym,
num_codes: i32,
) ---
NewModifiermap :: proc(max_keys_per_mode: i32) -> ^XModifierKeymap ---
InsertModifiermapEntry :: proc(
modmap: ^XModifierKeymap,
keycode_entry: KeyCode,
modifier: i32,
) -> ^XModifierKeymap ---
DeleteModifiermapEntry :: proc(
modmap: ^XModifierKeymap,
keycode_entry: KeyCode,
modifier: i32,
) -> ^XModifierKeymap ---
FreeModifiermap :: proc(modmap: ^XModifierKeymap) ---
SetModifierMapping :: proc(display: ^Display, modmap: ^XModifierKeymap) -> i32 ---
GetModifierMapping :: proc(display: ^Display) -> ^XModifierKeymap ---
// Manipulating top-level windows
IconifyWindow :: proc(
dipslay: ^Display,
window: Window,
screen_no: i32,
) -> Status ---
WithdrawWindow :: proc(
dipslay: ^Display,
window: Window,
screen_no: i32,
) -> Status ---
ReconfigureWMWindow :: proc(
dipslay: ^Display,
window: Window,
screen_no: i32,
mask: WindowChangesMask,
changes: ^XWindowChanges,
) -> Status ---
// Getting and setting the WM_NAME property
SetWMName :: proc(
display: ^Display,
window: Window,
prop: ^XTextProperty,
) ---
GetWMName :: proc(
display: ^Display,
window: Window,
prop: ^XTextProperty,
) -> Status ---
StoreName :: proc(
display: ^Display,
window: Window,
name: cstring,
) ---
FetchName :: proc(
display: ^Display,
window: Window,
name: ^cstring,
) -> Status ---
SetWMIconName :: proc(
display: ^Display,
window: Window,
prop: ^XTextProperty,
) ---
GetWMIconName :: proc(
display: ^Display,
window: Window,
prop: ^XTextProperty,
) -> Status ---
SetIconName :: proc(
display: ^Display,
window: Window,
name: cstring,
) ---
GetIconName :: proc(
display: ^Display,
window: Window,
prop: ^cstring,
) -> Status ---
// Setting and reading WM_HINTS property
AllocWMHints :: proc() -> ^XWMHints ---
SetWMHints :: proc(
display: ^Display,
window: Window,
hints: ^XWMHints,
) ---
GetWMHints :: proc(
display: ^Display,
window: Window,
) -> ^XWMHints ---
// Setting and reading MW_NORMAL_HINTS property
AllocSizeHints :: proc() -> ^XSizeHints ---
SetWMNormalHints :: proc(
display: ^Display,
window: Window,
hints: ^XSizeHints,
) ---
GetWMNormalHints :: proc(
display: ^Display,
window: Window,
hints: ^XSizeHints,
flags: ^SizeHints,
) -> Status ---
SetWMSizeHints :: proc(
display: ^Display,
window: Window,
hints: ^XSizeHints,
prop: Atom,
) ---
GetWMSizeHints :: proc(
display: ^Display,
window: Window,
hints: ^XSizeHints,
masks: ^SizeHints,
prop: Atom,
) -> Status ---
// Setting and reading the WM_CLASS property
AllocClassHint :: proc() -> ^XClassHint ---
SetClassHint :: proc(
display: ^Display,
window: Window,
hint: ^XClassHint,
) ---
GetClassHint :: proc(
display: ^Display,
window: Window,
hint: ^XClassHint,
) -> Status ---
// Setting and reading WM_TRANSIENT_FOR property
SetTransientForHint :: proc(
display: ^Display,
window: Window,
prop_window: Window,
) ---
GetTransientForHint :: proc(
display: ^Display,
window: Window,
prop_window: ^Window,
) -> Status ---
// Setting and reading the WM_PROTOCOLS property
SetWMProtocols :: proc(
display: ^Display,
window: Window,
protocols: [^]Atom,
count: i32,
) -> Status ---
GetWMProtocols :: proc(
display: ^Display,
window: Window,
protocols: ^[^]Atom,
count: ^i32,
) -> Status ---
// Setting and reading the WM_COLORMAP_WINDOWS property
SetWMColormapWindows :: proc(
display: ^Display,
window: Window,
colormap_windows: [^]Window,
count: i32,
) -> Status ---
GetWMColormapWindows :: proc(
display: ^Display,
window: Window,
colormap_windows: ^[^]Window,
count: ^i32,
) -> Status ---
// Setting and reading the WM_ICON_SIZE_PROPERTY
AllocIconSize :: proc() -> ^XIconSize ---
SetIconSizes :: proc(
display: ^Display,
window: Window,
size_list: [^]XIconSize,
count: i32,
) ---
GetIconSizes :: proc(
display: ^Display,
window: Window,
size_list: ^[^]XIconSize,
count: ^i32,
) -> Status ---
// Using window manager convenience functions
mbSetWMProperties :: proc(
display: ^Display,
window: Window,
window_name: cstring,
icon_name: cstring,
argv: [^]cstring,
argc: i32,
normal_hints: ^XSizeHints,
wm_hints: ^XWMHints,
class_hints: ^XClassHint,
) ---
SetWMProperties :: 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
SetCommand :: proc(
display: ^Display,
window: Window,
argv: [^]cstring,
argc: i32,
) ---
GetCommand :: proc(
display: ^Display,
window: Window,
argv: ^[^]cstring,
argc: ^i32,
) -> Status ---
SetWMClientMachine :: proc(
display: ^Display,
window: Window,
prop: ^XTextProperty,
) ---
GetWMClientMachine :: proc(
display: ^Display,
window: Window,
prop: ^XTextProperty,
) -> Status ---
SetRGBColormaps :: proc(
display: ^Display,
window: Window,
colormap: ^XStandardColormap,
prop: Atom,
) ---
GetRGBColormaps :: proc(
display: ^Display,
window: Window,
colormap: ^[^]XStandardColormap,
count: ^i32,
prop: Atom,
) -> Status ---
// Keyboard utility functions
LookupKeysym :: proc(
event: ^XKeyEvent,
index: i32,
) -> KeySym ---
KeycodeToKeysym :: proc(
display: ^Display,
keycode: KeyCode,
index: i32,
) -> KeySym ---
KeysymToKeycode :: proc(
display: ^Display,
keysym: KeySym,
) -> KeyCode ---
RefreshKeyboardMapping :: proc(event_map: ^XMappingEvent) ---
ConvertCase :: proc(
keysym: KeySym,
lower: ^KeySym,
upper: ^KeySym,
) ---
StringToKeysym :: proc(str: cstring) -> KeySym ---
KeysymToString :: proc(keysym: KeySym) -> cstring ---
LookupString :: proc(
event: ^XKeyEvent,
buffer: [^]u8,
count: i32,
keysym: ^KeySym,
status: ^XComposeStatus,
) -> i32 ---
RebindKeysym :: proc(
display: ^Display,
keysym: KeySym,
list: [^]KeySym,
mod_count: i32,
string: [^]u8,
num_bytes: i32,
) ---
// Allocating permanent storage
Permalloc :: proc(size: u32) -> rawptr ---
// Parsing the window geometry
ParseGeometry :: proc(
parsestring: cstring,
x_ret: ^i32,
y_ret: ^i32,
width: ^u32,
height: ^u32,
) -> i32 ---
WMGeometry :: 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
CreateRegion :: proc() -> Region ---
PolygonRegion :: proc(
points: [^]XPoint,
n: i32,
fill: FillRule,
) -> Region ---
SetRegion :: proc(
display: ^Display,
gc: GC,
region: Region,
) ---
DestroyRegion :: proc(r: Region) ---
// Moving or shrinking regions
OffsetRegion :: proc(region: Region, dx, dy: i32) ---
ShrinkRegion :: proc(region: Region, dx, dy: i32) ---
// Computing with regions
ClipBox :: proc(region: Region, rect: ^XRectangle) ---
IntersectRegion :: proc(sra, srb, ret: Region) ---
UnionRegion :: proc(sra, srb, ret: Region) ---
UnionRectWithRegion :: proc(rect: ^XRectangle, src, dst: Region) ---
SubtractRegion :: proc(sra, srb, ret: Region) ---
XorRegion :: proc(sra, srb, ret: Region) ---
EmptyRegion :: proc(reg: Region) -> b32 ---
EqualRegion :: proc(a,b: Region) -> b32 ---
PointInRegion :: proc(reg: Region, x,y: i32) -> b32 ---
RectInRegion :: proc(reg: Region, x,y: i32, w,h: u32) -> b32 ---
// Using cut buffers
StoreBytes :: proc(display: ^Display, bytes: [^]u8, nbytes: i32) ---
StoreBuffer :: proc(display: ^Display, bytes: [^]u8, nbytes: i32, buffer: i32) ---
FetchBytes :: proc(display: ^Display, nbytes: ^i32) -> [^]u8 ---
FetchBuffer :: proc(display: ^Display, nbytes: ^i32, buffer: i32) -> [^]u8 ---
// Determining the appropriate visual types
GetVisualInfo :: proc(
display: ^Display,
mask: VisualInfoMask,
info: ^XVisualInfo,
nret: ^i32,
) -> [^]XVisualInfo ---
MatchVisualInfo :: proc(
display: ^Display,
screen_no: i32,
depth: i32,
class: i32,
ret: ^XVisualInfo,
) -> Status ---
// Manipulating images
CreateImage :: proc(
display: ^Display,
visual: ^Visual,
depth: u32,
format: ImageFormat,
offset: i32,
data: rawptr,
width: u32,
height: u32,
pad: i32,
stride: i32,
) -> ^XImage ---
GetPixel :: proc(
image: ^XImage,
x: i32,
y: i32,
) -> uint ---
PutPixel :: proc(
image: ^XImage,
x: i32,
y: i32,
pixel: uint,
) ---
SubImage :: proc(
image: ^XImage,
x: i32,
y: i32,
w: u32,
h: u32,
) -> ^XImage ---
AddPixel :: proc(
image: ^XImage,
value: int,
) ---
StoreNamedColor :: proc(
display: ^Display,
colormap: Colormap,
name: cstring,
pixel: uint,
flags: ColorFlags,
) ---
QueryColor :: proc(
display: ^Display,
colormap: Colormap,
color: ^XColor,
) ---
QueryColors :: proc(
display: ^Display,
colormap: Colormap,
colors: [^]XColor,
ncolors: i32,
) ---
QueryExtension :: proc(
display: ^Display,
name: cstring,
major_opcode_return: ^i32,
first_event_return: ^i32,
first_error_return: ^i32,
) -> b32 ---
DestroyImage :: proc(image: ^XImage) ---
ResourceManagerString :: proc(display: ^Display) -> cstring ---
utf8SetWMProperties :: proc(
display: ^Display,
window: Window,
window_name: cstring,
icon_name: cstring,
argv: ^cstring,
argc: i32,
normal_hints: ^XSizeHints,
wm_hints: ^XWMHints,
class_hints: ^XClassHint,
) ---
OpenIM :: proc(
display: ^Display,
rdb: XrmHashBucket,
res_name: cstring,
res_class: cstring,
) -> XIM ---
SetLocaleModifiers :: proc(modifiers: cstring) -> cstring ---
CreateIC :: proc(
im: XIM,
#c_vararg args: ..any,
) -> XIC ---
SetICFocus :: proc(
ic: XIC,
) ---
UnsetICFocus :: proc(
ic: XIC,
) ---
SetICValues :: proc(
ic: XIC,
#c_vararg args: ..any,
) -> cstring ---
VaCreateNestedList :: proc(
unused: i32,
#c_vararg args: ..any,
) -> XVaNestedList ---
}
@(default_calling_convention="c")
foreign xlib {
XcmsLookupColor :: proc(
display: ^Display,
colormap: Colormap,
name: cstring,
exact: XcmsColor,
screen: XcmsColor,
format: XcmsColorFormat,
) -> Status ---
XcmsStoreColor :: proc(
display: ^Display,
colormap: Colormap,
color: ^XcmsColor,
) -> Status ---
XcmsStoreColors :: proc(
display: ^Display,
colormap: Colormap,
colors: [^]XcmsColor,
ncolors: XcmsColor,
cflags: [^]b32,
) -> Status ---
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 ---
XcmsAllocNamedColor :: proc(
display: ^Display,
colormap: Colormap,
name: cstring,
screen: ^XcmsColor,
exact: ^XcmsColor,
format: XcmsColorFormat,
) -> Status ---
XcmsAllocColor :: proc(
display: ^Display,
colormap: Colormap,
color: ^XcmsColor,
format: XcmsColorFormat,
) -> Status ---
XrmInitialize :: proc() ---
XrmGetStringDatabase :: proc(data: cstring) -> XrmDatabase ---
XrmGetResource :: proc(db: XrmDatabase, name: cstring, class: cstring, type_return: ^cstring, val_return: ^XrmValue) -> b32 ---
/* ---- X11/XKBlib.h ---------------------------------------------------------*/
XkbQueryExtension :: proc(
display: ^Display,
opcode_return: ^i32,
event_base_return: ^i32,
error_base_return: ^i32,
major_return: ^i32,
minor_return: ^i32,
) -> b32 ---
XkbUseExtension :: proc(
display: ^Display,
major_return: ^i32,
minor_return: ^i32,
) -> b32 ---
XkbGetMap :: proc(
display: ^Display,
which: XkbInfoMask,
device_spec: i32,
) -> XkbDescPtr ---
XkbGetUpdatedMap :: proc(
display: ^Display,
which: XkbInfoMask,
desc: XkbDescPtr,
) -> b32 ---
XkbSelectEvents :: proc(
display: ^Display,
deviceID: u32,
bits_to_change: XkbEventMask,
values: XkbEventMask,
) -> b32 ---
XkbSetDetectableAutoRepeat :: proc(
display: ^Display,
detectable: b32,
supported: ^b32,
) -> b32 ---
XkbGetState :: proc (
display: ^Display,
device_spec: u32,
return_state: XkbStatePtr,
) -> Status ---
XkbGetKeySyms :: proc(
display: ^Display,
first: u32,
num: u32,
xkb: XkbDescPtr,
) -> Status ---
Xutf8LookupString :: proc(
ic: XIC,
event: ^XKeyPressedEvent,
buffer_return: cstring,
bytes_buffer: i32,
keysym_return: ^KeySym,
status_return: ^LookupStringStatus,
) -> i32 ---
}