2025-08-08 20:00:36 +02:00

448 lines
13 KiB
C

/**************************************************************************/
/* */
/* Copyright (c) 2001, 2011 NoMachine (http://www.nomachine.com) */
/* Copyright (c) 2008-2017 Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> */
/* Copyright (c) 2014-2022 Ulrich Sibiller <uli42@gmx.de> */
/* Copyright (c) 2014-2019 Mihai Moldovan <ionic@ionic.de> */
/* Copyright (c) 2011-2022 Mike Gabriel <mike.gabriel@das-netzwerkteam.de>*/
/* Copyright (c) 2015-2016 Qindel Group (http://www.qindel.com) */
/* */
/* NXCOMP, NX protocol compression and NX extensions to this software */
/* are copyright of the aforementioned persons and companies. */
/* */
/* Redistribution and use of the present software is allowed according */
/* to terms specified in the file LICENSE.nxcomp which comes in the */
/* source distribution. */
/* */
/* All rights reserved. */
/* */
/* NOTE: This software has received contributions from various other */
/* contributors, only the core maintainers and supporters are listed as */
/* copyright holders. Please contact us, if you feel you should be listed */
/* as copyright holder, as well. */
/* */
/**************************************************************************/
#ifndef NXproto_H
#define NXproto_H
#ifdef __cplusplus
extern "C" {
#endif
#include <X11/X.h>
#include <X11/Xmd.h>
#include <X11/Xproto.h>
/*
* Force the size to match the wire protocol.
*/
#define Drawable CARD32
#define GContext CARD32
#define sz_xNXGetControlParametersReq 4
#define sz_xNXGetCleanupParametersReq 4
#define sz_xNXGetImageParametersReq 4
#define sz_xNXGetUnpackParametersReq 8
#define sz_xNXGetShmemParametersReq 16
#define sz_xNXGetFontParametersReq 4
#define sz_xNXSetExposeParametersReq 8
#define sz_xNXSetCacheParametersReq 8
#define sz_xNXStartSplitReq 8
#define sz_xNXEndSplitReq 4
#define sz_xNXCommitSplitReq 12
#define sz_xNXSetUnpackGeometryReq 24
#define sz_xNXSetUnpackColormapReq 16
#define sz_xNXSetUnpackAlphaReq 16
#define sz_xNXPutPackedImageReq 40
#define sz_xNXFreeUnpackReq 4
#define sz_xNXFinishSplitReq 4
#define sz_xNXAbortSplitReq 4
#define sz_xNXFreeSplitReq 4
#define sz_xGetControlParametersReply 32
#define sz_xGetCleanupParametersReply 32
#define sz_xGetImageParametersReply 32
#define sz_xGetUnpackParametersReply 32
#define sz_xGetShmemParametersReply 32
#define LINK_TYPE_LIMIT 5
#define LINK_TYPE_NONE 0
#define LINK_TYPE_MODEM 1
#define LINK_TYPE_ISDN 2
#define LINK_TYPE_ADSL 3
#define LINK_TYPE_WAN 4
#define LINK_TYPE_LAN 5
/*
* NX Replies.
*/
/*
* The following reply has 4 new boolean
* fields in the last protocol version.
*/
typedef struct _NXGetControlParametersReply {
BYTE type; /* Is X_Reply. */
CARD8 linkType;
CARD16 sequenceNumber B16;
CARD32 length B32; /* Is 0. */
CARD8 localMajor;
CARD8 localMinor;
CARD8 localPatch;
CARD8 remoteMajor;
CARD8 remoteMinor;
CARD8 remotePatch;
CARD16 splitTimeout B16;
CARD16 motionTimeout B16;
CARD8 splitMode;
CARD8 pad1;
CARD32 splitSize B32;
CARD8 packMethod;
CARD8 packQuality;
CARD8 dataLevel;
CARD8 streamLevel;
CARD8 deltaLevel;
CARD8 loadCache;
CARD8 saveCache;
CARD8 startupCache;
} xNXGetControlParametersReply;
typedef struct _NXGetCleanupParametersReply {
BYTE type; /* Is X_Reply. */
BYTE pad;
CARD16 sequenceNumber B16;
CARD32 length B32; /* Is 0. */
BOOL cleanGet;
BOOL cleanAlloc;
BOOL cleanFlush;
BOOL cleanSend;
BOOL cleanImages;
BYTE pad1, pad2, pad3;
CARD32 pad4 B32;
CARD32 pad5 B32;
CARD32 pad6 B32;
CARD32 pad7 B32;
} xNXGetCleanupParametersReply;
typedef struct _NXGetImageParametersReply {
BYTE type; /* Is X_Reply. */
BYTE pad;
CARD16 sequenceNumber B16;
CARD32 length B32; /* Is 0. */
BOOL imageSplit;
BOOL imageMask;
BOOL imageFrame;
CARD8 imageMaskMethod;
CARD8 imageSplitMethod;
BYTE pad1, pad2, pad3;
CARD32 pad4 B32;
CARD32 pad5 B32;
CARD32 pad6 B32;
CARD32 pad7 B32;
} xNXGetImageParametersReply;
/*
* Data is made of PACK_METHOD_LIMIT values of
* type BOOL telling which unpack capabilities
* are implemented in proxy.
*/
typedef struct _NXGetUnpackParametersReply {
BYTE type; /* Is X_Reply. */
BYTE pad;
CARD16 sequenceNumber B16;
CARD32 length B32; /* Is PACK_METHOD_LIMIT / 4 from NXpack.h. */
CARD8 entries; /* Is PACK_METHOD_LIMIT. */
BYTE pad1, pad2, pad3;
CARD32 pad4 B32;
CARD32 pad5 B32;
CARD32 pad6 B32;
CARD32 pad7 B32;
CARD32 pad8 B32;
} xNXGetUnpackParametersReply;
typedef struct _NXGetShmemParametersReply {
BYTE type; /* Is X_Reply. */
CARD8 stage; /* As in the corresponding request. */
CARD16 sequenceNumber B16;
CARD32 length B32; /* Is 0. */
BOOL clientEnabled; /* SHM on path agent to proxy. */
BOOL serverEnabled; /* SHM on path proxy to X server. */
BYTE pad1, pad2; /* Previous values can be checked */
CARD32 clientSize B32; /* at end of stage 2. */
CARD32 serverSize B32;
CARD32 pad3 B32;
CARD32 pad4 B32;
CARD32 pad5 B32;
} xNXGetShmemParametersReply;
typedef struct _NXGetFontParametersReply {
BYTE type; /* Is X_Reply. */
BYTE pad1;
CARD16 sequenceNumber B16;
CARD32 length B32; /* Is length of path string + 1 / 4. */
CARD32 pad2 B32;
CARD32 pad3 B32;
CARD32 pad4 B32;
CARD32 pad5 B32;
CARD32 pad6 B32;
CARD32 pad7 B32;
} xNXGetFontParametersReply;
/*
* NX Requests.
*/
typedef struct _NXGetControlParametersReq {
CARD8 reqType;
BYTE pad;
CARD16 length B16;
} xNXGetControlParametersReq;
typedef struct _NXGetCleanupParametersReq {
CARD8 reqType;
BYTE pad;
CARD16 length B16;
} xNXGetCleanupParametersReq;
typedef struct _NXGetImageParametersReq {
CARD8 reqType;
BYTE pad;
CARD16 length B16;
} xNXGetImageParametersReq;
typedef struct _NXGetUnpackParametersReq {
CARD8 reqType;
BYTE pad;
CARD16 length B16;
CARD8 entries;
BYTE pad1, pad2, pad3;
} xNXGetUnpackParametersReq;
typedef struct _NXGetShmemParametersReq {
CARD8 reqType;
CARD8 stage; /* It is between 0 and 2. */
CARD16 length B16;
BOOL enableClient; /* X client side support is */
BOOL enableServer; /* not implemented yet. */
BYTE pad1, pad2;
CARD32 clientSegment; /* XID identifying the shared */
CARD32 serverSegment; /* memory segments. */
} xNXGetShmemParametersReq;
typedef struct _NXGetFontParametersReq {
CARD8 reqType;
CARD8 pad;
CARD16 length B16;
} xNXGetFontParametersReq;
/*
* The available split modes.
*/
#define NXSplitModeDefault 0
#define NXSplitModeAsync 1
#define NXSplitModeSync 2
typedef struct _NXStartSplitReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
CARD8 mode;
BYTE pad1, pad2, pad3;
} xNXStartSplitReq;
typedef struct _NXEndSplitReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
} xNXEndSplitReq;
typedef struct _NXCommitSplitReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
CARD8 propagate;
CARD8 request;
BYTE pad1, pad2;
CARD32 position B32;
} xNXCommitSplitReq;
typedef struct _NXFinishSplitReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
} xNXFinishSplitReq;
typedef struct _NXAbortSplitReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
} xNXAbortSplitReq;
typedef struct _NXFreeSplitReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
} xNXFreeSplitReq;
typedef struct _NXSetExposeParametersReq {
CARD8 reqType;
BYTE pad;
CARD16 length B16;
BOOL expose;
BOOL graphicsExpose;
BOOL noExpose;
BYTE pad1;
} xNXSetExposeParametersReq;
typedef struct _NXSetCacheParametersReq {
CARD8 reqType;
BYTE pad;
CARD16 length B16;
BOOL enableCache;
BOOL enableSplit;
BOOL enableSave;
BOOL enableLoad;
} xNXSetCacheParametersReq;
typedef struct _NXSetUnpackGeometryReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
CARD8 depth1Bpp;
CARD8 depth4Bpp;
CARD8 depth8Bpp;
CARD8 depth16Bpp;
CARD8 depth24Bpp;
CARD8 depth32Bpp;
BYTE pad1, pad2;
CARD32 redMask B32;
CARD32 greenMask B32;
CARD32 blueMask B32;
} xNXSetUnpackGeometryReq;
typedef struct _NXSetUnpackColormapReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
CARD8 method;
BYTE pad1, pad2, pad3;
CARD32 srcLength B32;
CARD32 dstLength B32;
} xNXSetUnpackColormapReq;
typedef struct _NXSetUnpackAlphaReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
CARD8 method;
BYTE pad1, pad2, pad3;
CARD32 srcLength B32;
CARD32 dstLength B32;
} xNXSetUnpackAlphaReq;
typedef struct _NXPutPackedImageReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
Drawable drawable B32;
GContext gc B32;
CARD8 method;
CARD8 format;
CARD8 srcDepth;
CARD8 dstDepth;
CARD32 srcLength B32;
CARD32 dstLength B32;
INT16 srcX B16, srcY B16;
CARD16 srcWidth B16, srcHeight B16;
INT16 dstX B16, dstY B16;
CARD16 dstWidth B16, dstHeight B16;
} xNXPutPackedImageReq;
typedef struct _NXFreeUnpackReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
} xNXFreeUnpackReq;
/*
* The X_NXSplitData and X_NXSplitEvent opcodes
* are used internally and are ignored if coming
* from the agent.
*/
#define X_NXInternalGenericData 0
#define X_NXInternalGenericReply 1
#define X_NXInternalGenericRequest 255
#define X_NXInternalShapeExtension 128
#define X_NXInternalRenderExtension 129
#define X_NXFirstOpcode 230
#define X_NXLastOpcode 252
#define X_NXGetControlParameters 230
#define X_NXGetCleanupParameters 231
#define X_NXGetImageParameters 232
#define X_NXGetUnpackParameters 233
#define X_NXStartSplit 234
#define X_NXEndSplit 235
#define X_NXSplitData 236
#define X_NXCommitSplit 237
#define X_NXSetExposeParameters 240
#define X_NXSetUnpackGeometry 241
#define X_NXSetUnpackColormap 242
#define X_NXPutPackedImage 243
#define X_NXSplitEvent 244
#define X_NXGetShmemParameters 245
#define X_NXSetUnpackAlpha 246
#define X_NXFreeUnpack 247
#define X_NXFinishSplit 248
#define X_NXAbortSplit 249
#define X_NXFreeSplit 250
#define X_NXGetFontParameters 251
#define X_NXSetCacheParameters 252
/*
* The following events are received by the agent
* in the form of a ClientMessage with the value
* 0 in fields atom and window. The format is
* always 32. Event specific data starts at byte
* offset 12.
*
* These events are sent by the NX transport to
* notify the agent about the result of a split
* operation.
*/
#define NXNoSplitNotify 1
#define NXStartSplitNotify 2
#define NXCommitSplitNotify 3
#define NXEndSplitNotify 4
#define NXEmptySplitNotify 5
/*
* Notifications of collect events. These events
* don't come from the NX transport but are put
* back in client's event queue by NXlib.
*/
#define NXCollectImageNotify 8
#define NXCollectPropertyNotify 9
#define NXCollectGrabPointerNotify 10
#define NXCollectInputFocusNotify 11
#undef Drawable
#undef GContext
#ifdef __cplusplus
}
#endif
#endif /* NXproto_H */