[Copyright status: this file is in the public domain.] This file describes the types exported by liblx to application code. For the full details, of course, see the source; lx.h in particular includes comments describing these, and in particular includes the possible values for the ones which are just representing one of a set of choices, such as LX_COLORMAPSTATE. Most of these types are for very particular uses - for example, there is LX_GCARCMODE, which is for the arc-mode settings in GCs. These are listed briefly with their uses later. First, though, more central types. The most central type is probably LX_CONN. This is an opaque type; a pointer to it is used as the representation for a connection to the X server. Most liblx calls take an LX_CONN * argument. Such connections are created with lx_open and destroyed with lx_close. Most applications will have exactly one such pointer. The next important type is LX_OP. This is another opaque type; it represents an operation-in-progress. LX_OP pointers are returned by most functions which don't complete immediately (usually because the operation requirse a server round-trip). There are calls to do useful things with these pending operations; see pending-operations.txt for their documentation. Applications which handle events (which is almost all of them) will need to work with LX_EVENT. This is a non-opaque type used to represent an X event, unpacked from its wire format. It is a struct with two fixed fields and a discriminated union; there is one arm of the union for each event type. See events.txt for more on event handling and the related types LX_EVENT_*. LX_DB is another opaque type, representing a resource database (such as is typically kept in the RESDOURCE_MANAGER property on the root window). Applications which use X's resource database facilities (which will be most of them) will want at least one LX_DB *. See resource-db.txt for more, including the related types LX_QUARK, LX_BINDING, LX_BOUNDQUARK, LX_DBVAL, LX_DB_ITER, and LX_DB_ITERSTAT. LX_XID is a type used for X resources (windows, pixmaps, etc). Almost all applications will use a bunch of these - one per window, pixmap, etc. LX_SGC is used to handle shadowed GCs. GCs proper are represented using LX_XIDs, but many applications want a client-side shadow to avoid sending `changes' that don't actually change anything. LX_SGC and related calls provide this; see gc.txt for more. LX_X_ERR and LX_LIB_ERR are part of the error-handling facilities; associated with them are LX_X_ERR_TYPE, LX_LIB_ERR_TYPE, LX_X_ERR_ACTION, and LX_OP_ERR_SETTING. See errors.txt for more. LX_GEOMETRY represents a geometry spec. These are used to make it a bit easier for applications to handle geometry specs (such as 80x24+300+100); see geometry.txt for more. LX_TIME is a timestamp. X timestamps are in milliseconds since an arbitrary start time; they are 32 bits long and thus wrap around after a bit over 49 days. One timestamp value, called CurrentTime in the protocol document, is never generated by the server; it is used to represent `now' in various calls. In the API, it is represented as LX_TIME_CurrentTime. LX_HOSTLIST, LX_STRLIST, and LX_XIDLIST are used to represent lists (of host access list entries, of strings, and of LX_XIDs respectively) by a few calls. The rest of the types are for relatively specialized uses. They are listed here in sorted order, to make it easier to find them. Most of these are currently typedefs for integral types. Most of them also have #defines for possible values; for example, LX_ACCESSCONTROL has LX_ACCESSCONTROL_Disable and LX_ACCESSCONTROL_Enable. See lx.h for the values for each one. LX_ACCESSCONTROL represents an access control state, as used by SetAccessControl and ListHosts. LX_ALLOWMODE represents the mode operation to AllowEvents. LX_ARC represents an arc for requests such as PolyArc. LX_ATOM represents an atom for requests such as GetProperty. LX_BACKINGSTORE represents a backing-store hint setting for a window, or the backing-store support indicator for a screen. LX_BITMAP_BIT_ORDER is for a bitmap-bit-order value, such as is received by the client as part of connection setup (see image.txt). LX_CFG_WINDOW_ATTRIBUTES is a struct type which represents window attributes in the struct API to ConfigureWindow. LX_CHANGEHOSTSMODE is the mode argument in ChangeHosts requests. LX_CHANGESAVESETMODE is the mode argument in ChangeSaveSet requests. LX_CHARINFO is part of the font support. See font-info.txt for more. LX_CIRCULATE is an operation for a CirculateWindow operation. LX_CIRCULATEPLACE is a place value in CirculateNotify and CirculateRequest events. LX_CLOSEDOWNMODE is a connection close-down mode, as used by SetCloseDownMode requests. LX_COLORMAPSTATE is a state value in a ColormapNotify event. LX_COORDMODE is a coord-mode setting in requests such as PolyLine. LX_ENTERLEAVEDETAIL is a detail value in an EnterNotify or LeaveNotify event. LX_ENTERLEAVEMODE is a mode value in an EnterNotify or LeaveNotify event. LX_FOCUSDETAIL is a detail value in a FocusIn or FocusOut event. LX_FOCUSMODE is a mode value in a FocusIn or FocusOut event. LX_FONTINFO is part of the font support. Se font-info.txt for more. LX_FORCESCREENSAVER is a mode value to a ForceScrenSaver request. LX_GCARCMODE is an arc-mode setting in a GC. LX_GCCAPSTYLE is a cap-style setting in a GC. LX_GCFILLRULE is a fill-rule setting in a GC. LX_GCFILLSTYLE is a fill-style setting in a GC. LX_GCFUNCTION is a function setting in a GC. There are some additional promises about this one; see gc.txt for more. LX_GCJOINSTYLE is a join-style setting in a GC. LX_GCLINESTYLE is a line-style setting in a GC. LX_GCSUBWINDOWMODE is a subwindow-mode setting in a GC. LX_GC_ATTRIBUTES collects GC attributes, for calls such as the struct variant of ChangeGC. LX_GET_GEOMETRY represents geometry information returned by a GetGeometry request. LX_GET_WINDOW_ATTRIBUTES represents window attributes returned by a GetWindowAttributes request. LX_GRABMODE is a grab mode to requests such as GrabPointer. LX_GRABSTATUS is a status returned by requests such as GrabPointer. LX_GRAVITY is for bit-gravity and win-gravity values. (This arguably should be split into LX_BITGRAVITY and LX_WINGRAVITY.) Their values are the same, except that LX_GRAVITY_Forget is used only for bit-gravity and LX_GRAVITY_Unmap is used only for win-gravity. LX_HOSTTYPE is a host address type for requests such as ChangeHosts. LX_IMAGEFORMAT is an image format for calls such as PutImage. LX_IMAGE_BYTE_ORDER is for an image-byte-order value, such as is received by the client as part of connection setup (see setup.txt). LX_KBCTLLEDACTION is a LED action to ChangeKeyboardControl requests. LX_KBCTLREPEATACTION is a repeat action to ChangeKeyboardControl requests. LX_KEYBOARDCONTROL is keyboard control settings as returned by a GetKeyboardControl request. LX_KEYCODE is a type for what the protocol document calls KEYCODE and Xlib calls KeyCode: an identifier for a physical key on a keyboard. They are used by keyboard event handling. LX_KEYSYM is a type used for what the protocol document calls KEYSYM and Xlib calls KeySym: a symbol associated with a keyboard key. They are used by keyboard event handling. LX_MAPPINGREQUEST is a request value in a MappingNotify event. LX_MAPSTATE is a window mapping state in LX_GET_WINDOW_ATTRIBUTES. LX_MOTIONDETAIL is a detail value in a MotionNotify event. LX_POINT represents a point for requests such as PolyPoint. LX_POINTERCONTROL is pointer control settings for requests such as ChangePointerControl. LX_PRIMARY represents a primary (red, green, or blue) in an LX_VISINFO. LX_PROPERTYMODE is a mode to ChangeProperty requests. LX_PROPERTYSTATE is a state value in a PropertyNotify event. LX_QUERYPOINTER_STATUS is the response to a QueryPointer request in the version which fills in a struct instead of separate variables. LX_RECTANGLE represents a rectangle for requests such as PolyRectangle. LX_RECTORDER is an ordering value for requests such as SetClipRectangles. LX_RGB is an RGB triple for calls such as the RGB variant of AllocNamedColor. LX_RGBPF is an RGB triple with an associated pixel value and flag bits, for calls such as StoreColors. LX_SCREENSAVER represents screen-saver settings for calls such as SetScreenSaver. LX_SEGMENT is a line segment for requests such as PolySegment. LX_SET_WINDOW_ATTRIBUTES is settable window attributes, for calls such as the struct-using form of CreateWindow. LX_SHAPECLASS is a shape class for requests such as FillPoly. LX_SIZECLASS is a size class for QueryBestSize requests. LX_SSBLANKING is a prefer-blanking setting in LX_SCREENSAVER. LX_SSEXPOSURES is an allow-exposures setting in LX_SCREENSAVER. LX_STACKMODE is a stacking mode in places such as LX_CFG_WINDOW_ATTRIBTUES. LX_TEXTDIRECTION is a text direction hint (left-to-right or right-to-left) in places such as LX_FONTINFOs. LX_TEXTITEM16 is a text item for PolyText16 requests. LX_TEXTITEM8 is a text item for PolyText8 requests. LX_TIMECOORD is a triple, used by GetMotionEvents requests. LX_VISIBILITYSTATE is a state value in a VisibilityNotify event. LX_VISINFO is a description of a Visual, as used by calls such as lx_map_visuals. LX_VISUALCLASS is a Visual class in an LX_VISINFO. LX_WINDOW_CLASS is for window class values, such as are used when creating windows.