123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- /*----------------------------------------------------------------------------
- NAME
- Utils.c
- PURPOSE
- Some general-purpose functions for the WinTab demos.
- COPYRIGHT
- Copyright (c) Wacom Company, Ltd. 2014 All Rights Reserved
- All rights reserved.
- The text and information contained in this file may be freely used,
- copied, or distributed without compensation or licensing restrictions.
- ---------------------------------------------------------------------------- */
- #include "wintab_utils.h"
- #ifdef WACOM_DEBUG
- void WacomTrace(char* lpszFormat, ...);
- #define WACOM_ASSERT( x ) assert( x )
- #define WACOM_TRACE(...) WacomTrace(__VA_ARGS__)
- #else
- #define WACOM_TRACE(...)
- #define WACOM_ASSERT( x )
- #endif // WACOM_DEBUG
- //////////////////////////////////////////////////////////////////////////////
- HINSTANCE ghWintab = NULL;
- WTINFOA gpWTInfoA = NULL;
- WTOPENA gpWTOpenA = NULL;
- WTGETA gpWTGetA = NULL;
- WTSETA gpWTSetA = NULL;
- WTCLOSE gpWTClose = NULL;
- WTPACKET gpWTPacket = NULL;
- WTENABLE gpWTEnable = NULL;
- WTOVERLAP gpWTOverlap = NULL;
- WTSAVE gpWTSave = NULL;
- WTCONFIG gpWTConfig = NULL;
- WTRESTORE gpWTRestore = NULL;
- WTEXTSET gpWTExtSet = NULL;
- WTEXTGET gpWTExtGet = NULL;
- WTQUEUESIZESET gpWTQueueSizeSet = NULL;
- WTDATAPEEK gpWTDataPeek = NULL;
- WTPACKETSGET gpWTPacketsGet = NULL;
- // TODO - add more wintab32 function pointers as needed
- char* pszProgramName = NULL;
- #define GETPROCADDRESS(type, func) \
- gp##func = (type)GetProcAddress(ghWintab, #func); \
- if (!gp##func){ WACOM_ASSERT(FALSE); UnloadWintab(); return FALSE; }
- //////////////////////////////////////////////////////////////////////////////
- // Purpose
- // Find wintab32.dll and load it.
- // Find the exported functions we need from it.
- //
- // Returns
- // TRUE on success.
- // FALSE on failure.
- //
- BOOL LoadWintab(void)
- {
- ghWintab = LoadLibraryA("Wintab32.dll");
- if (!ghWintab)
- {
- DWORD err = GetLastError();
- WACOM_TRACE("LoadLibrary error: %i\n", err);
- OutputDebugStringA("Could not load Wintab32.dll");
- return FALSE;
- }
- // Explicitly find the exported Wintab functions in which we are interested.
- // We are using the ASCII, not unicode versions (where applicable).
- GETPROCADDRESS(WTOPENA, WTOpenA);
- GETPROCADDRESS(WTINFOA, WTInfoA);
- GETPROCADDRESS(WTGETA, WTGetA);
- GETPROCADDRESS(WTSETA, WTSetA);
- GETPROCADDRESS(WTPACKET, WTPacket);
- GETPROCADDRESS(WTCLOSE, WTClose);
- GETPROCADDRESS(WTENABLE, WTEnable);
- GETPROCADDRESS(WTOVERLAP, WTOverlap);
- GETPROCADDRESS(WTSAVE, WTSave);
- GETPROCADDRESS(WTCONFIG, WTConfig);
- GETPROCADDRESS(WTRESTORE, WTRestore);
- GETPROCADDRESS(WTEXTSET, WTExtSet);
- GETPROCADDRESS(WTEXTGET, WTExtGet);
- GETPROCADDRESS(WTQUEUESIZESET, WTQueueSizeSet);
- GETPROCADDRESS(WTDATAPEEK, WTDataPeek);
- GETPROCADDRESS(WTPACKETSGET, WTPacketsGet);
- // TODO - don't forget to NULL out pointers in UnloadWintab().
- return TRUE;
- }
- //////////////////////////////////////////////////////////////////////////////
- // Purpose
- // Uninitializes use of wintab32.dll
- //
- // Returns
- // Nothing.
- //
- void UnloadWintab(void)
- {
- WACOM_TRACE("UnloadWintab()\n");
- if (ghWintab)
- {
- FreeLibrary(ghWintab);
- ghWintab = NULL;
- }
- gpWTOpenA = NULL;
- gpWTClose = NULL;
- gpWTInfoA = NULL;
- gpWTPacket = NULL;
- gpWTEnable = NULL;
- gpWTOverlap = NULL;
- gpWTSave = NULL;
- gpWTConfig = NULL;
- gpWTGetA = NULL;
- gpWTSetA = NULL;
- gpWTRestore = NULL;
- gpWTExtSet = NULL;
- gpWTExtGet = NULL;
- gpWTQueueSizeSet = NULL;
- gpWTDataPeek = NULL;
- gpWTPacketsGet = NULL;
- }
- #ifdef WACOM_DEBUG
- //////////////////////////////////////////////////////////////////////////////
- void WacomTrace(char* lpszFormat, ...)
- {
- char szTraceMessage[128];
- int nBytesWritten;
- va_list args;
- WACOM_ASSERT(lpszFormat);
- va_start(args, lpszFormat);
- nBytesWritten = _vsnprintf(szTraceMessage, sizeof(szTraceMessage) - 1,
- lpszFormat, args);
- if (nBytesWritten > 0)
- {
- OutputDebugStringA(szTraceMessage);
- }
- va_end(args);
- }
- #endif // WACOM_DEBUG
|