#ifndef _XDPSlib_h
#define _XDPSlib_h
#undef _XEVENT_
#include <X11/Xlib.h>
#include <DPS/XDPS.h>
#include <X11/Xutil.h>
#define DefaultStdCMap ((XStandardColormap *) -1)
#define XDPSL_ALL_EVENTS \
(PSRUNNINGMASK|PSNEEDSINPUTMASK|PSZOMBIEMASK|PSFROZENMASK)
typedef enum {
csdps_not,
csdps_noop,
csdps_output,
csdps_output_with_len,
csdps_status,
csdps_ready
} CSDPSFakeEventTypes;
typedef enum {
not_pserror,
pserror_badcontext,
pserror_badspace,
pserror_abort
} XDPSLPSErrors;
#define DPSCAP_SYNCMASK_NONE 0x00
#define DPSCAP_SYNCMASK_SYNC (1<<0)
#define DPSCAP_SYNCMASK_RECONCILE (1<<1)
#define DPSCAP_SYNCMASK_BUFFER (1<<2)
#define DPSCAP_SYNCMASK_DFLT DPSCAP_SYNCMASK_RECONCILE
typedef void (*XDPSLEventHandler)(XEvent *event);
#if defined(__cplusplus) || defined(c_plusplus)
extern "C" {
#endif
extern int XDPSLInit(Display *dpy,
int *numberType_return,
char **floatingName_return);
extern ContextXID XDPSLCreateContext(Display *dpy,
SpaceXID sxid,
Drawable drawable,
GC gc,
int x, int y,
unsigned int eventMask,
XStandardColormap *grayRamp,
XStandardColormap *colorCube,
unsigned int actual,
ContextPSID *cpsid_return,
Bool secure);
extern ContextXID XDPSLCreateContextAndSpace(Display *dpy,
Drawable drawable,
GC gc,
int x, int y,
unsigned int eventMask,
XStandardColormap *grayRamp,
XStandardColormap *colorCube,
unsigned int actual,
ContextPSID *cpsid_return,
SpaceXID *sxid_return,
Bool secure);
extern SpaceXID XDPSLCreateSpace(Display *dpy);
extern void XDPSLGiveInput(Display *dpy, ContextXID cxid,
char *data, int length);
extern int XDPSLGetStatus(Display *dpy, ContextXID cxid);
extern void XDPSLDestroySpace(Display *dpy, SpaceXID sxid);
extern void XDPSLReset(Display *dpy, ContextXID cxid);
extern void XDPSLNotifyContext(Display *dpy, ContextXID cxid, int type);
extern ContextXID XDPSLCreateContextFromID(Display *dpy,
ContextPSID cpsid,
SpaceXID *sxid_return);
extern Status XDPSLIDFromContext(Display *dpy,
ContextPSID cpsid,
ContextXID *cxid_return,
SpaceXID *sxid_return);
extern ContextPSID XDPSLContextFromXID(Display *dpy, ContextXID cxid);
extern void XDPSLSetStatusMask(Display *dpy, ContextXID cxid,
unsigned int enableMask,
unsigned int disableMask,
unsigned int nextMask);
extern XExtCodes *XDPSLGetCodes(Display *dpy);
extern void XDPSLSetTextEventHandler(Display *dpy,
XDPSLEventHandler proc);
extern void XDPSLCallOutputEventHandler(Display *dpy, XEvent *event);
extern void XDPSLSetStatusEventHandler(Display *dpy,
XDPSLEventHandler proc);
extern void XDPSLCallStatusEventHandler(Display *dpy, XEvent *event);
extern void XDPSLInitDisplayFlags(Display *dpy);
extern Bool XDPSLGetPassEventsFlag(Display *dpy);
extern void XDPSLSetPassEventsFlag(Display *dpy, Bool flag);
extern Bool XDPSLGetWrapWaitingFlag(Display *dpy);
extern void XDPSLSetWrapWaitingFlag(Display *dpy, Bool flag);
extern void XDPSLNotifyWhenReady(Display *dpy, ContextXID cxid, int val[4]);
extern XDPSLPSErrors XDPSLTestErrorCode(Display *dpy, int ecode);
extern int XDPSLGetVersion(Display *dpy);
extern void XDPSLSetReadyEventHandler(Display *dpy,
XDPSLEventHandler proc);
extern void XDPSLCallReadyEventHandler(Display *dpy, XEvent *event);
extern char * XDPSLSetAgentName(Display *dpy, char *name, int deflt);
extern void XDPSLSetCodes(Display *dpy, XExtCodes *codes);
extern Display * XDPSLGetShunt(Display *dpy_in);
extern void XDPSLSetShunt(Display *dpy_in, Display *dpy_out);
extern void XDPSLSetVersion(Display *dpy, unsigned ver);
extern void XDPSLSetClientMessageHandler(Display *dpy);
extern CSDPSFakeEventTypes XDPSLGetCSDPSFakeEventType(Display *dpy,
XEvent *event);
extern Bool XDPSLDispatchCSDPSFakeEvent(Display *dpy,
XEvent *event, CSDPSFakeEventTypes t);
extern void XDPSLGetCSDPSStatus(Display *dpy,
XEvent *event,
void **ret_ctxt,
int *ret_status);
extern void XDPSLSetXErrorConvertProc(Display *dpy);
extern void XDPSLCAPNotify(Display *xdpy,
ContextXID cxid,
unsigned int ntype,
unsigned int data,
unsigned int extra);
extern void XDPSLSync(Display *xdpy);
extern void *XDPSLEnumerateEvents(Display *dpy,
XEvent *event,
Bool (*predicate)(Display *pdpy,
XEvent *ev,
char *a),
char *arg,
void *next);
extern void XDPSLSetAfterProc(Display *dpy);
extern int XDPSLGetSyncMask(Display *dpy);
extern void XDPSLSetSyncMask(Display *dpy, int mask);
extern void XDPSLFlush(Display *dpy);
extern void XDPSLSyncGCClip(Display *xdpy, GC gc);
extern void XDPSLGetCSDPSReady(Display *xdpy,
XEvent *event,
void **ret_ctxt,
int *ret_val);
extern void XDPSLReconcileRequests(Display *xdpy, ContextXID cxid);
extern Status XDPSLSetAgentArg(Display *xdpy, int arg, int val);
extern void XDPSLCleanAll(Display *xdpy);
extern void XDPSLUpdateAgentArgs(Display *xdpy);
extern void XDPSLCleanContext(Display *xdpy, ContextXID cxid);
#ifdef VMS
extern void XDPSLSetDisplay(Display *dpy);
#endif
extern void XDPSLFlushGC(Display *dpy, GC gc);
extern void XDPSLSetGCFlushMode(Display *dpy, int value);
extern int XDPSLGetGCFlushMode(Display *dpy);
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif
typedef struct _XDPSLOutputEvent {
int type;
unsigned long serial;
Bool send_event;
Display *display;
ContextXID cxid;
int length;
char data[24];
} XDPSLOutputEvent;
typedef struct _XDPSLStatusEvent {
int type;
unsigned long serial;
Bool send_event;
Display *display;
ContextXID cxid;
int status;
} XDPSLStatusEvent;
typedef struct _XDPSLReadyEvent {
int type;
unsigned long serial;
Bool send_event;
Display *display;
ContextXID cxid;
int val[4];
} XDPSLReadyEvent;
#endif