summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2013-03-22 21:48:15 +0100
committerStanislaw Halik <sthalik@misaki.pl>2013-03-22 21:48:15 +0100
commit4f00c4c74d213a37a4b1a3313e50ce2b4dd51271 (patch)
treef692743cb752c994c05fe2761f83af08aa28d239
parent5c5ec4b4238996770bfd74ddfc87934ace40bf0f (diff)
finish rename
-rw-r--r--bin/cal/xxx_apple built-in isight.lens (renamed from bin/cal/apple built-in isight.lens)0
-rw-r--r--bin/cal/xxx_built-in isight.lens (renamed from bin/cal/built-in isight.lens)0
-rw-r--r--bin/cal/xxx_logitech hd webcam c525.lens (renamed from bin/cal/logitech hd webcam c525.lens)0
-rw-r--r--bin/cal/xxx_logitech quickcam pro 5000.lens (renamed from bin/cal/logitech quickcam pro 5000.lens)0
-rw-r--r--bin/cal/xxx_microsoft lifecam vx-6000.lens (renamed from bin/cal/microsoft lifecam vx-6000.lens)0
-rw-r--r--bin/cal/xxx_quickcam for notebooks deluxe.lens (renamed from bin/cal/quickcam for notebooks deluxe.lens)0
-rw-r--r--bin/cal/xxx_quickcam pro for notebooks.lens (renamed from bin/cal/quickcam pro for notebooks.lens)0
-rw-r--r--bin/imageformats/xxx_qico4.dll (renamed from bin/imageformats/qico4.dll)bin25600 -> 25600 bytes
-rw-r--r--bin/images/xxx_facetracknoir.ico (renamed from bin/facetracknoir.ico)bin23558 -> 23558 bytes
-rw-r--r--bin/images/xxx_flightgear.ico (renamed from bin/images/flightgear.ico)bin13094 -> 13094 bytes
-rw-r--r--bin/images/xxx_freetrack.ico (renamed from bin/images/freetrack.ico)bin17542 -> 17542 bytes
-rw-r--r--bin/images/xxx_fs9.ico (renamed from bin/images/fs9.ico)bin29926 -> 29926 bytes
-rw-r--r--bin/images/xxx_fsx.ico (renamed from bin/images/fsx.ico)bin87910 -> 87910 bytes
-rw-r--r--bin/images/xxx_ppjoy.ico (renamed from bin/images/ppjoy.ico)bin5166 -> 5166 bytes
-rw-r--r--bin/images/xxx_seeingmachines.ico (renamed from bin/images/seeingmachines.ico)bin37798 -> 37798 bytes
-rw-r--r--bin/images/xxx_settings16.png (renamed from bin/images/settings16.png)bin711 -> 711 bytes
-rw-r--r--bin/images/xxx_settingsopen16.png (renamed from bin/images/settingsopen16.png)bin686 -> 686 bytes
-rw-r--r--bin/images/xxx_trackir.ico (renamed from bin/images/trackir.ico)bin15086 -> 15086 bytes
-rw-r--r--bin/resources/xxx_autoinitconfig.txt (renamed from bin/resources/autoinitconfig.txt)0
-rw-r--r--bin/resources/xxx_cam_blacklist.txt (renamed from bin/resources/cam_blacklist.txt)0
-rw-r--r--bin/resources/xxx_cam_whitelist.txt (renamed from bin/resources/cam_whitelist.txt)0
-rw-r--r--bin/resources/xxx_cascade.bin (renamed from bin/resources/cascade.bin)0
-rw-r--r--bin/resources/xxx_cascade_ir.bin (renamed from bin/resources/cascade_ir.bin)0
-rw-r--r--bin/resources/xxx_cascade_visible.bin (renamed from bin/resources/cascade_visible.bin)0
-rw-r--r--bin/resources/xxx_clm_model_left_eyebrow_scale100.bin (renamed from bin/resources/clm_model_left_eyebrow_scale100.bin)bin4114804 -> 4114804 bytes
-rw-r--r--bin/resources/xxx_clm_model_right_eyebrow_scale100.bin (renamed from bin/resources/clm_model_right_eyebrow_scale100.bin)bin4042420 -> 4042420 bytes
-rw-r--r--bin/resources/xxx_clm_mouth.bin (renamed from bin/resources/clm_mouth.bin)bin7949436 -> 7949436 bytes
-rw-r--r--bin/resources/xxx_default_mesh.msh (renamed from bin/resources/default_mesh.msh)bin23556 -> 23556 bytes
-rw-r--r--bin/resources/xxx_default_mesh.rgn (renamed from bin/resources/default_mesh.rgn)0
-rw-r--r--bin/resources/xxx_distraction_model.txt (renamed from bin/resources/distraction_model.txt)0
-rw-r--r--bin/resources/xxx_eye_model_binary.bin (renamed from bin/resources/eye_model_binary.bin)0
-rw-r--r--bin/resources/xxx_eye_model_confidence.bin (renamed from bin/resources/eye_model_confidence.bin)0
-rw-r--r--bin/resources/xxx_eye_model_regression.bin (renamed from bin/resources/eye_model_regression.bin)0
-rw-r--r--bin/resources/xxx_eyebrowmodel.bin (renamed from bin/resources/eyebrowmodel.bin)bin768 -> 768 bytes
-rw-r--r--bin/resources/xxx_eyeconftriggerv2.txt (renamed from bin/resources/eyeconftriggerv2.txt)0
-rw-r--r--bin/resources/xxx_eyetrigger.txt (renamed from bin/resources/eyetrigger.txt)0
-rw-r--r--bin/resources/xxx_facesearcherresources.txt (renamed from bin/resources/facesearcherresources.txt)0
-rw-r--r--bin/resources/xxx_ffmf.ini (renamed from bin/resources/ffmf.ini)0
-rw-r--r--bin/resources/xxx_ffmf_ir.ini (renamed from bin/resources/ffmf_ir.ini)0
-rw-r--r--bin/resources/xxx_ffmf_v3.ini (renamed from bin/resources/ffmf_v3.ini)0
-rw-r--r--bin/resources/xxx_ffmf_visible.ini (renamed from bin/resources/ffmf_visible.ini)0
-rw-r--r--bin/resources/xxx_frontmesh.bin (renamed from bin/resources/frontmesh.bin)bin20224 -> 20224 bytes
-rw-r--r--bin/resources/xxx_ftcascade1.bin (renamed from bin/resources/ftcascade1.bin)0
-rw-r--r--bin/resources/xxx_ftcascade1_ir.bin (renamed from bin/resources/ftcascade1_ir.bin)0
-rw-r--r--bin/resources/xxx_ftcascade1_visible.bin (renamed from bin/resources/ftcascade1_visible.bin)0
-rw-r--r--bin/resources/xxx_ftcascade2.bin (renamed from bin/resources/ftcascade2.bin)0
-rw-r--r--bin/resources/xxx_ftcascade2_ir.bin (renamed from bin/resources/ftcascade2_ir.bin)0
-rw-r--r--bin/resources/xxx_ftcascade2_visible.bin (renamed from bin/resources/ftcascade2_visible.bin)0
-rw-r--r--bin/resources/xxx_ftcascade3.bin (renamed from bin/resources/ftcascade3.bin)0
-rw-r--r--bin/resources/xxx_ftcascade3_ir.bin (renamed from bin/resources/ftcascade3_ir.bin)0
-rw-r--r--bin/resources/xxx_ftcascade3_visible.bin (renamed from bin/resources/ftcascade3_visible.bin)0
-rw-r--r--bin/resources/xxx_ftcascade4.bin (renamed from bin/resources/ftcascade4.bin)0
-rw-r--r--bin/resources/xxx_ftcascade4_ir.bin (renamed from bin/resources/ftcascade4_ir.bin)0
-rw-r--r--bin/resources/xxx_ftcascade4_visible.bin (renamed from bin/resources/ftcascade4_visible.bin)0
-rw-r--r--bin/resources/xxx_ftshape.txt (renamed from bin/resources/ftshape.txt)0
-rw-r--r--bin/resources/xxx_fullmesh.bin (renamed from bin/resources/fullmesh.bin)bin23460 -> 23460 bytes
-rw-r--r--bin/resources/xxx_headconfidencetrigger.txt (renamed from bin/resources/headconfidencetrigger.txt)0
-rw-r--r--bin/resources/xxx_headposelimittrigger.txt (renamed from bin/resources/headposelimittrigger.txt)0
-rw-r--r--bin/resources/xxx_headposetriggerv2.bin (renamed from bin/resources/headposetriggerv2.bin)0
-rw-r--r--bin/resources/xxx_headposetriggerv2.txt (renamed from bin/resources/headposetriggerv2.txt)0
-rw-r--r--bin/resources/xxx_headtrigger.txt (renamed from bin/resources/headtrigger.txt)0
-rw-r--r--bin/resources/xxx_mouth_offsets.txt (renamed from bin/resources/mouth_offsets.txt)0
-rw-r--r--bin/resources/xxx_mouth_shapes.txt (renamed from bin/resources/mouth_shapes.txt)0
-rw-r--r--bin/resources/xxx_mouth_transitions.txt (renamed from bin/resources/mouth_transitions.txt)0
-rw-r--r--bin/resources/xxx_mouth_transitions_motion_max.txt (renamed from bin/resources/mouth_transitions_motion_max.txt)0
-rw-r--r--bin/resources/xxx_mouth_transitions_motion_min.txt (renamed from bin/resources/mouth_transitions_motion_min.txt)0
-rw-r--r--bin/resources/xxx_mouthmodel.bin (renamed from bin/resources/mouthmodel.bin)bin6036 -> 6036 bytes
-rw-r--r--bin/resources/xxx_search_prefill.txt (renamed from bin/resources/search_prefill.txt)0
-rw-r--r--bin/resources/xxx_shapemodel2d_left_eyebrow_scale100.bin (renamed from bin/resources/shapemodel2d_left_eyebrow_scale100.bin)bin708 -> 708 bytes
-rw-r--r--bin/resources/xxx_shapemodel2d_right_eyebrow_scale100.bin (renamed from bin/resources/shapemodel2d_right_eyebrow_scale100.bin)bin708 -> 708 bytes
-rw-r--r--bin/resources/xxx_svm_model_binary.bin (renamed from bin/resources/svm_model_binary.bin)0
-rw-r--r--bin/resources/xxx_svm_model_confidence.bin (renamed from bin/resources/svm_model_confidence.bin)0
-rw-r--r--bin/resources/xxx_svm_model_regression.bin (renamed from bin/resources/svm_model_regression.bin)0
-rw-r--r--bin/settings/xxx_default.ini (renamed from bin/settings/default.ini)0
-rw-r--r--bin/settings/xxx_facetracknoir supported games.csv (renamed from bin/settings/facetracknoir supported games.csv)0
-rw-r--r--bin/tracker-ht/xxx_cleye.config (renamed from bin/tracker-ht/cleye.config)0
-rw-r--r--bin/tracker-ht/xxx_flandmark_model.dat (renamed from bin/tracker-ht/flandmark_model.dat)bin5324655 -> 5324655 bytes
-rw-r--r--bin/tracker-ht/xxx_haarcascade_frontalface_alt2.xml (renamed from bin/tracker-ht/haarcascade_frontalface_alt2.xml)0
-rw-r--r--bin/tracker-ht/xxx_head.raw (renamed from bin/tracker-ht/head.raw)0
-rw-r--r--bin/tracker-ht/xxx_headtracker-ftnoir.exe (renamed from bin/tracker-ht/headtracker-ftnoir.exe)bin2071040 -> 2071040 bytes
-rw-r--r--bin/tracker-ht/xxx_license.txt (renamed from bin/tracker-ht/license.txt)0
-rw-r--r--bin/tracker-ht/xxx_thanks.txt (renamed from bin/tracker-ht/thanks.txt)0
-rw-r--r--bin/uielements/xxx_aboutfacetracknoir.png (renamed from bin/uielements/aboutfacetracknoir.png)bin30557 -> 30557 bytes
-rw-r--r--bin/uielements/xxx_bubble_1_small.png (renamed from bin/uielements/bubble_1_small.png)bin5849 -> 5849 bytes
-rw-r--r--bin/uielements/xxx_bubble_2_big.png (renamed from bin/uielements/bubble_2_big.png)bin6480 -> 6480 bytes
-rw-r--r--bin/uielements/xxx_donate.png (renamed from bin/uielements/donate.png)bin778 -> 778 bytes
-rw-r--r--bin/uielements/xxx_facetracknoir.ico (renamed from bin/uielements/facetracknoir.ico)bin23558 -> 23558 bytes
-rw-r--r--bin/uielements/xxx_logo_facetracknoir_32px.png (renamed from bin/uielements/logo_facetracknoir_32px.png)bin2822 -> 2822 bytes
-rw-r--r--bin/uielements/xxx_logo_noir.png (renamed from bin/uielements/logo_noir.png)bin26173 -> 26173 bytes
-rw-r--r--bin/uielements/xxx_logo_noir_small.png (renamed from bin/uielements/logo_noir_small.png)bin6384 -> 6384 bytes
-rw-r--r--bin/uielements/xxx_logo_noir_small_target.png (renamed from bin/uielements/logo_noir_small_target.png)bin5971 -> 5971 bytes
-rw-r--r--bin/uielements/xxx_logo_noir_small_target90px.png (renamed from bin/uielements/logo_noir_small_target90px.png)bin5582 -> 5582 bytes
-rw-r--r--bin/uielements/xxx_logofacetracknoir.png (renamed from bin/uielements/logofacetracknoir.png)bin5437 -> 5437 bytes
-rw-r--r--bin/uielements/xxx_setupfacetracknoir.jpg (renamed from bin/uielements/setupfacetracknoir.jpg)bin21508 -> 21508 bytes
-rw-r--r--bin/uielements/xxx_wizmodernimage.bmp (renamed from bin/uielements/wizmodernimage.bmp)bin154542 -> 154542 bytes
-rw-r--r--bin/uielements/xxx_wizmodernsmallimage.bmp (renamed from bin/uielements/wizmodernsmallimage.bmp)bin9294 -> 9294 bytes
-rw-r--r--bin/xxx_cleye.config (renamed from bin/cleye.config)0
-rw-r--r--bin/xxx_computation6.0.dll (renamed from bin/computation6.0.dll)bin184320 -> 184320 bytes
-rw-r--r--bin/xxx_facetracknoir.ico (renamed from bin/images/facetracknoir.ico)bin23558 -> 23558 bytes
-rw-r--r--bin/xxx_foundation6.0.dll (renamed from bin/foundation6.0.dll)bin159744 -> 159744 bytes
-rw-r--r--bin/xxx_freetrackclient.dll (renamed from bin/freetrackclient.dll)bin10240 -> 10240 bytes
-rw-r--r--bin/xxx_image6.0.dll (renamed from bin/image6.0.dll)bin1282048 -> 1282048 bytes
-rw-r--r--bin/xxx_libpng13.dll (renamed from bin/libpng13.dll)bin135168 -> 135168 bytes
-rw-r--r--bin/xxx_licence.rtf (renamed from bin/licence.rtf)0
-rw-r--r--bin/xxx_license.rtf (renamed from bin/license.rtf)0
-rw-r--r--bin/xxx_npclient.dll (renamed from bin/npclient.dll)bin14336 -> 14336 bytes
-rw-r--r--bin/xxx_npclient64.dll (renamed from bin/npclient64.dll)bin14848 -> 14848 bytes
-rw-r--r--bin/xxx_qt-mt334.dll (renamed from bin/qt-mt334.dll)bin4644864 -> 4644864 bytes
-rw-r--r--bin/xxx_qtcore4.dll (renamed from bin/qtcore4.dll)bin2199552 -> 2199552 bytes
-rw-r--r--bin/xxx_qtgui4.dll (renamed from bin/qtgui4.dll)bin8171520 -> 8171520 bytes
-rw-r--r--bin/xxx_qtnetwork4.dll (renamed from bin/qtnetwork4.dll)bin720896 -> 720896 bytes
-rw-r--r--bin/xxx_qtopengl4.dll (renamed from bin/qtopengl4.dll)bin634880 -> 634880 bytes
-rw-r--r--bin/xxx_qtxml4.dll (renamed from bin/qtxml4.dll)bin364544 -> 364544 bytes
-rw-r--r--bin/xxx_smft32.dll (renamed from bin/smft32.dll)bin10940416 -> 10940416 bytes
-rw-r--r--bin/xxx_tirviews.dll (renamed from bin/tirviews.dll)bin109568 -> 109568 bytes
-rw-r--r--bin/xxx_trackir.exe (renamed from bin/trackir.exe)bin386048 -> 386048 bytes
-rw-r--r--bin/xxx_zlib1.dll (renamed from bin/zlib1.dll)bin70656 -> 70656 bytes
-rw-r--r--cmake/xxx_findgl.cmake (renamed from cmake/FindGL.cmake)0
-rw-r--r--cmake/xxx_findqxt.cmake (renamed from cmake/FindQxt.cmake)0
-rw-r--r--dinput/xxx_dinput8.lib (renamed from dinput/dinput8.lib)bin19978 -> 19978 bytes
-rw-r--r--dinput/xxx_dxguid.lib (renamed from dinput/dxguid.lib)bin105732 -> 105732 bytes
-rw-r--r--dinput/xxx_strmiids.lib (renamed from dinput/strmiids.lib)bin272820 -> 272820 bytes
-rw-r--r--documentation/xxx_filemapping example.doc (renamed from documentation/FileMapping Example.doc)bin35840 -> 35840 bytes
-rw-r--r--documentation/xxx_qt 4.5 with visual studio 2.pdf (renamed from documentation/Qt 4.5 with Visual Studio 2.pdf)bin575691 -> 575691 bytes
-rw-r--r--documentation/xxx_setting up qt.pdf (renamed from documentation/Setting up Qt.pdf)bin20759 -> 20759 bytes
-rw-r--r--documentation/xxx_using shared memory for freetrack server.pdf (renamed from documentation/Using Shared Memory for FreeTrack Server.pdf)bin13514 -> 13514 bytes
-rw-r--r--documentation/xxx_working with qt visual studio plugin.pdf (renamed from documentation/Working with Qt Visual Studio plugin.pdf)bin314796 -> 314796 bytes
-rw-r--r--faceapi/xxx_build_options.h (renamed from faceapi/build_options.h)0
-rw-r--r--faceapi/xxx_lock.h (renamed from faceapi/lock.h)0
-rw-r--r--faceapi/xxx_lockfree.h (renamed from faceapi/lockfree.h)0
-rw-r--r--faceapi/xxx_main.cpp (renamed from faceapi/main.cpp)0
-rw-r--r--faceapi/xxx_mutex.h (renamed from faceapi/mutex.h)0
-rw-r--r--faceapi/xxx_stdafx.cpp (renamed from faceapi/stdafx.cpp)0
-rw-r--r--faceapi/xxx_stdafx.h (renamed from faceapi/stdafx.h)0
-rw-r--r--faceapi/xxx_utils.h (renamed from faceapi/utils.h)0
-rw-r--r--facetracknoir/clientfiles/cfs3/xxx_readme.txt (renamed from facetracknoir/ClientFiles/CFS3/Readme.txt)52
-rw-r--r--facetracknoir/clientfiles/cfs3/xxx_tirviews.dll (renamed from facetracknoir/ClientFiles/CFS3/TIRViews.dll)bin109568 -> 109568 bytes
-rw-r--r--facetracknoir/clientfiles/flightgear/nasal/headtracker.xml83
-rw-r--r--facetracknoir/clientfiles/flightgear/protocol/headtracker.xml67
-rw-r--r--facetracknoir/clientfiles/flightgear/win32/start_fg.bat1
-rw-r--r--facetracknoir/clientfiles/flightgear/xxx_readme.txt (renamed from facetracknoir/ClientFiles/FlightGear/Readme.txt)36
-rw-r--r--facetracknoir/clientfiles/freetracktest/xxx_freetracktest.exe (renamed from facetracknoir/ClientFiles/FreeTrackTest/FreeTrackTest.exe)bin398848 -> 398848 bytes
-rw-r--r--facetracknoir/clientfiles/freetracktest/xxx_readme.txt (renamed from facetracknoir/ClientFiles/FreeTrackTest/Readme.txt)38
-rw-r--r--facetracknoir/clientfiles/fs2002 and fs2004/xxx_fsuipc.dll (renamed from facetracknoir/ClientFiles/FS2002 and FS2004/FSUIPC.dll)bin210880 -> 210880 bytes
-rw-r--r--facetracknoir/clientfiles/glovepie/xxx_facetracknoir2trackir.pie (renamed from facetracknoir/ClientFiles/GlovePIE/FaceTrackNoIR2TrackIR.PIE)32
-rw-r--r--facetracknoir/clientfiles/glovepie/xxx_readme.txt (renamed from facetracknoir/ClientFiles/GlovePIE/Readme.txt)46
-rw-r--r--facetracknoir/clientfiles/ppjoy/xxx_ppjoy mapping for facetracknoir.jpg (renamed from facetracknoir/ClientFiles/PPJoy/PPJoy mapping for FaceTrackNoIR.jpg)bin155205 -> 155205 bytes
-rw-r--r--facetracknoir/clientfiles/ppjoy/xxx_readme.txt (renamed from facetracknoir/ClientFiles/PPJoy/Readme.txt)46
-rw-r--r--facetracknoir/clientfiles/tir4fun/readme.txt9
-rw-r--r--facetracknoir/clientfiles/tir4fun/tir4fun.exebin0 -> 36864 bytes
-rw-r--r--facetracknoir/clientfiles/tir4fun/xxx_npclient.dll (renamed from facetracknoir/ClientFiles/Tir4Fun/NPClient.dll)bin53248 -> 53248 bytes
-rw-r--r--facetracknoir/images/xxx_330px-6dof_en.png (renamed from facetracknoir/images/330px-6DOF_en.png)bin34182 -> 34182 bytes
-rw-r--r--facetracknoir/images/xxx_facetracknoir.ico (renamed from facetracknoir/FaceTrackNoIR.ico)bin23558 -> 23558 bytes
-rw-r--r--facetracknoir/images/xxx_rotation_dofs.png (renamed from facetracknoir/images/rotation_DOFs.png)bin21601 -> 21601 bytes
-rw-r--r--facetracknoir/images/xxx_settings16.png (renamed from facetracknoir/images/Settings16.png)bin711 -> 711 bytes
-rw-r--r--facetracknoir/images/xxx_settingsopen16.png (renamed from facetracknoir/images/SettingsOpen16.png)bin686 -> 686 bytes
-rw-r--r--facetracknoir/images/xxx_translation_dofs.png (renamed from facetracknoir/images/translation_DOFs.png)bin23237 -> 23237 bytes
-rw-r--r--facetracknoir/uielements/bubble_1_small.pngbin0 -> 5849 bytes
-rw-r--r--facetracknoir/uielements/bubble_2_big.pngbin0 -> 6480 bytes
-rw-r--r--facetracknoir/uielements/xxx_aboutfacetracknoir.png (renamed from facetracknoir/UIElements/aboutFaceTrackNoIR.png)bin30557 -> 30557 bytes
-rw-r--r--facetracknoir/uielements/xxx_buttonicoblack.bmp (renamed from facetracknoir/UIElements/ButtonIcoBlack.bmp)bin6966 -> 6966 bytes
-rw-r--r--facetracknoir/uielements/xxx_curves.png (renamed from facetracknoir/UIElements/Curves.png)bin2850 -> 2850 bytes
-rw-r--r--facetracknoir/uielements/xxx_donate.png (renamed from facetracknoir/UIElements/Donate.png)bin778 -> 778 bytes
-rw-r--r--facetracknoir/uielements/xxx_facetracknoir.ico (renamed from facetracknoir/UIElements/FaceTrackNoIR.ico)bin23558 -> 23558 bytes
-rw-r--r--facetracknoir/uielements/xxx_logo_facetracknoir_32px.jpg (renamed from facetracknoir/UIElements/Logo_FaceTrackNoIR_32px.jpg)bin1082 -> 1082 bytes
-rw-r--r--facetracknoir/uielements/xxx_logo_facetracknoir_32px.png (renamed from facetracknoir/UIElements/Logo_FaceTrackNoIR_32px.png)bin2822 -> 2822 bytes
-rw-r--r--facetracknoir/uielements/xxx_logo_noir.png (renamed from facetracknoir/UIElements/Logo_NoIR.png)bin26173 -> 26173 bytes
-rw-r--r--facetracknoir/uielements/xxx_logo_noir_small.png (renamed from facetracknoir/UIElements/Logo_NoIR_small.png)bin6384 -> 6384 bytes
-rw-r--r--facetracknoir/uielements/xxx_logo_noir_small_target.png (renamed from facetracknoir/UIElements/Logo_NoIR_small_target.png)bin5971 -> 5971 bytes
-rw-r--r--facetracknoir/uielements/xxx_logo_noir_small_target90px.png (renamed from facetracknoir/UIElements/Logo_NoIR_small_target90px.png)bin5582 -> 5582 bytes
-rw-r--r--facetracknoir/uielements/xxx_logofacetracknoir.png (renamed from facetracknoir/UIElements/logoFaceTrackNoIR.png)bin5437 -> 5437 bytes
-rw-r--r--facetracknoir/uielements/xxx_logofacetracknoir60px.png (renamed from facetracknoir/UIElements/logoFaceTrackNoIR60px.png)bin3369 -> 3369 bytes
-rw-r--r--facetracknoir/uielements/xxx_tools.png (renamed from facetracknoir/UIElements/Tools.png)bin3053 -> 3053 bytes
-rw-r--r--facetracknoir/xxx_faceapp.cpp (renamed from facetracknoir/FaceApp.cpp)0
-rw-r--r--facetracknoir/xxx_faceapp.h (renamed from facetracknoir/FaceApp.h)0
-rw-r--r--facetracknoir/xxx_facetracknoir.cpp (renamed from facetracknoir/FaceTrackNoIR.cpp)0
-rw-r--r--facetracknoir/xxx_facetracknoir.h (renamed from facetracknoir/FaceTrackNoIR.h)0
-rw-r--r--facetracknoir/xxx_facetracknoir.ico (renamed from facetracknoir/images/FaceTrackNoIR.ico)bin23558 -> 23558 bytes
-rw-r--r--facetracknoir/xxx_facetracknoir.qrc (renamed from facetracknoir/FaceTrackNoIR.qrc)0
-rw-r--r--facetracknoir/xxx_facetracknoir.rc (renamed from facetracknoir/FaceTrackNoIR.rc)0
-rw-r--r--facetracknoir/xxx_facetracknoir.ui (renamed from facetracknoir/FaceTrackNoIR.ui)0
-rw-r--r--facetracknoir/xxx_fsuipcserver.cpp (renamed from facetracknoir/FSUIPCServer.cpp)0
-rw-r--r--facetracknoir/xxx_fsuipcserver.h (renamed from facetracknoir/FSUIPCServer.h)0
-rw-r--r--facetracknoir/xxx_ftnoir_curves.ui (renamed from facetracknoir/FTNoIR_Curves.ui)0
-rw-r--r--facetracknoir/xxx_ftnoir_fsuipccontrols.ui (renamed from facetracknoir/FTNoIR_FSUIPCcontrols.ui)0
-rw-r--r--facetracknoir/xxx_ftnoir_ftnservercontrols.ui (renamed from facetracknoir/FTNoIR_FTNServerControls.ui)0
-rw-r--r--facetracknoir/xxx_ftnoir_keyboardshortcuts.ui (renamed from facetracknoir/FTNoIR_KeyboardShortcuts.ui)0
-rw-r--r--facetracknoir/xxx_ftnoir_preferences.ui (renamed from facetracknoir/FTNoIR_Preferences.ui)0
-rw-r--r--facetracknoir/xxx_ftnserver.cpp (renamed from facetracknoir/FTNServer.cpp)0
-rw-r--r--facetracknoir/xxx_ftnserver.h (renamed from facetracknoir/FTNServer.h)0
-rw-r--r--facetracknoir/xxx_main.cpp (renamed from facetracknoir/main.cpp)0
-rw-r--r--facetracknoir/xxx_paintwidget.h (renamed from facetracknoir/paintwidget.h)0
-rw-r--r--facetracknoir/xxx_postbuild.bat (renamed from facetracknoir/postbuild.bat)0
-rw-r--r--facetracknoir/xxx_readme.txt (renamed from facetracknoir/Readme.txt)0
-rw-r--r--facetracknoir/xxx_readme_update_20100615.txt (renamed from facetracknoir/Readme_Update_20100615.txt)0
-rw-r--r--facetracknoir/xxx_readme_update_20100716.txt (renamed from facetracknoir/Readme_Update_20100716.txt)0
-rw-r--r--facetracknoir/xxx_readme_update_20100822.txt (renamed from facetracknoir/Readme_Update_20100822.txt)0
-rw-r--r--facetracknoir/xxx_resource.h (renamed from facetracknoir/resource.h)0
-rw-r--r--facetracknoir/xxx_rotation.cpp (renamed from facetracknoir/rotation.cpp)0
-rw-r--r--facetracknoir/xxx_rotation.h (renamed from facetracknoir/rotation.h)0
-rw-r--r--facetracknoir/xxx_spot.h (renamed from facetracknoir/spot.h)0
-rw-r--r--facetracknoir/xxx_tracker.cpp (renamed from facetracknoir/tracker.cpp)0
-rw-r--r--facetracknoir/xxx_tracker.h (renamed from facetracknoir/tracker.h)0
-rw-r--r--facetracknoir/xxx_tracker_types.cpp (renamed from facetracknoir/tracker_types.cpp)0
-rw-r--r--facetracknoir/xxx_tracker_types.h (renamed from facetracknoir/tracker_types.h)0
-rw-r--r--freetrackclient/freetrackclient/postbuild.bat15
-rw-r--r--freetrackclient/freetrackclient/resource.h15
-rw-r--r--freetrackclient/freetrackclient/xxx_freetrackclient.cpp (renamed from freetrackclient/FreeTrackClient/FreeTrackClient.cpp)588
-rw-r--r--freetrackclient/freetrackclient/xxx_freetrackclient.rc (renamed from freetrackclient/FreeTrackClient/FreeTrackClient.rc)206
-rw-r--r--freetrackclient/xxx_ftclient.cpp (renamed from freetrackclient/FTClient.cpp)0
-rw-r--r--freetrackclient/xxx_ftclient.h (renamed from freetrackclient/FTClient.h)0
-rw-r--r--ftnoir_filter_accela/images/xxx_filter-16-ac.png (renamed from ftnoir_filter_accela/images/filter-16-ac.png)bin725 -> 725 bytes
-rw-r--r--ftnoir_filter_accela/xxx_filter.qrc (renamed from ftnoir_filter_accela/Filter.qrc)0
-rw-r--r--ftnoir_filter_accela/xxx_ftnoir_filter_accela.cpp (renamed from ftnoir_filter_accela/ftnoir_filter_accela.cpp)0
-rw-r--r--ftnoir_filter_accela/xxx_ftnoir_filter_accela.h (renamed from ftnoir_filter_accela/FTNoIR_Filter_accela.h)0
-rw-r--r--ftnoir_filter_accela/xxx_ftnoir_filter_accela_dialog.cpp (renamed from ftnoir_filter_accela/ftnoir_filter_accela_dialog.cpp)0
-rw-r--r--ftnoir_filter_accela/xxx_ftnoir_filter_accela_dll.cpp (renamed from ftnoir_filter_accela/ftnoir_filter_accela_dll.cpp)0
-rw-r--r--ftnoir_filter_accela/xxx_ftnoir_filtercontrols.ui (renamed from ftnoir_filter_accela/FTNoIR_FilterControls.ui)0
-rw-r--r--ftnoir_filter_base/xxx_ftnoir_filter_base.h (renamed from ftnoir_filter_base/ftnoir_filter_base.h)0
-rw-r--r--ftnoir_filter_base/xxx_ftnoir_filter_base_global.h (renamed from ftnoir_filter_base/ftnoir_filter_base_global.h)0
-rw-r--r--ftnoir_filter_ewma2/images/xxx_filter-16.png (renamed from ftnoir_filter_ewma2/images/filter-16.png)bin642 -> 642 bytes
-rw-r--r--ftnoir_filter_ewma2/images/xxx_filter-32.png (renamed from ftnoir_filter_ewma2/images/filter-32.png)bin1904 -> 1904 bytes
-rw-r--r--ftnoir_filter_ewma2/xxx_filter.qrc (renamed from ftnoir_filter_ewma2/Filter.qrc)0
-rw-r--r--ftnoir_filter_ewma2/xxx_ftnoir_filter_ewma2.cpp (renamed from ftnoir_filter_ewma2/ftnoir_filter_ewma2.cpp)0
-rw-r--r--ftnoir_filter_ewma2/xxx_ftnoir_filter_ewma2.h (renamed from ftnoir_filter_ewma2/FTNoIR_Filter_EWMA2.h)0
-rw-r--r--ftnoir_filter_ewma2/xxx_ftnoir_filter_ewma2_dialog.cpp (renamed from ftnoir_filter_ewma2/ftnoir_filter_ewma2_dialog.cpp)0
-rw-r--r--ftnoir_filter_ewma2/xxx_ftnoir_filter_ewma_dll.cpp (renamed from ftnoir_filter_ewma2/ftnoir_filter_ewma_dll.cpp)0
-rw-r--r--ftnoir_filter_ewma2/xxx_ftnoir_filtercontrols.ui (renamed from ftnoir_filter_ewma2/FTNoIR_FilterControls.ui)0
-rw-r--r--ftnoir_posewidget/images/xxx_side1.bmp (renamed from ftnoir_posewidget/images/side1.bmp)bin44950 -> 44950 bytes
-rw-r--r--ftnoir_posewidget/images/xxx_side1.png (renamed from ftnoir_posewidget/images/side1.png)bin9018 -> 9018 bytes
-rw-r--r--ftnoir_posewidget/images/xxx_side2.png (renamed from ftnoir_posewidget/images/side2.png)bin2922 -> 2922 bytes
-rw-r--r--ftnoir_posewidget/images/xxx_side3.png (renamed from ftnoir_posewidget/images/side3.png)bin2922 -> 2922 bytes
-rw-r--r--ftnoir_posewidget/images/xxx_side4.png (renamed from ftnoir_posewidget/images/side4.png)bin2922 -> 2922 bytes
-rw-r--r--ftnoir_posewidget/images/xxx_side5.png (renamed from ftnoir_posewidget/images/side5.png)bin2922 -> 2922 bytes
-rw-r--r--ftnoir_posewidget/images/xxx_side6.png (renamed from ftnoir_posewidget/images/side6.png)bin4768 -> 4768 bytes
-rw-r--r--ftnoir_posewidget/xxx_glwidget.cpp (renamed from ftnoir_posewidget/glwidget.cpp)0
-rw-r--r--ftnoir_posewidget/xxx_glwidget.h (renamed from ftnoir_posewidget/glwidget.h)0
-rw-r--r--ftnoir_posewidget/xxx_posewidget.qrc (renamed from ftnoir_posewidget/PoseWidget.qrc)0
-rw-r--r--ftnoir_protocol_base/xxx_ftnoir_protocol_base.h (renamed from ftnoir_protocol_base/ftnoir_protocol_base.h)0
-rw-r--r--ftnoir_protocol_base/xxx_ftnoir_protocol_base_global.h (renamed from ftnoir_protocol_base/ftnoir_protocol_base_global.h)0
-rw-r--r--ftnoir_protocol_fg/images/xxx_flightgear.ico (renamed from ftnoir_protocol_fg/images/FlightGear.ico)bin13094 -> 13094 bytes
-rw-r--r--ftnoir_protocol_fg/xxx_fgtypes.h (renamed from ftnoir_protocol_fg/FGTypes.h)0
-rw-r--r--ftnoir_protocol_fg/xxx_ftnoir_fgcontrols.ui (renamed from ftnoir_protocol_fg/FTNoIR_FGcontrols.ui)0
-rw-r--r--ftnoir_protocol_fg/xxx_ftnoir_protocol_fg.cpp (renamed from ftnoir_protocol_fg/FTNoIR_Protocol_FG.cpp)0
-rw-r--r--ftnoir_protocol_fg/xxx_ftnoir_protocol_fg.h (renamed from ftnoir_protocol_fg/FTNoIR_Protocol_FG.h)0
-rw-r--r--ftnoir_protocol_fg/xxx_ftnoir_protocol_fg_dialog.cpp (renamed from ftnoir_protocol_fg/ftnoir_protocol_fg_dialog.cpp)0
-rw-r--r--ftnoir_protocol_fg/xxx_ftnoir_protocol_fg_dll.cpp (renamed from ftnoir_protocol_fg/ftnoir_protocol_fg_dll.cpp)0
-rw-r--r--ftnoir_protocol_fg/xxx_protocol.qrc (renamed from ftnoir_protocol_fg/Protocol.qrc)0
-rw-r--r--ftnoir_protocol_fsuipc/images/xxx_fs9.ico (renamed from ftnoir_protocol_fsuipc/images/FS9.ico)bin29926 -> 29926 bytes
-rw-r--r--ftnoir_protocol_fsuipc/xxx_ftnoir_fsuipccontrols.ui (renamed from ftnoir_protocol_fsuipc/FTNoIR_FSUIPCcontrols.ui)0
-rw-r--r--ftnoir_protocol_fsuipc/xxx_ftnoir_protocol_fsuipc.cpp (renamed from ftnoir_protocol_fsuipc/FTNoIR_Protocol_FSUIPC.cpp)0
-rw-r--r--ftnoir_protocol_fsuipc/xxx_ftnoir_protocol_fsuipc.h (renamed from ftnoir_protocol_fsuipc/FTNoIR_Protocol_FSUIPC.h)0
-rw-r--r--ftnoir_protocol_fsuipc/xxx_ftnoir_protocol_fsuipc_dialog.cpp (renamed from ftnoir_protocol_fsuipc/ftnoir_protocol_FSUIPC_dialog.cpp)0
-rw-r--r--ftnoir_protocol_fsuipc/xxx_ftnoir_protocol_fsuipc_dll.cpp (renamed from ftnoir_protocol_fsuipc/ftnoir_protocol_FSUIPC_dll.cpp)0
-rw-r--r--ftnoir_protocol_fsuipc/xxx_protocol.qrc (renamed from ftnoir_protocol_fsuipc/Protocol.qrc)0
-rw-r--r--ftnoir_protocol_ft/images/xxx_freetrack.ico (renamed from ftnoir_protocol_ft/images/Freetrack.ico)bin17542 -> 17542 bytes
-rw-r--r--ftnoir_protocol_ft/xxx_csv.cpp (renamed from ftnoir_protocol_ft/csv.cpp)0
-rw-r--r--ftnoir_protocol_ft/xxx_csv.h (renamed from ftnoir_protocol_ft/csv.h)0
-rw-r--r--ftnoir_protocol_ft/xxx_ftnoir_ftcontrols.ui (renamed from ftnoir_protocol_ft/FTNoIR_FTcontrols.ui)0
-rw-r--r--ftnoir_protocol_ft/xxx_ftnoir_protocol_ft.cpp (renamed from ftnoir_protocol_ft/FTNoIR_Protocol_FT.cpp)0
-rw-r--r--ftnoir_protocol_ft/xxx_ftnoir_protocol_ft.h (renamed from ftnoir_protocol_ft/FTNoIR_Protocol_FT.h)0
-rw-r--r--ftnoir_protocol_ft/xxx_ftnoir_protocol_ft_dialog.cpp (renamed from ftnoir_protocol_ft/ftnoir_protocol_FT_dialog.cpp)0
-rw-r--r--ftnoir_protocol_ft/xxx_ftnoir_protocol_ft_dll.cpp (renamed from ftnoir_protocol_ft/ftnoir_protocol_FT_dll.cpp)0
-rw-r--r--ftnoir_protocol_ft/xxx_fttypes.h (renamed from ftnoir_protocol_ft/FTTypes.h)0
-rw-r--r--ftnoir_protocol_ft/xxx_protocol.qrc (renamed from ftnoir_protocol_ft/Protocol.qrc)0
-rw-r--r--ftnoir_protocol_ftn/images/xxx_facetracknoir.ico (renamed from ftnoir_protocol_ftn/images/FaceTrackNoIR.ico)bin23558 -> 23558 bytes
-rw-r--r--ftnoir_protocol_ftn/xxx_ftnoir_ftncontrols.ui (renamed from ftnoir_protocol_ftn/FTNoIR_FTNControls.ui)0
-rw-r--r--ftnoir_protocol_ftn/xxx_ftnoir_protocol_ftn.cpp (renamed from ftnoir_protocol_ftn/FTNoIR_Protocol_FTN.cpp)0
-rw-r--r--ftnoir_protocol_ftn/xxx_ftnoir_protocol_ftn.h (renamed from ftnoir_protocol_ftn/FTNoIR_Protocol_FTN.h)0
-rw-r--r--ftnoir_protocol_ftn/xxx_ftnoir_protocol_ftn_dialog.cpp (renamed from ftnoir_protocol_ftn/ftnoir_protocol_ftn_dialog.cpp)0
-rw-r--r--ftnoir_protocol_ftn/xxx_ftnoir_protocol_ftn_dll.cpp (renamed from ftnoir_protocol_ftn/ftnoir_protocol_FTN_dll.cpp)0
-rw-r--r--ftnoir_protocol_ftn/xxx_protocol.qrc (renamed from ftnoir_protocol_ftn/Protocol.qrc)0
-rw-r--r--ftnoir_protocol_mouse/images/xxx_mouse.ico (renamed from ftnoir_protocol_mouse/images/Mouse.ico)bin17542 -> 17542 bytes
-rw-r--r--ftnoir_protocol_mouse/xxx_ftnoir_mousecontrols.ui (renamed from ftnoir_protocol_mouse/FTNoIR_mousecontrols.ui)0
-rw-r--r--ftnoir_protocol_mouse/xxx_ftnoir_protocol_mouse.cpp (renamed from ftnoir_protocol_mouse/FTNoIR_Protocol_MOUSE.cpp)0
-rw-r--r--ftnoir_protocol_mouse/xxx_ftnoir_protocol_mouse.h (renamed from ftnoir_protocol_mouse/FTNoIR_Protocol_MOUSE.h)0
-rw-r--r--ftnoir_protocol_mouse/xxx_ftnoir_protocol_mouse_dialog.cpp (renamed from ftnoir_protocol_mouse/ftnoir_protocol_MOUSE_dialog.cpp)0
-rw-r--r--ftnoir_protocol_mouse/xxx_ftnoir_protocol_mouse_dll.cpp (renamed from ftnoir_protocol_mouse/ftnoir_protocol_MOUSE_dll.cpp)0
-rw-r--r--ftnoir_protocol_mouse/xxx_protocol.qrc (renamed from ftnoir_protocol_mouse/Protocol.qrc)0
-rw-r--r--ftnoir_protocol_sc/images/xxx_fsx.ico (renamed from ftnoir_protocol_sc/images/FSX.ico)bin87910 -> 87910 bytes
-rw-r--r--ftnoir_protocol_sc/xxx_ftnoir_protocol_sc.cpp (renamed from ftnoir_protocol_sc/FTNoIR_Protocol_SC.cpp)0
-rw-r--r--ftnoir_protocol_sc/xxx_ftnoir_protocol_sc.h (renamed from ftnoir_protocol_sc/FTNoIR_Protocol_SC.h)0
-rw-r--r--ftnoir_protocol_sc/xxx_ftnoir_protocol_sc_dialog.cpp (renamed from ftnoir_protocol_sc/ftnoir_protocol_SC_dialog.cpp)0
-rw-r--r--ftnoir_protocol_sc/xxx_ftnoir_protocol_sc_dll.cpp (renamed from ftnoir_protocol_sc/ftnoir_protocol_SC_dll.cpp)0
-rw-r--r--ftnoir_protocol_sc/xxx_ftnoir_sccontrols.ui (renamed from ftnoir_protocol_sc/FTNoIR_SCcontrols.ui)0
-rw-r--r--ftnoir_protocol_sc/xxx_protocol.qrc (renamed from ftnoir_protocol_sc/Protocol.qrc)0
-rw-r--r--ftnoir_protocol_sc/xxx_scserver.manifest (renamed from ftnoir_protocol_sc/SCServer.manifest)0
-rw-r--r--ftnoir_protocol_sc/xxx_simconnect.aps (renamed from ftnoir_protocol_sc/SimConnect.aps)bin1264 -> 1264 bytes
-rw-r--r--ftnoir_tracker_base/xxx_ftnoir_tracker_base.h (renamed from ftnoir_tracker_base/ftnoir_tracker_base.h)0
-rw-r--r--ftnoir_tracker_base/xxx_ftnoir_tracker_base_global.h (renamed from ftnoir_tracker_base/ftnoir_tracker_base_global.h)0
-rw-r--r--ftnoir_tracker_base/xxx_ftnoir_tracker_ma_types.h (renamed from ftnoir_tracker_base/ftnoir_tracker_ma_types.h)0
-rw-r--r--ftnoir_tracker_base/xxx_ftnoir_tracker_sm_types.h (renamed from ftnoir_tracker_base/ftnoir_tracker_sm_types.h)0
-rw-r--r--ftnoir_tracker_base/xxx_ftnoir_tracker_types.h (renamed from ftnoir_tracker_base/ftnoir_tracker_types.h)0
-rw-r--r--ftnoir_tracker_fd/images/xxx_facedetect.ico (renamed from ftnoir_tracker_fd/images/FaceDetect.ico)bin5430 -> 5430 bytes
-rw-r--r--ftnoir_tracker_fd/xxx_face-detect.h (renamed from ftnoir_tracker_fd/face-detect.h)0
-rw-r--r--ftnoir_tracker_fd/xxx_ftnoir_fd_controls.ui (renamed from ftnoir_tracker_fd/FTNoIR_FD_Controls.ui)0
-rw-r--r--ftnoir_tracker_fd/xxx_ftnoir_tracker_facedetect.cpp (renamed from ftnoir_tracker_fd/ftnoir_tracker_facedetect.cpp)0
-rw-r--r--ftnoir_tracker_fd/xxx_ftnoir_tracker_facedetect_dialog.cpp (renamed from ftnoir_tracker_fd/ftnoir_tracker_facedetect_dialog.cpp)0
-rw-r--r--ftnoir_tracker_fd/xxx_ftnoir_tracker_facedetect_dll.cpp (renamed from ftnoir_tracker_fd/ftnoir_tracker_facedetect_dll.cpp)0
-rw-r--r--ftnoir_tracker_fd/xxx_ftnoir_tracker_fd.h (renamed from ftnoir_tracker_fd/FTNoIR_Tracker_FD.h)0
-rw-r--r--ftnoir_tracker_fd/xxx_tracker.qrc (renamed from ftnoir_tracker_fd/Tracker.qrc)0
-rw-r--r--ftnoir_tracker_ht/images/xxx_ht.ico (renamed from ftnoir_tracker_ht/images/HT.ico)bin15086 -> 15086 bytes
-rw-r--r--ftnoir_tracker_ht/xxx_ftnoir_tracker_ht.cpp (renamed from ftnoir_tracker_ht/ftnoir_tracker_ht.cpp)0
-rw-r--r--ftnoir_tracker_ht/xxx_ftnoir_tracker_ht.h (renamed from ftnoir_tracker_ht/ftnoir_tracker_ht.h)0
-rw-r--r--ftnoir_tracker_ht/xxx_ftnoir_tracker_ht_dll.h (renamed from ftnoir_tracker_ht/ftnoir_tracker_ht_dll.h)0
-rw-r--r--ftnoir_tracker_ht/xxx_headtracker-ftnoir.h (renamed from ftnoir_tracker_ht/headtracker-ftnoir.h)0
-rw-r--r--ftnoir_tracker_ht/xxx_ht-api.h (renamed from ftnoir_tracker_ht/ht-api.h)0
-rw-r--r--ftnoir_tracker_ht/xxx_stdafx.h (renamed from ftnoir_tracker_ht/stdafx.h)0
-rw-r--r--ftnoir_tracker_ht/xxx_tracker.qrc (renamed from ftnoir_tracker_ht/Tracker.qrc)0
-rw-r--r--ftnoir_tracker_ht/xxx_trackercontrols.ui (renamed from ftnoir_tracker_ht/TrackerControls.ui)0
-rw-r--r--ftnoir_tracker_pt/resources/cap_front.pngbin0 -> 1164 bytes
-rw-r--r--ftnoir_tracker_pt/resources/cap_side.pngbin0 -> 1733 bytes
-rw-r--r--ftnoir_tracker_pt/resources/clip_front.pngbin0 -> 571 bytes
-rw-r--r--ftnoir_tracker_pt/resources/clip_side.pngbin0 -> 2677 bytes
-rw-r--r--ftnoir_tracker_pt/resources/icon.icobin0 -> 4286 bytes
-rw-r--r--ftnoir_tracker_pt/resources/xxx_logo_ir.png (renamed from ftnoir_tracker_pt/Resources/Logo_IR.png)bin10386 -> 10386 bytes
-rw-r--r--ftnoir_tracker_pt/videoinput/xxx_videoinput.h (renamed from ftnoir_tracker_pt/videoInput/videoInput.h)770
-rw-r--r--ftnoir_tracker_pt/videoinput/xxx_videoinput_vc8.lib (renamed from ftnoir_tracker_pt/videoInput/videoInput_vc8.lib)bin2145206 -> 2145206 bytes
-rw-r--r--ftnoir_tracker_pt/videoinput/xxx_videoinput_vc9.lib (renamed from ftnoir_tracker_pt/videoInput/videoInput_vc9.lib)bin2119546 -> 2119546 bytes
-rw-r--r--ftnoir_tracker_pt/xxx_camera.cpp (renamed from ftnoir_tracker_pt/camera.cpp)0
-rw-r--r--ftnoir_tracker_pt/xxx_camera.h (renamed from ftnoir_tracker_pt/camera.h)0
-rw-r--r--ftnoir_tracker_pt/xxx_ftnoir_pt_controls.ui (renamed from ftnoir_tracker_pt/FTNoIR_PT_Controls.ui)0
-rw-r--r--ftnoir_tracker_pt/xxx_ftnoir_tracker_pt.cpp (renamed from ftnoir_tracker_pt/ftnoir_tracker_pt.cpp)0
-rw-r--r--ftnoir_tracker_pt/xxx_ftnoir_tracker_pt.h (renamed from ftnoir_tracker_pt/ftnoir_tracker_pt.h)0
-rw-r--r--ftnoir_tracker_pt/xxx_ftnoir_tracker_pt.qrc (renamed from ftnoir_tracker_pt/ftnoir_tracker_pt.qrc)0
-rw-r--r--ftnoir_tracker_pt/xxx_ftnoir_tracker_pt.rc (renamed from ftnoir_tracker_pt/FTNoIR_Tracker_PT.rc)0
-rw-r--r--ftnoir_tracker_pt/xxx_ftnoir_tracker_pt_dialog.cpp (renamed from ftnoir_tracker_pt/ftnoir_tracker_pt_dialog.cpp)0
-rw-r--r--ftnoir_tracker_pt/xxx_ftnoir_tracker_pt_dialog.h (renamed from ftnoir_tracker_pt/ftnoir_tracker_pt_dialog.h)0
-rw-r--r--ftnoir_tracker_pt/xxx_ftnoir_tracker_pt_dll.cpp (renamed from ftnoir_tracker_pt/ftnoir_tracker_pt_dll.cpp)0
-rw-r--r--ftnoir_tracker_pt/xxx_ftnoir_tracker_pt_dll.h (renamed from ftnoir_tracker_pt/ftnoir_tracker_pt_dll.h)0
-rw-r--r--ftnoir_tracker_pt/xxx_ftnoir_tracker_pt_settings.cpp (renamed from ftnoir_tracker_pt/ftnoir_tracker_pt_settings.cpp)0
-rw-r--r--ftnoir_tracker_pt/xxx_ftnoir_tracker_pt_settings.h (renamed from ftnoir_tracker_pt/ftnoir_tracker_pt_settings.h)0
-rw-r--r--ftnoir_tracker_pt/xxx_point_extractor.cpp (renamed from ftnoir_tracker_pt/point_extractor.cpp)0
-rw-r--r--ftnoir_tracker_pt/xxx_point_extractor.h (renamed from ftnoir_tracker_pt/point_extractor.h)0
-rw-r--r--ftnoir_tracker_pt/xxx_point_tracker.cpp (renamed from ftnoir_tracker_pt/point_tracker.cpp)0
-rw-r--r--ftnoir_tracker_pt/xxx_point_tracker.h (renamed from ftnoir_tracker_pt/point_tracker.h)0
-rw-r--r--ftnoir_tracker_pt/xxx_resource.h (renamed from ftnoir_tracker_pt/resource.h)0
-rw-r--r--ftnoir_tracker_pt/xxx_timer.cpp (renamed from ftnoir_tracker_pt/timer.cpp)0
-rw-r--r--ftnoir_tracker_pt/xxx_timer.h (renamed from ftnoir_tracker_pt/timer.h)0
-rw-r--r--ftnoir_tracker_pt/xxx_trans_calib.cpp (renamed from ftnoir_tracker_pt/trans_calib.cpp)0
-rw-r--r--ftnoir_tracker_pt/xxx_trans_calib.h (renamed from ftnoir_tracker_pt/trans_calib.h)0
-rw-r--r--ftnoir_tracker_pt/xxx_video_widget.cpp (renamed from ftnoir_tracker_pt/video_widget.cpp)0
-rw-r--r--ftnoir_tracker_pt/xxx_video_widget.h (renamed from ftnoir_tracker_pt/video_widget.h)0
-rw-r--r--ftnoir_tracker_sm/images/xxx_seeingmachines.ico (renamed from ftnoir_tracker_sm/images/SeeingMachines.ico)bin37798 -> 37798 bytes
-rw-r--r--ftnoir_tracker_sm/xxx_ftnoir_sm_controls.ui (renamed from ftnoir_tracker_sm/FTNoIR_SM_Controls.ui)0
-rw-r--r--ftnoir_tracker_sm/xxx_ftnoir_tracker_faceapi.cpp (renamed from ftnoir_tracker_sm/ftnoir_tracker_faceapi.cpp)0
-rw-r--r--ftnoir_tracker_sm/xxx_ftnoir_tracker_faceapi_dialog.cpp (renamed from ftnoir_tracker_sm/ftnoir_tracker_faceapi_dialog.cpp)0
-rw-r--r--ftnoir_tracker_sm/xxx_ftnoir_tracker_faceapi_dll.cpp (renamed from ftnoir_tracker_sm/ftnoir_tracker_faceapi_dll.cpp)0
-rw-r--r--ftnoir_tracker_sm/xxx_ftnoir_tracker_sm.h (renamed from ftnoir_tracker_sm/FTNoIR_Tracker_SM.h)0
-rw-r--r--ftnoir_tracker_sm/xxx_tracker.qrc (renamed from ftnoir_tracker_sm/Tracker.qrc)0
-rw-r--r--ftnoir_tracker_udp/xxx_ftnoir_ftnclientcontrols.ui (renamed from ftnoir_tracker_udp/FTNoIR_FTNClientControls.ui)0
-rw-r--r--ftnoir_tracker_udp/xxx_ftnoir_tracker_udp.cpp (renamed from ftnoir_tracker_udp/ftnoir_tracker_udp.cpp)0
-rw-r--r--ftnoir_tracker_udp/xxx_ftnoir_tracker_udp.h (renamed from ftnoir_tracker_udp/FTNoIR_Tracker_UDP.h)0
-rw-r--r--ftnoir_tracker_udp/xxx_ftnoir_tracker_udp_dialog.cpp (renamed from ftnoir_tracker_udp/ftnoir_tracker_udp_dialog.cpp)0
-rw-r--r--ftnoir_tracker_udp/xxx_ftnoir_tracker_udp_dll.cpp (renamed from ftnoir_tracker_udp/ftnoir_tracker_udp_dll.cpp)0
-rw-r--r--qfunctionconfigurator/qfunctionconfigurator/postbuild.bat30
-rw-r--r--qfunctionconfigurator/qfunctionconfigurator/qfunctionconfigurator.cpp721
-rw-r--r--qfunctionconfigurator/qfunctionconfigurator/qfunctionconfigurator.h206
-rw-r--r--qfunctionconfigurator/qfunctionconfigurator/qfunctionconfiguratorplugin.cpp146
-rw-r--r--qfunctionconfigurator/qfunctionconfigurator/qfunctionconfiguratorplugin.h30
-rw-r--r--qfunctionconfigurator/qfunctionconfigurator/xxx_functionconfig.cpp (renamed from qfunctionconfigurator/QFunctionConfigurator/FunctionConfig.cpp)bin17350 -> 17350 bytes
-rw-r--r--qfunctionconfigurator/qfunctionconfigurator/xxx_functionconfig.h (renamed from qfunctionconfigurator/QFunctionConfigurator/FunctionConfig.h)bin3888 -> 3888 bytes
-rw-r--r--qfunctionconfigurator/xxx_prerequisites for using widget in qt designer.png (renamed from qfunctionconfigurator/Prerequisites for using widget in Qt Designer.png)bin21422 -> 21422 bytes
-rw-r--r--xxx_cmakelists.txt (renamed from CMakeLists.txt)0
-rw-r--r--xxx_list of compatible games.xls (renamed from list of compatible games.xls)bin41984 -> 41984 bytes
-rw-r--r--xxx_list of compatible webcams.xls (renamed from list of compatible webcams.xls)bin32768 -> 32768 bytes
-rw-r--r--xxx_readme.txt (renamed from readme.txt)0
367 files changed, 2230 insertions, 907 deletions
diff --git a/bin/cal/apple built-in isight.lens b/bin/cal/xxx_apple built-in isight.lens
index 3c0b4c6b..3c0b4c6b 100644
--- a/bin/cal/apple built-in isight.lens
+++ b/bin/cal/xxx_apple built-in isight.lens
diff --git a/bin/cal/built-in isight.lens b/bin/cal/xxx_built-in isight.lens
index 3c0b4c6b..3c0b4c6b 100644
--- a/bin/cal/built-in isight.lens
+++ b/bin/cal/xxx_built-in isight.lens
diff --git a/bin/cal/logitech hd webcam c525.lens b/bin/cal/xxx_logitech hd webcam c525.lens
index 632d87fc..632d87fc 100644
--- a/bin/cal/logitech hd webcam c525.lens
+++ b/bin/cal/xxx_logitech hd webcam c525.lens
diff --git a/bin/cal/logitech quickcam pro 5000.lens b/bin/cal/xxx_logitech quickcam pro 5000.lens
index ad93e327..ad93e327 100644
--- a/bin/cal/logitech quickcam pro 5000.lens
+++ b/bin/cal/xxx_logitech quickcam pro 5000.lens
diff --git a/bin/cal/microsoft lifecam vx-6000.lens b/bin/cal/xxx_microsoft lifecam vx-6000.lens
index 9014c39c..9014c39c 100644
--- a/bin/cal/microsoft lifecam vx-6000.lens
+++ b/bin/cal/xxx_microsoft lifecam vx-6000.lens
diff --git a/bin/cal/quickcam for notebooks deluxe.lens b/bin/cal/xxx_quickcam for notebooks deluxe.lens
index ae9a30dd..ae9a30dd 100644
--- a/bin/cal/quickcam for notebooks deluxe.lens
+++ b/bin/cal/xxx_quickcam for notebooks deluxe.lens
diff --git a/bin/cal/quickcam pro for notebooks.lens b/bin/cal/xxx_quickcam pro for notebooks.lens
index d5523e28..d5523e28 100644
--- a/bin/cal/quickcam pro for notebooks.lens
+++ b/bin/cal/xxx_quickcam pro for notebooks.lens
diff --git a/bin/imageformats/qico4.dll b/bin/imageformats/xxx_qico4.dll
index e3cc4f08..e3cc4f08 100644
--- a/bin/imageformats/qico4.dll
+++ b/bin/imageformats/xxx_qico4.dll
Binary files differ
diff --git a/bin/facetracknoir.ico b/bin/images/xxx_facetracknoir.ico
index 5115066c..5115066c 100644
--- a/bin/facetracknoir.ico
+++ b/bin/images/xxx_facetracknoir.ico
Binary files differ
diff --git a/bin/images/flightgear.ico b/bin/images/xxx_flightgear.ico
index f96c0f88..f96c0f88 100644
--- a/bin/images/flightgear.ico
+++ b/bin/images/xxx_flightgear.ico
Binary files differ
diff --git a/bin/images/freetrack.ico b/bin/images/xxx_freetrack.ico
index 02554c3d..02554c3d 100644
--- a/bin/images/freetrack.ico
+++ b/bin/images/xxx_freetrack.ico
Binary files differ
diff --git a/bin/images/fs9.ico b/bin/images/xxx_fs9.ico
index 9afd1953..9afd1953 100644
--- a/bin/images/fs9.ico
+++ b/bin/images/xxx_fs9.ico
Binary files differ
diff --git a/bin/images/fsx.ico b/bin/images/xxx_fsx.ico
index 1c71d409..1c71d409 100644
--- a/bin/images/fsx.ico
+++ b/bin/images/xxx_fsx.ico
Binary files differ
diff --git a/bin/images/ppjoy.ico b/bin/images/xxx_ppjoy.ico
index 52df896d..52df896d 100644
--- a/bin/images/ppjoy.ico
+++ b/bin/images/xxx_ppjoy.ico
Binary files differ
diff --git a/bin/images/seeingmachines.ico b/bin/images/xxx_seeingmachines.ico
index 19b24c84..19b24c84 100644
--- a/bin/images/seeingmachines.ico
+++ b/bin/images/xxx_seeingmachines.ico
Binary files differ
diff --git a/bin/images/settings16.png b/bin/images/xxx_settings16.png
index 3b31623b..3b31623b 100644
--- a/bin/images/settings16.png
+++ b/bin/images/xxx_settings16.png
Binary files differ
diff --git a/bin/images/settingsopen16.png b/bin/images/xxx_settingsopen16.png
index 5bf65f0d..5bf65f0d 100644
--- a/bin/images/settingsopen16.png
+++ b/bin/images/xxx_settingsopen16.png
Binary files differ
diff --git a/bin/images/trackir.ico b/bin/images/xxx_trackir.ico
index 99e02e7b..99e02e7b 100644
--- a/bin/images/trackir.ico
+++ b/bin/images/xxx_trackir.ico
Binary files differ
diff --git a/bin/resources/autoinitconfig.txt b/bin/resources/xxx_autoinitconfig.txt
index 59b93a72..59b93a72 100644
--- a/bin/resources/autoinitconfig.txt
+++ b/bin/resources/xxx_autoinitconfig.txt
diff --git a/bin/resources/cam_blacklist.txt b/bin/resources/xxx_cam_blacklist.txt
index 80c12e91..80c12e91 100644
--- a/bin/resources/cam_blacklist.txt
+++ b/bin/resources/xxx_cam_blacklist.txt
diff --git a/bin/resources/cam_whitelist.txt b/bin/resources/xxx_cam_whitelist.txt
index 5dee8b53..5dee8b53 100644
--- a/bin/resources/cam_whitelist.txt
+++ b/bin/resources/xxx_cam_whitelist.txt
diff --git a/bin/resources/cascade.bin b/bin/resources/xxx_cascade.bin
index 5115ebea..5115ebea 100644
--- a/bin/resources/cascade.bin
+++ b/bin/resources/xxx_cascade.bin
diff --git a/bin/resources/cascade_ir.bin b/bin/resources/xxx_cascade_ir.bin
index 78189311..78189311 100644
--- a/bin/resources/cascade_ir.bin
+++ b/bin/resources/xxx_cascade_ir.bin
diff --git a/bin/resources/cascade_visible.bin b/bin/resources/xxx_cascade_visible.bin
index 5115ebea..5115ebea 100644
--- a/bin/resources/cascade_visible.bin
+++ b/bin/resources/xxx_cascade_visible.bin
diff --git a/bin/resources/clm_model_left_eyebrow_scale100.bin b/bin/resources/xxx_clm_model_left_eyebrow_scale100.bin
index 374850d0..374850d0 100644
--- a/bin/resources/clm_model_left_eyebrow_scale100.bin
+++ b/bin/resources/xxx_clm_model_left_eyebrow_scale100.bin
Binary files differ
diff --git a/bin/resources/clm_model_right_eyebrow_scale100.bin b/bin/resources/xxx_clm_model_right_eyebrow_scale100.bin
index 68f275cb..68f275cb 100644
--- a/bin/resources/clm_model_right_eyebrow_scale100.bin
+++ b/bin/resources/xxx_clm_model_right_eyebrow_scale100.bin
Binary files differ
diff --git a/bin/resources/clm_mouth.bin b/bin/resources/xxx_clm_mouth.bin
index 2dbb417c..2dbb417c 100644
--- a/bin/resources/clm_mouth.bin
+++ b/bin/resources/xxx_clm_mouth.bin
Binary files differ
diff --git a/bin/resources/default_mesh.msh b/bin/resources/xxx_default_mesh.msh
index 9a91ea21..9a91ea21 100644
--- a/bin/resources/default_mesh.msh
+++ b/bin/resources/xxx_default_mesh.msh
Binary files differ
diff --git a/bin/resources/default_mesh.rgn b/bin/resources/xxx_default_mesh.rgn
index 6fe725c4..6fe725c4 100644
--- a/bin/resources/default_mesh.rgn
+++ b/bin/resources/xxx_default_mesh.rgn
diff --git a/bin/resources/distraction_model.txt b/bin/resources/xxx_distraction_model.txt
index 8f49dedf..8f49dedf 100644
--- a/bin/resources/distraction_model.txt
+++ b/bin/resources/xxx_distraction_model.txt
diff --git a/bin/resources/eye_model_binary.bin b/bin/resources/xxx_eye_model_binary.bin
index 013850c5..013850c5 100644
--- a/bin/resources/eye_model_binary.bin
+++ b/bin/resources/xxx_eye_model_binary.bin
diff --git a/bin/resources/eye_model_confidence.bin b/bin/resources/xxx_eye_model_confidence.bin
index 954dc92f..954dc92f 100644
--- a/bin/resources/eye_model_confidence.bin
+++ b/bin/resources/xxx_eye_model_confidence.bin
diff --git a/bin/resources/eye_model_regression.bin b/bin/resources/xxx_eye_model_regression.bin
index 4496b25a..4496b25a 100644
--- a/bin/resources/eye_model_regression.bin
+++ b/bin/resources/xxx_eye_model_regression.bin
diff --git a/bin/resources/eyebrowmodel.bin b/bin/resources/xxx_eyebrowmodel.bin
index a371ce3a..a371ce3a 100644
--- a/bin/resources/eyebrowmodel.bin
+++ b/bin/resources/xxx_eyebrowmodel.bin
Binary files differ
diff --git a/bin/resources/eyeconftriggerv2.txt b/bin/resources/xxx_eyeconftriggerv2.txt
index 1b961b3b..1b961b3b 100644
--- a/bin/resources/eyeconftriggerv2.txt
+++ b/bin/resources/xxx_eyeconftriggerv2.txt
diff --git a/bin/resources/eyetrigger.txt b/bin/resources/xxx_eyetrigger.txt
index 4285f463..4285f463 100644
--- a/bin/resources/eyetrigger.txt
+++ b/bin/resources/xxx_eyetrigger.txt
diff --git a/bin/resources/facesearcherresources.txt b/bin/resources/xxx_facesearcherresources.txt
index be1bed25..be1bed25 100644
--- a/bin/resources/facesearcherresources.txt
+++ b/bin/resources/xxx_facesearcherresources.txt
diff --git a/bin/resources/ffmf.ini b/bin/resources/xxx_ffmf.ini
index 9b8fc91e..9b8fc91e 100644
--- a/bin/resources/ffmf.ini
+++ b/bin/resources/xxx_ffmf.ini
diff --git a/bin/resources/ffmf_ir.ini b/bin/resources/xxx_ffmf_ir.ini
index e1669e6b..e1669e6b 100644
--- a/bin/resources/ffmf_ir.ini
+++ b/bin/resources/xxx_ffmf_ir.ini
diff --git a/bin/resources/ffmf_v3.ini b/bin/resources/xxx_ffmf_v3.ini
index 76cc0946..76cc0946 100644
--- a/bin/resources/ffmf_v3.ini
+++ b/bin/resources/xxx_ffmf_v3.ini
diff --git a/bin/resources/ffmf_visible.ini b/bin/resources/xxx_ffmf_visible.ini
index 27bccfd5..27bccfd5 100644
--- a/bin/resources/ffmf_visible.ini
+++ b/bin/resources/xxx_ffmf_visible.ini
diff --git a/bin/resources/frontmesh.bin b/bin/resources/xxx_frontmesh.bin
index 40d3ec6d..40d3ec6d 100644
--- a/bin/resources/frontmesh.bin
+++ b/bin/resources/xxx_frontmesh.bin
Binary files differ
diff --git a/bin/resources/ftcascade1.bin b/bin/resources/xxx_ftcascade1.bin
index 12ab94f9..12ab94f9 100644
--- a/bin/resources/ftcascade1.bin
+++ b/bin/resources/xxx_ftcascade1.bin
diff --git a/bin/resources/ftcascade1_ir.bin b/bin/resources/xxx_ftcascade1_ir.bin
index c9fc4527..c9fc4527 100644
--- a/bin/resources/ftcascade1_ir.bin
+++ b/bin/resources/xxx_ftcascade1_ir.bin
diff --git a/bin/resources/ftcascade1_visible.bin b/bin/resources/xxx_ftcascade1_visible.bin
index 12ab94f9..12ab94f9 100644
--- a/bin/resources/ftcascade1_visible.bin
+++ b/bin/resources/xxx_ftcascade1_visible.bin
diff --git a/bin/resources/ftcascade2.bin b/bin/resources/xxx_ftcascade2.bin
index e3388085..e3388085 100644
--- a/bin/resources/ftcascade2.bin
+++ b/bin/resources/xxx_ftcascade2.bin
diff --git a/bin/resources/ftcascade2_ir.bin b/bin/resources/xxx_ftcascade2_ir.bin
index bcfa50a4..bcfa50a4 100644
--- a/bin/resources/ftcascade2_ir.bin
+++ b/bin/resources/xxx_ftcascade2_ir.bin
diff --git a/bin/resources/ftcascade2_visible.bin b/bin/resources/xxx_ftcascade2_visible.bin
index e3388085..e3388085 100644
--- a/bin/resources/ftcascade2_visible.bin
+++ b/bin/resources/xxx_ftcascade2_visible.bin
diff --git a/bin/resources/ftcascade3.bin b/bin/resources/xxx_ftcascade3.bin
index d18f01a7..d18f01a7 100644
--- a/bin/resources/ftcascade3.bin
+++ b/bin/resources/xxx_ftcascade3.bin
diff --git a/bin/resources/ftcascade3_ir.bin b/bin/resources/xxx_ftcascade3_ir.bin
index c5be4f57..c5be4f57 100644
--- a/bin/resources/ftcascade3_ir.bin
+++ b/bin/resources/xxx_ftcascade3_ir.bin
diff --git a/bin/resources/ftcascade3_visible.bin b/bin/resources/xxx_ftcascade3_visible.bin
index d18f01a7..d18f01a7 100644
--- a/bin/resources/ftcascade3_visible.bin
+++ b/bin/resources/xxx_ftcascade3_visible.bin
diff --git a/bin/resources/ftcascade4.bin b/bin/resources/xxx_ftcascade4.bin
index 1c8c99e0..1c8c99e0 100644
--- a/bin/resources/ftcascade4.bin
+++ b/bin/resources/xxx_ftcascade4.bin
diff --git a/bin/resources/ftcascade4_ir.bin b/bin/resources/xxx_ftcascade4_ir.bin
index 007c206c..007c206c 100644
--- a/bin/resources/ftcascade4_ir.bin
+++ b/bin/resources/xxx_ftcascade4_ir.bin
diff --git a/bin/resources/ftcascade4_visible.bin b/bin/resources/xxx_ftcascade4_visible.bin
index 1c8c99e0..1c8c99e0 100644
--- a/bin/resources/ftcascade4_visible.bin
+++ b/bin/resources/xxx_ftcascade4_visible.bin
diff --git a/bin/resources/ftshape.txt b/bin/resources/xxx_ftshape.txt
index a2aa0fe0..a2aa0fe0 100644
--- a/bin/resources/ftshape.txt
+++ b/bin/resources/xxx_ftshape.txt
diff --git a/bin/resources/fullmesh.bin b/bin/resources/xxx_fullmesh.bin
index aab5e0ea..aab5e0ea 100644
--- a/bin/resources/fullmesh.bin
+++ b/bin/resources/xxx_fullmesh.bin
Binary files differ
diff --git a/bin/resources/headconfidencetrigger.txt b/bin/resources/xxx_headconfidencetrigger.txt
index 23e06a53..23e06a53 100644
--- a/bin/resources/headconfidencetrigger.txt
+++ b/bin/resources/xxx_headconfidencetrigger.txt
diff --git a/bin/resources/headposelimittrigger.txt b/bin/resources/xxx_headposelimittrigger.txt
index 9720d3a9..9720d3a9 100644
--- a/bin/resources/headposelimittrigger.txt
+++ b/bin/resources/xxx_headposelimittrigger.txt
diff --git a/bin/resources/headposetriggerv2.bin b/bin/resources/xxx_headposetriggerv2.bin
index b11fc8fc..b11fc8fc 100644
--- a/bin/resources/headposetriggerv2.bin
+++ b/bin/resources/xxx_headposetriggerv2.bin
diff --git a/bin/resources/headposetriggerv2.txt b/bin/resources/xxx_headposetriggerv2.txt
index 09456e2b..09456e2b 100644
--- a/bin/resources/headposetriggerv2.txt
+++ b/bin/resources/xxx_headposetriggerv2.txt
diff --git a/bin/resources/headtrigger.txt b/bin/resources/xxx_headtrigger.txt
index 6b63af0b..6b63af0b 100644
--- a/bin/resources/headtrigger.txt
+++ b/bin/resources/xxx_headtrigger.txt
diff --git a/bin/resources/mouth_offsets.txt b/bin/resources/xxx_mouth_offsets.txt
index 07cd5cb1..07cd5cb1 100644
--- a/bin/resources/mouth_offsets.txt
+++ b/bin/resources/xxx_mouth_offsets.txt
diff --git a/bin/resources/mouth_shapes.txt b/bin/resources/xxx_mouth_shapes.txt
index 774ab1b4..774ab1b4 100644
--- a/bin/resources/mouth_shapes.txt
+++ b/bin/resources/xxx_mouth_shapes.txt
diff --git a/bin/resources/mouth_transitions.txt b/bin/resources/xxx_mouth_transitions.txt
index f6d0e312..f6d0e312 100644
--- a/bin/resources/mouth_transitions.txt
+++ b/bin/resources/xxx_mouth_transitions.txt
diff --git a/bin/resources/mouth_transitions_motion_max.txt b/bin/resources/xxx_mouth_transitions_motion_max.txt
index 7ff38ad4..7ff38ad4 100644
--- a/bin/resources/mouth_transitions_motion_max.txt
+++ b/bin/resources/xxx_mouth_transitions_motion_max.txt
diff --git a/bin/resources/mouth_transitions_motion_min.txt b/bin/resources/xxx_mouth_transitions_motion_min.txt
index 2adde9e4..2adde9e4 100644
--- a/bin/resources/mouth_transitions_motion_min.txt
+++ b/bin/resources/xxx_mouth_transitions_motion_min.txt
diff --git a/bin/resources/mouthmodel.bin b/bin/resources/xxx_mouthmodel.bin
index 49cae802..49cae802 100644
--- a/bin/resources/mouthmodel.bin
+++ b/bin/resources/xxx_mouthmodel.bin
Binary files differ
diff --git a/bin/resources/search_prefill.txt b/bin/resources/xxx_search_prefill.txt
index 43c25ee6..43c25ee6 100644
--- a/bin/resources/search_prefill.txt
+++ b/bin/resources/xxx_search_prefill.txt
diff --git a/bin/resources/shapemodel2d_left_eyebrow_scale100.bin b/bin/resources/xxx_shapemodel2d_left_eyebrow_scale100.bin
index efdbb1aa..efdbb1aa 100644
--- a/bin/resources/shapemodel2d_left_eyebrow_scale100.bin
+++ b/bin/resources/xxx_shapemodel2d_left_eyebrow_scale100.bin
Binary files differ
diff --git a/bin/resources/shapemodel2d_right_eyebrow_scale100.bin b/bin/resources/xxx_shapemodel2d_right_eyebrow_scale100.bin
index 51e9a03d..51e9a03d 100644
--- a/bin/resources/shapemodel2d_right_eyebrow_scale100.bin
+++ b/bin/resources/xxx_shapemodel2d_right_eyebrow_scale100.bin
Binary files differ
diff --git a/bin/resources/svm_model_binary.bin b/bin/resources/xxx_svm_model_binary.bin
index d2c0da7b..d2c0da7b 100644
--- a/bin/resources/svm_model_binary.bin
+++ b/bin/resources/xxx_svm_model_binary.bin
diff --git a/bin/resources/svm_model_confidence.bin b/bin/resources/xxx_svm_model_confidence.bin
index 76c92028..76c92028 100644
--- a/bin/resources/svm_model_confidence.bin
+++ b/bin/resources/xxx_svm_model_confidence.bin
diff --git a/bin/resources/svm_model_regression.bin b/bin/resources/xxx_svm_model_regression.bin
index 21a94c82..21a94c82 100644
--- a/bin/resources/svm_model_regression.bin
+++ b/bin/resources/xxx_svm_model_regression.bin
diff --git a/bin/settings/default.ini b/bin/settings/xxx_default.ini
index 72784a36..72784a36 100644
--- a/bin/settings/default.ini
+++ b/bin/settings/xxx_default.ini
diff --git a/bin/settings/facetracknoir supported games.csv b/bin/settings/xxx_facetracknoir supported games.csv
index 51055c01..51055c01 100644
--- a/bin/settings/facetracknoir supported games.csv
+++ b/bin/settings/xxx_facetracknoir supported games.csv
diff --git a/bin/tracker-ht/cleye.config b/bin/tracker-ht/xxx_cleye.config
index bfb37b47..bfb37b47 100644
--- a/bin/tracker-ht/cleye.config
+++ b/bin/tracker-ht/xxx_cleye.config
diff --git a/bin/tracker-ht/flandmark_model.dat b/bin/tracker-ht/xxx_flandmark_model.dat
index c271674d..c271674d 100644
--- a/bin/tracker-ht/flandmark_model.dat
+++ b/bin/tracker-ht/xxx_flandmark_model.dat
Binary files differ
diff --git a/bin/tracker-ht/haarcascade_frontalface_alt2.xml b/bin/tracker-ht/xxx_haarcascade_frontalface_alt2.xml
index caa86f6c..caa86f6c 100644
--- a/bin/tracker-ht/haarcascade_frontalface_alt2.xml
+++ b/bin/tracker-ht/xxx_haarcascade_frontalface_alt2.xml
diff --git a/bin/tracker-ht/head.raw b/bin/tracker-ht/xxx_head.raw
index c29d70a2..c29d70a2 100644
--- a/bin/tracker-ht/head.raw
+++ b/bin/tracker-ht/xxx_head.raw
diff --git a/bin/tracker-ht/headtracker-ftnoir.exe b/bin/tracker-ht/xxx_headtracker-ftnoir.exe
index 3570a179..3570a179 100644
--- a/bin/tracker-ht/headtracker-ftnoir.exe
+++ b/bin/tracker-ht/xxx_headtracker-ftnoir.exe
Binary files differ
diff --git a/bin/tracker-ht/license.txt b/bin/tracker-ht/xxx_license.txt
index 5fe96110..5fe96110 100644
--- a/bin/tracker-ht/license.txt
+++ b/bin/tracker-ht/xxx_license.txt
diff --git a/bin/tracker-ht/thanks.txt b/bin/tracker-ht/xxx_thanks.txt
index 42612dfa..42612dfa 100644
--- a/bin/tracker-ht/thanks.txt
+++ b/bin/tracker-ht/xxx_thanks.txt
diff --git a/bin/uielements/aboutfacetracknoir.png b/bin/uielements/xxx_aboutfacetracknoir.png
index 90f8f792..90f8f792 100644
--- a/bin/uielements/aboutfacetracknoir.png
+++ b/bin/uielements/xxx_aboutfacetracknoir.png
Binary files differ
diff --git a/bin/uielements/bubble_1_small.png b/bin/uielements/xxx_bubble_1_small.png
index ebd4e66f..ebd4e66f 100644
--- a/bin/uielements/bubble_1_small.png
+++ b/bin/uielements/xxx_bubble_1_small.png
Binary files differ
diff --git a/bin/uielements/bubble_2_big.png b/bin/uielements/xxx_bubble_2_big.png
index 5dc40254..5dc40254 100644
--- a/bin/uielements/bubble_2_big.png
+++ b/bin/uielements/xxx_bubble_2_big.png
Binary files differ
diff --git a/bin/uielements/donate.png b/bin/uielements/xxx_donate.png
index cf4223fb..cf4223fb 100644
--- a/bin/uielements/donate.png
+++ b/bin/uielements/xxx_donate.png
Binary files differ
diff --git a/bin/uielements/facetracknoir.ico b/bin/uielements/xxx_facetracknoir.ico
index af36ec30..af36ec30 100644
--- a/bin/uielements/facetracknoir.ico
+++ b/bin/uielements/xxx_facetracknoir.ico
Binary files differ
diff --git a/bin/uielements/logo_facetracknoir_32px.png b/bin/uielements/xxx_logo_facetracknoir_32px.png
index c4e63c76..c4e63c76 100644
--- a/bin/uielements/logo_facetracknoir_32px.png
+++ b/bin/uielements/xxx_logo_facetracknoir_32px.png
Binary files differ
diff --git a/bin/uielements/logo_noir.png b/bin/uielements/xxx_logo_noir.png
index bb654a07..bb654a07 100644
--- a/bin/uielements/logo_noir.png
+++ b/bin/uielements/xxx_logo_noir.png
Binary files differ
diff --git a/bin/uielements/logo_noir_small.png b/bin/uielements/xxx_logo_noir_small.png
index 5d49e0b1..5d49e0b1 100644
--- a/bin/uielements/logo_noir_small.png
+++ b/bin/uielements/xxx_logo_noir_small.png
Binary files differ
diff --git a/bin/uielements/logo_noir_small_target.png b/bin/uielements/xxx_logo_noir_small_target.png
index 4bbaf41f..4bbaf41f 100644
--- a/bin/uielements/logo_noir_small_target.png
+++ b/bin/uielements/xxx_logo_noir_small_target.png
Binary files differ
diff --git a/bin/uielements/logo_noir_small_target90px.png b/bin/uielements/xxx_logo_noir_small_target90px.png
index ecaa4e12..ecaa4e12 100644
--- a/bin/uielements/logo_noir_small_target90px.png
+++ b/bin/uielements/xxx_logo_noir_small_target90px.png
Binary files differ
diff --git a/bin/uielements/logofacetracknoir.png b/bin/uielements/xxx_logofacetracknoir.png
index a1a3407b..a1a3407b 100644
--- a/bin/uielements/logofacetracknoir.png
+++ b/bin/uielements/xxx_logofacetracknoir.png
Binary files differ
diff --git a/bin/uielements/setupfacetracknoir.jpg b/bin/uielements/xxx_setupfacetracknoir.jpg
index 8778c6d5..8778c6d5 100644
--- a/bin/uielements/setupfacetracknoir.jpg
+++ b/bin/uielements/xxx_setupfacetracknoir.jpg
Binary files differ
diff --git a/bin/uielements/wizmodernimage.bmp b/bin/uielements/xxx_wizmodernimage.bmp
index a8dcc13e..a8dcc13e 100644
--- a/bin/uielements/wizmodernimage.bmp
+++ b/bin/uielements/xxx_wizmodernimage.bmp
Binary files differ
diff --git a/bin/uielements/wizmodernsmallimage.bmp b/bin/uielements/xxx_wizmodernsmallimage.bmp
index 9c1a1e08..9c1a1e08 100644
--- a/bin/uielements/wizmodernsmallimage.bmp
+++ b/bin/uielements/xxx_wizmodernsmallimage.bmp
Binary files differ
diff --git a/bin/cleye.config b/bin/xxx_cleye.config
index 55a478ab..55a478ab 100644
--- a/bin/cleye.config
+++ b/bin/xxx_cleye.config
diff --git a/bin/computation6.0.dll b/bin/xxx_computation6.0.dll
index f742040f..f742040f 100644
--- a/bin/computation6.0.dll
+++ b/bin/xxx_computation6.0.dll
Binary files differ
diff --git a/bin/images/facetracknoir.ico b/bin/xxx_facetracknoir.ico
index 5115066c..5115066c 100644
--- a/bin/images/facetracknoir.ico
+++ b/bin/xxx_facetracknoir.ico
Binary files differ
diff --git a/bin/foundation6.0.dll b/bin/xxx_foundation6.0.dll
index d285bac7..d285bac7 100644
--- a/bin/foundation6.0.dll
+++ b/bin/xxx_foundation6.0.dll
Binary files differ
diff --git a/bin/freetrackclient.dll b/bin/xxx_freetrackclient.dll
index 3c1c3963..3c1c3963 100644
--- a/bin/freetrackclient.dll
+++ b/bin/xxx_freetrackclient.dll
Binary files differ
diff --git a/bin/image6.0.dll b/bin/xxx_image6.0.dll
index 5024bd10..5024bd10 100644
--- a/bin/image6.0.dll
+++ b/bin/xxx_image6.0.dll
Binary files differ
diff --git a/bin/libpng13.dll b/bin/xxx_libpng13.dll
index 1f133a2c..1f133a2c 100644
--- a/bin/libpng13.dll
+++ b/bin/xxx_libpng13.dll
Binary files differ
diff --git a/bin/licence.rtf b/bin/xxx_licence.rtf
index c0337ab4..c0337ab4 100644
--- a/bin/licence.rtf
+++ b/bin/xxx_licence.rtf
diff --git a/bin/license.rtf b/bin/xxx_license.rtf
index 5352d462..5352d462 100644
--- a/bin/license.rtf
+++ b/bin/xxx_license.rtf
diff --git a/bin/npclient.dll b/bin/xxx_npclient.dll
index b728cb95..b728cb95 100644
--- a/bin/npclient.dll
+++ b/bin/xxx_npclient.dll
Binary files differ
diff --git a/bin/npclient64.dll b/bin/xxx_npclient64.dll
index fef149d4..fef149d4 100644
--- a/bin/npclient64.dll
+++ b/bin/xxx_npclient64.dll
Binary files differ
diff --git a/bin/qt-mt334.dll b/bin/xxx_qt-mt334.dll
index 6cab4957..6cab4957 100644
--- a/bin/qt-mt334.dll
+++ b/bin/xxx_qt-mt334.dll
Binary files differ
diff --git a/bin/qtcore4.dll b/bin/xxx_qtcore4.dll
index 5103bece..5103bece 100644
--- a/bin/qtcore4.dll
+++ b/bin/xxx_qtcore4.dll
Binary files differ
diff --git a/bin/qtgui4.dll b/bin/xxx_qtgui4.dll
index b21accc6..b21accc6 100644
--- a/bin/qtgui4.dll
+++ b/bin/xxx_qtgui4.dll
Binary files differ
diff --git a/bin/qtnetwork4.dll b/bin/xxx_qtnetwork4.dll
index 69e46f47..69e46f47 100644
--- a/bin/qtnetwork4.dll
+++ b/bin/xxx_qtnetwork4.dll
Binary files differ
diff --git a/bin/qtopengl4.dll b/bin/xxx_qtopengl4.dll
index 91a04acd..91a04acd 100644
--- a/bin/qtopengl4.dll
+++ b/bin/xxx_qtopengl4.dll
Binary files differ
diff --git a/bin/qtxml4.dll b/bin/xxx_qtxml4.dll
index a79a5c81..a79a5c81 100644
--- a/bin/qtxml4.dll
+++ b/bin/xxx_qtxml4.dll
Binary files differ
diff --git a/bin/smft32.dll b/bin/xxx_smft32.dll
index bf3e0f13..bf3e0f13 100644
--- a/bin/smft32.dll
+++ b/bin/xxx_smft32.dll
Binary files differ
diff --git a/bin/tirviews.dll b/bin/xxx_tirviews.dll
index c9427a2d..c9427a2d 100644
--- a/bin/tirviews.dll
+++ b/bin/xxx_tirviews.dll
Binary files differ
diff --git a/bin/trackir.exe b/bin/xxx_trackir.exe
index ce05c028..ce05c028 100644
--- a/bin/trackir.exe
+++ b/bin/xxx_trackir.exe
Binary files differ
diff --git a/bin/zlib1.dll b/bin/xxx_zlib1.dll
index 4eb8adb9..4eb8adb9 100644
--- a/bin/zlib1.dll
+++ b/bin/xxx_zlib1.dll
Binary files differ
diff --git a/cmake/FindGL.cmake b/cmake/xxx_findgl.cmake
index d2e91ada..d2e91ada 100644
--- a/cmake/FindGL.cmake
+++ b/cmake/xxx_findgl.cmake
diff --git a/cmake/FindQxt.cmake b/cmake/xxx_findqxt.cmake
index 1ddfa0dd..1ddfa0dd 100644
--- a/cmake/FindQxt.cmake
+++ b/cmake/xxx_findqxt.cmake
diff --git a/dinput/dinput8.lib b/dinput/xxx_dinput8.lib
index 3fad62fb..3fad62fb 100644
--- a/dinput/dinput8.lib
+++ b/dinput/xxx_dinput8.lib
Binary files differ
diff --git a/dinput/dxguid.lib b/dinput/xxx_dxguid.lib
index 8397d134..8397d134 100644
--- a/dinput/dxguid.lib
+++ b/dinput/xxx_dxguid.lib
Binary files differ
diff --git a/dinput/strmiids.lib b/dinput/xxx_strmiids.lib
index 8d921239..8d921239 100644
--- a/dinput/strmiids.lib
+++ b/dinput/xxx_strmiids.lib
Binary files differ
diff --git a/documentation/FileMapping Example.doc b/documentation/xxx_filemapping example.doc
index 0940508c..0940508c 100644
--- a/documentation/FileMapping Example.doc
+++ b/documentation/xxx_filemapping example.doc
Binary files differ
diff --git a/documentation/Qt 4.5 with Visual Studio 2.pdf b/documentation/xxx_qt 4.5 with visual studio 2.pdf
index c23e3ac9..c23e3ac9 100644
--- a/documentation/Qt 4.5 with Visual Studio 2.pdf
+++ b/documentation/xxx_qt 4.5 with visual studio 2.pdf
Binary files differ
diff --git a/documentation/Setting up Qt.pdf b/documentation/xxx_setting up qt.pdf
index addaee9a..addaee9a 100644
--- a/documentation/Setting up Qt.pdf
+++ b/documentation/xxx_setting up qt.pdf
Binary files differ
diff --git a/documentation/Using Shared Memory for FreeTrack Server.pdf b/documentation/xxx_using shared memory for freetrack server.pdf
index 980a0e55..980a0e55 100644
--- a/documentation/Using Shared Memory for FreeTrack Server.pdf
+++ b/documentation/xxx_using shared memory for freetrack server.pdf
Binary files differ
diff --git a/documentation/Working with Qt Visual Studio plugin.pdf b/documentation/xxx_working with qt visual studio plugin.pdf
index 5d70447e..5d70447e 100644
--- a/documentation/Working with Qt Visual Studio plugin.pdf
+++ b/documentation/xxx_working with qt visual studio plugin.pdf
Binary files differ
diff --git a/faceapi/build_options.h b/faceapi/xxx_build_options.h
index 6bc6a44c..6bc6a44c 100644
--- a/faceapi/build_options.h
+++ b/faceapi/xxx_build_options.h
diff --git a/faceapi/lock.h b/faceapi/xxx_lock.h
index efe38605..efe38605 100644
--- a/faceapi/lock.h
+++ b/faceapi/xxx_lock.h
diff --git a/faceapi/lockfree.h b/faceapi/xxx_lockfree.h
index ce7d2a64..ce7d2a64 100644
--- a/faceapi/lockfree.h
+++ b/faceapi/xxx_lockfree.h
diff --git a/faceapi/main.cpp b/faceapi/xxx_main.cpp
index 46732cb3..46732cb3 100644
--- a/faceapi/main.cpp
+++ b/faceapi/xxx_main.cpp
diff --git a/faceapi/mutex.h b/faceapi/xxx_mutex.h
index 11aabafc..11aabafc 100644
--- a/faceapi/mutex.h
+++ b/faceapi/xxx_mutex.h
diff --git a/faceapi/stdafx.cpp b/faceapi/xxx_stdafx.cpp
index b4263f59..b4263f59 100644
--- a/faceapi/stdafx.cpp
+++ b/faceapi/xxx_stdafx.cpp
diff --git a/faceapi/stdafx.h b/faceapi/xxx_stdafx.h
index d97c9353..d97c9353 100644
--- a/faceapi/stdafx.h
+++ b/faceapi/xxx_stdafx.h
diff --git a/faceapi/utils.h b/faceapi/xxx_utils.h
index 1fdb35b5..1fdb35b5 100644
--- a/faceapi/utils.h
+++ b/faceapi/xxx_utils.h
diff --git a/facetracknoir/ClientFiles/CFS3/Readme.txt b/facetracknoir/clientfiles/cfs3/xxx_readme.txt
index 141daa27..e51cebfa 100644
--- a/facetracknoir/ClientFiles/CFS3/Readme.txt
+++ b/facetracknoir/clientfiles/cfs3/xxx_readme.txt
@@ -1,27 +1,27 @@
-FaceTrackNoIR for
-
- * Combat Flight Simulator 3 (also works for Over Flanders Fields)
- * Wings of War
- * NASCAR Racing Season 2003
- * Colin McRae Rally 4
- * Race Driver 2
- * F1 Challenge
- * Richard Burns Rally
-
-FaceTrackNoIR was made compatible with these programs with the help of the functions TrackIR provides in the dll TIRViews.dll.
-This dll can be downloaded from the TrackIR website: http://www.naturalpoint.com/trackir/06-support/support-download-software-and-manuals.html
-
-To make the functions work, copy the dll in the FaceTrackNoIR installation folder. Then tick the 'use TIRViews.dll' checkbox for the 'fake TrackIR' game protocol.
-
-Please let us know if you like the program, if you have ideas for improvements or any questions you might have.
-
-
-
-The FaceTrackNoIR team:
-
-Wim Vriend
-Ron Hendriks
-
-
-
+FaceTrackNoIR for
+
+ * Combat Flight Simulator 3 (also works for Over Flanders Fields)
+ * Wings of War
+ * NASCAR Racing Season 2003
+ * Colin McRae Rally 4
+ * Race Driver 2
+ * F1 Challenge
+ * Richard Burns Rally
+
+FaceTrackNoIR was made compatible with these programs with the help of the functions TrackIR provides in the dll TIRViews.dll.
+This dll can be downloaded from the TrackIR website: http://www.naturalpoint.com/trackir/06-support/support-download-software-and-manuals.html
+
+To make the functions work, copy the dll in the FaceTrackNoIR installation folder. Then tick the 'use TIRViews.dll' checkbox for the 'fake TrackIR' game protocol.
+
+Please let us know if you like the program, if you have ideas for improvements or any questions you might have.
+
+
+
+The FaceTrackNoIR team:
+
+Wim Vriend
+Ron Hendriks
+
+
+
Disclaimer: For usage of 3rd party software like FlightGear, the FaceTrackNoIR team is not responsible. Use it at your own risk. \ No newline at end of file
diff --git a/facetracknoir/ClientFiles/CFS3/TIRViews.dll b/facetracknoir/clientfiles/cfs3/xxx_tirviews.dll
index a1fb306f..a1fb306f 100644
--- a/facetracknoir/ClientFiles/CFS3/TIRViews.dll
+++ b/facetracknoir/clientfiles/cfs3/xxx_tirviews.dll
Binary files differ
diff --git a/facetracknoir/clientfiles/flightgear/nasal/headtracker.xml b/facetracknoir/clientfiles/flightgear/nasal/headtracker.xml
new file mode 100644
index 00000000..d8bd1d0a
--- /dev/null
+++ b/facetracknoir/clientfiles/flightgear/nasal/headtracker.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0"?>
+
+<PropertyList>
+ <nasal>
+ <headtracker>
+ <script>
+ var Value = {
+ new: func(prop) {
+ var m = { parents: [Value] };
+ m.prop = props.globals.getNode(prop, 1);
+ m.value = 0;
+ return m;
+ },
+ apply: func(value) {
+ me.prop.setDoubleValue(me.prop.getValue() - me.value + value);
+ me.value = value;
+ },
+ };
+
+
+ var x = Value.new("/sim/current-view/x-offset-m");
+ var y = Value.new("/sim/current-view/y-offset-m");
+ var z = Value.new("/sim/current-view/z-offset-m");
+ var h = Value.new("/sim/current-view/heading-offset-deg");
+ var p = Value.new("/sim/current-view/pitch-offset-deg");
+ var r = Value.new("/sim/current-view/roll-offset-deg");
+
+
+ var resetting = 0;
+ var status = nil;
+
+ var reset = func {
+ if (status != 1) {
+ setprop("/sim/headtracker/control", 1);
+ resetting = 1;
+ view.resetViewPos();
+ view.resetViewDir();
+ x.value = y.value = z.value = h.value = p.value = r.value = 0;
+ }
+ }
+
+ setlistener("/sim/headtracker/status", func(n) {
+ var s = n.getValue();
+ if (!status and s) {
+ setprop("/sim/headtracker/control", 0);
+ resetting = 0;
+ }
+ status = s;
+ }, 1, 0);
+
+
+ var loop = func {
+ if (!view.index and !resetting) {
+ x.apply(getprop("/sim/headtracker/x-m"));
+ y.apply(getprop("/sim/headtracker/y-m"));
+ z.apply(getprop("/sim/headtracker/z-m"));
+
+ h.apply(getprop("/sim/headtracker/heading-deg"));
+ p.apply(getprop("/sim/headtracker/pitch-deg"));
+ r.apply(-1 * getprop("/sim/headtracker/roll-deg"));
+ }
+ settimer(loop, 0);
+ }
+
+ loop();
+
+ </script>
+ </headtracker>
+ </nasal>
+
+ <sim>
+ <headtracker>
+ <x-m type="double">0</x-m>
+ <y-m type="double">0</y-m>
+ <z-m type="double">0</z-m>
+ <heading-deg type="double">0</heading-deg>
+ <pitch-deg type="double">0</pitch-deg>
+ <roll-deg type="double">0</roll-deg>
+ <status type="int">0</status>
+ <control type="int">0</control>
+ </headtracker>
+ </sim>
+</PropertyList>
diff --git a/facetracknoir/clientfiles/flightgear/protocol/headtracker.xml b/facetracknoir/clientfiles/flightgear/protocol/headtracker.xml
new file mode 100644
index 00000000..cd1d0dad
--- /dev/null
+++ b/facetracknoir/clientfiles/flightgear/protocol/headtracker.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+
+<PropertyList>
+ <generic>
+ <input>
+ <binary_mode>true</binary_mode>
+ <binary_footer>none</binary_footer>
+ <byte_order>host</byte_order>
+ <record_length>52</record_length>
+
+ <chunk>
+ <name>x</name>
+ <type>double</type>
+ <node>/sim/headtracker/x-m</node>
+ </chunk>
+
+ <chunk>
+ <name>y</name>
+ <type>double</type>
+ <node>/sim/headtracker/y-m</node>
+ </chunk>
+
+ <chunk>
+ <name>z</name>
+ <type>double</type>
+ <node>/sim/headtracker/z-m</node>
+ </chunk>
+
+ <chunk>
+ <name>heading</name>
+ <type>double</type>
+ <node>/sim/headtracker/heading-deg</node>
+ </chunk>
+
+ <chunk>
+ <name>pitch</name>
+ <type>double</type>
+ <node>/sim/headtracker/pitch-deg</node>
+ </chunk>
+
+ <chunk>
+ <name>roll</name>
+ <type>double</type>
+ <node>/sim/headtracker/roll-deg</node>
+ </chunk>
+
+ <chunk>
+ <name>status</name>
+ <type>int</type>
+ <node>/sim/headtracker/status</node>
+ </chunk>
+ </input>
+
+ <output>
+ <binary_mode>true</binary_mode>
+ <binary_footer>none</binary_footer>
+ <byte_order>host</byte_order>
+ <record_length>4</record_length>
+
+ <chunk>
+ <name>control</name>
+ <type>int</type>
+ <node>/sim/headtracker/control</node>
+ </chunk>
+ </output>
+ </generic>
+</PropertyList>
diff --git a/facetracknoir/clientfiles/flightgear/win32/start_fg.bat b/facetracknoir/clientfiles/flightgear/win32/start_fg.bat
new file mode 100644
index 00000000..cd9829b5
--- /dev/null
+++ b/facetracknoir/clientfiles/flightgear/win32/start_fg.bat
@@ -0,0 +1 @@
+fgfs --generic=socket,in,25,localhost,5550,udp,headtracker --generic=socket,out,10,localhost,5551,udp,headtracker --prop:browser=/sim/headtracker "c:\Program Files\FlightGear\data\Nasal\headtracker.xml" \ No newline at end of file
diff --git a/facetracknoir/ClientFiles/FlightGear/Readme.txt b/facetracknoir/clientfiles/flightgear/xxx_readme.txt
index c86ffffe..75cbbcd2 100644
--- a/facetracknoir/ClientFiles/FlightGear/Readme.txt
+++ b/facetracknoir/clientfiles/flightgear/xxx_readme.txt
@@ -1,19 +1,19 @@
-FaceTrackNoIR for FlightGear.
-
-FaceTrackNoIR was made compatible with FlightGear with the help of Melchior Franz, who initially made a Linux headtracker. FaceTrackNoIR sends UDP-packets to FlightGear which contain 6DOF-data. The script and protocol provided by Melchior take care of receiving the data and moving 'the head' in-game.
-
-To make the FlightGear script work, copy the files in the subfolders to the corresponding folders in the FlightGear installation folder. Start FlightGear with the batch-file 'start_fg.bat'.
-
-
-Please let us know if you like the program, if you have ideas for improvements or any questions you might have.
-
-
-
-The FaceTrackNoIR team:
-
-Wim Vriend
-Ron Hendriks
-
-
-
+FaceTrackNoIR for FlightGear.
+
+FaceTrackNoIR was made compatible with FlightGear with the help of Melchior Franz, who initially made a Linux headtracker. FaceTrackNoIR sends UDP-packets to FlightGear which contain 6DOF-data. The script and protocol provided by Melchior take care of receiving the data and moving 'the head' in-game.
+
+To make the FlightGear script work, copy the files in the subfolders to the corresponding folders in the FlightGear installation folder. Start FlightGear with the batch-file 'start_fg.bat'.
+
+
+Please let us know if you like the program, if you have ideas for improvements or any questions you might have.
+
+
+
+The FaceTrackNoIR team:
+
+Wim Vriend
+Ron Hendriks
+
+
+
Disclaimer: For usage of 3rd party software like FlightGear, the FaceTrackNoIR team is not responsible. Use it at your own risk. \ No newline at end of file
diff --git a/facetracknoir/ClientFiles/FreeTrackTest/FreeTrackTest.exe b/facetracknoir/clientfiles/freetracktest/xxx_freetracktest.exe
index 2965a07f..2965a07f 100644
--- a/facetracknoir/ClientFiles/FreeTrackTest/FreeTrackTest.exe
+++ b/facetracknoir/clientfiles/freetracktest/xxx_freetracktest.exe
Binary files differ
diff --git a/facetracknoir/ClientFiles/FreeTrackTest/Readme.txt b/facetracknoir/clientfiles/freetracktest/xxx_readme.txt
index 54f3ccd1..ca40906f 100644
--- a/facetracknoir/ClientFiles/FreeTrackTest/Readme.txt
+++ b/facetracknoir/clientfiles/freetracktest/xxx_readme.txt
@@ -1,20 +1,20 @@
-FaceTrackNoIR for Free-track 'enabled' games.
-
-FaceTrackNoIR was made compatible with the Free-track protocol, for which the Free-track source (a well, part of it) was
-translated from Delphi Pascal to C++ (Visual Studio C++, with Qt).
-
-To start the Free-track protocol-server in FaceTrackNoIR, select Free-track in the 'game-protocol' listbox. The program
-'FreeTrackTest.exe' is provided to check, if the protocol-server is running.
-
-FreeTrackTest.exe was created by the Free-track team.
-
-
-
-The FaceTrackNoIR team:
-
-Wim Vriend
-Ron Hendriks
-
-
-
+FaceTrackNoIR for Free-track 'enabled' games.
+
+FaceTrackNoIR was made compatible with the Free-track protocol, for which the Free-track source (a well, part of it) was
+translated from Delphi Pascal to C++ (Visual Studio C++, with Qt).
+
+To start the Free-track protocol-server in FaceTrackNoIR, select Free-track in the 'game-protocol' listbox. The program
+'FreeTrackTest.exe' is provided to check, if the protocol-server is running.
+
+FreeTrackTest.exe was created by the Free-track team.
+
+
+
+The FaceTrackNoIR team:
+
+Wim Vriend
+Ron Hendriks
+
+
+
Disclaimer: For usage of 3rd party software like FreeTrackTest, the FaceTrackNoIR team is not responsible. Use it at your own risk. \ No newline at end of file
diff --git a/facetracknoir/ClientFiles/FS2002 and FS2004/FSUIPC.dll b/facetracknoir/clientfiles/fs2002 and fs2004/xxx_fsuipc.dll
index 264d14c5..264d14c5 100644
--- a/facetracknoir/ClientFiles/FS2002 and FS2004/FSUIPC.dll
+++ b/facetracknoir/clientfiles/fs2002 and fs2004/xxx_fsuipc.dll
Binary files differ
diff --git a/facetracknoir/ClientFiles/GlovePIE/FaceTrackNoIR2TrackIR.PIE b/facetracknoir/clientfiles/glovepie/xxx_facetracknoir2trackir.pie
index 745da7c6..d0839e5d 100644
--- a/facetracknoir/ClientFiles/GlovePIE/FaceTrackNoIR2TrackIR.PIE
+++ b/facetracknoir/clientfiles/glovepie/xxx_facetracknoir2trackir.pie
@@ -1,16 +1,16 @@
-//
-// 6 Degrees of Freedom Headtracking with FaceTrackNoIR
-// 2010 by Wim Vriend
-//
-pie.FrameRate = 120Hz
-var.multiply = 1.5
-var.R2D = 57.295781
-FakeTrackIR.pitch=(Joystick.pitch - 0.10) * var.R2D * var.multiply
-FakeTrackIR.yaw=(Joystick.yaw - 0.10) * var.R2D * var.multiply
-FakeTrackIR.roll=(Joystick.roll - 0.10) * var.R2D * var.multiply
-FakeTrackIR.x=(Joystick.x - 0.10) * var.R2D * var.multiply
-FakeTrackIR.y=(Joystick.y - 0.10) * var.R2D * var.multiply
-FakeTrackIR.z=(Joystick.z - 0.10) * var.R2D * var.multiply
-debug = 'pitch='+FakeTrackIR.pitch+' roll='+FakeTrackIR.roll+' yaw='+FakeTrackIR.yaw+' xyz=('+FakeTrackIR.x+','+FakeTrackIR.y+','+FakeTrackIR.z+')'
-//debug = FakeTrackIR.active
-
+//
+// 6 Degrees of Freedom Headtracking with FaceTrackNoIR
+// 2010 by Wim Vriend
+//
+pie.FrameRate = 120Hz
+var.multiply = 1.5
+var.R2D = 57.295781
+FakeTrackIR.pitch=(Joystick.pitch - 0.10) * var.R2D * var.multiply
+FakeTrackIR.yaw=(Joystick.yaw - 0.10) * var.R2D * var.multiply
+FakeTrackIR.roll=(Joystick.roll - 0.10) * var.R2D * var.multiply
+FakeTrackIR.x=(Joystick.x - 0.10) * var.R2D * var.multiply
+FakeTrackIR.y=(Joystick.y - 0.10) * var.R2D * var.multiply
+FakeTrackIR.z=(Joystick.z - 0.10) * var.R2D * var.multiply
+debug = 'pitch='+FakeTrackIR.pitch+' roll='+FakeTrackIR.roll+' yaw='+FakeTrackIR.yaw+' xyz=('+FakeTrackIR.x+','+FakeTrackIR.y+','+FakeTrackIR.z+')'
+//debug = FakeTrackIR.active
+
diff --git a/facetracknoir/ClientFiles/GlovePIE/Readme.txt b/facetracknoir/clientfiles/glovepie/xxx_readme.txt
index db88fdc8..3639e26b 100644
--- a/facetracknoir/ClientFiles/GlovePIE/Readme.txt
+++ b/facetracknoir/clientfiles/glovepie/xxx_readme.txt
@@ -1,24 +1,24 @@
-FaceTrackNoIR for PPJoy 'enabled' games/programs.
-
-FaceTrackNoIR was made compatible with the PPJoy virtual joystick(s), that can be used by various other programs as input. GlovePIE is one of the most powerfull we know (we have also tried tir4fun, but that is quite limited).
-
-To start the PPJoy protocol-server in FaceTrackNoIR, select Virtual Joystick in the 'game-protocol' listbox. The
-settings, necessary to configure PPJoy for FaceTrackNoIR as included in the PPJoy folder.
-
-GlovePIE was made by Carl Kenner and may NOT be used for military purposes. You can download it from the website
-http://glovepie.org/glovepie.php
-
-The script FaceTrackNoIR2TrackIR.PIE, which was included in this folder, surves as an example for GlovePIE. If anyone
-want to use, change or improve it: feel free to do so. In fact, if you do, we would like to receive a copy :-)
-
-Regards,
-
-
-The FaceTrackNoIR team:
-
-Wim Vriend
-Ron Hendriks
-
-
-
+FaceTrackNoIR for PPJoy 'enabled' games/programs.
+
+FaceTrackNoIR was made compatible with the PPJoy virtual joystick(s), that can be used by various other programs as input. GlovePIE is one of the most powerfull we know (we have also tried tir4fun, but that is quite limited).
+
+To start the PPJoy protocol-server in FaceTrackNoIR, select Virtual Joystick in the 'game-protocol' listbox. The
+settings, necessary to configure PPJoy for FaceTrackNoIR as included in the PPJoy folder.
+
+GlovePIE was made by Carl Kenner and may NOT be used for military purposes. You can download it from the website
+http://glovepie.org/glovepie.php
+
+The script FaceTrackNoIR2TrackIR.PIE, which was included in this folder, surves as an example for GlovePIE. If anyone
+want to use, change or improve it: feel free to do so. In fact, if you do, we would like to receive a copy :-)
+
+Regards,
+
+
+The FaceTrackNoIR team:
+
+Wim Vriend
+Ron Hendriks
+
+
+
Disclaimer: For usage of 3rd party software like GlovePIE, the FaceTrackNoIR team is not responsible. Use it at your own risk. \ No newline at end of file
diff --git a/facetracknoir/ClientFiles/PPJoy/PPJoy mapping for FaceTrackNoIR.jpg b/facetracknoir/clientfiles/ppjoy/xxx_ppjoy mapping for facetracknoir.jpg
index 052c6899..052c6899 100644
--- a/facetracknoir/ClientFiles/PPJoy/PPJoy mapping for FaceTrackNoIR.jpg
+++ b/facetracknoir/clientfiles/ppjoy/xxx_ppjoy mapping for facetracknoir.jpg
Binary files differ
diff --git a/facetracknoir/ClientFiles/PPJoy/Readme.txt b/facetracknoir/clientfiles/ppjoy/xxx_readme.txt
index 3000ece6..20c52111 100644
--- a/facetracknoir/ClientFiles/PPJoy/Readme.txt
+++ b/facetracknoir/clientfiles/ppjoy/xxx_readme.txt
@@ -1,24 +1,24 @@
-FaceTrackNoIR for PPJoy 'enabled' games/programs.
-
-FaceTrackNoIR was made compatible with the PPJoy virtual joystick(s), that can be used by various other programs as input.
-
-To start the PPJoy protocol-server in FaceTrackNoIR, select Virtual Joystick in the 'game-protocol' listbox. The
-settings, necessary to configure PPJoy for FaceTrackNoIR as included in the PPJoy folder, in the file
-PPJoy mapping for FaceTrackNoIR.jpg.
-
-PPJoy was made by Deon van der Westhuysen and is unfortunately not updated anymore. You can download it from the website
-http://shareware.pcmag.com/free/Miscellaneous-Utilities/PPJoy/75176.html, but possibly from others as well...
-
-
-Regards,
-
-
-The FaceTrackNoIR team:
-
-Wim Vriend
-Ron Hendriks
-
-
-
-
+FaceTrackNoIR for PPJoy 'enabled' games/programs.
+
+FaceTrackNoIR was made compatible with the PPJoy virtual joystick(s), that can be used by various other programs as input.
+
+To start the PPJoy protocol-server in FaceTrackNoIR, select Virtual Joystick in the 'game-protocol' listbox. The
+settings, necessary to configure PPJoy for FaceTrackNoIR as included in the PPJoy folder, in the file
+PPJoy mapping for FaceTrackNoIR.jpg.
+
+PPJoy was made by Deon van der Westhuysen and is unfortunately not updated anymore. You can download it from the website
+http://shareware.pcmag.com/free/Miscellaneous-Utilities/PPJoy/75176.html, but possibly from others as well...
+
+
+Regards,
+
+
+The FaceTrackNoIR team:
+
+Wim Vriend
+Ron Hendriks
+
+
+
+
Disclaimer: For usage of 3rd party software like PPJoy, the FaceTrackNoIR team is not responsible. Use it at your own risk. \ No newline at end of file
diff --git a/facetracknoir/clientfiles/tir4fun/readme.txt b/facetracknoir/clientfiles/tir4fun/readme.txt
new file mode 100644
index 00000000..d64af301
--- /dev/null
+++ b/facetracknoir/clientfiles/tir4fun/readme.txt
@@ -0,0 +1,9 @@
+What is TIR4FUN?
+
+TIR4FUN is a free utility for dedicated gamers. It enables 6DOF POV control with mouse and joystick axes.
+
+Software is provided as it is. Configuration is straightforward. GUI says it all!
+
+Installation:
+
+Copy all files to a directory. Launch tir4fun.exe to bring up the GUI.
diff --git a/facetracknoir/clientfiles/tir4fun/tir4fun.exe b/facetracknoir/clientfiles/tir4fun/tir4fun.exe
new file mode 100644
index 00000000..a51eced0
--- /dev/null
+++ b/facetracknoir/clientfiles/tir4fun/tir4fun.exe
Binary files differ
diff --git a/facetracknoir/ClientFiles/Tir4Fun/NPClient.dll b/facetracknoir/clientfiles/tir4fun/xxx_npclient.dll
index e392442e..e392442e 100644
--- a/facetracknoir/ClientFiles/Tir4Fun/NPClient.dll
+++ b/facetracknoir/clientfiles/tir4fun/xxx_npclient.dll
Binary files differ
diff --git a/facetracknoir/images/330px-6DOF_en.png b/facetracknoir/images/xxx_330px-6dof_en.png
index 9d1d72ff..9d1d72ff 100644
--- a/facetracknoir/images/330px-6DOF_en.png
+++ b/facetracknoir/images/xxx_330px-6dof_en.png
Binary files differ
diff --git a/facetracknoir/FaceTrackNoIR.ico b/facetracknoir/images/xxx_facetracknoir.ico
index 5115066c..5115066c 100644
--- a/facetracknoir/FaceTrackNoIR.ico
+++ b/facetracknoir/images/xxx_facetracknoir.ico
Binary files differ
diff --git a/facetracknoir/images/rotation_DOFs.png b/facetracknoir/images/xxx_rotation_dofs.png
index 68682d88..68682d88 100644
--- a/facetracknoir/images/rotation_DOFs.png
+++ b/facetracknoir/images/xxx_rotation_dofs.png
Binary files differ
diff --git a/facetracknoir/images/Settings16.png b/facetracknoir/images/xxx_settings16.png
index 3b31623b..3b31623b 100644
--- a/facetracknoir/images/Settings16.png
+++ b/facetracknoir/images/xxx_settings16.png
Binary files differ
diff --git a/facetracknoir/images/SettingsOpen16.png b/facetracknoir/images/xxx_settingsopen16.png
index 5bf65f0d..5bf65f0d 100644
--- a/facetracknoir/images/SettingsOpen16.png
+++ b/facetracknoir/images/xxx_settingsopen16.png
Binary files differ
diff --git a/facetracknoir/images/translation_DOFs.png b/facetracknoir/images/xxx_translation_dofs.png
index 886c586e..886c586e 100644
--- a/facetracknoir/images/translation_DOFs.png
+++ b/facetracknoir/images/xxx_translation_dofs.png
Binary files differ
diff --git a/facetracknoir/uielements/bubble_1_small.png b/facetracknoir/uielements/bubble_1_small.png
new file mode 100644
index 00000000..ebd4e66f
--- /dev/null
+++ b/facetracknoir/uielements/bubble_1_small.png
Binary files differ
diff --git a/facetracknoir/uielements/bubble_2_big.png b/facetracknoir/uielements/bubble_2_big.png
new file mode 100644
index 00000000..5dc40254
--- /dev/null
+++ b/facetracknoir/uielements/bubble_2_big.png
Binary files differ
diff --git a/facetracknoir/UIElements/aboutFaceTrackNoIR.png b/facetracknoir/uielements/xxx_aboutfacetracknoir.png
index 90f8f792..90f8f792 100644
--- a/facetracknoir/UIElements/aboutFaceTrackNoIR.png
+++ b/facetracknoir/uielements/xxx_aboutfacetracknoir.png
Binary files differ
diff --git a/facetracknoir/UIElements/ButtonIcoBlack.bmp b/facetracknoir/uielements/xxx_buttonicoblack.bmp
index 9bc402aa..9bc402aa 100644
--- a/facetracknoir/UIElements/ButtonIcoBlack.bmp
+++ b/facetracknoir/uielements/xxx_buttonicoblack.bmp
Binary files differ
diff --git a/facetracknoir/UIElements/Curves.png b/facetracknoir/uielements/xxx_curves.png
index fe21fa15..fe21fa15 100644
--- a/facetracknoir/UIElements/Curves.png
+++ b/facetracknoir/uielements/xxx_curves.png
Binary files differ
diff --git a/facetracknoir/UIElements/Donate.png b/facetracknoir/uielements/xxx_donate.png
index cf4223fb..cf4223fb 100644
--- a/facetracknoir/UIElements/Donate.png
+++ b/facetracknoir/uielements/xxx_donate.png
Binary files differ
diff --git a/facetracknoir/UIElements/FaceTrackNoIR.ico b/facetracknoir/uielements/xxx_facetracknoir.ico
index af36ec30..af36ec30 100644
--- a/facetracknoir/UIElements/FaceTrackNoIR.ico
+++ b/facetracknoir/uielements/xxx_facetracknoir.ico
Binary files differ
diff --git a/facetracknoir/UIElements/Logo_FaceTrackNoIR_32px.jpg b/facetracknoir/uielements/xxx_logo_facetracknoir_32px.jpg
index 73ead853..73ead853 100644
--- a/facetracknoir/UIElements/Logo_FaceTrackNoIR_32px.jpg
+++ b/facetracknoir/uielements/xxx_logo_facetracknoir_32px.jpg
Binary files differ
diff --git a/facetracknoir/UIElements/Logo_FaceTrackNoIR_32px.png b/facetracknoir/uielements/xxx_logo_facetracknoir_32px.png
index c4e63c76..c4e63c76 100644
--- a/facetracknoir/UIElements/Logo_FaceTrackNoIR_32px.png
+++ b/facetracknoir/uielements/xxx_logo_facetracknoir_32px.png
Binary files differ
diff --git a/facetracknoir/UIElements/Logo_NoIR.png b/facetracknoir/uielements/xxx_logo_noir.png
index bb654a07..bb654a07 100644
--- a/facetracknoir/UIElements/Logo_NoIR.png
+++ b/facetracknoir/uielements/xxx_logo_noir.png
Binary files differ
diff --git a/facetracknoir/UIElements/Logo_NoIR_small.png b/facetracknoir/uielements/xxx_logo_noir_small.png
index 5d49e0b1..5d49e0b1 100644
--- a/facetracknoir/UIElements/Logo_NoIR_small.png
+++ b/facetracknoir/uielements/xxx_logo_noir_small.png
Binary files differ
diff --git a/facetracknoir/UIElements/Logo_NoIR_small_target.png b/facetracknoir/uielements/xxx_logo_noir_small_target.png
index 4bbaf41f..4bbaf41f 100644
--- a/facetracknoir/UIElements/Logo_NoIR_small_target.png
+++ b/facetracknoir/uielements/xxx_logo_noir_small_target.png
Binary files differ
diff --git a/facetracknoir/UIElements/Logo_NoIR_small_target90px.png b/facetracknoir/uielements/xxx_logo_noir_small_target90px.png
index ecaa4e12..ecaa4e12 100644
--- a/facetracknoir/UIElements/Logo_NoIR_small_target90px.png
+++ b/facetracknoir/uielements/xxx_logo_noir_small_target90px.png
Binary files differ
diff --git a/facetracknoir/UIElements/logoFaceTrackNoIR.png b/facetracknoir/uielements/xxx_logofacetracknoir.png
index a1a3407b..a1a3407b 100644
--- a/facetracknoir/UIElements/logoFaceTrackNoIR.png
+++ b/facetracknoir/uielements/xxx_logofacetracknoir.png
Binary files differ
diff --git a/facetracknoir/UIElements/logoFaceTrackNoIR60px.png b/facetracknoir/uielements/xxx_logofacetracknoir60px.png
index f01f6024..f01f6024 100644
--- a/facetracknoir/UIElements/logoFaceTrackNoIR60px.png
+++ b/facetracknoir/uielements/xxx_logofacetracknoir60px.png
Binary files differ
diff --git a/facetracknoir/UIElements/Tools.png b/facetracknoir/uielements/xxx_tools.png
index 2da8f9f5..2da8f9f5 100644
--- a/facetracknoir/UIElements/Tools.png
+++ b/facetracknoir/uielements/xxx_tools.png
Binary files differ
diff --git a/facetracknoir/FaceApp.cpp b/facetracknoir/xxx_faceapp.cpp
index 2811974c..2811974c 100644
--- a/facetracknoir/FaceApp.cpp
+++ b/facetracknoir/xxx_faceapp.cpp
diff --git a/facetracknoir/FaceApp.h b/facetracknoir/xxx_faceapp.h
index 39fd4b2f..39fd4b2f 100644
--- a/facetracknoir/FaceApp.h
+++ b/facetracknoir/xxx_faceapp.h
diff --git a/facetracknoir/FaceTrackNoIR.cpp b/facetracknoir/xxx_facetracknoir.cpp
index cd4e0a4d..cd4e0a4d 100644
--- a/facetracknoir/FaceTrackNoIR.cpp
+++ b/facetracknoir/xxx_facetracknoir.cpp
diff --git a/facetracknoir/FaceTrackNoIR.h b/facetracknoir/xxx_facetracknoir.h
index 756b5867..756b5867 100644
--- a/facetracknoir/FaceTrackNoIR.h
+++ b/facetracknoir/xxx_facetracknoir.h
diff --git a/facetracknoir/images/FaceTrackNoIR.ico b/facetracknoir/xxx_facetracknoir.ico
index 5115066c..5115066c 100644
--- a/facetracknoir/images/FaceTrackNoIR.ico
+++ b/facetracknoir/xxx_facetracknoir.ico
Binary files differ
diff --git a/facetracknoir/FaceTrackNoIR.qrc b/facetracknoir/xxx_facetracknoir.qrc
index 60e4da7b..60e4da7b 100644
--- a/facetracknoir/FaceTrackNoIR.qrc
+++ b/facetracknoir/xxx_facetracknoir.qrc
diff --git a/facetracknoir/FaceTrackNoIR.rc b/facetracknoir/xxx_facetracknoir.rc
index ed8a68c1..ed8a68c1 100644
--- a/facetracknoir/FaceTrackNoIR.rc
+++ b/facetracknoir/xxx_facetracknoir.rc
diff --git a/facetracknoir/FaceTrackNoIR.ui b/facetracknoir/xxx_facetracknoir.ui
index 8c3db4a4..8c3db4a4 100644
--- a/facetracknoir/FaceTrackNoIR.ui
+++ b/facetracknoir/xxx_facetracknoir.ui
diff --git a/facetracknoir/FSUIPCServer.cpp b/facetracknoir/xxx_fsuipcserver.cpp
index 3006b430..3006b430 100644
--- a/facetracknoir/FSUIPCServer.cpp
+++ b/facetracknoir/xxx_fsuipcserver.cpp
diff --git a/facetracknoir/FSUIPCServer.h b/facetracknoir/xxx_fsuipcserver.h
index caba2f33..caba2f33 100644
--- a/facetracknoir/FSUIPCServer.h
+++ b/facetracknoir/xxx_fsuipcserver.h
diff --git a/facetracknoir/FTNoIR_Curves.ui b/facetracknoir/xxx_ftnoir_curves.ui
index 19c68cf0..19c68cf0 100644
--- a/facetracknoir/FTNoIR_Curves.ui
+++ b/facetracknoir/xxx_ftnoir_curves.ui
diff --git a/facetracknoir/FTNoIR_FSUIPCcontrols.ui b/facetracknoir/xxx_ftnoir_fsuipccontrols.ui
index b6120378..b6120378 100644
--- a/facetracknoir/FTNoIR_FSUIPCcontrols.ui
+++ b/facetracknoir/xxx_ftnoir_fsuipccontrols.ui
diff --git a/facetracknoir/FTNoIR_FTNServerControls.ui b/facetracknoir/xxx_ftnoir_ftnservercontrols.ui
index 44c7e99f..44c7e99f 100644
--- a/facetracknoir/FTNoIR_FTNServerControls.ui
+++ b/facetracknoir/xxx_ftnoir_ftnservercontrols.ui
diff --git a/facetracknoir/FTNoIR_KeyboardShortcuts.ui b/facetracknoir/xxx_ftnoir_keyboardshortcuts.ui
index 2a5ad691..2a5ad691 100644
--- a/facetracknoir/FTNoIR_KeyboardShortcuts.ui
+++ b/facetracknoir/xxx_ftnoir_keyboardshortcuts.ui
diff --git a/facetracknoir/FTNoIR_Preferences.ui b/facetracknoir/xxx_ftnoir_preferences.ui
index bb440fc6..bb440fc6 100644
--- a/facetracknoir/FTNoIR_Preferences.ui
+++ b/facetracknoir/xxx_ftnoir_preferences.ui
diff --git a/facetracknoir/FTNServer.cpp b/facetracknoir/xxx_ftnserver.cpp
index 101d06a5..101d06a5 100644
--- a/facetracknoir/FTNServer.cpp
+++ b/facetracknoir/xxx_ftnserver.cpp
diff --git a/facetracknoir/FTNServer.h b/facetracknoir/xxx_ftnserver.h
index f392e708..f392e708 100644
--- a/facetracknoir/FTNServer.h
+++ b/facetracknoir/xxx_ftnserver.h
diff --git a/facetracknoir/main.cpp b/facetracknoir/xxx_main.cpp
index 6e0549d7..6e0549d7 100644
--- a/facetracknoir/main.cpp
+++ b/facetracknoir/xxx_main.cpp
diff --git a/facetracknoir/paintwidget.h b/facetracknoir/xxx_paintwidget.h
index e69de29b..e69de29b 100644
--- a/facetracknoir/paintwidget.h
+++ b/facetracknoir/xxx_paintwidget.h
diff --git a/facetracknoir/postbuild.bat b/facetracknoir/xxx_postbuild.bat
index 6653067e..6653067e 100644
--- a/facetracknoir/postbuild.bat
+++ b/facetracknoir/xxx_postbuild.bat
diff --git a/facetracknoir/Readme.txt b/facetracknoir/xxx_readme.txt
index 8bd28966..8bd28966 100644
--- a/facetracknoir/Readme.txt
+++ b/facetracknoir/xxx_readme.txt
diff --git a/facetracknoir/Readme_Update_20100615.txt b/facetracknoir/xxx_readme_update_20100615.txt
index e43d954c..e43d954c 100644
--- a/facetracknoir/Readme_Update_20100615.txt
+++ b/facetracknoir/xxx_readme_update_20100615.txt
diff --git a/facetracknoir/Readme_Update_20100716.txt b/facetracknoir/xxx_readme_update_20100716.txt
index e99111a1..e99111a1 100644
--- a/facetracknoir/Readme_Update_20100716.txt
+++ b/facetracknoir/xxx_readme_update_20100716.txt
diff --git a/facetracknoir/Readme_Update_20100822.txt b/facetracknoir/xxx_readme_update_20100822.txt
index e121fe9f..e121fe9f 100644
--- a/facetracknoir/Readme_Update_20100822.txt
+++ b/facetracknoir/xxx_readme_update_20100822.txt
diff --git a/facetracknoir/resource.h b/facetracknoir/xxx_resource.h
index 75059fe3..75059fe3 100644
--- a/facetracknoir/resource.h
+++ b/facetracknoir/xxx_resource.h
diff --git a/facetracknoir/rotation.cpp b/facetracknoir/xxx_rotation.cpp
index 1c89d775..1c89d775 100644
--- a/facetracknoir/rotation.cpp
+++ b/facetracknoir/xxx_rotation.cpp
diff --git a/facetracknoir/rotation.h b/facetracknoir/xxx_rotation.h
index 967d6661..967d6661 100644
--- a/facetracknoir/rotation.h
+++ b/facetracknoir/xxx_rotation.h
diff --git a/facetracknoir/spot.h b/facetracknoir/xxx_spot.h
index 38518c74..38518c74 100644
--- a/facetracknoir/spot.h
+++ b/facetracknoir/xxx_spot.h
diff --git a/facetracknoir/tracker.cpp b/facetracknoir/xxx_tracker.cpp
index 5396c95b..5396c95b 100644
--- a/facetracknoir/tracker.cpp
+++ b/facetracknoir/xxx_tracker.cpp
diff --git a/facetracknoir/tracker.h b/facetracknoir/xxx_tracker.h
index 4b161293..4b161293 100644
--- a/facetracknoir/tracker.h
+++ b/facetracknoir/xxx_tracker.h
diff --git a/facetracknoir/tracker_types.cpp b/facetracknoir/xxx_tracker_types.cpp
index cdd8d239..cdd8d239 100644
--- a/facetracknoir/tracker_types.cpp
+++ b/facetracknoir/xxx_tracker_types.cpp
diff --git a/facetracknoir/tracker_types.h b/facetracknoir/xxx_tracker_types.h
index 5a13af85..5a13af85 100644
--- a/facetracknoir/tracker_types.h
+++ b/facetracknoir/xxx_tracker_types.h
diff --git a/freetrackclient/freetrackclient/postbuild.bat b/freetrackclient/freetrackclient/postbuild.bat
new file mode 100644
index 00000000..185fc705
--- /dev/null
+++ b/freetrackclient/freetrackclient/postbuild.bat
@@ -0,0 +1,15 @@
+@echo off
+rem Copies required DLL files into output folder.
+
+setlocal
+set COPY=xcopy /D /S /C /I /H /R /Y
+set FILTER=find /v "File(s) copied"
+
+echo parameters %1 en %2
+
+set API_BIN=%1
+set FTN_BIN=%2
+
+%COPY% %API_BIN%\*.dll %FTN_BIN%\ | %FILTER%
+exit /b 0
+
diff --git a/freetrackclient/freetrackclient/resource.h b/freetrackclient/freetrackclient/resource.h
new file mode 100644
index 00000000..3a7fab32
--- /dev/null
+++ b/freetrackclient/freetrackclient/resource.h
@@ -0,0 +1,15 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by FreeTrackClient.rc
+//
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 101
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1001
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/freetrackclient/FreeTrackClient/FreeTrackClient.cpp b/freetrackclient/freetrackclient/xxx_freetrackclient.cpp
index e02f2fe8..ac6148e8 100644
--- a/freetrackclient/FreeTrackClient/FreeTrackClient.cpp
+++ b/freetrackclient/freetrackclient/xxx_freetrackclient.cpp
@@ -1,294 +1,294 @@
-/********************************************************************************
-* FreeTrackClientDll Implements the FreeTrack 2.0 interface for FT-enabled *
-* games. *
-* It uses the FreeTrack protocol (memory mapping) to *
-* receive data from FaceTrackNoIR (or FreeTrack, or ...). *
-* *
-* Copyright (C) 2013 Wim Vriend (Developing) *
-* Ron Hendriks (Testing and Research) *
-* *
-* Homepage <http://facetracknoir.sourceforge.net/home/default.htm> *
-* *
-* This program is free software; you can redistribute it and/or modify it *
-* under the terms of the GNU General Public License as published by the *
-* Free Software Foundation; either version 3 of the License, or (at your *
-* option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, but *
-* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
-* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
-* more details. *
-* *
-* You should have received a copy of the GNU General Public License along *
-* with this program; if not, see <http://www.gnu.org/licenses/>. *
-* *
-********************************************************************************/
-/*
- Modifications (last one on top):
-
- 20130208 - WVR: The old DLL from FreeTrack seems to crash ArmA2. And we need 64-bit support.
-
-*/
-
-#ifdef WIN64
-#pragma comment(linker, "/export:FTGetData")
-#pragma comment(linker, "/export:FTReportName")
-#pragma comment(linker, "/export:FTGetDllVersion")
-#pragma comment(linker, "/export:FTProvider")
-#endif
-
-#ifdef WIN64
-# define FT_DECLSPEC __declspec(dllexport)
-#else
-# define FT_DECLSPEC
-#endif
-
-#define FT_EXPORT(t) extern "C" t FT_DECLSPEC __stdcall
-#define NP_AXIS_MAX 16383
-
-#include <stdarg.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <windows.h>
-#include <tchar.h>
-
-#include "..\..\FTNOIR_PROTOCOL_FT\FTTypes.h"
-
-//
-// Functions to create/open the file-mapping
-// and to destroy it again.
-//
-bool FTCreateMapping();
-void FTDestroyMapping();
-float scale2AnalogLimits( float x, float min_x, float max_x );
-float getDegreesFromRads ( float rads );
-
-#if 1
-static FILE *debug_stream = fopen("c:\\FreeTrackClient.log", "a");
-#define dbg_report(...) if (debug_stream) { fprintf(debug_stream, __VA_ARGS__); fflush(debug_stream); }
-#else
-#define dbg_report(...)
-#endif
-
-//
-// Handles to 'handle' the memory mapping
-//
-static HANDLE hFTMemMap = 0;
-static FTMemMap *pMemData = 0;
-static HANDLE hFTMutex = 0;
-static char* dllVersion = "1.0.0.0";
-static char* dllProvider = "FreeTrack";
-
-static unsigned short gameid = 0;
-
-//
-// DllMain gets called, when the DLL is (un)loaded or a process attaches.
-//
-BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
-{
- switch (fdwReason) {
- case DLL_PROCESS_ATTACH:
-#ifdef WIN64
- dbg_report("\n= WIN64 =========================================================================================\n");
-#else
- dbg_report("\n= WIN32 =========================================================================================\n");
-#endif
- dbg_report("DllMain: (0x%p, %d, %p)\n", hinstDLL, fdwReason, lpvReserved);
- dbg_report("DllMain: Attach request\n");
- DisableThreadLibraryCalls(hinstDLL);
- break;
-
- case DLL_PROCESS_DETACH:
- dbg_report("DllMain: Detach\n");
- dbg_report("DllMain: (0x%p, %d, %p)\n", hinstDLL, fdwReason, lpvReserved);
- dbg_report("==========================================================================================\n");
- break;
- }
- return TRUE;
-}
-
-/******************************************************************
- * FTGetData (FreeTrackClient.1)
- */
-#pragma comment(linker, "/export:FTGetData@4=FTGetData")
-FT_EXPORT(bool) FTGetData(PFreetrackData data)
-{
- static int frame = 0;
- static int prevDataID = 0;
- static int dlyTrackingOff = 0;
- static int tracking = 0;
-
-// dbg_report("NP_GetData called.");
- if (FTCreateMapping() == false) return false;
-
- if (hFTMutex && WaitForSingleObject(hFTMutex, 5) == WAIT_OBJECT_0) {
- if (pMemData) {
-
- //
- // When FaceTrackNoIR does not update frames (any more), don't update the data.
- //
- if (prevDataID != pMemData->data.DataID) {
- memcpy(data, &pMemData->data, sizeof(TFreeTrackData));
- dlyTrackingOff = 0;
- }
- else {
- dlyTrackingOff++;
- if (dlyTrackingOff > 20) {
- dlyTrackingOff = 100;
- tracking = false;
- }
- }
- prevDataID = pMemData->data.DataID;
-
- //
- // Limit the range of DataID
- //
- if (pMemData->data.DataID > 1000) {
- pMemData->data.DataID = 0;
- }
- data->DataID = pMemData->data.DataID;
-
- //
- // Send the ID to FaceTrackNoIR, so it can display the game-name.
- // This could be a FreeTrack-specific ID
- //
- sprintf_s(pMemData->GameID, 19, "%d", gameid );
-
- }
- ReleaseMutex(hFTMutex);
- }
- return true;
-}
-
-/******************************************************************
- * FTReportName (FreeTrackClient.2)
- */
-#pragma comment(linker, "/export:FTReportName@4=FTReportName")
-//
-// For some mysterious reason, the previously existing function FTReportID has been changed to FTReportName, but with an integer as argument.
-// The Delphi-code from the FreeTrack repo suggest a char * as argument, so it cost me an afternoon to figure it out (and keep ArmA2 from crashing).
-// Thanks guys!
-//
-FT_EXPORT(void) FTReportName( int name )
-{
- dbg_report("FTReportName request (ID = %d).\n", name);
- gameid = name; // They might have really passed the name here... but they didn't!
- return;
-}
-
-/******************************************************************
- * FTGetDllVersion (FreeTrackClient.3)
- */
-#pragma comment(linker, "/export:FTGetDllVersion@0=FTGetDllVersion")
-extern "C" __declspec( dllexport ) char* FTGetDllVersion(void)
-{
- dbg_report("FTGetDllVersion request.\n");
-
- return dllVersion;
-}
-
-/******************************************************************
- * FTProvider (FreeTrackClient.4)
- */
-#pragma comment(linker, "/export:FTProvider@0=FTProvider")
-extern "C" __declspec( dllexport ) char* FTProvider(void)
-{
- dbg_report("FTProvider request.\n");
-
- return dllProvider;
-}
-
-//
-// Create a memory-mapping to the Freetrack data.
-// It contains the tracking data, a handle to the main-window and the program-name of the Game!
-//
-//
-bool FTCreateMapping()
-{
- bool bMappingExists = false;
- PDWORD_PTR MsgResult = 0;
-
- //
- // Memory-mapping already exists!
- //
- if ( pMemData != NULL ) {
- return true;
- }
-
- dbg_report("FTCreateMapping request (pMemData == NULL).\n");
-
- //
- // A FileMapping is used to create 'shared memory' between the FTClient and the FTServer.
- //
- // Try to create a FileMapping to the Shared Memory. This is done to check if it's already there (what
- // may mean the face-tracker program is already running).
- //
- // If one already exists: close it and open the file-mapping to the existing one.
- //
- hFTMemMap = CreateFileMappingA( INVALID_HANDLE_VALUE , 00 , PAGE_READWRITE , 0 ,
- sizeof( FTMemMap ),
- (LPCSTR) FT_MM_DATA );
-
- if ( ( hFTMemMap != 0 ) && ( GetLastError() == ERROR_ALREADY_EXISTS ) ) {
- dbg_report("FTCreateMapping: Mapping already exists.\n");
- bMappingExists = true; // So the server was (probably) already started!
- CloseHandle( hFTMemMap );
- hFTMemMap = 0;
- }
-
- //
- // Create a new FileMapping, Read/Write access
- //
- hFTMemMap = OpenFileMappingA( FILE_MAP_ALL_ACCESS , false , (LPCSTR) FT_MM_DATA );
- if ( ( hFTMemMap != 0 ) ) {
- dbg_report("FTCreateMapping: Mapping opened.\n");
- pMemData = (FTMemMap *) MapViewOfFile(hFTMemMap, FILE_MAP_ALL_ACCESS, 0, 0, sizeof( FTMemMap ) );
- hFTMutex = CreateMutexA(NULL, false, FREETRACK_MUTEX);
- }
- else {
- return false;
- }
- return true;
-}
-
-//
-// Destory the FileMapping to the shared memory
-//
-void FTDestroyMapping()
-{
- if ( pMemData != NULL ) {
- UnmapViewOfFile ( pMemData );
- }
-
- CloseHandle( hFTMutex );
- CloseHandle( hFTMemMap );
- pMemData = 0;
- hFTMemMap = 0;
-}
-
-//
-// 4 convenience
-//
-float getDegreesFromRads ( float rads ) {
- return (rads * 57.295781f);
-}
-
-//
-// Scale the measured value to the TIR values
-//
-float scale2AnalogLimits( float x, float min_x, float max_x ) {
-double y;
-double local_x;
-
- local_x = x;
- if (local_x > max_x) {
- local_x = max_x;
- }
- if (local_x < min_x) {
- local_x = min_x;
- }
- y = ( NP_AXIS_MAX * local_x ) / max_x;
-
- return (float) y;
-}
+/********************************************************************************
+* FreeTrackClientDll Implements the FreeTrack 2.0 interface for FT-enabled *
+* games. *
+* It uses the FreeTrack protocol (memory mapping) to *
+* receive data from FaceTrackNoIR (or FreeTrack, or ...). *
+* *
+* Copyright (C) 2013 Wim Vriend (Developing) *
+* Ron Hendriks (Testing and Research) *
+* *
+* Homepage <http://facetracknoir.sourceforge.net/home/default.htm> *
+* *
+* This program is free software; you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the *
+* Free Software Foundation; either version 3 of the License, or (at your *
+* option) any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but *
+* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
+* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along *
+* with this program; if not, see <http://www.gnu.org/licenses/>. *
+* *
+********************************************************************************/
+/*
+ Modifications (last one on top):
+
+ 20130208 - WVR: The old DLL from FreeTrack seems to crash ArmA2. And we need 64-bit support.
+
+*/
+
+#ifdef WIN64
+#pragma comment(linker, "/export:FTGetData")
+#pragma comment(linker, "/export:FTReportName")
+#pragma comment(linker, "/export:FTGetDllVersion")
+#pragma comment(linker, "/export:FTProvider")
+#endif
+
+#ifdef WIN64
+# define FT_DECLSPEC __declspec(dllexport)
+#else
+# define FT_DECLSPEC
+#endif
+
+#define FT_EXPORT(t) extern "C" t FT_DECLSPEC __stdcall
+#define NP_AXIS_MAX 16383
+
+#include <stdarg.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <windows.h>
+#include <tchar.h>
+
+#include "..\..\FTNOIR_PROTOCOL_FT\FTTypes.h"
+
+//
+// Functions to create/open the file-mapping
+// and to destroy it again.
+//
+bool FTCreateMapping();
+void FTDestroyMapping();
+float scale2AnalogLimits( float x, float min_x, float max_x );
+float getDegreesFromRads ( float rads );
+
+#if 1
+static FILE *debug_stream = fopen("c:\\FreeTrackClient.log", "a");
+#define dbg_report(...) if (debug_stream) { fprintf(debug_stream, __VA_ARGS__); fflush(debug_stream); }
+#else
+#define dbg_report(...)
+#endif
+
+//
+// Handles to 'handle' the memory mapping
+//
+static HANDLE hFTMemMap = 0;
+static FTMemMap *pMemData = 0;
+static HANDLE hFTMutex = 0;
+static char* dllVersion = "1.0.0.0";
+static char* dllProvider = "FreeTrack";
+
+static unsigned short gameid = 0;
+
+//
+// DllMain gets called, when the DLL is (un)loaded or a process attaches.
+//
+BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
+{
+ switch (fdwReason) {
+ case DLL_PROCESS_ATTACH:
+#ifdef WIN64
+ dbg_report("\n= WIN64 =========================================================================================\n");
+#else
+ dbg_report("\n= WIN32 =========================================================================================\n");
+#endif
+ dbg_report("DllMain: (0x%p, %d, %p)\n", hinstDLL, fdwReason, lpvReserved);
+ dbg_report("DllMain: Attach request\n");
+ DisableThreadLibraryCalls(hinstDLL);
+ break;
+
+ case DLL_PROCESS_DETACH:
+ dbg_report("DllMain: Detach\n");
+ dbg_report("DllMain: (0x%p, %d, %p)\n", hinstDLL, fdwReason, lpvReserved);
+ dbg_report("==========================================================================================\n");
+ break;
+ }
+ return TRUE;
+}
+
+/******************************************************************
+ * FTGetData (FreeTrackClient.1)
+ */
+#pragma comment(linker, "/export:FTGetData@4=FTGetData")
+FT_EXPORT(bool) FTGetData(PFreetrackData data)
+{
+ static int frame = 0;
+ static int prevDataID = 0;
+ static int dlyTrackingOff = 0;
+ static int tracking = 0;
+
+// dbg_report("NP_GetData called.");
+ if (FTCreateMapping() == false) return false;
+
+ if (hFTMutex && WaitForSingleObject(hFTMutex, 5) == WAIT_OBJECT_0) {
+ if (pMemData) {
+
+ //
+ // When FaceTrackNoIR does not update frames (any more), don't update the data.
+ //
+ if (prevDataID != pMemData->data.DataID) {
+ memcpy(data, &pMemData->data, sizeof(TFreeTrackData));
+ dlyTrackingOff = 0;
+ }
+ else {
+ dlyTrackingOff++;
+ if (dlyTrackingOff > 20) {
+ dlyTrackingOff = 100;
+ tracking = false;
+ }
+ }
+ prevDataID = pMemData->data.DataID;
+
+ //
+ // Limit the range of DataID
+ //
+ if (pMemData->data.DataID > 1000) {
+ pMemData->data.DataID = 0;
+ }
+ data->DataID = pMemData->data.DataID;
+
+ //
+ // Send the ID to FaceTrackNoIR, so it can display the game-name.
+ // This could be a FreeTrack-specific ID
+ //
+ sprintf_s(pMemData->GameID, 19, "%d", gameid );
+
+ }
+ ReleaseMutex(hFTMutex);
+ }
+ return true;
+}
+
+/******************************************************************
+ * FTReportName (FreeTrackClient.2)
+ */
+#pragma comment(linker, "/export:FTReportName@4=FTReportName")
+//
+// For some mysterious reason, the previously existing function FTReportID has been changed to FTReportName, but with an integer as argument.
+// The Delphi-code from the FreeTrack repo suggest a char * as argument, so it cost me an afternoon to figure it out (and keep ArmA2 from crashing).
+// Thanks guys!
+//
+FT_EXPORT(void) FTReportName( int name )
+{
+ dbg_report("FTReportName request (ID = %d).\n", name);
+ gameid = name; // They might have really passed the name here... but they didn't!
+ return;
+}
+
+/******************************************************************
+ * FTGetDllVersion (FreeTrackClient.3)
+ */
+#pragma comment(linker, "/export:FTGetDllVersion@0=FTGetDllVersion")
+extern "C" __declspec( dllexport ) char* FTGetDllVersion(void)
+{
+ dbg_report("FTGetDllVersion request.\n");
+
+ return dllVersion;
+}
+
+/******************************************************************
+ * FTProvider (FreeTrackClient.4)
+ */
+#pragma comment(linker, "/export:FTProvider@0=FTProvider")
+extern "C" __declspec( dllexport ) char* FTProvider(void)
+{
+ dbg_report("FTProvider request.\n");
+
+ return dllProvider;
+}
+
+//
+// Create a memory-mapping to the Freetrack data.
+// It contains the tracking data, a handle to the main-window and the program-name of the Game!
+//
+//
+bool FTCreateMapping()
+{
+ bool bMappingExists = false;
+ PDWORD_PTR MsgResult = 0;
+
+ //
+ // Memory-mapping already exists!
+ //
+ if ( pMemData != NULL ) {
+ return true;
+ }
+
+ dbg_report("FTCreateMapping request (pMemData == NULL).\n");
+
+ //
+ // A FileMapping is used to create 'shared memory' between the FTClient and the FTServer.
+ //
+ // Try to create a FileMapping to the Shared Memory. This is done to check if it's already there (what
+ // may mean the face-tracker program is already running).
+ //
+ // If one already exists: close it and open the file-mapping to the existing one.
+ //
+ hFTMemMap = CreateFileMappingA( INVALID_HANDLE_VALUE , 00 , PAGE_READWRITE , 0 ,
+ sizeof( FTMemMap ),
+ (LPCSTR) FT_MM_DATA );
+
+ if ( ( hFTMemMap != 0 ) && ( GetLastError() == ERROR_ALREADY_EXISTS ) ) {
+ dbg_report("FTCreateMapping: Mapping already exists.\n");
+ bMappingExists = true; // So the server was (probably) already started!
+ CloseHandle( hFTMemMap );
+ hFTMemMap = 0;
+ }
+
+ //
+ // Create a new FileMapping, Read/Write access
+ //
+ hFTMemMap = OpenFileMappingA( FILE_MAP_ALL_ACCESS , false , (LPCSTR) FT_MM_DATA );
+ if ( ( hFTMemMap != 0 ) ) {
+ dbg_report("FTCreateMapping: Mapping opened.\n");
+ pMemData = (FTMemMap *) MapViewOfFile(hFTMemMap, FILE_MAP_ALL_ACCESS, 0, 0, sizeof( FTMemMap ) );
+ hFTMutex = CreateMutexA(NULL, false, FREETRACK_MUTEX);
+ }
+ else {
+ return false;
+ }
+ return true;
+}
+
+//
+// Destory the FileMapping to the shared memory
+//
+void FTDestroyMapping()
+{
+ if ( pMemData != NULL ) {
+ UnmapViewOfFile ( pMemData );
+ }
+
+ CloseHandle( hFTMutex );
+ CloseHandle( hFTMemMap );
+ pMemData = 0;
+ hFTMemMap = 0;
+}
+
+//
+// 4 convenience
+//
+float getDegreesFromRads ( float rads ) {
+ return (rads * 57.295781f);
+}
+
+//
+// Scale the measured value to the TIR values
+//
+float scale2AnalogLimits( float x, float min_x, float max_x ) {
+double y;
+double local_x;
+
+ local_x = x;
+ if (local_x > max_x) {
+ local_x = max_x;
+ }
+ if (local_x < min_x) {
+ local_x = min_x;
+ }
+ y = ( NP_AXIS_MAX * local_x ) / max_x;
+
+ return (float) y;
+}
diff --git a/freetrackclient/FreeTrackClient/FreeTrackClient.rc b/freetrackclient/freetrackclient/xxx_freetrackclient.rc
index 299beb82..046eef1b 100644
--- a/freetrackclient/FreeTrackClient/FreeTrackClient.rc
+++ b/freetrackclient/freetrackclient/xxx_freetrackclient.rc
@@ -1,103 +1,103 @@
-// Microsoft Visual C++ generated resource script.
-//
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include "afxres.h"
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// Dutch (Netherlands) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NLD)
-#ifdef _WIN32
-LANGUAGE LANG_DUTCH, SUBLANG_DUTCH
-#pragma code_page(1252)
-#endif //_WIN32
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE
-BEGIN
- "resource.h\0"
-END
-
-2 TEXTINCLUDE
-BEGIN
- "#include ""afxres.h""\r\n"
- "\0"
-END
-
-3 TEXTINCLUDE
-BEGIN
- "\r\n"
- "\0"
-END
-
-#endif // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,0,0,1
- PRODUCTVERSION 1,0,0,1
- FILEFLAGSMASK 0x17L
-#ifdef _DEBUG
- FILEFLAGS 0x1L
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS 0x4L
- FILETYPE 0x2L
- FILESUBTYPE 0x0L
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "041304b0"
- BEGIN
- VALUE "Comments", "FreeTrack interface for FaceTrackNoIR."
- VALUE "CompanyName", "FaceTrackNoIR Team"
- VALUE "FileDescription", "64-bit interface for FreeTrack-enables games."
- VALUE "FileVersion", "1, 0, 0, 1"
- VALUE "InternalName", "FreeTrackClient"
- VALUE "LegalCopyright", "Copyright (C) 2013, FaceTrackNoIR Team"
- VALUE "OriginalFilename", "FreeTrackClient64.dll"
- VALUE "ProductName", "Interface DLL for FreeTrack 2.0"
- VALUE "ProductVersion", "1, 0, 0, 1"
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x413, 1200
- END
-END
-
-#endif // Dutch (Netherlands) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // not APSTUDIO_INVOKED
-
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Dutch (Netherlands) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NLD)
+#ifdef _WIN32
+LANGUAGE LANG_DUTCH, SUBLANG_DUTCH
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+ "#include ""afxres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,1
+ PRODUCTVERSION 1,0,0,1
+ FILEFLAGSMASK 0x17L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "041304b0"
+ BEGIN
+ VALUE "Comments", "FreeTrack interface for FaceTrackNoIR."
+ VALUE "CompanyName", "FaceTrackNoIR Team"
+ VALUE "FileDescription", "64-bit interface for FreeTrack-enables games."
+ VALUE "FileVersion", "1, 0, 0, 1"
+ VALUE "InternalName", "FreeTrackClient"
+ VALUE "LegalCopyright", "Copyright (C) 2013, FaceTrackNoIR Team"
+ VALUE "OriginalFilename", "FreeTrackClient64.dll"
+ VALUE "ProductName", "Interface DLL for FreeTrack 2.0"
+ VALUE "ProductVersion", "1, 0, 0, 1"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x413, 1200
+ END
+END
+
+#endif // Dutch (Netherlands) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/freetrackclient/FTClient.cpp b/freetrackclient/xxx_ftclient.cpp
index d48a2c28..d48a2c28 100644
--- a/freetrackclient/FTClient.cpp
+++ b/freetrackclient/xxx_ftclient.cpp
diff --git a/freetrackclient/FTClient.h b/freetrackclient/xxx_ftclient.h
index 406e1237..406e1237 100644
--- a/freetrackclient/FTClient.h
+++ b/freetrackclient/xxx_ftclient.h
diff --git a/ftnoir_filter_accela/images/filter-16-ac.png b/ftnoir_filter_accela/images/xxx_filter-16-ac.png
index d263db2d..d263db2d 100644
--- a/ftnoir_filter_accela/images/filter-16-ac.png
+++ b/ftnoir_filter_accela/images/xxx_filter-16-ac.png
Binary files differ
diff --git a/ftnoir_filter_accela/Filter.qrc b/ftnoir_filter_accela/xxx_filter.qrc
index 9a7d75fa..9a7d75fa 100644
--- a/ftnoir_filter_accela/Filter.qrc
+++ b/ftnoir_filter_accela/xxx_filter.qrc
diff --git a/ftnoir_filter_accela/ftnoir_filter_accela.cpp b/ftnoir_filter_accela/xxx_ftnoir_filter_accela.cpp
index 3e4c3bf6..3e4c3bf6 100644
--- a/ftnoir_filter_accela/ftnoir_filter_accela.cpp
+++ b/ftnoir_filter_accela/xxx_ftnoir_filter_accela.cpp
diff --git a/ftnoir_filter_accela/FTNoIR_Filter_accela.h b/ftnoir_filter_accela/xxx_ftnoir_filter_accela.h
index 77aa59ea..77aa59ea 100644
--- a/ftnoir_filter_accela/FTNoIR_Filter_accela.h
+++ b/ftnoir_filter_accela/xxx_ftnoir_filter_accela.h
diff --git a/ftnoir_filter_accela/ftnoir_filter_accela_dialog.cpp b/ftnoir_filter_accela/xxx_ftnoir_filter_accela_dialog.cpp
index c230eed8..c230eed8 100644
--- a/ftnoir_filter_accela/ftnoir_filter_accela_dialog.cpp
+++ b/ftnoir_filter_accela/xxx_ftnoir_filter_accela_dialog.cpp
diff --git a/ftnoir_filter_accela/ftnoir_filter_accela_dll.cpp b/ftnoir_filter_accela/xxx_ftnoir_filter_accela_dll.cpp
index e1452bf2..e1452bf2 100644
--- a/ftnoir_filter_accela/ftnoir_filter_accela_dll.cpp
+++ b/ftnoir_filter_accela/xxx_ftnoir_filter_accela_dll.cpp
diff --git a/ftnoir_filter_accela/FTNoIR_FilterControls.ui b/ftnoir_filter_accela/xxx_ftnoir_filtercontrols.ui
index af6522ce..af6522ce 100644
--- a/ftnoir_filter_accela/FTNoIR_FilterControls.ui
+++ b/ftnoir_filter_accela/xxx_ftnoir_filtercontrols.ui
diff --git a/ftnoir_filter_base/ftnoir_filter_base.h b/ftnoir_filter_base/xxx_ftnoir_filter_base.h
index 44ce3d72..44ce3d72 100644
--- a/ftnoir_filter_base/ftnoir_filter_base.h
+++ b/ftnoir_filter_base/xxx_ftnoir_filter_base.h
diff --git a/ftnoir_filter_base/ftnoir_filter_base_global.h b/ftnoir_filter_base/xxx_ftnoir_filter_base_global.h
index aac4048e..aac4048e 100644
--- a/ftnoir_filter_base/ftnoir_filter_base_global.h
+++ b/ftnoir_filter_base/xxx_ftnoir_filter_base_global.h
diff --git a/ftnoir_filter_ewma2/images/filter-16.png b/ftnoir_filter_ewma2/images/xxx_filter-16.png
index ecde6a10..ecde6a10 100644
--- a/ftnoir_filter_ewma2/images/filter-16.png
+++ b/ftnoir_filter_ewma2/images/xxx_filter-16.png
Binary files differ
diff --git a/ftnoir_filter_ewma2/images/filter-32.png b/ftnoir_filter_ewma2/images/xxx_filter-32.png
index 12b02caf..12b02caf 100644
--- a/ftnoir_filter_ewma2/images/filter-32.png
+++ b/ftnoir_filter_ewma2/images/xxx_filter-32.png
Binary files differ
diff --git a/ftnoir_filter_ewma2/Filter.qrc b/ftnoir_filter_ewma2/xxx_filter.qrc
index e64ec35a..e64ec35a 100644
--- a/ftnoir_filter_ewma2/Filter.qrc
+++ b/ftnoir_filter_ewma2/xxx_filter.qrc
diff --git a/ftnoir_filter_ewma2/ftnoir_filter_ewma2.cpp b/ftnoir_filter_ewma2/xxx_ftnoir_filter_ewma2.cpp
index fac0e13c..fac0e13c 100644
--- a/ftnoir_filter_ewma2/ftnoir_filter_ewma2.cpp
+++ b/ftnoir_filter_ewma2/xxx_ftnoir_filter_ewma2.cpp
diff --git a/ftnoir_filter_ewma2/FTNoIR_Filter_EWMA2.h b/ftnoir_filter_ewma2/xxx_ftnoir_filter_ewma2.h
index 18afe3bd..18afe3bd 100644
--- a/ftnoir_filter_ewma2/FTNoIR_Filter_EWMA2.h
+++ b/ftnoir_filter_ewma2/xxx_ftnoir_filter_ewma2.h
diff --git a/ftnoir_filter_ewma2/ftnoir_filter_ewma2_dialog.cpp b/ftnoir_filter_ewma2/xxx_ftnoir_filter_ewma2_dialog.cpp
index c7798ac0..c7798ac0 100644
--- a/ftnoir_filter_ewma2/ftnoir_filter_ewma2_dialog.cpp
+++ b/ftnoir_filter_ewma2/xxx_ftnoir_filter_ewma2_dialog.cpp
diff --git a/ftnoir_filter_ewma2/ftnoir_filter_ewma_dll.cpp b/ftnoir_filter_ewma2/xxx_ftnoir_filter_ewma_dll.cpp
index 4e644446..4e644446 100644
--- a/ftnoir_filter_ewma2/ftnoir_filter_ewma_dll.cpp
+++ b/ftnoir_filter_ewma2/xxx_ftnoir_filter_ewma_dll.cpp
diff --git a/ftnoir_filter_ewma2/FTNoIR_FilterControls.ui b/ftnoir_filter_ewma2/xxx_ftnoir_filtercontrols.ui
index e9419a73..e9419a73 100644
--- a/ftnoir_filter_ewma2/FTNoIR_FilterControls.ui
+++ b/ftnoir_filter_ewma2/xxx_ftnoir_filtercontrols.ui
diff --git a/ftnoir_posewidget/images/side1.bmp b/ftnoir_posewidget/images/xxx_side1.bmp
index 29c28d80..29c28d80 100644
--- a/ftnoir_posewidget/images/side1.bmp
+++ b/ftnoir_posewidget/images/xxx_side1.bmp
Binary files differ
diff --git a/ftnoir_posewidget/images/side1.png b/ftnoir_posewidget/images/xxx_side1.png
index e0315b77..e0315b77 100644
--- a/ftnoir_posewidget/images/side1.png
+++ b/ftnoir_posewidget/images/xxx_side1.png
Binary files differ
diff --git a/ftnoir_posewidget/images/side2.png b/ftnoir_posewidget/images/xxx_side2.png
index 67eb060b..67eb060b 100644
--- a/ftnoir_posewidget/images/side2.png
+++ b/ftnoir_posewidget/images/xxx_side2.png
Binary files differ
diff --git a/ftnoir_posewidget/images/side3.png b/ftnoir_posewidget/images/xxx_side3.png
index 67eb060b..67eb060b 100644
--- a/ftnoir_posewidget/images/side3.png
+++ b/ftnoir_posewidget/images/xxx_side3.png
Binary files differ
diff --git a/ftnoir_posewidget/images/side4.png b/ftnoir_posewidget/images/xxx_side4.png
index 67eb060b..67eb060b 100644
--- a/ftnoir_posewidget/images/side4.png
+++ b/ftnoir_posewidget/images/xxx_side4.png
Binary files differ
diff --git a/ftnoir_posewidget/images/side5.png b/ftnoir_posewidget/images/xxx_side5.png
index 67eb060b..67eb060b 100644
--- a/ftnoir_posewidget/images/side5.png
+++ b/ftnoir_posewidget/images/xxx_side5.png
Binary files differ
diff --git a/ftnoir_posewidget/images/side6.png b/ftnoir_posewidget/images/xxx_side6.png
index f4160001..f4160001 100644
--- a/ftnoir_posewidget/images/side6.png
+++ b/ftnoir_posewidget/images/xxx_side6.png
Binary files differ
diff --git a/ftnoir_posewidget/glwidget.cpp b/ftnoir_posewidget/xxx_glwidget.cpp
index 55b65619..55b65619 100644
--- a/ftnoir_posewidget/glwidget.cpp
+++ b/ftnoir_posewidget/xxx_glwidget.cpp
diff --git a/ftnoir_posewidget/glwidget.h b/ftnoir_posewidget/xxx_glwidget.h
index cff8cb83..cff8cb83 100644
--- a/ftnoir_posewidget/glwidget.h
+++ b/ftnoir_posewidget/xxx_glwidget.h
diff --git a/ftnoir_posewidget/PoseWidget.qrc b/ftnoir_posewidget/xxx_posewidget.qrc
index 65038eba..65038eba 100644
--- a/ftnoir_posewidget/PoseWidget.qrc
+++ b/ftnoir_posewidget/xxx_posewidget.qrc
diff --git a/ftnoir_protocol_base/ftnoir_protocol_base.h b/ftnoir_protocol_base/xxx_ftnoir_protocol_base.h
index 3f598d35..3f598d35 100644
--- a/ftnoir_protocol_base/ftnoir_protocol_base.h
+++ b/ftnoir_protocol_base/xxx_ftnoir_protocol_base.h
diff --git a/ftnoir_protocol_base/ftnoir_protocol_base_global.h b/ftnoir_protocol_base/xxx_ftnoir_protocol_base_global.h
index 3527bad7..3527bad7 100644
--- a/ftnoir_protocol_base/ftnoir_protocol_base_global.h
+++ b/ftnoir_protocol_base/xxx_ftnoir_protocol_base_global.h
diff --git a/ftnoir_protocol_fg/images/FlightGear.ico b/ftnoir_protocol_fg/images/xxx_flightgear.ico
index f96c0f88..f96c0f88 100644
--- a/ftnoir_protocol_fg/images/FlightGear.ico
+++ b/ftnoir_protocol_fg/images/xxx_flightgear.ico
Binary files differ
diff --git a/ftnoir_protocol_fg/FGTypes.h b/ftnoir_protocol_fg/xxx_fgtypes.h
index 949dc213..949dc213 100644
--- a/ftnoir_protocol_fg/FGTypes.h
+++ b/ftnoir_protocol_fg/xxx_fgtypes.h
diff --git a/ftnoir_protocol_fg/FTNoIR_FGcontrols.ui b/ftnoir_protocol_fg/xxx_ftnoir_fgcontrols.ui
index 3469e7aa..3469e7aa 100644
--- a/ftnoir_protocol_fg/FTNoIR_FGcontrols.ui
+++ b/ftnoir_protocol_fg/xxx_ftnoir_fgcontrols.ui
diff --git a/ftnoir_protocol_fg/FTNoIR_Protocol_FG.cpp b/ftnoir_protocol_fg/xxx_ftnoir_protocol_fg.cpp
index 5506f534..5506f534 100644
--- a/ftnoir_protocol_fg/FTNoIR_Protocol_FG.cpp
+++ b/ftnoir_protocol_fg/xxx_ftnoir_protocol_fg.cpp
diff --git a/ftnoir_protocol_fg/FTNoIR_Protocol_FG.h b/ftnoir_protocol_fg/xxx_ftnoir_protocol_fg.h
index 34773540..34773540 100644
--- a/ftnoir_protocol_fg/FTNoIR_Protocol_FG.h
+++ b/ftnoir_protocol_fg/xxx_ftnoir_protocol_fg.h
diff --git a/ftnoir_protocol_fg/ftnoir_protocol_fg_dialog.cpp b/ftnoir_protocol_fg/xxx_ftnoir_protocol_fg_dialog.cpp
index 0138a4c1..0138a4c1 100644
--- a/ftnoir_protocol_fg/ftnoir_protocol_fg_dialog.cpp
+++ b/ftnoir_protocol_fg/xxx_ftnoir_protocol_fg_dialog.cpp
diff --git a/ftnoir_protocol_fg/ftnoir_protocol_fg_dll.cpp b/ftnoir_protocol_fg/xxx_ftnoir_protocol_fg_dll.cpp
index ca71063b..ca71063b 100644
--- a/ftnoir_protocol_fg/ftnoir_protocol_fg_dll.cpp
+++ b/ftnoir_protocol_fg/xxx_ftnoir_protocol_fg_dll.cpp
diff --git a/ftnoir_protocol_fg/Protocol.qrc b/ftnoir_protocol_fg/xxx_protocol.qrc
index 1e715ac9..1e715ac9 100644
--- a/ftnoir_protocol_fg/Protocol.qrc
+++ b/ftnoir_protocol_fg/xxx_protocol.qrc
diff --git a/ftnoir_protocol_fsuipc/images/FS9.ico b/ftnoir_protocol_fsuipc/images/xxx_fs9.ico
index 9afd1953..9afd1953 100644
--- a/ftnoir_protocol_fsuipc/images/FS9.ico
+++ b/ftnoir_protocol_fsuipc/images/xxx_fs9.ico
Binary files differ
diff --git a/ftnoir_protocol_fsuipc/FTNoIR_FSUIPCcontrols.ui b/ftnoir_protocol_fsuipc/xxx_ftnoir_fsuipccontrols.ui
index b6120378..b6120378 100644
--- a/ftnoir_protocol_fsuipc/FTNoIR_FSUIPCcontrols.ui
+++ b/ftnoir_protocol_fsuipc/xxx_ftnoir_fsuipccontrols.ui
diff --git a/ftnoir_protocol_fsuipc/FTNoIR_Protocol_FSUIPC.cpp b/ftnoir_protocol_fsuipc/xxx_ftnoir_protocol_fsuipc.cpp
index 5a4663a1..5a4663a1 100644
--- a/ftnoir_protocol_fsuipc/FTNoIR_Protocol_FSUIPC.cpp
+++ b/ftnoir_protocol_fsuipc/xxx_ftnoir_protocol_fsuipc.cpp
diff --git a/ftnoir_protocol_fsuipc/FTNoIR_Protocol_FSUIPC.h b/ftnoir_protocol_fsuipc/xxx_ftnoir_protocol_fsuipc.h
index 8503f6e7..8503f6e7 100644
--- a/ftnoir_protocol_fsuipc/FTNoIR_Protocol_FSUIPC.h
+++ b/ftnoir_protocol_fsuipc/xxx_ftnoir_protocol_fsuipc.h
diff --git a/ftnoir_protocol_fsuipc/ftnoir_protocol_FSUIPC_dialog.cpp b/ftnoir_protocol_fsuipc/xxx_ftnoir_protocol_fsuipc_dialog.cpp
index 08c13c08..08c13c08 100644
--- a/ftnoir_protocol_fsuipc/ftnoir_protocol_FSUIPC_dialog.cpp
+++ b/ftnoir_protocol_fsuipc/xxx_ftnoir_protocol_fsuipc_dialog.cpp
diff --git a/ftnoir_protocol_fsuipc/ftnoir_protocol_FSUIPC_dll.cpp b/ftnoir_protocol_fsuipc/xxx_ftnoir_protocol_fsuipc_dll.cpp
index d61c2d83..d61c2d83 100644
--- a/ftnoir_protocol_fsuipc/ftnoir_protocol_FSUIPC_dll.cpp
+++ b/ftnoir_protocol_fsuipc/xxx_ftnoir_protocol_fsuipc_dll.cpp
diff --git a/ftnoir_protocol_fsuipc/Protocol.qrc b/ftnoir_protocol_fsuipc/xxx_protocol.qrc
index 2830d09a..2830d09a 100644
--- a/ftnoir_protocol_fsuipc/Protocol.qrc
+++ b/ftnoir_protocol_fsuipc/xxx_protocol.qrc
diff --git a/ftnoir_protocol_ft/images/Freetrack.ico b/ftnoir_protocol_ft/images/xxx_freetrack.ico
index 02554c3d..02554c3d 100644
--- a/ftnoir_protocol_ft/images/Freetrack.ico
+++ b/ftnoir_protocol_ft/images/xxx_freetrack.ico
Binary files differ
diff --git a/ftnoir_protocol_ft/csv.cpp b/ftnoir_protocol_ft/xxx_csv.cpp
index 22852f89..22852f89 100644
--- a/ftnoir_protocol_ft/csv.cpp
+++ b/ftnoir_protocol_ft/xxx_csv.cpp
diff --git a/ftnoir_protocol_ft/csv.h b/ftnoir_protocol_ft/xxx_csv.h
index 13231293..13231293 100644
--- a/ftnoir_protocol_ft/csv.h
+++ b/ftnoir_protocol_ft/xxx_csv.h
diff --git a/ftnoir_protocol_ft/FTNoIR_FTcontrols.ui b/ftnoir_protocol_ft/xxx_ftnoir_ftcontrols.ui
index fc5abbcf..fc5abbcf 100644
--- a/ftnoir_protocol_ft/FTNoIR_FTcontrols.ui
+++ b/ftnoir_protocol_ft/xxx_ftnoir_ftcontrols.ui
diff --git a/ftnoir_protocol_ft/FTNoIR_Protocol_FT.cpp b/ftnoir_protocol_ft/xxx_ftnoir_protocol_ft.cpp
index b8461993..b8461993 100644
--- a/ftnoir_protocol_ft/FTNoIR_Protocol_FT.cpp
+++ b/ftnoir_protocol_ft/xxx_ftnoir_protocol_ft.cpp
diff --git a/ftnoir_protocol_ft/FTNoIR_Protocol_FT.h b/ftnoir_protocol_ft/xxx_ftnoir_protocol_ft.h
index c82c3e79..c82c3e79 100644
--- a/ftnoir_protocol_ft/FTNoIR_Protocol_FT.h
+++ b/ftnoir_protocol_ft/xxx_ftnoir_protocol_ft.h
diff --git a/ftnoir_protocol_ft/ftnoir_protocol_FT_dialog.cpp b/ftnoir_protocol_ft/xxx_ftnoir_protocol_ft_dialog.cpp
index 2e6c91f7..2e6c91f7 100644
--- a/ftnoir_protocol_ft/ftnoir_protocol_FT_dialog.cpp
+++ b/ftnoir_protocol_ft/xxx_ftnoir_protocol_ft_dialog.cpp
diff --git a/ftnoir_protocol_ft/ftnoir_protocol_FT_dll.cpp b/ftnoir_protocol_ft/xxx_ftnoir_protocol_ft_dll.cpp
index 4513c6ba..4513c6ba 100644
--- a/ftnoir_protocol_ft/ftnoir_protocol_FT_dll.cpp
+++ b/ftnoir_protocol_ft/xxx_ftnoir_protocol_ft_dll.cpp
diff --git a/ftnoir_protocol_ft/FTTypes.h b/ftnoir_protocol_ft/xxx_fttypes.h
index 1f389711..1f389711 100644
--- a/ftnoir_protocol_ft/FTTypes.h
+++ b/ftnoir_protocol_ft/xxx_fttypes.h
diff --git a/ftnoir_protocol_ft/Protocol.qrc b/ftnoir_protocol_ft/xxx_protocol.qrc
index 25ecc6fe..25ecc6fe 100644
--- a/ftnoir_protocol_ft/Protocol.qrc
+++ b/ftnoir_protocol_ft/xxx_protocol.qrc
diff --git a/ftnoir_protocol_ftn/images/FaceTrackNoIR.ico b/ftnoir_protocol_ftn/images/xxx_facetracknoir.ico
index 5115066c..5115066c 100644
--- a/ftnoir_protocol_ftn/images/FaceTrackNoIR.ico
+++ b/ftnoir_protocol_ftn/images/xxx_facetracknoir.ico
Binary files differ
diff --git a/ftnoir_protocol_ftn/FTNoIR_FTNControls.ui b/ftnoir_protocol_ftn/xxx_ftnoir_ftncontrols.ui
index 56983fbe..56983fbe 100644
--- a/ftnoir_protocol_ftn/FTNoIR_FTNControls.ui
+++ b/ftnoir_protocol_ftn/xxx_ftnoir_ftncontrols.ui
diff --git a/ftnoir_protocol_ftn/FTNoIR_Protocol_FTN.cpp b/ftnoir_protocol_ftn/xxx_ftnoir_protocol_ftn.cpp
index cfb6c618..cfb6c618 100644
--- a/ftnoir_protocol_ftn/FTNoIR_Protocol_FTN.cpp
+++ b/ftnoir_protocol_ftn/xxx_ftnoir_protocol_ftn.cpp
diff --git a/ftnoir_protocol_ftn/FTNoIR_Protocol_FTN.h b/ftnoir_protocol_ftn/xxx_ftnoir_protocol_ftn.h
index 24f760c5..24f760c5 100644
--- a/ftnoir_protocol_ftn/FTNoIR_Protocol_FTN.h
+++ b/ftnoir_protocol_ftn/xxx_ftnoir_protocol_ftn.h
diff --git a/ftnoir_protocol_ftn/ftnoir_protocol_ftn_dialog.cpp b/ftnoir_protocol_ftn/xxx_ftnoir_protocol_ftn_dialog.cpp
index 58dbfbad..58dbfbad 100644
--- a/ftnoir_protocol_ftn/ftnoir_protocol_ftn_dialog.cpp
+++ b/ftnoir_protocol_ftn/xxx_ftnoir_protocol_ftn_dialog.cpp
diff --git a/ftnoir_protocol_ftn/ftnoir_protocol_FTN_dll.cpp b/ftnoir_protocol_ftn/xxx_ftnoir_protocol_ftn_dll.cpp
index 00badedf..00badedf 100644
--- a/ftnoir_protocol_ftn/ftnoir_protocol_FTN_dll.cpp
+++ b/ftnoir_protocol_ftn/xxx_ftnoir_protocol_ftn_dll.cpp
diff --git a/ftnoir_protocol_ftn/Protocol.qrc b/ftnoir_protocol_ftn/xxx_protocol.qrc
index b69d1f3f..b69d1f3f 100644
--- a/ftnoir_protocol_ftn/Protocol.qrc
+++ b/ftnoir_protocol_ftn/xxx_protocol.qrc
diff --git a/ftnoir_protocol_mouse/images/Mouse.ico b/ftnoir_protocol_mouse/images/xxx_mouse.ico
index 1151ab2b..1151ab2b 100644
--- a/ftnoir_protocol_mouse/images/Mouse.ico
+++ b/ftnoir_protocol_mouse/images/xxx_mouse.ico
Binary files differ
diff --git a/ftnoir_protocol_mouse/FTNoIR_mousecontrols.ui b/ftnoir_protocol_mouse/xxx_ftnoir_mousecontrols.ui
index 4a6cc3b9..4a6cc3b9 100644
--- a/ftnoir_protocol_mouse/FTNoIR_mousecontrols.ui
+++ b/ftnoir_protocol_mouse/xxx_ftnoir_mousecontrols.ui
diff --git a/ftnoir_protocol_mouse/FTNoIR_Protocol_MOUSE.cpp b/ftnoir_protocol_mouse/xxx_ftnoir_protocol_mouse.cpp
index f81a38f7..f81a38f7 100644
--- a/ftnoir_protocol_mouse/FTNoIR_Protocol_MOUSE.cpp
+++ b/ftnoir_protocol_mouse/xxx_ftnoir_protocol_mouse.cpp
diff --git a/ftnoir_protocol_mouse/FTNoIR_Protocol_MOUSE.h b/ftnoir_protocol_mouse/xxx_ftnoir_protocol_mouse.h
index b7765b96..b7765b96 100644
--- a/ftnoir_protocol_mouse/FTNoIR_Protocol_MOUSE.h
+++ b/ftnoir_protocol_mouse/xxx_ftnoir_protocol_mouse.h
diff --git a/ftnoir_protocol_mouse/ftnoir_protocol_MOUSE_dialog.cpp b/ftnoir_protocol_mouse/xxx_ftnoir_protocol_mouse_dialog.cpp
index b8d7d7ee..b8d7d7ee 100644
--- a/ftnoir_protocol_mouse/ftnoir_protocol_MOUSE_dialog.cpp
+++ b/ftnoir_protocol_mouse/xxx_ftnoir_protocol_mouse_dialog.cpp
diff --git a/ftnoir_protocol_mouse/ftnoir_protocol_MOUSE_dll.cpp b/ftnoir_protocol_mouse/xxx_ftnoir_protocol_mouse_dll.cpp
index cc6ddc17..cc6ddc17 100644
--- a/ftnoir_protocol_mouse/ftnoir_protocol_MOUSE_dll.cpp
+++ b/ftnoir_protocol_mouse/xxx_ftnoir_protocol_mouse_dll.cpp
diff --git a/ftnoir_protocol_mouse/Protocol.qrc b/ftnoir_protocol_mouse/xxx_protocol.qrc
index 0e5e11d9..0e5e11d9 100644
--- a/ftnoir_protocol_mouse/Protocol.qrc
+++ b/ftnoir_protocol_mouse/xxx_protocol.qrc
diff --git a/ftnoir_protocol_sc/images/FSX.ico b/ftnoir_protocol_sc/images/xxx_fsx.ico
index 1c71d409..1c71d409 100644
--- a/ftnoir_protocol_sc/images/FSX.ico
+++ b/ftnoir_protocol_sc/images/xxx_fsx.ico
Binary files differ
diff --git a/ftnoir_protocol_sc/FTNoIR_Protocol_SC.cpp b/ftnoir_protocol_sc/xxx_ftnoir_protocol_sc.cpp
index 7ca38e64..7ca38e64 100644
--- a/ftnoir_protocol_sc/FTNoIR_Protocol_SC.cpp
+++ b/ftnoir_protocol_sc/xxx_ftnoir_protocol_sc.cpp
diff --git a/ftnoir_protocol_sc/FTNoIR_Protocol_SC.h b/ftnoir_protocol_sc/xxx_ftnoir_protocol_sc.h
index 42eca457..42eca457 100644
--- a/ftnoir_protocol_sc/FTNoIR_Protocol_SC.h
+++ b/ftnoir_protocol_sc/xxx_ftnoir_protocol_sc.h
diff --git a/ftnoir_protocol_sc/ftnoir_protocol_SC_dialog.cpp b/ftnoir_protocol_sc/xxx_ftnoir_protocol_sc_dialog.cpp
index 9047fa61..9047fa61 100644
--- a/ftnoir_protocol_sc/ftnoir_protocol_SC_dialog.cpp
+++ b/ftnoir_protocol_sc/xxx_ftnoir_protocol_sc_dialog.cpp
diff --git a/ftnoir_protocol_sc/ftnoir_protocol_SC_dll.cpp b/ftnoir_protocol_sc/xxx_ftnoir_protocol_sc_dll.cpp
index f67f95db..f67f95db 100644
--- a/ftnoir_protocol_sc/ftnoir_protocol_SC_dll.cpp
+++ b/ftnoir_protocol_sc/xxx_ftnoir_protocol_sc_dll.cpp
diff --git a/ftnoir_protocol_sc/FTNoIR_SCcontrols.ui b/ftnoir_protocol_sc/xxx_ftnoir_sccontrols.ui
index 3e7a5062..3e7a5062 100644
--- a/ftnoir_protocol_sc/FTNoIR_SCcontrols.ui
+++ b/ftnoir_protocol_sc/xxx_ftnoir_sccontrols.ui
diff --git a/ftnoir_protocol_sc/Protocol.qrc b/ftnoir_protocol_sc/xxx_protocol.qrc
index de6018af..de6018af 100644
--- a/ftnoir_protocol_sc/Protocol.qrc
+++ b/ftnoir_protocol_sc/xxx_protocol.qrc
diff --git a/ftnoir_protocol_sc/SCServer.manifest b/ftnoir_protocol_sc/xxx_scserver.manifest
index 19b123ba..19b123ba 100644
--- a/ftnoir_protocol_sc/SCServer.manifest
+++ b/ftnoir_protocol_sc/xxx_scserver.manifest
diff --git a/ftnoir_protocol_sc/SimConnect.aps b/ftnoir_protocol_sc/xxx_simconnect.aps
index 89c5a65a..89c5a65a 100644
--- a/ftnoir_protocol_sc/SimConnect.aps
+++ b/ftnoir_protocol_sc/xxx_simconnect.aps
Binary files differ
diff --git a/ftnoir_tracker_base/ftnoir_tracker_base.h b/ftnoir_tracker_base/xxx_ftnoir_tracker_base.h
index 396df4d1..396df4d1 100644
--- a/ftnoir_tracker_base/ftnoir_tracker_base.h
+++ b/ftnoir_tracker_base/xxx_ftnoir_tracker_base.h
diff --git a/ftnoir_tracker_base/ftnoir_tracker_base_global.h b/ftnoir_tracker_base/xxx_ftnoir_tracker_base_global.h
index 9f4a6118..9f4a6118 100644
--- a/ftnoir_tracker_base/ftnoir_tracker_base_global.h
+++ b/ftnoir_tracker_base/xxx_ftnoir_tracker_base_global.h
diff --git a/ftnoir_tracker_base/ftnoir_tracker_ma_types.h b/ftnoir_tracker_base/xxx_ftnoir_tracker_ma_types.h
index bc663056..bc663056 100644
--- a/ftnoir_tracker_base/ftnoir_tracker_ma_types.h
+++ b/ftnoir_tracker_base/xxx_ftnoir_tracker_ma_types.h
diff --git a/ftnoir_tracker_base/ftnoir_tracker_sm_types.h b/ftnoir_tracker_base/xxx_ftnoir_tracker_sm_types.h
index a8802e4a..a8802e4a 100644
--- a/ftnoir_tracker_base/ftnoir_tracker_sm_types.h
+++ b/ftnoir_tracker_base/xxx_ftnoir_tracker_sm_types.h
diff --git a/ftnoir_tracker_base/ftnoir_tracker_types.h b/ftnoir_tracker_base/xxx_ftnoir_tracker_types.h
index ace7a6e3..ace7a6e3 100644
--- a/ftnoir_tracker_base/ftnoir_tracker_types.h
+++ b/ftnoir_tracker_base/xxx_ftnoir_tracker_types.h
diff --git a/ftnoir_tracker_fd/images/FaceDetect.ico b/ftnoir_tracker_fd/images/xxx_facedetect.ico
index 8e862cee..8e862cee 100644
--- a/ftnoir_tracker_fd/images/FaceDetect.ico
+++ b/ftnoir_tracker_fd/images/xxx_facedetect.ico
Binary files differ
diff --git a/ftnoir_tracker_fd/face-detect.h b/ftnoir_tracker_fd/xxx_face-detect.h
index fc359c53..fc359c53 100644
--- a/ftnoir_tracker_fd/face-detect.h
+++ b/ftnoir_tracker_fd/xxx_face-detect.h
diff --git a/ftnoir_tracker_fd/FTNoIR_FD_Controls.ui b/ftnoir_tracker_fd/xxx_ftnoir_fd_controls.ui
index 0bb8028f..0bb8028f 100644
--- a/ftnoir_tracker_fd/FTNoIR_FD_Controls.ui
+++ b/ftnoir_tracker_fd/xxx_ftnoir_fd_controls.ui
diff --git a/ftnoir_tracker_fd/ftnoir_tracker_facedetect.cpp b/ftnoir_tracker_fd/xxx_ftnoir_tracker_facedetect.cpp
index 620fb9fd..620fb9fd 100644
--- a/ftnoir_tracker_fd/ftnoir_tracker_facedetect.cpp
+++ b/ftnoir_tracker_fd/xxx_ftnoir_tracker_facedetect.cpp
diff --git a/ftnoir_tracker_fd/ftnoir_tracker_facedetect_dialog.cpp b/ftnoir_tracker_fd/xxx_ftnoir_tracker_facedetect_dialog.cpp
index 71b19242..71b19242 100644
--- a/ftnoir_tracker_fd/ftnoir_tracker_facedetect_dialog.cpp
+++ b/ftnoir_tracker_fd/xxx_ftnoir_tracker_facedetect_dialog.cpp
diff --git a/ftnoir_tracker_fd/ftnoir_tracker_facedetect_dll.cpp b/ftnoir_tracker_fd/xxx_ftnoir_tracker_facedetect_dll.cpp
index 8e010e3e..8e010e3e 100644
--- a/ftnoir_tracker_fd/ftnoir_tracker_facedetect_dll.cpp
+++ b/ftnoir_tracker_fd/xxx_ftnoir_tracker_facedetect_dll.cpp
diff --git a/ftnoir_tracker_fd/FTNoIR_Tracker_FD.h b/ftnoir_tracker_fd/xxx_ftnoir_tracker_fd.h
index 02e95bb4..02e95bb4 100644
--- a/ftnoir_tracker_fd/FTNoIR_Tracker_FD.h
+++ b/ftnoir_tracker_fd/xxx_ftnoir_tracker_fd.h
diff --git a/ftnoir_tracker_fd/Tracker.qrc b/ftnoir_tracker_fd/xxx_tracker.qrc
index d988ba71..d988ba71 100644
--- a/ftnoir_tracker_fd/Tracker.qrc
+++ b/ftnoir_tracker_fd/xxx_tracker.qrc
diff --git a/ftnoir_tracker_ht/images/HT.ico b/ftnoir_tracker_ht/images/xxx_ht.ico
index 7555ce25..7555ce25 100644
--- a/ftnoir_tracker_ht/images/HT.ico
+++ b/ftnoir_tracker_ht/images/xxx_ht.ico
Binary files differ
diff --git a/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp b/ftnoir_tracker_ht/xxx_ftnoir_tracker_ht.cpp
index 336ede2d..336ede2d 100644
--- a/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp
+++ b/ftnoir_tracker_ht/xxx_ftnoir_tracker_ht.cpp
diff --git a/ftnoir_tracker_ht/ftnoir_tracker_ht.h b/ftnoir_tracker_ht/xxx_ftnoir_tracker_ht.h
index 1a449dca..1a449dca 100644
--- a/ftnoir_tracker_ht/ftnoir_tracker_ht.h
+++ b/ftnoir_tracker_ht/xxx_ftnoir_tracker_ht.h
diff --git a/ftnoir_tracker_ht/ftnoir_tracker_ht_dll.h b/ftnoir_tracker_ht/xxx_ftnoir_tracker_ht_dll.h
index f3bfd381..f3bfd381 100644
--- a/ftnoir_tracker_ht/ftnoir_tracker_ht_dll.h
+++ b/ftnoir_tracker_ht/xxx_ftnoir_tracker_ht_dll.h
diff --git a/ftnoir_tracker_ht/headtracker-ftnoir.h b/ftnoir_tracker_ht/xxx_headtracker-ftnoir.h
index 48510997..48510997 100644
--- a/ftnoir_tracker_ht/headtracker-ftnoir.h
+++ b/ftnoir_tracker_ht/xxx_headtracker-ftnoir.h
diff --git a/ftnoir_tracker_ht/ht-api.h b/ftnoir_tracker_ht/xxx_ht-api.h
index ac8d45cf..ac8d45cf 100644
--- a/ftnoir_tracker_ht/ht-api.h
+++ b/ftnoir_tracker_ht/xxx_ht-api.h
diff --git a/ftnoir_tracker_ht/stdafx.h b/ftnoir_tracker_ht/xxx_stdafx.h
index 0e532c9f..0e532c9f 100644
--- a/ftnoir_tracker_ht/stdafx.h
+++ b/ftnoir_tracker_ht/xxx_stdafx.h
diff --git a/ftnoir_tracker_ht/Tracker.qrc b/ftnoir_tracker_ht/xxx_tracker.qrc
index 9627f700..9627f700 100644
--- a/ftnoir_tracker_ht/Tracker.qrc
+++ b/ftnoir_tracker_ht/xxx_tracker.qrc
diff --git a/ftnoir_tracker_ht/TrackerControls.ui b/ftnoir_tracker_ht/xxx_trackercontrols.ui
index 0a1bc3ae..0a1bc3ae 100644
--- a/ftnoir_tracker_ht/TrackerControls.ui
+++ b/ftnoir_tracker_ht/xxx_trackercontrols.ui
diff --git a/ftnoir_tracker_pt/resources/cap_front.png b/ftnoir_tracker_pt/resources/cap_front.png
new file mode 100644
index 00000000..14207a67
--- /dev/null
+++ b/ftnoir_tracker_pt/resources/cap_front.png
Binary files differ
diff --git a/ftnoir_tracker_pt/resources/cap_side.png b/ftnoir_tracker_pt/resources/cap_side.png
new file mode 100644
index 00000000..5ad4ee65
--- /dev/null
+++ b/ftnoir_tracker_pt/resources/cap_side.png
Binary files differ
diff --git a/ftnoir_tracker_pt/resources/clip_front.png b/ftnoir_tracker_pt/resources/clip_front.png
new file mode 100644
index 00000000..04880138
--- /dev/null
+++ b/ftnoir_tracker_pt/resources/clip_front.png
Binary files differ
diff --git a/ftnoir_tracker_pt/resources/clip_side.png b/ftnoir_tracker_pt/resources/clip_side.png
new file mode 100644
index 00000000..72667ac7
--- /dev/null
+++ b/ftnoir_tracker_pt/resources/clip_side.png
Binary files differ
diff --git a/ftnoir_tracker_pt/resources/icon.ico b/ftnoir_tracker_pt/resources/icon.ico
new file mode 100644
index 00000000..c4b2aedc
--- /dev/null
+++ b/ftnoir_tracker_pt/resources/icon.ico
Binary files differ
diff --git a/ftnoir_tracker_pt/Resources/Logo_IR.png b/ftnoir_tracker_pt/resources/xxx_logo_ir.png
index 95032a25..95032a25 100644
--- a/ftnoir_tracker_pt/Resources/Logo_IR.png
+++ b/ftnoir_tracker_pt/resources/xxx_logo_ir.png
Binary files differ
diff --git a/ftnoir_tracker_pt/videoInput/videoInput.h b/ftnoir_tracker_pt/videoinput/xxx_videoinput.h
index 4244902c..02841418 100644
--- a/ftnoir_tracker_pt/videoInput/videoInput.h
+++ b/ftnoir_tracker_pt/videoinput/xxx_videoinput.h
@@ -1,385 +1,385 @@
-#ifndef _VIDEOINPUT
-#define _VIDEOINPUT
-
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-//THE SOFTWARE.
-
-//////////////////////////////////////////////////////////
-//Written by Theodore Watson - theo.watson@gmail.com //
-//Do whatever you want with this code but if you find //
-//a bug or make an improvement I would love to know! //
-// //
-//Warning This code is experimental //
-//use at your own risk :) //
-//////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////
-/* Shoutouts
-
-Thanks to:
-
- Dillip Kumar Kara for crossbar code.
- Zachary Lieberman for getting me into this stuff
- and for being so generous with time and code.
- The guys at Potion Design for helping me with VC++
- Josh Fisher for being a serious C++ nerd :)
- Golan Levin for helping me debug the strangest
- and slowest bug in the world!
-
- And all the people using this library who send in
- bugs, suggestions and improvements who keep me working on
- the next version - yeah thanks a lot ;)
-
-*/
-/////////////////////////////////////////////////////////
-
-
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-#include <string.h>
-#include <wchar.h>
-
-//this is for TryEnterCriticalSection
-#ifndef _WIN32_WINNT
- # define _WIN32_WINNT 0x400
-#endif
-#include <windows.h>
-
-
-//Example Usage
-/*
- //create a videoInput object
- videoInput VI;
-
- //Prints out a list of available devices and returns num of devices found
- int numDevices = VI.listDevices();
-
- int device1 = 0; //this could be any deviceID that shows up in listDevices
- int device2 = 1; //this could be any deviceID that shows up in listDevices
-
- //if you want to capture at a different frame rate (default is 30)
- //specify it here, you are not guaranteed to get this fps though.
- //VI.setIdealFramerate(dev, 60);
-
- //setup the first device - there are a number of options:
-
- VI.setupDevice(device1); //setup the first device with the default settings
- //VI.setupDevice(device1, VI_COMPOSITE); //or setup device with specific connection type
- //VI.setupDevice(device1, 320, 240); //or setup device with specified video size
- //VI.setupDevice(device1, 320, 240, VI_COMPOSITE); //or setup device with video size and connection type
-
- //VI.setFormat(device1, VI_NTSC_M); //if your card doesn't remember what format it should be
- //call this with the appropriate format listed above
- //NOTE: must be called after setupDevice!
-
- //optionally setup a second (or third, fourth ...) device - same options as above
- VI.setupDevice(device2);
-
- //As requested width and height can not always be accomodated
- //make sure to check the size once the device is setup
-
- int width = VI.getWidth(device1);
- int height = VI.getHeight(device1);
- int size = VI.getSize(device1);
-
- unsigned char * yourBuffer1 = new unsigned char[size];
- unsigned char * yourBuffer2 = new unsigned char[size];
-
- //to get the data from the device first check if the data is new
- if(VI.isFrameNew(device1)){
- VI.getPixels(device1, yourBuffer1, false, false); //fills pixels as a BGR (for openCV) unsigned char array - no flipping
- VI.getPixels(device1, yourBuffer2, true, true); //fills pixels as a RGB (for openGL) unsigned char array - flipping!
- }
-
- //same applies to device2 etc
-
- //to get a settings dialog for the device
- VI.showSettingsWindow(device1);
-
-
- //Shut down devices properly
- VI.stopDevice(device1);
- VI.stopDevice(device2);
-*/
-
-
-////////////////////////////////////// VARS AND DEFS //////////////////////////////////
-
-
-//STUFF YOU CAN CHANGE
-
-//change for verbose debug info
-static bool verbose = true;
-
-//if you need VI to use multi threaded com
-//#define VI_COM_MULTI_THREADED
-
-//STUFF YOU DON'T CHANGE
-
-//videoInput defines
-#define VI_VERSION 0.1995
-#define VI_MAX_CAMERAS 20
-#define VI_NUM_TYPES 18 //DON'T TOUCH
-#define VI_NUM_FORMATS 18 //DON'T TOUCH
-
-//defines for setPhyCon - tuner is not as well supported as composite and s-video
-#define VI_COMPOSITE 0
-#define VI_S_VIDEO 1
-#define VI_TUNER 2
-#define VI_USB 3
-#define VI_1394 4
-
-//defines for formats
-#define VI_NTSC_M 0
-#define VI_PAL_B 1
-#define VI_PAL_D 2
-#define VI_PAL_G 3
-#define VI_PAL_H 4
-#define VI_PAL_I 5
-#define VI_PAL_M 6
-#define VI_PAL_N 7
-#define VI_PAL_NC 8
-#define VI_SECAM_B 9
-#define VI_SECAM_D 10
-#define VI_SECAM_G 11
-#define VI_SECAM_H 12
-#define VI_SECAM_K 13
-#define VI_SECAM_K1 14
-#define VI_SECAM_L 15
-#define VI_NTSC_M_J 16
-#define VI_NTSC_433 17
-
-
-//allows us to directShow classes here with the includes in the cpp
-struct ICaptureGraphBuilder2;
-struct IGraphBuilder;
-struct IBaseFilter;
-struct IAMCrossbar;
-struct IMediaControl;
-struct ISampleGrabber;
-struct IMediaEventEx;
-struct IAMStreamConfig;
-struct _AMMediaType;
-class SampleGrabberCallback;
-typedef _AMMediaType AM_MEDIA_TYPE;
-
-//keeps track of how many instances of VI are being used
-//don't touch
-static int comInitCount = 0;
-
-
-//////////////////////////////////////// VIDEO DEVICE ///////////////////////////////////
-
-class videoDevice{
-
-
- public:
-
- videoDevice();
- void setSize(int w, int h);
- void NukeDownstream(IBaseFilter *pBF);
- void destroyGraph();
- ~videoDevice();
-
- int videoSize;
- int width;
- int height;
- int tryWidth;
- int tryHeight;
-
- ICaptureGraphBuilder2 *pCaptureGraph; // Capture graph builder object
- IGraphBuilder *pGraph; // Graph builder object
- IMediaControl *pControl; // Media control object
- IBaseFilter *pVideoInputFilter; // Video Capture filter
- IBaseFilter *pGrabberF;
- IBaseFilter * pDestFilter;
- IAMStreamConfig *streamConf;
- ISampleGrabber * pGrabber; // Grabs frame
- AM_MEDIA_TYPE * pAmMediaType;
-
- IMediaEventEx * pMediaEvent;
-
- GUID videoType;
- long formatType;
-
- SampleGrabberCallback * sgCallback;
-
- bool tryDiffSize;
- bool useCrossbar;
- bool readyToCapture;
- bool sizeSet;
- bool setupStarted;
- bool specificFormat;
- bool autoReconnect;
- int nFramesForReconnect;
- unsigned long nFramesRunning;
- int connection;
- int storeConn;
- int myID;
- long requestedFrameTime; //ie fps
-
- char nDeviceName[255];
- WCHAR wDeviceName[255];
-
- unsigned char * pixels;
- char * pBuffer;
-
-};
-
-
-
-
-////////////////////////////////////// VIDEO INPUT /////////////////////////////////////
-
-
-
-class videoInput{
-
- public:
- videoInput();
- ~videoInput();
-
- //turns off console messages - default is to print messages
- static void setVerbose(bool _verbose);
-
- //Functions in rough order they should be used.
- static int listDevices(bool silent = false);
-
- //needs to be called after listDevices - otherwise returns NULL
- static char * getDeviceName(int deviceID);
-
- //choose to use callback based capture - or single threaded
- void setUseCallback(bool useCallback);
-
- //call before setupDevice
- //directshow will try and get the closest possible framerate to what is requested
- void setIdealFramerate(int deviceID, int idealFramerate);
-
- //some devices will stop delivering frames after a while - this method gives you the option to try and reconnect
- //to a device if videoInput detects that a device has stopped delivering frames.
- //you MUST CALL isFrameNew every app loop for this to have any effect
- void setAutoReconnectOnFreeze(int deviceNumber, bool doReconnect, int numMissedFramesBeforeReconnect);
-
- //Choose one of these four to setup your device
- bool setupDevice(int deviceID);
- bool setupDevice(int deviceID, int w, int h);
-
- //These two are only for capture cards
- //USB and Firewire cameras souldn't specify connection
- bool setupDevice(int deviceID, int connection);
- bool setupDevice(int deviceID, int w, int h, int connection);
-
- //If you need to you can set your NTSC/PAL/SECAM
- //preference here. if it is available it will be used.
- //see #defines above for available formats - eg VI_NTSC_M or VI_PAL_B
- //should be called after setupDevice
- //can be called multiple times
- bool setFormat(int deviceNumber, int format);
-
- //Tells you when a new frame has arrived - you should call this if you have specified setAutoReconnectOnFreeze to true
- bool isFrameNew(int deviceID);
-
- bool isDeviceSetup(int deviceID);
-
- //Returns the pixels - flipRedAndBlue toggles RGB/BGR flipping - and you can flip the image too
- unsigned char * getPixels(int deviceID, bool flipRedAndBlue = true, bool flipImage = false);
-
- //Or pass in a buffer for getPixels to fill returns true if successful.
- bool getPixels(int id, unsigned char * pixels, bool flipRedAndBlue = true, bool flipImage = false);
-
- //Launches a pop up settings window
- //For some reason in GLUT you have to call it twice each time.
- void showSettingsWindow(int deviceID);
-
- //Manual control over settings thanks.....
- //These are experimental for now.
- bool setVideoSettingFilter(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false);
- bool setVideoSettingFilterPct(int deviceID, long Property, float pctValue, long Flags = NULL);
- bool getVideoSettingFilter(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long &currentValue, long &flags, long &defaultValue);
-
- bool setVideoSettingCamera(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false);
- bool setVideoSettingCameraPct(int deviceID, long Property, float pctValue, long Flags = NULL);
- bool getVideoSettingCamera(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long &currentValue, long &flags, long &defaultValue);
-
- //bool setVideoSettingCam(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false);
-
- //get width, height and number of pixels
- int getWidth(int deviceID);
- int getHeight(int deviceID);
- int getSize(int deviceID);
-
- //completely stops and frees a device
- void stopDevice(int deviceID);
-
- //as above but then sets it up with same settings
- bool restartDevice(int deviceID);
-
- //number of devices available
- int devicesFound;
-
- long propBrightness;
- long propContrast;
- long propHue;
- long propSaturation;
- long propSharpness;
- long propGamma;
- long propColorEnable;
- long propWhiteBalance;
- long propBacklightCompensation;
- long propGain;
-
- long propPan;
- long propTilt;
- long propRoll;
- long propZoom;
- long propExposure;
- long propIris;
- long propFocus;
-
-
- private:
- void setPhyCon(int deviceID, int conn);
- void setAttemptCaptureSize(int deviceID, int w, int h);
- bool setup(int deviceID);
- void processPixels(unsigned char * src, unsigned char * dst, int width, int height, bool bRGB, bool bFlip);
- int start(int deviceID, videoDevice * VD);
- int getDeviceCount();
- void getMediaSubtypeAsString(GUID type, char * typeAsString);
-
- HRESULT getDevice(IBaseFilter **pSrcFilter, int deviceID, WCHAR * wDeviceName, char * nDeviceName);
- static HRESULT ShowFilterPropertyPages(IBaseFilter *pFilter);
- HRESULT SaveGraphFile(IGraphBuilder *pGraph, WCHAR *wszPath);
- HRESULT routeCrossbar(ICaptureGraphBuilder2 **ppBuild, IBaseFilter **pVidInFilter, int conType, GUID captureMode);
-
- //don't touch
- static bool comInit();
- static bool comUnInit();
-
- int connection;
- int callbackSetCount;
- bool bCallback;
-
- GUID CAPTURE_MODE;
-
- //Extra video subtypes
- GUID MEDIASUBTYPE_Y800;
- GUID MEDIASUBTYPE_Y8;
- GUID MEDIASUBTYPE_GREY;
-
- videoDevice * VDList[VI_MAX_CAMERAS];
- GUID mediaSubtypes[VI_NUM_TYPES];
- long formatTypes[VI_NUM_FORMATS];
-
- static void __cdecl basicThread(void * objPtr);
-
- static char deviceNames[VI_MAX_CAMERAS][255];
-
-};
-
- #endif
+#ifndef _VIDEOINPUT
+#define _VIDEOINPUT
+
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+//THE SOFTWARE.
+
+//////////////////////////////////////////////////////////
+//Written by Theodore Watson - theo.watson@gmail.com //
+//Do whatever you want with this code but if you find //
+//a bug or make an improvement I would love to know! //
+// //
+//Warning This code is experimental //
+//use at your own risk :) //
+//////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////
+/* Shoutouts
+
+Thanks to:
+
+ Dillip Kumar Kara for crossbar code.
+ Zachary Lieberman for getting me into this stuff
+ and for being so generous with time and code.
+ The guys at Potion Design for helping me with VC++
+ Josh Fisher for being a serious C++ nerd :)
+ Golan Levin for helping me debug the strangest
+ and slowest bug in the world!
+
+ And all the people using this library who send in
+ bugs, suggestions and improvements who keep me working on
+ the next version - yeah thanks a lot ;)
+
+*/
+/////////////////////////////////////////////////////////
+
+
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+#include <wchar.h>
+
+//this is for TryEnterCriticalSection
+#ifndef _WIN32_WINNT
+ # define _WIN32_WINNT 0x400
+#endif
+#include <windows.h>
+
+
+//Example Usage
+/*
+ //create a videoInput object
+ videoInput VI;
+
+ //Prints out a list of available devices and returns num of devices found
+ int numDevices = VI.listDevices();
+
+ int device1 = 0; //this could be any deviceID that shows up in listDevices
+ int device2 = 1; //this could be any deviceID that shows up in listDevices
+
+ //if you want to capture at a different frame rate (default is 30)
+ //specify it here, you are not guaranteed to get this fps though.
+ //VI.setIdealFramerate(dev, 60);
+
+ //setup the first device - there are a number of options:
+
+ VI.setupDevice(device1); //setup the first device with the default settings
+ //VI.setupDevice(device1, VI_COMPOSITE); //or setup device with specific connection type
+ //VI.setupDevice(device1, 320, 240); //or setup device with specified video size
+ //VI.setupDevice(device1, 320, 240, VI_COMPOSITE); //or setup device with video size and connection type
+
+ //VI.setFormat(device1, VI_NTSC_M); //if your card doesn't remember what format it should be
+ //call this with the appropriate format listed above
+ //NOTE: must be called after setupDevice!
+
+ //optionally setup a second (or third, fourth ...) device - same options as above
+ VI.setupDevice(device2);
+
+ //As requested width and height can not always be accomodated
+ //make sure to check the size once the device is setup
+
+ int width = VI.getWidth(device1);
+ int height = VI.getHeight(device1);
+ int size = VI.getSize(device1);
+
+ unsigned char * yourBuffer1 = new unsigned char[size];
+ unsigned char * yourBuffer2 = new unsigned char[size];
+
+ //to get the data from the device first check if the data is new
+ if(VI.isFrameNew(device1)){
+ VI.getPixels(device1, yourBuffer1, false, false); //fills pixels as a BGR (for openCV) unsigned char array - no flipping
+ VI.getPixels(device1, yourBuffer2, true, true); //fills pixels as a RGB (for openGL) unsigned char array - flipping!
+ }
+
+ //same applies to device2 etc
+
+ //to get a settings dialog for the device
+ VI.showSettingsWindow(device1);
+
+
+ //Shut down devices properly
+ VI.stopDevice(device1);
+ VI.stopDevice(device2);
+*/
+
+
+////////////////////////////////////// VARS AND DEFS //////////////////////////////////
+
+
+//STUFF YOU CAN CHANGE
+
+//change for verbose debug info
+static bool verbose = true;
+
+//if you need VI to use multi threaded com
+//#define VI_COM_MULTI_THREADED
+
+//STUFF YOU DON'T CHANGE
+
+//videoInput defines
+#define VI_VERSION 0.1995
+#define VI_MAX_CAMERAS 20
+#define VI_NUM_TYPES 18 //DON'T TOUCH
+#define VI_NUM_FORMATS 18 //DON'T TOUCH
+
+//defines for setPhyCon - tuner is not as well supported as composite and s-video
+#define VI_COMPOSITE 0
+#define VI_S_VIDEO 1
+#define VI_TUNER 2
+#define VI_USB 3
+#define VI_1394 4
+
+//defines for formats
+#define VI_NTSC_M 0
+#define VI_PAL_B 1
+#define VI_PAL_D 2
+#define VI_PAL_G 3
+#define VI_PAL_H 4
+#define VI_PAL_I 5
+#define VI_PAL_M 6
+#define VI_PAL_N 7
+#define VI_PAL_NC 8
+#define VI_SECAM_B 9
+#define VI_SECAM_D 10
+#define VI_SECAM_G 11
+#define VI_SECAM_H 12
+#define VI_SECAM_K 13
+#define VI_SECAM_K1 14
+#define VI_SECAM_L 15
+#define VI_NTSC_M_J 16
+#define VI_NTSC_433 17
+
+
+//allows us to directShow classes here with the includes in the cpp
+struct ICaptureGraphBuilder2;
+struct IGraphBuilder;
+struct IBaseFilter;
+struct IAMCrossbar;
+struct IMediaControl;
+struct ISampleGrabber;
+struct IMediaEventEx;
+struct IAMStreamConfig;
+struct _AMMediaType;
+class SampleGrabberCallback;
+typedef _AMMediaType AM_MEDIA_TYPE;
+
+//keeps track of how many instances of VI are being used
+//don't touch
+static int comInitCount = 0;
+
+
+//////////////////////////////////////// VIDEO DEVICE ///////////////////////////////////
+
+class videoDevice{
+
+
+ public:
+
+ videoDevice();
+ void setSize(int w, int h);
+ void NukeDownstream(IBaseFilter *pBF);
+ void destroyGraph();
+ ~videoDevice();
+
+ int videoSize;
+ int width;
+ int height;
+ int tryWidth;
+ int tryHeight;
+
+ ICaptureGraphBuilder2 *pCaptureGraph; // Capture graph builder object
+ IGraphBuilder *pGraph; // Graph builder object
+ IMediaControl *pControl; // Media control object
+ IBaseFilter *pVideoInputFilter; // Video Capture filter
+ IBaseFilter *pGrabberF;
+ IBaseFilter * pDestFilter;
+ IAMStreamConfig *streamConf;
+ ISampleGrabber * pGrabber; // Grabs frame
+ AM_MEDIA_TYPE * pAmMediaType;
+
+ IMediaEventEx * pMediaEvent;
+
+ GUID videoType;
+ long formatType;
+
+ SampleGrabberCallback * sgCallback;
+
+ bool tryDiffSize;
+ bool useCrossbar;
+ bool readyToCapture;
+ bool sizeSet;
+ bool setupStarted;
+ bool specificFormat;
+ bool autoReconnect;
+ int nFramesForReconnect;
+ unsigned long nFramesRunning;
+ int connection;
+ int storeConn;
+ int myID;
+ long requestedFrameTime; //ie fps
+
+ char nDeviceName[255];
+ WCHAR wDeviceName[255];
+
+ unsigned char * pixels;
+ char * pBuffer;
+
+};
+
+
+
+
+////////////////////////////////////// VIDEO INPUT /////////////////////////////////////
+
+
+
+class videoInput{
+
+ public:
+ videoInput();
+ ~videoInput();
+
+ //turns off console messages - default is to print messages
+ static void setVerbose(bool _verbose);
+
+ //Functions in rough order they should be used.
+ static int listDevices(bool silent = false);
+
+ //needs to be called after listDevices - otherwise returns NULL
+ static char * getDeviceName(int deviceID);
+
+ //choose to use callback based capture - or single threaded
+ void setUseCallback(bool useCallback);
+
+ //call before setupDevice
+ //directshow will try and get the closest possible framerate to what is requested
+ void setIdealFramerate(int deviceID, int idealFramerate);
+
+ //some devices will stop delivering frames after a while - this method gives you the option to try and reconnect
+ //to a device if videoInput detects that a device has stopped delivering frames.
+ //you MUST CALL isFrameNew every app loop for this to have any effect
+ void setAutoReconnectOnFreeze(int deviceNumber, bool doReconnect, int numMissedFramesBeforeReconnect);
+
+ //Choose one of these four to setup your device
+ bool setupDevice(int deviceID);
+ bool setupDevice(int deviceID, int w, int h);
+
+ //These two are only for capture cards
+ //USB and Firewire cameras souldn't specify connection
+ bool setupDevice(int deviceID, int connection);
+ bool setupDevice(int deviceID, int w, int h, int connection);
+
+ //If you need to you can set your NTSC/PAL/SECAM
+ //preference here. if it is available it will be used.
+ //see #defines above for available formats - eg VI_NTSC_M or VI_PAL_B
+ //should be called after setupDevice
+ //can be called multiple times
+ bool setFormat(int deviceNumber, int format);
+
+ //Tells you when a new frame has arrived - you should call this if you have specified setAutoReconnectOnFreeze to true
+ bool isFrameNew(int deviceID);
+
+ bool isDeviceSetup(int deviceID);
+
+ //Returns the pixels - flipRedAndBlue toggles RGB/BGR flipping - and you can flip the image too
+ unsigned char * getPixels(int deviceID, bool flipRedAndBlue = true, bool flipImage = false);
+
+ //Or pass in a buffer for getPixels to fill returns true if successful.
+ bool getPixels(int id, unsigned char * pixels, bool flipRedAndBlue = true, bool flipImage = false);
+
+ //Launches a pop up settings window
+ //For some reason in GLUT you have to call it twice each time.
+ void showSettingsWindow(int deviceID);
+
+ //Manual control over settings thanks.....
+ //These are experimental for now.
+ bool setVideoSettingFilter(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false);
+ bool setVideoSettingFilterPct(int deviceID, long Property, float pctValue, long Flags = NULL);
+ bool getVideoSettingFilter(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long &currentValue, long &flags, long &defaultValue);
+
+ bool setVideoSettingCamera(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false);
+ bool setVideoSettingCameraPct(int deviceID, long Property, float pctValue, long Flags = NULL);
+ bool getVideoSettingCamera(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long &currentValue, long &flags, long &defaultValue);
+
+ //bool setVideoSettingCam(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false);
+
+ //get width, height and number of pixels
+ int getWidth(int deviceID);
+ int getHeight(int deviceID);
+ int getSize(int deviceID);
+
+ //completely stops and frees a device
+ void stopDevice(int deviceID);
+
+ //as above but then sets it up with same settings
+ bool restartDevice(int deviceID);
+
+ //number of devices available
+ int devicesFound;
+
+ long propBrightness;
+ long propContrast;
+ long propHue;
+ long propSaturation;
+ long propSharpness;
+ long propGamma;
+ long propColorEnable;
+ long propWhiteBalance;
+ long propBacklightCompensation;
+ long propGain;
+
+ long propPan;
+ long propTilt;
+ long propRoll;
+ long propZoom;
+ long propExposure;
+ long propIris;
+ long propFocus;
+
+
+ private:
+ void setPhyCon(int deviceID, int conn);
+ void setAttemptCaptureSize(int deviceID, int w, int h);
+ bool setup(int deviceID);
+ void processPixels(unsigned char * src, unsigned char * dst, int width, int height, bool bRGB, bool bFlip);
+ int start(int deviceID, videoDevice * VD);
+ int getDeviceCount();
+ void getMediaSubtypeAsString(GUID type, char * typeAsString);
+
+ HRESULT getDevice(IBaseFilter **pSrcFilter, int deviceID, WCHAR * wDeviceName, char * nDeviceName);
+ static HRESULT ShowFilterPropertyPages(IBaseFilter *pFilter);
+ HRESULT SaveGraphFile(IGraphBuilder *pGraph, WCHAR *wszPath);
+ HRESULT routeCrossbar(ICaptureGraphBuilder2 **ppBuild, IBaseFilter **pVidInFilter, int conType, GUID captureMode);
+
+ //don't touch
+ static bool comInit();
+ static bool comUnInit();
+
+ int connection;
+ int callbackSetCount;
+ bool bCallback;
+
+ GUID CAPTURE_MODE;
+
+ //Extra video subtypes
+ GUID MEDIASUBTYPE_Y800;
+ GUID MEDIASUBTYPE_Y8;
+ GUID MEDIASUBTYPE_GREY;
+
+ videoDevice * VDList[VI_MAX_CAMERAS];
+ GUID mediaSubtypes[VI_NUM_TYPES];
+ long formatTypes[VI_NUM_FORMATS];
+
+ static void __cdecl basicThread(void * objPtr);
+
+ static char deviceNames[VI_MAX_CAMERAS][255];
+
+};
+
+ #endif
diff --git a/ftnoir_tracker_pt/videoInput/videoInput_vc8.lib b/ftnoir_tracker_pt/videoinput/xxx_videoinput_vc8.lib
index 15ca9cf3..15ca9cf3 100644
--- a/ftnoir_tracker_pt/videoInput/videoInput_vc8.lib
+++ b/ftnoir_tracker_pt/videoinput/xxx_videoinput_vc8.lib
Binary files differ
diff --git a/ftnoir_tracker_pt/videoInput/videoInput_vc9.lib b/ftnoir_tracker_pt/videoinput/xxx_videoinput_vc9.lib
index 32637cc9..32637cc9 100644
--- a/ftnoir_tracker_pt/videoInput/videoInput_vc9.lib
+++ b/ftnoir_tracker_pt/videoinput/xxx_videoinput_vc9.lib
Binary files differ
diff --git a/ftnoir_tracker_pt/camera.cpp b/ftnoir_tracker_pt/xxx_camera.cpp
index fc11c738..fc11c738 100644
--- a/ftnoir_tracker_pt/camera.cpp
+++ b/ftnoir_tracker_pt/xxx_camera.cpp
diff --git a/ftnoir_tracker_pt/camera.h b/ftnoir_tracker_pt/xxx_camera.h
index cd1f0842..cd1f0842 100644
--- a/ftnoir_tracker_pt/camera.h
+++ b/ftnoir_tracker_pt/xxx_camera.h
diff --git a/ftnoir_tracker_pt/FTNoIR_PT_Controls.ui b/ftnoir_tracker_pt/xxx_ftnoir_pt_controls.ui
index 0174df23..0174df23 100644
--- a/ftnoir_tracker_pt/FTNoIR_PT_Controls.ui
+++ b/ftnoir_tracker_pt/xxx_ftnoir_pt_controls.ui
diff --git a/ftnoir_tracker_pt/ftnoir_tracker_pt.cpp b/ftnoir_tracker_pt/xxx_ftnoir_tracker_pt.cpp
index 5b77da69..5b77da69 100644
--- a/ftnoir_tracker_pt/ftnoir_tracker_pt.cpp
+++ b/ftnoir_tracker_pt/xxx_ftnoir_tracker_pt.cpp
diff --git a/ftnoir_tracker_pt/ftnoir_tracker_pt.h b/ftnoir_tracker_pt/xxx_ftnoir_tracker_pt.h
index 2533a39b..2533a39b 100644
--- a/ftnoir_tracker_pt/ftnoir_tracker_pt.h
+++ b/ftnoir_tracker_pt/xxx_ftnoir_tracker_pt.h
diff --git a/ftnoir_tracker_pt/ftnoir_tracker_pt.qrc b/ftnoir_tracker_pt/xxx_ftnoir_tracker_pt.qrc
index eb1fba2c..eb1fba2c 100644
--- a/ftnoir_tracker_pt/ftnoir_tracker_pt.qrc
+++ b/ftnoir_tracker_pt/xxx_ftnoir_tracker_pt.qrc
diff --git a/ftnoir_tracker_pt/FTNoIR_Tracker_PT.rc b/ftnoir_tracker_pt/xxx_ftnoir_tracker_pt.rc
index 11c5d52f..11c5d52f 100644
--- a/ftnoir_tracker_pt/FTNoIR_Tracker_PT.rc
+++ b/ftnoir_tracker_pt/xxx_ftnoir_tracker_pt.rc
diff --git a/ftnoir_tracker_pt/ftnoir_tracker_pt_dialog.cpp b/ftnoir_tracker_pt/xxx_ftnoir_tracker_pt_dialog.cpp
index a1531dd7..a1531dd7 100644
--- a/ftnoir_tracker_pt/ftnoir_tracker_pt_dialog.cpp
+++ b/ftnoir_tracker_pt/xxx_ftnoir_tracker_pt_dialog.cpp
diff --git a/ftnoir_tracker_pt/ftnoir_tracker_pt_dialog.h b/ftnoir_tracker_pt/xxx_ftnoir_tracker_pt_dialog.h
index 0f836dfe..0f836dfe 100644
--- a/ftnoir_tracker_pt/ftnoir_tracker_pt_dialog.h
+++ b/ftnoir_tracker_pt/xxx_ftnoir_tracker_pt_dialog.h
diff --git a/ftnoir_tracker_pt/ftnoir_tracker_pt_dll.cpp b/ftnoir_tracker_pt/xxx_ftnoir_tracker_pt_dll.cpp
index 7f58d77d..7f58d77d 100644
--- a/ftnoir_tracker_pt/ftnoir_tracker_pt_dll.cpp
+++ b/ftnoir_tracker_pt/xxx_ftnoir_tracker_pt_dll.cpp
diff --git a/ftnoir_tracker_pt/ftnoir_tracker_pt_dll.h b/ftnoir_tracker_pt/xxx_ftnoir_tracker_pt_dll.h
index 15ad63aa..15ad63aa 100644
--- a/ftnoir_tracker_pt/ftnoir_tracker_pt_dll.h
+++ b/ftnoir_tracker_pt/xxx_ftnoir_tracker_pt_dll.h
diff --git a/ftnoir_tracker_pt/ftnoir_tracker_pt_settings.cpp b/ftnoir_tracker_pt/xxx_ftnoir_tracker_pt_settings.cpp
index 40d1bc4f..40d1bc4f 100644
--- a/ftnoir_tracker_pt/ftnoir_tracker_pt_settings.cpp
+++ b/ftnoir_tracker_pt/xxx_ftnoir_tracker_pt_settings.cpp
diff --git a/ftnoir_tracker_pt/ftnoir_tracker_pt_settings.h b/ftnoir_tracker_pt/xxx_ftnoir_tracker_pt_settings.h
index 88162c86..88162c86 100644
--- a/ftnoir_tracker_pt/ftnoir_tracker_pt_settings.h
+++ b/ftnoir_tracker_pt/xxx_ftnoir_tracker_pt_settings.h
diff --git a/ftnoir_tracker_pt/point_extractor.cpp b/ftnoir_tracker_pt/xxx_point_extractor.cpp
index 4aa1a658..4aa1a658 100644
--- a/ftnoir_tracker_pt/point_extractor.cpp
+++ b/ftnoir_tracker_pt/xxx_point_extractor.cpp
diff --git a/ftnoir_tracker_pt/point_extractor.h b/ftnoir_tracker_pt/xxx_point_extractor.h
index b142d2bb..b142d2bb 100644
--- a/ftnoir_tracker_pt/point_extractor.h
+++ b/ftnoir_tracker_pt/xxx_point_extractor.h
diff --git a/ftnoir_tracker_pt/point_tracker.cpp b/ftnoir_tracker_pt/xxx_point_tracker.cpp
index d617de19..d617de19 100644
--- a/ftnoir_tracker_pt/point_tracker.cpp
+++ b/ftnoir_tracker_pt/xxx_point_tracker.cpp
diff --git a/ftnoir_tracker_pt/point_tracker.h b/ftnoir_tracker_pt/xxx_point_tracker.h
index 21baad19..21baad19 100644
--- a/ftnoir_tracker_pt/point_tracker.h
+++ b/ftnoir_tracker_pt/xxx_point_tracker.h
diff --git a/ftnoir_tracker_pt/resource.h b/ftnoir_tracker_pt/xxx_resource.h
index c14e94ad..c14e94ad 100644
--- a/ftnoir_tracker_pt/resource.h
+++ b/ftnoir_tracker_pt/xxx_resource.h
diff --git a/ftnoir_tracker_pt/timer.cpp b/ftnoir_tracker_pt/xxx_timer.cpp
index 363b5b09..363b5b09 100644
--- a/ftnoir_tracker_pt/timer.cpp
+++ b/ftnoir_tracker_pt/xxx_timer.cpp
diff --git a/ftnoir_tracker_pt/timer.h b/ftnoir_tracker_pt/xxx_timer.h
index 2aaf725a..2aaf725a 100644
--- a/ftnoir_tracker_pt/timer.h
+++ b/ftnoir_tracker_pt/xxx_timer.h
diff --git a/ftnoir_tracker_pt/trans_calib.cpp b/ftnoir_tracker_pt/xxx_trans_calib.cpp
index 9b75a1b6..9b75a1b6 100644
--- a/ftnoir_tracker_pt/trans_calib.cpp
+++ b/ftnoir_tracker_pt/xxx_trans_calib.cpp
diff --git a/ftnoir_tracker_pt/trans_calib.h b/ftnoir_tracker_pt/xxx_trans_calib.h
index 4024d011..4024d011 100644
--- a/ftnoir_tracker_pt/trans_calib.h
+++ b/ftnoir_tracker_pt/xxx_trans_calib.h
diff --git a/ftnoir_tracker_pt/video_widget.cpp b/ftnoir_tracker_pt/xxx_video_widget.cpp
index c2b41da1..c2b41da1 100644
--- a/ftnoir_tracker_pt/video_widget.cpp
+++ b/ftnoir_tracker_pt/xxx_video_widget.cpp
diff --git a/ftnoir_tracker_pt/video_widget.h b/ftnoir_tracker_pt/xxx_video_widget.h
index f49fef18..f49fef18 100644
--- a/ftnoir_tracker_pt/video_widget.h
+++ b/ftnoir_tracker_pt/xxx_video_widget.h
diff --git a/ftnoir_tracker_sm/images/SeeingMachines.ico b/ftnoir_tracker_sm/images/xxx_seeingmachines.ico
index 19b24c84..19b24c84 100644
--- a/ftnoir_tracker_sm/images/SeeingMachines.ico
+++ b/ftnoir_tracker_sm/images/xxx_seeingmachines.ico
Binary files differ
diff --git a/ftnoir_tracker_sm/FTNoIR_SM_Controls.ui b/ftnoir_tracker_sm/xxx_ftnoir_sm_controls.ui
index 93befd19..93befd19 100644
--- a/ftnoir_tracker_sm/FTNoIR_SM_Controls.ui
+++ b/ftnoir_tracker_sm/xxx_ftnoir_sm_controls.ui
diff --git a/ftnoir_tracker_sm/ftnoir_tracker_faceapi.cpp b/ftnoir_tracker_sm/xxx_ftnoir_tracker_faceapi.cpp
index 624e35a0..624e35a0 100644
--- a/ftnoir_tracker_sm/ftnoir_tracker_faceapi.cpp
+++ b/ftnoir_tracker_sm/xxx_ftnoir_tracker_faceapi.cpp
diff --git a/ftnoir_tracker_sm/ftnoir_tracker_faceapi_dialog.cpp b/ftnoir_tracker_sm/xxx_ftnoir_tracker_faceapi_dialog.cpp
index 5c422402..5c422402 100644
--- a/ftnoir_tracker_sm/ftnoir_tracker_faceapi_dialog.cpp
+++ b/ftnoir_tracker_sm/xxx_ftnoir_tracker_faceapi_dialog.cpp
diff --git a/ftnoir_tracker_sm/ftnoir_tracker_faceapi_dll.cpp b/ftnoir_tracker_sm/xxx_ftnoir_tracker_faceapi_dll.cpp
index 5f01568f..5f01568f 100644
--- a/ftnoir_tracker_sm/ftnoir_tracker_faceapi_dll.cpp
+++ b/ftnoir_tracker_sm/xxx_ftnoir_tracker_faceapi_dll.cpp
diff --git a/ftnoir_tracker_sm/FTNoIR_Tracker_SM.h b/ftnoir_tracker_sm/xxx_ftnoir_tracker_sm.h
index b7aed1d0..b7aed1d0 100644
--- a/ftnoir_tracker_sm/FTNoIR_Tracker_SM.h
+++ b/ftnoir_tracker_sm/xxx_ftnoir_tracker_sm.h
diff --git a/ftnoir_tracker_sm/Tracker.qrc b/ftnoir_tracker_sm/xxx_tracker.qrc
index b76ff1b2..b76ff1b2 100644
--- a/ftnoir_tracker_sm/Tracker.qrc
+++ b/ftnoir_tracker_sm/xxx_tracker.qrc
diff --git a/ftnoir_tracker_udp/FTNoIR_FTNClientControls.ui b/ftnoir_tracker_udp/xxx_ftnoir_ftnclientcontrols.ui
index 7ac6c0f4..7ac6c0f4 100644
--- a/ftnoir_tracker_udp/FTNoIR_FTNClientControls.ui
+++ b/ftnoir_tracker_udp/xxx_ftnoir_ftnclientcontrols.ui
diff --git a/ftnoir_tracker_udp/ftnoir_tracker_udp.cpp b/ftnoir_tracker_udp/xxx_ftnoir_tracker_udp.cpp
index 102c85bd..102c85bd 100644
--- a/ftnoir_tracker_udp/ftnoir_tracker_udp.cpp
+++ b/ftnoir_tracker_udp/xxx_ftnoir_tracker_udp.cpp
diff --git a/ftnoir_tracker_udp/FTNoIR_Tracker_UDP.h b/ftnoir_tracker_udp/xxx_ftnoir_tracker_udp.h
index 94645c84..94645c84 100644
--- a/ftnoir_tracker_udp/FTNoIR_Tracker_UDP.h
+++ b/ftnoir_tracker_udp/xxx_ftnoir_tracker_udp.h
diff --git a/ftnoir_tracker_udp/ftnoir_tracker_udp_dialog.cpp b/ftnoir_tracker_udp/xxx_ftnoir_tracker_udp_dialog.cpp
index b489822a..b489822a 100644
--- a/ftnoir_tracker_udp/ftnoir_tracker_udp_dialog.cpp
+++ b/ftnoir_tracker_udp/xxx_ftnoir_tracker_udp_dialog.cpp
diff --git a/ftnoir_tracker_udp/ftnoir_tracker_udp_dll.cpp b/ftnoir_tracker_udp/xxx_ftnoir_tracker_udp_dll.cpp
index a086a888..a086a888 100644
--- a/ftnoir_tracker_udp/ftnoir_tracker_udp_dll.cpp
+++ b/ftnoir_tracker_udp/xxx_ftnoir_tracker_udp_dll.cpp
diff --git a/qfunctionconfigurator/qfunctionconfigurator/postbuild.bat b/qfunctionconfigurator/qfunctionconfigurator/postbuild.bat
new file mode 100644
index 00000000..aab01cfd
--- /dev/null
+++ b/qfunctionconfigurator/qfunctionconfigurator/postbuild.bat
@@ -0,0 +1,30 @@
+@echo off
+rem Copies required DLL files into output folder.
+
+setlocal
+set COPY=xcopy /D /S /C /I /H /R /Y
+set FILTER=find /v "File(s) copied"
+
+echo parameters %1 en %2 en %3 en %4
+
+set API_BIN=%1
+set OUTDIR=%2
+set CONFIG=%3
+set FTN_BIN=%4
+
+if %CONFIG%==Debug (goto Debug)
+if %CONFIG%==Release (goto Release)
+
+echo Unknown build configuration %CONFIG%
+exit /b -1
+
+:Debug
+%COPY% %API_BIN%\*.* %OUTDIR%\ | %FILTER%
+%COPY% %API_BIN%\*.dll %FTN_BIN%\ | %FILTER%
+exit /b 0
+
+:Release
+%COPY% %API_BIN%\*.* %OUTDIR%\ | %FILTER%
+%COPY% %API_BIN%\*.dll %FTN_BIN%\ | %FILTER%
+exit /b 0
+
diff --git a/qfunctionconfigurator/qfunctionconfigurator/qfunctionconfigurator.cpp b/qfunctionconfigurator/qfunctionconfigurator/qfunctionconfigurator.cpp
new file mode 100644
index 00000000..ed7c9d54
--- /dev/null
+++ b/qfunctionconfigurator/qfunctionconfigurator/qfunctionconfigurator.cpp
@@ -0,0 +1,721 @@
+/********************************************************************************
+* FaceTrackNoIR This program is a private project of some enthusiastic *
+* gamers from Holland, who don't like to pay much for *
+* head-tracking. *
+* *
+* Copyright (C) 2012 Wim Vriend (Developing) *
+* Ron Hendriks (Researching and Testing) *
+* *
+* Homepage http://facetracknoir.sourceforge.net/home/default.htm *
+* *
+* This program is free software; you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the *
+* Free Software Foundation; either version 3 of the License, or (at your *
+* option) any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but *
+* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
+* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along *
+* with this program; if not, see <http://www.gnu.org/licenses/>. *
+* *
+* The FunctionConfigurator was made by Stanislaw Halik, and adapted to *
+* FaceTrackNoIR. *
+* *
+* All credits for this nice piece of code should go to Stanislaw. *
+* *
+* Copyright (c) 2011-2012, Stanislaw Halik <sthalik@misaki.pl> *
+* Permission to use, copy, modify, and/or distribute this *
+* software for any purpose with or without fee is hereby granted, *
+* provided that the above copyright notice and this permission *
+* notice appear in all copies. *
+********************************************************************************/
+/*
+ Modifications (last one on top):
+ 20120830 - WVR: Changed functionality a bit. Now only draw the handles, when the function is drawn.
+ Only check mouseMoves, when they occur 'in range'. Redraw the curve, when a resize occurs.
+ Somehow, the curve was not drawn correctly, when this was not done (all points were too high).
+ After a 'Reset' this would disappear...
+ 20120828 - WVR: Removed bSkipText, which was used to not show a number below each vertical gridline.
+*/
+#include "qfunctionconfigurator.h"
+#include <QPainter>
+#include <QPaintEvent>
+#include <QPainterPathStroker>
+#include <QPainterPath>
+#include <QBrush>
+#include <QFileDialog>
+#include <QPen>
+#include <QMessageBox>
+#include <QImage>
+#include <QPixmap>
+#include <QTimer>
+
+#include <QtDebug>
+
+#include <math.h>
+
+QFunctionConfigurator::~QFunctionConfigurator()
+{
+ WaitForSingleObject(_mutex, INFINITE);
+ CloseHandle(_mutex);
+ delete btnReset;
+}
+
+static const int pointSize = 5;
+
+QFunctionConfigurator::QFunctionConfigurator(QWidget *parent)
+ : QWidget(parent)
+{
+
+ //
+ // Defaults, for when the widget has no values different from the domXML()
+ //
+ MaxInput = 50; // Maximum input limit
+ MaxOutput = 180; // Maximum output limit
+ pPerEGU_Output = 1; // Number of pixels, per EGU
+ pPerEGU_Input = 4; // Number of pixels, per EGU
+ gDistEGU_Input = 5; // Distance of gridlines
+ gDistEGU_Output = 10; // Distance of gridlines
+
+
+ // Change compared to BezierConfigurator: X = horizontal (input), Y = vertical (output)
+ // This will require the Curve-Dialog to be higher (which was the reason it was reversed in the first place..)
+ range = QRectF(40, 20, MaxInput * pPerEGU_Input, MaxOutput * pPerEGU_Output);
+
+ setMouseTracking(true);
+ moving = NULL; // Pointer to the curve-point, that's being moved
+ movingPoint = 1; // Index of that same point
+
+ //
+ // Add a Reset-button
+ //
+ btnReset = new QPushButton(QString("Reset"), this);
+ connect(btnReset, SIGNAL(clicked()), this, SLOT(resetCurve()));
+
+ //
+ // Variables for FunctionConfig
+ //
+ _config = 0;
+ _points = QList<QPointF>();
+ _draw_points = QList<QPointF>();
+ _mutex = CreateMutex(NULL, false, NULL);
+ _draw_background = true;
+ _draw_function = true;
+
+// qDebug() << "QFunctionConfigurator::QFunctionConfigurator object created.";
+
+}
+
+//
+// Attach an existing FunctionConfig to the Widget.
+//
+void QFunctionConfigurator::setConfig(FunctionConfig* config, QString settingsFile) {
+QPointF currentPoint;
+QPointF drawPoint;
+qreal x;
+
+ WaitForSingleObject(_mutex, INFINITE);
+ _config = config;
+ _points = config->getPoints();
+ strSettingsFile = settingsFile; // Remember for Reset()
+
+ qDebug() << "QFunctionConfigurator::setConfig" << config->getTitle();
+ setCaption(config->getTitle());
+
+ //
+ // Get the Function Points, one for each pixel in the horizontal range.
+ // If the curve does not change, there is no need to run this code every time (it slows down drawing).
+ //
+ _draw_points.clear();
+ for (int j = 0; j < MaxInput * pPerEGU_Input; j++) {
+ //
+ // Weird: not casting to float causes C++ to round the number...
+ //
+ x = (float) j / (float) pPerEGU_Input;
+ currentPoint.setX ( x );
+ currentPoint.setY (_config->getValue( x ));
+ drawPoint = graphicalizePoint(currentPoint, "setConfig");
+ if (withinRect(drawPoint, range)) {
+ _draw_points.append(drawPoint);
+// qDebug() << "QFunctionConfigurator::setConfig _draw_Point to add = " << drawPoint;
+ }
+ }
+
+ ReleaseMutex(_mutex);
+ _draw_function = true;
+ this->update();
+}
+
+//
+// Load the FunctionConfig (points) from the INI-file.
+//
+void QFunctionConfigurator::loadSettings(QString settingsFile) {
+
+ QSettings iniFile( settingsFile, QSettings::IniFormat ); // Application settings (in INI-file)
+ strSettingsFile = settingsFile; // Remember for Reset()
+ qDebug() << "QFunctionConfigurator::loadSettings = " << settingsFile;
+ WaitForSingleObject(_mutex, INFINITE);
+ if (_config) {
+ _config->loadSettings(iniFile);
+ setConfig(_config, settingsFile);
+ }
+ ReleaseMutex(_mutex);
+}
+
+//
+// Save the FunctionConfig (points) to the INI-file.
+//
+void QFunctionConfigurator::saveSettings(QString settingsFile) {
+ QSettings iniFile( settingsFile, QSettings::IniFormat ); // Application settings (in INI-file)
+ strSettingsFile = settingsFile; // Remember for Reset()
+ qDebug() << "QFunctionConfigurator::saveSettings = " << settingsFile;
+
+ WaitForSingleObject(_mutex, INFINITE);
+ if (_config) {
+ _config->saveSettings(iniFile);
+ }
+ ReleaseMutex(_mutex);
+}
+
+//
+// Draw the Background for the graph, the gridlines and the gridpoints.
+// The static objects are drawn on a Pixmap, so it does not have to be repeated every paintEvent. Hope this speeds things up...
+//
+void QFunctionConfigurator::drawBackground(const QRectF &fullRect)
+{
+int i;
+QRect scale;
+
+ qDebug() << "QFunctionConfigurator::drawBackground.";
+
+ _background = QPixmap(fullRect.width(), fullRect.height());
+ QPainter painter(&_background);
+
+ painter.save();
+ painter.setRenderHint(QPainter::Antialiasing);
+ painter.fillRect(fullRect, colBackground);
+ QColor bg_color(112, 154, 209);
+ painter.fillRect(range, bg_color);
+
+ QFont font("ComicSans", 4);
+ font.setPointSize(8);
+ painter.setFont(font);
+
+ QPen pen(QColor(55, 104, 170, 127), 1, Qt::SolidLine);
+
+ //
+ // Draw the Caption
+ //
+ if (_config) {
+ strCaption = _config->getTitle();
+ }
+
+ scale.setCoords(range.left(), 0, range.right(), 20);
+ painter.drawText(scale, Qt::AlignCenter, strCaption);
+
+ //
+ // Draw the horizontal grid
+ //
+ for (i = range.bottom() - gDistEGU_Output * pPerEGU_Output; i >= range.top(); i -= gDistEGU_Output * pPerEGU_Output) {
+ drawLine(&painter, QPointF(40, i), QPointF(range.right(), i), pen);
+ scale.setCoords(0, i - 5, range.left() - 5, i + 5);
+ painter.drawText(scale, Qt::AlignRight, tr("%1").arg(((range.bottom() - i))/pPerEGU_Output));
+ }
+
+ //
+ // Draw the vertical guidelines
+ //
+ for (i = range.left(); i <= range.right(); i += gDistEGU_Input * pPerEGU_Input) {
+ drawLine(&painter, QPointF(i, range.top()), QPointF(i, range.bottom()), pen);
+ scale.setCoords(i - 10, range.bottom() + 2, i + 10, range.bottom() + 15);
+ painter.drawText(scale, Qt::AlignCenter, tr("%1").arg(abs(((range.left() - i))/pPerEGU_Input)));
+ }
+
+ scale.setCoords(range.left(), range.bottom() + 20, range.right(), range.bottom() + 35);
+ painter.drawText(scale, Qt::AlignRight, strInputEGU);
+
+ //
+ // Draw the EGU of the vertical axis (vertically!)
+ //
+ font.setPointSize(10);
+ painter.translate(range.topLeft().x() - 35, range.topLeft().y());
+ painter.rotate(90);
+ painter.drawText(0,0,strOutputEGU );
+
+ //
+ // Draw the two axis
+ //
+ pen.setWidth(2);
+ pen.setColor( Qt::black );
+ drawLine(&painter, range.topLeft() - QPointF(2,0), range.bottomLeft() - QPointF(2,0), pen);
+ drawLine(&painter, range.bottomLeft(), range.bottomRight(), pen);
+
+ painter.restore();
+}
+
+
+//
+// Draw the Function for the graph, on a Pixmap.
+//
+void QFunctionConfigurator::drawFunction(const QRectF &fullRect)
+{
+ if (!_config)
+ return;
+int i;
+QPointF prevPoint;
+QPointF currentPoint;
+
+ //
+ // Use the background picture to draw on.
+ // ToDo: find out how to add Pixmaps, without getting it all green...
+ //
+ _function = QPixmap(_background);
+ QPainter painter(&_function);
+
+ painter.save();
+ painter.setRenderHint(QPainter::Antialiasing, false);
+
+ //
+ // Draw the handles for the Points
+ //
+ for (i = 0; i < _points.size(); i++) {
+ currentPoint = graphicalizePoint( _points[i], "drawFunction handles" ); // Get the next point and convert it to Widget measures
+ drawPoint(&painter, currentPoint, QColor(200, 200, 210, 120));
+ lastPoint = currentPoint; // Remember which point is the rightmost in the graph
+//qDebug() << "QFunctionConfigurator::paintEvent, drawing handle for " << currentPoint;
+ }
+
+
+ QPen pen(colBezier, 2, Qt::SolidLine);
+
+ prevPoint = graphicalizePoint( QPointF(0,0), "drawFunction lines" ); // Start at the Axis
+ double max = maxInputEGU();
+ QPointF prev = graphicalizePoint(QPointF(0, 0));
+ double step = 1 / (double) pixPerEGU_Input();
+ for (double i = 0; i < max; i += step) {
+ double val = _config->getValue(i);
+ QPointF cur = graphicalizePoint(QPointF(i, val));
+ drawLine(&painter, prev, cur, pen);
+ prev = cur;
+ }
+ painter.restore();
+}
+
+//
+// The Widget paints the surface every x msecs.
+//
+void QFunctionConfigurator::paintEvent(QPaintEvent *e)
+{
+QPointF prevPoint;
+QPointF currentPoint;
+QPointF actualPos;
+int i;
+
+// qDebug() << "QFunctionConfigurator::paintEvent.";
+
+ QPainter p(this);
+ p.setRenderHint(QPainter::Antialiasing);
+ p.setClipRect(e->rect());
+
+ if (_draw_background) {
+ drawBackground(e->rect()); // Draw the static parts on a Pixmap
+ p.drawPixmap(0, 0, _background); // Paint the background
+ _draw_background = false;
+
+ btnReset->move(e->rect().left(), e->rect().bottom() - btnReset->height() - 2);
+ }
+
+ if (_draw_function) {
+ drawFunction(e->rect()); // Draw the Function on a Pixmap
+ _draw_function = false;
+ }
+ p.drawPixmap(0, 0, _function); // Always draw the background and the function
+
+ QPen pen(Qt::white, 1, Qt::SolidLine);
+
+ //
+ // Draw the Points, that make up the Curve
+ //
+ WaitForSingleObject(_mutex, INFINITE);
+ if (_config) {
+
+ //
+ // When moving, also draw a sketched version of the Function.
+ //
+ if (moving) {
+ prevPoint = graphicalizePoint( QPointF(0,0), "paintEvent moving" ); // Start at the Axis
+ for (i = 0; i < _points.size(); i++) {
+ currentPoint = graphicalizePoint( _points[i], "paintEvent moving" ); // Get the next point and convert it to Widget measures
+ drawLine(&p, prevPoint, currentPoint, pen);
+ prevPoint = currentPoint;
+// qDebug() << "QFunctionConfigurator::paintEvent, drawing while moving " << currentPoint;
+ }
+
+ //
+ // When moving, also draw a few help-lines, so positioning the point gets easier.
+ //
+ pen.setWidth(1);
+ pen.setColor( Qt::white );
+ pen.setStyle( Qt::DashLine );
+ actualPos = graphicalizePoint(*moving, "paintEvent moving help line(s)");
+ drawLine(&p, QPoint(range.left(), actualPos.y()), QPoint(actualPos.x(), actualPos.y()), pen);
+ drawLine(&p, QPoint(actualPos.x(), actualPos.y()), QPoint(actualPos.x(), range.bottom()), pen);
+ }
+
+ //
+ // If the Tracker is active, the 'Last Point' it requested is recorded.
+ // Show that point on the graph, with some lines to assist.
+ // This new feature is very handy for tweaking the curves!
+ //
+ if (_config->getLastPoint( currentPoint )) {
+
+// qDebug() << "QFunctionConfigurator::paintEvent, drawing tracked Point " << currentPoint;
+
+ actualPos = graphicalizePoint( currentPoint, "paintEvent tracking" );
+ drawPoint(&p, actualPos, QColor(255, 0, 0, 120));
+
+ pen.setWidth(1);
+ pen.setColor( Qt::black );
+ pen.setStyle( Qt::SolidLine );
+ drawLine(&p, QPoint(range.left(), actualPos.y()), QPoint(actualPos.x(), actualPos.y()), pen);
+ drawLine(&p, QPoint(actualPos.x(), actualPos.y()), QPoint(actualPos.x(), range.bottom()), pen);
+ }
+
+ }
+ ReleaseMutex(_mutex);
+
+ //
+ // Draw the delimiters
+ //
+ pen.setWidth(1);
+ pen.setColor( Qt::white );
+ pen.setStyle( Qt::SolidLine );
+ drawLine(&p, QPoint(lastPoint.x(), range.top()), QPoint(lastPoint.x(), range.bottom()), pen);
+ drawLine(&p, QPoint(range.left(), lastPoint.y()), QPoint(range.right(), lastPoint.y()), pen);
+
+ QTimer::singleShot(250, this, SLOT(update()));
+}
+
+//
+// Draw the handle, to move the Bezier-curve.
+//
+void QFunctionConfigurator::drawPoint(QPainter *painter, const QPointF &pos, QColor colBG )
+{
+ painter->save();
+ painter->setPen(QColor(50, 100, 120, 200));
+ painter->setBrush( colBG );
+ painter->drawEllipse(QRectF(pos.x() - pointSize,
+ pos.y() - pointSize,
+ pointSize*2, pointSize*2));
+ painter->restore();
+}
+
+void QFunctionConfigurator::drawLine(QPainter *painter, const QPointF &start, const QPointF &end, QPen pen)
+{
+ painter->save();
+ painter->setPen(pen);
+ painter->setBrush(Qt::NoBrush);
+ painter->drawLine(start, end);
+ painter->restore();
+}
+
+//
+// If the mousebutton is pressed, check if it is inside one of the Points.
+// If so: start moving that Point, until mouse release.
+//
+void QFunctionConfigurator::mousePressEvent(QMouseEvent *e)
+{
+ //
+ // First: check the left mouse-button
+ //
+ if (e->button() == Qt::LeftButton) {
+
+ //
+ // Check to see if the cursor is touching one of the points.
+ //
+ bool bTouchingPoint = false;
+ movingPoint = -1;
+ WaitForSingleObject(_mutex, INFINITE);
+ if (_config) {
+
+ for (int i = 0; i < _points.size(); i++) {
+ if ( markContains( graphicalizePoint( _points[i], "mousePressEvent markContains" ), e->pos() ) ) {
+ bTouchingPoint = true;
+ moving = &_points[i];
+ movingPoint = i;
+ }
+ }
+
+ //
+ // If the Left Mouse-button was clicked without touching a Point, add a new Point
+ //
+ if (!bTouchingPoint) {
+ if (withinRect(e->pos(), range)) {
+ _config->addPoint(normalizePoint(e->pos()));
+ setConfig(_config, strSettingsFile);
+ moving = NULL;
+ emit CurveChanged( true );
+ }
+ }
+ }
+ ReleaseMutex(_mutex);
+ }
+
+ //
+ // Then: check the right mouse-button
+ //
+ if (e->button() == Qt::RightButton) {
+
+ //
+ // Check to see if the cursor is touching one of the points.
+ //
+ moving = NULL;
+ movingPoint = -1;
+ WaitForSingleObject(_mutex, INFINITE);
+ if (_config) {
+
+ for (int i = 0; i < _points.size(); i++) {
+ if ( markContains( graphicalizePoint( _points[i], "mousePressEvent RightButton" ), e->pos() ) ) {
+ movingPoint = i;
+ }
+ }
+
+ //
+ // If the Right Mouse-button was clicked while touching a Point, remove the Point
+ //
+ if (movingPoint >= 0) {
+ _config->removePoint(movingPoint);
+ setConfig(_config, strSettingsFile);
+ movingPoint = -1;
+ emit CurveChanged( true );
+ }
+ }
+ ReleaseMutex(_mutex);
+ }
+
+}
+
+//
+// If the mouse if moving, make sure the Bezier moves along.
+// Of course, only when a Point is selected...
+//
+void QFunctionConfigurator::mouseMoveEvent(QMouseEvent *e)
+{
+
+ if (moving) {
+
+ setCursor(Qt::ClosedHandCursor);
+
+ //
+ // Change the currently moving Point.
+ //
+ *moving = normalizePoint(e->pos());
+ update();
+ }
+ else {
+
+ //
+ // Check to see if the cursor is touching one of the points.
+ //
+ bool bTouchingPoint = false;
+ WaitForSingleObject(_mutex, INFINITE);
+ if (_config) {
+
+ for (int i = 0; i < _points.size(); i++) {
+ if ( markContains( graphicalizePoint( _points[i], "mouseMoveEvent" ), e->pos() ) ) {
+ bTouchingPoint = true;
+ }
+ }
+ }
+ ReleaseMutex(_mutex);
+
+ if ( bTouchingPoint ) {
+ setCursor(Qt::OpenHandCursor);
+ }
+ else {
+ setCursor(Qt::ArrowCursor);
+ }
+
+ }
+}
+
+void QFunctionConfigurator::mouseReleaseEvent(QMouseEvent *e)
+{
+ //qDebug()<<"releasing";
+ if (moving > 0) {
+ emit CurveChanged( true );
+
+ //
+ // Update the Point in the _config
+ //
+ WaitForSingleObject(_mutex, INFINITE);
+ if (_config) {
+ _config->movePoint(movingPoint, normalizePoint(e->pos()));
+ setConfig(_config, strSettingsFile);
+ }
+ ReleaseMutex(_mutex);
+
+ }
+ setCursor(Qt::ArrowCursor);
+ moving = NULL;
+ movingPoint = 0;
+}
+
+//
+// Determine if the mousebutton was pressed within the range of the Point.
+//
+bool QFunctionConfigurator::markContains(const QPointF &pos, const QPointF &coord) const
+{
+ QRectF rect(pos.x() - pointSize,
+ pos.y() - pointSize,
+ pointSize*2, pointSize*2);
+ QPainterPath path;
+ path.addEllipse(rect);
+ return path.contains(coord);
+}
+
+bool QFunctionConfigurator::withinRect( const QPointF &coord, const QRectF &rect ) const
+{
+ QPainterPath path;
+ path.addRect(rect);
+ return path.contains(coord);
+}
+
+//
+// Convert the Point in the graph, to the real-life Point.
+//
+QPointF QFunctionConfigurator::normalizePoint(QPointF point) const
+{
+ QPointF norm;
+
+ norm.setX( (point.x() - range.left()) / pPerEGU_Input );
+ norm.setY( (range.bottom() - point.y()) / pPerEGU_Output );
+
+ if (norm.x() > maxInputEGU())
+ norm.setX(maxInputEGU());
+ else if (norm.x() < 0)
+ norm.setX(0);
+ if (norm.y() > maxOutputEGU())
+ norm.setY(maxOutputEGU());
+ else if (norm.y() < 0)
+ norm.setY(0);
+
+ return norm;
+}
+
+//
+// Convert the real-life Point into the graphical Point.
+//
+QPointF QFunctionConfigurator::graphicalizePoint(QPointF point, QString source) const
+{
+QPointF graph;
+
+ graph.setX( range.left() + (fabs(point.x()) * pPerEGU_Input) );
+ graph.setY( range.bottom() - (fabs(point.y()) * pPerEGU_Output) );
+
+// qDebug() << "QFunctionConfigurator::graphicalizePoint source = " << source << ", point = " << point << ", graph = " << graph;
+
+ return graph;
+}
+
+void QFunctionConfigurator::setmaxInputEGU(int value)
+{
+ MaxInput = value;
+ setMinimumWidth(MaxInput * pPerEGU_Input + 55);
+// resetCurve();
+ resize( MaxInput * pPerEGU_Input + 55, MaxOutput * pPerEGU_Output + 60 );
+}
+void QFunctionConfigurator::setmaxOutputEGU(int value)
+{
+ MaxOutput = value;
+ setMinimumHeight(MaxOutput * pPerEGU_Output + 60);
+// resetCurve();
+ resize( MaxInput * pPerEGU_Input + 55, MaxOutput * pPerEGU_Output + 60 );
+}
+
+//
+// To make configuration more visibly attractive, the number of pixels 'per EGU' can be defined.
+//
+void QFunctionConfigurator::setpixPerEGU_Input(int value)
+{
+ pPerEGU_Input = value;
+ setMinimumWidth(MaxInput * pPerEGU_Input + 55);
+ resize( MaxInput * pPerEGU_Input + 55, MaxOutput * pPerEGU_Output + 60 );
+}
+
+//
+// To make configuration more visibly attractive, the number of pixels 'per EGU' can be defined.
+//
+void QFunctionConfigurator::setpixPerEGU_Output(int value)
+{
+ pPerEGU_Output = value;
+ setMinimumHeight(MaxOutput * pPerEGU_Output + 60);
+ resize( MaxInput * pPerEGU_Input + 55, MaxOutput * pPerEGU_Output + 60 );
+}
+
+//
+// Define the distance of the grid 'in EGU' points.
+//
+void QFunctionConfigurator::setgridDistEGU_Input(int value)
+{
+ gDistEGU_Input = value;
+ _draw_background = true;
+ _draw_function = true;
+ repaint();
+}
+
+//
+// Define the distance of the grid 'in EGU' points.
+//
+void QFunctionConfigurator::setgridDistEGU_Output(int value)
+{
+ gDistEGU_Output = value;
+ _draw_background = true;
+ _draw_function = true;
+ repaint();
+}
+
+void QFunctionConfigurator::setColorBezier(QColor color)
+{
+ colBezier = color;
+ update();
+}
+void QFunctionConfigurator::setColorBackground(QColor color)
+{
+ colBackground = color;
+ update();
+}
+
+void QFunctionConfigurator::setInputEGU(QString egu)
+{
+ strInputEGU = egu;
+ update();
+}
+void QFunctionConfigurator::setOutputEGU(QString egu)
+{
+ strOutputEGU = egu;
+ update();
+}
+void QFunctionConfigurator::setCaption(QString cap)
+{
+ strCaption = cap;
+ update();
+}
+
+void QFunctionConfigurator::resizeEvent(QResizeEvent *e)
+{
+ QSize s = e->size();
+ range = QRectF(40, 20, MaxInput * pPerEGU_Input, MaxOutput * pPerEGU_Output);
+
+ qDebug() << "QFunctionConfigurator::resizeEvent, name = " << strCaption << ",range = " << range;
+
+ if (_config) {
+ setConfig(_config, strSettingsFile);
+ }
+ _draw_background = true;
+ _draw_function = true;
+ repaint();
+}
diff --git a/qfunctionconfigurator/qfunctionconfigurator/qfunctionconfigurator.h b/qfunctionconfigurator/qfunctionconfigurator/qfunctionconfigurator.h
new file mode 100644
index 00000000..ce2c0bb5
--- /dev/null
+++ b/qfunctionconfigurator/qfunctionconfigurator/qfunctionconfigurator.h
@@ -0,0 +1,206 @@
+/********************************************************************************
+* FaceTrackNoIR This program is a private project of some enthusiastic *
+* gamers from Holland, who don't like to pay much for *
+* head-tracking. *
+* *
+* Copyright (C) 2012 Wim Vriend (Developing) *
+* Ron Hendriks (Researching and Testing) *
+* *
+* Homepage http://facetracknoir.sourceforge.net/home/default.htm *
+* *
+* This program is free software; you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the *
+* Free Software Foundation; either version 3 of the License, or (at your *
+* option) any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but *
+* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
+* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along *
+* with this program; if not, see <http://www.gnu.org/licenses/>. *
+* *
+* The FunctionConfigurator was made by Stanislaw Halik, and adapted to *
+* FaceTrackNoIR. *
+* *
+* All credits for this nice piece of code should go to Stanislaw. *
+* *
+* Copyright (c) 2011-2012, Stanislaw Halik <sthalik@misaki.pl> *
+* Permission to use, copy, modify, and/or distribute this *
+* software for any purpose with or without fee is hereby granted, *
+* provided that the above copyright notice and this permission *
+* notice appear in all copies. *
+********************************************************************************/
+#ifndef QFUNCTIONCONFIGURATOR_H
+#define QFUNCTIONCONFIGURATOR_H
+
+#include <QtGui>
+#include <QtDesigner/QDesignerExportWidget>
+#include <QPointF>
+#include "FunctionConfig.h"
+
+//
+// The FunctionConfigurator Widget is used to display and configure a function (curve).
+// The Function is used by FaceTrackNoIR to 'translate' the actual head-pose to the virtual headpose. Every axis is configured by a separate Function.
+//
+// The Function is coded in a separate Class and can exists, without the Widget. When the widget is displayed (therefore 'created'), the Function can be attached to the
+// Widget and the Widget used to change the Function.
+//
+class QDESIGNER_WIDGET_EXPORT QFunctionConfigurator : public QWidget
+{
+ Q_OBJECT
+ Q_PROPERTY(int maxInputEGU READ maxInputEGU WRITE setmaxInputEGU);
+ Q_PROPERTY(int maxOutputEGU READ maxOutputEGU WRITE setmaxOutputEGU);
+ Q_PROPERTY(int pixPerEGU_Input READ pixPerEGU_Input WRITE setpixPerEGU_Input);
+ Q_PROPERTY(int pixPerEGU_Output READ pixPerEGU_Output WRITE setpixPerEGU_Output);
+ Q_PROPERTY(int gridDistEGU_Input READ gridDistEGU_Input WRITE setgridDistEGU_Input);
+ Q_PROPERTY(int gridDistEGU_Output READ gridDistEGU_Output WRITE setgridDistEGU_Output);
+
+ Q_PROPERTY(QColor colorBezier READ colorBezier WRITE setColorBezier);
+ Q_PROPERTY(QColor colorBackground READ colorBackground WRITE setColorBackground);
+ Q_PROPERTY(QString stringInputEGU READ stringInputEGU WRITE setInputEGU);
+ Q_PROPERTY(QString stringOutputEGU READ stringOutputEGU WRITE setOutputEGU);
+ Q_PROPERTY(QString stringCaption READ stringCaption WRITE setCaption);
+
+ // Return the current value to Designer
+ int maxInputEGU() const
+ {
+ return MaxInput;
+ }
+ int maxOutputEGU() const
+ {
+ return MaxOutput;
+ }
+ int pixPerEGU_Input() const
+ {
+ return pPerEGU_Input;
+ }
+ int pixPerEGU_Output() const
+ {
+ return pPerEGU_Output;
+ }
+ int gridDistEGU_Input() const
+ {
+ return gDistEGU_Input;
+ }
+ int gridDistEGU_Output() const
+ {
+ return gDistEGU_Output;
+ }
+
+ // Return the current color to Designer
+ QColor colorBezier() const
+ {
+ return colBezier;
+ }
+ // Return the current color to Designer
+ QColor colorBackground() const
+ {
+ return colBackground;
+ }
+ // Return the current string to Designer
+ QString stringInputEGU() const
+ {
+ return strInputEGU;
+ }
+ // Return the current string to Designer
+ QString stringOutputEGU() const
+ {
+ return strOutputEGU;
+ }
+ // Return the current string to Designer
+ QString stringCaption() const
+ {
+ return strCaption;
+ }
+
+public:
+ QFunctionConfigurator(QWidget *parent = 0);
+ ~QFunctionConfigurator();
+ FunctionConfig* config();
+
+ void setConfig(FunctionConfig* config, QString settingsFile); // Connect the FunctionConfig to the Widget.
+ void loadSettings(QString settingsFile); // Load the FunctionConfig (points) from the INI-file
+ void saveSettings(QString settingsFile); // Save the FunctionConfig (points) to the INI-file
+
+signals:
+ void CurveChanged(bool);
+
+public slots:
+ void setmaxInputEGU(int);
+ void setmaxOutputEGU(int);
+ void setpixPerEGU_Input(int);
+ void setpixPerEGU_Output(int);
+ void setgridDistEGU_Input(int);
+ void setgridDistEGU_Output(int);
+
+ void setColorBezier(QColor);
+ void setColorBackground(QColor);
+ void setInputEGU(QString);
+ void setOutputEGU(QString);
+ void setCaption(QString);
+
+ void resetCurve() {
+ qDebug() << "QFunctionConfigurator::resetCurve = " << strSettingsFile;
+ loadSettings( strSettingsFile );
+ }
+
+protected slots:
+ void paintEvent(QPaintEvent *e);
+ void mousePressEvent(QMouseEvent *e);
+ void mouseMoveEvent(QMouseEvent *e);
+ void mouseReleaseEvent(QMouseEvent *e);
+
+protected:
+ void drawBackground(const QRectF &rect);
+ void drawFunction(const QRectF &rect);
+ void drawPoint(QPainter *painter, const QPointF &pt, QColor colBG );
+ void drawLine(QPainter *painter, const QPointF &start, const QPointF &end, QPen pen);
+ bool markContains(const QPointF &pt, const QPointF &coord) const;
+// bool withinRange( const QPointF &coord ) const;
+ bool withinRect( const QPointF &coord, const QRectF &rect ) const;
+
+protected:
+ virtual void resizeEvent(QResizeEvent *);
+
+private:
+ QRectF range; // The actual rectangle for the Bezier-curve
+ QPointF lastPoint; // The right-most point of the Function
+ QPointF normalizePoint (QPointF point) const; // Convert the graphical Point to a real-life Point
+ QPointF graphicalizePoint (QPointF point, QString source = "") const; // Convert the Point to a graphical Point
+
+ QPointF *moving;
+ int movingPoint;
+
+ int MaxInput; // Maximum input limit
+ int MaxOutput; // Maximum output limit
+ int pPerEGU_Input; // Number of pixels, per EGU of Input
+ int pPerEGU_Output; // Number of pixels, per EGU of Output
+ int gDistEGU_Input; // Distance of the grid, in EGU of Input
+ int gDistEGU_Output; // Distance of the grid, in EGU of Output
+
+ QColor colBezier; // Color of Bezier curve
+ QColor colBackground; // Color of widget background
+ QString strInputEGU; // Engineering Units input (vertical axis)
+ QString strOutputEGU; // Engineering Units output (horizontal axis)
+ QString strCaption; // Caption of the graph
+ QString strSettingsFile; // Name of last read INI-file
+ QPushButton *btnReset; // Reset Curve
+
+ bool _draw_background; // Flag to determine if the background should be (re-)drawn on the QPixmap
+ QPixmap _background; // Image of the static parts (axis, lines, etc.)
+ bool _draw_function; // Flag to determine if the function should be (re-)drawn on the QPixmap
+ QPixmap _function; // Image of the function (static unless edited by the user)
+
+ //
+ // Properties of the CurveConfigurator Widget
+ //
+ QString _title; // Title do display in Widget and to load Settings
+ FunctionConfig* _config;
+ QList<QPointF> _points; // Function-points
+ QList<QPointF> _draw_points; // Curve-points needed for drawing
+ HANDLE _mutex;
+};
+
+#endif // QFUNCTIONCONFIGURATOR_H
diff --git a/qfunctionconfigurator/qfunctionconfigurator/qfunctionconfiguratorplugin.cpp b/qfunctionconfigurator/qfunctionconfigurator/qfunctionconfiguratorplugin.cpp
new file mode 100644
index 00000000..44925b21
--- /dev/null
+++ b/qfunctionconfigurator/qfunctionconfigurator/qfunctionconfiguratorplugin.cpp
@@ -0,0 +1,146 @@
+/********************************************************************************
+* FaceTrackNoIR This program is a private project of some enthusiastic *
+* gamers from Holland, who don't like to pay much for *
+* head-tracking. *
+* *
+* Copyright (C) 2012 Wim Vriend (Developing) *
+* Ron Hendriks (Researching and Testing) *
+* *
+* Homepage http://facetracknoir.sourceforge.net/home/default.htm *
+* *
+* This program is free software; you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the *
+* Free Software Foundation; either version 3 of the License, or (at your *
+* option) any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but *
+* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
+* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along *
+* with this program; if not, see <http://www.gnu.org/licenses/>. *
+* *
+* The FunctionConfigurator was made by Stanislaw Halik, and adapted to *
+* FaceTrackNoIR. *
+* *
+* All credits for this nice piece of code should go to Stanislaw. *
+* *
+* Copyright (c) 2011-2012, Stanislaw Halik <sthalik@misaki.pl> *
+* Permission to use, copy, modify, and/or distribute this *
+* software for any purpose with or without fee is hereby granted, *
+* provided that the above copyright notice and this permission *
+* notice appear in all copies. *
+********************************************************************************/
+#include "qfunctionconfigurator.h"
+
+#include <QtCore/QtPlugin>
+#include "qfunctionconfiguratorplugin.h"
+
+
+QFunctionConfiguratorPlugin::QFunctionConfiguratorPlugin(QObject *parent)
+ : QObject(parent)
+{
+ initialized = false;
+}
+
+void QFunctionConfiguratorPlugin::initialize(QDesignerFormEditorInterface */*core*/)
+{
+ if (initialized)
+ return;
+
+ initialized = true;
+}
+
+bool QFunctionConfiguratorPlugin::isInitialized() const
+{
+ return initialized;
+}
+
+QWidget *QFunctionConfiguratorPlugin::createWidget(QWidget *parent)
+{
+ return new QFunctionConfigurator(parent);
+}
+
+QString QFunctionConfiguratorPlugin::name() const
+{
+ return "QFunctionConfigurator";
+}
+
+QString QFunctionConfiguratorPlugin::group() const
+{
+ return "My Plugins";
+}
+
+QIcon QFunctionConfiguratorPlugin::icon() const
+{
+ return QIcon();
+}
+
+QString QFunctionConfiguratorPlugin::toolTip() const
+{
+ return QString();
+}
+
+QString QFunctionConfiguratorPlugin::whatsThis() const
+{
+ return QString();
+}
+
+bool QFunctionConfiguratorPlugin::isContainer() const
+{
+ return false;
+}
+
+QString QFunctionConfiguratorPlugin::domXml() const
+{
+ return "<widget class=\"QFunctionConfigurator\" name=\"qFunctionA\">\n"
+ " <property name=\"geometry\">\n"
+ " <rect>\n"
+ " <x>0</x>\n"
+ " <y>0</y>\n"
+ " <width>161</width>\n"
+ " <height>220</height>\n"
+ " </rect>\n"
+ " </property>\n"
+ " <property name=\"colorBezier\">\n"
+ " <color>\n"
+ " <red>255</red>\n"
+ " <green>170</green>\n"
+ " <blue>0</blue>\n"
+ " </color>\n"
+ " </property>\n"
+ " <property name=\"colorBackground\">\n"
+ " <color>\n"
+ " <red>192</red>\n"
+ " <green>192</green>\n"
+ " <blue>192</blue>\n"
+ " </color>\n"
+ " </property>\n"
+ " <property name=\"stringInputEGU\" stdset=\"0\">\n"
+ " <string>Input Yaw (degr.)</string>\n"
+ " </property>\n"
+ " <property name=\"stringOutputEGU\" stdset=\"0\">\n"
+ " <string>Output Yaw (degr.)</string>\n"
+ " </property>\n"
+ " <property name=\"maxInputEGU\" stdset=\"0\">\n"
+ " <number>50</number>\n"
+ " </property>\n"
+ " <property name=\"maxOutputEGU\" stdset=\"0\">\n"
+ " <number>180</number>\n"
+ " </property>\n"
+ " <property name=\"pixPerEGU_Input\" stdset=\"0\">\n"
+ " <number>2</number>\n"
+ " </property>\n"
+ " <property name=\"pixPerEGU_Output\" stdset=\"0\">\n"
+ " <number>1</number>\n"
+ " </property>\n"
+ "</widget>\n";
+}
+
+QString QFunctionConfiguratorPlugin::includeFile() const
+{
+ return "qfunctionconfigurator.h";
+}
+
+Q_EXPORT_PLUGIN2(qfunctionconfigurator, QFunctionConfiguratorPlugin)
diff --git a/qfunctionconfigurator/qfunctionconfigurator/qfunctionconfiguratorplugin.h b/qfunctionconfigurator/qfunctionconfigurator/qfunctionconfiguratorplugin.h
new file mode 100644
index 00000000..c6b65fcc
--- /dev/null
+++ b/qfunctionconfigurator/qfunctionconfigurator/qfunctionconfiguratorplugin.h
@@ -0,0 +1,30 @@
+#ifndef QFUNCTIONCONFIGURATORPLUGIN_H
+#define QFUNCTIONCONFIGURATORPLUGIN_H
+
+#include <QDesignerCustomWidgetInterface>
+
+class QFunctionConfiguratorPlugin : public QObject, public QDesignerCustomWidgetInterface
+{
+ Q_OBJECT
+ Q_INTERFACES(QDesignerCustomWidgetInterface)
+
+public:
+ QFunctionConfiguratorPlugin(QObject *parent = 0);
+
+ bool isContainer() const;
+ bool isInitialized() const;
+ QIcon icon() const;
+ QString domXml() const;
+ QString group() const;
+ QString includeFile() const;
+ QString name() const;
+ QString toolTip() const;
+ QString whatsThis() const;
+ QWidget *createWidget(QWidget *parent);
+ void initialize(QDesignerFormEditorInterface *core);
+
+private:
+ bool initialized;
+};
+
+#endif // QFUNCTIONCONFIGURATORPLUGIN_H
diff --git a/qfunctionconfigurator/QFunctionConfigurator/FunctionConfig.cpp b/qfunctionconfigurator/qfunctionconfigurator/xxx_functionconfig.cpp
index 243564d1..243564d1 100644
--- a/qfunctionconfigurator/QFunctionConfigurator/FunctionConfig.cpp
+++ b/qfunctionconfigurator/qfunctionconfigurator/xxx_functionconfig.cpp
Binary files differ
diff --git a/qfunctionconfigurator/QFunctionConfigurator/FunctionConfig.h b/qfunctionconfigurator/qfunctionconfigurator/xxx_functionconfig.h
index 8dc9cf98..8dc9cf98 100644
--- a/qfunctionconfigurator/QFunctionConfigurator/FunctionConfig.h
+++ b/qfunctionconfigurator/qfunctionconfigurator/xxx_functionconfig.h
Binary files differ
diff --git a/qfunctionconfigurator/Prerequisites for using widget in Qt Designer.png b/qfunctionconfigurator/xxx_prerequisites for using widget in qt designer.png
index 6e4d8903..6e4d8903 100644
--- a/qfunctionconfigurator/Prerequisites for using widget in Qt Designer.png
+++ b/qfunctionconfigurator/xxx_prerequisites for using widget in qt designer.png
Binary files differ
diff --git a/CMakeLists.txt b/xxx_cmakelists.txt
index 96a5c626..96a5c626 100644
--- a/CMakeLists.txt
+++ b/xxx_cmakelists.txt
diff --git a/list of compatible games.xls b/xxx_list of compatible games.xls
index bdc55e62..bdc55e62 100644
--- a/list of compatible games.xls
+++ b/xxx_list of compatible games.xls
Binary files differ
diff --git a/list of compatible webcams.xls b/xxx_list of compatible webcams.xls
index a057ef43..a057ef43 100644
--- a/list of compatible webcams.xls
+++ b/xxx_list of compatible webcams.xls
Binary files differ
diff --git a/readme.txt b/xxx_readme.txt
index 18d3babb..18d3babb 100644
--- a/readme.txt
+++ b/xxx_readme.txt