summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-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 3c0b4c6b5..3c0b4c6b5 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 3c0b4c6b5..3c0b4c6b5 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 632d87fc4..632d87fc4 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 ad93e327a..ad93e327a 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 9014c39c6..9014c39c6 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 ae9a30dd2..ae9a30dd2 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 d5523e280..d5523e280 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 e3cc4f086..e3cc4f086 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 5115066ce..5115066ce 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 f96c0f882..f96c0f882 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 02554c3de..02554c3de 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 9afd1953f..9afd1953f 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 1c71d409f..1c71d409f 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 52df896da..52df896da 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 19b24c849..19b24c849 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 3b31623bc..3b31623bc 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 5bf65f0d3..5bf65f0d3 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 99e02e7b6..99e02e7b6 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 59b93a72b..59b93a72b 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 80c12e91c..80c12e91c 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 5dee8b53b..5dee8b53b 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 5115ebeab..5115ebeab 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 78189311a..78189311a 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 5115ebeab..5115ebeab 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 374850d01..374850d01 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 68f275cb4..68f275cb4 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 2dbb417c7..2dbb417c7 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 9a91ea21d..9a91ea21d 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 6fe725c4a..6fe725c4a 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 8f49dedff..8f49dedff 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 013850c5d..013850c5d 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 954dc92f6..954dc92f6 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 4496b25a5..4496b25a5 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 a371ce3ad..a371ce3ad 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 1b961b3b7..1b961b3b7 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 4285f4634..4285f4634 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 be1bed25e..be1bed25e 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 9b8fc91ed..9b8fc91ed 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 e1669e6bb..e1669e6bb 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 76cc09468..76cc09468 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 27bccfd51..27bccfd51 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 40d3ec6d2..40d3ec6d2 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 12ab94f94..12ab94f94 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 c9fc45276..c9fc45276 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 12ab94f94..12ab94f94 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 e33880850..e33880850 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 bcfa50a49..bcfa50a49 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 e33880850..e33880850 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 d18f01a72..d18f01a72 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 c5be4f57d..c5be4f57d 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 d18f01a72..d18f01a72 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 1c8c99e0d..1c8c99e0d 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 007c206ce..007c206ce 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 1c8c99e0d..1c8c99e0d 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 a2aa0fe06..a2aa0fe06 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 aab5e0ea5..aab5e0ea5 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 23e06a53b..23e06a53b 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 9720d3a94..9720d3a94 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 b11fc8fce..b11fc8fce 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 09456e2b2..09456e2b2 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 6b63af0b8..6b63af0b8 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 07cd5cb13..07cd5cb13 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 774ab1b45..774ab1b45 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 f6d0e3125..f6d0e3125 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 7ff38ad4d..7ff38ad4d 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 2adde9e47..2adde9e47 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 49cae8028..49cae8028 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 43c25ee6e..43c25ee6e 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 efdbb1aad..efdbb1aad 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 51e9a03df..51e9a03df 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 d2c0da7bc..d2c0da7bc 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 76c92028b..76c92028b 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 21a94c82a..21a94c82a 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 72784a366..72784a366 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 51055c018..51055c018 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 bfb37b477..bfb37b477 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 c271674d7..c271674d7 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 caa86f6c3..caa86f6c3 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 c29d70a21..c29d70a21 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 3570a1792..3570a1792 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 5fe961105..5fe961105 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 42612dfa5..42612dfa5 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 90f8f792e..90f8f792e 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 ebd4e66f4..ebd4e66f4 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 5dc402546..5dc402546 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 cf4223fbd..cf4223fbd 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 af36ec30d..af36ec30d 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 c4e63c767..c4e63c767 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 bb654a073..bb654a073 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 5d49e0b19..5d49e0b19 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 4bbaf41f2..4bbaf41f2 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 ecaa4e123..ecaa4e123 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 a1a3407b7..a1a3407b7 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 8778c6d54..8778c6d54 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 a8dcc13e5..a8dcc13e5 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 9c1a1e086..9c1a1e086 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 55a478abc..55a478abc 100644
--- a/bin/cleye.config
+++ b/bin/xxx_cleye.config
diff --git a/bin/computation6.0.dll b/bin/xxx_computation6.0.dll
index f742040f1..f742040f1 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 5115066ce..5115066ce 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 d285bac79..d285bac79 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 3c1c39634..3c1c39634 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 5024bd101..5024bd101 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 1f133a2c0..1f133a2c0 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 c0337ab46..c0337ab46 100644
--- a/bin/licence.rtf
+++ b/bin/xxx_licence.rtf
diff --git a/bin/license.rtf b/bin/xxx_license.rtf
index 5352d4629..5352d4629 100644
--- a/bin/license.rtf
+++ b/bin/xxx_license.rtf
diff --git a/bin/npclient.dll b/bin/xxx_npclient.dll
index b728cb954..b728cb954 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 fef149d47..fef149d47 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 6cab49570..6cab49570 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 5103bece4..5103bece4 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 b21accc68..b21accc68 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 69e46f47b..69e46f47b 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 91a04acd4..91a04acd4 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 a79a5c81b..a79a5c81b 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 bf3e0f134..bf3e0f134 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 c9427a2d6..c9427a2d6 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 ce05c0289..ce05c0289 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 4eb8adb91..4eb8adb91 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 d2e91adac..d2e91adac 100644
--- a/cmake/FindGL.cmake
+++ b/cmake/xxx_findgl.cmake
diff --git a/cmake/FindQxt.cmake b/cmake/xxx_findqxt.cmake
index 1ddfa0dda..1ddfa0dda 100644
--- a/cmake/FindQxt.cmake
+++ b/cmake/xxx_findqxt.cmake
diff --git a/dinput/dinput8.lib b/dinput/xxx_dinput8.lib
index 3fad62fbd..3fad62fbd 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 8397d134a..8397d134a 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 8d9212396..8d9212396 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 0940508c9..0940508c9 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 c23e3ac9f..c23e3ac9f 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 addaee9a7..addaee9a7 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 980a0e555..980a0e555 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 5d70447e6..5d70447e6 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 6bc6a44c7..6bc6a44c7 100644
--- a/faceapi/build_options.h
+++ b/faceapi/xxx_build_options.h
diff --git a/faceapi/lock.h b/faceapi/xxx_lock.h
index efe38605f..efe38605f 100644
--- a/faceapi/lock.h
+++ b/faceapi/xxx_lock.h
diff --git a/faceapi/lockfree.h b/faceapi/xxx_lockfree.h
index ce7d2a64a..ce7d2a64a 100644
--- a/faceapi/lockfree.h
+++ b/faceapi/xxx_lockfree.h
diff --git a/faceapi/main.cpp b/faceapi/xxx_main.cpp
index 46732cb30..46732cb30 100644
--- a/faceapi/main.cpp
+++ b/faceapi/xxx_main.cpp
diff --git a/faceapi/mutex.h b/faceapi/xxx_mutex.h
index 11aabafc5..11aabafc5 100644
--- a/faceapi/mutex.h
+++ b/faceapi/xxx_mutex.h
diff --git a/faceapi/stdafx.cpp b/faceapi/xxx_stdafx.cpp
index b4263f596..b4263f596 100644
--- a/faceapi/stdafx.cpp
+++ b/faceapi/xxx_stdafx.cpp
diff --git a/faceapi/stdafx.h b/faceapi/xxx_stdafx.h
index d97c93535..d97c93535 100644
--- a/faceapi/stdafx.h
+++ b/faceapi/xxx_stdafx.h
diff --git a/faceapi/utils.h b/faceapi/xxx_utils.h
index 1fdb35b53..1fdb35b53 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 141daa27a..e51cebfa5 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 a1fb306f8..a1fb306f8 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 000000000..d8bd1d0a7
--- /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 000000000..cd1d0dadd
--- /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 000000000..cd9829b5e
--- /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 c86ffffec..75cbbcd25 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 2965a07f5..2965a07f5 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 54f3ccd18..ca40906f1 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 264d14c51..264d14c51 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 745da7c6e..d0839e5d0 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 db88fdc82..3639e26bd 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 052c68995..052c68995 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 3000ece63..20c521113 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 000000000..d64af301e
--- /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 000000000..a51eced00
--- /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 e392442eb..e392442eb 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 9d1d72ff6..9d1d72ff6 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 5115066ce..5115066ce 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 68682d888..68682d888 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 3b31623bc..3b31623bc 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 5bf65f0d3..5bf65f0d3 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 886c586e6..886c586e6 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 000000000..ebd4e66f4
--- /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 000000000..5dc402546
--- /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 90f8f792e..90f8f792e 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 9bc402aad..9bc402aad 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 fe21fa157..fe21fa157 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 cf4223fbd..cf4223fbd 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 af36ec30d..af36ec30d 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 73ead8534..73ead8534 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 c4e63c767..c4e63c767 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 bb654a073..bb654a073 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 5d49e0b19..5d49e0b19 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 4bbaf41f2..4bbaf41f2 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 ecaa4e123..ecaa4e123 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 a1a3407b7..a1a3407b7 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 f01f60248..f01f60248 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 2da8f9f57..2da8f9f57 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 2811974c1..2811974c1 100644
--- a/facetracknoir/FaceApp.cpp
+++ b/facetracknoir/xxx_faceapp.cpp
diff --git a/facetracknoir/FaceApp.h b/facetracknoir/xxx_faceapp.h
index 39fd4b2fe..39fd4b2fe 100644
--- a/facetracknoir/FaceApp.h
+++ b/facetracknoir/xxx_faceapp.h
diff --git a/facetracknoir/FaceTrackNoIR.cpp b/facetracknoir/xxx_facetracknoir.cpp
index cd4e0a4da..cd4e0a4da 100644
--- a/facetracknoir/FaceTrackNoIR.cpp
+++ b/facetracknoir/xxx_facetracknoir.cpp
diff --git a/facetracknoir/FaceTrackNoIR.h b/facetracknoir/xxx_facetracknoir.h
index 756b58677..756b58677 100644
--- a/facetracknoir/FaceTrackNoIR.h
+++ b/facetracknoir/xxx_facetracknoir.h
diff --git a/facetracknoir/images/FaceTrackNoIR.ico b/facetracknoir/xxx_facetracknoir.ico
index 5115066ce..5115066ce 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 60e4da7bc..60e4da7bc 100644
--- a/facetracknoir/FaceTrackNoIR.qrc
+++ b/facetracknoir/xxx_facetracknoir.qrc
diff --git a/facetracknoir/FaceTrackNoIR.rc b/facetracknoir/xxx_facetracknoir.rc
index ed8a68c10..ed8a68c10 100644
--- a/facetracknoir/FaceTrackNoIR.rc
+++ b/facetracknoir/xxx_facetracknoir.rc
diff --git a/facetracknoir/FaceTrackNoIR.ui b/facetracknoir/xxx_facetracknoir.ui
index 8c3db4a4e..8c3db4a4e 100644
--- a/facetracknoir/FaceTrackNoIR.ui
+++ b/facetracknoir/xxx_facetracknoir.ui
diff --git a/facetracknoir/FSUIPCServer.cpp b/facetracknoir/xxx_fsuipcserver.cpp
index 3006b430a..3006b430a 100644
--- a/facetracknoir/FSUIPCServer.cpp
+++ b/facetracknoir/xxx_fsuipcserver.cpp
diff --git a/facetracknoir/FSUIPCServer.h b/facetracknoir/xxx_fsuipcserver.h
index caba2f33e..caba2f33e 100644
--- a/facetracknoir/FSUIPCServer.h
+++ b/facetracknoir/xxx_fsuipcserver.h
diff --git a/facetracknoir/FTNoIR_Curves.ui b/facetracknoir/xxx_ftnoir_curves.ui
index 19c68cf06..19c68cf06 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 b61203784..b61203784 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 44c7e99f5..44c7e99f5 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 2a5ad6917..2a5ad6917 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 bb440fc6f..bb440fc6f 100644
--- a/facetracknoir/FTNoIR_Preferences.ui
+++ b/facetracknoir/xxx_ftnoir_preferences.ui
diff --git a/facetracknoir/FTNServer.cpp b/facetracknoir/xxx_ftnserver.cpp
index 101d06a5f..101d06a5f 100644
--- a/facetracknoir/FTNServer.cpp
+++ b/facetracknoir/xxx_ftnserver.cpp
diff --git a/facetracknoir/FTNServer.h b/facetracknoir/xxx_ftnserver.h
index f392e708c..f392e708c 100644
--- a/facetracknoir/FTNServer.h
+++ b/facetracknoir/xxx_ftnserver.h
diff --git a/facetracknoir/main.cpp b/facetracknoir/xxx_main.cpp
index 6e0549d7b..6e0549d7b 100644
--- a/facetracknoir/main.cpp
+++ b/facetracknoir/xxx_main.cpp
diff --git a/facetracknoir/paintwidget.h b/facetracknoir/xxx_paintwidget.h
index e69de29bb..e69de29bb 100644
--- a/facetracknoir/paintwidget.h
+++ b/facetracknoir/xxx_paintwidget.h
diff --git a/facetracknoir/postbuild.bat b/facetracknoir/xxx_postbuild.bat
index 6653067e4..6653067e4 100644
--- a/facetracknoir/postbuild.bat
+++ b/facetracknoir/xxx_postbuild.bat
diff --git a/facetracknoir/Readme.txt b/facetracknoir/xxx_readme.txt
index 8bd289665..8bd289665 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 e43d954ca..e43d954ca 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 e99111a11..e99111a11 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 e121fe9fc..e121fe9fc 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 75059fe3a..75059fe3a 100644
--- a/facetracknoir/resource.h
+++ b/facetracknoir/xxx_resource.h
diff --git a/facetracknoir/rotation.cpp b/facetracknoir/xxx_rotation.cpp
index 1c89d775e..1c89d775e 100644
--- a/facetracknoir/rotation.cpp
+++ b/facetracknoir/xxx_rotation.cpp
diff --git a/facetracknoir/rotation.h b/facetracknoir/xxx_rotation.h
index 967d6661d..967d6661d 100644
--- a/facetracknoir/rotation.h
+++ b/facetracknoir/xxx_rotation.h
diff --git a/facetracknoir/spot.h b/facetracknoir/xxx_spot.h
index 38518c74a..38518c74a 100644
--- a/facetracknoir/spot.h
+++ b/facetracknoir/xxx_spot.h
diff --git a/facetracknoir/tracker.cpp b/facetracknoir/xxx_tracker.cpp
index 5396c95b7..5396c95b7 100644
--- a/facetracknoir/tracker.cpp
+++ b/facetracknoir/xxx_tracker.cpp
diff --git a/facetracknoir/tracker.h b/facetracknoir/xxx_tracker.h
index 4b1612938..4b1612938 100644
--- a/facetracknoir/tracker.h
+++ b/facetracknoir/xxx_tracker.h
diff --git a/facetracknoir/tracker_types.cpp b/facetracknoir/xxx_tracker_types.cpp
index cdd8d239e..cdd8d239e 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 5a13af85c..5a13af85c 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 000000000..185fc705e
--- /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 000000000..3a7fab320
--- /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 e02f2fe8a..ac6148e81 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 299beb823..046eef1be 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 d48a2c286..d48a2c286 100644
--- a/freetrackclient/FTClient.cpp
+++ b/freetrackclient/xxx_ftclient.cpp
diff --git a/freetrackclient/FTClient.h b/freetrackclient/xxx_ftclient.h
index 406e12376..406e12376 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 d263db2dc..d263db2dc 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 9a7d75fae..9a7d75fae 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 3e4c3bf62..3e4c3bf62 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 77aa59eab..77aa59eab 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 c230eed85..c230eed85 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 e1452bf2a..e1452bf2a 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 af6522ce7..af6522ce7 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 44ce3d72d..44ce3d72d 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 aac4048e4..aac4048e4 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 ecde6a108..ecde6a108 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 12b02caf2..12b02caf2 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 e64ec35a5..e64ec35a5 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 fac0e13c0..fac0e13c0 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 18afe3bd2..18afe3bd2 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 c7798ac0a..c7798ac0a 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 4e6444461..4e6444461 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 e9419a730..e9419a730 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 29c28d800..29c28d800 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 e0315b779..e0315b779 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 67eb060b6..67eb060b6 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 67eb060b6..67eb060b6 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 67eb060b6..67eb060b6 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 67eb060b6..67eb060b6 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 f4160001c..f4160001c 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 55b656195..55b656195 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 cff8cb839..cff8cb839 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 65038ebaf..65038ebaf 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 3f598d35b..3f598d35b 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 3527bad7b..3527bad7b 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 f96c0f882..f96c0f882 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 949dc2133..949dc2133 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 3469e7aac..3469e7aac 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 5506f5341..5506f5341 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 347735400..347735400 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 0138a4c1c..0138a4c1c 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 ca71063b8..ca71063b8 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 1e715ac95..1e715ac95 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 9afd1953f..9afd1953f 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 b61203784..b61203784 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 5a4663a1c..5a4663a1c 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 8503f6e76..8503f6e76 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 08c13c08e..08c13c08e 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 d61c2d830..d61c2d830 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 2830d09ac..2830d09ac 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 02554c3de..02554c3de 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 22852f89f..22852f89f 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 13231293b..13231293b 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 fc5abbcf4..fc5abbcf4 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 b84619939..b84619939 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 c82c3e790..c82c3e790 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 2e6c91f7b..2e6c91f7b 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 4513c6bae..4513c6bae 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 1f389711d..1f389711d 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 25ecc6fe4..25ecc6fe4 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 5115066ce..5115066ce 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 56983fbe3..56983fbe3 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 cfb6c618c..cfb6c618c 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 24f760c52..24f760c52 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 58dbfbade..58dbfbade 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 00badedfe..00badedfe 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 b69d1f3fe..b69d1f3fe 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 1151ab2b6..1151ab2b6 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 4a6cc3b95..4a6cc3b95 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 f81a38f75..f81a38f75 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 b7765b962..b7765b962 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 b8d7d7ee4..b8d7d7ee4 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 cc6ddc171..cc6ddc171 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 0e5e11d9c..0e5e11d9c 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 1c71d409f..1c71d409f 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 7ca38e64f..7ca38e64f 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 42eca457d..42eca457d 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 9047fa615..9047fa615 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 f67f95db6..f67f95db6 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 3e7a5062f..3e7a5062f 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 de6018af9..de6018af9 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 19b123ba8..19b123ba8 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 89c5a65ad..89c5a65ad 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 396df4d1d..396df4d1d 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 9f4a61189..9f4a61189 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 bc6630562..bc6630562 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 a8802e4ad..a8802e4ad 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 ace7a6e3d..ace7a6e3d 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 8e862cee5..8e862cee5 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 fc359c53a..fc359c53a 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 0bb8028f9..0bb8028f9 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 620fb9fdf..620fb9fdf 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 71b192423..71b192423 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 8e010e3ec..8e010e3ec 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 02e95bb4d..02e95bb4d 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 d988ba71c..d988ba71c 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 7555ce257..7555ce257 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 336ede2d2..336ede2d2 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 1a449dca5..1a449dca5 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 f3bfd3819..f3bfd3819 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 485109979..485109979 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 ac8d45cfc..ac8d45cfc 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 0e532c9fd..0e532c9fd 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 9627f700c..9627f700c 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 0a1bc3aea..0a1bc3aea 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 000000000..14207a67d
--- /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 000000000..5ad4ee65b
--- /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 000000000..048801382
--- /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 000000000..72667ac70
--- /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 000000000..c4b2aedc0
--- /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 95032a25c..95032a25c 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 4244902c5..028414181 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 15ca9cf32..15ca9cf32 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 32637cc9e..32637cc9e 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 fc11c738f..fc11c738f 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 cd1f0842f..cd1f0842f 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 0174df232..0174df232 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 5b77da69d..5b77da69d 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 2533a39b7..2533a39b7 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 eb1fba2cf..eb1fba2cf 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 11c5d52f7..11c5d52f7 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 a1531dd77..a1531dd77 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 0f836dfe0..0f836dfe0 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 7f58d77d8..7f58d77d8 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 15ad63aa7..15ad63aa7 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 40d1bc4fc..40d1bc4fc 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 88162c86f..88162c86f 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 4aa1a6588..4aa1a6588 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 b142d2bb8..b142d2bb8 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 d617de19d..d617de19d 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 21baad19b..21baad19b 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 c14e94adc..c14e94adc 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 363b5b09a..363b5b09a 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 2aaf725a3..2aaf725a3 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 9b75a1b60..9b75a1b60 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 4024d0115..4024d0115 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 c2b41da12..c2b41da12 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 f49fef183..f49fef183 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 19b24c849..19b24c849 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 93befd192..93befd192 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 624e35a03..624e35a03 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 5c4224027..5c4224027 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 5f01568fd..5f01568fd 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 b7aed1d06..b7aed1d06 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 b76ff1b29..b76ff1b29 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 7ac6c0f4e..7ac6c0f4e 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 102c85bde..102c85bde 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 94645c844..94645c844 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 b489822a7..b489822a7 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 a086a8889..a086a8889 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 000000000..aab01cfda
--- /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 000000000..ed7c9d54d
--- /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 000000000..ce2c0bb5b
--- /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 000000000..44925b21a
--- /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 000000000..c6b65fcc1
--- /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 243564d18..243564d18 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 8dc9cf98c..8dc9cf98c 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 6e4d89031..6e4d89031 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 96a5c6266..96a5c6266 100644
--- a/CMakeLists.txt
+++ b/xxx_cmakelists.txt
diff --git a/list of compatible games.xls b/xxx_list of compatible games.xls
index bdc55e626..bdc55e626 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 a057ef439..a057ef439 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 18d3babbd..18d3babbd 100644
--- a/readme.txt
+++ b/xxx_readme.txt