diff --git a/reactos/boot/bootdata/packages/reactos.dff b/reactos/boot/bootdata/packages/reactos.dff index 89d4e8b90af..d5c3bc26de8 100644 --- a/reactos/boot/bootdata/packages/reactos.dff +++ b/reactos/boot/bootdata/packages/reactos.dff @@ -437,7 +437,6 @@ dll\win32\wininet\wininet.dll 1 dll\win32\winmm\winmm.dll 1 dll\win32\winspool\winspool.drv 1 dll\win32\winsta\winsta.dll 1 -dll\win32\wintab32\wintab32.dll 1 dll\win32\wlanapi\wlanapi.dll 1 dll\win32\wintrust\wintrust.dll 1 dll\win32\wldap32\wldap32.dll 1 diff --git a/reactos/dll/win32/win32.rbuild b/reactos/dll/win32/win32.rbuild index ca9ffdfc1b9..32fe0e06625 100644 --- a/reactos/dll/win32/win32.rbuild +++ b/reactos/dll/win32/win32.rbuild @@ -589,9 +589,6 @@ - - - diff --git a/reactos/dll/win32/wintab32/context.c b/reactos/dll/win32/wintab32/context.c deleted file mode 100644 index 6b52c081a15..00000000000 --- a/reactos/dll/win32/wintab32/context.c +++ /dev/null @@ -1,1085 +0,0 @@ -/* - * Tablet Context - * - * Copyright 2002 Patrik Stridvall - * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "config.h" -#include -#include -#include - -#include "windef.h" -#include "winerror.h" -#include "winbase.h" -#include "winuser.h" -#include "winnls.h" - -#include "wintab.h" -#include "wintab_internal.h" - -#include "wine/debug.h" - -WINE_DEFAULT_DEBUG_CHANNEL(wintab32); - -/* - * Documentation found at - * http://www.csl.sony.co.jp/projects/ar/restricted/wintabl.html - */ - -static BOOL gLoaded; -static LPOPENCONTEXT gOpenContexts; -static HCTX gTopContext = (HCTX)0xc00; - -static void LOGCONTEXTAtoW(const LOGCONTEXTA *in, LOGCONTEXTW *out) -{ - MultiByteToWideChar(CP_ACP, 0, in->lcName, -1, out->lcName, LCNAMELEN); - out->lcName[LCNAMELEN - 1] = 0; - /* we use the fact that the fields after lcName are the same in LOGCONTEXTA and W */ - memcpy(&out->lcOptions, &in->lcOptions, sizeof(LOGCONTEXTA) - FIELD_OFFSET(LOGCONTEXTA, lcOptions)); -} - -static void LOGCONTEXTWtoA(const LOGCONTEXTW *in, LOGCONTEXTA *out) -{ - WideCharToMultiByte(CP_ACP, 0, in->lcName, LCNAMELEN, out->lcName, LCNAMELEN, NULL, NULL); - out->lcName[LCNAMELEN - 1] = 0; - /* we use the fact that the fields after lcName are the same in LOGCONTEXTA and W */ - memcpy(&out->lcOptions, &in->lcOptions, sizeof(LOGCONTEXTW) - FIELD_OFFSET(LOGCONTEXTW, lcOptions)); -} - -static BOOL is_logcontext_category(UINT wCategory) -{ - return wCategory == WTI_DEFSYSCTX || wCategory == WTI_DEFCONTEXT || wCategory == WTI_DDCTXS; -} - -static BOOL is_string_field(UINT wCategory, UINT nIndex) -{ - if (wCategory == WTI_INTERFACE && nIndex == IFC_WINTABID) - return TRUE; - if (is_logcontext_category(wCategory) && nIndex == CTX_NAME) - return TRUE; - if ((wCategory >= WTI_CURSORS && wCategory <= WTI_CURSORS + 9) && - (nIndex == CSR_NAME || nIndex == CSR_BTNNAMES)) - return TRUE; - if (wCategory == WTI_DEVICES && (nIndex == DVC_NAME || nIndex == DVC_PNPID)) - return TRUE; - return FALSE; -} - -static const char* DUMPBITS(int x) -{ - char buf[200]; - buf[0] = 0; - if (x&PK_CONTEXT) strcat(buf,"PK_CONTEXT "); - if (x&PK_STATUS) strcat(buf, "PK_STATUS "); - if (x&PK_TIME) strcat(buf, "PK_TIME "); - if (x&PK_CHANGED) strcat(buf, "PK_CHANGED "); - if (x&PK_SERIAL_NUMBER) strcat(buf, "PK_SERIAL_NUMBER "); - if (x&PK_CURSOR) strcat(buf, "PK_CURSOR "); - if (x&PK_BUTTONS) strcat(buf, "PK_BUTTONS "); - if (x&PK_X) strcat(buf, "PK_X "); - if (x&PK_Y) strcat(buf, "PK_Y "); - if (x&PK_Z) strcat(buf, "PK_Z "); - if (x&PK_NORMAL_PRESSURE) strcat(buf, "PK_NORMAL_PRESSURE "); - if (x&PK_TANGENT_PRESSURE) strcat(buf, "PK_TANGENT_PRESSURE "); - if (x&PK_ORIENTATION) strcat(buf, "PK_ORIENTATION "); - if (x&PK_ROTATION) strcat(buf, "PK_ROTATION "); - return wine_dbg_sprintf("{%s}",buf); -} - -static inline void DUMPPACKET(WTPACKET packet) -{ - TRACE("pkContext: %p pkStatus: 0x%x pkTime : 0x%x pkChanged: 0x%x pkSerialNumber: 0x%x pkCursor : %i pkButtons: %x pkX: %i pkY: %i pkZ: %i pkNormalPressure: %i pkTangentPressure: %i pkOrientation: (%i,%i,%i) pkRotation: (%i,%i,%i)\n", - packet.pkContext, packet.pkStatus, packet.pkTime, packet.pkChanged, packet.pkSerialNumber, - packet.pkCursor, packet.pkButtons, packet.pkX, packet.pkY, packet.pkZ, - packet.pkNormalPressure, packet.pkTangentPressure, - packet.pkOrientation.orAzimuth, packet.pkOrientation.orAltitude, packet.pkOrientation.orTwist, - packet.pkRotation.roPitch, packet.pkRotation.roRoll, packet.pkRotation.roYaw); -} - -static inline void DUMPCONTEXT(LOGCONTEXTW lc) -{ - TRACE("Name: %s, Options: %x, Status: %x, Locks: %x, MsgBase: %x, " - "Device: %x, PktRate: %x, " - "%x%s, %x%s, %x%s, " - "BtnDnMask: %x, BtnUpMask: %x, " - "InOrgX: %i, InOrgY: %i, InOrgZ: %i, " - "InExtX: %i, InExtY: %i, InExtZ: %i, " - "OutOrgX: %i, OutOrgY: %i, OutOrgZ: %i, " - "OutExtX: %i, OutExtY: %i, OutExtZ: %i, " - "SensX: %i, SensY: %i, SensZ: %i, " - "SysMode: %i, " - "SysOrgX: %i, SysOrgY: %i, " - "SysExtX: %i, SysExtY: %i, " - "SysSensX: %i, SysSensY: %i\n", - wine_dbgstr_w(lc.lcName), lc.lcOptions, lc.lcStatus, lc.lcLocks, lc.lcMsgBase, - lc.lcDevice, lc.lcPktRate, lc.lcPktData, DUMPBITS(lc.lcPktData), - lc.lcPktMode, DUMPBITS(lc.lcPktMode), lc.lcMoveMask, - DUMPBITS(lc.lcMoveMask), lc.lcBtnDnMask, lc.lcBtnUpMask, - lc.lcInOrgX, lc.lcInOrgY, lc.lcInOrgZ, lc.lcInExtX, lc.lcInExtY, - lc.lcInExtZ, lc.lcOutOrgX, lc.lcOutOrgY, lc.lcOutOrgZ, lc.lcOutExtX, - lc.lcOutExtY, lc.lcOutExtZ, lc.lcSensX, lc.lcSensY, lc.lcSensZ, lc.lcSysMode, - lc.lcSysOrgX, lc.lcSysOrgY, lc.lcSysExtX, lc.lcSysExtY, lc.lcSysSensX, - lc.lcSysSensY); -} - - -/* Find an open context given the handle */ -static LPOPENCONTEXT TABLET_FindOpenContext(HCTX hCtx) -{ - LPOPENCONTEXT ptr = gOpenContexts; - while (ptr) - { - if (ptr->handle == hCtx) return ptr; - ptr = ptr->next; - } - return NULL; -} - -static void LoadTablet(void) -{ - TRACE("Initializing the tablet to hwnd %p\n",hwndDefault); - gLoaded= TRUE; - pLoadTabletInfo(hwndDefault); -} - -int TABLET_PostTabletMessage(LPOPENCONTEXT newcontext, UINT msg, WPARAM wParam, - LPARAM lParam, BOOL send_always) -{ - if ((send_always) || (newcontext->context.lcOptions & CXO_MESSAGES)) - { - TRACE("Posting message %x to %p\n",msg, newcontext->hwndOwner); - return PostMessageA(newcontext->hwndOwner, msg, wParam, lParam); - } - return 0; -} - -static inline DWORD ScaleForContext(DWORD In, LONG InOrg, LONG InExt, LONG OutOrg, LONG OutExt) -{ - if (((InExt > 0 )&&(OutExt > 0)) || ((InExt<0) && (OutExt < 0))) - return ((In - InOrg) * abs(OutExt) / abs(InExt)) + OutOrg; - else - return ((abs(InExt) - (In - InOrg))*abs(OutExt) / abs(InExt)) + OutOrg; -} - -LPOPENCONTEXT AddPacketToContextQueue(LPWTPACKET packet, HWND hwnd) -{ - LPOPENCONTEXT ptr=NULL; - - EnterCriticalSection(&csTablet); - - ptr = gOpenContexts; - while (ptr) - { - TRACE("Trying Queue %p (%p %p)\n", ptr->handle, hwnd, ptr->hwndOwner); - - if (ptr->hwndOwner == hwnd) - { - int tgt; - if (!ptr->enabled) - { - ptr = ptr->next; - continue; - } - - tgt = ptr->PacketsQueued; - - packet->pkContext = ptr->handle; - - /* translate packet data to the context */ - - /* Scale as per documentation */ - packet->pkY = ScaleForContext(packet->pkY, ptr->context.lcInOrgY, - ptr->context.lcInExtY, ptr->context.lcOutOrgY, - ptr->context.lcOutExtY); - - packet->pkX = ScaleForContext(packet->pkX, ptr->context.lcInOrgX, - ptr->context.lcInExtX, ptr->context.lcOutOrgX, - ptr->context.lcOutExtX); - - /* flip the Y axis */ - if (ptr->context.lcOutExtY > 0) - packet->pkY = ptr->context.lcOutExtY - packet->pkY; - else if (ptr->context.lcOutExtY < 0) - packet->pkY = abs(ptr->context.lcOutExtY + packet->pkY); - - DUMPPACKET(*packet); - - if (tgt == ptr->QueueSize) - { - TRACE("Queue Overflow %p\n",ptr->handle); - ptr->PacketQueue[tgt-1].pkStatus |= TPS_QUEUE_ERR; - } - else - { - TRACE("Placed in queue %p index %i\n",ptr->handle,tgt); - ptr->PacketQueue[tgt] = *packet; - ptr->PacketsQueued++; - - if (ptr->ActiveCursor != packet->pkCursor) - { - ptr->ActiveCursor = packet->pkCursor; - if (ptr->context.lcOptions & CXO_CSRMESSAGES) - TABLET_PostTabletMessage(ptr, _WT_CSRCHANGE(ptr->context.lcMsgBase), - (WPARAM)packet->pkSerialNumber, (LPARAM)ptr->handle, - FALSE); - } - } - break; - } - ptr = ptr->next; - } - LeaveCriticalSection(&csTablet); - TRACE("Done (%p)\n",ptr); - return ptr; -} - -/* - * Flushes all packets from the queue. - */ -static inline void TABLET_FlushQueue(LPOPENCONTEXT context) -{ - context->PacketsQueued = 0; -} - -static inline int CopyTabletData(LPVOID target, LPVOID src, INT size) -{ - memcpy(target,src,size); - return(size); -} - -static INT TABLET_FindPacket(LPOPENCONTEXT context, UINT wSerial, - LPWTPACKET *pkt) -{ - int loop; - int index = -1; - for (loop = 0; loop < context->PacketsQueued; loop++) - if (context->PacketQueue[loop].pkSerialNumber == wSerial) - { - index = loop; - *pkt = &context->PacketQueue[loop]; - break; - } - - TRACE("%i .. %i\n",context->PacketsQueued,index); - - return index; -} - - -static LPVOID TABLET_CopyPacketData(LPOPENCONTEXT context, LPVOID lpPkt, - LPWTPACKET wtp) -{ - LPBYTE ptr; - - ptr = lpPkt; - TRACE("Packet Bits %s\n",DUMPBITS(context->context.lcPktData)); - - if (context->context.lcPktData & PK_CONTEXT) - ptr+=CopyTabletData(ptr,&wtp->pkContext,sizeof(HCTX)); - if (context->context.lcPktData & PK_STATUS) - ptr+=CopyTabletData(ptr,&wtp->pkStatus,sizeof(UINT)); - if (context->context.lcPktData & PK_TIME) - ptr+=CopyTabletData(ptr,&wtp->pkTime,sizeof(LONG)); - if (context->context.lcPktData & PK_CHANGED) - ptr+=CopyTabletData(ptr,&wtp->pkChanged,sizeof(WTPKT)); - if (context->context.lcPktData & PK_SERIAL_NUMBER) - ptr+=CopyTabletData(ptr,&wtp->pkChanged,sizeof(UINT)); - if (context->context.lcPktData & PK_CURSOR) - ptr+=CopyTabletData(ptr,&wtp->pkCursor,sizeof(UINT)); - if (context->context.lcPktData & PK_BUTTONS) - ptr+=CopyTabletData(ptr,&wtp->pkButtons,sizeof(DWORD)); - if (context->context.lcPktData & PK_X) - ptr+=CopyTabletData(ptr,&wtp->pkX,sizeof(DWORD)); - if (context->context.lcPktData & PK_Y) - ptr+=CopyTabletData(ptr,&wtp->pkY,sizeof(DWORD)); - if (context->context.lcPktData & PK_Z) - ptr+=CopyTabletData(ptr,&wtp->pkZ,sizeof(DWORD)); - if (context->context.lcPktData & PK_NORMAL_PRESSURE) - ptr+=CopyTabletData(ptr,&wtp->pkNormalPressure,sizeof(UINT)); - if (context->context.lcPktData & PK_TANGENT_PRESSURE) - ptr+=CopyTabletData(ptr,&wtp->pkTangentPressure,sizeof(UINT)); - if (context->context.lcPktData & PK_ORIENTATION) - ptr+=CopyTabletData(ptr,&wtp->pkOrientation,sizeof(ORIENTATION)); - if (context->context.lcPktData & PK_ROTATION) - ptr+=CopyTabletData(ptr,&wtp->pkRotation,sizeof(ROTATION)); - - /*TRACE("Copied %i bytes\n",(INT)ptr - (INT)lpPkt); */ - return ptr; -} - -static VOID TABLET_BlankPacketData(LPOPENCONTEXT context, LPVOID lpPkt, INT n) -{ - int rc = 0; - - if (context->context.lcPktData & PK_CONTEXT) - rc +=sizeof(HCTX); - if (context->context.lcPktData & PK_STATUS) - rc +=sizeof(UINT); - if (context->context.lcPktData & PK_TIME) - rc += sizeof(LONG); - if (context->context.lcPktData & PK_CHANGED) - rc += sizeof(WTPKT); - if (context->context.lcPktData & PK_SERIAL_NUMBER) - rc += sizeof(UINT); - if (context->context.lcPktData & PK_CURSOR) - rc += sizeof(UINT); - if (context->context.lcPktData & PK_BUTTONS) - rc += sizeof(DWORD); - if (context->context.lcPktData & PK_X) - rc += sizeof(DWORD); - if (context->context.lcPktData & PK_Y) - rc += sizeof(DWORD); - if (context->context.lcPktData & PK_Z) - rc += sizeof(DWORD); - if (context->context.lcPktData & PK_NORMAL_PRESSURE) - rc += sizeof(UINT); - if (context->context.lcPktData & PK_TANGENT_PRESSURE) - rc += sizeof(UINT); - if (context->context.lcPktData & PK_ORIENTATION) - rc += sizeof(ORIENTATION); - if (context->context.lcPktData & PK_ROTATION) - rc += sizeof(ROTATION); - - rc *= n; - memset(lpPkt,0,rc); -} - - -static UINT WTInfoT(UINT wCategory, UINT nIndex, LPVOID lpOutput, BOOL bUnicode) -{ - UINT result; - - TRACE("(%d, %d, %p, %d)\n", wCategory, nIndex, lpOutput, bUnicode); - if (gLoaded == FALSE) - LoadTablet(); - - /* - * Handle system extents here, as we can use user32.dll code to set them. - */ - if(wCategory == WTI_DEFSYSCTX) - { - switch(nIndex) - { - case CTX_SYSEXTX: - if(lpOutput != NULL) - *(LONG*)lpOutput = GetSystemMetrics(SM_CXSCREEN); - return sizeof(LONG); - case CTX_SYSEXTY: - if(lpOutput != NULL) - *(LONG*)lpOutput = GetSystemMetrics(SM_CYSCREEN); - return sizeof(LONG); - /* No action, delegate to X11Drv */ - } - } - - if (is_logcontext_category(wCategory) && nIndex == 0) - { - if (lpOutput) - { - LOGCONTEXTW buf; - pWTInfoW(wCategory, nIndex, &buf); - - /* Handle system extents here, as we can use user32.dll code to set them */ - if(wCategory == WTI_DEFSYSCTX && nIndex == 0) - { - buf.lcSysExtX = GetSystemMetrics(SM_CXSCREEN); - buf.lcSysExtY = GetSystemMetrics(SM_CYSCREEN); - } - - if (bUnicode) - memcpy(lpOutput, &buf, sizeof(buf)); - else - LOGCONTEXTWtoA(&buf, lpOutput); - } - - result = bUnicode ? sizeof(LOGCONTEXTW) : sizeof(LOGCONTEXTA); - } - else if (is_string_field(wCategory, nIndex) && !bUnicode) - { - int size = pWTInfoW(wCategory, nIndex, NULL); - WCHAR *buf = HeapAlloc(GetProcessHeap(), 0, size); - pWTInfoW(wCategory, nIndex, buf); - result = WideCharToMultiByte(CP_ACP, 0, buf, size/sizeof(WCHAR), lpOutput, lpOutput ? 2*size : 0, NULL, NULL); - HeapFree(GetProcessHeap(), 0, buf); - } - else - result = pWTInfoW(wCategory, nIndex, lpOutput); - - TRACE("returns %d\n", result); - return result; -} - -/*********************************************************************** - * WTInfoA (WINTAB32.20) - */ -UINT WINAPI WTInfoA(UINT wCategory, UINT nIndex, LPVOID lpOutput) -{ - return WTInfoT(wCategory, nIndex, lpOutput, FALSE); -} - - -/*********************************************************************** - * WTInfoW (WINTAB32.1020) - */ -UINT WINAPI WTInfoW(UINT wCategory, UINT nIndex, LPVOID lpOutput) -{ - return WTInfoT(wCategory, nIndex, lpOutput, TRUE); -} - -/*********************************************************************** - * WTOpenW (WINTAB32.2021) - */ -HCTX WINAPI WTOpenW(HWND hWnd, LPLOGCONTEXTW lpLogCtx, BOOL fEnable) -{ - LPOPENCONTEXT newcontext; - - TRACE("hWnd=%p, lpLogCtx=%p, fEnable=%u\n", hWnd, lpLogCtx, fEnable); - DUMPCONTEXT(*lpLogCtx); - - newcontext = HeapAlloc(GetProcessHeap(), 0 , sizeof(OPENCONTEXT)); - newcontext->context = *lpLogCtx; - newcontext->hwndOwner = hWnd; - newcontext->ActiveCursor = -1; - newcontext->QueueSize = 10; - newcontext->PacketsQueued = 0; - newcontext->PacketQueue=HeapAlloc(GetProcessHeap(),0,sizeof(WTPACKET)*10); - - EnterCriticalSection(&csTablet); - newcontext->handle = gTopContext++; - newcontext->next = gOpenContexts; - gOpenContexts = newcontext; - LeaveCriticalSection(&csTablet); - - pAttachEventQueueToTablet(hWnd); - - TABLET_PostTabletMessage(newcontext, _WT_CTXOPEN(newcontext->context.lcMsgBase), (WPARAM)newcontext->handle, - newcontext->context.lcStatus, TRUE); - - if (fEnable) - { - newcontext->enabled = TRUE; - /* TODO: Add to top of overlap order */ - newcontext->context.lcStatus = CXS_ONTOP; - } - else - { - newcontext->enabled = FALSE; - newcontext->context.lcStatus = CXS_DISABLED; - } - - TABLET_PostTabletMessage(newcontext, _WT_CTXOVERLAP(newcontext->context.lcMsgBase), - (WPARAM)newcontext->handle, - newcontext->context.lcStatus, TRUE); - - return newcontext->handle; -} - -/*********************************************************************** - * WTOpenA (WINTAB32.21) - */ -HCTX WINAPI WTOpenA(HWND hWnd, LPLOGCONTEXTA lpLogCtx, BOOL fEnable) -{ - LOGCONTEXTW logCtxW; - - LOGCONTEXTAtoW(lpLogCtx, &logCtxW); - return WTOpenW(hWnd, &logCtxW, fEnable); -} - -/*********************************************************************** - * WTClose (WINTAB32.22) - */ -BOOL WINAPI WTClose(HCTX hCtx) -{ - LPOPENCONTEXT context,ptr; - - TRACE("(%p)\n", hCtx); - - EnterCriticalSection(&csTablet); - - ptr = context = gOpenContexts; - - while (context && (context->handle != hCtx)) - { - ptr = context; - context = context->next; - } - if (!context) - { - LeaveCriticalSection(&csTablet); - return TRUE; - } - - if (context == gOpenContexts) - gOpenContexts = context->next; - else - ptr->next = context->next; - - LeaveCriticalSection(&csTablet); - - TABLET_PostTabletMessage(context, _WT_CTXCLOSE(context->context.lcMsgBase), (WPARAM)context->handle, - context->context.lcStatus,TRUE); - - HeapFree(GetProcessHeap(),0,context->PacketQueue); - HeapFree(GetProcessHeap(),0,context); - - return TRUE; -} - -/*********************************************************************** - * WTPacketsGet (WINTAB32.23) - */ -int WINAPI WTPacketsGet(HCTX hCtx, int cMaxPkts, LPVOID lpPkts) -{ - int limit; - LPOPENCONTEXT context; - LPVOID ptr = lpPkts; - - TRACE("(%p, %d, %p)\n", hCtx, cMaxPkts, lpPkts); - - if (!hCtx) - return 0; - - EnterCriticalSection(&csTablet); - - context = TABLET_FindOpenContext(hCtx); - - if (lpPkts != NULL) - TABLET_BlankPacketData(context,lpPkts,cMaxPkts); - - if (context->PacketsQueued == 0) - { - LeaveCriticalSection(&csTablet); - return 0; - } - - limit = min(cMaxPkts,context->PacketsQueued); - - if(ptr != NULL) - { - int i = 0; - for(i = 0; i < limit; i++) - ptr=TABLET_CopyPacketData(context ,ptr, &context->PacketQueue[i]); - } - - - if (limit < context->PacketsQueued) - { - memmove(context->PacketQueue, &context->PacketQueue[limit], - (context->PacketsQueued - (limit))*sizeof(WTPACKET)); - } - context->PacketsQueued -= limit; - LeaveCriticalSection(&csTablet); - - TRACE("Copied %i packets\n",limit); - - return limit; -} - -/*********************************************************************** - * WTPacket (WINTAB32.24) - */ -BOOL WINAPI WTPacket(HCTX hCtx, UINT wSerial, LPVOID lpPkt) -{ - int rc = 0; - LPOPENCONTEXT context; - LPWTPACKET wtp = NULL; - - TRACE("(%p, %d, %p)\n", hCtx, wSerial, lpPkt); - - if (!hCtx) - return 0; - - EnterCriticalSection(&csTablet); - - context = TABLET_FindOpenContext(hCtx); - - rc = TABLET_FindPacket(context ,wSerial, &wtp); - - if (rc >= 0) - { - if (lpPkt) - TABLET_CopyPacketData(context ,lpPkt, wtp); - - if ((rc+1) < context->QueueSize) - { - memmove(context->PacketQueue, &context->PacketQueue[rc+1], - (context->PacketsQueued - (rc+1))*sizeof(WTPACKET)); - } - context->PacketsQueued -= (rc+1); - } - LeaveCriticalSection(&csTablet); - - TRACE("Returning %i\n",rc+1); - return rc+1; -} - -/*********************************************************************** - * WTEnable (WINTAB32.40) - */ -BOOL WINAPI WTEnable(HCTX hCtx, BOOL fEnable) -{ - LPOPENCONTEXT context; - - TRACE("hCtx=%p, fEnable=%u\n", hCtx, fEnable); - - if (!hCtx) return FALSE; - - EnterCriticalSection(&csTablet); - context = TABLET_FindOpenContext(hCtx); - /* if we want to enable and it is not enabled then */ - if(fEnable && !context->enabled) - { - context->enabled = TRUE; - /* TODO: Add to top of overlap order */ - context->context.lcStatus = CXS_ONTOP; - TABLET_PostTabletMessage(context, - _WT_CTXOVERLAP(context->context.lcMsgBase), - (WPARAM)context->handle, - context->context.lcStatus, TRUE); - } - /* if we want to disable and it is not disabled then */ - else if (!fEnable && context->enabled) - { - context->enabled = FALSE; - /* TODO: Remove from overlap order?? needs a test */ - context->context.lcStatus = CXS_DISABLED; - TABLET_FlushQueue(context); - TABLET_PostTabletMessage(context, - _WT_CTXOVERLAP(context->context.lcMsgBase), - (WPARAM)context->handle, - context->context.lcStatus, TRUE); - } - LeaveCriticalSection(&csTablet); - - return TRUE; -} - -/*********************************************************************** - * WTOverlap (WINTAB32.41) - * - * Move context to top or bottom of overlap order - */ -BOOL WINAPI WTOverlap(HCTX hCtx, BOOL fToTop) -{ - LPOPENCONTEXT context; - - TRACE("hCtx=%p, fToTop=%u\n", hCtx, fToTop); - - if (!hCtx) return FALSE; - - EnterCriticalSection(&csTablet); - context = TABLET_FindOpenContext(hCtx); - if (!context) - { - LeaveCriticalSection(&csTablet); - return FALSE; - } - - /* if we want to send to top and it's not already there */ - if (fToTop && context->context.lcStatus != CXS_ONTOP) - { - /* TODO: Move context to top of overlap order */ - FIXME("Not moving context to top of overlap order\n"); - context->context.lcStatus = CXS_ONTOP; - TABLET_PostTabletMessage(context, - _WT_CTXOVERLAP(context->context.lcMsgBase), - (WPARAM)context->handle, - context->context.lcStatus, TRUE); - } - else if (!fToTop) - { - /* TODO: Move context to bottom of overlap order */ - FIXME("Not moving context to bottom of overlap order\n"); - context->context.lcStatus = CXS_OBSCURED; - TABLET_PostTabletMessage(context, - _WT_CTXOVERLAP(context->context.lcMsgBase), - (WPARAM)context->handle, - context->context.lcStatus, TRUE); - } - LeaveCriticalSection(&csTablet); - - return TRUE; -} - -/*********************************************************************** - * WTConfig (WINTAB32.61) - */ -BOOL WINAPI WTConfig(HCTX hCtx, HWND hWnd) -{ - FIXME("(%p, %p): stub\n", hCtx, hWnd); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return FALSE; -} - -/*********************************************************************** - * WTGetA (WINTAB32.61) - */ -BOOL WINAPI WTGetA(HCTX hCtx, LPLOGCONTEXTA lpLogCtx) -{ - LPOPENCONTEXT context; - - TRACE("(%p, %p)\n", hCtx, lpLogCtx); - - if (!hCtx) return 0; - - EnterCriticalSection(&csTablet); - context = TABLET_FindOpenContext(hCtx); - LOGCONTEXTWtoA(&context->context, lpLogCtx); - LeaveCriticalSection(&csTablet); - - return TRUE; -} - -/*********************************************************************** - * WTGetW (WINTAB32.1061) - */ -BOOL WINAPI WTGetW(HCTX hCtx, LPLOGCONTEXTW lpLogCtx) -{ - LPOPENCONTEXT context; - - TRACE("(%p, %p)\n", hCtx, lpLogCtx); - - if (!hCtx) return 0; - - EnterCriticalSection(&csTablet); - context = TABLET_FindOpenContext(hCtx); - memmove(lpLogCtx,&context->context,sizeof(LOGCONTEXTW)); - LeaveCriticalSection(&csTablet); - - return TRUE; -} - -/*********************************************************************** - * WTSetA (WINTAB32.62) - */ -BOOL WINAPI WTSetA(HCTX hCtx, LPLOGCONTEXTA lpLogCtx) -{ - LPOPENCONTEXT context; - - TRACE("hCtx=%p, lpLogCtx=%p\n", hCtx, lpLogCtx); - - if (!hCtx || !lpLogCtx) return FALSE; - - /* TODO: if cur process not owner of hCtx only modify - * attribs not locked by owner */ - - EnterCriticalSection(&csTablet); - context = TABLET_FindOpenContext(hCtx); - if (!context) - { - LeaveCriticalSection(&csTablet); - return FALSE; - } - - LOGCONTEXTAtoW(lpLogCtx, &context->context); - LeaveCriticalSection(&csTablet); - - return TRUE; -} - -/*********************************************************************** - * WTSetW (WINTAB32.1062) - */ -BOOL WINAPI WTSetW(HCTX hCtx, LPLOGCONTEXTW lpLogCtx) -{ - LPOPENCONTEXT context; - - TRACE("hCtx=%p, lpLogCtx=%p\n", hCtx, lpLogCtx); - - if (!hCtx || !lpLogCtx) return FALSE; - - /* TODO: if cur process not hCtx owner only modify - * attribs not locked by owner */ - - EnterCriticalSection(&csTablet); - context = TABLET_FindOpenContext(hCtx); - if (!context) - { - LeaveCriticalSection(&csTablet); - return FALSE; - } - - memmove(&context->context, lpLogCtx, sizeof(LOGCONTEXTW)); - LeaveCriticalSection(&csTablet); - - return TRUE; -} - -/*********************************************************************** - * WTExtGet (WINTAB32.63) - */ -BOOL WINAPI WTExtGet(HCTX hCtx, UINT wExt, LPVOID lpData) -{ - FIXME("(%p, %u, %p): stub\n", hCtx, wExt, lpData); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return FALSE; -} - -/*********************************************************************** - * WTExtSet (WINTAB32.64) - */ -BOOL WINAPI WTExtSet(HCTX hCtx, UINT wExt, LPVOID lpData) -{ - FIXME("(%p, %u, %p): stub\n", hCtx, wExt, lpData); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return FALSE; -} - -/*********************************************************************** - * WTSave (WINTAB32.65) - */ -BOOL WINAPI WTSave(HCTX hCtx, LPVOID lpSaveInfo) -{ - FIXME("(%p, %p): stub\n", hCtx, lpSaveInfo); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return FALSE; -} - -/*********************************************************************** - * WTRestore (WINTAB32.66) - */ -HCTX WINAPI WTRestore(HWND hWnd, LPVOID lpSaveInfo, BOOL fEnable) -{ - FIXME("(%p, %p, %u): stub\n", hWnd, lpSaveInfo, fEnable); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return 0; -} - -/*********************************************************************** - * WTPacketsPeek (WINTAB32.80) - */ -int WINAPI WTPacketsPeek(HCTX hCtx, int cMaxPkts, LPVOID lpPkts) -{ - int limit; - LPOPENCONTEXT context; - LPVOID ptr = lpPkts; - - TRACE("(%p, %d, %p)\n", hCtx, cMaxPkts, lpPkts); - - if (!hCtx || !lpPkts) return 0; - - EnterCriticalSection(&csTablet); - - context = TABLET_FindOpenContext(hCtx); - - if (context->PacketsQueued == 0) - { - LeaveCriticalSection(&csTablet); - return 0; - } - - for (limit = 0; limit < cMaxPkts && limit < context->PacketsQueued; limit++) - ptr = TABLET_CopyPacketData(context ,ptr, &context->PacketQueue[limit]); - - LeaveCriticalSection(&csTablet); - TRACE("Copied %i packets\n",limit); - return limit; -} - -/*********************************************************************** - * WTDataGet (WINTAB32.81) - */ -int WINAPI WTDataGet(HCTX hCtx, UINT wBegin, UINT wEnd, - int cMaxPkts, LPVOID lpPkts, LPINT lpNPkts) -{ - LPOPENCONTEXT context; - LPVOID ptr = lpPkts; - INT bgn = 0; - INT end = 0; - INT num = 0; - - TRACE("(%p, %u, %u, %d, %p, %p)\n", - hCtx, wBegin, wEnd, cMaxPkts, lpPkts, lpNPkts); - - if (!hCtx) return 0; - - EnterCriticalSection(&csTablet); - - context = TABLET_FindOpenContext(hCtx); - - if (context->PacketsQueued == 0) - { - LeaveCriticalSection(&csTablet); - return 0; - } - - while (bgn < context->PacketsQueued && - context->PacketQueue[bgn].pkSerialNumber != wBegin) - bgn++; - - end = bgn; - while (end < context->PacketsQueued && - context->PacketQueue[end].pkSerialNumber != wEnd) - end++; - - if ((bgn == end) && (end == context->PacketsQueued)) - { - LeaveCriticalSection(&csTablet); - return 0; - } - - for (num = bgn; num <= end; num++) - ptr = TABLET_CopyPacketData(context ,ptr, &context->PacketQueue[num]); - - /* remove read packets */ - if ((end+1) < context->PacketsQueued) - memmove( &context->PacketQueue[bgn], &context->PacketQueue[end+1], - (context->PacketsQueued - (end+1)) * sizeof (WTPACKET)); - - context->PacketsQueued -= ((end-bgn)+1); - *lpNPkts = ((end-bgn)+1); - - LeaveCriticalSection(&csTablet); - TRACE("Copied %i packets\n",*lpNPkts); - return (end - bgn)+1; -} - -/*********************************************************************** - * WTDataPeek (WINTAB32.82) - */ -int WINAPI WTDataPeek(HCTX hCtx, UINT wBegin, UINT wEnd, - int cMaxPkts, LPVOID lpPkts, LPINT lpNPkts) -{ - LPOPENCONTEXT context; - LPVOID ptr = lpPkts; - INT bgn = 0; - INT end = 0; - INT num = 0; - - TRACE("(%p, %u, %u, %d, %p, %p)\n", - hCtx, wBegin, wEnd, cMaxPkts, lpPkts, lpNPkts); - - if (!hCtx || !lpPkts) return 0; - - EnterCriticalSection(&csTablet); - - context = TABLET_FindOpenContext(hCtx); - - if (context->PacketsQueued == 0) - { - LeaveCriticalSection(&csTablet); - return 0; - } - - while (bgn < context->PacketsQueued && - context->PacketQueue[bgn].pkSerialNumber != wBegin) - bgn++; - - end = bgn; - while (end < context->PacketsQueued && - context->PacketQueue[end].pkSerialNumber != wEnd) - end++; - - if (bgn == context->PacketsQueued || end == context->PacketsQueued) - { - TRACE("%i %i %i\n", bgn, end, context->PacketsQueued); - LeaveCriticalSection(&csTablet); - return 0; - } - - for (num = bgn; num <= end; num++) - ptr = TABLET_CopyPacketData(context ,ptr, &context->PacketQueue[num]); - - *lpNPkts = ((end-bgn)+1); - LeaveCriticalSection(&csTablet); - - TRACE("Copied %i packets\n",*lpNPkts); - return (end - bgn)+1; -} - -/*********************************************************************** - * WTQueuePacketsEx (WINTAB32.200) - */ -BOOL WINAPI WTQueuePacketsEx(HCTX hCtx, UINT *lpOld, UINT *lpNew) -{ - LPOPENCONTEXT context; - - TRACE("(%p, %p, %p)\n", hCtx, lpOld, lpNew); - - if (!hCtx) return 0; - - EnterCriticalSection(&csTablet); - - context = TABLET_FindOpenContext(hCtx); - - if (context->PacketsQueued) - { - *lpOld = context->PacketQueue[0].pkSerialNumber; - *lpNew = context->PacketQueue[context->PacketsQueued-1].pkSerialNumber; - } - else - { - TRACE("No packets\n"); - LeaveCriticalSection(&csTablet); - return FALSE; - } - LeaveCriticalSection(&csTablet); - - return TRUE; -} - -/*********************************************************************** - * WTQueueSizeGet (WINTAB32.84) - */ -int WINAPI WTQueueSizeGet(HCTX hCtx) -{ - LPOPENCONTEXT context; - TRACE("(%p)\n", hCtx); - - if (!hCtx) return 0; - - EnterCriticalSection(&csTablet); - context = TABLET_FindOpenContext(hCtx); - LeaveCriticalSection(&csTablet); - return context->QueueSize; -} - -/*********************************************************************** - * WTQueueSizeSet (WINTAB32.85) - */ -BOOL WINAPI WTQueueSizeSet(HCTX hCtx, int nPkts) -{ - LPOPENCONTEXT context; - - TRACE("(%p, %d)\n", hCtx, nPkts); - - if (!hCtx) return 0; - - EnterCriticalSection(&csTablet); - - context = TABLET_FindOpenContext(hCtx); - - context->PacketQueue = HeapReAlloc(GetProcessHeap(), 0, - context->PacketQueue, sizeof(WTPACKET)*nPkts); - - context->QueueSize = nPkts; - LeaveCriticalSection(&csTablet); - - return nPkts; -} diff --git a/reactos/dll/win32/wintab32/manager.c b/reactos/dll/win32/wintab32/manager.c deleted file mode 100644 index f225d076891..00000000000 --- a/reactos/dll/win32/wintab32/manager.c +++ /dev/null @@ -1,291 +0,0 @@ -/* - * Tablet Manager - * - * Copyright 2002 Patrik Stridvall - * - * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "config.h" - -#include - -#include "windef.h" -#include "winbase.h" -#include "winerror.h" - -#include "wintab.h" - -#include "wine/debug.h" - -WINE_DEFAULT_DEBUG_CHANNEL(wintab32); - -/*********************************************************************** - * WTMgrOpen (WINTAB32.100) - */ -HMGR WINAPI WTMgrOpen(HWND hWnd, UINT wMsgBase) -{ - FIXME("(%p, %u): stub\n", hWnd, wMsgBase); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return NULL; -} - -/*********************************************************************** - * WTMgrClose (WINTAB32.101) - */ -BOOL WINAPI WTMgrClose(HMGR hMgr) -{ - FIXME("(%p): stub\n", hMgr); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return FALSE; -} - -/*********************************************************************** - * WTMgrContextEnum (WINTAB32.120) - */ -BOOL WINAPI WTMgrContextEnum(HMGR hMgr, WTENUMPROC lpEnumFunc, LPARAM lParam) -{ - FIXME("(%p, %p, %ld): stub\n", hMgr, lpEnumFunc, lParam); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return FALSE; -} - -/*********************************************************************** - * WTMgrContextOwner (WINTAB32.121) - */ -HWND WINAPI WTMgrContextOwner(HMGR hMgr, HCTX hCtx) -{ - FIXME("(%p, %p): stub\n", hMgr, hCtx); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return NULL; -} - -/*********************************************************************** - * WTMgrDefContext (WINTAB32.122) - */ -HCTX WINAPI WTMgrDefContext(HMGR hMgr, BOOL fSystem) -{ - FIXME("(%p, %u): stub\n", hMgr, fSystem); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return NULL; -} - -/*********************************************************************** - * WTMgrDefContextEx (WINTAB32.206) - * - * 1.1 - */ -HCTX WINAPI WTMgrDefContextEx(HMGR hMgr, UINT wDevice, BOOL fSystem) -{ - FIXME("(%p, %hu, %hu): stub\n", hMgr, wDevice, fSystem); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return NULL; -} - -/*********************************************************************** - * WTMgrDeviceConfig (WINTAB32.140) - */ -UINT WINAPI WTMgrDeviceConfig(HMGR hMgr, UINT wDevice, HWND hWnd) -{ - FIXME("(%p, %u, %p): stub\n", hMgr, wDevice, hWnd); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return 0; -} - -/*********************************************************************** - * WTMgrConfigReplaceExA (WINTAB32.202) - */ -BOOL WINAPI WTMgrConfigReplaceExA(HMGR hMgr, BOOL fInstall, - LPSTR lpszModule, LPSTR lpszCfgProc) -{ - FIXME("(%p, %u, %s, %s): stub\n", hMgr, fInstall, - debugstr_a(lpszModule), debugstr_a(lpszCfgProc)); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return FALSE; -} - -/*********************************************************************** - * WTMgrConfigReplaceExW (WINTAB32.1202) - */ -BOOL WINAPI WTMgrConfigReplaceExW(HMGR hMgr, BOOL fInstall, - LPWSTR lpszModule, LPSTR lpszCfgProc) -{ - FIXME("(%p, %u, %s, %s): stub\n", hMgr, fInstall, - debugstr_w(lpszModule), debugstr_a(lpszCfgProc)); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return FALSE; -} - -/*********************************************************************** - * WTMgrPacketHookExA (WINTAB32.203) - */ -HWTHOOK WINAPI WTMgrPacketHookExA(HMGR hMgr, int nType, - LPSTR lpszModule, LPSTR lpszHookProc) -{ - FIXME("(%p, %d, %s, %s): stub\n", hMgr, nType, - debugstr_a(lpszModule), debugstr_a(lpszHookProc)); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return NULL; -} - -/*********************************************************************** - * WTMgrPacketHookExW (WINTAB32.1203) - */ -HWTHOOK WINAPI WTMgrPacketHookExW(HMGR hMgr, int nType, - LPWSTR lpszModule, LPSTR lpszHookProc) -{ - FIXME("(%p, %d, %s, %s): stub\n", hMgr, nType, - debugstr_w(lpszModule), debugstr_a(lpszHookProc)); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return NULL; -} - -/*********************************************************************** - * WTMgrPacketUnhook (WINTAB32.204) - */ -BOOL WINAPI WTMgrPacketUnhook(HWTHOOK hHook) -{ - FIXME("(%p): stub\n", hHook); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return FALSE; -} - -/*********************************************************************** - * WTMgrPacketHookNext (WINTAB32.205) - */ -LRESULT WINAPI WTMgrPacketHookNext(HWTHOOK hHook, int nCode, - WPARAM wParam, LPARAM lParam) -{ - FIXME("(%p, %d, %lu, %lu): stub\n", hHook, nCode, wParam, lParam); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return 0; -} - - -/*********************************************************************** - * WTMgrExt (WINTAB32.180) - */ -BOOL WINAPI WTMgrExt(HMGR hMgr, UINT wExt, LPVOID lpData) -{ - FIXME("(%p, %u, %p): stub\n", hMgr, wExt, lpData); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return FALSE; -} - -/*********************************************************************** - * WTMgrCsrEnable (WINTAB32.181) - */ -BOOL WINAPI WTMgrCsrEnable(HMGR hMgr, UINT wCursor, BOOL fEnable) -{ - FIXME("(%p, %u, %u): stub\n", hMgr, wCursor, fEnable); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return FALSE; -} - -/*********************************************************************** - * WTMgrCsrButtonMap (WINTAB32.182) - */ -BOOL WINAPI WTMgrCsrButtonMap(HMGR hMgr, UINT wCursor, - LPBYTE lpLogBtns, LPBYTE lpSysBtns) -{ - FIXME("(%p, %u, %p, %p): stub\n", hMgr, wCursor, lpLogBtns, lpSysBtns); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return FALSE; -} - -/*********************************************************************** - * WTMgrCsrPressureBtnMarks (WINTAB32.183) - * - * OBSOLETE IN WIN32! (But only according to documentation) - */ -BOOL WINAPI WTMgrCsrPressureBtnMarks(HMGR hMgr, UINT wCsr, - DWORD dwNMarks, DWORD dwTMarks) -{ - FIXME("(%p, %u, %u, %u): stub\n", hMgr, wCsr, dwNMarks, dwTMarks); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return FALSE; -} - -/*********************************************************************** - * WTMgrCsrPressureBtnMarksEx (WINTAB32.201) - */ -BOOL WINAPI WTMgrCsrPressureBtnMarksEx(HMGR hMgr, UINT wCsr, - UINT *lpNMarks, UINT *lpTMarks) -{ - FIXME("(%p, %u, %p, %p): stub\n", hMgr, wCsr, lpNMarks, lpTMarks); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return FALSE; -} - -/*********************************************************************** - * WTMgrCsrPressureResponse (WINTAB32.184) - */ -BOOL WINAPI WTMgrCsrPressureResponse(HMGR hMgr, UINT wCsr, - UINT *lpNResp, UINT *lpTResp) -{ - FIXME("(%p, %u, %p, %p): stub\n", hMgr, wCsr, lpNResp, lpTResp); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return FALSE; -} - -/*********************************************************************** - * WTMgrCsrExt (WINTAB32.185) - */ -BOOL WINAPI WTMgrCsrExt(HMGR hMgr, UINT wCsr, UINT wExt, LPVOID lpData) -{ - FIXME("(%p, %u, %u, %p): stub\n", hMgr, wCsr, wExt, lpData); - - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - - return FALSE; -} diff --git a/reactos/dll/win32/wintab32/wintab.h b/reactos/dll/win32/wintab32/wintab.h deleted file mode 100644 index d10371b0217..00000000000 --- a/reactos/dll/win32/wintab32/wintab.h +++ /dev/null @@ -1,788 +0,0 @@ -/* - * Copyright (C) 1991-1998 by LCS/Telegraphics - * Copyright (C) 2002 Patrik Stridvall - * - * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#ifndef __WINE_WINTAB_H -#define __WINE_WINTAB_H - -#ifdef __cplusplus -extern "C" { -#endif /* defined(__cplusplus) */ - -/*********************************************************************** - * Messages - */ -#ifndef NOWTMESSAGES - -#define WT_DEFBASE 0x7FF0 -#define WT_MAXOFFSET 0xF - -#define _WT_PACKET(b) ((b)+0) -#define _WT_CTXOPEN(b) ((b)+1) -#define _WT_CTXCLOSE(b) ((b)+2) -#define _WT_CTXUPDATE(b) ((b)+3) -#define _WT_CTXOVERLAP(b) ((b)+4) -#define _WT_PROXIMITY(b) ((b)+5) -#define _WT_INFOCHANGE(b) ((b)+6) -#define _WT_CSRCHANGE(b) ((b)+7) /* 1.1 */ -#define _WT_MAX(b) ((b)+WT_MAXOFFSET) - -#define WT_PACKET _WT_PACKET(WT_DEFBASE) -#define WT_CTXOPEN _WT_CTXOPEN(WT_DEFBASE) -#define WT_CTXCLOSE _WT_CTXCLOSE(WT_DEFBASE) -#define WT_CTXUPDATE _WT_CTXUPDATE(WT_DEFBASE) -#define WT_CTXOVERLAP _WT_CTXOVERLAP(WT_DEFBASE) -#define WT_PROXIMITY _WT_PROXIMITY(WT_DEFBASE) -#define WT_INFOCHANGE _WT_INFOCHANGE(WT_DEFBASE) -#define WT_CSRCHANGE _WT_CSRCHANGE(WT_DEFBASE) /* 1.1 */ -#define WT_MAX _WT_MAX(WT_DEFBASE) - -#endif - -/*********************************************************************** - * COMMON DATA DEFS - */ - -DECLARE_HANDLE(HMGR); /* manager handle */ -DECLARE_HANDLE(HCTX); /* context handle */ -DECLARE_HANDLE(HWTHOOK); /* hook handle */ - -typedef DWORD WTPKT; /* packet mask */ - -#ifndef NOWTPKT - -/* WTPKT bits */ -#define PK_CONTEXT 0x0001 /* reporting context */ -#define PK_STATUS 0x0002 /* status bits */ -#define PK_TIME 0x0004 /* time stamp */ -#define PK_CHANGED 0x0008 /* change bit vector */ -#define PK_SERIAL_NUMBER 0x0010 /* packet serial number */ -#define PK_CURSOR 0x0020 /* reporting cursor */ -#define PK_BUTTONS 0x0040 /* button information */ -#define PK_X 0x0080 /* x axis */ -#define PK_Y 0x0100 /* y axis */ -#define PK_Z 0x0200 /* z axis */ -#define PK_NORMAL_PRESSURE 0x0400 /* normal or tip pressure */ -#define PK_TANGENT_PRESSURE 0x0800 /* tangential or barrel pressure */ -#define PK_ORIENTATION 0x1000 /* orientation info: tilts */ -#define PK_ROTATION 0x2000 /* rotation info; 1.1 */ - -#endif - -typedef DWORD FIX32; /* fixed-point arithmetic type */ - -#ifndef NOFIX32 - -#define INT(x) HIWORD(x) -#define FRAC(x) LOWORD(x) - -#define CASTFIX32(x) ((FIX32)((x)*65536L)) - -#define ROUND(x) (INT(x) + (FRAC(x) > (WORD)0x8000)) - -#define FIX_MUL(c, a, b) \ - (c = (((DWORD)FRAC(a) * FRAC(b)) >> 16) + \ - (DWORD)INT(a) * FRAC(b) + \ - (DWORD)INT(b) * FRAC(a) + \ - ((DWORD)INT(a) * INT(b) << 16)) - -#ifdef _WINDLL -# define FIX_DIV_SC static -#else -# define FIX_DIV_SC -# endif - -#define FIX_DIV(c, a, b) \ - { \ - FIX_DIV_SC DWORD temp, rem, btemp; \ - \ - /* fraction done bytewise */ \ - temp = ((a / b) << 16); \ - rem = a % b; \ - btemp = b; \ - if (INT(btemp) < 256) { \ - rem <<= 8; \ - } else { \ - btemp >>= 8; \ - } \ - temp += ((rem / btemp) << 8); \ - rem %= btemp; \ - rem <<= 8; \ - temp += rem / btemp; \ - c = temp; \ - } - -#endif - -/*********************************************************************** - * INFO DATA DEFS - */ - -#ifndef NOWTINFO - -#ifndef NOWTAXIS - -typedef struct tagAXIS { - LONG axMin; - LONG axMax; - UINT axUnits; - FIX32 axResolution; -} AXIS, *PAXIS, *NPAXIS, *LPAXIS; - -/* unit specifiers */ -#define TU_NONE 0 -#define TU_INCHES 1 -#define TU_CENTIMETERS 2 -#define TU_CIRCLE 3 - -#endif - -#ifndef NOWTSYSBUTTONS - -/* system button assignment values */ -#define SBN_NONE 0x00 -#define SBN_LCLICK 0x01 -#define SBN_LDBLCLICK 0x02 -#define SBN_LDRAG 0x03 -#define SBN_RCLICK 0x04 -#define SBN_RDBLCLICK 0x05 -#define SBN_RDRAG 0x06 -#define SBN_MCLICK 0x07 -#define SBN_MDBLCLICK 0x08 -#define SBN_MDRAG 0x09 - -/* for Pen Windows */ -#define SBN_PTCLICK 0x10 -#define SBN_PTDBLCLICK 0x20 -#define SBN_PTDRAG 0x30 -#define SBN_PNCLICK 0x40 -#define SBN_PNDBLCLICK 0x50 -#define SBN_PNDRAG 0x60 -#define SBN_P1CLICK 0x70 -#define SBN_P1DBLCLICK 0x80 -#define SBN_P1DRAG 0x90 -#define SBN_P2CLICK 0xA0 -#define SBN_P2DBLCLICK 0xB0 -#define SBN_P2DRAG 0xC0 -#define SBN_P3CLICK 0xD0 -#define SBN_P3DBLCLICK 0xE0 -#define SBN_P3DRAG 0xF0 - -#endif - -#ifndef NOWTCAPABILITIES - -/* hardware capabilities */ -#define HWC_INTEGRATED 0x0001 -#define HWC_TOUCH 0x0002 -#define HWC_HARDPROX 0x0004 -#define HWC_PHYSID_CURSORS 0x0008 /* 1.1 */ -#endif - -#ifndef NOWTIFC - -#ifndef NOWTCURSORS - -/* cursor capabilities */ -#define CRC_MULTIMODE 0x0001 /* 1.1 */ -#define CRC_AGGREGATE 0x0002 /* 1.1 */ -#define CRC_INVERT 0x0004 /* 1.1 */ - -#endif - -/* info categories */ -#define WTI_INTERFACE 1 -#define IFC_WINTABID 1 -#define IFC_SPECVERSION 2 -#define IFC_IMPLVERSION 3 -#define IFC_NDEVICES 4 -#define IFC_NCURSORS 5 -#define IFC_NCONTEXTS 6 -#define IFC_CTXOPTIONS 7 -#define IFC_CTXSAVESIZE 8 -#define IFC_NEXTENSIONS 9 -#define IFC_NMANAGERS 10 -#define IFC_MAX 10 - -#endif - -#ifndef NOWTSTATUS - -#define WTI_STATUS 2 -#define STA_CONTEXTS 1 -#define STA_SYSCTXS 2 -#define STA_PKTRATE 3 -#define STA_PKTDATA 4 -#define STA_MANAGERS 5 -#define STA_SYSTEM 6 -#define STA_BUTTONUSE 7 -#define STA_SYSBTNUSE 8 -#define STA_MAX 8 - -#endif - -#ifndef NOWTDEFCONTEXT - -#define WTI_DEFCONTEXT 3 -#define WTI_DEFSYSCTX 4 -#define WTI_DDCTXS 400 /* 1.1 */ -#define WTI_DSCTXS 500 /* 1.1 */ -#define CTX_NAME 1 -#define CTX_OPTIONS 2 -#define CTX_STATUS 3 -#define CTX_LOCKS 4 -#define CTX_MSGBASE 5 -#define CTX_DEVICE 6 -#define CTX_PKTRATE 7 -#define CTX_PKTDATA 8 -#define CTX_PKTMODE 9 -#define CTX_MOVEMASK 10 -#define CTX_BTNDNMASK 11 -#define CTX_BTNUPMASK 12 -#define CTX_INORGX 13 -#define CTX_INORGY 14 -#define CTX_INORGZ 15 -#define CTX_INEXTX 16 -#define CTX_INEXTY 17 -#define CTX_INEXTZ 18 -#define CTX_OUTORGX 19 -#define CTX_OUTORGY 20 -#define CTX_OUTORGZ 21 -#define CTX_OUTEXTX 22 -#define CTX_OUTEXTY 23 -#define CTX_OUTEXTZ 24 -#define CTX_SENSX 25 -#define CTX_SENSY 26 -#define CTX_SENSZ 27 -#define CTX_SYSMODE 28 -#define CTX_SYSORGX 29 -#define CTX_SYSORGY 30 -#define CTX_SYSEXTX 31 -#define CTX_SYSEXTY 32 -#define CTX_SYSSENSX 33 -#define CTX_SYSSENSY 34 -#define CTX_MAX 34 - -#endif - -#ifndef NOWTDEVICES - -#define WTI_DEVICES 100 -#define DVC_NAME 1 -#define DVC_HARDWARE 2 -#define DVC_NCSRTYPES 3 -#define DVC_FIRSTCSR 4 -#define DVC_PKTRATE 5 -#define DVC_PKTDATA 6 -#define DVC_PKTMODE 7 -#define DVC_CSRDATA 8 -#define DVC_XMARGIN 9 -#define DVC_YMARGIN 10 -#define DVC_ZMARGIN 11 -#define DVC_X 12 -#define DVC_Y 13 -#define DVC_Z 14 -#define DVC_NPRESSURE 15 -#define DVC_TPRESSURE 16 -#define DVC_ORIENTATION 17 -#define DVC_ROTATION 18 /* 1.1 */ -#define DVC_PNPID 19 /* 1.1 */ -#define DVC_MAX 19 - -#endif - -#ifndef NOWTCURSORS - -#define WTI_CURSORS 200 -#define CSR_NAME 1 -#define CSR_ACTIVE 2 -#define CSR_PKTDATA 3 -#define CSR_BUTTONS 4 -#define CSR_BUTTONBITS 5 -#define CSR_BTNNAMES 6 -#define CSR_BUTTONMAP 7 -#define CSR_SYSBTNMAP 8 -#define CSR_NPBUTTON 9 -#define CSR_NPBTNMARKS 10 -#define CSR_NPRESPONSE 11 -#define CSR_TPBUTTON 12 -#define CSR_TPBTNMARKS 13 -#define CSR_TPRESPONSE 14 -#define CSR_PHYSID 15 /* 1.1 */ -#define CSR_MODE 16 /* 1.1 */ -#define CSR_MINPKTDATA 17 /* 1.1 */ -#define CSR_MINBUTTONS 18 /* 1.1 */ -#define CSR_CAPABILITIES 19 /* 1.1 */ -/* from http://www.wacomeng.com/devsupport/ibmpc/wacomwindevfaq.html */ -#define CSR_TYPE 20 -#define CSR_MAX 20 - -#endif - -#ifndef NOWTEXTENSIONS - -#define WTI_EXTENSIONS 300 -#define EXT_NAME 1 -#define EXT_TAG 2 -#define EXT_MASK 3 -#define EXT_SIZE 4 -#define EXT_AXES 5 -#define EXT_DEFAULT 6 -#define EXT_DEFCONTEXT 7 -#define EXT_DEFSYSCTX 8 -#define EXT_CURSORS 9 -#define EXT_MAX 109 /* Allow 100 cursors */ - -#endif - -#endif - -/*********************************************************************** - * CONTEXT DATA DEFS - */ - -#define LCNAMELEN 40 -#define LC_NAMELEN 40 - -typedef struct tagLOGCONTEXTA { - char lcName[LCNAMELEN]; - UINT lcOptions; - UINT lcStatus; - UINT lcLocks; - UINT lcMsgBase; - UINT lcDevice; - UINT lcPktRate; - WTPKT lcPktData; - WTPKT lcPktMode; - WTPKT lcMoveMask; - DWORD lcBtnDnMask; - DWORD lcBtnUpMask; - LONG lcInOrgX; - LONG lcInOrgY; - LONG lcInOrgZ; - LONG lcInExtX; - LONG lcInExtY; - LONG lcInExtZ; - LONG lcOutOrgX; - LONG lcOutOrgY; - LONG lcOutOrgZ; - LONG lcOutExtX; - LONG lcOutExtY; - LONG lcOutExtZ; - FIX32 lcSensX; - FIX32 lcSensY; - FIX32 lcSensZ; - BOOL lcSysMode; - int lcSysOrgX; - int lcSysOrgY; - int lcSysExtX; - int lcSysExtY; - FIX32 lcSysSensX; - FIX32 lcSysSensY; -} LOGCONTEXTA, *PLOGCONTEXTA, *NPLOGCONTEXTA, *LPLOGCONTEXTA; - -typedef struct tagLOGCONTEXTW { - WCHAR lcName[LCNAMELEN]; - UINT lcOptions; - UINT lcStatus; - UINT lcLocks; - UINT lcMsgBase; - UINT lcDevice; - UINT lcPktRate; - WTPKT lcPktData; - WTPKT lcPktMode; - WTPKT lcMoveMask; - DWORD lcBtnDnMask; - DWORD lcBtnUpMask; - LONG lcInOrgX; - LONG lcInOrgY; - LONG lcInOrgZ; - LONG lcInExtX; - LONG lcInExtY; - LONG lcInExtZ; - LONG lcOutOrgX; - LONG lcOutOrgY; - LONG lcOutOrgZ; - LONG lcOutExtX; - LONG lcOutExtY; - LONG lcOutExtZ; - FIX32 lcSensX; - FIX32 lcSensY; - FIX32 lcSensZ; - BOOL lcSysMode; - int lcSysOrgX; - int lcSysOrgY; - int lcSysExtX; - int lcSysExtY; - FIX32 lcSysSensX; - FIX32 lcSysSensY; -} LOGCONTEXTW, *PLOGCONTEXTW, *NPLOGCONTEXTW, *LPLOGCONTEXTW; - -DECL_WINELIB_TYPE_AW(LOGCONTEXT) -DECL_WINELIB_TYPE_AW(PLOGCONTEXT) -DECL_WINELIB_TYPE_AW(NPLOGCONTEXT) -DECL_WINELIB_TYPE_AW(LPLOGCONTEXT) - -/* context option values */ -#define CXO_SYSTEM 0x0001 -#define CXO_PEN 0x0002 -#define CXO_MESSAGES 0x0004 -#define CXO_MARGIN 0x8000 -#define CXO_MGNINSIDE 0x4000 -#define CXO_CSRMESSAGES 0x0008 /* 1.1 */ - -/* context status values */ -#define CXS_DISABLED 0x0001 -#define CXS_OBSCURED 0x0002 -#define CXS_ONTOP 0x0004 - -/* context lock values */ -#define CXL_INSIZE 0x0001 -#define CXL_INASPECT 0x0002 -#define CXL_SENSITIVITY 0x0004 -#define CXL_MARGIN 0x0008 -#define CXL_SYSOUT 0x0010 - -/*********************************************************************** - * EVENT DATA DEFS - */ - -/* For packet structure definition, see pktdef.h */ - -/* packet status values */ -#define TPS_PROXIMITY 0x0001 -#define TPS_QUEUE_ERR 0x0002 -#define TPS_MARGIN 0x0004 -#define TPS_GRAB 0x0008 -#define TPS_INVERT 0x0010 /* 1.1 */ - -typedef struct tagORIENTATION { - int orAzimuth; - int orAltitude; - int orTwist; -} ORIENTATION, *PORIENTATION, *NPORIENTATION, *LPORIENTATION; - -typedef struct tagROTATION { /* 1.1 */ - int roPitch; - int roRoll; - int roYaw; -} ROTATION, *PROTATION, *NPROTATION, *LPROTATION; - -/* grandfather in obsolete member names. */ -#define rotPitch roPitch -#define rotRoll roRoll -#define rotYaw roYaw - -/* relative buttons */ -#define TBN_NONE 0 -#define TBN_UP 1 -#define TBN_DOWN 2 - -/*********************************************************************** - * DEVICE CONFIG CONSTANTS - */ - -#ifndef NOWTDEVCFG - -#define WTDC_NONE 0 -#define WTDC_CANCEL 1 -#define WTDC_OK 2 -#define WTDC_RESTART 3 - -#endif - -/*********************************************************************** - * HOOK CONSTANTS - */ - -#ifndef NOWTHOOKS - -#define WTH_PLAYBACK 1 -#define WTH_RECORD 2 - -#define WTHC_GETLPLPFN (-3) -#define WTHC_LPLPFNNEXT (-2) -#define WTHC_LPFNNEXT (-1) -#define WTHC_ACTION 0 -#define WTHC_GETNEXT 1 -#define WTHC_SKIP 2 - -#endif - -/*********************************************************************** - * PREFERENCE FUNCTION CONSTANTS - */ - -#ifndef NOWTPREF - -#define WTP_LPDEFAULT ((LPVOID)-1L) -#define WTP_DWDEFAULT ((DWORD)-1L) - -#endif - -/*********************************************************************** - * EXTENSION TAGS AND CONSTANTS - */ - -#ifndef NOWTEXTENSIONS - -/* constants for use with pktdef.h */ -#define PKEXT_ABSOLUTE 1 -#define PKEXT_RELATIVE 2 - -/* Extension tags. */ -#define WTX_OBT 0 /* Out of bounds tracking */ -#define WTX_FKEYS 1 /* Function keys */ -#define WTX_TILT 2 /* Raw Cartesian tilt; 1.1 */ -#define WTX_CSRMASK 3 /* select input by cursor type; 1.1 */ -#define WTX_XBTNMASK 4 /* Extended button mask; 1.1 */ - -typedef struct tagXBTNMASK { - BYTE xBtnDnMask[32]; - BYTE xBtnUpMask[32]; -} XBTNMASK; - -typedef struct tagTILT { /* 1.1 */ - int tiltX; - int tiltY; -} TILT; - -#endif - -/*********************************************************************** - * Functions - */ - -#ifndef NOWTCALLBACKS - -#ifndef NOWTMANAGERFXNS - -/* callback function types */ -typedef BOOL (WINAPI * WTENUMPROC)(HCTX, LPARAM); /* changed CALLBACK->WINAPI, 1.1 */ -typedef BOOL (WINAPI * WTCONFIGPROC)(HCTX, HWND); -typedef LRESULT (WINAPI * WTHOOKPROC)(int, WPARAM, LPARAM); -typedef WTHOOKPROC *LPWTHOOKPROC; - -#endif - -#endif - -#ifndef NOWTFUNCTIONS - -#ifndef NOWTBASICFXNS -/* BASIC FUNCTIONS */ - -#define ORD_WTInfoA 20 -#define ORD_WTInfoW 1020 -#define ORD_WTInfo WINELIB_NAME_AW(ORD_WTInfo) -#define ORD_WTOpenA 21 -#define ORD_WTOpenW 1021 -#define ORD_WTOpen WINELIB_NAME_AW(ORD_WTOpen) -#define ORD_WTClose 22 -#define ORD_WTPacketsGet 23 -#define ORD_WTPacket 24 - -UINT WINAPI WTInfoA(UINT, UINT, LPVOID); -UINT WINAPI WTInfoW(UINT, UINT, LPVOID); -#define WTInfo WINELIB_NAME_AW(WTInfo) -HCTX WINAPI WTOpenA(HWND, LPLOGCONTEXTA, BOOL); -HCTX WINAPI WTOpenW(HWND, LPLOGCONTEXTW, BOOL); -#define WTOpen WINELIB_NAME_AW(WTOpen) -BOOL WINAPI WTClose(HCTX); -int WINAPI WTPacketsGet(HCTX, int, LPVOID); -BOOL WINAPI WTPacket(HCTX, UINT, LPVOID); - -#endif - -#ifndef NOWTVISIBILITYFXNS -/* VISIBILITY FUNCTIONS */ - -#define ORD_WTEnable 40 -#define ORD_WTOverlap 41 - -BOOL WINAPI WTEnable(HCTX, BOOL); -BOOL WINAPI WTOverlap(HCTX, BOOL); - -#endif - -#ifndef NOWTCTXEDITFXNS -/* CONTEXT EDITING FUNCTIONS */ - -#define ORD_WTConfig 60 -#define ORD_WTGetA 61 -#define ORD_WTGetW 1061 -#define ORD_WTGet WINELIB_NAME_AW(ORD_WTGet) -#define ORD_WTSetA 62 -#define ORD_WTSetW 1062 -#define ORD_WTSet WINELIB_NAME_AW(ORD_WTSet) -#define ORD_WTExtGet 63 -#define ORD_WTExtSet 64 -#define ORD_WTSave 65 -#define ORD_WTRestore 66 - -BOOL WINAPI WTConfig(HCTX, HWND); -BOOL WINAPI WTGetA(HCTX, LPLOGCONTEXTA); -BOOL WINAPI WTGetW(HCTX, LPLOGCONTEXTW); -#define WTGet WINELIB_NAME_AW(WTGet) -BOOL WINAPI WTSetA(HCTX, LPLOGCONTEXTA); -BOOL WINAPI WTSetW(HCTX, LPLOGCONTEXTW); -#define WTSet WINELIB_NAME_AW(WTSet) -BOOL WINAPI WTExtGet(HCTX, UINT, LPVOID); -BOOL WINAPI WTExtSet(HCTX, UINT, LPVOID); -BOOL WINAPI WTSave(HCTX, LPVOID); -HCTX WINAPI WTRestore(HWND, LPVOID, BOOL); - -#endif - -#ifndef NOWTQUEUEFXNS -/* ADVANCED PACKET AND QUEUE FUNCTIONS */ - -#define ORD_WTPacketsPeek 80 -#define ORD_WTDataGet 81 -#define ORD_WTDataPeek 82 -#define ORD_WTQueueSizeGet 84 -#define ORD_WTQueueSizeSet 85 - -int WINAPI WTPacketsPeek(HCTX, int, LPVOID); -int WINAPI WTDataGet(HCTX, UINT, UINT, int, LPVOID, LPINT); -int WINAPI WTDataPeek(HCTX, UINT, UINT, int, LPVOID, LPINT); -int WINAPI WTQueueSizeGet(HCTX); -BOOL WINAPI WTQueueSizeSet(HCTX, int); - -#endif - -#ifndef NOWTHMGRFXNS -/* MANAGER HANDLE FUNCTIONS */ - -#define ORD_WTMgrOpen 100 -#define ORD_WTMgrClose 101 - -HMGR WINAPI WTMgrOpen(HWND, UINT); -BOOL WINAPI WTMgrClose(HMGR); - -#endif - -#ifndef NOWTMGRCTXFXNS -/* MANAGER CONTEXT FUNCTIONS */ - -#define ORD_WTMgrContextEnum 120 -#define ORD_WTMgrContextOwner 121 -#define ORD_WTMgrDefContext 122 -#define ORD_WTMgrDefContextEx 206 - -BOOL WINAPI WTMgrContextEnum(HMGR, WTENUMPROC, LPARAM); -HWND WINAPI WTMgrContextOwner(HMGR, HCTX); -HCTX WINAPI WTMgrDefContext(HMGR, BOOL); -HCTX WINAPI WTMgrDefContextEx(HMGR, UINT, BOOL); /* 1.1 */ - -#endif - -#ifndef NOWTMGRCONFIGFXNS -/* MANAGER CONFIG BOX FUNCTIONS */ - -#define ORD_WTMgrDeviceConfig 140 - -UINT WINAPI WTMgrDeviceConfig(HMGR, UINT, HWND); - -#endif - -#ifndef NOWTMGRHOOKFXNS -/* MANAGER PACKET HOOK FUNCTIONS */ - -/* OBSOLETE IN WIN32! */ - -#endif - -#ifndef NOWTMGRPREFFXNS -/* MANAGER PREFERENCE DATA FUNCTIONS */ - -#define ORD_WTMgrExt 180 -#define ORD_WTMgrCsrEnable 181 -#define ORD_WTMgrCsrButtonMap 182 -#define ORD_WTMgrCsrPressureBtnMarks 183 -#define ORD_WTMgrCsrPressureResponse 184 -#define ORD_WTMgrCsrExt 185 - -BOOL WINAPI WTMgrExt(HMGR, UINT, LPVOID); -BOOL WINAPI WTMgrCsrEnable(HMGR, UINT, BOOL); -BOOL WINAPI WTMgrCsrButtonMap(HMGR, UINT, LPBYTE, LPBYTE); -BOOL WINAPI WTMgrCsrPressureBtnMarks(HMGR, UINT, DWORD, DWORD); -BOOL WINAPI WTMgrCsrPressureResponse(HMGR, UINT, UINT *, UINT *); -BOOL WINAPI WTMgrCsrExt(HMGR, UINT, UINT, LPVOID); - -#endif - -/*********************************************************************** - * Win32 replacements for non-portable functions. - */ - -#ifndef NOWTQUEUEFXNS -/* ADVANCED PACKET AND QUEUE FUNCTIONS */ - -#define ORD_WTQueuePacketsEx 200 - -BOOL WINAPI WTQueuePacketsEx(HCTX, UINT *, UINT *); - -#endif - -#ifndef NOWTMGRCONFIGFXNS -/* MANAGER CONFIG BOX FUNCTIONS */ - -#define ORD_WTMgrConfigReplaceExA 202 -#define ORD_WTMgrConfigReplaceExW 1202 -#define ORD_WTMgrConfigReplaceEx WINELIB_NAME_AW(ORD_WTMgrConfigReplaceEx) - -BOOL WINAPI WTMgrConfigReplaceExA(HMGR, BOOL, LPSTR, LPSTR); -BOOL WINAPI WTMgrConfigReplaceExW(HMGR, BOOL, LPWSTR, LPSTR); -#define WTMgrConfigReplaceEx WINELIB_NAME_AW(WTMgrConfigReplaceEx) - -#endif - -#ifndef NOWTMGRHOOKFXNS -/* MANAGER PACKET HOOK FUNCTIONS */ - -#define ORD_WTMgrPacketHookExA 203 -#define ORD_WTMgrPacketHookExW 1203 -#define ORD_WTMgrPacketHookEx WINELIB_NAME_AW(ORD_WTMgrPacketHookEx) -#define ORD_WTMgrPacketUnhook 204 -#define ORD_WTMgrPacketHookNext 205 - -HWTHOOK WINAPI WTMgrPacketHookExA(HMGR, int, LPSTR, LPSTR); -HWTHOOK WINAPI WTMgrPacketHookExW(HMGR, int, LPWSTR, LPSTR); -#define WTMgrPacketHookEx WINELIB_NAME_AW(WTMgrPacketHookEx) -BOOL WINAPI WTMgrPacketUnhook(HWTHOOK); -LRESULT WINAPI WTMgrPacketHookNext(HWTHOOK, int, WPARAM, LPARAM); - -#endif - -#ifndef NOWTMGRPREFFXNS -/* MANAGER PREFERENCE DATA FUNCTIONS */ - -#define ORD_WTMgrCsrPressureBtnMarksEx 201 - -BOOL WINAPI WTMgrCsrPressureBtnMarksEx(HMGR, UINT, UINT *, UINT *); - -#endif - -#endif - -#ifdef __cplusplus -} /* extern "C" */ -#endif /* defined(__cplusplus) */ - -#endif /* defined(__WINE_WINTAB_H */ diff --git a/reactos/dll/win32/wintab32/wintab32.c b/reactos/dll/win32/wintab32/wintab32.c deleted file mode 100644 index b52b429d949..00000000000 --- a/reactos/dll/win32/wintab32/wintab32.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - * WinTab32 library - * - * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include - -#include "windef.h" -#include "winbase.h" -#include "wingdi.h" -#include "winuser.h" -#include "winerror.h" -#include "wintab.h" -#include "wintab_internal.h" -#include "wine/debug.h" - -WINE_DEFAULT_DEBUG_CHANNEL(wintab32); - -HWND hwndDefault = NULL; -static const WCHAR - WC_TABLETCLASSNAME[] = {'W','i','n','e','T','a','b','l','e','t','C','l','a','s','s',0}; -CRITICAL_SECTION csTablet; - -int (CDECL *pLoadTabletInfo)(HWND hwnddefault) = NULL; -int (CDECL *pGetCurrentPacket)(LPWTPACKET packet) = NULL; -int (CDECL *pAttachEventQueueToTablet)(HWND hOwner) = NULL; -UINT (CDECL *pWTInfoW)(UINT wCategory, UINT nIndex, LPVOID lpOutput) = NULL; - -static LRESULT WINAPI TABLET_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, - LPARAM lParam); - -static VOID TABLET_Register(void) -{ - WNDCLASSW wndClass; - ZeroMemory(&wndClass, sizeof(WNDCLASSW)); - wndClass.style = CS_GLOBALCLASS; - wndClass.lpfnWndProc = TABLET_WindowProc; - wndClass.cbClsExtra = 0; - wndClass.cbWndExtra = 0; - wndClass.hCursor = NULL; - wndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW +1); - wndClass.lpszClassName = WC_TABLETCLASSNAME; - RegisterClassW(&wndClass); -} - -static VOID TABLET_Unregister(void) -{ - UnregisterClassW(WC_TABLETCLASSNAME, NULL); -} - -BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpReserved) -{ - static const WCHAR name[] = {'T','a','b','l','e','t',0}; - HMODULE hx11drv; - - TRACE("%p, %x, %p\n",hInstDLL,fdwReason,lpReserved); - switch (fdwReason) - { - case DLL_PROCESS_ATTACH: - TRACE("Initialization\n"); - DisableThreadLibraryCalls(hInstDLL); - InitializeCriticalSection(&csTablet); - csTablet.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": csTablet"); - hx11drv = GetModuleHandleA("winex11.drv"); - if (hx11drv) - { - pLoadTabletInfo = (void *)GetProcAddress(hx11drv, "LoadTabletInfo"); - pAttachEventQueueToTablet = (void *)GetProcAddress(hx11drv, "AttachEventQueueToTablet"); - pGetCurrentPacket = (void *)GetProcAddress(hx11drv, "GetCurrentPacket"); - pWTInfoW = (void *)GetProcAddress(hx11drv, "WTInfoW"); - TABLET_Register(); - hwndDefault = CreateWindowW(WC_TABLETCLASSNAME, name, - WS_POPUPWINDOW,0,0,0,0,0,0,hInstDLL,0); - } - else - return FALSE; - break; - case DLL_PROCESS_DETACH: - TRACE("Detaching\n"); - if (hwndDefault) - { - DestroyWindow(hwndDefault); - hwndDefault = 0; - } - TABLET_Unregister(); - csTablet.DebugInfo->Spare[0] = 0; - DeleteCriticalSection(&csTablet); - break; - } - return TRUE; -} - - -/* - * The window proc for the default TABLET window - */ -static LRESULT WINAPI TABLET_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, - LPARAM lParam) -{ - TRACE("Incoming Message 0x%x (0x%08x, 0x%08x)\n", uMsg, (UINT)wParam, - (UINT)lParam); - - switch(uMsg) - { - case WM_NCCREATE: - return TRUE; - - case WT_PACKET: - { - WTPACKET packet; - LPOPENCONTEXT handler; - pGetCurrentPacket(&packet); - handler = AddPacketToContextQueue(&packet,(HWND)lParam); - if (handler && handler->context.lcOptions & CXO_MESSAGES) - TABLET_PostTabletMessage(handler, _WT_PACKET(handler->context.lcMsgBase), - (WPARAM)packet.pkSerialNumber, - (LPARAM)handler->handle, FALSE); - break; - } - case WT_PROXIMITY: - { - WTPACKET packet; - LPOPENCONTEXT handler; - pGetCurrentPacket(&packet); - handler = AddPacketToContextQueue(&packet,(HWND)wParam); - if (handler) - TABLET_PostTabletMessage(handler, WT_PROXIMITY, - (WPARAM)handler->handle, lParam, TRUE); - break; - } - } - return 0; -} diff --git a/reactos/dll/win32/wintab32/wintab32.rbuild b/reactos/dll/win32/wintab32/wintab32.rbuild deleted file mode 100644 index 10da535839b..00000000000 --- a/reactos/dll/win32/wintab32/wintab32.rbuild +++ /dev/null @@ -1,13 +0,0 @@ - - - . - include/reactos/wine - - context.c - manager.c - wintab32.c - wine - user32 - kernel32 - ntdll - diff --git a/reactos/dll/win32/wintab32/wintab32.spec b/reactos/dll/win32/wintab32/wintab32.spec deleted file mode 100644 index 03312e7787d..00000000000 --- a/reactos/dll/win32/wintab32/wintab32.spec +++ /dev/null @@ -1,44 +0,0 @@ -20 stdcall WTInfoA(long long ptr) -21 stdcall WTOpenA(long ptr long) -22 stdcall WTClose(long) -23 stdcall WTPacketsGet(long long ptr) -24 stdcall WTPacket(long long ptr) -40 stdcall WTEnable(long long) -41 stdcall WTOverlap(long long) -60 stdcall WTConfig(long long) -61 stdcall WTGetA(long ptr) -62 stdcall WTSetA(long ptr) -63 stdcall WTExtGet(long long ptr) -64 stdcall WTExtSet(long long ptr) -65 stdcall WTSave(long ptr) -66 stdcall WTRestore(long ptr long) -80 stdcall WTPacketsPeek(long long ptr) -81 stdcall WTDataGet(long long long long ptr ptr) -82 stdcall WTDataPeek(long long long long ptr ptr) -84 stdcall WTQueueSizeGet(long) -85 stdcall WTQueueSizeSet(long long) -100 stdcall WTMgrOpen(long long) -101 stdcall WTMgrClose(long) -120 stdcall WTMgrContextEnum(long ptr long) -121 stdcall WTMgrContextOwner(long long) -122 stdcall WTMgrDefContext(long long) -140 stdcall WTMgrDeviceConfig(long long long) -180 stdcall WTMgrExt(long long ptr) -181 stdcall WTMgrCsrEnable(long long long) -182 stdcall WTMgrCsrButtonMap(long long ptr ptr) -183 stdcall WTMgrCsrPressureBtnMarks(long long long long) -184 stdcall WTMgrCsrPressureResponse(long long ptr ptr) -185 stdcall WTMgrCsrExt(long long long ptr) -200 stdcall WTQueuePacketsEx(long ptr ptr) -201 stdcall WTMgrCsrPressureBtnMarksEx(long long ptr ptr) -202 stdcall WTMgrConfigReplaceExA(long long str str) -203 stdcall WTMgrPacketHookExA(long long str str) -204 stdcall WTMgrPacketUnhook(long) -205 stdcall WTMgrPacketHookNext(long long long long) -206 stdcall WTMgrDefContextEx(long long long) -1020 stdcall WTInfoW(long long ptr) -1021 stdcall WTOpenW(long ptr long) -1061 stdcall WTGetW(long ptr) -1062 stdcall WTSetW(long ptr) -1202 stdcall WTMgrConfigReplaceExW(long long wstr str) -1203 stdcall WTMgrPacketHookExW(long long wstr str) diff --git a/reactos/dll/win32/wintab32/wintab_internal.h b/reactos/dll/win32/wintab32/wintab_internal.h deleted file mode 100644 index b0a2e8fd58f..00000000000 --- a/reactos/dll/win32/wintab32/wintab_internal.h +++ /dev/null @@ -1,162 +0,0 @@ -/* - * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, 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; - LOGCONTEXTW 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); - -/* X11drv functions */ -extern int (CDECL *pLoadTabletInfo)(HWND hwnddefault); -extern int (CDECL *pGetCurrentPacket)(LPWTPACKET packet); -extern int (CDECL *pAttachEventQueueToTablet)(HWND hOwner); -extern UINT (CDECL *pWTInfoW)(UINT wCategory, UINT nIndex, LPVOID lpOutput); - -extern HWND hwndDefault; -extern CRITICAL_SECTION csTablet; - -#endif /* __WINE_WINTAB_INTERNAL_H */