aboutsummaryrefslogtreecommitdiff
path: root/nxcomp/NXproto.h
diff options
context:
space:
mode:
Diffstat (limited to 'nxcomp/NXproto.h')
-rw-r--r--nxcomp/NXproto.h439
1 files changed, 439 insertions, 0 deletions
diff --git a/nxcomp/NXproto.h b/nxcomp/NXproto.h
new file mode 100644
index 000000000..ce25cc4c7
--- /dev/null
+++ b/nxcomp/NXproto.h
@@ -0,0 +1,439 @@
+/**************************************************************************/
+/* */
+/* Copyright (c) 2001, 2010 NoMachine, http://www.nomachine.com/. */
+/* */
+/* NXCOMP, NX protocol compression and NX extensions to this software */
+/* are copyright of NoMachine. Redistribution and use of the present */
+/* software is allowed according to terms specified in the file LICENSE */
+/* which comes in the source distribution. */
+/* */
+/* Check http://www.nomachine.com/licensing.html for applicability. */
+/* */
+/* NX and NoMachine are trademarks of Medialogic S.p.A. */
+/* */
+/* All rights reserved. */
+/* */
+/**************************************************************************/
+
+#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 */