mirror of
https://github.com/odin-lang/Odin.git
synced 2026-06-14 14:23:43 +00:00
2078 lines
53 KiB
Odin
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 ---
|
|
}
|