diff options
author | axis <qt-info@nokia.com> | 2009-04-24 11:34:15 (GMT) |
---|---|---|
committer | axis <qt-info@nokia.com> | 2009-04-24 11:34:15 (GMT) |
commit | 8f427b2b914d5b575a4a7c0ed65d2fb8f45acc76 (patch) | |
tree | a17e1a767a89542ab59907462206d7dcf2e504b2 /src/3rdparty/wintab/pktdef.h | |
download | Qt-8f427b2b914d5b575a4a7c0ed65d2fb8f45acc76.zip Qt-8f427b2b914d5b575a4a7c0ed65d2fb8f45acc76.tar.gz Qt-8f427b2b914d5b575a4a7c0ed65d2fb8f45acc76.tar.bz2 |
Long live Qt for S60!
Diffstat (limited to 'src/3rdparty/wintab/pktdef.h')
-rw-r--r-- | src/3rdparty/wintab/pktdef.h | 233 |
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 0000000..b8695f0 --- /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 */ |