Index: include/CaptureFilter.h
===================================================================
--- include/CaptureFilter.h	(revision 15)
+++ include/CaptureFilter.h	(working copy)
@@ -8,7 +8,6 @@
 #include <cv.h>
 #include <cxcore.h>
 #include <highgui.h>
-#include <process.h>
 
 // FIXME: we should put this in a namespace
 
Index: include/glut.h
===================================================================
--- include/glut.h	(revision 15)
+++ include/glut.h	(working copy)
@@ -1,716 +0,0 @@
-#ifndef __glut_h__
-#define __glut_h__
-
-/* Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998. */
-
-/* This program is freely distributable without licensing fees  and is
-   provided without guarantee or warrantee expressed or  implied. This
-   program is -not- in the public domain. */
-
-#if defined(_WIN32)
-
-/* GLUT 3.7 now tries to avoid including <windows.h>
-   to avoid name space pollution, but Win32's <GL/gl.h> 
-   needs APIENTRY and WINGDIAPI defined properly. */
-# if 0
-   /* This would put tons of macros and crap in our clean name space. */
-#  define  WIN32_LEAN_AND_MEAN
-#  include <windows.h>
-# else
-   /* XXX This is from Win32's <windef.h> */
-#  ifndef APIENTRY
-#   define GLUT_APIENTRY_DEFINED
-#   if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__) || defined(__LCC__)
-#    define APIENTRY    __stdcall
-#   else
-#    define APIENTRY
-#   endif
-#  endif
-   /* XXX This is from Win32's <winnt.h> */
-#  ifndef CALLBACK
-#   if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS) || defined(__LCC__)
-#    define CALLBACK __stdcall
-#   else
-#    define CALLBACK
-#   endif
-#  endif
-   /* XXX Hack for lcc compiler.  It doesn't support __declspec(dllimport), just __stdcall. */
-#  if defined( __LCC__ )
-#   undef WINGDIAPI
-#   define WINGDIAPI __stdcall
-#  else
-   /* XXX This is from Win32's <wingdi.h> and <winnt.h> */
-#   ifndef WINGDIAPI
-#    define GLUT_WINGDIAPI_DEFINED
-#    define WINGDIAPI __declspec(dllimport)
-#   endif
-#  endif
-   /* XXX This is from Win32's <ctype.h> */
-#  ifndef _WCHAR_T_DEFINED
-typedef unsigned short wchar_t;
-#   define _WCHAR_T_DEFINED
-#  endif
-# endif
-
-/* To disable automatic library usage for GLUT, define GLUT_NO_LIB_PRAGMA
-   in your compile preprocessor options. */
-# if !defined(GLUT_BUILDING_LIB) && !defined(GLUT_NO_LIB_PRAGMA)
-#  pragma comment (lib, "winmm.lib")      /* link with Windows MultiMedia lib */
-/* To enable automatic SGI OpenGL for Windows library usage for GLUT,
-   define GLUT_USE_SGI_OPENGL in your compile preprocessor options.  */
-#  ifdef GLUT_USE_SGI_OPENGL
-#   pragma comment (lib, "opengl.lib")    /* link with SGI OpenGL for Windows lib */
-#   pragma comment (lib, "glu.lib")       /* link with SGI OpenGL Utility lib */
-#   pragma comment (lib, "glut.lib")      /* link with Win32 GLUT for SGI OpenGL lib */
-#  else
-#   pragma comment (lib, "opengl32.lib")  /* link with Microsoft OpenGL lib */
-#   pragma comment (lib, "glu32.lib")     /* link with Microsoft OpenGL Utility lib */
-#   pragma comment (lib, "glut32.lib")    /* link with Win32 GLUT lib */
-#  endif
-# endif
-
-/* To disable supression of annoying warnings about floats being promoted
-   to floats, define GLUT_NO_WARNING_DISABLE in your compile preprocessor
-   options. */
-# ifndef GLUT_NO_WARNING_DISABLE
-#  pragma warning (disable:4244)  /* Disable bogus VC++ 4.2 conversion warnings. */
-#  pragma warning (disable:4305)  /* VC++ 5.0 version of above warning. */
-# endif
-
-/* Win32 has an annoying issue where there are multiple C run-time
-   libraries (CRTs).  If the executable is linked with a different CRT
-   from the GLUT DLL, the GLUT DLL will not share the same CRT static
-   data seen by the executable.  In particular, atexit callbacks registered
-   in the executable will not be called if GLUT calls its (different)
-   exit routine).  GLUT is typically built with the
-   "/MD" option (the CRT with multithreading DLL support), but the Visual
-   C++ linker default is "/ML" (the single threaded CRT).
-
-   One workaround to this issue is requiring users to always link with
-   the same CRT as GLUT is compiled with.  That requires users supply a
-   non-standard option.  GLUT 3.7 has its own built-in workaround where
-   the executable's "exit" function pointer is covertly passed to GLUT.
-   GLUT then calls the executable's exit function pointer to ensure that
-   any "atexit" calls registered by the application are called if GLUT
-   needs to exit.
-
-   Note that the __glut*WithExit routines should NEVER be called directly.
-   To avoid the atexit workaround, #define GLUT_DISABLE_ATEXIT_HACK. */
-
-/* XXX This is from Win32's <process.h> */
-# if !defined(_MSC_VER) && !defined(__cdecl)
-   /* Define __cdecl for non-Microsoft compilers. */
-#  define __cdecl
-#  define GLUT_DEFINED___CDECL
-# endif
-# ifndef _CRTIMP
-#  ifdef _NTSDK
-    /* Definition compatible with NT SDK */
-#   define _CRTIMP
-#  else
-    /* Current definition */
-#   ifdef _DLL
-#    define _CRTIMP __declspec(dllimport)
-#   else
-#    define _CRTIMP
-#   endif
-#  endif
-#  define GLUT_DEFINED__CRTIMP
-# endif
-
-/* GLUT API entry point declarations for Win32. */
-# ifdef GLUT_BUILDING_LIB
-#  define GLUTAPI __declspec(dllexport)
-# else
-#  ifdef _DLL
-#   define GLUTAPI __declspec(dllimport)
-#  else
-#   define GLUTAPI extern
-#  endif
-# endif
-
-/* GLUT callback calling convention for Win32. */
-# define GLUTCALLBACK __cdecl
-
-#endif  /* _WIN32 */
-
-#include <GL/gl.h>
-#include <GL/glu.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if defined(_WIN32)
-# ifndef GLUT_BUILDING_LIB
-extern _CRTIMP void __cdecl exit(int);
-# endif
-#else
-/* non-Win32 case. */
-/* Define APIENTRY and CALLBACK to nothing if we aren't on Win32. */
-# define APIENTRY
-# define GLUT_APIENTRY_DEFINED
-# define CALLBACK
-/* Define GLUTAPI and GLUTCALLBACK as below if we aren't on Win32. */
-# define GLUTAPI extern
-# define GLUTCALLBACK
-/* Prototype exit for the non-Win32 case (see above). */
-extern void exit(int);
-#endif
-
-/**
- GLUT API revision history:
- 
- GLUT_API_VERSION is updated to reflect incompatible GLUT
- API changes (interface changes, semantic changes, deletions,
- or additions).
- 
- GLUT_API_VERSION=1  First public release of GLUT.  11/29/94
-
- GLUT_API_VERSION=2  Added support for OpenGL/GLX multisampling,
- extension.  Supports new input devices like tablet, dial and button
- box, and Spaceball.  Easy to query OpenGL extensions.
-
- GLUT_API_VERSION=3  glutMenuStatus added.
-
- GLUT_API_VERSION=4  glutInitDisplayString, glutWarpPointer,
- glutBitmapLength, glutStrokeLength, glutWindowStatusFunc, dynamic
- video resize subAPI, glutPostWindowRedisplay, glutKeyboardUpFunc,
- glutSpecialUpFunc, glutIgnoreKeyRepeat, glutSetKeyRepeat,
- glutJoystickFunc, glutForceJoystickFunc (NOT FINALIZED!).
-**/
-#ifndef GLUT_API_VERSION  /* allow this to be overriden */
-#define GLUT_API_VERSION		3
-#endif
-
-/**
- GLUT implementation revision history:
- 
- GLUT_XLIB_IMPLEMENTATION is updated to reflect both GLUT
- API revisions and implementation revisions (ie, bug fixes).
-
- GLUT_XLIB_IMPLEMENTATION=1  mjk's first public release of
- GLUT Xlib-based implementation.  11/29/94
-
- GLUT_XLIB_IMPLEMENTATION=2  mjk's second public release of
- GLUT Xlib-based implementation providing GLUT version 2 
- interfaces.
-
- GLUT_XLIB_IMPLEMENTATION=3  mjk's GLUT 2.2 images. 4/17/95
-
- GLUT_XLIB_IMPLEMENTATION=4  mjk's GLUT 2.3 images. 6/?/95
-
- GLUT_XLIB_IMPLEMENTATION=5  mjk's GLUT 3.0 images. 10/?/95
-
- GLUT_XLIB_IMPLEMENTATION=7  mjk's GLUT 3.1+ with glutWarpPoitner.  7/24/96
-
- GLUT_XLIB_IMPLEMENTATION=8  mjk's GLUT 3.1+ with glutWarpPoitner
- and video resize.  1/3/97
-
- GLUT_XLIB_IMPLEMENTATION=9 mjk's GLUT 3.4 release with early GLUT 4 routines.
-
- GLUT_XLIB_IMPLEMENTATION=11 Mesa 2.5's GLUT 3.6 release.
-
- GLUT_XLIB_IMPLEMENTATION=12 mjk's GLUT 3.6 release with early GLUT 4 routines + signal handling.
-
- GLUT_XLIB_IMPLEMENTATION=13 mjk's GLUT 3.7 beta with GameGLUT support.
-
- GLUT_XLIB_IMPLEMENTATION=14 mjk's GLUT 3.7 beta with f90gl friend interface.
-
- GLUT_XLIB_IMPLEMENTATION=15 mjk's GLUT 3.7 beta sync'ed with Mesa <GL/glut.h>
-**/
-#ifndef GLUT_XLIB_IMPLEMENTATION  /* Allow this to be overriden. */
-#define GLUT_XLIB_IMPLEMENTATION	15
-#endif
-
-/* Display mode bit masks. */
-#define GLUT_RGB			0
-#define GLUT_RGBA			GLUT_RGB
-#define GLUT_INDEX			1
-#define GLUT_SINGLE			0
-#define GLUT_DOUBLE			2
-#define GLUT_ACCUM			4
-#define GLUT_ALPHA			8
-#define GLUT_DEPTH			16
-#define GLUT_STENCIL			32
-#if (GLUT_API_VERSION >= 2)
-#define GLUT_MULTISAMPLE		128
-#define GLUT_STEREO			256
-#endif
-#if (GLUT_API_VERSION >= 3)
-#define GLUT_LUMINANCE			512
-#endif
-
-/* Mouse buttons. */
-#define GLUT_LEFT_BUTTON		0
-#define GLUT_MIDDLE_BUTTON		1
-#define GLUT_RIGHT_BUTTON		2
-
-/* Mouse button  state. */
-#define GLUT_DOWN			0
-#define GLUT_UP				1
-
-#if (GLUT_API_VERSION >= 2)
-/* function keys */
-#define GLUT_KEY_F1			1
-#define GLUT_KEY_F2			2
-#define GLUT_KEY_F3			3
-#define GLUT_KEY_F4			4
-#define GLUT_KEY_F5			5
-#define GLUT_KEY_F6			6
-#define GLUT_KEY_F7			7
-#define GLUT_KEY_F8			8
-#define GLUT_KEY_F9			9
-#define GLUT_KEY_F10			10
-#define GLUT_KEY_F11			11
-#define GLUT_KEY_F12			12
-/* directional keys */
-#define GLUT_KEY_LEFT			100
-#define GLUT_KEY_UP			101
-#define GLUT_KEY_RIGHT			102
-#define GLUT_KEY_DOWN			103
-#define GLUT_KEY_PAGE_UP		104
-#define GLUT_KEY_PAGE_DOWN		105
-#define GLUT_KEY_HOME			106
-#define GLUT_KEY_END			107
-#define GLUT_KEY_INSERT			108
-#endif
-
-/* Entry/exit  state. */
-#define GLUT_LEFT			0
-#define GLUT_ENTERED			1
-
-/* Menu usage  state. */
-#define GLUT_MENU_NOT_IN_USE		0
-#define GLUT_MENU_IN_USE		1
-
-/* Visibility  state. */
-#define GLUT_NOT_VISIBLE		0
-#define GLUT_VISIBLE			1
-
-/* Window status  state. */
-#define GLUT_HIDDEN			0
-#define GLUT_FULLY_RETAINED		1
-#define GLUT_PARTIALLY_RETAINED		2
-#define GLUT_FULLY_COVERED		3
-
-/* Color index component selection values. */
-#define GLUT_RED			0
-#define GLUT_GREEN			1
-#define GLUT_BLUE			2
-
-#if defined(_WIN32)
-/* Stroke font constants (use these in GLUT program). */
-#define GLUT_STROKE_ROMAN		((void*)0)
-#define GLUT_STROKE_MONO_ROMAN		((void*)1)
-
-/* Bitmap font constants (use these in GLUT program). */
-#define GLUT_BITMAP_9_BY_15		((void*)2)
-#define GLUT_BITMAP_8_BY_13		((void*)3)
-#define GLUT_BITMAP_TIMES_ROMAN_10	((void*)4)
-#define GLUT_BITMAP_TIMES_ROMAN_24	((void*)5)
-#if (GLUT_API_VERSION >= 3)
-#define GLUT_BITMAP_HELVETICA_10	((void*)6)
-#define GLUT_BITMAP_HELVETICA_12	((void*)7)
-#define GLUT_BITMAP_HELVETICA_18	((void*)8)
-#endif
-#else
-/* Stroke font opaque addresses (use constants instead in source code). */
-GLUTAPI void *glutStrokeRoman;
-GLUTAPI void *glutStrokeMonoRoman;
-
-/* Stroke font constants (use these in GLUT program). */
-#define GLUT_STROKE_ROMAN		(&glutStrokeRoman)
-#define GLUT_STROKE_MONO_ROMAN		(&glutStrokeMonoRoman)
-
-/* Bitmap font opaque addresses (use constants instead in source code). */
-GLUTAPI void *glutBitmap9By15;
-GLUTAPI void *glutBitmap8By13;
-GLUTAPI void *glutBitmapTimesRoman10;
-GLUTAPI void *glutBitmapTimesRoman24;
-GLUTAPI void *glutBitmapHelvetica10;
-GLUTAPI void *glutBitmapHelvetica12;
-GLUTAPI void *glutBitmapHelvetica18;
-
-/* Bitmap font constants (use these in GLUT program). */
-#define GLUT_BITMAP_9_BY_15		(&glutBitmap9By15)
-#define GLUT_BITMAP_8_BY_13		(&glutBitmap8By13)
-#define GLUT_BITMAP_TIMES_ROMAN_10	(&glutBitmapTimesRoman10)
-#define GLUT_BITMAP_TIMES_ROMAN_24	(&glutBitmapTimesRoman24)
-#if (GLUT_API_VERSION >= 3)
-#define GLUT_BITMAP_HELVETICA_10	(&glutBitmapHelvetica10)
-#define GLUT_BITMAP_HELVETICA_12	(&glutBitmapHelvetica12)
-#define GLUT_BITMAP_HELVETICA_18	(&glutBitmapHelvetica18)
-#endif
-#endif
-
-/* glutGet parameters. */
-#define GLUT_WINDOW_X			((GLenum) 100)
-#define GLUT_WINDOW_Y			((GLenum) 101)
-#define GLUT_WINDOW_WIDTH		((GLenum) 102)
-#define GLUT_WINDOW_HEIGHT		((GLenum) 103)
-#define GLUT_WINDOW_BUFFER_SIZE		((GLenum) 104)
-#define GLUT_WINDOW_STENCIL_SIZE	((GLenum) 105)
-#define GLUT_WINDOW_DEPTH_SIZE		((GLenum) 106)
-#define GLUT_WINDOW_RED_SIZE		((GLenum) 107)
-#define GLUT_WINDOW_GREEN_SIZE		((GLenum) 108)
-#define GLUT_WINDOW_BLUE_SIZE		((GLenum) 109)
-#define GLUT_WINDOW_ALPHA_SIZE		((GLenum) 110)
-#define GLUT_WINDOW_ACCUM_RED_SIZE	((GLenum) 111)
-#define GLUT_WINDOW_ACCUM_GREEN_SIZE	((GLenum) 112)
-#define GLUT_WINDOW_ACCUM_BLUE_SIZE	((GLenum) 113)
-#define GLUT_WINDOW_ACCUM_ALPHA_SIZE	((GLenum) 114)
-#define GLUT_WINDOW_DOUBLEBUFFER	((GLenum) 115)
-#define GLUT_WINDOW_RGBA		((GLenum) 116)
-#define GLUT_WINDOW_PARENT		((GLenum) 117)
-#define GLUT_WINDOW_NUM_CHILDREN	((GLenum) 118)
-#define GLUT_WINDOW_COLORMAP_SIZE	((GLenum) 119)
-#if (GLUT_API_VERSION >= 2)
-#define GLUT_WINDOW_NUM_SAMPLES		((GLenum) 120)
-#define GLUT_WINDOW_STEREO		((GLenum) 121)
-#endif
-#if (GLUT_API_VERSION >= 3)
-#define GLUT_WINDOW_CURSOR		((GLenum) 122)
-#endif
-#define GLUT_SCREEN_WIDTH		((GLenum) 200)
-#define GLUT_SCREEN_HEIGHT		((GLenum) 201)
-#define GLUT_SCREEN_WIDTH_MM		((GLenum) 202)
-#define GLUT_SCREEN_HEIGHT_MM		((GLenum) 203)
-#define GLUT_MENU_NUM_ITEMS		((GLenum) 300)
-#define GLUT_DISPLAY_MODE_POSSIBLE	((GLenum) 400)
-#define GLUT_INIT_WINDOW_X		((GLenum) 500)
-#define GLUT_INIT_WINDOW_Y		((GLenum) 501)
-#define GLUT_INIT_WINDOW_WIDTH		((GLenum) 502)
-#define GLUT_INIT_WINDOW_HEIGHT		((GLenum) 503)
-#define GLUT_INIT_DISPLAY_MODE		((GLenum) 504)
-#if (GLUT_API_VERSION >= 2)
-#define GLUT_ELAPSED_TIME		((GLenum) 700)
-#endif
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
-#define GLUT_WINDOW_FORMAT_ID		((GLenum) 123)
-#endif
-
-#if (GLUT_API_VERSION >= 2)
-/* glutDeviceGet parameters. */
-#define GLUT_HAS_KEYBOARD		((GLenum) 600)
-#define GLUT_HAS_MOUSE			((GLenum) 601)
-#define GLUT_HAS_SPACEBALL		((GLenum) 602)
-#define GLUT_HAS_DIAL_AND_BUTTON_BOX	((GLenum) 603)
-#define GLUT_HAS_TABLET			((GLenum) 604)
-#define GLUT_NUM_MOUSE_BUTTONS		((GLenum) 605)
-#define GLUT_NUM_SPACEBALL_BUTTONS	((GLenum) 606)
-#define GLUT_NUM_BUTTON_BOX_BUTTONS	((GLenum) 607)
-#define GLUT_NUM_DIALS			((GLenum) 608)
-#define GLUT_NUM_TABLET_BUTTONS		((GLenum) 609)
-#endif
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
-#define GLUT_DEVICE_IGNORE_KEY_REPEAT   ((GLenum) 610)
-#define GLUT_DEVICE_KEY_REPEAT          ((GLenum) 611)
-#define GLUT_HAS_JOYSTICK		((GLenum) 612)
-#define GLUT_OWNS_JOYSTICK		((GLenum) 613)
-#define GLUT_JOYSTICK_BUTTONS		((GLenum) 614)
-#define GLUT_JOYSTICK_AXES		((GLenum) 615)
-#define GLUT_JOYSTICK_POLL_RATE		((GLenum) 616)
-#endif
-
-#if (GLUT_API_VERSION >= 3)
-/* glutLayerGet parameters. */
-#define GLUT_OVERLAY_POSSIBLE           ((GLenum) 800)
-#define GLUT_LAYER_IN_USE		((GLenum) 801)
-#define GLUT_HAS_OVERLAY		((GLenum) 802)
-#define GLUT_TRANSPARENT_INDEX		((GLenum) 803)
-#define GLUT_NORMAL_DAMAGED		((GLenum) 804)
-#define GLUT_OVERLAY_DAMAGED		((GLenum) 805)
-
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-/* glutVideoResizeGet parameters. */
-#define GLUT_VIDEO_RESIZE_POSSIBLE	((GLenum) 900)
-#define GLUT_VIDEO_RESIZE_IN_USE	((GLenum) 901)
-#define GLUT_VIDEO_RESIZE_X_DELTA	((GLenum) 902)
-#define GLUT_VIDEO_RESIZE_Y_DELTA	((GLenum) 903)
-#define GLUT_VIDEO_RESIZE_WIDTH_DELTA	((GLenum) 904)
-#define GLUT_VIDEO_RESIZE_HEIGHT_DELTA	((GLenum) 905)
-#define GLUT_VIDEO_RESIZE_X		((GLenum) 906)
-#define GLUT_VIDEO_RESIZE_Y		((GLenum) 907)
-#define GLUT_VIDEO_RESIZE_WIDTH		((GLenum) 908)
-#define GLUT_VIDEO_RESIZE_HEIGHT	((GLenum) 909)
-#endif
-
-/* glutUseLayer parameters. */
-#define GLUT_NORMAL			((GLenum) 0)
-#define GLUT_OVERLAY			((GLenum) 1)
-
-/* glutGetModifiers return mask. */
-#define GLUT_ACTIVE_SHIFT               1
-#define GLUT_ACTIVE_CTRL                2
-#define GLUT_ACTIVE_ALT                 4
-
-/* glutSetCursor parameters. */
-/* Basic arrows. */
-#define GLUT_CURSOR_RIGHT_ARROW		0
-#define GLUT_CURSOR_LEFT_ARROW		1
-/* Symbolic cursor shapes. */
-#define GLUT_CURSOR_INFO		2
-#define GLUT_CURSOR_DESTROY		3
-#define GLUT_CURSOR_HELP		4
-#define GLUT_CURSOR_CYCLE		5
-#define GLUT_CURSOR_SPRAY		6
-#define GLUT_CURSOR_WAIT		7
-#define GLUT_CURSOR_TEXT		8
-#define GLUT_CURSOR_CROSSHAIR		9
-/* Directional cursors. */
-#define GLUT_CURSOR_UP_DOWN		10
-#define GLUT_CURSOR_LEFT_RIGHT		11
-/* Sizing cursors. */
-#define GLUT_CURSOR_TOP_SIDE		12
-#define GLUT_CURSOR_BOTTOM_SIDE		13
-#define GLUT_CURSOR_LEFT_SIDE		14
-#define GLUT_CURSOR_RIGHT_SIDE		15
-#define GLUT_CURSOR_TOP_LEFT_CORNER	16
-#define GLUT_CURSOR_TOP_RIGHT_CORNER	17
-#define GLUT_CURSOR_BOTTOM_RIGHT_CORNER	18
-#define GLUT_CURSOR_BOTTOM_LEFT_CORNER	19
-/* Inherit from parent window. */
-#define GLUT_CURSOR_INHERIT		100
-/* Blank cursor. */
-#define GLUT_CURSOR_NONE		101
-/* Fullscreen crosshair (if available). */
-#define GLUT_CURSOR_FULL_CROSSHAIR	102
-#endif
-
-/* GLUT initialization sub-API. */
-GLUTAPI void APIENTRY glutInit(int *argcp, char **argv);
-#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK)
-GLUTAPI void APIENTRY __glutInitWithExit(int *argcp, char **argv, void (__cdecl *exitfunc)(int));
-#ifndef GLUT_BUILDING_LIB
-static void APIENTRY glutInit_ATEXIT_HACK(int *argcp, char **argv) { __glutInitWithExit(argcp, argv, exit); }
-#define glutInit glutInit_ATEXIT_HACK
-#endif
-#endif
-GLUTAPI void APIENTRY glutInitDisplayMode(unsigned int mode);
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-GLUTAPI void APIENTRY glutInitDisplayString(const char *string);
-#endif
-GLUTAPI void APIENTRY glutInitWindowPosition(int x, int y);
-GLUTAPI void APIENTRY glutInitWindowSize(int width, int height);
-GLUTAPI void APIENTRY glutMainLoop(void);
-
-/* GLUT window sub-API. */
-GLUTAPI int APIENTRY glutCreateWindow(const char *title);
-#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK)
-GLUTAPI int APIENTRY __glutCreateWindowWithExit(const char *title, void (__cdecl *exitfunc)(int));
-#ifndef GLUT_BUILDING_LIB
-static int APIENTRY glutCreateWindow_ATEXIT_HACK(const char *title) { return __glutCreateWindowWithExit(title, exit); }
-#define glutCreateWindow glutCreateWindow_ATEXIT_HACK
-#endif
-#endif
-GLUTAPI int APIENTRY glutCreateSubWindow(int win, int x, int y, int width, int height);
-GLUTAPI void APIENTRY glutDestroyWindow(int win);
-GLUTAPI void APIENTRY glutPostRedisplay(void);
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11)
-GLUTAPI void APIENTRY glutPostWindowRedisplay(int win);
-#endif
-GLUTAPI void APIENTRY glutSwapBuffers(void);
-GLUTAPI int APIENTRY glutGetWindow(void);
-GLUTAPI void APIENTRY glutSetWindow(int win);
-GLUTAPI void APIENTRY glutSetWindowTitle(const char *title);
-GLUTAPI void APIENTRY glutSetIconTitle(const char *title);
-GLUTAPI void APIENTRY glutPositionWindow(int x, int y);
-GLUTAPI void APIENTRY glutReshapeWindow(int width, int height);
-GLUTAPI void APIENTRY glutPopWindow(void);
-GLUTAPI void APIENTRY glutPushWindow(void);
-GLUTAPI void APIENTRY glutIconifyWindow(void);
-GLUTAPI void APIENTRY glutShowWindow(void);
-GLUTAPI void APIENTRY glutHideWindow(void);
-#if (GLUT_API_VERSION >= 3)
-GLUTAPI void APIENTRY glutFullScreen(void);
-GLUTAPI void APIENTRY glutSetCursor(int cursor);
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-GLUTAPI void APIENTRY glutWarpPointer(int x, int y);
-#endif
-
-/* GLUT overlay sub-API. */
-GLUTAPI void APIENTRY glutEstablishOverlay(void);
-GLUTAPI void APIENTRY glutRemoveOverlay(void);
-GLUTAPI void APIENTRY glutUseLayer(GLenum layer);
-GLUTAPI void APIENTRY glutPostOverlayRedisplay(void);
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11)
-GLUTAPI void APIENTRY glutPostWindowOverlayRedisplay(int win);
-#endif
-GLUTAPI void APIENTRY glutShowOverlay(void);
-GLUTAPI void APIENTRY glutHideOverlay(void);
-#endif
-
-/* GLUT menu sub-API. */
-GLUTAPI int APIENTRY glutCreateMenu(void (GLUTCALLBACK *func)(int));
-#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK)
-GLUTAPI int APIENTRY __glutCreateMenuWithExit(void (GLUTCALLBACK *func)(int), void (__cdecl *exitfunc)(int));
-#ifndef GLUT_BUILDING_LIB
-static int APIENTRY glutCreateMenu_ATEXIT_HACK(void (GLUTCALLBACK *func)(int)) { return __glutCreateMenuWithExit(func, exit); }
-#define glutCreateMenu glutCreateMenu_ATEXIT_HACK
-#endif
-#endif
-GLUTAPI void APIENTRY glutDestroyMenu(int menu);
-GLUTAPI int APIENTRY glutGetMenu(void);
-GLUTAPI void APIENTRY glutSetMenu(int menu);
-GLUTAPI void APIENTRY glutAddMenuEntry(const char *label, int value);
-GLUTAPI void APIENTRY glutAddSubMenu(const char *label, int submenu);
-GLUTAPI void APIENTRY glutChangeToMenuEntry(int item, const char *label, int value);
-GLUTAPI void APIENTRY glutChangeToSubMenu(int item, const char *label, int submenu);
-GLUTAPI void APIENTRY glutRemoveMenuItem(int item);
-GLUTAPI void APIENTRY glutAttachMenu(int button);
-GLUTAPI void APIENTRY glutDetachMenu(int button);
-
-/* GLUT window callback sub-API. */
-GLUTAPI void APIENTRY glutDisplayFunc(void (GLUTCALLBACK *func)(void));
-GLUTAPI void APIENTRY glutReshapeFunc(void (GLUTCALLBACK *func)(int width, int height));
-GLUTAPI void APIENTRY glutKeyboardFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y));
-GLUTAPI void APIENTRY glutMouseFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y));
-GLUTAPI void APIENTRY glutMotionFunc(void (GLUTCALLBACK *func)(int x, int y));
-GLUTAPI void APIENTRY glutPassiveMotionFunc(void (GLUTCALLBACK *func)(int x, int y));
-GLUTAPI void APIENTRY glutEntryFunc(void (GLUTCALLBACK *func)(int state));
-GLUTAPI void APIENTRY glutVisibilityFunc(void (GLUTCALLBACK *func)(int state));
-GLUTAPI void APIENTRY glutIdleFunc(void (GLUTCALLBACK *func)(void));
-GLUTAPI void APIENTRY glutTimerFunc(unsigned int millis, void (GLUTCALLBACK *func)(int value), int value);
-GLUTAPI void APIENTRY glutMenuStateFunc(void (GLUTCALLBACK *func)(int state));
-#if (GLUT_API_VERSION >= 2)
-GLUTAPI void APIENTRY glutSpecialFunc(void (GLUTCALLBACK *func)(int key, int x, int y));
-GLUTAPI void APIENTRY glutSpaceballMotionFunc(void (GLUTCALLBACK *func)(int x, int y, int z));
-GLUTAPI void APIENTRY glutSpaceballRotateFunc(void (GLUTCALLBACK *func)(int x, int y, int z));
-GLUTAPI void APIENTRY glutSpaceballButtonFunc(void (GLUTCALLBACK *func)(int button, int state));
-GLUTAPI void APIENTRY glutButtonBoxFunc(void (GLUTCALLBACK *func)(int button, int state));
-GLUTAPI void APIENTRY glutDialsFunc(void (GLUTCALLBACK *func)(int dial, int value));
-GLUTAPI void APIENTRY glutTabletMotionFunc(void (GLUTCALLBACK *func)(int x, int y));
-GLUTAPI void APIENTRY glutTabletButtonFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y));
-#if (GLUT_API_VERSION >= 3)
-GLUTAPI void APIENTRY glutMenuStatusFunc(void (GLUTCALLBACK *func)(int status, int x, int y));
-GLUTAPI void APIENTRY glutOverlayDisplayFunc(void (GLUTCALLBACK *func)(void));
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-GLUTAPI void APIENTRY glutWindowStatusFunc(void (GLUTCALLBACK *func)(int state));
-#endif
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
-GLUTAPI void APIENTRY glutKeyboardUpFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y));
-GLUTAPI void APIENTRY glutSpecialUpFunc(void (GLUTCALLBACK *func)(int key, int x, int y));
-GLUTAPI void APIENTRY glutJoystickFunc(void (GLUTCALLBACK *func)(unsigned int buttonMask, int x, int y, int z), int pollInterval);
-#endif
-#endif
-#endif
-
-/* GLUT color index sub-API. */
-GLUTAPI void APIENTRY glutSetColor(int, GLfloat red, GLfloat green, GLfloat blue);
-GLUTAPI GLfloat APIENTRY glutGetColor(int ndx, int component);
-GLUTAPI void APIENTRY glutCopyColormap(int win);
-
-/* GLUT state retrieval sub-API. */
-GLUTAPI int APIENTRY glutGet(GLenum type);
-GLUTAPI int APIENTRY glutDeviceGet(GLenum type);
-#if (GLUT_API_VERSION >= 2)
-/* GLUT extension support sub-API */
-GLUTAPI int APIENTRY glutExtensionSupported(const char *name);
-#endif
-#if (GLUT_API_VERSION >= 3)
-GLUTAPI int APIENTRY glutGetModifiers(void);
-GLUTAPI int APIENTRY glutLayerGet(GLenum type);
-#endif
-
-/* GLUT font sub-API */
-GLUTAPI void APIENTRY glutBitmapCharacter(void *font, int character);
-GLUTAPI int APIENTRY glutBitmapWidth(void *font, int character);
-GLUTAPI void APIENTRY glutStrokeCharacter(void *font, int character);
-GLUTAPI int APIENTRY glutStrokeWidth(void *font, int character);
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-GLUTAPI int APIENTRY glutBitmapLength(void *font, const unsigned char *string);
-GLUTAPI int APIENTRY glutStrokeLength(void *font, const unsigned char *string);
-#endif
-
-/* GLUT pre-built models sub-API */
-GLUTAPI void APIENTRY glutWireSphere(GLfloat radius, GLint slices, GLint stacks);
-GLUTAPI void APIENTRY glutSolidSphere(GLfloat radius, GLint slices, GLint stacks);
-GLUTAPI void APIENTRY glutWireCone(GLfloat base, GLfloat height, GLint slices, GLint stacks);
-GLUTAPI void APIENTRY glutSolidCone(GLfloat base, GLfloat height, GLint slices, GLint stacks);
-GLUTAPI void APIENTRY glutWireCube(GLfloat size);
-GLUTAPI void APIENTRY glutSolidCube(GLfloat size);
-GLUTAPI void APIENTRY glutWireTorus(GLfloat innerRadius, GLfloat outerRadius, GLint sides, GLint rings);
-GLUTAPI void APIENTRY glutSolidTorus(GLfloat innerRadius, GLfloat outerRadius, GLint sides, GLint rings);
-GLUTAPI void APIENTRY glutWireDodecahedron(void);
-GLUTAPI void APIENTRY glutSolidDodecahedron(void);
-GLUTAPI void APIENTRY glutWireTeapot(GLfloat size);
-GLUTAPI void APIENTRY glutSolidTeapot(GLfloat size);
-GLUTAPI void APIENTRY glutWireOctahedron(void);
-GLUTAPI void APIENTRY glutSolidOctahedron(void);
-GLUTAPI void APIENTRY glutWireTetrahedron(void);
-GLUTAPI void APIENTRY glutSolidTetrahedron(void);
-GLUTAPI void APIENTRY glutWireIcosahedron(void);
-GLUTAPI void APIENTRY glutSolidIcosahedron(void);
-
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
-/* GLUT video resize sub-API. */
-GLUTAPI int APIENTRY glutVideoResizeGet(GLenum param);
-GLUTAPI void APIENTRY glutSetupVideoResizing(void);
-GLUTAPI void APIENTRY glutStopVideoResizing(void);
-GLUTAPI void APIENTRY glutVideoResize(int x, int y, int width, int height);
-GLUTAPI void APIENTRY glutVideoPan(int x, int y, int width, int height);
-
-/* GLUT debugging sub-API. */
-GLUTAPI void APIENTRY glutReportErrors(void);
-#endif
-
-#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
-/* GLUT device control sub-API. */
-/* glutSetKeyRepeat modes. */
-#define GLUT_KEY_REPEAT_OFF		0
-#define GLUT_KEY_REPEAT_ON		1
-#define GLUT_KEY_REPEAT_DEFAULT		2
-
-/* Joystick button masks. */
-#define GLUT_JOYSTICK_BUTTON_A		1
-#define GLUT_JOYSTICK_BUTTON_B		2
-#define GLUT_JOYSTICK_BUTTON_C		4
-#define GLUT_JOYSTICK_BUTTON_D		8
-
-GLUTAPI void APIENTRY glutIgnoreKeyRepeat(int ignore);
-GLUTAPI void APIENTRY glutSetKeyRepeat(int repeatMode);
-GLUTAPI void APIENTRY glutForceJoystickFunc(void);
-
-/* GLUT game mode sub-API. */
-/* glutGameModeGet. */
-#define GLUT_GAME_MODE_ACTIVE           ((GLenum) 0)
-#define GLUT_GAME_MODE_POSSIBLE         ((GLenum) 1)
-#define GLUT_GAME_MODE_WIDTH            ((GLenum) 2)
-#define GLUT_GAME_MODE_HEIGHT           ((GLenum) 3)
-#define GLUT_GAME_MODE_PIXEL_DEPTH      ((GLenum) 4)
-#define GLUT_GAME_MODE_REFRESH_RATE     ((GLenum) 5)
-#define GLUT_GAME_MODE_DISPLAY_CHANGED  ((GLenum) 6)
-
-GLUTAPI void APIENTRY glutGameModeString(const char *string);
-GLUTAPI int APIENTRY glutEnterGameMode(void);
-GLUTAPI void APIENTRY glutLeaveGameMode(void);
-GLUTAPI int APIENTRY glutGameModeGet(GLenum mode);
-#endif
-
-#ifdef __cplusplus
-}
-
-#endif
-
-#ifdef GLUT_APIENTRY_DEFINED
-# undef GLUT_APIENTRY_DEFINED
-# undef APIENTRY
-#endif
-
-#ifdef GLUT_WINGDIAPI_DEFINED
-# undef GLUT_WINGDIAPI_DEFINED
-# undef WINGDIAPI
-#endif
-
-#ifdef GLUT_DEFINED___CDECL
-# undef GLUT_DEFINED___CDECL
-# undef __cdecl
-#endif
-
-#ifdef GLUT_DEFINED__CRTIMP
-# undef GLUT_DEFINED__CRTIMP
-# undef _CRTIMP
-#endif
-
-#endif                  /* __glut_h__ */
Index: include/touchlib_platform.h
===================================================================
--- include/touchlib_platform.h	(revision 15)
+++ include/touchlib_platform.h	(working copy)
@@ -17,13 +17,19 @@
 #include <tchar.h>
 #define THREAD_HANDLE HANDLE
 #define THREAD_MUTEX_HANDLE HANDLE
+#define THREAD_RETURN_TYPE void
+
+
 #else
+
+#include <signal.h>
 #    define TOUCHLIB_EXPORT
 #    define TOUCHLIB_CORE_EXPORT
 #    define TOUCHLIB_FILTER_EXPORT
 #    define strcmpi strcasecmp
 #define THREAD_HANDLE pthread_t
 #define THREAD_MUTEX_HANDLE pthread_mutex_t
+#define THREAD_RETURN_TYPE void*
 #define _TCHAR char
 #endif
 
Index: include/CTouchScreen.h
===================================================================
--- include/CTouchScreen.h	(revision 15)
+++ include/CTouchScreen.h	(working copy)
@@ -5,13 +5,6 @@
 #include "CBlobTracker.h"
 #include "ITouchEvent.h"
 #include "TouchlibFilter.h"
-#ifdef WIN32
-#include <process.h>
-#include <windows.h>
-typedef void thread_function_return_t;
-#else
-typedef void* thread_function_return_t;
-#endif
 #include "ITouchListener.h"
 #include "mesh2d.h"
 
@@ -103,7 +96,7 @@
 
 //////////
 
-		static thread_function_return_t _processEntryPoint(void*);
+		static THREAD_RETURN_TYPE _processEntryPoint(void*);
 
 		void cameraToScreenSpace(float &x, float &y);
 
Index: include/VideoWrapperFilter.h
===================================================================
--- include/VideoWrapperFilter.h	(revision 15)
+++ include/VideoWrapperFilter.h	(working copy)
@@ -3,11 +3,10 @@
 
 #include <TouchlibFilter.h>
 
-#include <windows.h>
-#include <tchar.h>
-#include <dshow.h>
-#include <streams.h>
-#include <process.h>
+#ifdef WIN32
+	#include <dshow.h>
+	#include <streams.h>
+#endif
 
 #include <VideoWrapper.h>
 
Index: include/vector2d.h
===================================================================
--- include/vector2d.h	(revision 15)
+++ include/vector2d.h	(working copy)
@@ -3,6 +3,7 @@
 
 
 #include <touchlib_platform.h>
+#include <math.h>
 
 namespace touchlib 
 {
Index: src/configapp.cpp
===================================================================
--- src/configapp.cpp	(revision 15)
+++ src/configapp.cpp	(working copy)
@@ -1,12 +1,19 @@
 #ifdef WIN32
-#pragma once
-#define WIN32_LEAN_AND_MEAN 
-#define _WIN32_WINNT  0x0500
+	#pragma once
+	#define WIN32_LEAN_AND_MEAN 
+	#define _WIN32_WINNT  0x0500
 
-#include <windows.h>
-#include <tchar.h>
-#pragma comment( lib, "glut32" )
-#pragma comment( lib, "user32" )
+	#include <windows.h>
+	#include <tchar.h>
+	
+	#include "glut.h"
+	
+	#pragma comment( lib, "glut32" )
+	#pragma comment( lib, "user32" )
+#elif defined(__APPLE__)
+	#include <GLUT/glut.h>
+#else
+	#include <GL/glut.h>
 #endif
 
 #include <cv.h>
@@ -14,8 +21,6 @@
 #include <highgui.h>
 #include <map>
 
-#include "glut.h"
-
 #include "TouchScreenDevice.h"
 #include "TouchData.h"
 
@@ -23,7 +28,9 @@
 
 #include <stdio.h>
 
-#include <cvcam.h>
+#ifdef WIN32
+	#include <cvcam.h>
+#endif
 
 void glutDrawBox(float x1, float y1, float x2, float y2, float r, float g, float b);
 void glutDrawPlus(float x1, float y1, float s, float r, float g, float b);
@@ -122,6 +129,7 @@
 
 		if(curcalib == -1)
 		{
+#ifdef WIN32
 			INPUT aInput;
 
 			aInput.type = INPUT_MOUSE;
@@ -133,6 +141,7 @@
 			aInput.mi.dy = (data.Y * 65535.0f);
 
 			int aResult = SendInput(1, &aInput, sizeof(INPUT) );
+#endif
 		}
 	}
 
@@ -143,6 +152,7 @@
 
 		if(curcalib == -1)
 		{
+#ifdef WIN32
 			INPUT aInput;
 
 			aInput.type = INPUT_MOUSE;
@@ -154,6 +164,7 @@
 			aInput.mi.dy = (data.Y * 65535.0f);
 
 			int aResult = SendInput(1, &aInput, sizeof(INPUT) );
+#endif
 		}
 	}
 
@@ -173,6 +184,7 @@
 
 		if(curcalib == -1)
 		{
+#ifdef WIN32
 			INPUT aInput;
 
 			aInput.type = INPUT_MOUSE;
@@ -181,6 +193,7 @@
 			aInput.mi.mouseData = 0;
 			aInput.mi.time = 0;
 			int aResult = SendInput(1, &aInput, sizeof(INPUT) );
+#endif
 		}
 	}
 
@@ -363,13 +376,21 @@
 	glutMainLoop();
 }
 
+#ifdef WIN32
 int _tmain(int argc, char * argv[])
+#else
+int main(int argc, char * argv[])
+#endif
 {
 	screen = TouchScreenDevice::getTouchScreen();
 
 	if(!screen->loadConfig("config.xml"))
 	{
+#ifdef WIN32
 		screen->pushFilter("dsvlcapture", "capture1");
+#else
+		screen->pushFilter("cvcapture", "capture1");
+#endif
 		screen->pushFilter("mono", "mono2");
 		screen->pushFilter("smooth", "smooth3");
 		screen->pushFilter("backgroundremove", "background4");
@@ -395,6 +416,8 @@
 	// Note: Begin processing should only be called after the screen is set up
 
 	screen->beginProcessing();
+	
+	sleep(10);
 
 	do
 	{
Index: src/CaptureFilter.cpp
===================================================================
--- src/CaptureFilter.cpp	(revision 15)
+++ src/CaptureFilter.cpp	(working copy)
@@ -1,13 +1,17 @@
 
 #include <CaptureFilter.h>
 
+#if defined(_WIN32) || defined(WIN32) || defined(__WIN32__)
+	#include <windows.h>
+#endif
+
 #include <cv.h>
 #include <cxcore.h>
 #include <highgui.h>
 
 CvCapture * CaptureFilter::capture = 0;
 IplImage* CaptureFilter::acquiredImage = 0;
-HANDLE CaptureFilter::hThread = 0;
+//HANDLE CaptureFilter::hThread = 0;
 
 CaptureFilter::CaptureFilter(char* s) : Filter(s)
 {
Index: src/FilterFactory.cpp
===================================================================
--- src/FilterFactory.cpp	(revision 15)
+++ src/FilterFactory.cpp	(working copy)
@@ -1,10 +1,9 @@
 #include "FilterFactory.h"
 
 #include "CvCaptureFilter.h"
-#ifdef WIN32
-//#include "DsCaptureFilter.h"
 #include "VideoWrapperFilter.h"
-#include "DSVLCaptureFilter.h"
+#ifdef WIN32
+	#include "DSVLCaptureFilter.h"
 #endif
 
 #include "BrightnessContrastFilter.h"
Index: src/VideoWrapperFilter.cpp
===================================================================
--- src/VideoWrapperFilter.cpp	(revision 15)
+++ src/VideoWrapperFilter.cpp	(working copy)
@@ -4,7 +4,11 @@
 
 VideoWrapperFilter::VideoWrapperFilter(char *s) : Filter(s)
 {
+#if defined(_WIN32) || defined(WIN32) || defined(__WIN32__)
 	strcpy(videostring, "vc: 0 320 30 I420 1");
+#elif defined(__APPLE__)
+	strcpy(videostring, "qt: 0 640 30 rgb 0");
+#endif
 	g_hVideo = 0;
 
 	destination = NULL;
Index: src/textures.cpp
===================================================================
--- src/textures.cpp	(revision 15)
+++ src/textures.cpp	(working copy)
@@ -26,7 +26,7 @@
 	// FIXME: if(bInitialized) free memory.
 	printf("loading texture: %s\n", filename);
 	glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-	glGenTextures(1,&ID); 
+	glGenTextures(1,(GLuint*)&ID); 
 	glBindTexture( GL_TEXTURE_2D, ID);
 	Image = auxDIBImageLoadA( (const char*) filename );
 	if(!Image) 
Index: src/CTouchScreen.cpp
===================================================================
--- src/CTouchScreen.cpp	(revision 15)
+++ src/CTouchScreen.cpp	(working copy)
@@ -1,12 +1,8 @@
 
 #include "CTouchScreen.h"
 #include "FilterFactory.h"
-#ifdef WIN32
-#include "process.h"
-#else
-#include <signal.h>
-#endif
 #include "tinyxml.h"
+#include <highgui.h>
 
 using namespace touchlib;
 
@@ -29,6 +25,8 @@
 
 #ifdef WIN32
 	eventListMutex = CreateMutex(NULL, 0, NULL);
+#else
+	pthread_mutex_init(&eventListMutex, NULL);
 #endif
 
 	screenScale = 0.75;
@@ -78,7 +76,10 @@
 		pthread_kill(hThread,15);
 		hThread = 0;
 	}
+	
+	pthread_mutex_destroy(&eventListMutex);
 #endif
+	
 	for(i=0; i<filterChain.size(); i++)
 		delete filterChain[i];
 }
@@ -548,8 +549,7 @@
 
 }
 
-
-thread_function_return_t CTouchScreen::_processEntryPoint(void * obj)
+THREAD_RETURN_TYPE CTouchScreen::_processEntryPoint(void * obj)
 {
 	((CTouchScreen *)obj)->process();
 }
Index: src/CMakeLists.txt
===================================================================
--- src/CMakeLists.txt	(revision 15)
+++ src/CMakeLists.txt	(working copy)
@@ -1,5 +1,13 @@
 ADD_LIBRARY(touchlib BackgroundFilter.cpp BrightnessContrastFilter.cpp CBlobTracker.cpp CTouchScreen.cpp CvCaptureFilter.cpp filter.cpp FilterFactory.cpp MonoFilter.cpp RectifyFilter.cpp ResizeFilter.cpp SmoothingFilter.cpp  TouchScreenDevice.cpp  )
+
 ADD_EXECUTABLE(sampleapp sampleapp.cpp)
 TARGET_LINK_LIBRARIES(sampleapp touchlib tinyxml)
 SET_TARGET_PROPERTIES(sampleapp 
 			PROPERTIES LINK_FLAGS ${OPENCV_LINKDIR} LINK_FLAGS ${OPENCV_LDFLAGS})
+
+IF(OPENGL_FOUND AND GLUT_FOUND)
+	ADD_EXECUTABLE(configapp configapp.cpp)
+	TARGET_LINK_LIBRARIES(configapp touchlib tinyxml ${OPENGL_LIBRARIES} ${GLUT_LIBRARIES})
+	SET_TARGET_PROPERTIES(configapp
+			PROPERTIES LINK_FLAGS ${OPENCV_LINKDIR} LINK_FLAGS ${OPENCV_LDFLAGS})
+ENDIF(OPENGL_FOUND AND GLUT_FOUND)

Property changes on: tinyxml/lib
___________________________________________________________________
Name: svn:ignore
   + libtinyxml.a



Property changes on: lib
___________________________________________________________________
Name: svn:ignore
   + libtouchlib.a


Index: demos/pong/pong.cpp
===================================================================
--- demos/pong/pong.cpp	(revision 15)
+++ demos/pong/pong.cpp	(working copy)
@@ -5,10 +5,13 @@
 #include <highgui.h>
 #include <map>
 
-#include <tchar.h>
+#include <glut.h>
 
-#include "glut.h"
-#pragma comment( lib, "glut32" )
+#ifdef WIN32
+	#include <tchar.h>
+	
+	#pragma comment( lib, "glut32" )
+#endif
 
 #include "TouchScreenDevice.h"
 #include "TouchData.h"
@@ -19,7 +22,10 @@
 
 #include <stdio.h>
 #include <string>
+
+#ifdef WIN32
 #include <cvcam.h>
+#endif
 
 #include <textures.h>
 
@@ -855,7 +861,11 @@
 	TouchScreenDevice::destroy();
 }
 
+#ifdef WIN32
 int _tmain(int argc, char * argv[])
+#else
+int main(int argc, char * argv[])
+#endif
 {
 
 	screen = TouchScreenDevice::getTouchScreen();
Index: demos/pong/CMakeLists.txt
===================================================================
--- demos/pong/CMakeLists.txt	(revision 0)
+++ demos/pong/CMakeLists.txt	(revision 0)
@@ -0,0 +1,6 @@
+IF(OPENGL_FOUND AND GLUT_FOUND)
+	ADD_EXECUTABLE(pong pong.cpp physicalmesh.cpp ${touchlib_SOURCE_DIR}/src/textures.cpp)
+	TARGET_LINK_LIBRARIES(pong touchlib tinyxml ${OPENGL_LIBRARIES} ${GLUT_LIBRARIES})
+	SET_TARGET_PROPERTIES(pong
+			PROPERTIES LINK_FLAGS ${OPENCV_LINKDIR} LINK_FLAGS ${OPENCV_LDFLAGS})
+ENDIF(OPENGL_FOUND AND GLUT_FOUND)
\ No newline at end of file
Index: demos/osc/osc.cpp
===================================================================
--- demos/osc/osc.cpp	(revision 15)
+++ demos/osc/osc.cpp	(working copy)
@@ -4,11 +4,12 @@
 // I have included a static LIB for oscpack in the lib dir, 
 // so if you are compiling with VC .NET then you don't need to compile oscpack.. 
 
+#ifdef WIN32
 #pragma once
 #define WIN32_LEAN_AND_MEAN 
 #define _WIN32_WINNT  0x0500
+#endif
 
-
 #include <map>
 #include <cv.h>
 #include <highgui.h>
Index: demos/osc/CMakeLists.txt
===================================================================
--- demos/osc/CMakeLists.txt	(revision 0)
+++ demos/osc/CMakeLists.txt	(revision 0)
@@ -0,0 +1,7 @@
+IF(OSC_INCLUDE_DIR AND OSC_LIBRARIES)
+	INCLUDE_DIRECTORIES(${OSC_INCLUDE_DIR})
+	ADD_EXECUTABLE(osc osc.cpp)
+	TARGET_LINK_LIBRARIES(osc touchlib tinyxml ${OSC_LIBRARIES})
+	SET_TARGET_PROPERTIES(osc
+			PROPERTIES LINK_FLAGS ${OPENCV_LINKDIR} LINK_FLAGS ${OPENCV_LDFLAGS})
+ENDIF(OSC_INCLUDE_DIR AND OSC_LIBRARIES)
\ No newline at end of file
Index: demos/CMakeLists.txt
===================================================================
--- demos/CMakeLists.txt	(revision 0)
+++ demos/CMakeLists.txt	(revision 0)
@@ -0,0 +1,5 @@
+add_subdirectory (smoke)
+add_subdirectory (osc)
+IF(WIN32)
+	add_subdirectory (pong)
+ENDIF(WIN32)
\ No newline at end of file
Index: demos/smoke/fluid2d.h
===================================================================
--- demos/smoke/fluid2d.h	(revision 15)
+++ demos/smoke/fluid2d.h	(working copy)
@@ -16,10 +16,12 @@
 #ifndef __FLUID2D__
 #define __FLUID2D__
 
-
+#ifdef WIN32
 #include <rfftw.h>
+#else
+#include <drfftw.h>
+#endif
 
-
 class Fluid2D
 {
 
@@ -57,4 +59,4 @@
 
 };
 
-#endif // __FLUID2D__
\ No newline at end of file
+#endif // __FLUID2D__
Index: demos/smoke/glutApplication.h
===================================================================
--- demos/smoke/glutApplication.h	(revision 15)
+++ demos/smoke/glutApplication.h	(working copy)
@@ -24,10 +24,10 @@
 
 	void CallBackDisplayFunc(void);
 	void CallBackKeyboardFunc(unsigned char key, int x, int y);
-	void glutApplication::SetScreen(ITouchScreen* setScreen);
+	void SetScreen(ITouchScreen* setScreen);
 	void CallBackReshapeFunc(int w, int h);   
 	void CallBackIdleFunc(void);
-	void glutApplication::DrawField(void);
+	void DrawField(void);
 	void StartSpinning(GlutMaster * glutMaster);
 	void fingerDown(TouchData data);
 	void fingerUpdate(TouchData data);
Index: demos/smoke/main.cc
===================================================================
--- demos/smoke/main.cc	(revision 15)
+++ demos/smoke/main.cc	(working copy)
@@ -1,5 +1,7 @@
 
-#include <tchar.h>
+#ifdef WIN32
+	#include <tchar.h>
+#endif
 #include <iostream>
 
 #include "glutMaster.h"
@@ -10,7 +12,11 @@
 
 GlutMaster* glutMaster;
 
+#ifdef WIN32
 int _tmain(int argc, _TCHAR* argv[])
+#else
+int main(int argc, char* argv[])
+#endif
 {
 	glutMaster = new GlutMaster();    
 
Index: demos/smoke/fluid2d.cc
===================================================================
--- demos/smoke/fluid2d.cc	(revision 15)
+++ demos/smoke/fluid2d.cc	(working copy)
@@ -12,7 +12,7 @@
 	http://www.dgp.utoronto.ca/people/stam/reality/Research/pub.html
 */
 
-#include <fluid2d.h>
+#include "fluid2d.h"
 #include <math.h>
 #include <iostream>
 
Index: demos/smoke/glutMaster.h
===================================================================
--- demos/smoke/glutMaster.h	(revision 15)
+++ demos/smoke/glutMaster.h	(working copy)
@@ -16,7 +16,13 @@
 // included before glut to avoid C2381 error on Visual Studio 2005 (touchlib)
 #include <stdlib.h>
 
-#include "glut.h"
+#if defined(WIN32)
+#include <glut.h>
+#elif defined(__APPLE__)
+#include <GLUT/glut.h>
+#else
+#include <GL/glut.h>
+#endif
 #include "glutWindow.h"
 
 #define MAX_NUMBER_OF_WINDOWS 256 
Index: demos/smoke/CMakeLists.txt
===================================================================
--- demos/smoke/CMakeLists.txt	(revision 0)
+++ demos/smoke/CMakeLists.txt	(revision 0)
@@ -0,0 +1,7 @@
+IF(FFTW_INCLUDE_DIR AND FFTW_LIBRARIES AND RFFTW_LIBRARIES)
+	INCLUDE_DIRECTORIES(${FFTW_INCLUDE_DIR})
+	ADD_EXECUTABLE(smoke fluid2d.cc glutApplication.cc glutMaster.cc glutWindow.cc main.cc)
+	TARGET_LINK_LIBRARIES(smoke touchlib tinyxml ${OPENGL_LIBRARIES} ${GLUT_LIBRARIES} ${FFTW_LIBRARIES} ${RFFTW_LIBRARIES})
+	SET_TARGET_PROPERTIES(smoke
+			PROPERTIES LINK_FLAGS ${OPENCV_LINKDIR} LINK_FLAGS ${OPENCV_LDFLAGS})
+ENDIF(FFTW_INCLUDE_DIR AND FFTW_LIBRARIES AND RFFTW_LIBRARIES)
\ No newline at end of file

Property changes on: bin
___________________________________________________________________
Name: svn:ignore
   + sampleapp
configapp


Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt	(revision 15)
+++ CMakeLists.txt	(working copy)
@@ -1,9 +1,35 @@
 project(touchlib)
+
 INCLUDE(UsePkgConfig)
 PKGCONFIG(opencv OPENCV_INC OPENCV_LINKDIR OPENCV_LDFLAGS OPENCV_CFLAGS)
 IF(NOT OPENCV_INC)
 	MESSAGE(FATAL_ERROR "OpenCV pkg not found")
 ENDIF(NOT OPENCV_INC)
-INCLUDE_DIRECTORIES(${OPENCV_INC} include tinyxml)
+
+FIND_PACKAGE(OpenGL)
+IF(NOT OPENGL_FOUND)
+	MESSAGE("OpenGL not found - some applications may not be built")
+ENDIF(NOT OPENGL_FOUND)
+
+FIND_PACKAGE(GLUT)
+IF(NOT GLUT_FOUND)
+	MESSAGE("GLUT not found - some applications may not be built")
+ENDIF(NOT GLUT_FOUND)
+
+FIND_PATH(FFTW_INCLUDE_DIR NAMES rfftw.h drfftw.h fftw.h dfftw.h)
+FIND_LIBRARY(RFFTW_LIBRARIES NAMES rfftw drfftw)
+FIND_LIBRARY(FFTW_LIBRARIES NAMES fftw dfftw)
+IF(NOT FFTW_INCLUDE_DIR OR NOT FFTW_LIBRARIES OR NOT RFFTW_LIBRARIES)
+	MESSAGE("FFTW not found - Smoke demo will not be built")
+ENDIF(NOT FFTW_INCLUDE_DIR OR NOT FFTW_LIBRARIES OR NOT RFFTW_LIBRARIES)
+
+FIND_FILE(OSC_INCLUDE_DIR oscpack)
+FIND_LIBRARY(OSC_LIBRARIES oscpack)
+IF(NOT OSC_INCLUDE_DIR OR NOT OSC_LIBRARIES)
+	MESSAGE("Oscpack not found - OSC application will not be built")
+ENDIF(NOT OSC_INCLUDE_DIR OR NOT OSC_LIBRARIES)
+
+INCLUDE_DIRECTORIES(${OPENCV_INC} ${OPENGL_INCLUDE_DIR} ${GLUT_INCLUDE_DIR} include tinyxml)
 add_subdirectory (tinyxml)
 add_subdirectory (src)
+add_subdirectory (demos)
