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