oleaut32: Add a test for loading/saving an empty picture.
[wine] / dlls / wintab.dll16 / wintab.c
1 /*
2  * Tablet Win16
3  *
4  * Copyright 2002 Patrik Stridvall
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20
21 #include "config.h"
22
23 #include <stdarg.h>
24
25 #include "windef.h"
26 #include "winbase.h"
27
28 #include "wintab.h"
29
30 #include "wine/windef16.h"
31 #include "wine/debug.h"
32
33 WINE_DEFAULT_DEBUG_CHANNEL(wintab);
34
35 /**********************************************************************/
36
37 #define DECLARE_HANDLE16(a) \
38         typedef HANDLE16 a##16; \
39         typedef a##16 *P##a##16; \
40         typedef a##16 *NP##a##16; \
41         typedef a##16 *LP##a##16
42
43 DECLARE_HANDLE16(HMGR);     /* manager handle */
44 DECLARE_HANDLE16(HCTX);     /* context handle */
45 DECLARE_HANDLE16(HWTHOOK);  /* hook handle */
46
47 /**********************************************************************/
48
49 typedef struct tagLOGCONTEXT16 {
50     char    lcName[LCNAMELEN];
51     UINT16  lcOptions;
52     UINT16  lcStatus;
53     UINT16  lcLocks;
54     UINT16  lcMsgBase;
55     UINT16  lcDevice;
56     UINT16  lcPktRate;
57     WTPKT   lcPktData;
58     WTPKT   lcPktMode;
59     WTPKT   lcMoveMask;
60     DWORD   lcBtnDnMask;
61     DWORD   lcBtnUpMask;
62     LONG    lcInOrgX;
63     LONG    lcInOrgY;
64     LONG    lcInOrgZ;
65     LONG    lcInExtX;
66     LONG    lcInExtY;
67     LONG    lcInExtZ;
68     LONG    lcOutOrgX;
69     LONG    lcOutOrgY;
70     LONG    lcOutOrgZ;
71     LONG    lcOutExtX;
72     LONG    lcOutExtY;
73     LONG    lcOutExtZ;
74     FIX32   lcSensX;
75     FIX32   lcSensY;
76     FIX32   lcSensZ;
77     BOOL16  lcSysMode;
78     INT16   lcSysOrgX;
79     INT16   lcSysOrgY;
80     INT16   lcSysExtX;
81     INT16   lcSysExtY;
82     FIX32   lcSysSensX;
83     FIX32   lcSysSensY;
84 } LOGCONTEXT16, *PLOGCONTEXT16, *NPLOGCONTEXT16, *LPLOGCONTEXT16;
85
86 /**********************************************************************/
87
88 typedef BOOL16 (WINAPI * WTENUMPROC16)(HCTX16, LPARAM);  /* changed CALLBACK->WINAPI, 1.1 */
89 typedef BOOL16 (WINAPI * WTCONFIGPROC16)(HCTX16, HWND16);
90 typedef LRESULT (WINAPI * WTHOOKPROC16)(INT16, WPARAM16, LPARAM);
91 typedef WTHOOKPROC16 *LPWTHOOKPROC16;
92
93 /***********************************************************************
94  *              WTInfo (WINTAB.20)
95  */
96 UINT16 WINAPI WTInfo16(UINT16 wCategory, UINT16 nIndex, LPVOID lpOutput)
97 {
98     FIXME("(%hu, %hu, %p): stub\n", wCategory, nIndex, lpOutput);
99
100     return 0;
101 }
102
103 /***********************************************************************
104  *              WTOpen (WINTAB.21)
105  */
106 HCTX16 WINAPI WTOpen16(HWND16 hWnd, LPLOGCONTEXT16 lpLogCtx, BOOL16 fEnable)
107 {
108     FIXME("(0x%04hx, %p, %hu): stub\n", hWnd, lpLogCtx, fEnable);
109
110     return 0;
111 }
112
113 /***********************************************************************
114  *              WTClose (WINTAB.22)
115  */
116 BOOL16 WINAPI WTClose16(HCTX16 hCtx)
117 {
118     FIXME("(0x%04hx): stub\n", hCtx);
119
120     return TRUE;
121 }
122
123 /***********************************************************************
124  *              WTPacketsGet (WINTAB.23)
125  */
126 INT16 WINAPI WTPacketsGet16(HCTX16 hCtx, INT16 cMaxPkts, LPVOID lpPkts)
127 {
128     FIXME("(0x%04hx, %hd, %p): stub\n", hCtx, cMaxPkts, lpPkts);
129
130     return 0;
131 }
132
133 /***********************************************************************
134  *              WTPacket (WINTAB.24)
135  */
136 BOOL16 WINAPI WTPacket16(HCTX16 hCtx, UINT16 wSerial, LPVOID lpPkt)
137 {
138     FIXME("(0x%04hx, %hd, %p): stub\n", hCtx, wSerial, lpPkt);
139
140     return FALSE;
141 }
142
143 /***********************************************************************
144  *              WTEnable (WINTAB.40)
145  */
146 BOOL16 WINAPI WTEnable16(HCTX16 hCtx, BOOL16 fEnable)
147 {
148     FIXME("(0x%04hx, %hu): stub\n", hCtx, fEnable);
149
150     return FALSE;
151 }
152
153 /***********************************************************************
154  *              WTOverlap (WINTAB.41)
155  */
156 BOOL16 WINAPI WTOverlap16(HCTX16 hCtx, BOOL16 fToTop)
157 {
158     FIXME("(0x%04hx, %hu): stub\n", hCtx, fToTop);
159
160     return FALSE;
161 }
162
163 /***********************************************************************
164  *              WTConfig (WINTAB.60)
165  */
166 BOOL16 WINAPI WTConfig16(HCTX16 hCtx, HWND16 hWnd)
167 {
168     FIXME("(0x%04hx, 0x%04hx): stub\n", hCtx, hWnd);
169
170     return FALSE;
171 }
172
173 /***********************************************************************
174  *              WTGet (WINTAB.61)
175  */
176 BOOL16 WINAPI WTGet16(HCTX16 hCtx, LPLOGCONTEXT16 lpLogCtx)
177 {
178     FIXME("(0x%04hx, %p): stub\n", hCtx, lpLogCtx);
179
180     return FALSE;
181 }
182
183 /***********************************************************************
184  *              WTSet (WINTAB.62)
185  */
186 BOOL16 WINAPI WTSet16(HCTX16 hCtx, LPLOGCONTEXT16 lpLogCtx)
187 {
188     FIXME("(0x%04hx, %p): stub\n", hCtx, lpLogCtx);
189
190     return FALSE;
191 }
192
193 /***********************************************************************
194  *              WTExtGet (WINTAB.63)
195  */
196 BOOL16 WINAPI WTExtGet16(HCTX16 hCtx, UINT16 wExt, LPVOID lpData)
197 {
198     FIXME("(0x%04hx, %hu, %p): stub\n", hCtx, wExt, lpData);
199
200     return FALSE;
201 }
202
203 /***********************************************************************
204  *              WTExtSet (WINTAB.64)
205  */
206 BOOL16 WINAPI WTExtSet16(HCTX16 hCtx, UINT16 wExt, LPVOID lpData)
207 {
208     FIXME("(0x%04hx, %hu, %p): stub\n", hCtx, wExt, lpData);
209
210     return FALSE;
211 }
212
213 /***********************************************************************
214  *              WTSave (WINTAB.65)
215  */
216 BOOL16 WINAPI WTSave16(HCTX16 hCtx, LPVOID lpSaveInfo)
217 {
218     FIXME("(0x%04hx, %p): stub\n", hCtx, lpSaveInfo);
219
220     return FALSE;
221 }
222
223 /***********************************************************************
224  *              WTRestore (WINTAB.66)
225  */
226 HCTX16 WINAPI WTRestore16(HWND16 hWnd, LPVOID lpSaveInfo, BOOL16 fEnable)
227 {
228     FIXME("(0x%04hx, %p, %hu): stub\n", hWnd, lpSaveInfo, fEnable);
229
230     return 0;
231 }
232
233 /***********************************************************************
234  *              WTPacketsPeek (WINTAB.80)
235  */
236 INT16 WINAPI WTPacketsPeek16(HCTX16 hCtx, INT16 cMaxPkts, LPVOID lpPkts)
237 {
238     FIXME("(0x%04hx, %hd, %p): stub\n", hCtx, cMaxPkts, lpPkts);
239
240     return 0;
241 }
242
243 /***********************************************************************
244  *              WTDataGet (WINTAB.81)
245  */
246 INT16 WINAPI WTDataGet16(HCTX16 hCtx, UINT16 wBegin, UINT16 wEnd,
247                          INT16 cMaxPkts, LPVOID lpPkts, LPINT16 lpNPkts)
248 {
249     FIXME("(0x%04hx, %hu, %hu, %hd, %p, %p): stub\n",
250           hCtx, wBegin, wEnd, cMaxPkts, lpPkts, lpNPkts);
251
252     return 0;
253 }
254
255 /***********************************************************************
256  *              WTDataPeek (WINTAB.82)
257  */
258 INT16 WINAPI WTDataPeek16(HCTX16 hCtx, UINT16 wBegin, UINT16 wEnd,
259                           INT16 cMaxPkts, LPVOID lpPkts, LPINT16 lpNPkts)
260 {
261     FIXME("(0x%04hx, %hu, %hu, %hd, %p, %p): stub\n",
262           hCtx, wBegin, wEnd, cMaxPkts, lpPkts, lpNPkts);
263
264     return 0;
265 }
266
267 /***********************************************************************
268  *              WTQueuePackets (WINTAB.83)
269  *
270  * OBSOLETE IN WIN32!
271  */
272 DWORD WINAPI WTQueuePackets16(HCTX16 hCtx)
273 {
274     FIXME("(0x%04hx): stub\n", hCtx);
275
276     return 0;
277 }
278
279 /***********************************************************************
280  *              WTQueuePacketsEx (WINTAB.200)
281  */
282 BOOL16 WINAPI WTQueuePacketsEx16(HCTX16 hCtx, UINT16 *lpOld, UINT16 *lpNew)
283 {
284     FIXME("(0x%04hx, %p, %p): stub\n", hCtx, lpOld, lpNew);
285
286     return TRUE;
287 }
288
289 /***********************************************************************
290  *              WTQueueSizeGet (WINTAB.84)
291  */
292 INT16 WINAPI WTQueueSizeGet16(HCTX16 hCtx)
293 {
294     FIXME("(0x%04hx): stub\n", hCtx);
295
296     return 0;
297 }
298
299 /***********************************************************************
300  *              WTQueueSizeSet (WINTAB.85)
301  */
302 BOOL16 WINAPI WTQueueSizeSet16(HCTX16 hCtx, INT16 nPkts)
303 {
304     FIXME("(0x%04hx, %hd): stub\n", hCtx, nPkts);
305
306     return FALSE;
307 }
308
309 /***********************************************************************
310  *              WTMgrOpen (WINTAB.100)
311  */
312 HMGR16 WINAPI WTMgrOpen16(HWND16 hWnd, UINT16 wMsgBase)
313 {
314     FIXME("(0x%04hx, %hu): stub\n", hWnd, wMsgBase);
315
316     return 0;
317 }
318
319 /***********************************************************************
320  *              WTMgrClose (WINTAB.101)
321  */
322 BOOL16 WINAPI WTMgrClose16(HMGR16 hMgr)
323 {
324     FIXME("(0x%04hx): stub\n", hMgr);
325
326     return FALSE;
327 }
328
329 /***********************************************************************
330  *              WTMgrContextEnum (WINTAB.120)
331  */
332 BOOL16 WINAPI WTMgrContextEnum16(HMGR16 hMgr, WTENUMPROC16 lpEnumFunc, LPARAM lParam)
333 {
334     FIXME("(0x%04hx, %p, %ld): stub\n", hMgr, lpEnumFunc, lParam);
335
336     return FALSE;
337 }
338
339 /***********************************************************************
340  *              WTMgrContextOwner (WINTAB.121)
341  */
342 HWND16 WINAPI WTMgrContextOwner16(HMGR16 hMgr, HCTX16 hCtx)
343 {
344     FIXME("(0x%04hx, 0x%04hx): stub\n", hMgr, hCtx);
345
346     return 0;
347 }
348
349 /***********************************************************************
350  *              WTMgrDefContext (WINTAB.122)
351  */
352 HCTX16 WINAPI WTMgrDefContext16(HMGR16 hMgr, BOOL16 fSystem)
353 {
354     FIXME("(0x%04hx, %hu): stub\n", hMgr, fSystem);
355
356     return 0;
357 }
358
359 /***********************************************************************
360  *              WTMgrDefContextEx (WINTAB.206)
361  *
362  * 1.1
363  */
364 HCTX16 WINAPI WTMgrDefContextEx16(HMGR16 hMgr, UINT16 wDevice, BOOL16 fSystem)
365 {
366     FIXME("(0x%04hx, %hu, %hu): stub\n", hMgr, wDevice, fSystem);
367
368     return 0;
369 }
370
371 /***********************************************************************
372  *              WTMgrDeviceConfig (WINTAB.140)
373  */
374 UINT16 WINAPI WTMgrDeviceConfig16(HMGR16 hMgr, UINT16 wDevice, HWND16 hWnd)
375 {
376     FIXME("(0x%04hx, %hu, 0x%04hx): stub\n", hMgr, wDevice, hWnd);
377
378     return 0;
379 }
380
381 /***********************************************************************
382  *              WTMgrConfigReplace (WINTAB.141)
383  *
384  * OBSOLETE IN WIN32!
385  */
386 BOOL16 WINAPI WTMgrConfigReplace16(HMGR16 hMgr, BOOL16 fInstall,
387                                    WTCONFIGPROC16 lpConfigProc)
388 {
389     FIXME("(0x%04hx, %hu, %p): stub\n", hMgr, fInstall, lpConfigProc);
390
391     return FALSE;
392 }
393
394 /***********************************************************************
395  *              WTMgrConfigReplaceEx (WINTAB.202)
396  */
397 BOOL16 WINAPI WTMgrConfigReplaceEx16(HMGR16 hMgr, BOOL16 fInstall,
398                                      LPSTR lpszModule, LPSTR lpszCfgProc)
399 {
400     FIXME("(0x%04hx, %hu, %s, %s): stub\n", hMgr, fInstall,
401           debugstr_a(lpszModule), debugstr_a(lpszCfgProc));
402
403     return FALSE;
404 }
405
406 /***********************************************************************
407  *              WTMgrPacketHook (WINTAB.160)
408  *
409  * OBSOLETE IN WIN32!
410  */
411 WTHOOKPROC16 WINAPI WTMgrPacketHook16(HMGR16 hMgr, BOOL16 fInstall,
412                                       INT16 nType, WTHOOKPROC16 lpFunc)
413 {
414     FIXME("(0x%04hx, %hu, %hd, %p): stub\n", hMgr, fInstall, nType, lpFunc);
415
416     return 0;
417 }
418
419 /***********************************************************************
420  *              WTMgrPacketHookEx (WINTAB.203)
421  */
422 HWTHOOK16 WINAPI WTMgrPacketHookEx16(HMGR16 hMgr, INT16 nType,
423                                      LPSTR lpszModule, LPSTR lpszHookProc)
424 {
425     FIXME("(0x%04hx, %hd, %s, %s): stub\n", hMgr, nType,
426           debugstr_a(lpszModule), debugstr_a(lpszHookProc));
427
428     return 0;
429 }
430
431 /***********************************************************************
432  *              WTMgrPacketUnhook (WINTAB.204)
433  */
434 BOOL16 WINAPI WTMgrPacketUnhook16(HWTHOOK16 hHook)
435 {
436     FIXME("(0x%04hx): stub\n", hHook);
437
438     return FALSE;
439 }
440
441 /***********************************************************************
442  *              WTMgrPacketHookDefProc (WINTAB.161)
443  *
444  * OBSOLETE IN WIN32!
445  */
446 LRESULT WINAPI WTMgrPacketHookDefProc16(INT16 nCode, WPARAM16 wParam,
447                                         LPARAM lParam, LPWTHOOKPROC16 lplpFunc)
448 {
449     FIXME("(%hd, %hu, %lu, %p): stub\n", nCode, wParam, lParam, lplpFunc);
450
451     return 0;
452 }
453
454 /***********************************************************************
455  *              WTMgrPacketHookNext (WINTAB.205)
456  */
457 LRESULT WINAPI WTMgrPacketHookNext16(HWTHOOK16 hHook, INT16 nCode,
458                                      WPARAM16 wParam, LPARAM lParam)
459 {
460     FIXME("(0x%04hx, %hd, %hu, %lu): stub\n", hHook, nCode, wParam, lParam);
461
462     return 0;
463 }
464
465
466 /***********************************************************************
467  *              WTMgrExt (WINTAB.180)
468  */
469 BOOL16 WINAPI WTMgrExt16(HMGR16 hMgr, UINT16 wExt, LPVOID lpData)
470 {
471     FIXME("(0x%04hx, %hu, %p): stub\n", hMgr, wExt, lpData);
472
473     return FALSE;
474 }
475
476 /***********************************************************************
477  *              WTMgrCsrEnable (WINTAB.181)
478  */
479 BOOL16 WINAPI WTMgrCsrEnable16(HMGR16 hMgr, UINT16 wCursor, BOOL16 fEnable)
480 {
481     FIXME("(0x%04hx, %hu, %hu): stub\n", hMgr, wCursor, fEnable);
482
483     return FALSE;
484 }
485
486 /***********************************************************************
487  *              WTMgrCsrButtonMap (WINTAB.182)
488  */
489 BOOL16 WINAPI WTMgrCsrButtonMap16(HMGR16 hMgr, UINT16 wCursor,
490                                   LPBYTE lpLogBtns, LPBYTE lpSysBtns)
491 {
492     FIXME("(0x%04hx, %hu, %p, %p): stub\n", hMgr, wCursor, lpLogBtns, lpSysBtns);
493
494     return FALSE;
495 }
496
497 /***********************************************************************
498  *              WTMgrCsrPressureBtnMarks (WINTAB.183)
499  *
500  * OBSOLETE IN WIN32! (But only according to documentation)
501  */
502 BOOL16 WINAPI WTMgrCsrPressureBtnMarks16(HMGR16 hMgr, UINT16 wCsr,
503                                          DWORD dwNMarks, DWORD dwTMarks)
504 {
505     FIXME("(0x%04hx, %hu, %u, %u): stub\n", hMgr, wCsr, dwNMarks, dwTMarks);
506
507     return FALSE;
508 }
509
510 /***********************************************************************
511  *              WTMgrCsrPressureBtnMarksEx (WINTAB.201)
512  */
513 BOOL16 WINAPI WTMgrCsrPressureBtnMarksEx16(HMGR16 hMgr, UINT16 wCsr,
514                                            UINT16 *lpNMarks, UINT16 *lpTMarks)
515 {
516     FIXME("(0x%04hx, %hu, %p, %p): stub\n", hMgr, wCsr, lpNMarks, lpTMarks);
517
518     return FALSE;
519 }
520
521 /***********************************************************************
522  *              WTMgrCsrPressureResponse (WINTAB.184)
523  */
524 BOOL16 WINAPI WTMgrCsrPressureResponse16(HMGR16 hMgr, UINT16 wCsr,
525                                          UINT16 *lpNResp, UINT16 *lpTResp)
526 {
527     FIXME("(0x%04hx, %hu, %p, %p): stub\n", hMgr, wCsr, lpNResp, lpTResp);
528
529     return FALSE;
530 }
531
532 /***********************************************************************
533  *              WTMgrCsrExt (WINTAB.185)
534  */
535 BOOL16 WINAPI WTMgrCsrExt16(HMGR16 hMgr, UINT16 wCsr, UINT16 wExt, LPVOID lpData)
536 {
537     FIXME("(0x%04hx, %hu, %hu, %p): stub\n", hMgr, wCsr, wExt, lpData);
538
539     return FALSE;
540 }