/* * 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 */