Build Wintab support always on Windows. Don't require the Wintab SDK.
2007-01-19 Tor Lillqvist <tml@novell.com> Build Wintab support always on Windows. Don't require the Wintab SDK. * configure.in: Drop the --with-wintab option. Drop the HAVE_WINTAB feature test macro and Automake variable. * acconfig.h * config.h.win32.in: Drop HAVE_WINTAB. * gdk/win32/gdkevents-win32.c * gdk/win32/gdkinput.c * gdk/win32/gdkinput-win32.h * gdk/win32/gdkinput-win32.c * gdk/win32/gdkmain-win32.c: Make HAVE_WINTAB ifdef blocks unconditional. * gdk/win32/gdkinput-win32.c (_gdk_input_wintab_init_check): Try to load wintab32.dll dynamically here. If it is found look up the handful Wintab functions we use. (rest of file): Use these function pointers instead of calling the functions from wntab32x.lib. The code in wntab32x.lib did the same thing anyway: tried to load wintab32.dll, and looked up the addresses of the actual functions from it. * gdk/Makefile.am * gdk/win32/Makefile.am: Drop the libwntab32x hacks. * gdk/win32/wintab.h * gdk/win32/pktdef.h: New files. Copied from the Wintab SDK. Copyright blurb says: "The text and information contained in this file may be freely used, copied, or distributed without compensation or licensing restrictions." * README.win32: Update a bit. Remove the text about the Wintab SDK. svn path=/trunk/; revision=17186
This commit is contained in:
		
				
					committed by
					
						
						Tor Lillqvist
					
				
			
			
				
	
			
			
			
						parent
						
							f1ce05caa9
						
					
				
				
					commit
					f6b4585c98
				
			
							
								
								
									
										38
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								ChangeLog
									
									
									
									
									
								
							@ -1,3 +1,41 @@
 | 
				
			|||||||
 | 
					2007-01-19  Tor Lillqvist  <tml@novell.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Build Wintab support always on Windows. Don't require the Wintab
 | 
				
			||||||
 | 
						SDK.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						* configure.in: Drop the --with-wintab option. Drop the
 | 
				
			||||||
 | 
						HAVE_WINTAB feature test macro and Automake variable.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						* acconfig.h
 | 
				
			||||||
 | 
						* config.h.win32.in: Drop HAVE_WINTAB.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						* gdk/win32/gdkevents-win32.c 
 | 
				
			||||||
 | 
						* gdk/win32/gdkinput.c 
 | 
				
			||||||
 | 
						* gdk/win32/gdkinput-win32.h 	
 | 
				
			||||||
 | 
						* gdk/win32/gdkinput-win32.c
 | 
				
			||||||
 | 
						* gdk/win32/gdkmain-win32.c: Make HAVE_WINTAB ifdef blocks
 | 
				
			||||||
 | 
						unconditional.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						* gdk/win32/gdkinput-win32.c (_gdk_input_wintab_init_check): Try
 | 
				
			||||||
 | 
						to load wintab32.dll dynamically here. If it is found look up the
 | 
				
			||||||
 | 
						handful Wintab functions we use.
 | 
				
			||||||
 | 
						(rest of file): Use these function pointers instead of calling the
 | 
				
			||||||
 | 
						functions from wntab32x.lib. The code in wntab32x.lib did the same
 | 
				
			||||||
 | 
						thing anyway: tried to load wintab32.dll, and looked up the
 | 
				
			||||||
 | 
						addresses of the actual functions from it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						* gdk/Makefile.am
 | 
				
			||||||
 | 
						* gdk/win32/Makefile.am: Drop the libwntab32x hacks.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						* gdk/win32/wintab.h
 | 
				
			||||||
 | 
						* gdk/win32/pktdef.h: New files. Copied from the Wintab
 | 
				
			||||||
 | 
						SDK. Copyright blurb says: "The text and information contained in
 | 
				
			||||||
 | 
						this file may be freely used, copied, or distributed without
 | 
				
			||||||
 | 
						compensation or licensing restrictions."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						* README.win32: Update a bit. Remove the text about the Wintab
 | 
				
			||||||
 | 
						SDK.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
2007-01-18  Tor Lillqvist  <tml@novell.com>
 | 
					2007-01-18  Tor Lillqvist  <tml@novell.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	* gdk-pixbuf/Makefile.am
 | 
						* gdk-pixbuf/Makefile.am
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										46
									
								
								README.win32
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								README.win32
									
									
									
									
									
								
							@ -19,25 +19,21 @@ There are two ways to build GTK+ for win32.
 | 
				
			|||||||
Makefiles (which use libtool and gcc to do the compilation). I use
 | 
					Makefiles (which use libtool and gcc to do the compilation). I use
 | 
				
			||||||
this myself, but it can be hard to setup correctly.
 | 
					this myself, but it can be hard to setup correctly.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Personally I run configure with:
 | 
					Note that I first always edit the ltmain.sh file like this:
 | 
				
			||||||
CC='gcc -mpentium -fnative-struct' CPPFLAGS='-I/target/include' CFLAGS=-O2 LDFLAGS='-L/target/lib' ./configure --disable-static --prefix=/target --with-gdktarget=win32 --with-wintab=/src/wtkit126 --with-ie55=/src/workshop/ie55_lib --host=i386-pc-mingw32
 | 
					sed -e 's/need_relink=yes/need_relink=no # no way --tml/' <ltmain.sh >ltmain.temp && mv ltmain.temp ltmain.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Then, in theory, you can just say "make", like on Unix. In reality,
 | 
					Personally I run configure with something like:
 | 
				
			||||||
there are a few hickups that require manual intervention, and it's
 | 
					CC='gcc -mtune=pentium3 -mthreads' CPPFLAGS='-I/opt/gnuwin32/include -I/opt/gnu/include -I/opt/misc/include' CFLAGS=-g LIBS=-lintl LDFLAGS='-L/opt/gnuwin32/lib -L/opt/gnu/lib -L/opt/misc/lib' ./configure --prefix=c:/devel/target/HEAD --with-gdktarget=win32 --enable-maintainer-mode --enable-debug=yes --enable-explicit-deps=no --with-included-loaders=png,bmp,gif,ico,jpeg,tiff,xpm
 | 
				
			||||||
best to run make separately in each subdirectory. At least for me,
 | 
					 | 
				
			||||||
when libtool creates an .exe file, it puts the real .exe in the .libs
 | 
					 | 
				
			||||||
directory, and leaves a wrapper .exe in the work directory. For some
 | 
					 | 
				
			||||||
reason that wrapper doesn't work for me, it doesn't do anything. So, I
 | 
					 | 
				
			||||||
always do a "cp .libs/*.exe ." after running a make that has produced
 | 
					 | 
				
			||||||
some exes.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
Another issue is with the gdk-pixbuf.loaders file. It's probably best
 | 
					Then you should just be able to run "make", like on Unix.
 | 
				
			||||||
to do a "make install" in the gdk-pixbuf directory, and let that set
 | 
					
 | 
				
			||||||
up a mostly correct gdk-pixbuf.loaders in the target directory. Then
 | 
					An issue is with the gdk-pixbuf.loaders file. It's probably best to do
 | 
				
			||||||
copy that back to the source directory. It's needed in gtk/stock-icons
 | 
					a "make install" in the gdk-pixbuf directory, and let that set up a
 | 
				
			||||||
 | 
					mostly correct gdk-pixbuf.loaders in the target directory. Then copy
 | 
				
			||||||
 | 
					that back to the source directory. It's needed in gtk/stock-icons
 | 
				
			||||||
where make runs gdk-pixbuf-csource.
 | 
					where make runs gdk-pixbuf-csource.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Etc, you get the idea. It can be a bit of a pain.
 | 
					Etc, you get the idea.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
2) Use the Microsoft compiler, cl and Make, nmake. Say nmake -f
 | 
					2) Use the Microsoft compiler, cl and Make, nmake. Say nmake -f
 | 
				
			||||||
makefile.msc in gdk and gtk. Be prepared to manually edit various
 | 
					makefile.msc in gdk and gtk. Be prepared to manually edit various
 | 
				
			||||||
@ -72,22 +68,8 @@ all. Possible ways to fix this are being investigated.
 | 
				
			|||||||
Wintab
 | 
					Wintab
 | 
				
			||||||
======
 | 
					======
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The tablet support uses the Wintab API. The Wintab development kit can
 | 
					The tablet support uses the Wintab API. Unfortunately it seems that
 | 
				
			||||||
be downloaded from http://www.pointing.com. Pass the --with-wintab
 | 
					only Wacom tablet software comes with the required wintab32.dll
 | 
				
			||||||
flag to configure if you use that. If you use nmake and you don't care
 | 
					nowadays.
 | 
				
			||||||
for Wintab, undefine HAVE_WINTAB in config.h.win32 and remove
 | 
					 | 
				
			||||||
references to the wntab32x library from the makefile before building.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ActiveIMM
 | 
					 | 
				
			||||||
=========
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
If you want to build a GTK+ that supports ActiveIMM (the Input Method
 | 
					 | 
				
			||||||
Manager for non-EastAsia locales that can be used on Win9x/NT4), you
 | 
					 | 
				
			||||||
need the dimm.h header file. That is somewhat difficult to find, but
 | 
					 | 
				
			||||||
http://msdn.microsoft.com/downloads/samples/internet/wizard/ seems to
 | 
					 | 
				
			||||||
be a good place to look nowadays. If you use "autoconfiscated" build,
 | 
					 | 
				
			||||||
pass the --with-ie55 flag to configure specifying the location of the
 | 
					 | 
				
			||||||
ie55_lib directory created by downloading the IE5.5 headers and libs
 | 
					 | 
				
			||||||
from the above URL.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
--Tor Lillqvist <tml@iki.fi>
 | 
					--Tor Lillqvist <tml@iki.fi>
 | 
				
			||||||
 | 
				
			|||||||
@ -33,7 +33,6 @@
 | 
				
			|||||||
#undef HAVE_SYS_TIME_H
 | 
					#undef HAVE_SYS_TIME_H
 | 
				
			||||||
#undef HAVE_XFREE_XINERAMA
 | 
					#undef HAVE_XFREE_XINERAMA
 | 
				
			||||||
#undef HAVE_XINERAMA
 | 
					#undef HAVE_XINERAMA
 | 
				
			||||||
#undef HAVE_WINTAB
 | 
					 | 
				
			||||||
#undef HAVE_XCONVERTCASE
 | 
					#undef HAVE_XCONVERTCASE
 | 
				
			||||||
#undef HAVE_XFT
 | 
					#undef HAVE_XFT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -40,7 +40,6 @@
 | 
				
			|||||||
#endif /* _MSC_VER */
 | 
					#endif /* _MSC_VER */
 | 
				
			||||||
/* #undef HAVE_XFREE_XINERAMA */
 | 
					/* #undef HAVE_XFREE_XINERAMA */
 | 
				
			||||||
/* #undef HAVE_XINERAMA */
 | 
					/* #undef HAVE_XINERAMA */
 | 
				
			||||||
#define HAVE_WINTAB 1
 | 
					 | 
				
			||||||
/* #undef HAVE_XCONVERTCASE */
 | 
					/* #undef HAVE_XCONVERTCASE */
 | 
				
			||||||
/* #undef HAVE_XFT */
 | 
					/* #undef HAVE_XFT */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										37
									
								
								configure.in
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								configure.in
									
									
									
									
									
								
							@ -211,9 +211,6 @@ AC_ARG_ENABLE(visibility,
 | 
				
			|||||||
AC_ARG_WITH(xinput,
 | 
					AC_ARG_WITH(xinput,
 | 
				
			||||||
            [AC_HELP_STRING([--with-xinput=@<:@no/yes@:>@], [support XInput])])
 | 
					            [AC_HELP_STRING([--with-xinput=@<:@no/yes@:>@], [support XInput])])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AC_ARG_WITH(wintab,
 | 
					 | 
				
			||||||
            [AC_HELP_STRING([--with-wintab=DIRECTORY],
 | 
					 | 
				
			||||||
                            [use Wintab API with win32 backend])])
 | 
					 | 
				
			||||||
if test "$platform_win32" = yes; then
 | 
					if test "$platform_win32" = yes; then
 | 
				
			||||||
  gdktarget=win32
 | 
					  gdktarget=win32
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
@ -568,33 +565,6 @@ AC_CHECK_HEADERS(pwd.h, AC_DEFINE(HAVE_PWD_H))
 | 
				
			|||||||
AC_CHECK_HEADERS(sys/time.h, AC_DEFINE(HAVE_SYS_TIME_H))
 | 
					AC_CHECK_HEADERS(sys/time.h, AC_DEFINE(HAVE_SYS_TIME_H))
 | 
				
			||||||
AC_CHECK_HEADERS(unistd.h, AC_DEFINE(HAVE_UNISTD_H))
 | 
					AC_CHECK_HEADERS(unistd.h, AC_DEFINE(HAVE_UNISTD_H))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if test "${with_wintab+set}" = set && test $with_wintab != no; then
 | 
					 | 
				
			||||||
  AC_MSG_CHECKING([for wintab.h])
 | 
					 | 
				
			||||||
  saved_CFLAGS="$CFLAGS"
 | 
					 | 
				
			||||||
  CFLAGS="$CFLAGS -I$with_wintab/include"
 | 
					 | 
				
			||||||
  AC_TRY_COMPILE([#include <windows.h>
 | 
					 | 
				
			||||||
#include <wintab.h>], 
 | 
					 | 
				
			||||||
   [],
 | 
					 | 
				
			||||||
   [AC_MSG_RESULT(yes)
 | 
					 | 
				
			||||||
    AC_MSG_CHECKING([for wntab32x.lib])
 | 
					 | 
				
			||||||
    if test -f $with_wintab/lib/i386/wntab32x.lib ; then
 | 
					 | 
				
			||||||
      AC_MSG_RESULT(yes)
 | 
					 | 
				
			||||||
      have_wintab=yes
 | 
					 | 
				
			||||||
      AC_DEFINE(HAVE_WINTAB)
 | 
					 | 
				
			||||||
      WINTAB_LIB="$with_wintab/lib/i386/wntab32x.lib"
 | 
					 | 
				
			||||||
      AC_SUBST(WINTAB_LIB)
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
      AC_MSG_RESULT(no)
 | 
					 | 
				
			||||||
      CFLAGS="$saved_cflags"
 | 
					 | 
				
			||||||
      have_wintab=no
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
   [AC_MSG_RESULT(no)
 | 
					 | 
				
			||||||
    CFLAGS="$saved_cflags"
 | 
					 | 
				
			||||||
    have_wintab=no])
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
AM_CONDITIONAL(HAVE_WINTAB, test x$have_wintab = xyes)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
saved_cflags="$CFLAGS"
 | 
					saved_cflags="$CFLAGS"
 | 
				
			||||||
saved_ldflags="$LDFLAGS"
 | 
					saved_ldflags="$LDFLAGS"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1341,13 +1311,6 @@ else
 | 
				
			|||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if test "x$gdktarget" = "xwin32"; then
 | 
					if test "x$gdktarget" = "xwin32"; then
 | 
				
			||||||
  # We start off with the libraries from Pango
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if test x$have_wintab = xyes; then
 | 
					 | 
				
			||||||
    GDK_WIN32_EXTRA_CFLAGS="-I $with_wintab/include"
 | 
					 | 
				
			||||||
    AC_SUBST(GDK_WIN32_EXTRA_CFLAGS)
 | 
					 | 
				
			||||||
  fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -lgdi32 -user32 -limm32 -lshell32 -lole32 -Wl,-luuid"
 | 
					  GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -lgdi32 -user32 -limm32 -lshell32 -lole32 -Wl,-luuid"
 | 
				
			||||||
  AM_CONDITIONAL(USE_WIN32, true)
 | 
					  AM_CONDITIONAL(USE_WIN32, true)
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
 | 
				
			|||||||
@ -159,9 +159,6 @@ libgdk_win32_2_0_la_LIBADD = win32/libgdk-win32.la $(GDK_DEP_LIBS) \
 | 
				
			|||||||
  $(top_builddir)/gdk-pixbuf/libgdk_pixbuf-$(GTK_API_VERSION).la
 | 
					  $(top_builddir)/gdk-pixbuf/libgdk_pixbuf-$(GTK_API_VERSION).la
 | 
				
			||||||
libgdk_win32_2_0_la_DEPENDENCIES = win32/libgdk-win32.la win32/rc/gdk-win32-res.o gdk.def
 | 
					libgdk_win32_2_0_la_DEPENDENCIES = win32/libgdk-win32.la win32/rc/gdk-win32-res.o gdk.def
 | 
				
			||||||
libgdk_win32_2_0_la_LDFLAGS = -Wl,win32/rc/gdk-win32-res.o -export-symbols $(srcdir)/gdk.def $(LDADD)
 | 
					libgdk_win32_2_0_la_LDFLAGS = -Wl,win32/rc/gdk-win32-res.o -export-symbols $(srcdir)/gdk.def $(LDADD)
 | 
				
			||||||
if HAVE_WINTAB
 | 
					 | 
				
			||||||
libgdk_win32_2_0_la_LDFLAGS += -Wl,win32/libwntab32x.a
 | 
					 | 
				
			||||||
endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
if OS_WIN32
 | 
					if OS_WIN32
 | 
				
			||||||
install-def-file: gdk.def
 | 
					install-def-file: gdk.def
 | 
				
			||||||
 | 
				
			|||||||
@ -15,15 +15,6 @@ INCLUDES = \
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
LDADDS = $(GDK_DEP_LIBS)
 | 
					LDADDS = $(GDK_DEP_LIBS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if HAVE_WINTAB
 | 
					 | 
				
			||||||
libwntab32x_a = libwntab32x.a
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
libwntab32x.a: $(WINTAB_LIB)
 | 
					 | 
				
			||||||
	cp $< $@
 | 
					 | 
				
			||||||
endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
noinst_DATA = $(libwntab32x_a)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
noinst_LTLIBRARIES = libgdk-win32.la
 | 
					noinst_LTLIBRARIES = libgdk-win32.la
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SUBDIRS=rc
 | 
					SUBDIRS=rc
 | 
				
			||||||
@ -63,7 +54,9 @@ libgdk_win32_la_SOURCES = \
 | 
				
			|||||||
	gdkwin32.h \
 | 
						gdkwin32.h \
 | 
				
			||||||
	gdkwin32id.c \
 | 
						gdkwin32id.c \
 | 
				
			||||||
	gdkwindow-win32.c \
 | 
						gdkwindow-win32.c \
 | 
				
			||||||
	gdkwindow-win32.h
 | 
						gdkwindow-win32.h \
 | 
				
			||||||
 | 
						wintab.h \
 | 
				
			||||||
 | 
						pktdef.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
libgdkinclude_HEADERS =		\
 | 
					libgdkinclude_HEADERS =		\
 | 
				
			||||||
	gdkwin32.h
 | 
						gdkwin32.h
 | 
				
			||||||
 | 
				
			|||||||
@ -3442,7 +3442,6 @@ gdk_event_translate (MSG  *msg,
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_WINTAB
 | 
					 | 
				
			||||||
    case WM_ACTIVATE:
 | 
					    case WM_ACTIVATE:
 | 
				
			||||||
      /* Bring any tablet contexts to the top of the overlap order when
 | 
					      /* Bring any tablet contexts to the top of the overlap order when
 | 
				
			||||||
       * one of our windows is activated.
 | 
					       * one of our windows is activated.
 | 
				
			||||||
@ -3483,7 +3482,6 @@ gdk_event_translate (MSG  *msg,
 | 
				
			|||||||
      else
 | 
					      else
 | 
				
			||||||
	gdk_event_free (event);
 | 
						gdk_event_free (event);
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
done:
 | 
					done:
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
/* GDK - The GIMP Drawing Kit
 | 
					/* GDK - The GIMP Drawing Kit
 | 
				
			||||||
 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
 | 
					 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
 | 
				
			||||||
 * Copyright (C) 1998-2002 Tor Lillqvist
 | 
					 * Copyright (C) 1998-2007 Tor Lillqvist
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * This library is free software; you can redistribute it and/or
 | 
					 * This library is free software; you can redistribute it and/or
 | 
				
			||||||
 * modify it under the terms of the GNU Lesser General Public
 | 
					 * modify it under the terms of the GNU Lesser General Public
 | 
				
			||||||
@ -37,8 +37,6 @@
 | 
				
			|||||||
#include "gdkprivate-win32.h"
 | 
					#include "gdkprivate-win32.h"
 | 
				
			||||||
#include "gdkinput-win32.h"
 | 
					#include "gdkinput-win32.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_WINTAB
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define PACKETDATA (PK_CONTEXT | PK_CURSOR | PK_BUTTONS | PK_X | PK_Y  | PK_NORMAL_PRESSURE | PK_ORIENTATION)
 | 
					#define PACKETDATA (PK_CONTEXT | PK_CURSOR | PK_BUTTONS | PK_X | PK_Y  | PK_NORMAL_PRESSURE | PK_ORIENTATION)
 | 
				
			||||||
#define PACKETMODE (PK_BUTTONS)
 | 
					#define PACKETMODE (PK_BUTTONS)
 | 
				
			||||||
#include <pktdef.h>
 | 
					#include <pktdef.h>
 | 
				
			||||||
@ -47,37 +45,35 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#define PROXIMITY_OUT_DELAY 200 /* In milliseconds, see set_ignore_core */
 | 
					#define PROXIMITY_OUT_DELAY 200 /* In milliseconds, see set_ignore_core */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if defined(HAVE_WINTAB) || defined(HAVE_WHATEVER_OTHER)
 | 
					 | 
				
			||||||
#define HAVE_SOME_XINPUT
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define TWOPI (2.*G_PI)
 | 
					#define TWOPI (2.*G_PI)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Forward declarations */
 | 
					/* Forward declarations */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_WINTAB
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static GdkDevicePrivate *gdk_input_find_dev_from_ctx (HCTX hctx,
 | 
					static GdkDevicePrivate *gdk_input_find_dev_from_ctx (HCTX hctx,
 | 
				
			||||||
						      UINT id);
 | 
											      UINT id);
 | 
				
			||||||
static GList     *wintab_contexts = NULL;
 | 
					static GList     *wintab_contexts = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static GdkWindow *wintab_window = NULL;
 | 
					static GdkWindow *wintab_window = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* HAVE_WINTAB */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef HAVE_SOME_XINPUT
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static GdkWindow *x_grab_window = NULL; /* Window that currently holds
 | 
					static GdkWindow *x_grab_window = NULL; /* Window that currently holds
 | 
				
			||||||
					 * the extended inputs grab
 | 
										 * the extended inputs grab
 | 
				
			||||||
					 */
 | 
										 */
 | 
				
			||||||
static GdkEventMask x_grab_mask;
 | 
					static GdkEventMask x_grab_mask;
 | 
				
			||||||
static gboolean x_grab_owner_events;
 | 
					static gboolean x_grab_owner_events;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* HAVE_SOME_XINPUT */
 | 
					typedef UINT (WINAPI *t_WTInfoA) (UINT a, UINT b, LPVOID c);
 | 
				
			||||||
 | 
					typedef BOOL (WINAPI *t_WTEnable) (HCTX a, BOOL b);
 | 
				
			||||||
 | 
					typedef HCTX (WINAPI *t_WTOpenA) (HWND a, LPLOGCONTEXTA b, BOOL c);
 | 
				
			||||||
 | 
					typedef BOOL (WINAPI *t_WTOverlap) (HCTX a, BOOL b);
 | 
				
			||||||
 | 
					typedef BOOL (WINAPI *t_WTPacket) (HCTX a, UINT b, LPVOID c);
 | 
				
			||||||
 | 
					typedef int (WINAPI *t_WTQueueSizeSet) (HCTX a, int b);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_WINTAB
 | 
					static t_WTInfoA p_WTInfoA;
 | 
				
			||||||
 | 
					static t_WTEnable p_WTEnable;
 | 
				
			||||||
 | 
					static t_WTOpenA p_WTOpenA;
 | 
				
			||||||
 | 
					static t_WTOverlap p_WTOverlap;
 | 
				
			||||||
 | 
					static t_WTPacket p_WTPacket;
 | 
				
			||||||
 | 
					static t_WTQueueSizeSet p_WTQueueSizeSet;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static GdkDevicePrivate *
 | 
					static GdkDevicePrivate *
 | 
				
			||||||
gdk_input_find_dev_from_ctx (HCTX hctx,
 | 
					gdk_input_find_dev_from_ctx (HCTX hctx,
 | 
				
			||||||
@ -209,6 +205,7 @@ _gdk_input_wintab_init_check (void)
 | 
				
			|||||||
  int devix, cursorix;
 | 
					  int devix, cursorix;
 | 
				
			||||||
  char devname[100], csrname[100];
 | 
					  char devname[100], csrname[100];
 | 
				
			||||||
  BOOL defcontext_done;
 | 
					  BOOL defcontext_done;
 | 
				
			||||||
 | 
					  HMODULE wintab32;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (wintab_initialized)
 | 
					  if (wintab_initialized)
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
@ -217,244 +214,261 @@ _gdk_input_wintab_init_check (void)
 | 
				
			|||||||
  
 | 
					  
 | 
				
			||||||
  wintab_contexts = NULL;
 | 
					  wintab_contexts = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!_gdk_input_ignore_wintab &&
 | 
					  if (_gdk_input_ignore_wintab)
 | 
				
			||||||
      WTInfo (0, 0, NULL))
 | 
					    return;
 | 
				
			||||||
    {
 | 
					
 | 
				
			||||||
      WTInfo (WTI_INTERFACE, IFC_SPECVERSION, &specversion);
 | 
					  if ((wintab32 = LoadLibrary ("wintab32.dll")) == NULL)
 | 
				
			||||||
      GDK_NOTE (INPUT, g_print ("Wintab interface version %d.%d\n",
 | 
					    return;
 | 
				
			||||||
			       HIBYTE (specversion), LOBYTE (specversion)));
 | 
					
 | 
				
			||||||
      WTInfo (WTI_INTERFACE, IFC_NDEVICES, &ndevices);
 | 
					  if ((p_WTInfoA = (t_WTInfoA) GetProcAddress (wintab32, "WTInfoA")) == NULL)
 | 
				
			||||||
      WTInfo (WTI_INTERFACE, IFC_NCURSORS, &ncursors);
 | 
					    return;
 | 
				
			||||||
 | 
					  if ((p_WTEnable = (t_WTEnable) GetProcAddress (wintab32, "WTEnable")) == NULL)
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					  if ((p_WTOpenA = (t_WTOpenA) GetProcAddress (wintab32, "WTOpenA")) == NULL)
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					  if ((p_WTOverlap = (t_WTOverlap) GetProcAddress (wintab32, "WTOverlap")) == NULL)
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					  if ((p_WTPacket = (t_WTPacket) GetProcAddress (wintab32, "WTPacket")) == NULL)
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					  if ((p_WTQueueSizeSet = (t_WTQueueSizeSet) GetProcAddress (wintab32, "WTQueueSizeSet")) == NULL)
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					  if (!(*p_WTInfoA) (0, 0, NULL))
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  (*p_WTInfoA) (WTI_INTERFACE, IFC_SPECVERSION, &specversion);
 | 
				
			||||||
 | 
					  GDK_NOTE (INPUT, g_print ("Wintab interface version %d.%d\n",
 | 
				
			||||||
 | 
								    HIBYTE (specversion), LOBYTE (specversion)));
 | 
				
			||||||
 | 
					  (*p_WTInfoA) (WTI_INTERFACE, IFC_NDEVICES, &ndevices);
 | 
				
			||||||
 | 
					  (*p_WTInfoA) (WTI_INTERFACE, IFC_NCURSORS, &ncursors);
 | 
				
			||||||
#if DEBUG_WINTAB
 | 
					#if DEBUG_WINTAB
 | 
				
			||||||
      GDK_NOTE (INPUT, g_print ("NDEVICES: %d, NCURSORS: %d\n",
 | 
					  GDK_NOTE (INPUT, g_print ("NDEVICES: %d, NCURSORS: %d\n",
 | 
				
			||||||
			       ndevices, ncursors));
 | 
								    ndevices, ncursors));
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
      /* Create a dummy window to receive wintab events */
 | 
					  /* Create a dummy window to receive wintab events */
 | 
				
			||||||
      wa.wclass = GDK_INPUT_OUTPUT;
 | 
					  wa.wclass = GDK_INPUT_OUTPUT;
 | 
				
			||||||
      wa.event_mask = GDK_ALL_EVENTS_MASK;
 | 
					  wa.event_mask = GDK_ALL_EVENTS_MASK;
 | 
				
			||||||
      wa.width = 2;
 | 
					  wa.width = 2;
 | 
				
			||||||
      wa.height = 2;
 | 
					  wa.height = 2;
 | 
				
			||||||
      wa.x = -100;
 | 
					  wa.x = -100;
 | 
				
			||||||
      wa.y = -100;
 | 
					  wa.y = -100;
 | 
				
			||||||
      wa.window_type = GDK_WINDOW_TOPLEVEL;
 | 
					  wa.window_type = GDK_WINDOW_TOPLEVEL;
 | 
				
			||||||
      if ((wintab_window = gdk_window_new (NULL, &wa, GDK_WA_X|GDK_WA_Y)) == NULL)
 | 
					  if ((wintab_window = gdk_window_new (NULL, &wa, GDK_WA_X|GDK_WA_Y)) == NULL)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      g_warning ("gdk_input_wintab_init: gdk_window_new failed");
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  g_object_ref (wintab_window);
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					  for (devix = 0; devix < ndevices; devix++)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      LOGCONTEXT lc;
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					      /* We open the Wintab device (hmm, what if there are several?) as a
 | 
				
			||||||
 | 
					       * system pointing device, i.e. it controls the normal Windows
 | 
				
			||||||
 | 
					       * cursor. This seems much more natural.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      (*p_WTInfoA) (WTI_DEVICES + devix, DVC_NAME, devname);
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					      (*p_WTInfoA) (WTI_DEVICES + devix, DVC_NCSRTYPES, &ncsrtypes);
 | 
				
			||||||
 | 
					      (*p_WTInfoA) (WTI_DEVICES + devix, DVC_FIRSTCSR, &firstcsr);
 | 
				
			||||||
 | 
					      (*p_WTInfoA) (WTI_DEVICES + devix, DVC_HARDWARE, &hardware);
 | 
				
			||||||
 | 
					      (*p_WTInfoA) (WTI_DEVICES + devix, DVC_X, &axis_x);
 | 
				
			||||||
 | 
					      (*p_WTInfoA) (WTI_DEVICES + devix, DVC_Y, &axis_y);
 | 
				
			||||||
 | 
					      (*p_WTInfoA) (WTI_DEVICES + devix, DVC_NPRESSURE, &axis_npressure);
 | 
				
			||||||
 | 
					      (*p_WTInfoA) (WTI_DEVICES + devix, DVC_ORIENTATION, axis_or);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      defcontext_done = FALSE;
 | 
				
			||||||
 | 
					      if (HIBYTE (specversion) > 1 || LOBYTE (specversion) >= 1)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	  g_warning ("gdk_input_wintab_init: gdk_window_new failed");
 | 
						  /* Try to get device-specific default context */
 | 
				
			||||||
 | 
						  /* Some drivers, e.g. Aiptek, don't provide this info */
 | 
				
			||||||
 | 
						  if ((*p_WTInfoA) (WTI_DSCTXS + devix, 0, &lc) > 0)
 | 
				
			||||||
 | 
						    defcontext_done = TRUE;
 | 
				
			||||||
 | 
					#if DEBUG_WINTAB
 | 
				
			||||||
 | 
						  if (defcontext_done)
 | 
				
			||||||
 | 
						    GDK_NOTE (INPUT, (g_print("Using device-specific default context\n")));
 | 
				
			||||||
 | 
						  else
 | 
				
			||||||
 | 
						    GDK_NOTE (INPUT, (g_print("Note: Driver did not provide device specific default context info despite claiming to support version 1.1\n")));
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (!defcontext_done)
 | 
				
			||||||
 | 
						(*p_WTInfoA) (WTI_DEFSYSCTX, 0, &lc);
 | 
				
			||||||
 | 
					#if DEBUG_WINTAB
 | 
				
			||||||
 | 
					      GDK_NOTE (INPUT, (g_print("Default context:\n"), print_lc(&lc)));
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					      lc.lcOptions |= CXO_MESSAGES;
 | 
				
			||||||
 | 
					      lc.lcStatus = 0;
 | 
				
			||||||
 | 
					      lc.lcMsgBase = WT_DEFBASE;
 | 
				
			||||||
 | 
					      lc.lcPktRate = 50;
 | 
				
			||||||
 | 
					      lc.lcPktData = PACKETDATA;
 | 
				
			||||||
 | 
					      lc.lcPktMode = PACKETMODE;
 | 
				
			||||||
 | 
					      lc.lcMoveMask = PACKETDATA;
 | 
				
			||||||
 | 
					      lc.lcBtnUpMask = lc.lcBtnDnMask = ~0;
 | 
				
			||||||
 | 
					      lc.lcOutOrgX = axis_x.axMin;
 | 
				
			||||||
 | 
					      lc.lcOutOrgY = axis_y.axMin;
 | 
				
			||||||
 | 
					      lc.lcOutExtX = axis_x.axMax - axis_x.axMin;
 | 
				
			||||||
 | 
					      lc.lcOutExtY = axis_y.axMax - axis_y.axMin;
 | 
				
			||||||
 | 
					      lc.lcOutExtY = -lc.lcOutExtY; /* We want Y growing downward */
 | 
				
			||||||
 | 
					#if DEBUG_WINTAB
 | 
				
			||||||
 | 
					      GDK_NOTE (INPUT, (g_print("context for device %d:\n", devix),
 | 
				
			||||||
 | 
								print_lc(&lc)));
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					      hctx = g_new (HCTX, 1);
 | 
				
			||||||
 | 
					      if ((*hctx = (*p_WTOpenA) (GDK_WINDOW_HWND (wintab_window), &lc, TRUE)) == NULL)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						  g_warning ("gdk_input_wintab_init: WTOpen failed");
 | 
				
			||||||
	  return;
 | 
						  return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
      g_object_ref (wintab_window);
 | 
					      GDK_NOTE (INPUT, g_print ("opened Wintab device %d %p\n",
 | 
				
			||||||
 | 
									devix, *hctx));
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
      for (devix = 0; devix < ndevices; devix++)
 | 
					      wintab_contexts = g_list_append (wintab_contexts, hctx);
 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
	  LOGCONTEXT lc;
 | 
					 | 
				
			||||||
	  
 | 
					 | 
				
			||||||
	  /* We open the Wintab device (hmm, what if there are several?) as a
 | 
					 | 
				
			||||||
	   * system pointing device, i.e. it controls the normal Windows
 | 
					 | 
				
			||||||
	   * cursor. This seems much more natural.
 | 
					 | 
				
			||||||
	   */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	  WTInfo (WTI_DEVICES + devix, DVC_NAME, devname);
 | 
					 | 
				
			||||||
      
 | 
					 | 
				
			||||||
	  WTInfo (WTI_DEVICES + devix, DVC_NCSRTYPES, &ncsrtypes);
 | 
					 | 
				
			||||||
	  WTInfo (WTI_DEVICES + devix, DVC_FIRSTCSR, &firstcsr);
 | 
					 | 
				
			||||||
	  WTInfo (WTI_DEVICES + devix, DVC_HARDWARE, &hardware);
 | 
					 | 
				
			||||||
	  WTInfo (WTI_DEVICES + devix, DVC_X, &axis_x);
 | 
					 | 
				
			||||||
	  WTInfo (WTI_DEVICES + devix, DVC_Y, &axis_y);
 | 
					 | 
				
			||||||
	  WTInfo (WTI_DEVICES + devix, DVC_NPRESSURE, &axis_npressure);
 | 
					 | 
				
			||||||
	  WTInfo (WTI_DEVICES + devix, DVC_ORIENTATION, axis_or);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	  defcontext_done = FALSE;
 | 
					 | 
				
			||||||
	  if (HIBYTE (specversion) > 1 || LOBYTE (specversion) >= 1)
 | 
					 | 
				
			||||||
	    {
 | 
					 | 
				
			||||||
	      /* Try to get device-specific default context */
 | 
					 | 
				
			||||||
	      /* Some drivers, e.g. Aiptek, don't provide this info */
 | 
					 | 
				
			||||||
	      if (WTInfo (WTI_DSCTXS + devix, 0, &lc) > 0)
 | 
					 | 
				
			||||||
		defcontext_done = TRUE;
 | 
					 | 
				
			||||||
#if DEBUG_WINTAB
 | 
					 | 
				
			||||||
	      if (defcontext_done)
 | 
					 | 
				
			||||||
		GDK_NOTE (INPUT, (g_print("Using device-specific default context\n")));
 | 
					 | 
				
			||||||
	      else
 | 
					 | 
				
			||||||
		GDK_NOTE (INPUT, (g_print("Note: Driver did not provide device specific default context info despite claiming to support version 1.1\n")));
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	  if (!defcontext_done)
 | 
					 | 
				
			||||||
	    WTInfo (WTI_DEFSYSCTX, 0, &lc);
 | 
					 | 
				
			||||||
#if DEBUG_WINTAB
 | 
					 | 
				
			||||||
	  GDK_NOTE (INPUT, (g_print("Default context:\n"), print_lc(&lc)));
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	  lc.lcOptions |= CXO_MESSAGES;
 | 
					 | 
				
			||||||
	  lc.lcStatus = 0;
 | 
					 | 
				
			||||||
	  lc.lcMsgBase = WT_DEFBASE;
 | 
					 | 
				
			||||||
	  lc.lcPktRate = 50;
 | 
					 | 
				
			||||||
	  lc.lcPktData = PACKETDATA;
 | 
					 | 
				
			||||||
	  lc.lcPktMode = PACKETMODE;
 | 
					 | 
				
			||||||
	  lc.lcMoveMask = PACKETDATA;
 | 
					 | 
				
			||||||
	  lc.lcBtnUpMask = lc.lcBtnDnMask = ~0;
 | 
					 | 
				
			||||||
	  lc.lcOutOrgX = axis_x.axMin;
 | 
					 | 
				
			||||||
	  lc.lcOutOrgY = axis_y.axMin;
 | 
					 | 
				
			||||||
	  lc.lcOutExtX = axis_x.axMax - axis_x.axMin;
 | 
					 | 
				
			||||||
	  lc.lcOutExtY = axis_y.axMax - axis_y.axMin;
 | 
					 | 
				
			||||||
	  lc.lcOutExtY = -lc.lcOutExtY; /* We want Y growing downward */
 | 
					 | 
				
			||||||
#if DEBUG_WINTAB
 | 
					 | 
				
			||||||
	  GDK_NOTE (INPUT, (g_print("context for device %d:\n", devix),
 | 
					 | 
				
			||||||
			   print_lc(&lc)));
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	  hctx = g_new (HCTX, 1);
 | 
					 | 
				
			||||||
          if ((*hctx = WTOpen (GDK_WINDOW_HWND (wintab_window), &lc, TRUE)) == NULL)
 | 
					 | 
				
			||||||
	    {
 | 
					 | 
				
			||||||
	      g_warning ("gdk_input_wintab_init: WTOpen failed");
 | 
					 | 
				
			||||||
	      return;
 | 
					 | 
				
			||||||
	    }
 | 
					 | 
				
			||||||
	  GDK_NOTE (INPUT, g_print ("opened Wintab device %d %p\n",
 | 
					 | 
				
			||||||
				   devix, *hctx));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	  wintab_contexts = g_list_append (wintab_contexts, hctx);
 | 
					 | 
				
			||||||
#if 0
 | 
					#if 0
 | 
				
			||||||
	  WTEnable (*hctx, TRUE);
 | 
					      (*p_WTEnable) (*hctx, TRUE);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	  WTOverlap (*hctx, TRUE);
 | 
					      (*p_WTOverlap) (*hctx, TRUE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if DEBUG_WINTAB
 | 
					#if DEBUG_WINTAB
 | 
				
			||||||
	  GDK_NOTE (INPUT, (g_print("context for device %d after WTOpen:\n", devix),
 | 
					      GDK_NOTE (INPUT, (g_print("context for device %d after WTOpen:\n", devix),
 | 
				
			||||||
			   print_lc(&lc)));
 | 
								print_lc(&lc)));
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	  /* Increase packet queue size to reduce the risk of lost packets */
 | 
					      /* Increase packet queue size to reduce the risk of lost packets.
 | 
				
			||||||
	  /* According to the specs, if the function fails we must try again */
 | 
					       * According to the specs, if the function fails we must try again
 | 
				
			||||||
	  /* with a smaller queue size */
 | 
					       * with a smaller queue size.
 | 
				
			||||||
	  GDK_NOTE (INPUT, g_print("Attempting to increase queue size\n"));
 | 
					       */
 | 
				
			||||||
	  for (i = 128; i >= 1; i >>= 1)
 | 
					      GDK_NOTE (INPUT, g_print("Attempting to increase queue size\n"));
 | 
				
			||||||
 | 
					      for (i = 128; i >= 1; i >>= 1)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						  if ((*p_WTQueueSizeSet) (*hctx, i))
 | 
				
			||||||
	    {
 | 
						    {
 | 
				
			||||||
	      if (WTQueueSizeSet(*hctx, i))
 | 
						      GDK_NOTE (INPUT, g_print("Queue size set to %d\n", i));
 | 
				
			||||||
		{
 | 
						      break;
 | 
				
			||||||
		  GDK_NOTE (INPUT, g_print("Queue size set to %d\n", i));
 | 
					 | 
				
			||||||
		  break;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	    }
 | 
						    }
 | 
				
			||||||
	  if (!i)
 | 
						}
 | 
				
			||||||
	    GDK_NOTE (INPUT, g_print("Whoops, no queue size could be set\n"));
 | 
					      if (!i)
 | 
				
			||||||
	  for (cursorix = firstcsr; cursorix < firstcsr + ncsrtypes; cursorix++)
 | 
						GDK_NOTE (INPUT, g_print("Whoops, no queue size could be set\n"));
 | 
				
			||||||
 | 
					      for (cursorix = firstcsr; cursorix < firstcsr + ncsrtypes; cursorix++)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						  active = FALSE;
 | 
				
			||||||
 | 
						  (*p_WTInfoA) (WTI_CURSORS + cursorix, CSR_ACTIVE, &active);
 | 
				
			||||||
 | 
						  if (!active)
 | 
				
			||||||
 | 
						    continue;
 | 
				
			||||||
 | 
						  gdkdev = g_object_new (GDK_TYPE_DEVICE, NULL);
 | 
				
			||||||
 | 
						  (*p_WTInfoA) (WTI_CURSORS + cursorix, CSR_NAME, csrname);
 | 
				
			||||||
 | 
						  gdkdev->info.name = g_strconcat (devname, " ", csrname, NULL);
 | 
				
			||||||
 | 
						  gdkdev->info.source = GDK_SOURCE_PEN;
 | 
				
			||||||
 | 
						  gdkdev->info.mode = GDK_MODE_SCREEN;
 | 
				
			||||||
 | 
						  gdkdev->info.has_cursor = TRUE;
 | 
				
			||||||
 | 
						  gdkdev->hctx = *hctx;
 | 
				
			||||||
 | 
						  gdkdev->cursor = cursorix;
 | 
				
			||||||
 | 
						  (*p_WTInfoA) (WTI_CURSORS + cursorix, CSR_PKTDATA, &gdkdev->pktdata);
 | 
				
			||||||
 | 
						  gdkdev->info.num_axes = 0;
 | 
				
			||||||
 | 
						  if (gdkdev->pktdata & PK_X)
 | 
				
			||||||
 | 
						    gdkdev->info.num_axes++;
 | 
				
			||||||
 | 
						  if (gdkdev->pktdata & PK_Y)
 | 
				
			||||||
 | 
						    gdkdev->info.num_axes++;
 | 
				
			||||||
 | 
						  if (gdkdev->pktdata & PK_NORMAL_PRESSURE)
 | 
				
			||||||
 | 
						    gdkdev->info.num_axes++;
 | 
				
			||||||
 | 
						  /* The wintab driver for the Wacom ArtPad II reports
 | 
				
			||||||
 | 
						   * PK_ORIENTATION in CSR_PKTDATA, but the tablet doesn't
 | 
				
			||||||
 | 
						   * actually sense tilt. Catch this by noticing that the
 | 
				
			||||||
 | 
						   * orientation axis's azimuth resolution is zero.
 | 
				
			||||||
 | 
						   */
 | 
				
			||||||
 | 
						  if ((gdkdev->pktdata & PK_ORIENTATION)
 | 
				
			||||||
 | 
						      && axis_or[0].axResolution == 0)
 | 
				
			||||||
 | 
						    gdkdev->pktdata &= ~PK_ORIENTATION;
 | 
				
			||||||
 | 
						  
 | 
				
			||||||
 | 
						  if (gdkdev->pktdata & PK_ORIENTATION)
 | 
				
			||||||
 | 
						    gdkdev->info.num_axes += 2; /* x and y tilt */
 | 
				
			||||||
 | 
						  (*p_WTInfoA) (WTI_CURSORS + cursorix, CSR_NPBTNMARKS, &gdkdev->npbtnmarks);
 | 
				
			||||||
 | 
						  gdkdev->info.axes = g_new (GdkDeviceAxis, gdkdev->info.num_axes);
 | 
				
			||||||
 | 
						  gdkdev->axes = g_new (GdkAxisInfo, gdkdev->info.num_axes);
 | 
				
			||||||
 | 
						  gdkdev->last_axis_data = g_new (gint, gdkdev->info.num_axes);
 | 
				
			||||||
 | 
						  
 | 
				
			||||||
 | 
						  k = 0;
 | 
				
			||||||
 | 
						  if (gdkdev->pktdata & PK_X)
 | 
				
			||||||
	    {
 | 
						    {
 | 
				
			||||||
	      active = FALSE;
 | 
						      gdkdev->axes[k].xresolution =
 | 
				
			||||||
	      WTInfo (WTI_CURSORS + cursorix, CSR_ACTIVE, &active);
 | 
							gdkdev->axes[k].resolution = axis_x.axResolution / 65535.;
 | 
				
			||||||
	      if (!active)
 | 
						      gdkdev->axes[k].xmin_value =
 | 
				
			||||||
		continue;
 | 
							gdkdev->axes[k].min_value = axis_x.axMin;
 | 
				
			||||||
	      gdkdev = g_object_new (GDK_TYPE_DEVICE, NULL);
 | 
						      gdkdev->axes[k].xmax_value =
 | 
				
			||||||
	      WTInfo (WTI_CURSORS + cursorix, CSR_NAME, csrname);
 | 
							gdkdev->axes[k].max_value = axis_x.axMax;
 | 
				
			||||||
	      gdkdev->info.name = g_strconcat (devname, " ", csrname, NULL);
 | 
						      gdkdev->info.axes[k].use = GDK_AXIS_X;
 | 
				
			||||||
	      gdkdev->info.source = GDK_SOURCE_PEN;
 | 
						      gdkdev->info.axes[k].min = axis_x.axMin;
 | 
				
			||||||
	      gdkdev->info.mode = GDK_MODE_SCREEN;
 | 
						      gdkdev->info.axes[k].max = axis_x.axMax;
 | 
				
			||||||
	      gdkdev->info.has_cursor = TRUE;
 | 
						      k++;
 | 
				
			||||||
	      gdkdev->hctx = *hctx;
 | 
						    }
 | 
				
			||||||
	      gdkdev->cursor = cursorix;
 | 
						  if (gdkdev->pktdata & PK_Y)
 | 
				
			||||||
	      WTInfo (WTI_CURSORS + cursorix, CSR_PKTDATA, &gdkdev->pktdata);
 | 
						    {
 | 
				
			||||||
	      gdkdev->info.num_axes = 0;
 | 
						      gdkdev->axes[k].xresolution =
 | 
				
			||||||
	      if (gdkdev->pktdata & PK_X)
 | 
							gdkdev->axes[k].resolution = axis_y.axResolution / 65535.;
 | 
				
			||||||
		gdkdev->info.num_axes++;
 | 
						      gdkdev->axes[k].xmin_value =
 | 
				
			||||||
	      if (gdkdev->pktdata & PK_Y)
 | 
							gdkdev->axes[k].min_value = axis_y.axMin;
 | 
				
			||||||
		gdkdev->info.num_axes++;
 | 
						      gdkdev->axes[k].xmax_value =
 | 
				
			||||||
	      if (gdkdev->pktdata & PK_NORMAL_PRESSURE)
 | 
							gdkdev->axes[k].max_value = axis_y.axMax;
 | 
				
			||||||
		gdkdev->info.num_axes++;
 | 
						      gdkdev->info.axes[k].use = GDK_AXIS_Y;
 | 
				
			||||||
	      /* The wintab driver for the Wacom ArtPad II reports
 | 
						      gdkdev->info.axes[k].min = axis_y.axMin;
 | 
				
			||||||
	       * PK_ORIENTATION in CSR_PKTDATA, but the tablet doesn't
 | 
						      gdkdev->info.axes[k].max = axis_y.axMax;
 | 
				
			||||||
	       * actually sense tilt. Catch this by noticing that the
 | 
						      k++;
 | 
				
			||||||
	       * orientation axis's azimuth resolution is zero.
 | 
						    }
 | 
				
			||||||
	       */
 | 
						  if (gdkdev->pktdata & PK_NORMAL_PRESSURE)
 | 
				
			||||||
	      if ((gdkdev->pktdata & PK_ORIENTATION)
 | 
						    {
 | 
				
			||||||
		  && axis_or[0].axResolution == 0)
 | 
						      gdkdev->axes[k].xresolution =
 | 
				
			||||||
		gdkdev->pktdata &= ~PK_ORIENTATION;
 | 
							gdkdev->axes[k].resolution = axis_npressure.axResolution / 65535.;
 | 
				
			||||||
 | 
						      gdkdev->axes[k].xmin_value =
 | 
				
			||||||
	      if (gdkdev->pktdata & PK_ORIENTATION)
 | 
							gdkdev->axes[k].min_value = axis_npressure.axMin;
 | 
				
			||||||
		gdkdev->info.num_axes += 2; /* x and y tilt */
 | 
						      gdkdev->axes[k].xmax_value =
 | 
				
			||||||
	      WTInfo (WTI_CURSORS + cursorix, CSR_NPBTNMARKS, &gdkdev->npbtnmarks);
 | 
							gdkdev->axes[k].max_value = axis_npressure.axMax;
 | 
				
			||||||
	      gdkdev->info.axes = g_new (GdkDeviceAxis, gdkdev->info.num_axes);
 | 
						      gdkdev->info.axes[k].use = GDK_AXIS_PRESSURE;
 | 
				
			||||||
	      gdkdev->axes = g_new (GdkAxisInfo, gdkdev->info.num_axes);
 | 
						      /* GIMP seems to expect values in the range 0-1 */
 | 
				
			||||||
	      gdkdev->last_axis_data = g_new (gint, gdkdev->info.num_axes);
 | 
						      gdkdev->info.axes[k].min = 0.0; /*axis_npressure.axMin;*/
 | 
				
			||||||
 | 
						      gdkdev->info.axes[k].max = 1.0; /*axis_npressure.axMax;*/
 | 
				
			||||||
 | 
						      k++;
 | 
				
			||||||
 | 
						    }
 | 
				
			||||||
 | 
						  if (gdkdev->pktdata & PK_ORIENTATION)
 | 
				
			||||||
 | 
						    {
 | 
				
			||||||
 | 
						      GdkAxisUse axis;
 | 
				
			||||||
	      
 | 
						      
 | 
				
			||||||
	      k = 0;
 | 
						      gdkdev->orientation_axes[0] = axis_or[0];
 | 
				
			||||||
	      if (gdkdev->pktdata & PK_X)
 | 
						      gdkdev->orientation_axes[1] = axis_or[1];
 | 
				
			||||||
 | 
						      for (axis = GDK_AXIS_XTILT; axis <= GDK_AXIS_YTILT; axis++)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 | 
							  /* Wintab gives us aximuth and altitude, which
 | 
				
			||||||
 | 
							   * we convert to x and y tilt in the -1000..1000 range
 | 
				
			||||||
 | 
							   */
 | 
				
			||||||
		  gdkdev->axes[k].xresolution =
 | 
							  gdkdev->axes[k].xresolution =
 | 
				
			||||||
		    gdkdev->axes[k].resolution = axis_x.axResolution / 65535.;
 | 
							    gdkdev->axes[k].resolution = 1000;
 | 
				
			||||||
		  gdkdev->axes[k].xmin_value =
 | 
							  gdkdev->axes[k].xmin_value =
 | 
				
			||||||
		    gdkdev->axes[k].min_value = axis_x.axMin;
 | 
							    gdkdev->axes[k].min_value = -1000;
 | 
				
			||||||
		  gdkdev->axes[k].xmax_value =
 | 
							  gdkdev->axes[k].xmax_value =
 | 
				
			||||||
		    gdkdev->axes[k].max_value = axis_x.axMax;
 | 
							    gdkdev->axes[k].max_value = 1000;
 | 
				
			||||||
		  gdkdev->info.axes[k].use = GDK_AXIS_X;
 | 
							  gdkdev->info.axes[k].use = axis;
 | 
				
			||||||
		  gdkdev->info.axes[k].min = axis_x.axMin;
 | 
							  gdkdev->info.axes[k].min = -1000;
 | 
				
			||||||
		  gdkdev->info.axes[k].max = axis_x.axMax;
 | 
							  gdkdev->info.axes[k].max = 1000;
 | 
				
			||||||
		  k++;
 | 
							  k++;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	      if (gdkdev->pktdata & PK_Y)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
		  gdkdev->axes[k].xresolution =
 | 
					 | 
				
			||||||
		    gdkdev->axes[k].resolution = axis_y.axResolution / 65535.;
 | 
					 | 
				
			||||||
		  gdkdev->axes[k].xmin_value =
 | 
					 | 
				
			||||||
		    gdkdev->axes[k].min_value = axis_y.axMin;
 | 
					 | 
				
			||||||
		  gdkdev->axes[k].xmax_value =
 | 
					 | 
				
			||||||
		    gdkdev->axes[k].max_value = axis_y.axMax;
 | 
					 | 
				
			||||||
		  gdkdev->info.axes[k].use = GDK_AXIS_Y;
 | 
					 | 
				
			||||||
		  gdkdev->info.axes[k].min = axis_y.axMin;
 | 
					 | 
				
			||||||
		  gdkdev->info.axes[k].max = axis_y.axMax;
 | 
					 | 
				
			||||||
		  k++;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	      if (gdkdev->pktdata & PK_NORMAL_PRESSURE)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
		  gdkdev->axes[k].xresolution =
 | 
					 | 
				
			||||||
		    gdkdev->axes[k].resolution = axis_npressure.axResolution / 65535.;
 | 
					 | 
				
			||||||
		  gdkdev->axes[k].xmin_value =
 | 
					 | 
				
			||||||
		    gdkdev->axes[k].min_value = axis_npressure.axMin;
 | 
					 | 
				
			||||||
		  gdkdev->axes[k].xmax_value =
 | 
					 | 
				
			||||||
		    gdkdev->axes[k].max_value = axis_npressure.axMax;
 | 
					 | 
				
			||||||
		  gdkdev->info.axes[k].use = GDK_AXIS_PRESSURE;
 | 
					 | 
				
			||||||
		  /* GIMP seems to expect values in the range 0-1 */
 | 
					 | 
				
			||||||
		  gdkdev->info.axes[k].min = 0.0; /*axis_npressure.axMin;*/
 | 
					 | 
				
			||||||
		  gdkdev->info.axes[k].max = 1.0; /*axis_npressure.axMax;*/
 | 
					 | 
				
			||||||
		  k++;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	      if (gdkdev->pktdata & PK_ORIENTATION)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
		  GdkAxisUse axis;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		  gdkdev->orientation_axes[0] = axis_or[0];
 | 
					 | 
				
			||||||
		  gdkdev->orientation_axes[1] = axis_or[1];
 | 
					 | 
				
			||||||
		  for (axis = GDK_AXIS_XTILT; axis <= GDK_AXIS_YTILT; axis++)
 | 
					 | 
				
			||||||
		    {
 | 
					 | 
				
			||||||
		      /* Wintab gives us aximuth and altitude, which
 | 
					 | 
				
			||||||
		       * we convert to x and y tilt in the -1000..1000 range
 | 
					 | 
				
			||||||
		       */
 | 
					 | 
				
			||||||
		      gdkdev->axes[k].xresolution =
 | 
					 | 
				
			||||||
			gdkdev->axes[k].resolution = 1000;
 | 
					 | 
				
			||||||
		      gdkdev->axes[k].xmin_value =
 | 
					 | 
				
			||||||
			gdkdev->axes[k].min_value = -1000;
 | 
					 | 
				
			||||||
		      gdkdev->axes[k].xmax_value =
 | 
					 | 
				
			||||||
			gdkdev->axes[k].max_value = 1000;
 | 
					 | 
				
			||||||
		      gdkdev->info.axes[k].use = axis;
 | 
					 | 
				
			||||||
		      gdkdev->info.axes[k].min = -1000;
 | 
					 | 
				
			||||||
		      gdkdev->info.axes[k].max = 1000;
 | 
					 | 
				
			||||||
		      k++;
 | 
					 | 
				
			||||||
		    }
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	      gdkdev->info.num_keys = 0;
 | 
					 | 
				
			||||||
	      gdkdev->info.keys = NULL;
 | 
					 | 
				
			||||||
	      GDK_NOTE (INPUT,
 | 
					 | 
				
			||||||
			g_print ("device: (%d) %s axes: %d\n",
 | 
					 | 
				
			||||||
				 cursorix,
 | 
					 | 
				
			||||||
				 gdkdev->info.name,
 | 
					 | 
				
			||||||
				 gdkdev->info.num_axes));
 | 
					 | 
				
			||||||
	      for (i = 0; i < gdkdev->info.num_axes; i++)
 | 
					 | 
				
			||||||
		GDK_NOTE (INPUT,
 | 
					 | 
				
			||||||
			  g_print ("... axis %d: %d--%d@%d (%d--%d@%d)\n",
 | 
					 | 
				
			||||||
				   i,
 | 
					 | 
				
			||||||
				   gdkdev->axes[i].xmin_value, 
 | 
					 | 
				
			||||||
				   gdkdev->axes[i].xmax_value, 
 | 
					 | 
				
			||||||
				   gdkdev->axes[i].xresolution, 
 | 
					 | 
				
			||||||
				   gdkdev->axes[i].min_value, 
 | 
					 | 
				
			||||||
				   gdkdev->axes[i].max_value, 
 | 
					 | 
				
			||||||
				   gdkdev->axes[i].resolution));
 | 
					 | 
				
			||||||
	      _gdk_input_devices = g_list_append (_gdk_input_devices,
 | 
					 | 
				
			||||||
						 gdkdev);
 | 
					 | 
				
			||||||
	    }
 | 
						    }
 | 
				
			||||||
 | 
						  gdkdev->info.num_keys = 0;
 | 
				
			||||||
 | 
						  gdkdev->info.keys = NULL;
 | 
				
			||||||
 | 
						  GDK_NOTE (INPUT, g_print ("device: (%d) %s axes: %d\n",
 | 
				
			||||||
 | 
									    cursorix,
 | 
				
			||||||
 | 
									    gdkdev->info.name,
 | 
				
			||||||
 | 
									    gdkdev->info.num_axes));
 | 
				
			||||||
 | 
						  for (i = 0; i < gdkdev->info.num_axes; i++)
 | 
				
			||||||
 | 
						    GDK_NOTE (INPUT, g_print ("... axis %d: %d--%d@%d (%d--%d@%d)\n",
 | 
				
			||||||
 | 
									      i,
 | 
				
			||||||
 | 
									      gdkdev->axes[i].xmin_value, 
 | 
				
			||||||
 | 
									      gdkdev->axes[i].xmax_value, 
 | 
				
			||||||
 | 
									      gdkdev->axes[i].xresolution, 
 | 
				
			||||||
 | 
									      gdkdev->axes[i].min_value, 
 | 
				
			||||||
 | 
									      gdkdev->axes[i].max_value, 
 | 
				
			||||||
 | 
									      gdkdev->axes[i].resolution));
 | 
				
			||||||
 | 
						  _gdk_input_devices = g_list_append (_gdk_input_devices,
 | 
				
			||||||
 | 
										      gdkdev);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -481,8 +495,6 @@ decode_tilt (gint   *axis_data,
 | 
				
			|||||||
  axis_data[1] = sin (az) * cos (el) * 1000;
 | 
					  axis_data[1] = sin (az) * cos (el) * 1000;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* HAVE_WINTAB */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
gdk_input_translate_coordinates (GdkDevicePrivate *gdkdev,
 | 
					gdk_input_translate_coordinates (GdkDevicePrivate *gdkdev,
 | 
				
			||||||
				 GdkInputWindow   *input_window,
 | 
									 GdkInputWindow   *input_window,
 | 
				
			||||||
@ -654,8 +666,6 @@ get_modifier_key_state (void)
 | 
				
			|||||||
  return state;
 | 
					  return state;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_WINTAB
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static guint ignore_core_timer = 0;
 | 
					static guint ignore_core_timer = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static gboolean
 | 
					static gboolean
 | 
				
			||||||
@ -693,14 +703,12 @@ set_ignore_core (gboolean ignore)
 | 
				
			|||||||
      ignore_core_timer = gdk_threads_add_timeout (PROXIMITY_OUT_DELAY,
 | 
					      ignore_core_timer = gdk_threads_add_timeout (PROXIMITY_OUT_DELAY,
 | 
				
			||||||
					 ignore_core_timefunc, NULL);
 | 
										 ignore_core_timefunc, NULL);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif /* HAVE_WINTAB */
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
gboolean 
 | 
					gboolean 
 | 
				
			||||||
_gdk_input_other_event (GdkEvent  *event,
 | 
					_gdk_input_other_event (GdkEvent  *event,
 | 
				
			||||||
			MSG       *msg,
 | 
								MSG       *msg,
 | 
				
			||||||
			GdkWindow *window)
 | 
								GdkWindow *window)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifdef HAVE_WINTAB
 | 
					 | 
				
			||||||
  GdkDisplay *display;
 | 
					  GdkDisplay *display;
 | 
				
			||||||
  GdkWindowObject *obj, *grab_obj;
 | 
					  GdkWindowObject *obj, *grab_obj;
 | 
				
			||||||
  GdkInputWindow *input_window;
 | 
					  GdkInputWindow *input_window;
 | 
				
			||||||
@ -732,7 +740,7 @@ _gdk_input_other_event (GdkEvent  *event,
 | 
				
			|||||||
  
 | 
					  
 | 
				
			||||||
  if (msg->message == WT_PACKET)
 | 
					  if (msg->message == WT_PACKET)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      if (!WTPacket ((HCTX) msg->lParam, msg->wParam, &packet))
 | 
					      if (!(*p_WTPacket) ((HCTX) msg->lParam, msg->wParam, &packet))
 | 
				
			||||||
	return FALSE;
 | 
						return FALSE;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -742,7 +750,8 @@ _gdk_input_other_event (GdkEvent  *event,
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
    case WT_PACKET:
 | 
					    case WT_PACKET:
 | 
				
			||||||
      /* Don't produce any button or motion events while a window is being
 | 
					      /* Don't produce any button or motion events while a window is being
 | 
				
			||||||
       * moved or resized, see bug #151090. */
 | 
					       * moved or resized, see bug #151090.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
      if (_sizemove_in_progress)
 | 
					      if (_sizemove_in_progress)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	  GDK_NOTE (EVENTS_OR_INPUT, g_print ("... ignored when moving/sizing\n"));
 | 
						  GDK_NOTE (EVENTS_OR_INPUT, g_print ("... ignored when moving/sizing\n"));
 | 
				
			||||||
@ -830,7 +839,7 @@ _gdk_input_other_event (GdkEvent  *event,
 | 
				
			|||||||
      /* Now we can check if the window wants the event, and
 | 
					      /* Now we can check if the window wants the event, and
 | 
				
			||||||
       * propagate if necessary.
 | 
					       * propagate if necessary.
 | 
				
			||||||
       */
 | 
					       */
 | 
				
			||||||
    dijkstra:
 | 
					    loop:
 | 
				
			||||||
      if (!GDK_WINDOW_IMPL_WIN32 (obj->impl)->extension_events_selected
 | 
					      if (!GDK_WINDOW_IMPL_WIN32 (obj->impl)->extension_events_selected
 | 
				
			||||||
	  || !(obj->extension_events & masktest))
 | 
						  || !(obj->extension_events & masktest))
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@ -860,7 +869,7 @@ _gdk_input_other_event (GdkEvent  *event,
 | 
				
			|||||||
	  y = pt.y;
 | 
						  y = pt.y;
 | 
				
			||||||
	  GDK_NOTE (EVENTS_OR_INPUT, g_print ("... propagating to %p %+d%+d\n",
 | 
						  GDK_NOTE (EVENTS_OR_INPUT, g_print ("... propagating to %p %+d%+d\n",
 | 
				
			||||||
					      GDK_WINDOW_HWND (window), x, y));
 | 
										      GDK_WINDOW_HWND (window), x, y));
 | 
				
			||||||
	  goto dijkstra;
 | 
						  goto loop;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      input_window = _gdk_input_window_find (window);
 | 
					      input_window = _gdk_input_window_find (window);
 | 
				
			||||||
@ -993,7 +1002,6 @@ _gdk_input_other_event (GdkEvent  *event,
 | 
				
			|||||||
			  "in" : "out")));
 | 
								  "in" : "out")));
 | 
				
			||||||
      return TRUE;
 | 
					      return TRUE;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
  return FALSE;
 | 
					  return FALSE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1001,11 +1009,9 @@ gboolean
 | 
				
			|||||||
_gdk_input_enable_window (GdkWindow        *window,
 | 
					_gdk_input_enable_window (GdkWindow        *window,
 | 
				
			||||||
			  GdkDevicePrivate *gdkdev)
 | 
								  GdkDevicePrivate *gdkdev)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifdef HAVE_SOME_XINPUT
 | 
					 | 
				
			||||||
  GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl);
 | 
					  GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  impl->extension_events_selected = TRUE;
 | 
					  impl->extension_events_selected = TRUE;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return TRUE;
 | 
					  return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -1014,11 +1020,9 @@ gboolean
 | 
				
			|||||||
_gdk_input_disable_window (GdkWindow        *window,
 | 
					_gdk_input_disable_window (GdkWindow        *window,
 | 
				
			||||||
			   GdkDevicePrivate *gdkdev)
 | 
								   GdkDevicePrivate *gdkdev)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifdef HAVE_SOME_XINPUT
 | 
					 | 
				
			||||||
  GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl);
 | 
					  GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  impl->extension_events_selected = FALSE;
 | 
					  impl->extension_events_selected = FALSE;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return TRUE;
 | 
					  return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -1030,7 +1034,6 @@ _gdk_input_grab_pointer (GdkWindow    *window,
 | 
				
			|||||||
			 GdkWindow    *confine_to,
 | 
								 GdkWindow    *confine_to,
 | 
				
			||||||
			 guint32       time)
 | 
								 guint32       time)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifdef HAVE_SOME_XINPUT
 | 
					 | 
				
			||||||
  GdkInputWindow *input_window, *new_window;
 | 
					  GdkInputWindow *input_window, *new_window;
 | 
				
			||||||
  gboolean need_ungrab;
 | 
					  gboolean need_ungrab;
 | 
				
			||||||
  GdkDevicePrivate *gdkdev;
 | 
					  GdkDevicePrivate *gdkdev;
 | 
				
			||||||
@ -1115,7 +1118,6 @@ _gdk_input_grab_pointer (GdkWindow    *window,
 | 
				
			|||||||
	  tmp_list = tmp_list->next;
 | 
						  tmp_list = tmp_list->next;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return GDK_GRAB_SUCCESS;
 | 
					  return GDK_GRAB_SUCCESS;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -1123,7 +1125,6 @@ _gdk_input_grab_pointer (GdkWindow    *window,
 | 
				
			|||||||
void 
 | 
					void 
 | 
				
			||||||
_gdk_input_ungrab_pointer (guint32 time)
 | 
					_gdk_input_ungrab_pointer (guint32 time)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifdef HAVE_SOME_XINPUT
 | 
					 | 
				
			||||||
  GdkInputWindow *input_window;
 | 
					  GdkInputWindow *input_window;
 | 
				
			||||||
  GdkDevicePrivate *gdkdev;
 | 
					  GdkDevicePrivate *gdkdev;
 | 
				
			||||||
  GList *tmp_list;
 | 
					  GList *tmp_list;
 | 
				
			||||||
@ -1156,7 +1157,6 @@ _gdk_input_ungrab_pointer (guint32 time)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  x_grab_window = NULL;
 | 
					  x_grab_window = NULL;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
gboolean
 | 
					gboolean
 | 
				
			||||||
@ -1220,7 +1220,6 @@ gdk_device_get_state (GdkDevice       *device,
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_WINTAB
 | 
					 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
_gdk_input_set_tablet_active (void)
 | 
					_gdk_input_set_tablet_active (void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -1240,11 +1239,10 @@ _gdk_input_set_tablet_active (void)
 | 
				
			|||||||
  while (tmp_list)
 | 
					  while (tmp_list)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      hctx = (HCTX *) (tmp_list->data);
 | 
					      hctx = (HCTX *) (tmp_list->data);
 | 
				
			||||||
      WTOverlap (*hctx, TRUE);
 | 
					      (*p_WTOverlap) (*hctx, TRUE);
 | 
				
			||||||
      tmp_list = tmp_list->next;
 | 
					      tmp_list = tmp_list->next;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif /* HAVE_WINTAB */
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
void 
 | 
					void 
 | 
				
			||||||
_gdk_input_init (GdkDisplay *display)
 | 
					_gdk_input_init (GdkDisplay *display)
 | 
				
			||||||
@ -1253,7 +1251,6 @@ _gdk_input_init (GdkDisplay *display)
 | 
				
			|||||||
  _gdk_input_devices = NULL;
 | 
					  _gdk_input_devices = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  _gdk_init_input_core (display);
 | 
					  _gdk_init_input_core (display);
 | 
				
			||||||
#ifdef HAVE_WINTAB
 | 
					 | 
				
			||||||
#ifdef WINTAB_NO_LAZY_INIT
 | 
					#ifdef WINTAB_NO_LAZY_INIT
 | 
				
			||||||
  /* Normally, Wintab is only initialized when the application performs
 | 
					  /* Normally, Wintab is only initialized when the application performs
 | 
				
			||||||
   * an action that requires it, such as enabling extended input events
 | 
					   * an action that requires it, such as enabling extended input events
 | 
				
			||||||
@ -1261,7 +1258,6 @@ _gdk_input_init (GdkDisplay *display)
 | 
				
			|||||||
   */
 | 
					   */
 | 
				
			||||||
  _gdk_input_wintab_init_check ();
 | 
					  _gdk_input_wintab_init_check ();
 | 
				
			||||||
#endif /* WINTAB_NO_LAZY_INIT */
 | 
					#endif /* WINTAB_NO_LAZY_INIT */
 | 
				
			||||||
#endif /* HAVE_WINTAB */
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  _gdk_input_devices = g_list_append (_gdk_input_devices, display->core_pointer);
 | 
					  _gdk_input_devices = g_list_append (_gdk_input_devices, display->core_pointer);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -27,9 +27,8 @@
 | 
				
			|||||||
#ifndef __GDK_INPUT_WIN32_H__
 | 
					#ifndef __GDK_INPUT_WIN32_H__
 | 
				
			||||||
#define __GDK_INPUT_WIN32_H__
 | 
					#define __GDK_INPUT_WIN32_H__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_WINTAB
 | 
					#include <windows.h>
 | 
				
			||||||
#include <wintab.h>
 | 
					#include <wintab.h>
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct _GdkAxisInfo    GdkAxisInfo;
 | 
					typedef struct _GdkAxisInfo    GdkAxisInfo;
 | 
				
			||||||
typedef struct _GdkDevicePrivate GdkDevicePrivate;
 | 
					typedef struct _GdkDevicePrivate GdkDevicePrivate;
 | 
				
			||||||
@ -85,7 +84,6 @@ struct _GdkDevicePrivate
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  gint *last_axis_data;
 | 
					  gint *last_axis_data;
 | 
				
			||||||
  gint last_buttons;
 | 
					  gint last_buttons;
 | 
				
			||||||
#ifdef HAVE_WINTAB
 | 
					 | 
				
			||||||
  /* WINTAB stuff: */
 | 
					  /* WINTAB stuff: */
 | 
				
			||||||
  HCTX hctx;
 | 
					  HCTX hctx;
 | 
				
			||||||
  /* Cursor number */
 | 
					  /* Cursor number */
 | 
				
			||||||
@ -96,7 +94,6 @@ struct _GdkDevicePrivate
 | 
				
			|||||||
  UINT npbtnmarks[2];
 | 
					  UINT npbtnmarks[2];
 | 
				
			||||||
  /* Azimuth and altitude axis */
 | 
					  /* Azimuth and altitude axis */
 | 
				
			||||||
  AXIS orientation_axes[2];
 | 
					  AXIS orientation_axes[2];
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct _GdkInputWindow
 | 
					struct _GdkInputWindow
 | 
				
			||||||
@ -166,9 +163,7 @@ gboolean         _gdk_device_get_history     (GdkDevice         *device,
 | 
				
			|||||||
					      GdkTimeCoord    ***events,
 | 
										      GdkTimeCoord    ***events,
 | 
				
			||||||
					      gint              *n_events);
 | 
										      gint              *n_events);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_WINTAB
 | 
					 | 
				
			||||||
void		_gdk_input_wintab_init_check (void);
 | 
					void		_gdk_input_wintab_init_check (void);
 | 
				
			||||||
void		_gdk_input_set_tablet_active (void);
 | 
					void		_gdk_input_set_tablet_active (void);
 | 
				
			||||||
#endif /* HAVE_WINTAB */
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* __GDK_INPUT_WIN32_H__ */
 | 
					#endif /* __GDK_INPUT_WIN32_H__ */
 | 
				
			||||||
 | 
				
			|||||||
@ -37,16 +37,6 @@
 | 
				
			|||||||
#include "gdkinput.h"
 | 
					#include "gdkinput.h"
 | 
				
			||||||
#include "gdkprivate.h"
 | 
					#include "gdkprivate.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* When ther necessary stuff is in
 | 
					 | 
				
			||||||
 * gdkinput.h, gdkinternals.h and
 | 
					 | 
				
			||||||
 * gdkprivate.h, these includes shouldn't be here.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <windows.h>
 | 
					 | 
				
			||||||
#ifdef HAVE_WINTAB
 | 
					 | 
				
			||||||
#include <wintab.h>
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "gdkinput-win32.h"
 | 
					#include "gdkinput-win32.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static GdkDeviceAxis gdk_input_core_axes[] = {
 | 
					static GdkDeviceAxis gdk_input_core_axes[] = {
 | 
				
			||||||
@ -119,18 +109,14 @@ gdk_device_get_type (void)
 | 
				
			|||||||
GList *
 | 
					GList *
 | 
				
			||||||
gdk_devices_list (void)
 | 
					gdk_devices_list (void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifdef HAVE_WINTAB
 | 
					 | 
				
			||||||
  _gdk_input_wintab_init_check ();
 | 
					  _gdk_input_wintab_init_check ();
 | 
				
			||||||
#endif /* HAVE_WINTAB */
 | 
					 | 
				
			||||||
  return _gdk_input_devices;
 | 
					  return _gdk_input_devices;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GList *
 | 
					GList *
 | 
				
			||||||
gdk_display_list_devices (GdkDisplay *dpy)
 | 
					gdk_display_list_devices (GdkDisplay *dpy)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifdef HAVE_WINTAB
 | 
					 | 
				
			||||||
  _gdk_input_wintab_init_check ();
 | 
					  _gdk_input_wintab_init_check ();
 | 
				
			||||||
#endif /* HAVE_WINTAB */
 | 
					 | 
				
			||||||
  return _gdk_input_devices;
 | 
					  return _gdk_input_devices;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -276,9 +262,8 @@ gdk_input_set_extension_events (GdkWindow *window, gint mask,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  if (mask != 0)
 | 
					  if (mask != 0)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
#ifdef HAVE_WINTAB
 | 
					 | 
				
			||||||
      _gdk_input_wintab_init_check ();
 | 
					      _gdk_input_wintab_init_check ();
 | 
				
			||||||
#endif /* HAVE_WINTAB */
 | 
					
 | 
				
			||||||
      iw = g_new(GdkInputWindow,1);
 | 
					      iw = g_new(GdkInputWindow,1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      iw->window = window;
 | 
					      iw->window = window;
 | 
				
			||||||
 | 
				
			|||||||
@ -79,12 +79,10 @@ _gdk_windowing_init (void)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  gchar buf[10];
 | 
					  gchar buf[10];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_WINTAB
 | 
					 | 
				
			||||||
  if (getenv ("GDK_IGNORE_WINTAB") != NULL)
 | 
					  if (getenv ("GDK_IGNORE_WINTAB") != NULL)
 | 
				
			||||||
    _gdk_input_ignore_wintab = TRUE;
 | 
					    _gdk_input_ignore_wintab = TRUE;
 | 
				
			||||||
  else if (getenv ("GDK_USE_WINTAB") != NULL)
 | 
					  else if (getenv ("GDK_USE_WINTAB") != NULL)
 | 
				
			||||||
    _gdk_input_ignore_wintab = FALSE;
 | 
					    _gdk_input_ignore_wintab = FALSE;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (gdk_synchronize)
 | 
					  if (gdk_synchronize)
 | 
				
			||||||
    GdiSetBatchLimit (1);
 | 
					    GdiSetBatchLimit (1);
 | 
				
			||||||
@ -862,11 +860,9 @@ _gdk_win32_message_to_string (UINT msg)
 | 
				
			|||||||
      CASE (WM_PENWINFIRST);
 | 
					      CASE (WM_PENWINFIRST);
 | 
				
			||||||
      CASE (WM_PENWINLAST);
 | 
					      CASE (WM_PENWINLAST);
 | 
				
			||||||
      CASE (WM_APP);
 | 
					      CASE (WM_APP);
 | 
				
			||||||
#ifdef HAVE_WINTAB
 | 
					 | 
				
			||||||
      CASE (WT_PACKET);
 | 
					      CASE (WT_PACKET);
 | 
				
			||||||
      CASE (WT_CSRCHANGE);
 | 
					      CASE (WT_CSRCHANGE);
 | 
				
			||||||
      CASE (WT_PROXIMITY);
 | 
					      CASE (WT_PROXIMITY);
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#undef CASE
 | 
					#undef CASE
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
      if (msg >= WM_HANDHELDFIRST && msg <= WM_HANDHELDLAST)
 | 
					      if (msg >= WM_HANDHELDFIRST && msg <= WM_HANDHELDLAST)
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										233
									
								
								gdk/win32/pktdef.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										233
									
								
								gdk/win32/pktdef.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,233 @@
 | 
				
			|||||||
 | 
					/* -------------------------------- pktdef.h -------------------------------- */
 | 
				
			||||||
 | 
					/* Combined 16 & 32-bit version. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					The text and information contained in this file may be freely used,
 | 
				
			||||||
 | 
					copied, or distributed without compensation or licensing restrictions.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This file is copyright 1991-1998 by LCS/Telegraphics.
 | 
				
			||||||
 | 
					------------------------------------------------------------------------------*/
 | 
				
			||||||
 | 
					/*------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					How to use pktdef.h:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1. Include wintab.h
 | 
				
			||||||
 | 
					2. if using just one packet format:
 | 
				
			||||||
 | 
						a. Define PACKETDATA and PACKETMODE as or'ed combinations of WTPKT bits
 | 
				
			||||||
 | 
						   (use the PK_* identifiers).
 | 
				
			||||||
 | 
						b. Include pktdef.h.
 | 
				
			||||||
 | 
						c. The generated structure typedef will be called PACKET.  Use PACKETDATA
 | 
				
			||||||
 | 
						   and PACKETMODE to fill in the LOGCONTEXT structure.
 | 
				
			||||||
 | 
					3. If using multiple packet formats, for each one:
 | 
				
			||||||
 | 
						a. Define PACKETNAME. Its text value will be a prefix for this packet's
 | 
				
			||||||
 | 
						   parameters and names.
 | 
				
			||||||
 | 
						b. Define <PACKETNAME>PACKETDATA and <PACKETNAME>PACKETMODE similar to
 | 
				
			||||||
 | 
						   2.a. above.
 | 
				
			||||||
 | 
						c. Include pktdef.h.
 | 
				
			||||||
 | 
						d. The generated structure typedef will be called
 | 
				
			||||||
 | 
						   <PACKETNAME>PACKET. Compare with 2.c. above and example #2 below.
 | 
				
			||||||
 | 
					4. If using extension packet data, do the following additional steps
 | 
				
			||||||
 | 
					   for each extension:
 | 
				
			||||||
 | 
						a. Before including pktdef.h, define <PACKETNAME>PACKET<EXTENSION>
 | 
				
			||||||
 | 
						   as either PKEXT_ABSOLUTE or PKEXT_RELATIVE.
 | 
				
			||||||
 | 
						b. The generated structure typedef will contain a field for the
 | 
				
			||||||
 | 
						   extension data.
 | 
				
			||||||
 | 
						c. Scan the WTI_EXTENSION categories to find the extension's
 | 
				
			||||||
 | 
						   packet mask bit.
 | 
				
			||||||
 | 
						d. OR the packet mask bit with <PACKETNAME>PACKETDATA and use the
 | 
				
			||||||
 | 
						   result in the lcPktData field of the LOGCONTEXT structure.
 | 
				
			||||||
 | 
						e. If <PACKETNAME>PACKET<EXTENSION> was PKEXT_RELATIVE, OR the
 | 
				
			||||||
 | 
						   packet mask bit with <PACKETNAME>PACKETMODE and use the result
 | 
				
			||||||
 | 
						   in the lcPktMode field of the LOGCONTEXT structure.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Example #1.	-- single packet format
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <wintab.h>
 | 
				
			||||||
 | 
					#define PACKETDATA	PK_X | PK_Y | PK_BUTTONS	/@ x, y, buttons @/
 | 
				
			||||||
 | 
					#define PACKETMODE	PK_BUTTONS					/@ buttons relative mode @/
 | 
				
			||||||
 | 
					#include <pktdef.h>
 | 
				
			||||||
 | 
					...
 | 
				
			||||||
 | 
						lc.lcPktData = PACKETDATA;
 | 
				
			||||||
 | 
						lc.lcPktMode = PACKETMODE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Example #2. -- multiple formats
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <wintab.h>
 | 
				
			||||||
 | 
					#define PACKETNAME		MOE
 | 
				
			||||||
 | 
					#define MOEPACKETDATA	PK_X | PK_Y | PK_BUTTONS	/@ x, y, buttons @/
 | 
				
			||||||
 | 
					#define MOEPACKETMODE	PK_BUTTONS					/@ buttons relative mode @/
 | 
				
			||||||
 | 
					#include <pktdef.h>
 | 
				
			||||||
 | 
					#define PACKETNAME		LARRY
 | 
				
			||||||
 | 
					#define LARRYPACKETDATA	PK_Y | PK_Z | PK_BUTTONS	/@ y, z, buttons @/
 | 
				
			||||||
 | 
					#define LARRYPACKETMODE	PK_BUTTONS					/@ buttons relative mode @/
 | 
				
			||||||
 | 
					#include <pktdef.h>
 | 
				
			||||||
 | 
					#define PACKETNAME		CURLY
 | 
				
			||||||
 | 
					#define CURLYPACKETDATA	PK_X | PK_Z | PK_BUTTONS	/@ x, z, buttons @/
 | 
				
			||||||
 | 
					#define CURLYPACKETMODE	PK_BUTTONS					/@ buttons relative mode @/
 | 
				
			||||||
 | 
					#include <pktdef.h>
 | 
				
			||||||
 | 
					...
 | 
				
			||||||
 | 
						lcMOE.lcPktData = MOEPACKETDATA;
 | 
				
			||||||
 | 
						lcMOE.lcPktMode = MOEPACKETMODE;
 | 
				
			||||||
 | 
					...
 | 
				
			||||||
 | 
						lcLARRY.lcPktData = LARRYPACKETDATA;
 | 
				
			||||||
 | 
						lcLARRY.lcPktMode = LARRYPACKETMODE;
 | 
				
			||||||
 | 
					...
 | 
				
			||||||
 | 
						lcCURLY.lcPktData = CURLYPACKETDATA;
 | 
				
			||||||
 | 
						lcCURLY.lcPktMode = CURLYPACKETMODE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Example #3. -- extension packet data "XFOO".
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					#include <wintab.h>
 | 
				
			||||||
 | 
					#define PACKETDATA	PK_X | PK_Y | PK_BUTTONS	/@ x, y, buttons @/
 | 
				
			||||||
 | 
					#define PACKETMODE	PK_BUTTONS					/@ buttons relative mode @/
 | 
				
			||||||
 | 
					#define PACKETXFOO	PKEXT_ABSOLUTE				/@ XFOO absolute mode @/
 | 
				
			||||||
 | 
					#include <pktdef.h>
 | 
				
			||||||
 | 
					...
 | 
				
			||||||
 | 
					UINT ScanExts(UINT wTag)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						UINT i;
 | 
				
			||||||
 | 
						UINT wScanTag;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/@ scan for wTag's info category. @/
 | 
				
			||||||
 | 
						for (i = 0; WTInfo(WTI_EXTENSIONS + i, EXT_TAG, &wScanTag); i++) {
 | 
				
			||||||
 | 
							 if (wTag == wScanTag) {
 | 
				
			||||||
 | 
								/@ return category offset from WTI_EXTENSIONS. @/
 | 
				
			||||||
 | 
								return i;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						/@ return error code. @/
 | 
				
			||||||
 | 
						return 0xFFFF;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					...
 | 
				
			||||||
 | 
						lc.lcPktData = PACKETDATA;
 | 
				
			||||||
 | 
						lc.lcPktMode = PACKETMODE;
 | 
				
			||||||
 | 
					#ifdef PACKETXFOO
 | 
				
			||||||
 | 
						categoryXFOO = ScanExts(WTX_XFOO);
 | 
				
			||||||
 | 
						WTInfo(WTI_EXTENSIONS + categoryXFOO, EXT_MASK, &maskXFOO);
 | 
				
			||||||
 | 
						lc.lcPktData |= maskXFOO;
 | 
				
			||||||
 | 
					#if PACKETXFOO == PKEXT_RELATIVE
 | 
				
			||||||
 | 
						lc.lcPktMode |= maskXFOO;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						WTOpen(hWnd, &lc, TRUE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					------------------------------------------------------------------------------*/
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif	/* __cplusplus */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef PACKETNAME
 | 
				
			||||||
 | 
						/* if no packet name prefix */
 | 
				
			||||||
 | 
						#define __PFX(x)	x
 | 
				
			||||||
 | 
						#define __IFX(x,y)	x ## y
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						/* add prefixes and infixes to packet format names */
 | 
				
			||||||
 | 
						#define __PFX(x)		__PFX2(PACKETNAME,x)
 | 
				
			||||||
 | 
						#define __PFX2(p,x)		__PFX3(p,x)
 | 
				
			||||||
 | 
						#define __PFX3(p,x)		p ## x
 | 
				
			||||||
 | 
						#define __IFX(x,y)		__IFX2(x,PACKETNAME,y)
 | 
				
			||||||
 | 
						#define __IFX2(x,i,y)	__IFX3(x,i,y)
 | 
				
			||||||
 | 
						#define __IFX3(x,i,y)	x ## i ## y
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define __SFX2(x,s)		__SFX3(x,s)
 | 
				
			||||||
 | 
					#define __SFX3(x,s)		x ## s
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define __TAG  	__IFX(tag,PACKET)
 | 
				
			||||||
 | 
					#define __TYPES	__PFX(PACKET), * __IFX(P,PACKET), NEAR * __IFX(NP,PACKET), \
 | 
				
			||||||
 | 
										FAR * __IFX(LP,PACKET)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define __DATA		(__PFX(PACKETDATA))
 | 
				
			||||||
 | 
					#define __MODE		(__PFX(PACKETMODE))
 | 
				
			||||||
 | 
					#define __EXT(x)	__SFX2(__PFX(PACKET),x)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					typedef struct __TAG {
 | 
				
			||||||
 | 
						#if (__DATA & PK_CONTEXT)
 | 
				
			||||||
 | 
							HCTX			pkContext;
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
						#if (__DATA & PK_STATUS)
 | 
				
			||||||
 | 
							UINT			pkStatus;
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
						#if (__DATA & PK_TIME)
 | 
				
			||||||
 | 
							DWORD			pkTime;
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
						#if (__DATA & PK_CHANGED)
 | 
				
			||||||
 | 
							WTPKT			pkChanged;
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
						#if (__DATA & PK_SERIAL_NUMBER)
 | 
				
			||||||
 | 
							UINT			pkSerialNumber;
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
						#if (__DATA & PK_CURSOR)
 | 
				
			||||||
 | 
							UINT			pkCursor;
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
						#if (__DATA & PK_BUTTONS)
 | 
				
			||||||
 | 
							DWORD			pkButtons;
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
						#if (__DATA & PK_X)
 | 
				
			||||||
 | 
							LONG			pkX;
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
						#if (__DATA & PK_Y)
 | 
				
			||||||
 | 
							LONG			pkY;
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
						#if (__DATA & PK_Z)
 | 
				
			||||||
 | 
							LONG			pkZ;
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
						#if (__DATA & PK_NORMAL_PRESSURE)
 | 
				
			||||||
 | 
							#if (__MODE & PK_NORMAL_PRESSURE)
 | 
				
			||||||
 | 
								/* relative */
 | 
				
			||||||
 | 
								int			pkNormalPressure;
 | 
				
			||||||
 | 
							#else
 | 
				
			||||||
 | 
								/* absolute */
 | 
				
			||||||
 | 
								UINT		pkNormalPressure;
 | 
				
			||||||
 | 
							#endif
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
						#if (__DATA & PK_TANGENT_PRESSURE)
 | 
				
			||||||
 | 
							#if (__MODE & PK_TANGENT_PRESSURE)
 | 
				
			||||||
 | 
								/* relative */
 | 
				
			||||||
 | 
								int			pkTangentPressure;
 | 
				
			||||||
 | 
							#else
 | 
				
			||||||
 | 
								/* absolute */
 | 
				
			||||||
 | 
								UINT		pkTangentPressure;
 | 
				
			||||||
 | 
							#endif
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
						#if (__DATA & PK_ORIENTATION)
 | 
				
			||||||
 | 
							ORIENTATION		pkOrientation;
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
						#if (__DATA & PK_ROTATION)
 | 
				
			||||||
 | 
							ROTATION		pkRotation; /* 1.1 */
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef NOWTEXTENSIONS
 | 
				
			||||||
 | 
						/* extensions begin here. */
 | 
				
			||||||
 | 
						#if (__EXT(FKEYS) == PKEXT_RELATIVE) || (__EXT(FKEYS) == PKEXT_ABSOLUTE)
 | 
				
			||||||
 | 
							UINT			pkFKeys;
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
						#if (__EXT(TILT) == PKEXT_RELATIVE) || (__EXT(TILT) == PKEXT_ABSOLUTE)
 | 
				
			||||||
 | 
							TILT			pkTilt;
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} __TYPES ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#undef PACKETNAME
 | 
				
			||||||
 | 
					#undef __TAG
 | 
				
			||||||
 | 
					#undef __TAG2
 | 
				
			||||||
 | 
					#undef __TYPES
 | 
				
			||||||
 | 
					#undef __TYPES2
 | 
				
			||||||
 | 
					#undef __DATA
 | 
				
			||||||
 | 
					#undef __MODE
 | 
				
			||||||
 | 
					#undef __PFX
 | 
				
			||||||
 | 
					#undef __PFX2
 | 
				
			||||||
 | 
					#undef __PFX3
 | 
				
			||||||
 | 
					#undef __IFX
 | 
				
			||||||
 | 
					#undef __IFX2
 | 
				
			||||||
 | 
					#undef __IFX3
 | 
				
			||||||
 | 
					#undef __SFX2
 | 
				
			||||||
 | 
					#undef __SFX3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif	/* __cplusplus */
 | 
				
			||||||
							
								
								
									
										863
									
								
								gdk/win32/wintab.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										863
									
								
								gdk/win32/wintab.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,863 @@
 | 
				
			|||||||
 | 
					/* -------------------------------- wintab.h -------------------------------- */
 | 
				
			||||||
 | 
					/* Combined 16 & 32-bit version. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					The text and information contained in this file may be freely used,
 | 
				
			||||||
 | 
					copied, or distributed without compensation or licensing restrictions.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This file is copyright 1991-1998 by LCS/Telegraphics.
 | 
				
			||||||
 | 
					------------------------------------------------------------------------------*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _INC_WINTAB     /* prevent multiple includes */
 | 
				
			||||||
 | 
					#define _INC_WINTAB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif	/* __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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* -------------------------------------------------------------------------- */
 | 
				
			||||||
 | 
					/* -------------------------------------------------------------------------- */
 | 
				
			||||||
 | 
					/* Data Types */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* -------------------------------------------------------------------------- */
 | 
				
			||||||
 | 
					/* 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, NEAR *NPAXIS, FAR *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 */
 | 
				
			||||||
 | 
						#define CSR_MAX				19
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#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
 | 
				
			||||||
 | 
					#ifdef WIN32
 | 
				
			||||||
 | 
					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, NEAR *NPLOGCONTEXTA, FAR *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, NEAR *NPLOGCONTEXTW, FAR *LPLOGCONTEXTW;
 | 
				
			||||||
 | 
					#ifdef UNICODE
 | 
				
			||||||
 | 
					typedef LOGCONTEXTW LOGCONTEXT;
 | 
				
			||||||
 | 
					typedef PLOGCONTEXTW PLOGCONTEXT;
 | 
				
			||||||
 | 
					typedef NPLOGCONTEXTW NPLOGCONTEXT;
 | 
				
			||||||
 | 
					typedef LPLOGCONTEXTW LPLOGCONTEXT;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					typedef LOGCONTEXTA LOGCONTEXT;
 | 
				
			||||||
 | 
					typedef PLOGCONTEXTA PLOGCONTEXT;
 | 
				
			||||||
 | 
					typedef NPLOGCONTEXTA NPLOGCONTEXT;
 | 
				
			||||||
 | 
					typedef LPLOGCONTEXTA LPLOGCONTEXT;
 | 
				
			||||||
 | 
					#endif /* UNICODE */
 | 
				
			||||||
 | 
					#else /* WIN32 */
 | 
				
			||||||
 | 
					typedef struct tagLOGCONTEXT {
 | 
				
			||||||
 | 
						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;
 | 
				
			||||||
 | 
					} LOGCONTEXT, *PLOGCONTEXT, NEAR *NPLOGCONTEXT, FAR *LPLOGCONTEXT;
 | 
				
			||||||
 | 
					#endif /* WIN32 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* 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, NEAR *NPORIENTATION, FAR *LPORIENTATION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct tagROTATION { /* 1.1 */
 | 
				
			||||||
 | 
						int	roPitch;
 | 
				
			||||||
 | 
						int roRoll;
 | 
				
			||||||
 | 
						int roYaw;
 | 
				
			||||||
 | 
					} ROTATION, *PROTATION, NEAR *NPROTATION, FAR *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 API
 | 
				
			||||||
 | 
							#ifndef WINAPI
 | 
				
			||||||
 | 
								#define API			FAR PASCAL
 | 
				
			||||||
 | 
							#else
 | 
				
			||||||
 | 
								#define API			WINAPI
 | 
				
			||||||
 | 
							#endif
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef NOWTCALLBACKS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						#ifndef CALLBACK
 | 
				
			||||||
 | 
						#define CALLBACK	FAR PASCAL
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						#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 FAR *LPWTHOOKPROC;
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef NOWTFUNCTIONS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						#ifndef NOWTBASICFXNS
 | 
				
			||||||
 | 
						/* BASIC FUNCTIONS */
 | 
				
			||||||
 | 
					#ifdef WIN32
 | 
				
			||||||
 | 
						UINT API WTInfoA(UINT, UINT, LPVOID);
 | 
				
			||||||
 | 
						#define ORD_WTInfoA						20
 | 
				
			||||||
 | 
						UINT API WTInfoW(UINT, UINT, LPVOID);
 | 
				
			||||||
 | 
						#define ORD_WTInfoW					  1020
 | 
				
			||||||
 | 
						#ifdef UNICODE
 | 
				
			||||||
 | 
						#define WTInfo  WTInfoW
 | 
				
			||||||
 | 
						#define ORD_WTInfo  ORD_WTInfoW
 | 
				
			||||||
 | 
						#else
 | 
				
			||||||
 | 
						#define WTInfo  WTInfoA
 | 
				
			||||||
 | 
						#define ORD_WTInfo  ORD_WTInfoA
 | 
				
			||||||
 | 
						#endif /* !UNICODE */
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						UINT API WTInfo(UINT, UINT, LPVOID);
 | 
				
			||||||
 | 
						#define ORD_WTInfo						20
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef WIN32
 | 
				
			||||||
 | 
						HCTX API WTOpenA(HWND, LPLOGCONTEXTA, BOOL);
 | 
				
			||||||
 | 
						#define ORD_WTOpenA						21
 | 
				
			||||||
 | 
						HCTX API WTOpenW(HWND, LPLOGCONTEXTW, BOOL);
 | 
				
			||||||
 | 
						#define ORD_WTOpenW					  1021
 | 
				
			||||||
 | 
						#ifdef UNICODE
 | 
				
			||||||
 | 
						#define WTOpen  WTOpenW
 | 
				
			||||||
 | 
						#define ORD_WTOpen  ORD_WTOpenW
 | 
				
			||||||
 | 
						#else
 | 
				
			||||||
 | 
						#define WTOpen  WTOpenA
 | 
				
			||||||
 | 
						#define ORD_WTOpen  ORD_WTOpenA
 | 
				
			||||||
 | 
						#endif /* !UNICODE */
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						HCTX API WTOpen(HWND, LPLOGCONTEXT, BOOL);
 | 
				
			||||||
 | 
						#define ORD_WTOpen						21
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						BOOL API WTClose(HCTX);
 | 
				
			||||||
 | 
						#define ORD_WTClose						22
 | 
				
			||||||
 | 
						int API WTPacketsGet(HCTX, int, LPVOID);
 | 
				
			||||||
 | 
						#define ORD_WTPacketsGet				23
 | 
				
			||||||
 | 
						BOOL API WTPacket(HCTX, UINT, LPVOID);
 | 
				
			||||||
 | 
						#define ORD_WTPacket					24
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						#ifndef NOWTVISIBILITYFXNS
 | 
				
			||||||
 | 
						/* VISIBILITY FUNCTIONS */
 | 
				
			||||||
 | 
						BOOL API WTEnable(HCTX, BOOL);
 | 
				
			||||||
 | 
						#define ORD_WTEnable					40
 | 
				
			||||||
 | 
						BOOL API WTOverlap(HCTX, BOOL);
 | 
				
			||||||
 | 
						#define ORD_WTOverlap					41
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						#ifndef NOWTCTXEDITFXNS
 | 
				
			||||||
 | 
						/* CONTEXT EDITING FUNCTIONS */
 | 
				
			||||||
 | 
						BOOL API WTConfig(HCTX, HWND);
 | 
				
			||||||
 | 
						#define ORD_WTConfig					60
 | 
				
			||||||
 | 
					#ifdef WIN32
 | 
				
			||||||
 | 
						BOOL API WTGetA(HCTX, LPLOGCONTEXTA);
 | 
				
			||||||
 | 
						#define ORD_WTGetA						61
 | 
				
			||||||
 | 
						BOOL API WTGetW(HCTX, LPLOGCONTEXTW);
 | 
				
			||||||
 | 
						#define ORD_WTGetW					  1061
 | 
				
			||||||
 | 
						#ifdef UNICODE
 | 
				
			||||||
 | 
						#define WTGet  WTGetW
 | 
				
			||||||
 | 
						#define ORD_WTGet  ORD_WTGetW
 | 
				
			||||||
 | 
						#else
 | 
				
			||||||
 | 
						#define WTGet  WTGetA
 | 
				
			||||||
 | 
						#define ORD_WTGet  ORD_WTGetA
 | 
				
			||||||
 | 
						#endif /* !UNICODE */
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						BOOL API WTGet(HCTX, LPLOGCONTEXT);
 | 
				
			||||||
 | 
						#define ORD_WTGet						61
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef WIN32
 | 
				
			||||||
 | 
						BOOL API WTSetA(HCTX, LPLOGCONTEXTA);
 | 
				
			||||||
 | 
						#define ORD_WTSetA						62
 | 
				
			||||||
 | 
						BOOL API WTSetW(HCTX, LPLOGCONTEXTW);
 | 
				
			||||||
 | 
						#define ORD_WTSetW					  1062
 | 
				
			||||||
 | 
						#ifdef UNICODE
 | 
				
			||||||
 | 
						#define WTSet  WTSetW
 | 
				
			||||||
 | 
						#define ORD_WTSet  ORD_WTSetW
 | 
				
			||||||
 | 
						#else
 | 
				
			||||||
 | 
						#define WTSet  WTSetA
 | 
				
			||||||
 | 
						#define ORD_WTSet  ORD_WTSetA
 | 
				
			||||||
 | 
						#endif /* !UNICODE */
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						BOOL API WTSet(HCTX, LPLOGCONTEXT);
 | 
				
			||||||
 | 
						#define ORD_WTSet						62
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						BOOL API WTExtGet(HCTX, UINT, LPVOID);
 | 
				
			||||||
 | 
						#define ORD_WTExtGet					63
 | 
				
			||||||
 | 
						BOOL API WTExtSet(HCTX, UINT, LPVOID);
 | 
				
			||||||
 | 
						#define ORD_WTExtSet					64
 | 
				
			||||||
 | 
						BOOL API WTSave(HCTX, LPVOID);
 | 
				
			||||||
 | 
						#define ORD_WTSave						65
 | 
				
			||||||
 | 
						HCTX API WTRestore(HWND, LPVOID, BOOL);
 | 
				
			||||||
 | 
						#define ORD_WTRestore					66
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						#ifndef NOWTQUEUEFXNS
 | 
				
			||||||
 | 
						/* ADVANCED PACKET AND QUEUE FUNCTIONS */
 | 
				
			||||||
 | 
						int API WTPacketsPeek(HCTX, int, LPVOID);
 | 
				
			||||||
 | 
						#define ORD_WTPacketsPeek				80
 | 
				
			||||||
 | 
						int API WTDataGet(HCTX, UINT, UINT, int, LPVOID, LPINT);
 | 
				
			||||||
 | 
						#define ORD_WTDataGet					81
 | 
				
			||||||
 | 
						int API WTDataPeek(HCTX, UINT, UINT, int, LPVOID, LPINT);
 | 
				
			||||||
 | 
						#define ORD_WTDataPeek					82
 | 
				
			||||||
 | 
					#ifndef WIN32
 | 
				
			||||||
 | 
					/* OBSOLETE IN WIN32! */
 | 
				
			||||||
 | 
						DWORD API WTQueuePackets(HCTX);
 | 
				
			||||||
 | 
						#define ORD_WTQueuePackets				83
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						int API WTQueueSizeGet(HCTX);
 | 
				
			||||||
 | 
						#define ORD_WTQueueSizeGet				84
 | 
				
			||||||
 | 
						BOOL API WTQueueSizeSet(HCTX, int);
 | 
				
			||||||
 | 
						#define ORD_WTQueueSizeSet				85
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						#ifndef NOWTHMGRFXNS
 | 
				
			||||||
 | 
						/* MANAGER HANDLE FUNCTIONS */
 | 
				
			||||||
 | 
						HMGR API WTMgrOpen(HWND, UINT);
 | 
				
			||||||
 | 
						#define ORD_WTMgrOpen					100
 | 
				
			||||||
 | 
						BOOL API WTMgrClose(HMGR);
 | 
				
			||||||
 | 
						#define ORD_WTMgrClose					101
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						#ifndef NOWTMGRCTXFXNS
 | 
				
			||||||
 | 
						/* MANAGER CONTEXT FUNCTIONS */
 | 
				
			||||||
 | 
						BOOL API WTMgrContextEnum(HMGR, WTENUMPROC, LPARAM);
 | 
				
			||||||
 | 
						#define ORD_WTMgrContextEnum			120
 | 
				
			||||||
 | 
						HWND API WTMgrContextOwner(HMGR, HCTX);
 | 
				
			||||||
 | 
						#define ORD_WTMgrContextOwner			121
 | 
				
			||||||
 | 
						HCTX API WTMgrDefContext(HMGR, BOOL);
 | 
				
			||||||
 | 
						#define ORD_WTMgrDefContext				122
 | 
				
			||||||
 | 
						HCTX API WTMgrDefContextEx(HMGR, UINT, BOOL); /* 1.1 */
 | 
				
			||||||
 | 
						#define ORD_WTMgrDefContextEx			206
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						#ifndef NOWTMGRCONFIGFXNS
 | 
				
			||||||
 | 
						/* MANAGER CONFIG BOX  FUNCTIONS */
 | 
				
			||||||
 | 
						UINT API WTMgrDeviceConfig(HMGR, UINT, HWND);
 | 
				
			||||||
 | 
						#define ORD_WTMgrDeviceConfig			140
 | 
				
			||||||
 | 
					#ifndef WIN32
 | 
				
			||||||
 | 
					/* OBSOLETE IN WIN32! */
 | 
				
			||||||
 | 
						BOOL API WTMgrConfigReplace(HMGR, BOOL, WTCONFIGPROC);
 | 
				
			||||||
 | 
						#define ORD_WTMgrConfigReplace			141
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						#ifndef NOWTMGRHOOKFXNS
 | 
				
			||||||
 | 
						/* MANAGER PACKET HOOK FUNCTIONS */
 | 
				
			||||||
 | 
					#ifndef WIN32
 | 
				
			||||||
 | 
					/* OBSOLETE IN WIN32! */
 | 
				
			||||||
 | 
						WTHOOKPROC API WTMgrPacketHook(HMGR, BOOL, int, WTHOOKPROC);
 | 
				
			||||||
 | 
						#define ORD_WTMgrPacketHook				160
 | 
				
			||||||
 | 
						LRESULT API WTMgrPacketHookDefProc(int, WPARAM, LPARAM, LPWTHOOKPROC);
 | 
				
			||||||
 | 
						#define ORD_WTMgrPacketHookDefProc		161
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						#ifndef NOWTMGRPREFFXNS
 | 
				
			||||||
 | 
						/* MANAGER PREFERENCE DATA FUNCTIONS */
 | 
				
			||||||
 | 
						BOOL API WTMgrExt(HMGR, UINT, LPVOID);
 | 
				
			||||||
 | 
						#define ORD_WTMgrExt					180
 | 
				
			||||||
 | 
						BOOL API WTMgrCsrEnable(HMGR, UINT, BOOL);
 | 
				
			||||||
 | 
						#define ORD_WTMgrCsrEnable				181
 | 
				
			||||||
 | 
						BOOL API WTMgrCsrButtonMap(HMGR, UINT, LPBYTE, LPBYTE);
 | 
				
			||||||
 | 
						#define ORD_WTMgrCsrButtonMap			182
 | 
				
			||||||
 | 
						BOOL API WTMgrCsrPressureBtnMarks(HMGR, UINT, DWORD, DWORD);
 | 
				
			||||||
 | 
						#define ORD_WTMgrCsrPressureBtnMarks	183
 | 
				
			||||||
 | 
						BOOL API WTMgrCsrPressureResponse(HMGR, UINT, UINT FAR *, UINT FAR *);
 | 
				
			||||||
 | 
						#define ORD_WTMgrCsrPressureResponse	184
 | 
				
			||||||
 | 
						BOOL API WTMgrCsrExt(HMGR, UINT, UINT, LPVOID);
 | 
				
			||||||
 | 
						#define ORD_WTMgrCsrExt					185
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Win32 replacements for non-portable functions. */
 | 
				
			||||||
 | 
						#ifndef NOWTQUEUEFXNS
 | 
				
			||||||
 | 
						/* ADVANCED PACKET AND QUEUE FUNCTIONS */
 | 
				
			||||||
 | 
						BOOL API WTQueuePacketsEx(HCTX, UINT FAR *, UINT FAR *);
 | 
				
			||||||
 | 
						#define ORD_WTQueuePacketsEx			200
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						#ifndef NOWTMGRCONFIGFXNS
 | 
				
			||||||
 | 
						/* MANAGER CONFIG BOX  FUNCTIONS */
 | 
				
			||||||
 | 
					#ifdef WIN32
 | 
				
			||||||
 | 
						BOOL API WTMgrConfigReplaceExA(HMGR, BOOL, LPSTR, LPSTR);
 | 
				
			||||||
 | 
						#define ORD_WTMgrConfigReplaceExA		202
 | 
				
			||||||
 | 
						BOOL API WTMgrConfigReplaceExW(HMGR, BOOL, LPWSTR, LPSTR);
 | 
				
			||||||
 | 
						#define ORD_WTMgrConfigReplaceExW		1202
 | 
				
			||||||
 | 
						#ifdef UNICODE
 | 
				
			||||||
 | 
						#define WTMgrConfigReplaceEx  WTMgrConfigReplaceExW
 | 
				
			||||||
 | 
						#define ORD_WTMgrConfigReplaceEx  ORD_WTMgrConfigReplaceExW
 | 
				
			||||||
 | 
						#else
 | 
				
			||||||
 | 
						#define WTMgrConfigReplaceEx  WTMgrConfigReplaceExA
 | 
				
			||||||
 | 
						#define ORD_WTMgrConfigReplaceEx  ORD_WTMgrConfigReplaceExA
 | 
				
			||||||
 | 
						#endif /* !UNICODE */
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						BOOL API WTMgrConfigReplaceEx(HMGR, BOOL, LPSTR, LPSTR);
 | 
				
			||||||
 | 
						#define ORD_WTMgrConfigReplaceEx		202
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						#ifndef NOWTMGRHOOKFXNS
 | 
				
			||||||
 | 
						/* MANAGER PACKET HOOK FUNCTIONS */
 | 
				
			||||||
 | 
					#ifdef WIN32
 | 
				
			||||||
 | 
						HWTHOOK API WTMgrPacketHookExA(HMGR, int, LPSTR, LPSTR);
 | 
				
			||||||
 | 
						#define ORD_WTMgrPacketHookExA			203
 | 
				
			||||||
 | 
						HWTHOOK API WTMgrPacketHookExW(HMGR, int, LPWSTR, LPSTR);
 | 
				
			||||||
 | 
						#define ORD_WTMgrPacketHookExW			1203
 | 
				
			||||||
 | 
						#ifdef UNICODE
 | 
				
			||||||
 | 
						#define WTMgrPacketHookEx  WTMgrPacketHookExW
 | 
				
			||||||
 | 
						#define ORD_WTMgrPacketHookEx  ORD_WTMgrPacketHookExW
 | 
				
			||||||
 | 
						#else
 | 
				
			||||||
 | 
						#define WTMgrPacketHookEx  WTMgrPacketHookExA
 | 
				
			||||||
 | 
						#define ORD_WTMgrPacketHookEx  ORD_WTMgrPacketHookExA
 | 
				
			||||||
 | 
						#endif /* !UNICODE */
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						HWTHOOK API WTMgrPacketHookEx(HMGR, int, LPSTR, LPSTR);
 | 
				
			||||||
 | 
						#define ORD_WTMgrPacketHookEx			203
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						BOOL API WTMgrPacketUnhook(HWTHOOK);
 | 
				
			||||||
 | 
						#define ORD_WTMgrPacketUnhook			204
 | 
				
			||||||
 | 
						LRESULT API WTMgrPacketHookNext(HWTHOOK, int, WPARAM, LPARAM);
 | 
				
			||||||
 | 
						#define ORD_WTMgrPacketHookNext			205
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						#ifndef NOWTMGRPREFFXNS
 | 
				
			||||||
 | 
						/* MANAGER PREFERENCE DATA FUNCTIONS */
 | 
				
			||||||
 | 
						BOOL API WTMgrCsrPressureBtnMarksEx(HMGR, UINT, UINT FAR *, UINT FAR *);
 | 
				
			||||||
 | 
						#define ORD_WTMgrCsrPressureBtnMarksEx	201
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif	/* __cplusplus */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* #define _INC_WINTAB */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Reference in New Issue
	
	Block a user