| /* | |
| * Tablet header | |
| * | |
| * Copyright 2003 CodeWeavers (Aric Stewart) | |
| * | |
| * This library is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU Lesser General Public | |
| * License as published by the Free Software Foundation; either | |
| * version 2.1 of the License, or (at your option) any later version. | |
| * | |
| * This library is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| * Lesser General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Lesser General Public | |
| * License along with this library; if not, write to the Free Software | |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| */ | |
| #ifndef __WINE_WINTAB_INTERNAL_H | |
| #define __WINE_WINTAB_INTERNAL_H | |
| typedef struct tagWTI_INTERFACE_INFO { | |
| CHAR WINTABID[1024]; | |
| /* a copy of the null-terminated tablet hardware identification string | |
| * in the user buffer. This string should include make, model, and | |
| * revision information in user-readable format. | |
| */ | |
| WORD SPECVERSION; | |
| /* the specification version number. The high-order byte contains the | |
| * major version number; the low-order byte contains the minor version | |
| * number. | |
| */ | |
| WORD IMPLVERSION; | |
| /* the implementation version number. The high-order byte contains the | |
| * major version number; the low-order byte contains the minor version | |
| * number. | |
| */ | |
| UINT NDEVICES; | |
| /* the number of devices supported. */ | |
| UINT NCURSORS; | |
| /* the total number of cursor types supported. */ | |
| UINT NCONTEXTS; | |
| /* the number of contexts supported. */ | |
| UINT CTXOPTIONS; | |
| /* flags indicating which context options are supported */ | |
| UINT CTXSAVESIZE; | |
| /* the size of the save information returned from WTSave.*/ | |
| UINT NEXTENSIONS; | |
| /* the number of extension data items supported.*/ | |
| UINT NMANAGERS; | |
| /* the number of manager handles supported.*/ | |
| }WTI_INTERFACE_INFO, *LPWTI_INTERFACE_INFO; | |
| typedef struct tagWTI_STATUS_INFO{ | |
| UINT CONTEXTS; | |
| /* the number of contexts currently open.*/ | |
| UINT SYSCTXS; | |
| /* the number of system contexts currently open.*/ | |
| UINT PKTRATE; | |
| /* the maximum packet report rate currently being received by any | |
| * context, in Hertz. | |
| */ | |
| WTPKT PKTDATA; | |
| /* a mask indicating which packet data items are requested by at | |
| * least one context. | |
| */ | |
| UINT MANAGERS; | |
| /* the number of manager handles currently open.*/ | |
| BOOL SYSTEM; | |
| /* a non-zero value if system pointing is available to the whole | |
| * screen; zero otherwise. | |
| */ | |
| DWORD BUTTONUSE; | |
| /* a button mask indicating the logical buttons whose events are | |
| * requested by at least one context. | |
| */ | |
| DWORD SYSBTNUSE; | |
| /* a button mask indicating which logical buttons are assigned a system | |
| * button function by the current cursor's system button map. | |
| */ | |
| } WTI_STATUS_INFO, *LPWTI_STATUS_INFO; | |
| typedef struct tagWTI_EXTENSIONS_INFO | |
| { | |
| CHAR NAME[256]; | |
| /* a unique, null-terminated string describing the extension.*/ | |
| UINT TAG; | |
| /* a unique identifier for the extension. */ | |
| WTPKT MASK; | |
| /* a mask that can be bitwise OR'ed with WTPKT-type variables to select | |
| * the extension. | |
| */ | |
| UINT SIZE[2]; | |
| /* an array of two UINTs specifying the extension's size within a packet | |
| * (in bytes). The first is for absolute mode; the second is for | |
| * relative mode. | |
| */ | |
| AXIS *AXES; | |
| /* an array of axis descriptions, as needed for the extension. */ | |
| BYTE *DEFAULT; | |
| /* the current global default data, as needed for the extension. This | |
| * data is modified via the WTMgrExt function. | |
| */ | |
| BYTE *DEFCONTEXT; | |
| BYTE *DEFSYSCTX; | |
| /* the current default context-specific data, as needed for the | |
| * extension. The indices identify the digitizing- and system-context | |
| * defaults, respectively. | |
| */ | |
| BYTE *CURSORS; | |
| /* Is the first of one or more consecutive indices, one per cursor type. | |
| * Each returns the current default cursor-specific data, as need for | |
| * the extension. This data is modified via the WTMgrCsrExt function. | |
| */ | |
| } WTI_EXTENSIONS_INFO, *LPWTI_EXTENSIONS_INFO; | |
| typedef struct tagWTPACKET { | |
| HCTX pkContext; | |
| UINT pkStatus; | |
| LONG pkTime; | |
| WTPKT pkChanged; | |
| UINT pkSerialNumber; | |
| UINT pkCursor; | |
| DWORD pkButtons; | |
| DWORD pkX; | |
| DWORD pkY; | |
| DWORD pkZ; | |
| UINT pkNormalPressure; | |
| UINT pkTangentPressure; | |
| ORIENTATION pkOrientation; | |
| ROTATION pkRotation; /* 1.1 */ | |
| } WTPACKET, *LPWTPACKET; | |
| typedef struct tagOPENCONTEXT | |
| { | |
| HCTX handle; | |
| LOGCONTEXTA context; | |
| HWND hwndOwner; | |
| BOOL enabled; | |
| INT ActiveCursor; | |
| INT QueueSize; | |
| INT PacketsQueued; | |
| LPWTPACKET PacketQueue; | |
| struct tagOPENCONTEXT *next; | |
| } OPENCONTEXT, *LPOPENCONTEXT; | |
| int TABLET_PostTabletMessage(LPOPENCONTEXT newcontext, UINT msg, WPARAM wParam, | |
| LPARAM lParam, BOOL send_always); | |
| LPOPENCONTEXT AddPacketToContextQueue(LPWTPACKET packet, HWND hwnd); | |
| LPOPENCONTEXT FindOpenContext(HWND hwnd); | |
| /* X11drv functions */ | |
| extern int (*pLoadTabletInfo)(HWND hwnddefault); | |
| extern int (*pGetCurrentPacket)(LPWTPACKET packet); | |
| extern int (*pAttachEventQueueToTablet)(HWND hOwner); | |
| extern UINT (*pWTInfoA)(UINT wCategory, UINT nIndex, LPVOID lpOutput); | |
| extern HWND hwndDefault; | |
| extern CRITICAL_SECTION csTablet; | |
| #endif /* __WINE_WINTAB_INTERNAL_H */ |