/*
* DPSCAPproto.h -- CAP requests constants and alignment values,
* analgous to Xproto.h
*
* (c) Copyright 1991-1994 Adobe Systems Incorporated.
* All rights reserved.
*
* Permission to use, copy, modify, distribute, and sublicense this software
* and its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright notices appear in all copies and that
* both those copyright notices and this permission notice appear in
* supporting documentation and that the name of Adobe Systems Incorporated
* not be used in advertising or publicity pertaining to distribution of the
* software without specific, written prior permission. No trademark license
* to use the Adobe trademarks is hereby granted. If the Adobe trademark
* "Display PostScript"(tm) is used to describe this software, its
* functionality or for any other purpose, such use shall be limited to a
* statement that this software works in conjunction with the Display
* PostScript system. Proper trademark attribution to reflect Adobe's
* ownership of the trademark shall be given whenever any such reference to
* the Display PostScript system is made.
*
* ADOBE MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THE SOFTWARE FOR
* ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
* ADOBE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
* IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NON- INFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL ADOBE BE LIABLE
* TO YOU OR ANY OTHER PARTY FOR ANY SPECIAL, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE, STRICT LIABILITY OR ANY OTHER ACTION ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ADOBE WILL NOT
* PROVIDE ANY TRAINING OR OTHER SUPPORT FOR THE SOFTWARE.
*
* Adobe, PostScript, and Display PostScript are trademarks of Adobe Systems
* Incorporated which may be registered in certain jurisdictions
*
* Author: Adobe Systems Incorporated
*/
#ifndef _DPSCAPproto_h
#define _DPSCAPproto_h
/* === DEFINITIONS === */
#define DPSCAPPROTOVERSION 3
#define DPSCAPPROTOVERSION_2 2
#define CSDPSPORT 6016 /* add agent instance number */
#define DPS_NX_SERV_NAME "dpsnx" /* name to look up in /etc/services */
/* Request Opcodes */
#define DPSCAPOPCODEBASE 126
#define DPSXOPCODEBASE 125
#define X_CAPFlushAgent 1
#define X_CAPNotify 2
#define X_CAPSetArg 3
/* === REQUESTS === */
typedef struct _CAPConnSetup {
BYTE byteorder; /* #x42 MSB, #x6C LSB */
BYTE dpscapVersion; /* proto version of connecting client */
CARD16 flags B16; /* functional hint flags */
CARD32 libraryversion B32; /* as for XPSInit */
CARD16 authProtoNameLength B16; /* in bytes */
CARD16 authProtoDataLength B16; /* in bytes */
CARD16 displayStringLength B16; /* in bytes */
CARD16 nodeStringLength B16; /* in bytes */
CARD16 transportStringLength B16; /* in bytes */
CARD16 display B16; /* Display number */
CARD16 screen B16; /* Screen number */
CARD16 reserved B16;
CARD32 clientWindow B32; /* window for ClientMessage */
} xCAPConnSetupReq;
#define sz_xCAPConnSetupReq 28
typedef struct {
BYTE success;
BYTE reasonLength;
CARD16 additionalLength B16;
} xCAPConnReplyPrefix;
#define sz_xCAPConnReplyPrefix 4
typedef struct _CAPConnFailed {
BYTE success; /* failed = 0, success = 1 */
BYTE reasonLength; /* in bytes if failed, ignore if success */
CARD16 additionalLength B16;/* quadbytes ADDITIONAL length */
CARD32 serverVersion B32; /* as for XPSInit */
CARD8 dpscapVersion; /* proto version of agent */
CARD8 pad;
CARD16 reserved B16;
} xCAPConnFailed;
#define sz_xCAPConnFailed 12
typedef struct _CAPConnSuccess {
BYTE success; /* failed = 0, success = 1 */
BYTE reasonLength; /* in bytes if failed, ignore if success */
CARD16 additionalLength B16;/* quadbytes ADDITIONAL length */
CARD32 serverVersion B32; /* as for XPSInit */
CARD8 dpscapVersion; /* proto version of agent */
CARD8 reserved;
CARD16 flagsUsed B16; /* mask of functional hint flags used */
CARD32 preferredNumberFormat B32; /* as for XPSInit */
CARD32 floatingNameLength B32; /* as for XPSInit */
CARD32 agentWindow B32; /* client sends messages to this window */
} xCAPConnSuccess;
#define sz_xCAPConnSuccess 24
typedef struct _CAPFlushAgent {
CARD8 reqType; /* always DPSCAPOPCODEBASE */
CARD8 type; /* always X_CAPFlushAgent */
CARD16 length B16; /* quadbyte length of request */
CARD32 cxid B32; /* context XID */
} xCAPFlushAgentReq;
#define sz_xCAPFlushAgentReq 8
typedef struct _CAPNotify {
CARD8 reqType; /* always DPSCAPOPCODEBASE */
CARD8 type; /* always X_CAPNotify */
CARD16 length B16; /* quadbyte length of request */
CARD32 cxid B32; /* context XID */
CARD32 notification B32; /* notify code */
CARD32 data B32; /* data word */
CARD32 extra B32; /* extra word */
} xCAPNotifyReq;
#define sz_xCAPNotifyReq 20
typedef struct _CAPSetArg {
CARD8 reqType; /* always DPSCAPOPCODEBASE */
CARD8 type; /* always X_CAPNotify */
CARD16 length B16; /* quadbyte length of request */
CARD32 arg B32; /* argument type */
CARD32 val B32; /* value */
} xCAPSetArgReq;
#define sz_xCAPSetArgReq 12
/* === ERRORS === */
typedef struct _DPSCAPError {
BYTE type; /* always 0 */
BYTE errorCode; /* always 255 */
CARD16 sequenceNumber B16; /* the nth request from this client */
CARD8 subLength; /* how much of 21 bytes are used */
CARD8 unused;
CARD16 reserved B16;
CARD16 minorOpcode B16;
CARD8 majorOpcode; /* always 0 */
BYTE subData1;
CARD32 subData2 B32;
CARD32 subData3 B32;
CARD32 subData4 B32;
CARD32 subData5 B32;
CARD32 subData6 B32;
CARD32 subData7 B32;
} xDPSCAPError;
/* === EVENTS === */
/* Events sent from agent to client via XSendEvent */
#define DPSCAP_OUTPUT_OVERHEAD 4
#define DPSCAP_BYTESPEROUTPUTEVENT (20 - DPSCAP_OUTPUT_OVERHEAD)
#define DPSCAP_DATA_LEN (DPSCAP_BYTESPEROUTPUTEVENT-1)
typedef struct {
CARD32 cxid;
CARD8 data[DPSCAP_BYTESPEROUTPUTEVENT];
} DPSCAPOutputEvent;
typedef struct {
BYTE status;
BYTE unused;
CARD16 sequenceNumber;
CARD32 cxid;
} DPSCAPStatusEvent;
#endif /* _DPSCAPproto_h */