summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/wintab/pktdef.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/wintab/pktdef.h')
-rw-r--r--src/3rdparty/wintab/pktdef.h233
1 files changed, 233 insertions, 0 deletions
diff --git a/src/3rdparty/wintab/pktdef.h b/src/3rdparty/wintab/pktdef.h
new file mode 100644
index 0000000000..b8695f0ecd
--- /dev/null
+++ b/src/3rdparty/wintab/pktdef.h
@@ -0,0 +1,233 @@
+/* -------------------------------- pktdef.h -------------------------------- */
+/* Combined 16 & 32-bit version. */
+
+/*------------------------------------------------------------------------------
+The text and information contained in this file may be freely used,
+copied, or distributed without compensation or licensing restrictions.
+
+This file is copyright 1991-1998 by LCS/Telegraphics.
+------------------------------------------------------------------------------*/
+/*------------------------------------------------------------------------------
+
+How to use pktdef.h:
+
+1. Include wintab.h
+2. if using just one packet format:
+ a. Define PACKETDATA and PACKETMODE as or'ed combinations of WTPKT bits
+ (use the PK_* identifiers).
+ b. Include pktdef.h.
+ c. The generated structure typedef will be called PACKET. Use PACKETDATA
+ and PACKETMODE to fill in the LOGCONTEXT structure.
+3. If using multiple packet formats, for each one:
+ a. Define PACKETNAME. Its text value will be a prefix for this packet's
+ parameters and names.
+ b. Define <PACKETNAME>PACKETDATA and <PACKETNAME>PACKETMODE similar to
+ 2.a. above.
+ c. Include pktdef.h.
+ d. The generated structure typedef will be called
+ <PACKETNAME>PACKET. Compare with 2.c. above and example #2 below.
+4. If using extension packet data, do the following additional steps
+ for each extension:
+ a. Before including pktdef.h, define <PACKETNAME>PACKET<EXTENSION>
+ as either PKEXT_ABSOLUTE or PKEXT_RELATIVE.
+ b. The generated structure typedef will contain a field for the
+ extension data.
+ c. Scan the WTI_EXTENSION categories to find the extension's
+ packet mask bit.
+ d. OR the packet mask bit with <PACKETNAME>PACKETDATA and use the
+ result in the lcPktData field of the LOGCONTEXT structure.
+ e. If <PACKETNAME>PACKET<EXTENSION> was PKEXT_RELATIVE, OR the
+ packet mask bit with <PACKETNAME>PACKETMODE and use the result
+ in the lcPktMode field of the LOGCONTEXT structure.
+
+
+Example #1. -- single packet format
+
+#include <wintab.h>
+#define PACKETDATA PK_X | PK_Y | PK_BUTTONS /@ x, y, buttons @/
+#define PACKETMODE PK_BUTTONS /@ buttons relative mode @/
+#include <pktdef.h>
+...
+ lc.lcPktData = PACKETDATA;
+ lc.lcPktMode = PACKETMODE;
+
+Example #2. -- multiple formats
+
+#include <wintab.h>
+#define PACKETNAME MOE
+#define MOEPACKETDATA PK_X | PK_Y | PK_BUTTONS /@ x, y, buttons @/
+#define MOEPACKETMODE PK_BUTTONS /@ buttons relative mode @/
+#include <pktdef.h>
+#define PACKETNAME LARRY
+#define LARRYPACKETDATA PK_Y | PK_Z | PK_BUTTONS /@ y, z, buttons @/
+#define LARRYPACKETMODE PK_BUTTONS /@ buttons relative mode @/
+#include <pktdef.h>
+#define PACKETNAME CURLY
+#define CURLYPACKETDATA PK_X | PK_Z | PK_BUTTONS /@ x, z, buttons @/
+#define CURLYPACKETMODE PK_BUTTONS /@ buttons relative mode @/
+#include <pktdef.h>
+...
+ lcMOE.lcPktData = MOEPACKETDATA;
+ lcMOE.lcPktMode = MOEPACKETMODE;
+...
+ lcLARRY.lcPktData = LARRYPACKETDATA;
+ lcLARRY.lcPktMode = LARRYPACKETMODE;
+...
+ lcCURLY.lcPktData = CURLYPACKETDATA;
+ lcCURLY.lcPktMode = CURLYPACKETMODE;
+
+Example #3. -- extension packet data "XFOO".
+
+#include <wintab.h>
+#define PACKETDATA PK_X | PK_Y | PK_BUTTONS /@ x, y, buttons @/
+#define PACKETMODE PK_BUTTONS /@ buttons relative mode @/
+#define PACKETXFOO PKEXT_ABSOLUTE /@ XFOO absolute mode @/
+#include <pktdef.h>
+...
+UINT ScanExts(UINT wTag)
+{
+ UINT i;
+ UINT wScanTag;
+
+ /@ scan for wTag's info category. @/
+ for (i = 0; WTInfo(WTI_EXTENSIONS + i, EXT_TAG, &wScanTag); i++) {
+ if (wTag == wScanTag) {
+ /@ return category offset from WTI_EXTENSIONS. @/
+ return i;
+ }
+ }
+ /@ return error code. @/
+ return 0xFFFF;
+}
+...
+ lc.lcPktData = PACKETDATA;
+ lc.lcPktMode = PACKETMODE;
+#ifdef PACKETXFOO
+ categoryXFOO = ScanExts(WTX_XFOO);
+ WTInfo(WTI_EXTENSIONS + categoryXFOO, EXT_MASK, &maskXFOO);
+ lc.lcPktData |= maskXFOO;
+#if PACKETXFOO == PKEXT_RELATIVE
+ lc.lcPktMode |= maskXFOO;
+#endif
+#endif
+ WTOpen(hWnd, &lc, TRUE);
+
+
+------------------------------------------------------------------------------*/
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#ifndef PACKETNAME
+ /* if no packet name prefix */
+ #define __PFX(x) x
+ #define __IFX(x,y) x ## y
+#else
+ /* add prefixes and infixes to packet format names */
+ #define __PFX(x) __PFX2(PACKETNAME,x)
+ #define __PFX2(p,x) __PFX3(p,x)
+ #define __PFX3(p,x) p ## x
+ #define __IFX(x,y) __IFX2(x,PACKETNAME,y)
+ #define __IFX2(x,i,y) __IFX3(x,i,y)
+ #define __IFX3(x,i,y) x ## i ## y
+#endif
+
+#define __SFX2(x,s) __SFX3(x,s)
+#define __SFX3(x,s) x ## s
+
+#define __TAG __IFX(tag,PACKET)
+#define __TYPES __PFX(PACKET), * __IFX(P,PACKET), NEAR * __IFX(NP,PACKET), \
+ FAR * __IFX(LP,PACKET)
+
+#define __DATA (__PFX(PACKETDATA))
+#define __MODE (__PFX(PACKETMODE))
+#define __EXT(x) __SFX2(__PFX(PACKET),x)
+
+
+typedef struct __TAG {
+ #if (__DATA & PK_CONTEXT)
+ HCTX pkContext;
+ #endif
+ #if (__DATA & PK_STATUS)
+ UINT pkStatus;
+ #endif
+ #if (__DATA & PK_TIME)
+ DWORD pkTime;
+ #endif
+ #if (__DATA & PK_CHANGED)
+ WTPKT pkChanged;
+ #endif
+ #if (__DATA & PK_SERIAL_NUMBER)
+ UINT pkSerialNumber;
+ #endif
+ #if (__DATA & PK_CURSOR)
+ UINT pkCursor;
+ #endif
+ #if (__DATA & PK_BUTTONS)
+ DWORD pkButtons;
+ #endif
+ #if (__DATA & PK_X)
+ LONG pkX;
+ #endif
+ #if (__DATA & PK_Y)
+ LONG pkY;
+ #endif
+ #if (__DATA & PK_Z)
+ LONG pkZ;
+ #endif
+ #if (__DATA & PK_NORMAL_PRESSURE)
+ #if (__MODE & PK_NORMAL_PRESSURE)
+ /* relative */
+ int pkNormalPressure;
+ #else
+ /* absolute */
+ UINT pkNormalPressure;
+ #endif
+ #endif
+ #if (__DATA & PK_TANGENT_PRESSURE)
+ #if (__MODE & PK_TANGENT_PRESSURE)
+ /* relative */
+ int pkTangentPressure;
+ #else
+ /* absolute */
+ UINT pkTangentPressure;
+ #endif
+ #endif
+ #if (__DATA & PK_ORIENTATION)
+ ORIENTATION pkOrientation;
+ #endif
+ #if (__DATA & PK_ROTATION)
+ ROTATION pkRotation; /* 1.1 */
+ #endif
+
+#ifndef NOWTEXTENSIONS
+ /* extensions begin here. */
+ #if (__EXT(FKEYS) == PKEXT_RELATIVE) || (__EXT(FKEYS) == PKEXT_ABSOLUTE)
+ UINT pkFKeys;
+ #endif
+ #if (__EXT(TILT) == PKEXT_RELATIVE) || (__EXT(TILT) == PKEXT_ABSOLUTE)
+ TILT pkTilt;
+ #endif
+#endif
+
+} __TYPES ;
+
+#undef PACKETNAME
+#undef __TAG
+#undef __TAG2
+#undef __TYPES
+#undef __TYPES2
+#undef __DATA
+#undef __MODE
+#undef __PFX
+#undef __PFX2
+#undef __PFX3
+#undef __IFX
+#undef __IFX2
+#undef __IFX3
+#undef __SFX2
+#undef __SFX3
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */