src/3rdparty/wintab/wintab.h
changeset 0 1918ee327afb
equal deleted inserted replaced
-1:000000000000 0:1918ee327afb
       
     1 /* -------------------------------- wintab.h -------------------------------- */
       
     2 /* Combined 16 & 32-bit version. */
       
     3 
       
     4 /*------------------------------------------------------------------------------
       
     5 The text and information contained in this file may be freely used,
       
     6 copied, or distributed without compensation or licensing restrictions.
       
     7 
       
     8 This file is copyright 1991-1998 by LCS/Telegraphics.
       
     9 ------------------------------------------------------------------------------*/
       
    10 
       
    11 #ifndef _INC_WINTAB     /* prevent multiple includes */
       
    12 #define _INC_WINTAB
       
    13 
       
    14 #ifdef __cplusplus
       
    15 extern "C" {
       
    16 #endif	/* __cplusplus */
       
    17 
       
    18 /* -------------------------------------------------------------------------- */
       
    19 /* Messages */
       
    20 #ifndef NOWTMESSAGES
       
    21 
       
    22 	#define WT_DEFBASE		0x7FF0
       
    23 	#define WT_MAXOFFSET	0xF
       
    24 
       
    25 	#define _WT_PACKET(b)		((b)+0)
       
    26 	#define _WT_CTXOPEN(b)		((b)+1)
       
    27 	#define _WT_CTXCLOSE(b)		((b)+2)
       
    28 	#define _WT_CTXUPDATE(b)	((b)+3)
       
    29 	#define _WT_CTXOVERLAP(b)	((b)+4)
       
    30 	#define _WT_PROXIMITY(b)	((b)+5)
       
    31 	#define _WT_INFOCHANGE(b)	((b)+6)
       
    32 	#define _WT_CSRCHANGE(b)	((b)+7) /* 1.1 */
       
    33 	#define _WT_MAX(b)			((b)+WT_MAXOFFSET)
       
    34 	
       
    35 	#define WT_PACKET			_WT_PACKET(WT_DEFBASE)
       
    36 	#define WT_CTXOPEN			_WT_CTXOPEN(WT_DEFBASE)
       
    37 	#define WT_CTXCLOSE			_WT_CTXCLOSE(WT_DEFBASE)
       
    38 	#define WT_CTXUPDATE		_WT_CTXUPDATE(WT_DEFBASE)
       
    39 	#define WT_CTXOVERLAP		_WT_CTXOVERLAP(WT_DEFBASE)
       
    40 	#define WT_PROXIMITY		_WT_PROXIMITY(WT_DEFBASE)
       
    41 	#define WT_INFOCHANGE		_WT_INFOCHANGE(WT_DEFBASE)
       
    42 	#define WT_CSRCHANGE		_WT_CSRCHANGE(WT_DEFBASE) /* 1.1 */
       
    43 	#define WT_MAX				_WT_MAX(WT_DEFBASE)
       
    44 
       
    45 #endif
       
    46 
       
    47 /* -------------------------------------------------------------------------- */
       
    48 /* -------------------------------------------------------------------------- */
       
    49 /* Data Types */
       
    50 
       
    51 /* -------------------------------------------------------------------------- */
       
    52 /* COMMON DATA DEFS */
       
    53 
       
    54 DECLARE_HANDLE(HMGR);		/* manager handle */
       
    55 DECLARE_HANDLE(HCTX);		/* context handle */
       
    56 DECLARE_HANDLE(HWTHOOK);	/* hook handle */
       
    57 
       
    58 typedef DWORD WTPKT;		/* packet mask */
       
    59 
       
    60 
       
    61 #ifndef NOWTPKT
       
    62 
       
    63 	/* WTPKT bits */
       
    64 	#define PK_CONTEXT			0x0001	/* reporting context */
       
    65 	#define PK_STATUS			0x0002	/* status bits */
       
    66 	#define PK_TIME				0x0004	/* time stamp */
       
    67 	#define PK_CHANGED			0x0008	/* change bit vector */
       
    68 	#define PK_SERIAL_NUMBER   	0x0010	/* packet serial number */
       
    69 	#define PK_CURSOR			0x0020	/* reporting cursor */
       
    70 	#define PK_BUTTONS			0x0040	/* button information */
       
    71 	#define PK_X				0x0080	/* x axis */
       
    72 	#define PK_Y				0x0100	/* y axis */
       
    73 	#define PK_Z				0x0200	/* z axis */
       
    74 	#define PK_NORMAL_PRESSURE	0x0400	/* normal or tip pressure */
       
    75 	#define PK_TANGENT_PRESSURE	0x0800	/* tangential or barrel pressure */
       
    76 	#define PK_ORIENTATION		0x1000	/* orientation info: tilts */
       
    77 	#define PK_ROTATION			0x2000	/* rotation info; 1.1 */
       
    78 
       
    79 #endif
       
    80 
       
    81 typedef DWORD FIX32;				/* fixed-point arithmetic type */
       
    82 
       
    83 #ifndef NOFIX32
       
    84 	#define INT(x)	HIWORD(x)
       
    85 	#define FRAC(x)	LOWORD(x)
       
    86 
       
    87 	#define CASTFIX32(x)	((FIX32)((x)*65536L))
       
    88 
       
    89 	#define ROUND(x)		(INT(x) + (FRAC(x) > (WORD)0x8000))
       
    90 
       
    91 	#define FIX_MUL(c, a, b)						\
       
    92 		(c = (((DWORD)FRAC(a) * FRAC(b)) >> 16) +	\
       
    93 			(DWORD)INT(a) * FRAC(b) +				\
       
    94 			(DWORD)INT(b) * FRAC(a) +				\
       
    95 			((DWORD)INT(a) * INT(b) << 16))
       
    96 
       
    97 	#ifdef _WINDLL
       
    98 		#define FIX_DIV_SC static
       
    99 	#else
       
   100 		#define FIX_DIV_SC
       
   101 	#endif
       
   102 
       
   103 	#define FIX_DIV(c, a, b)					\
       
   104 		{							   			\
       
   105 			FIX_DIV_SC DWORD temp, rem, btemp;	\
       
   106 									   			\
       
   107 			/* fraction done bytewise */		\
       
   108 			temp = ((a / b) << 16);				\
       
   109 			rem = a % b;			   			\
       
   110 			btemp = b;							\
       
   111 			if (INT(btemp) < 256) {				\
       
   112 				rem <<= 8;				   		\
       
   113 			}									\
       
   114 			else {								\
       
   115 				btemp >>= 8;					\
       
   116 			}									\
       
   117 			temp += ((rem / btemp) << 8);  		\
       
   118 			rem %= btemp;			   			\
       
   119 			rem <<= 8;				   			\
       
   120 			temp += rem / btemp;		   		\
       
   121 			c = temp;				   			\
       
   122 		}
       
   123 #endif
       
   124 
       
   125 /* -------------------------------------------------------------------------- */
       
   126 /* INFO DATA DEFS */
       
   127 
       
   128 #ifndef NOWTINFO
       
   129 
       
   130 #ifndef NOWTAXIS
       
   131 
       
   132 typedef struct tagAXIS {
       
   133 	LONG	axMin;
       
   134 	LONG	axMax;
       
   135 	UINT	axUnits;
       
   136 	FIX32	axResolution;
       
   137 } AXIS, *PAXIS, NEAR *NPAXIS, FAR *LPAXIS;
       
   138 
       
   139 	/* unit specifiers */
       
   140 	#define TU_NONE			0
       
   141 	#define TU_INCHES		1
       
   142 	#define TU_CENTIMETERS	2
       
   143 	#define TU_CIRCLE		3
       
   144 
       
   145 #endif
       
   146 
       
   147 #ifndef NOWTSYSBUTTONS
       
   148 
       
   149 /* system button assignment values */
       
   150 #define SBN_NONE		0x00
       
   151 #define SBN_LCLICK		0x01
       
   152 #define SBN_LDBLCLICK	0x02
       
   153 #define SBN_LDRAG		0x03
       
   154 #define SBN_RCLICK		0x04
       
   155 #define SBN_RDBLCLICK	0x05
       
   156 #define SBN_RDRAG		0x06
       
   157 #define SBN_MCLICK		0x07
       
   158 #define SBN_MDBLCLICK	0x08
       
   159 #define SBN_MDRAG		0x09
       
   160 /* for Pen Windows */
       
   161 #define SBN_PTCLICK		0x10
       
   162 #define SBN_PTDBLCLICK	0x20
       
   163 #define SBN_PTDRAG		0x30
       
   164 #define SBN_PNCLICK		0x40
       
   165 #define SBN_PNDBLCLICK	0x50
       
   166 #define SBN_PNDRAG		0x60
       
   167 #define SBN_P1CLICK		0x70
       
   168 #define SBN_P1DBLCLICK	0x80
       
   169 #define SBN_P1DRAG		0x90
       
   170 #define SBN_P2CLICK		0xA0
       
   171 #define SBN_P2DBLCLICK	0xB0
       
   172 #define SBN_P2DRAG		0xC0
       
   173 #define SBN_P3CLICK		0xD0
       
   174 #define SBN_P3DBLCLICK	0xE0
       
   175 #define SBN_P3DRAG		0xF0
       
   176 
       
   177 #endif
       
   178 
       
   179 #ifndef NOWTCAPABILITIES
       
   180 
       
   181 /* hardware capabilities */
       
   182 #define HWC_INTEGRATED		0x0001
       
   183 #define HWC_TOUCH			0x0002
       
   184 #define HWC_HARDPROX		0x0004
       
   185 #define HWC_PHYSID_CURSORS	0x0008 /* 1.1 */
       
   186 #endif
       
   187 
       
   188 #ifndef NOWTIFC
       
   189 
       
   190 #ifndef NOWTCURSORS 
       
   191 
       
   192 /* cursor capabilities */
       
   193 #define CRC_MULTIMODE	0x0001 /* 1.1 */
       
   194 #define CRC_AGGREGATE	0x0002 /* 1.1 */
       
   195 #define CRC_INVERT		0x0004 /* 1.1 */
       
   196 
       
   197 #endif 
       
   198 
       
   199 /* info categories */
       
   200 #define WTI_INTERFACE		1
       
   201 	#define IFC_WINTABID		1
       
   202 	#define IFC_SPECVERSION		2
       
   203 	#define IFC_IMPLVERSION		3
       
   204 	#define IFC_NDEVICES		4
       
   205 	#define IFC_NCURSORS		5
       
   206 	#define IFC_NCONTEXTS		6
       
   207 	#define IFC_CTXOPTIONS		7
       
   208 	#define IFC_CTXSAVESIZE		8
       
   209 	#define IFC_NEXTENSIONS		9
       
   210 	#define IFC_NMANAGERS		10
       
   211 	#define IFC_MAX				10
       
   212 
       
   213 
       
   214 #endif
       
   215 
       
   216 #ifndef NOWTSTATUS
       
   217 
       
   218 #define WTI_STATUS			2
       
   219 	#define STA_CONTEXTS		1
       
   220 	#define STA_SYSCTXS			2
       
   221 	#define STA_PKTRATE			3
       
   222 	#define STA_PKTDATA			4
       
   223 	#define STA_MANAGERS		5
       
   224 	#define STA_SYSTEM			6
       
   225 	#define STA_BUTTONUSE		7
       
   226 	#define STA_SYSBTNUSE		8
       
   227 	#define STA_MAX				8
       
   228 
       
   229 #endif
       
   230 
       
   231 #ifndef NOWTDEFCONTEXT
       
   232 
       
   233 #define WTI_DEFCONTEXT	3
       
   234 #define WTI_DEFSYSCTX	4
       
   235 #define WTI_DDCTXS		400 /* 1.1 */
       
   236 #define WTI_DSCTXS		500 /* 1.1 */
       
   237 	#define CTX_NAME		1
       
   238 	#define CTX_OPTIONS		2
       
   239 	#define CTX_STATUS		3
       
   240 	#define CTX_LOCKS		4
       
   241 	#define CTX_MSGBASE		5
       
   242 	#define CTX_DEVICE		6
       
   243 	#define CTX_PKTRATE		7
       
   244 	#define CTX_PKTDATA		8
       
   245 	#define CTX_PKTMODE		9
       
   246 	#define CTX_MOVEMASK	10
       
   247 	#define CTX_BTNDNMASK	11
       
   248 	#define CTX_BTNUPMASK	12
       
   249 	#define CTX_INORGX		13
       
   250 	#define CTX_INORGY		14
       
   251 	#define CTX_INORGZ		15
       
   252 	#define CTX_INEXTX		16
       
   253 	#define CTX_INEXTY		17
       
   254 	#define CTX_INEXTZ		18
       
   255 	#define CTX_OUTORGX		19
       
   256 	#define CTX_OUTORGY		20
       
   257 	#define CTX_OUTORGZ		21
       
   258 	#define CTX_OUTEXTX		22
       
   259 	#define CTX_OUTEXTY		23
       
   260 	#define CTX_OUTEXTZ		24
       
   261 	#define CTX_SENSX		25
       
   262 	#define CTX_SENSY		26
       
   263 	#define CTX_SENSZ		27
       
   264 	#define CTX_SYSMODE		28
       
   265 	#define CTX_SYSORGX		29
       
   266 	#define CTX_SYSORGY		30
       
   267 	#define CTX_SYSEXTX		31
       
   268 	#define CTX_SYSEXTY		32
       
   269 	#define CTX_SYSSENSX	33
       
   270 	#define CTX_SYSSENSY	34
       
   271 	#define CTX_MAX			34
       
   272 
       
   273 #endif
       
   274 
       
   275 #ifndef NOWTDEVICES
       
   276 
       
   277 #define WTI_DEVICES		100
       
   278 	#define DVC_NAME			1
       
   279 	#define DVC_HARDWARE		2
       
   280 	#define DVC_NCSRTYPES		3
       
   281 	#define DVC_FIRSTCSR		4
       
   282 	#define DVC_PKTRATE			5
       
   283 	#define DVC_PKTDATA			6
       
   284 	#define DVC_PKTMODE			7
       
   285 	#define DVC_CSRDATA			8
       
   286 	#define DVC_XMARGIN			9
       
   287 	#define DVC_YMARGIN			10
       
   288 	#define DVC_ZMARGIN			11
       
   289 	#define DVC_X				12
       
   290 	#define DVC_Y				13
       
   291 	#define DVC_Z				14
       
   292 	#define DVC_NPRESSURE		15
       
   293 	#define DVC_TPRESSURE		16
       
   294 	#define DVC_ORIENTATION		17
       
   295 	#define DVC_ROTATION		18 /* 1.1 */
       
   296 	#define DVC_PNPID			19 /* 1.1 */
       
   297 	#define DVC_MAX				19
       
   298 
       
   299 #endif
       
   300 
       
   301 #ifndef NOWTCURSORS
       
   302 
       
   303 #define WTI_CURSORS		200
       
   304 	#define CSR_NAME			1
       
   305 	#define CSR_ACTIVE			2
       
   306 	#define CSR_PKTDATA			3
       
   307 	#define CSR_BUTTONS			4
       
   308 	#define CSR_BUTTONBITS		5
       
   309 	#define CSR_BTNNAMES		6
       
   310 	#define CSR_BUTTONMAP		7
       
   311 	#define CSR_SYSBTNMAP		8
       
   312 	#define CSR_NPBUTTON		9
       
   313 	#define CSR_NPBTNMARKS		10
       
   314 	#define CSR_NPRESPONSE		11
       
   315 	#define CSR_TPBUTTON		12
       
   316 	#define CSR_TPBTNMARKS		13
       
   317 	#define CSR_TPRESPONSE		14
       
   318 	#define CSR_PHYSID			15 /* 1.1 */
       
   319 	#define CSR_MODE			16 /* 1.1 */
       
   320 	#define CSR_MINPKTDATA		17 /* 1.1 */
       
   321 	#define CSR_MINBUTTONS		18 /* 1.1 */
       
   322 	#define CSR_CAPABILITIES	19 /* 1.1 */
       
   323 	#define CSR_TYPE				20 /* 1.2 */
       
   324 	#define CSR_MAX				20
       
   325 
       
   326 #endif
       
   327 
       
   328 #ifndef NOWTEXTENSIONS
       
   329 
       
   330 #define WTI_EXTENSIONS	300
       
   331 	#define EXT_NAME		1
       
   332 	#define EXT_TAG			2
       
   333 	#define EXT_MASK		3
       
   334 	#define EXT_SIZE		4
       
   335 	#define EXT_AXES		5
       
   336 	#define EXT_DEFAULT		6
       
   337 	#define EXT_DEFCONTEXT	7
       
   338 	#define EXT_DEFSYSCTX	8
       
   339 	#define EXT_CURSORS		9 
       
   340 	#define EXT_MAX			109 /* Allow 100 cursors */
       
   341 
       
   342 #endif
       
   343 
       
   344 #endif
       
   345 
       
   346 /* -------------------------------------------------------------------------- */
       
   347 /* CONTEXT DATA DEFS */
       
   348 
       
   349 #define LCNAMELEN	40
       
   350 #define LC_NAMELEN	40
       
   351 #ifdef WIN32
       
   352 typedef struct tagLOGCONTEXTA {
       
   353 	char	lcName[LCNAMELEN];
       
   354 	UINT	lcOptions;
       
   355 	UINT	lcStatus;
       
   356 	UINT	lcLocks;
       
   357 	UINT	lcMsgBase;
       
   358 	UINT	lcDevice;
       
   359 	UINT	lcPktRate;
       
   360 	WTPKT	lcPktData;
       
   361 	WTPKT	lcPktMode;
       
   362 	WTPKT	lcMoveMask;
       
   363 	DWORD	lcBtnDnMask;
       
   364 	DWORD	lcBtnUpMask;
       
   365 	LONG	lcInOrgX;
       
   366 	LONG	lcInOrgY;
       
   367 	LONG	lcInOrgZ;
       
   368 	LONG	lcInExtX;
       
   369 	LONG	lcInExtY;
       
   370 	LONG	lcInExtZ;
       
   371 	LONG	lcOutOrgX;
       
   372 	LONG	lcOutOrgY;
       
   373 	LONG	lcOutOrgZ;
       
   374 	LONG	lcOutExtX;
       
   375 	LONG	lcOutExtY;
       
   376 	LONG	lcOutExtZ;
       
   377 	FIX32	lcSensX;
       
   378 	FIX32	lcSensY;
       
   379 	FIX32	lcSensZ;
       
   380 	BOOL	lcSysMode;
       
   381 	int		lcSysOrgX;
       
   382 	int		lcSysOrgY;
       
   383 	int		lcSysExtX;
       
   384 	int		lcSysExtY;
       
   385 	FIX32	lcSysSensX;
       
   386 	FIX32	lcSysSensY;
       
   387 } LOGCONTEXTA, *PLOGCONTEXTA, NEAR *NPLOGCONTEXTA, FAR *LPLOGCONTEXTA;
       
   388 typedef struct tagLOGCONTEXTW {
       
   389 	WCHAR	lcName[LCNAMELEN];
       
   390 	UINT	lcOptions;
       
   391 	UINT	lcStatus;
       
   392 	UINT	lcLocks;
       
   393 	UINT	lcMsgBase;
       
   394 	UINT	lcDevice;
       
   395 	UINT	lcPktRate;
       
   396 	WTPKT	lcPktData;
       
   397 	WTPKT	lcPktMode;
       
   398 	WTPKT	lcMoveMask;
       
   399 	DWORD	lcBtnDnMask;
       
   400 	DWORD	lcBtnUpMask;
       
   401 	LONG	lcInOrgX;
       
   402 	LONG	lcInOrgY;
       
   403 	LONG	lcInOrgZ;
       
   404 	LONG	lcInExtX;
       
   405 	LONG	lcInExtY;
       
   406 	LONG	lcInExtZ;
       
   407 	LONG	lcOutOrgX;
       
   408 	LONG	lcOutOrgY;
       
   409 	LONG	lcOutOrgZ;
       
   410 	LONG	lcOutExtX;
       
   411 	LONG	lcOutExtY;
       
   412 	LONG	lcOutExtZ;
       
   413 	FIX32	lcSensX;
       
   414 	FIX32	lcSensY;
       
   415 	FIX32	lcSensZ;
       
   416 	BOOL	lcSysMode;
       
   417 	int		lcSysOrgX;
       
   418 	int		lcSysOrgY;
       
   419 	int		lcSysExtX;
       
   420 	int		lcSysExtY;
       
   421 	FIX32	lcSysSensX;
       
   422 	FIX32	lcSysSensY;
       
   423 } LOGCONTEXTW, *PLOGCONTEXTW, NEAR *NPLOGCONTEXTW, FAR *LPLOGCONTEXTW;
       
   424 #ifdef UNICODE
       
   425 typedef LOGCONTEXTW LOGCONTEXT;
       
   426 typedef PLOGCONTEXTW PLOGCONTEXT;
       
   427 typedef NPLOGCONTEXTW NPLOGCONTEXT;
       
   428 typedef LPLOGCONTEXTW LPLOGCONTEXT;
       
   429 #else
       
   430 typedef LOGCONTEXTA LOGCONTEXT;
       
   431 typedef PLOGCONTEXTA PLOGCONTEXT;
       
   432 typedef NPLOGCONTEXTA NPLOGCONTEXT;
       
   433 typedef LPLOGCONTEXTA LPLOGCONTEXT;
       
   434 #endif /* UNICODE */
       
   435 #else /* WIN32 */
       
   436 typedef struct tagLOGCONTEXT {
       
   437 	char	lcName[LCNAMELEN];
       
   438 	UINT	lcOptions;
       
   439 	UINT	lcStatus;
       
   440 	UINT	lcLocks;
       
   441 	UINT	lcMsgBase;
       
   442 	UINT	lcDevice;
       
   443 	UINT	lcPktRate;
       
   444 	WTPKT	lcPktData;
       
   445 	WTPKT	lcPktMode;
       
   446 	WTPKT	lcMoveMask;
       
   447 	DWORD	lcBtnDnMask;
       
   448 	DWORD	lcBtnUpMask;
       
   449 	LONG	lcInOrgX;
       
   450 	LONG	lcInOrgY;
       
   451 	LONG	lcInOrgZ;
       
   452 	LONG	lcInExtX;
       
   453 	LONG	lcInExtY;
       
   454 	LONG	lcInExtZ;
       
   455 	LONG	lcOutOrgX;
       
   456 	LONG	lcOutOrgY;
       
   457 	LONG	lcOutOrgZ;
       
   458 	LONG	lcOutExtX;
       
   459 	LONG	lcOutExtY;
       
   460 	LONG	lcOutExtZ;
       
   461 	FIX32	lcSensX;
       
   462 	FIX32	lcSensY;
       
   463 	FIX32	lcSensZ;
       
   464 	BOOL	lcSysMode;
       
   465 	int		lcSysOrgX;
       
   466 	int		lcSysOrgY;
       
   467 	int		lcSysExtX;
       
   468 	int		lcSysExtY;
       
   469 	FIX32	lcSysSensX;
       
   470 	FIX32	lcSysSensY;
       
   471 } LOGCONTEXT, *PLOGCONTEXT, NEAR *NPLOGCONTEXT, FAR *LPLOGCONTEXT;
       
   472 #endif /* WIN32 */
       
   473 
       
   474 	/* context option values */
       
   475 	#define CXO_SYSTEM		0x0001
       
   476 	#define CXO_PEN			0x0002
       
   477 	#define CXO_MESSAGES	0x0004
       
   478 	#define CXO_MARGIN		0x8000
       
   479 	#define CXO_MGNINSIDE	0x4000
       
   480 	#define CXO_CSRMESSAGES	0x0008 /* 1.1 */
       
   481 
       
   482 	/* context status values */
       
   483 	#define CXS_DISABLED	0x0001
       
   484 	#define CXS_OBSCURED	0x0002
       
   485 	#define CXS_ONTOP		0x0004
       
   486 
       
   487 	/* context lock values */
       
   488 	#define CXL_INSIZE		0x0001
       
   489 	#define CXL_INASPECT	0x0002
       
   490 	#define CXL_SENSITIVITY	0x0004
       
   491 	#define CXL_MARGIN		0x0008
       
   492 	#define CXL_SYSOUT		0x0010
       
   493 
       
   494 /* -------------------------------------------------------------------------- */
       
   495 /* EVENT DATA DEFS */
       
   496 
       
   497 /* For packet structure definition, see pktdef.h */
       
   498 
       
   499 /* packet status values */
       
   500 #define TPS_PROXIMITY		0x0001
       
   501 #define TPS_QUEUE_ERR		0x0002
       
   502 #define TPS_MARGIN			0x0004
       
   503 #define TPS_GRAB			0x0008
       
   504 #define TPS_INVERT			0x0010 /* 1.1 */
       
   505 
       
   506 typedef struct tagORIENTATION {
       
   507 	int orAzimuth;
       
   508 	int orAltitude;
       
   509 	int orTwist;
       
   510 } ORIENTATION, *PORIENTATION, NEAR *NPORIENTATION, FAR *LPORIENTATION;
       
   511 
       
   512 typedef struct tagROTATION { /* 1.1 */
       
   513 	int	roPitch;
       
   514 	int roRoll;
       
   515 	int roYaw;
       
   516 } ROTATION, *PROTATION, NEAR *NPROTATION, FAR *LPROTATION;
       
   517 // grandfather in obsolete member names.
       
   518 #define rotPitch	roPitch
       
   519 #define rotRoll		roRoll
       
   520 #define rotYaw		roYaw
       
   521 
       
   522 /* relative buttons */
       
   523 #define TBN_NONE	0
       
   524 #define TBN_UP		1
       
   525 #define TBN_DOWN	2
       
   526 
       
   527 /* -------------------------------------------------------------------------- */
       
   528 /* DEVICE CONFIG CONSTANTS */
       
   529 
       
   530 #ifndef NOWTDEVCFG
       
   531 
       
   532 #define WTDC_NONE		0
       
   533 #define WTDC_CANCEL		1
       
   534 #define WTDC_OK			2
       
   535 #define WTDC_RESTART	3
       
   536 
       
   537 #endif
       
   538 
       
   539 /* -------------------------------------------------------------------------- */
       
   540 /* HOOK CONSTANTS */
       
   541 
       
   542 #ifndef NOWTHOOKS
       
   543 
       
   544 #define WTH_PLAYBACK		1
       
   545 #define WTH_RECORD			2
       
   546 
       
   547 #define WTHC_GETLPLPFN	    (-3)
       
   548 #define WTHC_LPLPFNNEXT	    (-2)
       
   549 #define WTHC_LPFNNEXT	    (-1)
       
   550 #define WTHC_ACTION		    0
       
   551 #define WTHC_GETNEXT   	    1
       
   552 #define WTHC_SKIP 	   		2
       
   553 
       
   554 #endif
       
   555 
       
   556 /* -------------------------------------------------------------------------- */
       
   557 /* PREFERENCE FUNCTION CONSTANTS */
       
   558 
       
   559 #ifndef NOWTPREF
       
   560 
       
   561 #define WTP_LPDEFAULT	((LPVOID)-1L)
       
   562 #define WTP_DWDEFAULT	((DWORD)-1L)
       
   563 
       
   564 #endif
       
   565 
       
   566 /* -------------------------------------------------------------------------- */
       
   567 /* EXTENSION TAGS AND CONSTANTS */
       
   568 
       
   569 #ifndef NOWTEXTENSIONS
       
   570 
       
   571 /* constants for use with pktdef.h */
       
   572 #define PKEXT_ABSOLUTE	1
       
   573 #define PKEXT_RELATIVE	2
       
   574 
       
   575 /* Extension tags. */
       
   576 #define WTX_OBT			0	/* Out of bounds tracking */
       
   577 #define WTX_FKEYS		1	/* Function keys */
       
   578 #define WTX_TILT		2	/* Raw Cartesian tilt; 1.1 */
       
   579 #define WTX_CSRMASK		3	/* select input by cursor type; 1.1 */
       
   580 #define WTX_XBTNMASK	4	/* Extended button mask; 1.1 */
       
   581 
       
   582 typedef struct tagXBTNMASK {
       
   583 	BYTE xBtnDnMask[32];
       
   584 	BYTE xBtnUpMask[32];
       
   585 } XBTNMASK;
       
   586 
       
   587 typedef struct tagTILT { /* 1.1 */
       
   588 	int tiltX;
       
   589 	int tiltY;
       
   590 } TILT;
       
   591 
       
   592 #endif
       
   593 
       
   594 /* -------------------------------------------------------------------------- */
       
   595 /* -------------------------------------------------------------------------- */
       
   596 /* Functions */
       
   597 
       
   598 	#ifndef API
       
   599 		#ifndef WINAPI
       
   600 			#define API			FAR PASCAL
       
   601 		#else
       
   602 			#define API			WINAPI
       
   603 		#endif
       
   604 	#endif
       
   605 
       
   606 #ifndef NOWTCALLBACKS
       
   607 
       
   608 	#ifndef CALLBACK
       
   609 	#define CALLBACK	FAR PASCAL
       
   610 	#endif
       
   611 
       
   612 	#ifndef NOWTMANAGERFXNS
       
   613 	/* callback function types */
       
   614 	typedef BOOL (WINAPI * WTENUMPROC)(HCTX, LPARAM); /* changed CALLBACK->WINAPI, 1.1 */
       
   615 	typedef BOOL (WINAPI * WTCONFIGPROC)(HCTX, HWND);
       
   616 	typedef LRESULT (WINAPI * WTHOOKPROC)(int, WPARAM, LPARAM);
       
   617 	typedef WTHOOKPROC FAR *LPWTHOOKPROC;
       
   618 	#endif
       
   619 
       
   620 #endif
       
   621 
       
   622 
       
   623 #ifndef NOWTFUNCTIONS
       
   624 
       
   625 	#ifndef NOWTBASICFXNS
       
   626 	/* BASIC FUNCTIONS */
       
   627 #ifdef WIN32
       
   628 	UINT API WTInfoA(UINT, UINT, LPVOID);
       
   629 	#define ORD_WTInfoA						20
       
   630 	UINT API WTInfoW(UINT, UINT, LPVOID);
       
   631 	#define ORD_WTInfoW					  1020
       
   632 	#ifdef UNICODE
       
   633 	#define WTInfo  WTInfoW
       
   634 	#define ORD_WTInfo  ORD_WTInfoW
       
   635 	#else
       
   636 	#define WTInfo  WTInfoA
       
   637 	#define ORD_WTInfo  ORD_WTInfoA
       
   638 	#endif /* !UNICODE */
       
   639 #else
       
   640 	UINT API WTInfo(UINT, UINT, LPVOID);
       
   641 	#define ORD_WTInfo						20
       
   642 #endif
       
   643 #ifdef WIN32
       
   644 	HCTX API WTOpenA(HWND, LPLOGCONTEXTA, BOOL);
       
   645 	#define ORD_WTOpenA						21
       
   646 	HCTX API WTOpenW(HWND, LPLOGCONTEXTW, BOOL);
       
   647 	#define ORD_WTOpenW					  1021
       
   648 	#ifdef UNICODE
       
   649 	#define WTOpen  WTOpenW
       
   650 	#define ORD_WTOpen  ORD_WTOpenW
       
   651 	#else
       
   652 	#define WTOpen  WTOpenA
       
   653 	#define ORD_WTOpen  ORD_WTOpenA
       
   654 	#endif /* !UNICODE */
       
   655 #else
       
   656 	HCTX API WTOpen(HWND, LPLOGCONTEXT, BOOL);
       
   657 	#define ORD_WTOpen						21
       
   658 #endif
       
   659 	BOOL API WTClose(HCTX);
       
   660 	#define ORD_WTClose						22
       
   661 	int API WTPacketsGet(HCTX, int, LPVOID);
       
   662 	#define ORD_WTPacketsGet				23
       
   663 	BOOL API WTPacket(HCTX, UINT, LPVOID);
       
   664 	#define ORD_WTPacket					24
       
   665 	#endif
       
   666 
       
   667 	#ifndef NOWTVISIBILITYFXNS
       
   668 	/* VISIBILITY FUNCTIONS */
       
   669 	BOOL API WTEnable(HCTX, BOOL);
       
   670 	#define ORD_WTEnable					40
       
   671 	BOOL API WTOverlap(HCTX, BOOL);
       
   672 	#define ORD_WTOverlap					41
       
   673 	#endif
       
   674 
       
   675 	#ifndef NOWTCTXEDITFXNS
       
   676 	/* CONTEXT EDITING FUNCTIONS */
       
   677 	BOOL API WTConfig(HCTX, HWND);
       
   678 	#define ORD_WTConfig					60
       
   679 #ifdef WIN32
       
   680 	BOOL API WTGetA(HCTX, LPLOGCONTEXTA);
       
   681 	#define ORD_WTGetA						61
       
   682 	BOOL API WTGetW(HCTX, LPLOGCONTEXTW);
       
   683 	#define ORD_WTGetW					  1061
       
   684 	#ifdef UNICODE
       
   685 	#define WTGet  WTGetW
       
   686 	#define ORD_WTGet  ORD_WTGetW
       
   687 	#else
       
   688 	#define WTGet  WTGetA
       
   689 	#define ORD_WTGet  ORD_WTGetA
       
   690 	#endif /* !UNICODE */
       
   691 #else
       
   692 	BOOL API WTGet(HCTX, LPLOGCONTEXT);
       
   693 	#define ORD_WTGet						61
       
   694 #endif
       
   695 #ifdef WIN32
       
   696 	BOOL API WTSetA(HCTX, LPLOGCONTEXTA);
       
   697 	#define ORD_WTSetA						62
       
   698 	BOOL API WTSetW(HCTX, LPLOGCONTEXTW);
       
   699 	#define ORD_WTSetW					  1062
       
   700 	#ifdef UNICODE
       
   701 	#define WTSet  WTSetW
       
   702 	#define ORD_WTSet  ORD_WTSetW
       
   703 	#else
       
   704 	#define WTSet  WTSetA
       
   705 	#define ORD_WTSet  ORD_WTSetA
       
   706 	#endif /* !UNICODE */
       
   707 #else
       
   708 	BOOL API WTSet(HCTX, LPLOGCONTEXT);
       
   709 	#define ORD_WTSet						62
       
   710 #endif
       
   711 	BOOL API WTExtGet(HCTX, UINT, LPVOID);
       
   712 	#define ORD_WTExtGet					63
       
   713 	BOOL API WTExtSet(HCTX, UINT, LPVOID);
       
   714 	#define ORD_WTExtSet					64
       
   715 	BOOL API WTSave(HCTX, LPVOID);
       
   716 	#define ORD_WTSave						65
       
   717 	HCTX API WTRestore(HWND, LPVOID, BOOL);
       
   718 	#define ORD_WTRestore					66
       
   719 	#endif
       
   720 
       
   721 	#ifndef NOWTQUEUEFXNS
       
   722 	/* ADVANCED PACKET AND QUEUE FUNCTIONS */
       
   723 	int API WTPacketsPeek(HCTX, int, LPVOID);
       
   724 	#define ORD_WTPacketsPeek				80
       
   725 	int API WTDataGet(HCTX, UINT, UINT, int, LPVOID, LPINT);
       
   726 	#define ORD_WTDataGet					81
       
   727 	int API WTDataPeek(HCTX, UINT, UINT, int, LPVOID, LPINT);
       
   728 	#define ORD_WTDataPeek					82
       
   729 #ifndef WIN32
       
   730 /* OBSOLETE IN WIN32! */
       
   731 	DWORD API WTQueuePackets(HCTX);
       
   732 	#define ORD_WTQueuePackets				83
       
   733 #endif
       
   734 	int API WTQueueSizeGet(HCTX);
       
   735 	#define ORD_WTQueueSizeGet				84
       
   736 	BOOL API WTQueueSizeSet(HCTX, int);
       
   737 	#define ORD_WTQueueSizeSet				85
       
   738 	#endif
       
   739 
       
   740 	#ifndef NOWTHMGRFXNS
       
   741 	/* MANAGER HANDLE FUNCTIONS */
       
   742 	HMGR API WTMgrOpen(HWND, UINT);
       
   743 	#define ORD_WTMgrOpen					100
       
   744 	BOOL API WTMgrClose(HMGR);
       
   745 	#define ORD_WTMgrClose					101
       
   746 	#endif
       
   747 
       
   748 	#ifndef NOWTMGRCTXFXNS
       
   749 	/* MANAGER CONTEXT FUNCTIONS */
       
   750 	BOOL API WTMgrContextEnum(HMGR, WTENUMPROC, LPARAM);
       
   751 	#define ORD_WTMgrContextEnum			120
       
   752 	HWND API WTMgrContextOwner(HMGR, HCTX);
       
   753 	#define ORD_WTMgrContextOwner			121
       
   754 	HCTX API WTMgrDefContext(HMGR, BOOL);
       
   755 	#define ORD_WTMgrDefContext				122
       
   756 	HCTX API WTMgrDefContextEx(HMGR, UINT, BOOL); /* 1.1 */
       
   757 	#define ORD_WTMgrDefContextEx			206
       
   758 	#endif
       
   759 	
       
   760 	#ifndef NOWTMGRCONFIGFXNS
       
   761 	/* MANAGER CONFIG BOX  FUNCTIONS */
       
   762 	UINT API WTMgrDeviceConfig(HMGR, UINT, HWND);
       
   763 	#define ORD_WTMgrDeviceConfig			140
       
   764 #ifndef WIN32
       
   765 /* OBSOLETE IN WIN32! */
       
   766 	BOOL API WTMgrConfigReplace(HMGR, BOOL, WTCONFIGPROC);
       
   767 	#define ORD_WTMgrConfigReplace			141
       
   768 #endif
       
   769 	#endif
       
   770 
       
   771 	#ifndef NOWTMGRHOOKFXNS
       
   772 	/* MANAGER PACKET HOOK FUNCTIONS */
       
   773 #ifndef WIN32
       
   774 /* OBSOLETE IN WIN32! */
       
   775 	WTHOOKPROC API WTMgrPacketHook(HMGR, BOOL, int, WTHOOKPROC);
       
   776 	#define ORD_WTMgrPacketHook				160
       
   777 	LRESULT API WTMgrPacketHookDefProc(int, WPARAM, LPARAM, LPWTHOOKPROC);
       
   778 	#define ORD_WTMgrPacketHookDefProc		161
       
   779 #endif
       
   780 	#endif
       
   781 
       
   782 	#ifndef NOWTMGRPREFFXNS
       
   783 	/* MANAGER PREFERENCE DATA FUNCTIONS */
       
   784 	BOOL API WTMgrExt(HMGR, UINT, LPVOID);
       
   785 	#define ORD_WTMgrExt					180
       
   786 	BOOL API WTMgrCsrEnable(HMGR, UINT, BOOL);
       
   787 	#define ORD_WTMgrCsrEnable				181
       
   788 	BOOL API WTMgrCsrButtonMap(HMGR, UINT, LPBYTE, LPBYTE);
       
   789 	#define ORD_WTMgrCsrButtonMap			182
       
   790 	BOOL API WTMgrCsrPressureBtnMarks(HMGR, UINT, DWORD, DWORD);
       
   791 	#define ORD_WTMgrCsrPressureBtnMarks	183
       
   792 	BOOL API WTMgrCsrPressureResponse(HMGR, UINT, UINT FAR *, UINT FAR *);
       
   793 	#define ORD_WTMgrCsrPressureResponse	184
       
   794 	BOOL API WTMgrCsrExt(HMGR, UINT, UINT, LPVOID);
       
   795 	#define ORD_WTMgrCsrExt					185
       
   796 	#endif
       
   797 
       
   798 /* Win32 replacements for non-portable functions. */
       
   799 	#ifndef NOWTQUEUEFXNS
       
   800 	/* ADVANCED PACKET AND QUEUE FUNCTIONS */
       
   801 	BOOL API WTQueuePacketsEx(HCTX, UINT FAR *, UINT FAR *);
       
   802 	#define ORD_WTQueuePacketsEx			200
       
   803 	#endif
       
   804 
       
   805 	#ifndef NOWTMGRCONFIGFXNS
       
   806 	/* MANAGER CONFIG BOX  FUNCTIONS */
       
   807 #ifdef WIN32
       
   808 	BOOL API WTMgrConfigReplaceExA(HMGR, BOOL, LPSTR, LPSTR);
       
   809 	#define ORD_WTMgrConfigReplaceExA		202
       
   810 	BOOL API WTMgrConfigReplaceExW(HMGR, BOOL, LPWSTR, LPSTR);
       
   811 	#define ORD_WTMgrConfigReplaceExW		1202
       
   812 	#ifdef UNICODE
       
   813 	#define WTMgrConfigReplaceEx  WTMgrConfigReplaceExW
       
   814 	#define ORD_WTMgrConfigReplaceEx  ORD_WTMgrConfigReplaceExW
       
   815 	#else
       
   816 	#define WTMgrConfigReplaceEx  WTMgrConfigReplaceExA
       
   817 	#define ORD_WTMgrConfigReplaceEx  ORD_WTMgrConfigReplaceExA
       
   818 	#endif /* !UNICODE */
       
   819 #else
       
   820 	BOOL API WTMgrConfigReplaceEx(HMGR, BOOL, LPSTR, LPSTR);
       
   821 	#define ORD_WTMgrConfigReplaceEx		202
       
   822 #endif
       
   823 	#endif
       
   824 
       
   825 	#ifndef NOWTMGRHOOKFXNS
       
   826 	/* MANAGER PACKET HOOK FUNCTIONS */
       
   827 #ifdef WIN32
       
   828 	HWTHOOK API WTMgrPacketHookExA(HMGR, int, LPSTR, LPSTR);
       
   829 	#define ORD_WTMgrPacketHookExA			203
       
   830 	HWTHOOK API WTMgrPacketHookExW(HMGR, int, LPWSTR, LPSTR);
       
   831 	#define ORD_WTMgrPacketHookExW			1203
       
   832 	#ifdef UNICODE
       
   833 	#define WTMgrPacketHookEx  WTMgrPacketHookExW
       
   834 	#define ORD_WTMgrPacketHookEx  ORD_WTMgrPacketHookExW
       
   835 	#else
       
   836 	#define WTMgrPacketHookEx  WTMgrPacketHookExA
       
   837 	#define ORD_WTMgrPacketHookEx  ORD_WTMgrPacketHookExA
       
   838 	#endif /* !UNICODE */
       
   839 #else
       
   840 	HWTHOOK API WTMgrPacketHookEx(HMGR, int, LPSTR, LPSTR);
       
   841 	#define ORD_WTMgrPacketHookEx			203
       
   842 #endif
       
   843 	BOOL API WTMgrPacketUnhook(HWTHOOK);
       
   844 	#define ORD_WTMgrPacketUnhook			204
       
   845 	LRESULT API WTMgrPacketHookNext(HWTHOOK, int, WPARAM, LPARAM);
       
   846 	#define ORD_WTMgrPacketHookNext			205
       
   847 	#endif
       
   848 
       
   849 	#ifndef NOWTMGRPREFFXNS
       
   850 	/* MANAGER PREFERENCE DATA FUNCTIONS */
       
   851 	BOOL API WTMgrCsrPressureBtnMarksEx(HMGR, UINT, UINT FAR *, UINT FAR *);
       
   852 	#define ORD_WTMgrCsrPressureBtnMarksEx	201
       
   853 	#endif
       
   854 
       
   855 
       
   856 
       
   857 #endif
       
   858 
       
   859 #ifdef __cplusplus
       
   860 }
       
   861 #endif	/* __cplusplus */
       
   862 
       
   863 #endif /* #define _INC_WINTAB */
       
   864