Mercurial > sdl-ios-xcode
comparison src/video/win32/wactab/pktdef.h @ 2724:0e2b65f32298
Added Wacom API headers.
FIXME: Dynamically load the Wacom API functions from wintab32.dll
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Tue, 26 Aug 2008 05:26:28 +0000 |
parents | |
children | f23ebf1ddac4 |
comparison
equal
deleted
inserted
replaced
2723:911db724ea24 | 2724:0e2b65f32298 |
---|---|
1 /* -------------------------------- pktdef.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 | |
12 How to use pktdef.h: | |
13 | |
14 1. Include wintab.h | |
15 2. if using just one packet format: | |
16 a. Define PACKETDATA and PACKETMODE as or'ed combinations of WTPKT bits | |
17 (use the PK_* identifiers). | |
18 b. Include pktdef.h. | |
19 c. The generated structure typedef will be called PACKET. Use PACKETDATA | |
20 and PACKETMODE to fill in the LOGCONTEXT structure. | |
21 3. If using multiple packet formats, for each one: | |
22 a. Define PACKETNAME. Its text value will be a prefix for this packet's | |
23 parameters and names. | |
24 b. Define <PACKETNAME>PACKETDATA and <PACKETNAME>PACKETMODE similar to | |
25 2.a. above. | |
26 c. Include pktdef.h. | |
27 d. The generated structure typedef will be called | |
28 <PACKETNAME>PACKET. Compare with 2.c. above and example #2 below. | |
29 4. If using extension packet data, do the following additional steps | |
30 for each extension: | |
31 a. Before including pktdef.h, define <PACKETNAME>PACKET<EXTENSION> | |
32 as either PKEXT_ABSOLUTE or PKEXT_RELATIVE. | |
33 b. The generated structure typedef will contain a field for the | |
34 extension data. | |
35 c. Scan the WTI_EXTENSION categories to find the extension's | |
36 packet mask bit. | |
37 d. OR the packet mask bit with <PACKETNAME>PACKETDATA and use the | |
38 result in the lcPktData field of the LOGCONTEXT structure. | |
39 e. If <PACKETNAME>PACKET<EXTENSION> was PKEXT_RELATIVE, OR the | |
40 packet mask bit with <PACKETNAME>PACKETMODE and use the result | |
41 in the lcPktMode field of the LOGCONTEXT structure. | |
42 | |
43 | |
44 Example #1. -- single packet format | |
45 | |
46 #include <wintab.h> | |
47 #define PACKETDATA PK_X | PK_Y | PK_BUTTONS /@ x, y, buttons @/ | |
48 #define PACKETMODE PK_BUTTONS /@ buttons relative mode @/ | |
49 #include <pktdef.h> | |
50 ... | |
51 lc.lcPktData = PACKETDATA; | |
52 lc.lcPktMode = PACKETMODE; | |
53 | |
54 Example #2. -- multiple formats | |
55 | |
56 #include <wintab.h> | |
57 #define PACKETNAME MOE | |
58 #define MOEPACKETDATA PK_X | PK_Y | PK_BUTTONS /@ x, y, buttons @/ | |
59 #define MOEPACKETMODE PK_BUTTONS /@ buttons relative mode @/ | |
60 #include <pktdef.h> | |
61 #define PACKETNAME LARRY | |
62 #define LARRYPACKETDATA PK_Y | PK_Z | PK_BUTTONS /@ y, z, buttons @/ | |
63 #define LARRYPACKETMODE PK_BUTTONS /@ buttons relative mode @/ | |
64 #include <pktdef.h> | |
65 #define PACKETNAME CURLY | |
66 #define CURLYPACKETDATA PK_X | PK_Z | PK_BUTTONS /@ x, z, buttons @/ | |
67 #define CURLYPACKETMODE PK_BUTTONS /@ buttons relative mode @/ | |
68 #include <pktdef.h> | |
69 ... | |
70 lcMOE.lcPktData = MOEPACKETDATA; | |
71 lcMOE.lcPktMode = MOEPACKETMODE; | |
72 ... | |
73 lcLARRY.lcPktData = LARRYPACKETDATA; | |
74 lcLARRY.lcPktMode = LARRYPACKETMODE; | |
75 ... | |
76 lcCURLY.lcPktData = CURLYPACKETDATA; | |
77 lcCURLY.lcPktMode = CURLYPACKETMODE; | |
78 | |
79 Example #3. -- extension packet data "XFOO". | |
80 | |
81 #include <wintab.h> | |
82 #define PACKETDATA PK_X | PK_Y | PK_BUTTONS /@ x, y, buttons @/ | |
83 #define PACKETMODE PK_BUTTONS /@ buttons relative mode @/ | |
84 #define PACKETXFOO PKEXT_ABSOLUTE /@ XFOO absolute mode @/ | |
85 #include <pktdef.h> | |
86 ... | |
87 UINT ScanExts(UINT wTag) | |
88 { | |
89 UINT i; | |
90 UINT wScanTag; | |
91 | |
92 /@ scan for wTag's info category. @/ | |
93 for (i = 0; WTInfo(WTI_EXTENSIONS + i, EXT_TAG, &wScanTag); i++) { | |
94 if (wTag == wScanTag) { | |
95 /@ return category offset from WTI_EXTENSIONS. @/ | |
96 return i; | |
97 } | |
98 } | |
99 /@ return error code. @/ | |
100 return 0xFFFF; | |
101 } | |
102 ... | |
103 lc.lcPktData = PACKETDATA; | |
104 lc.lcPktMode = PACKETMODE; | |
105 #ifdef PACKETXFOO | |
106 categoryXFOO = ScanExts(WTX_XFOO); | |
107 WTInfo(WTI_EXTENSIONS + categoryXFOO, EXT_MASK, &maskXFOO); | |
108 lc.lcPktData |= maskXFOO; | |
109 #if PACKETXFOO == PKEXT_RELATIVE | |
110 lc.lcPktMode |= maskXFOO; | |
111 #endif | |
112 #endif | |
113 WTOpen(hWnd, &lc, TRUE); | |
114 | |
115 | |
116 ------------------------------------------------------------------------------*/ | |
117 #ifdef __cplusplus | |
118 extern "C" { | |
119 #endif /* __cplusplus */ | |
120 | |
121 #ifndef PACKETNAME | |
122 /* if no packet name prefix */ | |
123 #define __PFX(x) x | |
124 #define __IFX(x,y) x ## y | |
125 #else | |
126 /* add prefixes and infixes to packet format names */ | |
127 #define __PFX(x) __PFX2(PACKETNAME,x) | |
128 #define __PFX2(p,x) __PFX3(p,x) | |
129 #define __PFX3(p,x) p ## x | |
130 #define __IFX(x,y) __IFX2(x,PACKETNAME,y) | |
131 #define __IFX2(x,i,y) __IFX3(x,i,y) | |
132 #define __IFX3(x,i,y) x ## i ## y | |
133 #endif | |
134 | |
135 #define __SFX2(x,s) __SFX3(x,s) | |
136 #define __SFX3(x,s) x ## s | |
137 | |
138 #define __TAG __IFX(tag,PACKET) | |
139 #define __TYPES __PFX(PACKET), * __IFX(P,PACKET), NEAR * __IFX(NP,PACKET), \ | |
140 FAR * __IFX(LP,PACKET) | |
141 | |
142 #define __DATA (__PFX(PACKETDATA)) | |
143 #define __MODE (__PFX(PACKETMODE)) | |
144 #define __EXT(x) __SFX2(__PFX(PACKET),x) | |
145 | |
146 | |
147 typedef struct __TAG { | |
148 #if (__DATA & PK_CONTEXT) | |
149 HCTX pkContext; | |
150 #endif | |
151 #if (__DATA & PK_STATUS) | |
152 UINT pkStatus; | |
153 #endif | |
154 #if (__DATA & PK_TIME) | |
155 DWORD pkTime; | |
156 #endif | |
157 #if (__DATA & PK_CHANGED) | |
158 WTPKT pkChanged; | |
159 #endif | |
160 #if (__DATA & PK_SERIAL_NUMBER) | |
161 UINT pkSerialNumber; | |
162 #endif | |
163 #if (__DATA & PK_CURSOR) | |
164 UINT pkCursor; | |
165 #endif | |
166 #if (__DATA & PK_BUTTONS) | |
167 DWORD pkButtons; | |
168 #endif | |
169 #if (__DATA & PK_X) | |
170 LONG pkX; | |
171 #endif | |
172 #if (__DATA & PK_Y) | |
173 LONG pkY; | |
174 #endif | |
175 #if (__DATA & PK_Z) | |
176 LONG pkZ; | |
177 #endif | |
178 #if (__DATA & PK_NORMAL_PRESSURE) | |
179 #if (__MODE & PK_NORMAL_PRESSURE) | |
180 /* relative */ | |
181 int pkNormalPressure; | |
182 #else | |
183 /* absolute */ | |
184 UINT pkNormalPressure; | |
185 #endif | |
186 #endif | |
187 #if (__DATA & PK_TANGENT_PRESSURE) | |
188 #if (__MODE & PK_TANGENT_PRESSURE) | |
189 /* relative */ | |
190 int pkTangentPressure; | |
191 #else | |
192 /* absolute */ | |
193 UINT pkTangentPressure; | |
194 #endif | |
195 #endif | |
196 #if (__DATA & PK_ORIENTATION) | |
197 ORIENTATION pkOrientation; | |
198 #endif | |
199 #if (__DATA & PK_ROTATION) | |
200 ROTATION pkRotation; /* 1.1 */ | |
201 #endif | |
202 | |
203 #ifndef NOWTEXTENSIONS | |
204 /* extensions begin here. */ | |
205 #if (__EXT(FKEYS) == PKEXT_RELATIVE) || (__EXT(FKEYS) == PKEXT_ABSOLUTE) | |
206 UINT pkFKeys; | |
207 #endif | |
208 #if (__EXT(TILT) == PKEXT_RELATIVE) || (__EXT(TILT) == PKEXT_ABSOLUTE) | |
209 TILT pkTilt; | |
210 #endif | |
211 #if (__EXT(EXPKEYS) == PKEXT_RELATIVE) || (__EXT(EXPKEYS) == PKEXT_ABSOLUTE) | |
212 WORD pkExpKeys[4]; /* 1.3 */ | |
213 #endif | |
214 #endif | |
215 | |
216 } __TYPES ; | |
217 | |
218 #undef PACKETNAME | |
219 #undef __TAG | |
220 #undef __TAG2 | |
221 #undef __TYPES | |
222 #undef __TYPES2 | |
223 #undef __DATA | |
224 #undef __MODE | |
225 #undef __PFX | |
226 #undef __PFX2 | |
227 #undef __PFX3 | |
228 #undef __IFX | |
229 #undef __IFX2 | |
230 #undef __IFX3 | |
231 #undef __SFX2 | |
232 #undef __SFX3 | |
233 | |
234 #ifdef __cplusplus | |
235 } | |
236 #endif /* __cplusplus */ |