The response has been limited to 50k tokens of the smallest files in the repo. You can remove this limitation by removing the max tokens filter.
├── .clang-format
├── .clang-tidy
├── .editorconfig
├── .gitattributes
├── .github
    ├── CONTRIBUTING.md
    └── workflows
    │   ├── build-windows.bat
    │   ├── cmake.yml
    │   └── linux-package.yml
├── .gitignore
├── .gitmodules
├── 3rdparty-notices
    ├── ARUCO-COPYING.txt
    ├── FACETRACKNOIR-COPYING.txt
    ├── Kinect-V2-SDK-Eula.rtf
    ├── LIBOVR-COPYING.txt
    ├── LIBQXT-COPYING.txt
    ├── LIBUSB-COPYING.txt
    ├── NFAILCLIENT-CREDIT.txt
    ├── ONNXRUNTIME.txt
    ├── OPENCV-COPYING.txt
    ├── QT5-COPYING.txt
    ├── VALVE-STEAMVR-COPYING.txt
    ├── VJOYSTICK-COPYING.txt
    ├── WIIYOURSELF-NONFREE.txt
    └── ps3eyedriver
    │   ├── libusb0-AUTHORS.txt
    │   ├── libusbK-AUTHORS.txt
    │   ├── libusbK-LICENSE-bsd.txt
    │   ├── libusbK-LICENSE-libusb.txt
    │   ├── ps3eyedriver-LICENSE.txt
    │   └── ps3eyedriver-opentrack-LICENSE.txt
├── AUTHORS.md
├── CMakeLists.txt
├── OPENTRACK-LICENSING.txt
├── README.md
├── WARRANTY.txt
├── api
    ├── CMakeLists.txt
    ├── export.hpp
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── plugin-api.cpp
    ├── plugin-api.hpp
    └── plugin-support.hpp
├── bin
    ├── NPClient.dll
    ├── NPClient64.dll
    ├── TrackIR.exe
    ├── build-msvc.cmd
    ├── cleye.config
    ├── drmemory-suppressions.txt
    ├── freetrackclient.dll
    ├── freetrackclient64.dll
    └── qt.conf
├── cmake
    ├── COPYING.txt
    ├── FindONNXRuntime.cmake
    ├── GetGitRevisionDescription.cmake
    ├── GetGitRevisionDescription.cmake.in
    ├── apple.cmake
    ├── linux.cmake
    ├── mingw-w64.cmake
    ├── mrproper.cmake
    ├── msvc.cmake
    ├── opentrack-boilerplate.cmake
    ├── opentrack-hier.cmake
    ├── opentrack-i18n.cmake
    ├── opentrack-install.cmake
    ├── opentrack-load-user-settings.cmake
    ├── opentrack-mrproper.cmake
    ├── opentrack-opencv.cmake
    ├── opentrack-org.cmake
    ├── opentrack-pkg-config.cmake
    ├── opentrack-platform.cmake
    ├── opentrack-policy.cmake
    ├── opentrack-qt.cmake
    ├── opentrack-variant.cmake
    ├── opentrack-version.cmake
    ├── translation-stub.ts
    └── unix.cmake
├── compat
    ├── CMakeLists.txt
    ├── activation-context.cpp
    ├── activation-context.hpp
    ├── arch.hpp
    ├── base-path.cpp
    ├── base-path.hpp
    ├── camera-names.cpp
    ├── camera-names.hpp
    ├── check-visible.cpp
    ├── check-visible.hpp
    ├── correlation-calibrator.cpp
    ├── correlation-calibrator.hpp
    ├── enum-operators.hpp
    ├── euler.cpp
    ├── euler.hpp
    ├── export.hpp
    ├── hamilton-tools.cpp
    ├── hamilton-tools.h
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── library-path.hpp
    ├── linkage-macros.hpp
    ├── linkage.hpp
    ├── macros.h
    ├── math-imports.hpp
    ├── math.hpp
    ├── meta.hpp
    ├── mutex.cpp
    ├── mutex.hpp
    ├── process-list.cpp
    ├── process-list.hpp
    ├── qhash.hpp
    ├── qt-dpi.hpp
    ├── qt-signal.cpp
    ├── qt-signal.hpp
    ├── run-in-thread.hpp
    ├── shm.cpp
    ├── shm.h
    ├── simple-mat.hpp
    ├── sleep.cpp
    ├── sleep.hpp
    ├── sysexits.hpp
    ├── thread-name.cpp
    ├── thread-name.hpp
    ├── time.hpp
    ├── timer.cpp
    ├── timer.hpp
    ├── tr.hpp
    └── variance.hpp
├── contrib-noinst
    ├── ft_tester
    │   ├── Makefile.am
    │   ├── Makefile.in
    │   ├── fttester.rc.in
    │   ├── main.cpp
    │   └── resource.h
    ├── important-stuff
    │   ├── NPClient.h
    │   ├── NPClient.spec
    │   ├── NPClient_dll.h
    │   ├── NPClient_main.c
    │   ├── game-data.exe
    │   ├── game_data.c
    │   └── game_data.h
    ├── make-csv.pl
    └── tester
    │   ├── Makefile.am
    │   ├── Makefile.in
    │   ├── main.cpp
    │   ├── npifc.c
    │   ├── npifc.h
    │   ├── npview.rc.in
    │   └── resource.h
├── contrib
    ├── FlightGear
    │   ├── Protocol
    │   │   └── headtracker.xml
    │   └── readme.txt
    ├── Tir4Fun
    │   ├── npclient.dll
    │   ├── readme.txt
    │   └── tir4fun.exe
    ├── aruco
    │   ├── README.txt
    │   ├── aruco_create_marker.exe
    │   └── test3.png
    ├── cute-octopus-vector-material_15-1831.jpg
    ├── freepie-udp
    │   ├── FreePIE_IMU_Android9.apk
    │   ├── com.wishsalad.wishimu-debug.apk
    │   ├── license.txt
    │   └── src-WishIMU.zip
    ├── freetracktest
    │   ├── freetracktest.exe
    │   └── readme.txt
    ├── fs2002 and fs2004
    │   └── fsuipc.dll
    ├── glovepie
    │   ├── facetracknoir2trackir.pie
    │   └── readme.txt
    ├── hatire-test-data
    │   ├── README.txt
    │   └── puttyLog1MIN.zip
    ├── libusbK-dev-kit
    │   └── libusbK-3.1.0.0-setup.exe
    ├── libusbK-inf-wizard
    │   ├── libusbK-inf-wizard.exe
    │   └── license
    │   │   ├── AUTHORS-libusb0.txt
    │   │   ├── AUTHORS-libusbK.txt
    │   │   ├── LICENSE-bsd.txt
    │   │   ├── LICENSE-gpl3.txt
    │   │   └── LICENSE-lgpl3.txt
    ├── npclient
    │   ├── COMPILE.TXT
    │   ├── README-CREDIT.txt
    │   └── npclient.c
    └── trackir-client
    │   ├── client.c
    │   └── client.exe
├── coverity
    ├── .gitignore
    ├── aruco
    │   └── .gitkeep
    ├── build.cmd
    ├── build.sh
    ├── libovr-025
    │   └── .gitkeep
    ├── libovr-042
    │   └── .gitkeep
    ├── libovr-080
    │   └── .gitkeep
    ├── libovr-140
    │   └── .gitkeep
    ├── opencv
    │   └── .gitkeep
    └── opentrack
    │   └── .gitkeep
├── csv
    ├── CMakeLists.txt
    ├── csv.cpp
    ├── csv.h
    └── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
├── cv
    ├── CMakeLists.txt
    ├── affine.cpp
    ├── affine.hpp
    ├── init.cpp
    ├── init.hpp
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── numeric.hpp
    ├── ocv-check.cxx
    ├── translation-calibrator.cpp
    ├── translation-calibrator.hpp
    ├── video-widget.cpp
    └── video-widget.hpp
├── dinput
    ├── CMakeLists.txt
    ├── dinput.cpp
    ├── dinput.hpp
    ├── export.hpp
    ├── keybinding-worker.cpp
    ├── keybinding-worker.hpp
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── win32-joystick.cpp
    └── win32-joystick.hpp
├── filter-accela-hamilton
    ├── CMakeLists.txt
    ├── accela_hamilton.cpp
    ├── accela_hamilton.h
    ├── accela_hamilton_dialog.cpp
    ├── accela_hamilton_filtercontrols.ui
    ├── accela_hamilton_settings.hpp
    └── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
├── filter-accela
    ├── CMakeLists.txt
    ├── accela-settings.hpp
    ├── ftnoir_accela_filtercontrols.ui
    ├── ftnoir_filter_accela.cpp
    ├── ftnoir_filter_accela.h
    ├── ftnoir_filter_accela_dialog.cpp
    └── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
├── filter-ewma2
    ├── CMakeLists.txt
    ├── ftnoir_ewma_filtercontrols.ui
    ├── ftnoir_filter_ewma2.cpp
    ├── ftnoir_filter_ewma2.h
    ├── ftnoir_filter_ewma2_dialog.cpp
    └── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
├── filter-hamilton
    ├── CMakeLists.txt
    ├── ReadMe.txt
    ├── ftnoir_filter_hamilton.cpp
    ├── ftnoir_filter_hamilton.h
    ├── ftnoir_filter_hamilton_dialog.cpp
    ├── ftnoir_hamilton_filtercontrols.ui
    └── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
├── filter-nm
    ├── CMakeLists.txt
    ├── ftnoir_filter_nm.cpp
    ├── ftnoir_filter_nm.h
    ├── ftnoir_filter_nm_dialog.cpp
    ├── ftnoir_nm_filtercontrols.ui
    └── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
├── freetrackclient
    ├── freetrackclient.c
    └── fttypes.h
├── gui
    ├── CMakeLists.txt
    ├── correlation-calibrator.ui
    ├── export.hpp
    ├── images
    │   ├── curves.png
    │   ├── english.png
    │   ├── filter-16.png
    │   ├── no-feed.png
    │   ├── opentrack.png
    │   ├── settings16.png
    │   ├── tools.png
    │   └── tracking-not-started.png
    ├── init.cpp
    ├── init.hpp
    ├── keyboard.cpp
    ├── keyboard.h
    ├── keyboard_listener.ui
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── mapping-dialog.cpp
    ├── mapping-dialog.hpp
    ├── mapping-dialog.ui
    ├── opentrack-res.qrc
    ├── options-dialog.cpp
    ├── options-dialog.hpp
    ├── options-dialog.ui
    ├── process-detector-fancy-table.cpp
    ├── process-detector-fancy-table.hpp
    ├── process_detector.cpp
    ├── process_detector.h
    └── process_widget.ui
├── installer
    ├── .gitignore
    ├── non-ui-blocking-exec.iss
    └── opentrack-installer.iss
├── logic
    ├── CMakeLists.txt
    ├── export.hpp
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── main-settings.cpp
    ├── main-settings.hpp
    ├── mappings.cpp
    ├── mappings.hpp
    ├── pipeline.cpp
    ├── pipeline.hpp
    ├── runtime-libraries.cpp
    ├── runtime-libraries.hpp
    ├── shortcuts.cpp
    ├── shortcuts.h
    ├── state.cpp
    ├── state.hpp
    ├── tracklogger.cpp
    ├── tracklogger.hpp
    ├── win32-shortcuts.cpp
    ├── win32-shortcuts.h
    ├── work.cpp
    └── work.hpp
├── macosx
    ├── CMakeLists.txt
    ├── Info.plist
    ├── PkgInfo
    ├── dmgbackground.png
    ├── install-fail-tool
    └── make-app-bundle.sh
├── migration
    ├── 20160906_00-mappings.cpp
    ├── 20160906_01-axis-signs.cpp
    ├── 20160906_02-modules.cpp
    ├── 20170420_00-udp-naming.cpp
    ├── 20171013_00-tracker-pt-threshold.cpp
    ├── 20171020_00-max-pitch-output.cpp
    ├── 20180102_00-process-detector-separator.cpp
    ├── 20180118_00-reltrans.cpp
    ├── 20180428_00-module-names.cpp
    ├── 20220105_00-pt-grayscale.cpp
    ├── 20220126_00-camera-name.cpp
    ├── CMakeLists.txt
    ├── export.hpp
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── migration.cpp
    └── migration.hpp
├── opentrack
    ├── CMakeLists.txt
    ├── appnap_mac.mm
    ├── defs.hpp
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── main-window.cpp
    ├── main-window.hpp
    ├── main-window.ui
    ├── main.cpp
    ├── new_config.ui
    ├── new_file_dialog.cpp
    ├── new_file_dialog.h
    ├── opentrack.ico
    └── resources.rc
├── options
    ├── CMakeLists.txt
    ├── base-value.cpp
    ├── base-value.hpp
    ├── bundle.cpp
    ├── bundle.hpp
    ├── connector.cpp
    ├── connector.hpp
    ├── defs.hpp
    ├── export.hpp
    ├── globals.cpp
    ├── globals.hpp
    ├── group.cpp
    ├── group.hpp
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── metatype.cpp
    ├── metatype.hpp
    ├── options.hpp
    ├── scoped.cpp
    ├── scoped.hpp
    ├── slider.cpp
    ├── slider.hpp
    ├── tie.cpp
    ├── tie.hpp
    ├── value-traits.hpp
    ├── value.cpp
    └── value.hpp
├── pose-widget
    ├── CMakeLists.txt
    ├── ReadMe.txt
    ├── export.hpp
    ├── images
    │   ├── side1.png
    │   └── side6.png
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── pose-widget.cpp
    ├── pose-widget.hpp
    └── posewidget.qrc
├── presets
    └── README.txt
├── proto-flightgear
    ├── CMakeLists.txt
    ├── fg-protocol.qrc
    ├── ftnoir_fgcontrols.ui
    ├── ftnoir_protocol_fg.cpp
    ├── ftnoir_protocol_fg.h
    ├── ftnoir_protocol_fg_dialog.cpp
    ├── images
    │   └── flightgear.png
    └── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
├── proto-fsuipc
    ├── CMakeLists.txt
    ├── fsuipc-protocol.qrc
    ├── ftnoir_fsuipccontrols.ui
    ├── ftnoir_protocol_fsuipc.cpp
    ├── ftnoir_protocol_fsuipc.h
    ├── ftnoir_protocol_fsuipc_dialog.cpp
    ├── images
    │   ├── fs9.png
    │   └── fs91.png
    └── lang
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
├── proto-ft
    ├── CMakeLists.txt
    ├── ft-protocol.qrc
    ├── ftnoir_ftcontrols.ui
    ├── ftnoir_protocol_ft.cpp
    ├── ftnoir_protocol_ft.h
    ├── ftnoir_protocol_ft_dialog.cpp
    ├── images
    │   └── freetrack.png
    └── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
├── proto-iokit-foohid
    ├── CMakeLists.txt
    ├── README.md
    ├── foohidjoystick.cpp
    ├── foohidjoystick.h
    ├── iokitprotocol.cpp
    ├── iokitprotocol.h
    ├── iokitprotocoldialog.cpp
    ├── iokitprotocoldialog.h
    └── lang
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
├── proto-libevdev
    ├── CMakeLists.txt
    ├── ftnoir_libevdev_controls.ui
    ├── ftnoir_protocol_libevdev.cpp
    ├── ftnoir_protocol_libevdev.h
    ├── ftnoir_protocol_libevdev_dialog.cpp
    ├── images
    │   └── linux.png
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    └── libevdev-protocol.qrc
├── proto-mouse
    ├── CMakeLists.txt
    ├── ftnoir_mousecontrols.ui
    ├── ftnoir_protocol_mouse.cpp
    ├── ftnoir_protocol_mouse.h
    ├── ftnoir_protocol_mouse_dialog.cpp
    ├── images
    │   └── mouse.png
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── mouse-settings.hpp
    └── win32-mouse-protocol.qrc
├── proto-osc
    ├── CMakeLists.txt
    ├── dialog.cpp
    ├── dialog.hpp
    ├── dialog.ui
    ├── images
    │   └── osc-icon.png
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── metadata.cpp
    ├── metadata.hpp
    ├── osc-res.qrc
    ├── proto.cpp
    ├── proto.hpp
    └── settings.hpp
├── proto-simconnect
    ├── CMakeLists.txt
    ├── fsx_p3d_sp2_xpack.manifest
    ├── fsx_rtm.manifest
    ├── fsx_sp1.manifest
    ├── fsx_sp2.manifest
    ├── fsx_steam_last.manifest
    ├── fsx_steam_orig.manifest
    ├── ftnoir-protocol-sc.rc
    ├── ftnoir_protocol_sc.cpp
    ├── ftnoir_protocol_sc.h
    ├── ftnoir_protocol_sc_dialog.cpp
    ├── ftnoir_sccontrols.ui
    ├── images
    │   ├── fsx.png
    │   └── fsx1.png
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── manifest-template.in
    ├── sc-protocol.qrc
    └── simconnect versions.txt
├── proto-udp
    ├── CMakeLists.txt
    ├── ftnoir_ftncontrols.ui
    ├── ftnoir_protocol_ftn.cpp
    ├── ftnoir_protocol_ftn.h
    ├── ftnoir_protocol_ftn_dialog.cpp
    └── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
├── proto-vjoystick
    ├── CMakeLists.txt
    ├── images
    │   └── vjoystick.png
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── vjoystick.cpp
    ├── vjoystick.h
    ├── vjoystick.qrc
    ├── vjoystick.ui
    └── vjoystick_dialog.cpp
├── proto-wine
    ├── CMakeLists.txt
    ├── ftnoir_protocol_wine.cpp
    ├── ftnoir_protocol_wine.h
    ├── ftnoir_protocol_wine_dialog.cpp
    ├── ftnoir_winecontrols.ui
    ├── images
    │   └── wine.png
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── opentrack-wrapper-wine-main.cxx
    ├── opentrack-wrapper-wine-posix.cxx
    ├── opentrack-wrapper-wine-windows.cxx
    ├── proton.cpp
    ├── proton.h
    ├── wine-protocol.qrc
    └── wine-shm.h
├── qxt-mini
    ├── CMakeLists.txt
    ├── QxtGlobalShortcut
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── powerset.hpp
    ├── qxtglobal.h
    ├── qxtglobalshortcut.cpp
    ├── qxtglobalshortcut.h
    ├── qxtglobalshortcut_mac.cpp
    ├── qxtglobalshortcut_p.h
    ├── qxtglobalshortcut_x11.cpp
    ├── x11-keymap.cpp
    └── x11-keymap.hpp
├── redist
    ├── x64
    │   ├── msvcp110.dll
    │   └── msvcr110.dll
    └── x86
    │   ├── msvcp110.dll
    │   └── msvcr110.dll
├── sdk-paths-runner@GNU-Linux.cmake
├── sdk-paths-runneradmin@MSVC-windows.cmake
├── sdk-paths-sthalik@Clang-Linux.cmake
├── sdk-paths-sthalik@Clang-windows.cmake
├── sdk-paths-sthalik@GNU-windows.cmake
├── sdk-paths-sthalik@MSVC-windows.cmake
├── settings
    └── facetracknoir supported games.csv
├── spline
    ├── CMakeLists.txt
    ├── axis-opts.cpp
    ├── axis-opts.hpp
    ├── broken
    │   ├── qfunctionconfiguratorplugin.cpp
    │   └── qfunctionconfiguratorplugin.h
    ├── export.hpp
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── spline-widget.cpp
    ├── spline-widget.hpp
    ├── spline.cpp
    └── spline.hpp
├── tracker-aruco
    ├── CMakeLists.txt
    ├── aruco-tracker.qrc
    ├── aruco-trackercontrols.ui
    ├── compile-test
    │   └── abi.cpp
    ├── ftnoir_tracker_aruco.cpp
    ├── ftnoir_tracker_aruco.h
    ├── images
    │   └── aruco.png
    └── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
├── tracker-easy
    ├── CMakeLists.txt
    ├── Resources
    │   ├── cap_front.png
    │   ├── cap_side.png
    │   ├── clip_front.png
    │   ├── clip_side.png
    │   └── easy-tracker-logo.png
    ├── doc
    │   ├── index.htm
    │   ├── logo.png
    │   ├── ptrack.ico
    │   ├── settings1.png
    │   ├── settings2.png
    │   ├── settings3.png
    │   └── style.css
    ├── export.hpp
    ├── kalman-filter-pose.cpp
    ├── kalman-filter-pose.h
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── module.cpp
    ├── module.hpp
    ├── ocv-check.cxx
    ├── point-extractor.cpp
    ├── point-extractor.h
    ├── preview.cpp
    ├── preview.h
    ├── settings.h
    ├── tracker-easy-dialog.cpp
    ├── tracker-easy-dialog.h
    ├── tracker-easy-settings.ui
    ├── tracker-easy.cpp
    ├── tracker-easy.h
    └── tracker_easy.qrc
├── tracker-eyeware-beam
    ├── CMakeLists.txt
    ├── eyeware_beam.cpp
    ├── eyeware_beam.h
    ├── eyeware_beam.qrc
    ├── eyeware_beam.ui
    ├── eyeware_beam_logo.png
    └── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
├── tracker-freepie-udp
    ├── CMakeLists.txt
    ├── freepie-udp-controls.ui
    ├── freepie-udp-res.qrc
    ├── ftnoir_tracker_freepie-udp.cpp
    ├── ftnoir_tracker_freepie-udp.h
    ├── ftnoir_tracker_freepie-udp_dialog.cpp
    ├── glovepie.png
    └── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
├── tracker-fusion
    ├── CMakeLists.txt
    ├── fusion-tracker-logo.png
    ├── fusion.cpp
    ├── fusion.h
    ├── fusion.qrc
    ├── fusion.ui
    ├── fusion_dialog.cpp
    └── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
├── tracker-hatire
    ├── CMakeLists.txt
    ├── ftnoir_arduino_type.h
    ├── ftnoir_hat.qrc
    ├── ftnoir_hatcontrols.ui
    ├── ftnoir_tracker_hat.cpp
    ├── ftnoir_tracker_hat.h
    ├── ftnoir_tracker_hat_dialog.cpp
    ├── ftnoir_tracker_hat_dialog.h
    ├── ftnoir_tracker_hat_settings.h
    ├── images
    │   ├── hat.ico
    │   ├── hat.png
    │   └── hat_logo.png
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── thread.cpp
    └── thread.hpp
├── tracker-hydra
    ├── CMakeLists.txt
    ├── ftnoir_hydra_clientcontrols.ui
    ├── ftnoir_tracker_hydra.cpp
    ├── ftnoir_tracker_hydra.h
    ├── ftnoir_tracker_hydra_dialog.cpp
    └── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
├── tracker-joystick
    ├── CMakeLists.txt
    ├── ftnoir_tracker_joystick.cpp
    ├── ftnoir_tracker_joystick.h
    ├── ftnoir_tracker_joystick_controls.ui
    ├── ftnoir_tracker_joystick_dialog.cpp
    └── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
├── tracker-kinect-face
    ├── CMakeLists.txt
    ├── camera_kinect_ir.cpp
    ├── camera_kinect_ir.h
    ├── images
    │   └── kinect.png
    ├── kinect_face.qrc
    ├── kinect_face_settings.cpp
    ├── kinect_face_settings.h
    ├── kinect_face_settings.ui
    ├── kinect_face_tracker.cpp
    ├── kinect_face_tracker.h
    └── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
├── tracker-linux-joystick
    ├── CMakeLists.txt
    ├── ftnoir_tracker_linux_joystick.cpp
    ├── ftnoir_tracker_linux_joystick.h
    ├── ftnoir_tracker_linux_joystick_controls.ui
    ├── ftnoir_tracker_linux_joystick_dialog.cpp
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    └── linux_joystick.cpp
├── tracker-neuralnet
    ├── BUILD.md
    ├── CMakeLists.txt
    ├── deadzone_filter.cpp
    ├── deadzone_filter.h
    ├── ftnoir_tracker_neuralnet.cpp
    ├── ftnoir_tracker_neuralnet.h
    ├── images
    │   └── neuralnet.png
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── model_adapters.cpp
    ├── model_adapters.h
    ├── models
    │   ├── head-localizer.onnx
    │   ├── head-pose-0.2-big.onnx
    │   ├── head-pose-0.2-small.onnx
    │   └── head-pose-0.3-big-quantized.onnx
    ├── neuralnet-tracker.qrc
    ├── neuralnet-trackercontrols.ui
    ├── opencv_contrib.h
    ├── preview.cpp
    ├── preview.h
    ├── redist
    │   └── vcomp140.dll
    ├── tests.cpp
    └── unscented_trafo.h
├── tracker-pt
    ├── CMakeLists.txt
    ├── FTNoIR_PT_Controls.ui
    ├── Resources
    │   ├── Logo_IR.png
    │   ├── cap_front.png
    │   ├── cap_side.png
    │   ├── clip_front.png
    │   └── clip_side.png
    ├── doc
    │   ├── index.htm
    │   ├── logo.png
    │   ├── ptrack.ico
    │   ├── settings1.png
    │   ├── settings2.png
    │   ├── settings3.png
    │   └── style.css
    ├── ftnoir_tracker_pt.cpp
    ├── ftnoir_tracker_pt.h
    ├── ftnoir_tracker_pt_dialog.cpp
    ├── ftnoir_tracker_pt_dialog.h
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── module
    │   ├── CMakeLists.txt
    │   ├── Resources
    │   │   └── Logo_IR.png
    │   ├── camera.cpp
    │   ├── camera.h
    │   ├── export.hpp
    │   ├── frame.cpp
    │   ├── frame.hpp
    │   ├── lang
    │   │   ├── de_DE.ts
    │   │   ├── nl_NL.ts
    │   │   ├── ru_RU.ts
    │   │   ├── stub.ts
    │   │   └── zh_CN.ts
    │   ├── module.cpp
    │   ├── module.hpp
    │   ├── point_extractor.cpp
    │   ├── point_extractor.h
    │   └── tracker_pt.qrc
    ├── point-filter.cpp
    ├── point-filter.hpp
    ├── point_tracker.cpp
    ├── point_tracker.h
    ├── pt-api.cpp
    ├── pt-api.hpp
    ├── pt-settings.hpp
    └── tracker_pt_base.qrc
├── tracker-rift-140
    ├── CMakeLists.txt
    ├── dialog.cpp
    ├── dialog.ui
    ├── images
    │   ├── medium.png
    │   ├── rift_medium.png
    │   ├── rift_small.png
    │   ├── rift_tiny.png
    │   ├── small.png
    │   └── tiny.png
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── rift-140.cpp
    ├── rift-140.hpp
    └── rift-140.qrc
├── tracker-rs
    ├── CMakeLists.txt
    ├── README.md
    ├── ftnoir_tracker_rs.cpp
    ├── ftnoir_tracker_rs.h
    ├── ftnoir_tracker_rs_controls.cpp
    ├── ftnoir_tracker_rs_controls.h
    ├── ftnoir_tracker_rs_controls.ui
    ├── ftnoir_tracker_rs_worker.cpp
    ├── ftnoir_tracker_rs_worker.h
    ├── images
    │   ├── RS.png
    │   └── intel-16x16.png
    ├── imagewidget.cpp
    ├── imagewidget.h
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── rs_impl
    │   ├── CMakeLists.txt
    │   ├── attic
    │   │   ├── bin
    │   │   │   ├── amd64
    │   │   │   │   └── .gitignore
    │   │   │   └── ia32
    │   │   │   │   └── .gitignore
    │   │   ├── build.bat
    │   │   ├── build_common.bat
    │   │   └── udp_sender.cpp
    │   ├── ftnoir_tracker_rs_impl.cpp
    │   ├── ftnoir_tracker_rs_impl.h
    │   └── lang
    │   │   ├── nl_NL.ts
    │   │   ├── ru_RU.ts
    │   │   └── stub.ts
    └── rs_tracker.qrc
├── tracker-s2bot
    ├── CMakeLists.txt
    ├── README.md
    ├── ftnoir_tracker_s2bot.cpp
    ├── ftnoir_tracker_s2bot.h
    ├── ftnoir_tracker_s2bot_dialog.cpp
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── s2bot-controls.ui
    ├── s2bot-res.qrc
    └── s2bot.png
├── tracker-steamvr
    ├── CMakeLists.txt
    ├── dialog.ui
    ├── images
    │   └── steamvr.png
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── steamvr.cpp
    ├── steamvr.hpp
    └── steamvr.qrc
├── tracker-test
    ├── CMakeLists.txt
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── test.cpp
    ├── test.h
    ├── test.ui
    └── test_dialog.cpp
├── tracker-tobii
    ├── CMakeLists.txt
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── tobii.cpp
    ├── tobii.h
    ├── tobii.qrc
    ├── tobii.ui
    ├── tobii_dialog.cpp
    └── tobii_logo.png
├── tracker-trackhat
    ├── CMakeLists.txt
    ├── camera.cpp
    ├── dialog.cpp
    ├── dialog.hpp
    ├── dialog.ui
    ├── extractor.cpp
    ├── frame.cpp
    ├── handle.cpp
    ├── images
    │   ├── trackhat-64x64.png
    │   ├── trackhat.ico
    │   └── trackhat.png
    ├── lang
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── led.cpp
    ├── metadata.cpp
    ├── metadata.hpp
    ├── settings.cpp
    ├── tracker_trackhat.qrc
    ├── trackhat-res.qrc
    └── trackhat.hpp
├── tracker-udp
    ├── CMakeLists.txt
    ├── ftnoir_ftnclientcontrols.ui
    ├── ftnoir_tracker_udp.cpp
    ├── ftnoir_tracker_udp.h
    ├── ftnoir_tracker_udp_dialog.cpp
    └── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
├── tracker-wii
    ├── CMakeLists.txt
    ├── Resources
    │   ├── on.png
    │   ├── sync.png
    │   ├── usb.png
    │   ├── wii.ico
    │   └── wii.png
    ├── doc
    │   ├── XP11_opentrack_wiimote1.jpg
    │   └── XP11_opentrack_wiimote2.jpg
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── tracker_wii.qrc
    ├── wii_camera.cpp
    ├── wii_camera.h
    ├── wii_frame.cpp
    ├── wii_frame.hpp
    ├── wii_module.cpp
    ├── wii_module.hpp
    ├── wii_point_extractor.cpp
    ├── wii_point_extractor.h
    └── wiiyourself
    │   ├── CMakeLists.txt
    │   ├── History.txt
    │   ├── License.txt
    │   ├── ReadMe.txt
    │   ├── lang
    │       ├── nl_NL.ts
    │       ├── ru_RU.ts
    │       ├── stub.ts
    │       └── zh_CN.ts
    │   ├── wiimote.cpp
    │   ├── wiimote.h
    │   ├── wiimote_common.h
    │   └── wiimote_state.h
├── variant
    └── default
    │   └── _variant.cmake
├── video-opencv
    ├── CMakeLists.txt
    ├── impl-camera.cpp
    ├── impl-metadata.cpp
    ├── impl.hpp
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── video-property-page.cpp
    └── video-property-page.hpp
├── video-ps3eye
    ├── CMakeLists.txt
    ├── dialog.ui
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── module.cpp
    ├── module.hpp
    ├── shm-layout.hpp
    ├── shm.cxx
    ├── shm.hpp
    └── wrapper.cxx
├── video
    ├── CMakeLists.txt
    ├── camera.cpp
    ├── camera.hpp
    ├── export.hpp
    ├── lang
    │   ├── de_DE.ts
    │   ├── nl_NL.ts
    │   ├── ru_RU.ts
    │   ├── stub.ts
    │   └── zh_CN.ts
    ├── video-widget.cpp
    └── video-widget.hpp
└── x-plane-plugin
    ├── CMakeLists.txt
    ├── lang
        ├── nl_NL.ts
        ├── ru_RU.ts
        └── stub.ts
    └── plugin.c


/.editorconfig:
--------------------------------------------------------------------------------
 1 | # https://editorconfig.org/
 2 | 
 3 | root = true
 4 | 
 5 | [*]
 6 | end_of_line = lf
 7 | charset = utf-8
 8 | trim_trailing_whitespace = true
 9 | insert_final_newline = true
10 | indent_style = space
11 | indent_size = 4
12 | tab_width = 4
13 | 
14 | [Makefile]
15 | indent_style = tab
16 | 
17 | [*.{bat,cmd}]
18 | end_of_line = crlf
19 | 


--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
 1 | *.[ch]pp text eol=lf
 2 | *.[ch] text eol=lf
 3 | *.[ch]xx text eol=lf
 4 | *.cc text eol=lf
 5 | *.rc text eol=lf
 6 | 
 7 | *.git?* text eol=lf
 8 | 
 9 | *.txt text eol=lf
10 | *.cmake text eol=lf
11 | 
12 | *.md text eol=lf
13 | *.csv text eol=lf
14 | *.json text eol=lf
15 | 
16 | *.ui text eol=lf
17 | *.qrc text eol=lf
18 | *.ts text eol=lf
19 | *.in text eol=lf
20 | 
21 | *.cmd text eol=crlf
22 | *.bat text eol=crlf
23 | 


--------------------------------------------------------------------------------
/.github/CONTRIBUTING.md:
--------------------------------------------------------------------------------
 1 | # Issues on the issue tracker
 2 | 
 3 | Please report issues rather than using old software versions. Unless problems are identified they'll never get corrected in new versions.
 4 | 
 5 | Don't worry about your own English, it's not a problem since we'll be able to communicate anyway. If you're very concerned, please note that in the issue, and you'll receive responses in very plain English.
 6 | 
 7 | # Contributing code to opentrack
 8 | 
 9 | Pull requests for contributing patches, improvements and new features are greatly welcome through GitHub.
10 | 
11 | By submitting a pull request, you agree to allow the project owner to license your work under the [ISC license](https://opensource.org/licenses/ISC). 
12 | Please add your copyright and licensing information before submitting a pull request.
13 | 
14 | Contributions may depend on LGPL software but not be a derivative work of LGPL software (and more specifically be statically linked to any LGPL code).
15 | Contributions that are licensed under a copyleft license (such as GPL) cannot be integrated.
16 | 


--------------------------------------------------------------------------------
/.github/workflows/build-windows.bat:
--------------------------------------------------------------------------------
1 | set path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\CMake\bin;C:\Program Files\Git\cmd;%GITHUB_WORKSPACE%/ninja-build
2 | "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat" >nul && %*
3 | exit /b %ERRORLEVEL%
4 | 


--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
 1 | /build*/
 2 | /build
 3 | /build-*
 4 | .DS_Store
 5 | /sdk-paths-*.cmake
 6 | /.idea/
 7 | /.vs/
 8 | /CMakeSettings.json
 9 | .gtm/
10 | .vscode
11 | .history
12 | 


--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "video-ps3eye/ps3eye-driver"]
2 | 	path = video-ps3eye/ps3eye-driver
3 | 	url = https://github.com/opentrack/PS3EYEDriver
4 | 


--------------------------------------------------------------------------------
/3rdparty-notices/FACETRACKNOIR-COPYING.txt:
--------------------------------------------------------------------------------
 1 | The opentrack project is a fork of "FaceTrackNoIR" software.
 2 | 
 3 | Original project's site located at <http://facetracknoir.sourceforge.net/home/default.htm>
 4 | 
 5 | Copyright (c) 2015, Wim Vriend
 6 | 
 7 | Permission to use, copy, modify, and/or distribute this software for any
 8 | purpose with or without fee is hereby granted, provided that the above
 9 | copyright notice and this permission notice appear in all copies.
10 | 


--------------------------------------------------------------------------------
/3rdparty-notices/LIBOVR-COPYING.txt:
--------------------------------------------------------------------------------
1 | Copyright   :   Copyright 2012 Oculus VR, Inc. All Rights reserved.
2 | 
3 | Use of this software is subject to the terms of the Oculus license
4 | agreement provided at the time of installation or download, or which
5 | otherwise accompanies this software in either electronic or hard copy form.


--------------------------------------------------------------------------------
/3rdparty-notices/NFAILCLIENT-CREDIT.txt:
--------------------------------------------------------------------------------
1 | NFailClient is a clean-room implementation of NFail LLC NFailClient.
2 | 
3 | Completed as an operation spanning the whole Europe, NFailClient was 
4 | written by gnomes, halflings and rakshasa.


--------------------------------------------------------------------------------
/3rdparty-notices/VJOYSTICK-COPYING.txt:
--------------------------------------------------------------------------------
 1 | The vjoystick software is used under fair use terms.
 2 | 
 3 | Software copyright follows:
 4 | 
 5 | Copyright (c) Shaul Eizikovich.  All rights reserved.
 6 | 
 7 |     THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
 8 |     KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
 9 |     IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
10 |     PURPOSE.
11 | 


--------------------------------------------------------------------------------
/3rdparty-notices/ps3eyedriver/libusb0-AUTHORS.txt:
--------------------------------------------------------------------------------
 1 | This software is distributed under the following licenses:
 2 | Driver:           GNU General Public License (GPL)
 3 | Library:          GNU Lesser General Public (LGPL)
 4 | Test Files:       GNU Lesser General Public (LGPL)
 5 | Filter Installer: GNU Lesser General Public (LGPL) 
 6 | 
 7 | Library, Test Programs:
 8 | 
 9 | Stephan Meyer, <ste_meyer@web.de>
10 | Johannes Erdfelt, <johannes@erdfelt.com>
11 | Thomas Sailer, <sailer@ife.ee.ethz.ch>
12 | 
13 | Drivers, Installer:
14 | 
15 | Stephan Meyer, <ste_meyer@web.de>
16 | Travis Robinson, <libusbdotnet@gmail.com>
17 | 
18 | Testing, Technical support:
19 | 
20 | Xiaofan Chen, <xiaofanc@gmail.com>
21 | 


--------------------------------------------------------------------------------
/3rdparty-notices/ps3eyedriver/ps3eyedriver-opentrack-LICENSE.txt:
--------------------------------------------------------------------------------
 1 | Licensing for PS3EYEDriver modifications:
 2 | 
 3 | ---
 4 | 
 5 | Copyright (c) 2019, Stanislaw Halik <sthalik@misaki.pl>
 6 | 
 7 | Permission to use, copy, modify, and/or distribute this software for any
 8 | purpose with or without fee is hereby granted, provided that the above
 9 | copyright notice and this permission notice appear in all copies.
10 | 
11 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
17 | SOFTWARE.
18 | 


--------------------------------------------------------------------------------
/AUTHORS.md:
--------------------------------------------------------------------------------
 1 | The following people contributed parts of the codebase to the project, in
 2 | chronological order:
 3 | 
 4 | - Stanislaw Halik <<sthalik@misaki.pl>>
 5 | - Chris Thompson <<mm0zct@gmail.com>>
 6 | - Donovan Baarda <<abo@minkirri.apana.org.au>>
 7 | - Xavier Hallade <<xavier.hallade@intel.com>>
 8 | - Michael Welter <<mw.pub@welter-4d.de>>
 9 | - Attila Csipa <<git@csipa.net>>
10 | - Wei Shuai <<cpuwolf@gmail.com>>
11 | - Stéphane Lenclud <<github@lenclud.com>>
12 | 
13 | See OPENTRACK-LICENSING.txt for licensing information.
14 | 


--------------------------------------------------------------------------------
/WARRANTY.txt:
--------------------------------------------------------------------------------
1 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
2 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
3 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
4 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
5 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
6 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
7 | SOFTWARE.
8 | 


--------------------------------------------------------------------------------
/api/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(api NO-COMPAT BIN)
2 | 
3 | 


--------------------------------------------------------------------------------
/api/export.hpp:
--------------------------------------------------------------------------------
 1 | // generates export.hpp for each module from compat/linkage.hpp
 2 | 
 3 | #pragma once
 4 | 
 5 | #include "compat/linkage-macros.hpp"
 6 | 
 7 | #ifdef BUILD_API
 8 | #   define OTR_API_EXPORT OTR_GENERIC_EXPORT
 9 | #else
10 | #   define OTR_API_EXPORT OTR_GENERIC_IMPORT
11 | #endif
12 | 


--------------------------------------------------------------------------------
/api/lang/de_DE.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="de_DE">
 4 | <context>
 5 |     <name>module_status_mixin</name>
 6 |     <message>
 7 |         <source>Unknown error</source>
 8 |         <translation>Unbekannter Fehler</translation>
 9 |     </message>
10 | </context>
11 | </TS>
12 | 


--------------------------------------------------------------------------------
/api/lang/nl_NL.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="nl_NL">
 4 | <context>
 5 |     <name>module_status_mixin</name>
 6 |     <message>
 7 |         <source>Unknown error</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | </TS>
12 | 


--------------------------------------------------------------------------------
/api/lang/ru_RU.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="ru_RU">
 4 | <context>
 5 |     <name>module_status_mixin</name>
 6 |     <message>
 7 |         <source>Unknown error</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | </TS>
12 | 


--------------------------------------------------------------------------------
/api/lang/stub.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1">
 4 | <context>
 5 |     <name>module_status_mixin</name>
 6 |     <message>
 7 |         <source>Unknown error</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | </TS>
12 | 


--------------------------------------------------------------------------------
/api/lang/zh_CN.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="zh_CN">
 4 | <context>
 5 |     <name>module_status_mixin</name>
 6 |     <message>
 7 |         <source>Unknown error</source>
 8 |         <translation>未知错误</translation>
 9 |     </message>
10 | </context>
11 | </TS>
12 | 


--------------------------------------------------------------------------------
/bin/NPClient.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/bin/NPClient.dll


--------------------------------------------------------------------------------
/bin/NPClient64.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/bin/NPClient64.dll


--------------------------------------------------------------------------------
/bin/TrackIR.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/bin/TrackIR.exe


--------------------------------------------------------------------------------
/bin/build-msvc.cmd:
--------------------------------------------------------------------------------
 1 | @setlocal ENABLEDELAYEDEXPANSION
 2 | @echo off
 3 | 
 4 | call msvc
 5 | 
 6 | taskkill -f -im trackir.exe 2>%SystemDrive%\NUL
 7 | 
 8 | call:check cmake .
 9 | call:check ninja i18n
10 | call:check "d:/cygwin64/bin/dash.exe" -c "git checkout -f -- ../*/lang/ ../*/*/lang/"
11 | call:check ninja -j6 install
12 | call:check "d:/cygwin64/bin/dash.exe" -c "git checkout -f -- ../*/lang/ ../*/*/lang/"
13 | 
14 | exit /b 0
15 | 
16 | :check
17 | 
18 | cmd /c "msvc d:/cygwin64/bin/nice.exe -n 20 -- %*"
19 | 
20 | if %ERRORLEVEL% EQU 0 (
21 |     GOTO:EOF
22 | )
23 | 
24 | rem echo error %ERRORLEVEL%
25 | exit %ERRORLEVEL%
26 | 
27 | 


--------------------------------------------------------------------------------
/bin/cleye.config:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="UTF-8"?>
2 | <cleye>
3 |     <item name="mode" value="advanced" />
4 | </cleye>


--------------------------------------------------------------------------------
/bin/drmemory-suppressions.txt:
--------------------------------------------------------------------------------
 1 | UNADDRESSABLE ACCESS
 2 | name=false positive 1
 3 | Qt5Gui.dll!qt_blend_argb32_on_argb32_ssse3
 4 | 
 5 | INVALID HEAP ARGUMENT
 6 | name=stfu qtcore
 7 | Qt5Core.dll!*
 8 | 
 9 | INVALID HEAP ARGUMENT
10 | name=stfu qwindows 1
11 | qwindows.dll!*
12 | 
13 | LEAK
14 | name=stfu qwindows 2
15 | qwindows.dll!*
16 | 
17 | INVALID HEAP ARGUMENT
18 | name=stfu qtgui
19 | Qt5Gui.dll!*
20 | 
21 | INVALID HEAP ARGUMENT
22 | name=stfu sixense 1
23 | sixense.dll!*
24 | 
25 | UNADDRESSABLE ACCESS
26 | name=stfu sixense 2
27 | sixense.dll!*
28 | 
29 | UNINITIALIZED READ
30 | name=dinput
31 | system call NtUserGetRawInputDeviceInfo parameter value #2
32 | 
33 | LEAK
34 | name=stfu leak qtcore 1
35 | Qt5Core.dll!*
36 | 
37 | LEAK
38 | name=cv 1
39 | opentrack-tracker-pt.dll!cv::`dynamic initializer for '__initialization_mutex_initializer''
40 | 
41 | LEAK
42 | name=cv 2
43 | opentrack-tracker-aruco.dll!cv::`dynamic initializer for '__initialization_mutex_initializer''


--------------------------------------------------------------------------------
/bin/freetrackclient.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/bin/freetrackclient.dll


--------------------------------------------------------------------------------
/bin/freetrackclient64.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/bin/freetrackclient64.dll


--------------------------------------------------------------------------------
/bin/qt.conf:
--------------------------------------------------------------------------------
 1 | [Platforms]
 2 | WindowsArguments = dpiawareness=1
 3 | [Paths]
 4 | Libraries = .
 5 | LibraryExecutables = .
 6 | Binaries = .
 7 | Plugins = .
 8 | Imports = .
 9 | Translations = .
10 | 


--------------------------------------------------------------------------------
/cmake/linux.cmake:
--------------------------------------------------------------------------------
 1 | set(CMAKE_BUILD_TYPE_INIT RELEASE)
 2 | 
 3 | set(CMAKE_CXX_FLAGS "" CACHE STRING "" FORCE)
 4 | set(CMAKE_C_FLAGS "" CACHE STRING "" FORCE)
 5 | 
 6 | set(CMAKE_AR "gcc-ar" CACHE STRING "" FORCE)
 7 | set(CMAKE_NM "gcc-nm" CACHE STRING "" FORCE)
 8 | set(CMAKE_RANLIB "gcc-ranlib" CACHE STRING "" FORCE)
 9 | 
10 | set(CMAKE_C_FLAGS_RELEASE "-ffast-math -O3 -flto -fuse-linker-plugin -fPIC" CACHE STRING "" FORCE)
11 | set(CMAKE_CXX_FLAGS_RELEASE " ${CMAKE_C_FLAGS_RELEASE} " CACHE STRING "" FORCE)
12 | 
13 | set(cmake-link-common "")
14 | set(CMAKE_EXE_LINKER_FLAGS "${cmake-link-common}" CACHE STRING "" FORCE)
15 | set(CMAKE_SHARED_LINKER_FLAGS ${cmake-link-common} CACHE STRING "" FORCE)
16 | set(CMAKE_MODULE_LINKER_FLAGS ${cmake-link-common} CACHE STRING "" FORCE)
17 | 
18 | set(CMAKE_EXE_LINKER_FLAGS_RELEASE "-flto -fuse-linker-plugin" CACHE STRING "" FORCE)
19 | set(CMAKE_SHARED_LINKER_FLAGS_RELEASE ${CMAKE_EXE_LINKER_FLAGS_RELEASE} CACHE STRING "" FORCE)
20 | set(CMAKE_MODULE_LINKER_FLAGS_RELEASE ${CMAKE_EXE_LINKER_FLAGS_RELEASE} CACHE STRING "" FORCE)
21 | 
22 | set(OpenCV_DIR ~/dev/opentrack-depends/opencv/build)
23 | 


--------------------------------------------------------------------------------
/cmake/mrproper.cmake:
--------------------------------------------------------------------------------
1 | list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
2 | include(opentrack-mrproper)
3 | 
4 | cleanup_build_dir()
5 | 


--------------------------------------------------------------------------------
/cmake/opentrack-opencv.cmake:
--------------------------------------------------------------------------------
1 | include_guard(GLOBAL)
2 | 
3 | include(opentrack-boilerplate)
4 | find_package(OpenCV QUIET)
5 | 


--------------------------------------------------------------------------------
/cmake/opentrack-org.cmake:
--------------------------------------------------------------------------------
 1 | include_guard(GLOBAL)
 2 | function(otr_write_org)
 3 |     get_property(ident GLOBAL PROPERTY opentrack-ident)
 4 |     if (ident STREQUAL "")
 5 |         message(FATAL_ERROR "must set global property `opentrack-ident' in `opentrack-variant.cmake'")
 6 |     endif()
 7 |     otr_escape_string(ident "${ident}")
 8 |     set(new-str "#pragma once
 9 | #define OPENTRACK_ORG \"${ident}\"
10 | ")
11 | 
12 |     set(filename "${CMAKE_BINARY_DIR}/opentrack-org.hxx")
13 |     set(old-str "")
14 |     if(EXISTS "${filename}")
15 |         file(READ "${filename}" old-str)
16 |     endif()
17 |     if(NOT old-str STREQUAL new-str)
18 |         file(WRITE "${filename}" "${new-str}")
19 |     endif()
20 | endfunction()
21 | otr_write_org()
22 | 


--------------------------------------------------------------------------------
/cmake/opentrack-policy.cmake:
--------------------------------------------------------------------------------
 1 | include_guard(GLOBAL)
 2 | 
 3 | set(_policies
 4 |     CMP0020
 5 |     CMP0022
 6 |     CMP0058
 7 |     CMP0028
 8 |     CMP0042
 9 |     CMP0063
10 |     CMP0053
11 |     CMP0011
12 |     CMP0054
13 |     CMP0012
14 |     CMP0069
15 |     CMP0063
16 |     CMP0074
17 | )
18 | foreach(k ${_policies})
19 |     if(POLICY ${k})
20 |         cmake_policy(SET ${k} NEW)
21 |     endif()
22 | endforeach()
23 | 
24 | set(CMAKE_INSTALL_MESSAGE LAZY)
25 | 


--------------------------------------------------------------------------------
/cmake/opentrack-variant.cmake:
--------------------------------------------------------------------------------
 1 | include_guard(GLOBAL)
 2 | 
 3 | function(otr_init_variant)
 4 |     set_property(GLOBAL PROPERTY opentrack-variant "default")
 5 |     set_property(GLOBAL PROPERTY opentrack-ident "opentrack-2.3")
 6 | 
 7 |     set(subprojects
 8 |         "tracker-*"
 9 |         "proto-*"
10 |         "filter-*"
11 |         "options"
12 |         "api"
13 |         "compat"
14 |         "logic"
15 |         "dinput"
16 |         "gui"
17 |         "main"
18 |         "x-plane-plugin"
19 |         "csv"
20 |         "pose-widget"
21 |         "spline"
22 |         "qxt-mini"
23 |         "macosx"
24 |         "cv"
25 |         "migration"
26 |         "main-window"
27 |         "video"
28 |         "video-*"
29 |         "opentrack"
30 |     )
31 |     set_property(GLOBAL PROPERTY opentrack-subprojects "${subprojects}")
32 | endfunction()
33 | 


--------------------------------------------------------------------------------
/cmake/opentrack-version.cmake:
--------------------------------------------------------------------------------
 1 | include_guard(GLOBAL)
 2 | include(GetGitRevisionDescription)
 3 | 
 4 | find_package(Git QUIET)
 5 | if(GIT_FOUND)
 6 |     git_describe(OPENTRACK_COMMIT --tags --always)
 7 | endif()
 8 | 
 9 | file(WRITE ${CMAKE_BINARY_DIR}/opentrack-version.hxx "#define OPENTRACK_VERSION \"${OPENTRACK_COMMIT}\"")
10 | 
11 | set(version-string "\
12 | #ifdef __cplusplus
13 | extern \"C\"
14 | #else
15 | extern
16 | #endif
17 | 
18 | const char* const opentrack_version;
19 | const char* const opentrack_version = \"${OPENTRACK_COMMIT}\";
20 | ")
21 | 
22 | set(file "${CMAKE_CURRENT_BINARY_DIR}/version.cpp")
23 | set(crapola-ver)
24 | if(EXISTS "${file}")
25 |     file(READ "${file}" crapola-ver)
26 | endif()
27 | 
28 | if(NOT (crapola-ver STREQUAL version-string))
29 |     file(WRITE "${file}" "${version-string}")
30 | endif()
31 | 
32 | add_library(opentrack-version STATIC "${file}")
33 | 
34 | if(NOT MSVC)
35 |     target_compile_options(opentrack-version PRIVATE -fno-lto)
36 | endif()
37 | 


--------------------------------------------------------------------------------
/cmake/translation-stub.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="@LANG@">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/cmake/unix.cmake:
--------------------------------------------------------------------------------
 1 | # this file only serves as toolchain file when specified so explicitly
 2 | # when building the software. from repository's root directory:
 3 | # mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=$(pwd)/../cmake/mingw-w64.cmake
 4 | # -sh 20140922
 5 | 
 6 | SET(CMAKE_C_COMPILER    cc)
 7 | SET(CMAKE_CXX_COMPILER  c++)
 8 | 
 9 | SET(CMAKE_FIND_ROOT_PATH /usr)
10 | 
11 | set(cpu "-O3 -march=native -ffast-math -g")
12 | set(CFLAGS-OVERRIDE "" CACHE STRING "")
13 | 
14 | set(CMAKE_C_FLAGS_RELEASE "${cpu} ${CFLAGS-OVERRIDE}" CACHE STRING "" FORCE)
15 | set(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE} CACHE STRING "" FORCE)
16 | set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${cpu} ${CFLAGS-OVERRIDE}" CACHE STRING "" FORCE)
17 | set(CMAKE_EXE_LINKER_FLAGS_RELEASE ${CMAKE_SHARED_LINKER_FLAGS_RELEASE} CACHE STRING "" FORCE)
18 | set(CMAKE_MODULE_LINKER_FLAGS_RELEASE ${CMAKE_SHARED_LINKER_FLAGS_RELEASE} CACHE STRING "" FORCE)
19 | set(CMAKE_BUILD_TYPE "RELEASE" CACHE STRING "" FORCE)
20 | 


--------------------------------------------------------------------------------
/compat/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | otr_module(compat NO-COMPAT BIN)
 2 | 
 3 | if(NOT WIN32 AND NOT APPLE)
 4 |     target_link_libraries(${self} rt)
 5 | endif()
 6 | 
 7 | if(WIN32)
 8 |     target_link_libraries(${self} strmiids)
 9 | endif()
10 | 
11 | 
12 | if(APPLE)
13 |     target_link_libraries(${self} proc)
14 | elseif(LINUX)
15 |     otr_pkgconfig_(has-libproc2 ${self} libproc2)
16 |     if(has-libproc2)
17 |         target_compile_definitions(${self} PUBLIC -DOTR_HAS_LIBPROC2)
18 |     else()
19 |         otr_pkgconfig_(has-libprocps ${self} libprocps)
20 |         if(NOT has-libprocps)
21 |             message(FATAL_ERROR "install libproc2 or libprocps development files")
22 |         endif()
23 |     endif()
24 | endif()
25 | 


--------------------------------------------------------------------------------
/compat/activation-context.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #ifdef _WIN32
 4 | 
 5 | #include "export.hpp"
 6 | 
 7 | #include <cstdint>
 8 | #include <QString>
 9 | 
10 | class OTR_COMPAT_EXPORT activation_context
11 | {
12 | public:
13 |     explicit activation_context(const QString& module_name, int resid);
14 |     ~activation_context();
15 | 
16 |     explicit operator bool() const { return ok; }
17 | 
18 | private:
19 |     std::uintptr_t cookie = 0;
20 |     void* handle = (void*)-1;
21 |     bool ok = false;
22 | };
23 | 
24 | #else
25 | #   error "tried to use win32-only activation context"
26 | #endif
27 | 


--------------------------------------------------------------------------------
/compat/base-path.cpp:
--------------------------------------------------------------------------------
 1 | #undef NDEBUG
 2 | #include <cassert>
 3 | 
 4 | #include "base-path.hpp"
 5 | #include <QCoreApplication>
 6 | 
 7 | const QString& application_base_path()
 8 | {
 9 |     assert(qApp && "logic error");
10 |     static QString path = QCoreApplication::applicationDirPath();
11 |     return path;
12 | }
13 | 


--------------------------------------------------------------------------------
/compat/base-path.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include "export.hpp"
 4 | 
 5 | #include <QString>
 6 | 
 7 | OTR_COMPAT_EXPORT
 8 | const QString& application_base_path();
 9 | 
10 | #define OPENTRACK_BASE_PATH (application_base_path())
11 | 
12 | 


--------------------------------------------------------------------------------
/compat/camera-names.hpp:
--------------------------------------------------------------------------------
 1 | /* Copyright (c) 2014-2015, Stanislaw Halik <sthalik@misaki.pl>
 2 | 
 3 |  * Permission to use, copy, modify, and/or distribute this
 4 |  * software for any purpose with or without fee is hereby granted,
 5 |  * provided that the above copyright notice and this permission
 6 |  * notice appear in all copies.
 7 |  */
 8 | 
 9 | #pragma once
10 | 
11 | #include <vector>
12 | #include <QString>
13 | #   include <tuple>
14 | 
15 | #include "export.hpp"
16 | 
17 | OTR_COMPAT_EXPORT std::vector<std::tuple<QString, int>> get_camera_names();
18 | OTR_COMPAT_EXPORT int camera_name_to_index(const QString &name);
19 | 
20 | 


--------------------------------------------------------------------------------
/compat/check-visible.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include "export.hpp"
 4 | #include "macros.h"
 5 | 
 6 | class QWidget;
 7 | 
 8 | never_inline OTR_COMPAT_EXPORT
 9 | void set_is_visible(QWidget const& w, bool force = false);
10 | 
11 | OTR_COMPAT_EXPORT
12 | bool check_is_visible();
13 | 
14 | OTR_COMPAT_EXPORT
15 | void force_is_visible(bool value);
16 | 


--------------------------------------------------------------------------------
/compat/euler.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | /* Copyright (c) 2016-2018 Stanislaw Halik
 4 |  *
 5 |  * Permission to use, copy, modify, and/or distribute this software for any
 6 |  * purpose with or without fee is hereby granted, provided that the above
 7 |  * copyright notice and this permission notice appear in all copies.
 8 |  */
 9 | 
10 | #include "export.hpp"
11 | #include "simple-mat.hpp"
12 | 
13 | namespace euler {
14 | 
15 | template<int h_, int w_> using dmat = Mat<double, h_, w_>;
16 | 
17 | using dvec3 = Mat<double, 3, 1>;
18 | 
19 | using rmat = dmat<3, 3>;
20 | using Pose_ = dmat<3, 1>;
21 | 
22 | rmat OTR_COMPAT_EXPORT euler_to_rmat(const Pose_& input);
23 | Pose_ OTR_COMPAT_EXPORT rmat_to_euler(const rmat& R);
24 | 
25 | } // end ns euler
26 | 


--------------------------------------------------------------------------------
/compat/export.hpp:
--------------------------------------------------------------------------------
 1 | // generates export.hpp for each module from compat/linkage.hpp
 2 | 
 3 | #pragma once
 4 | 
 5 | #include "compat/linkage-macros.hpp"
 6 | 
 7 | #ifdef BUILD_COMPAT
 8 | #   define OTR_COMPAT_EXPORT OTR_GENERIC_EXPORT
 9 | #else
10 | #   define OTR_COMPAT_EXPORT OTR_GENERIC_IMPORT
11 | #endif
12 | 


--------------------------------------------------------------------------------
/compat/lang/de_DE.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="de_DE">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/compat/lang/nl_NL.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="nl_NL">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/compat/lang/ru_RU.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="ru_RU">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/compat/lang/stub.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/compat/lang/zh_CN.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="zh_CN">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/compat/library-path.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | 
3 | // from build directory
4 | #include "opentrack-library-path.hxx"
5 | 


--------------------------------------------------------------------------------
/compat/linkage-macros.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #ifndef OTR_GENERIC_EXPORT
 4 | #   if defined _MSC_VER
 5 | #      define OTR_GENERIC_EXPORT __declspec(dllexport)
 6 | #      define OTR_GENERIC_IMPORT __declspec(dllimport)
 7 | #   elif defined _WIN32 && !defined __WINE__
 8 | #      define OTR_GENERIC_EXPORT __attribute__((dllexport, visibility ("default")))
 9 | #      define OTR_GENERIC_IMPORT __attribute__((dllimport))
10 | #   else
11 | #      define OTR_GENERIC_EXPORT __attribute__((visibility ("default")))
12 | #      define OTR_GENERIC_IMPORT
13 | #   endif
14 | #endif
15 | 
16 | #if defined __APPLE__ || defined __MINGW32__
17 | #   define OTR_NO_TMPL_INST // link failure on both targets
18 | #endif
19 | 
20 | #if defined OTR_NO_TMPL_INST
21 | #   define OTR_TEMPLATE_IMPORT(x)
22 | #   define OTR_TEMPLATE_EXPORT(x)
23 | #else
24 | #   define OTR_TEMPLATE_IMPORT(x) extern template class OTR_GENERIC_IMPORT x;
25 | #   define OTR_TEMPLATE_EXPORT(x) template class OTR_GENERIC_EXPORT x;
26 | #endif
27 | 


--------------------------------------------------------------------------------
/compat/linkage.hpp:
--------------------------------------------------------------------------------
 1 | // generates export.hpp for each module from compat/linkage.hpp
 2 | 
 3 | #pragma once
 4 | 
 5 | #include "compat/linkage-macros.hpp"
 6 | 
 7 | #ifdef BUILD_${module}
 8 | #   define OTR_${module}_EXPORT OTR_GENERIC_EXPORT
 9 | #else
10 | #   define OTR_${module}_EXPORT OTR_GENERIC_IMPORT
11 | #endif
12 | 


--------------------------------------------------------------------------------
/compat/math-imports.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include <cmath>
 4 | 
 5 | using std::copysign;
 6 | 
 7 | using std::sqrt;
 8 | using std::pow;
 9 | 
10 | using std::fabs;
11 | using std::fmin;
12 | using std::fmax;
13 | 
14 | using std::atan;
15 | using std::atan2;
16 | using std::asin;
17 | using std::acos;
18 | 
19 | using std::sin;
20 | using std::cos;
21 | using std::tan;
22 | 
23 | using std::round;
24 | using std::fmod;
25 | 
26 | using std::log;
27 | using std::log2;
28 | using std::log10;
29 | using std::exp;
30 | 
31 | #include <cinttypes>
32 | 
33 | using std::uintptr_t;
34 | using std::intptr_t;
35 | 
36 | using std::int64_t;
37 | using std::int32_t;
38 | using std::int8_t;
39 | 
40 | using std::uint64_t;
41 | using std::uint32_t;
42 | using std::uint8_t;
43 | 
44 | #include <algorithm>
45 | 
46 | using std::min;
47 | using std::max;
48 | 
49 | #include "math.hpp"
50 | 


--------------------------------------------------------------------------------
/compat/math.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include <cmath>
 4 | #include <type_traits>
 5 | 
 6 | template<typename t>
 7 | inline auto iround(t val) -> std::enable_if_t<std::is_floating_point_v<std::decay_t<t>>, int>
 8 | {
 9 |     return (int)std::round(val);
10 | }
11 | 
12 | template <typename t>
13 | constexpr int signum(const t& x)
14 | {
15 |     return x < t{0} ? -1 : 1;
16 | }
17 | 


--------------------------------------------------------------------------------
/compat/mutex.cpp:
--------------------------------------------------------------------------------
 1 | #include "export.hpp"
 2 | #include "mutex.hpp"
 3 | #include <cstdlib>
 4 | #include <QMutex>
 5 | #include <QRecursiveMutex>
 6 | 
 7 | template<typename M>
 8 | mutex<M>& mutex<M>::operator=(const mutex& rhs)
 9 | {
10 |     return *this;
11 | }
12 | 
13 | template<typename MutexType> MutexType* mutex<MutexType>::operator&() const { return &inner; }
14 | 
15 | template<typename M> mutex<M>::mutex(const mutex<M>& datum) {}
16 | template<typename M> mutex<M>::mutex() = default;
17 | 
18 | template<typename M>
19 | mutex<M>::operator M*() const noexcept
20 | {
21 |     return &inner;
22 | }
23 | 
24 | template<typename M>
25 | M* mutex<M>::operator->() const noexcept
26 | {
27 |     return &inner;
28 | }
29 | 
30 | template class OTR_COMPAT_EXPORT mutex<QMutex>;
31 | template class OTR_COMPAT_EXPORT mutex<QRecursiveMutex>;
32 | 


--------------------------------------------------------------------------------
/compat/mutex.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include "export.hpp"
 4 | 
 5 | template<typename MutexType>
 6 | class OTR_COMPAT_EXPORT mutex
 7 | {
 8 |     mutable MutexType inner{};
 9 | 
10 | public:
11 |     mutex& operator=(const mutex& datum);
12 |     MutexType* operator&() const;
13 |     mutex(const mutex& datum);
14 |     explicit mutex();
15 | 
16 |     explicit operator MutexType*() const noexcept;
17 |     MutexType* operator->() const noexcept;
18 | };
19 | 


--------------------------------------------------------------------------------
/compat/process-list.hpp:
--------------------------------------------------------------------------------
 1 | /* Copyright (c) 2015 Stanislaw Halik <sthalik@misaki.pl>
 2 |  *
 3 |  * Permission to use, copy, modify, and/or distribute this software for any
 4 |  * purpose with or without fee is hereby granted, provided that the above
 5 |  * copyright notice and this permission notice appear in all copies.
 6 |  */
 7 | 
 8 | #pragma once
 9 | 
10 | #include "export.hpp"
11 | #include <QStringList>
12 | 
13 | OTR_COMPAT_EXPORT QStringList get_all_executable_names();
14 | 


--------------------------------------------------------------------------------
/compat/qhash.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include <functional>
 4 | 
 5 | #include <QtGlobal>
 6 | #include <QString>
 7 | #include <QHashFunctions>
 8 | 
 9 | #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
10 | 
11 | #include <cstdlib>
12 | 
13 | namespace std {
14 | template<> struct hash<QString>
15 | {
16 |     using argument_type = QString;
17 |     using result_type = std::size_t;
18 | 
19 |     std::size_t operator()(const QString& value) const noexcept
20 |     {
21 |         return (std::size_t) qHash(value);
22 |     }
23 | };
24 | }
25 | 
26 | #endif
27 | 


--------------------------------------------------------------------------------
/compat/qt-dpi.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include <algorithm>
 4 | #include <QWidget>
 5 | 
 6 | static inline double screen_dpi(const QPaintDevice* widget)
 7 | {
 8 |     const auto& x = *widget;
 9 | #ifdef _WIN32
10 |     return std::max(x.devicePixelRatioF(), 1.);
11 | #else
12 |     return std::max(std::max(x.logicalDpiX()/(double)x.physicalDpiX(), x.devicePixelRatioF()), 1.);
13 | #endif
14 | }
15 | 
16 | template<typename self>
17 | struct screen_dpi_mixin
18 | {
19 | protected:
20 |     double screen_dpi() const
21 |     {
22 |         return ::screen_dpi(static_cast<const self*>(this));
23 |     }
24 | };
25 | 


--------------------------------------------------------------------------------
/compat/qt-signal.cpp:
--------------------------------------------------------------------------------
1 | #define OTR_GENERATE_SIGNAL3(type) void sig_##type::operator()(const type& x) const { notify(x); }
2 | #include "qt-signal.hpp"
3 | namespace _qt_sig_impl {
4 | 
5 | sig_void::sig_void(QObject* parent) : QObject(parent) {}
6 | 
7 | }
8 | 


--------------------------------------------------------------------------------
/compat/sleep.cpp:
--------------------------------------------------------------------------------
 1 | #include "sleep.hpp"
 2 | 
 3 | #ifdef _WIN32
 4 | #   include <windows.h>
 5 | #else
 6 | #   include <unistd.h>
 7 | #endif
 8 | 
 9 | namespace portable
10 | {
11 |     void sleep(int milliseconds)
12 |     {
13 |         if (milliseconds > 0)
14 |         {
15 | #ifdef _WIN32
16 | 
17 |             Sleep((unsigned)milliseconds);
18 | #else
19 |             usleep(unsigned(milliseconds) * 1000U); // takes microseconds
20 | #endif
21 |         }
22 |     }
23 | }
24 | 


--------------------------------------------------------------------------------
/compat/sleep.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | 
3 | #include "export.hpp"
4 | 
5 | namespace portable {
6 |     OTR_COMPAT_EXPORT void sleep(int milliseconds);
7 | }
8 | 


--------------------------------------------------------------------------------
/compat/sysexits.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include <cstdlib> // for EXIT_SUCCESS, EXIT_FAILRUE
 4 | 
 5 | #ifndef _WIN32
 6 | #   include <sysexits.h>
 7 | #else
 8 | // this conforms to BSD sysexits(3)
 9 | // reference the manual page on FreeBSD or Linux for semantics
10 | #   define EX_OK          0
11 | #   define EX_USAGE       64
12 | #   define EX_DATAERR     65
13 | #   define EX_NOINPUT     66
14 | #   define EX_NOUSER      67
15 | #   define EX_NOHOST      68
16 | #   define EX_UNAVAILABLE 69
17 | #   define EX_SOFTWARE    70
18 | #   define EX_OSERR       71
19 | #   define EX_OSFILE      72
20 | #   define EX_CANTCREAT   73
21 | #   define EX_IOERR       74
22 | #   define EX_TEMPFAIL    75
23 | #   define EX_PROTOCOL    76
24 | #   define EX_NOPERM      77
25 | #   define EX_CONFIG      78
26 | #endif
27 | 
28 | 
29 | 


--------------------------------------------------------------------------------
/compat/thread-name.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "export.hpp"
3 | #include <QString>
4 | namespace portable {
5 |     OTR_COMPAT_EXPORT void set_curthread_name(const QString& name);
6 | }
7 | 


--------------------------------------------------------------------------------
/compat/time.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include <chrono>
 4 | 
 5 | namespace time_units {
 6 | 
 7 | template<typename repr, typename ratio = std::ratio<1>>
 8 | using duration = std::chrono::duration<repr, ratio>;
 9 | 
10 | using secs = duration<float>;
11 | using ms = duration<float, std::milli>;
12 | using us = duration<float, std::micro>;
13 | using ns = duration<float, std::nano>;
14 | 
15 | } // ns time_units
16 | 


--------------------------------------------------------------------------------
/compat/timer.hpp:
--------------------------------------------------------------------------------
 1 | /* Copyright (c) 2014-2015, Stanislaw Halik <sthalik@misaki.pl>
 2 | 
 3 |  * Permission to use, copy, modify, and/or distribute this
 4 |  * software for any purpose with or without fee is hereby granted,
 5 |  * provided that the above copyright notice and this permission
 6 |  * notice appear in all copies.
 7 |  */
 8 | 
 9 | #pragma once
10 | 
11 | #include "export.hpp"
12 | #include "time.hpp"
13 | #include <ctime>
14 | 
15 | struct OTR_COMPAT_EXPORT Timer final
16 | {
17 |     Timer();
18 |     void start();
19 | 
20 |     double elapsed_ms() const;
21 |     double elapsed_seconds() const;
22 | 
23 | private:
24 |     struct timespec state {};
25 |     static void gettime(struct timespec* state);
26 |     struct timespec get_delta() const;
27 |     using ns = time_units::ns;
28 | };
29 | 


--------------------------------------------------------------------------------
/compat/tr.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include <QObject>
 4 | 
 5 | // The class does nothing except provide a fake assignment operator for QObject
 6 | // It's meant to be used inside classes that need i18n support but are returned by value.
 7 | 
 8 | struct TR : QObject
 9 | {
10 |     TR() = default;
11 |     TR(const TR&) : QObject(nullptr) {}
12 | 
13 |     TR& operator=(const TR&) { return *this; }
14 | };
15 | 


--------------------------------------------------------------------------------
/contrib-noinst/important-stuff/NPClient.h:
--------------------------------------------------------------------------------
 1 | 
 2 | extern int NP_RegisterWindowHandle (HWND hwnd);
 3 | extern int NP_UnregisterWindowHandle (void);
 4 | extern int NP_RegisterProgramProfileID (unsigned short id);
 5 | extern int NP_QueryVersion (unsigned short *version);
 6 | extern int NP_RequestData (unsigned short req);
 7 | extern int NP_GetSignature (tir_signature_t *sig);
 8 | extern int NP_GetData (tir_data_t *data);
 9 | extern int NP_GetParameter (void);
10 | extern int NP_SetParameter (void);
11 | extern int NP_StartCursor (void);
12 | extern int NP_StopCursor (void);
13 | extern int NP_ReCenter (void);
14 | extern int NP_StartDataTransmission (void);
15 | extern int NP_StopDataTransmission (void);
16 | 
17 | 
18 | 


--------------------------------------------------------------------------------
/contrib-noinst/important-stuff/game-data.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib-noinst/important-stuff/game-data.exe


--------------------------------------------------------------------------------
/contrib-noinst/important-stuff/game_data.h:
--------------------------------------------------------------------------------
 1 | #ifndef GAME_DATA__H
 2 | #define GAME_DATA__H
 3 | 
 4 | #include <stdbool.h>
 5 | 
 6 | #ifdef __cplusplus
 7 | extern "C" {
 8 | #endif
 9 | 
10 | bool get_game_data(const char *input_fname, const char *output_fname, bool from_update);
11 | 
12 | #ifdef __cplusplus
13 | }
14 | #endif
15 | 
16 | 
17 | #endif
18 | 


--------------------------------------------------------------------------------
/contrib-noinst/tester/resource.h:
--------------------------------------------------------------------------------
 1 | #ifndef IDC_STATIC
 2 | #define IDC_STATIC (-1)
 3 | #endif
 4 | 
 5 | #define IDD_DIALOG1                             100
 6 | #define IDQUIT                                  1002
 7 | #define IDSTART                                 1003
 8 | #define IDC_APPID                               1016
 9 | #define IDC_PITCH                               1017
10 | #define IDC_YAW                                 1018
11 | #define IDC_ROLL                                1019
12 | #define IDC_X1                                  1020
13 | #define IDC_X2                                  1021
14 | #define IDC_X3                                  1022
15 | #define IDC_Y1                                  1023
16 | #define IDC_Y2                                  1024
17 | #define IDC_Y3                                  1025
18 | #define IDC_Z1                                  1026
19 | #define IDC_Z2                                  1027
20 | #define IDC_Z3                                  1028
21 | #define IDC_S                                   1029
22 | #define IDC_F                                   1030
23 | 
24 | 


--------------------------------------------------------------------------------
/contrib/FlightGear/readme.txt:
--------------------------------------------------------------------------------
1 | Copy Protocol/headtracker.xml to fgdata/Protocol/headtracker.xml
2 | 
3 | $ fgfs --generic=socket,in,25,localhost,5542,udp,headtracker
4 | 
5 | Adjust paths as necessary.
6 | 
7 | cheers,
8 | -sh 20131008
9 | 


--------------------------------------------------------------------------------
/contrib/Tir4Fun/npclient.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/Tir4Fun/npclient.dll


--------------------------------------------------------------------------------
/contrib/Tir4Fun/readme.txt:
--------------------------------------------------------------------------------
 1 | What is TIR4FUN?
 2 | 
 3 | TIR4FUN is a free utility for dedicated gamers. It enables 6DOF POV control with mouse and joystick axes.
 4 | 
 5 | Software is provided as it is. Configuration is straightforward. GUI says it all!
 6 | 
 7 | Installation:
 8 | 
 9 | Copy all files to a directory. Launch tir4fun.exe to bring up the GUI.
10 | 


--------------------------------------------------------------------------------
/contrib/Tir4Fun/tir4fun.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/Tir4Fun/tir4fun.exe


--------------------------------------------------------------------------------
/contrib/aruco/README.txt:
--------------------------------------------------------------------------------
1 | Note, the utility only creates .bmp files. Trying to produce a `.png` or jpeg
2 | file will make it error out.
3 | 


--------------------------------------------------------------------------------
/contrib/aruco/aruco_create_marker.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/aruco/aruco_create_marker.exe


--------------------------------------------------------------------------------
/contrib/aruco/test3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/aruco/test3.png


--------------------------------------------------------------------------------
/contrib/cute-octopus-vector-material_15-1831.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/cute-octopus-vector-material_15-1831.jpg


--------------------------------------------------------------------------------
/contrib/freepie-udp/FreePIE_IMU_Android9.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/freepie-udp/FreePIE_IMU_Android9.apk


--------------------------------------------------------------------------------
/contrib/freepie-udp/com.wishsalad.wishimu-debug.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/freepie-udp/com.wishsalad.wishimu-debug.apk


--------------------------------------------------------------------------------
/contrib/freepie-udp/src-WishIMU.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/freepie-udp/src-WishIMU.zip


--------------------------------------------------------------------------------
/contrib/freetracktest/freetracktest.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/freetracktest/freetracktest.exe


--------------------------------------------------------------------------------
/contrib/freetracktest/readme.txt:
--------------------------------------------------------------------------------
 1 | FaceTrackNoIR for Free-track 'enabled' games.
 2 | 
 3 | FaceTrackNoIR was made compatible with the Free-track protocol, for which the Free-track source (a well, part of it) was
 4 | translated from Delphi Pascal to C++ (Visual Studio C++, with Qt).
 5 | 
 6 | To start the Free-track protocol-server in FaceTrackNoIR, select Free-track in the 'game-protocol' listbox. The program
 7 | 'FreeTrackTest.exe' is provided to check, if the protocol-server is running.
 8 | 
 9 | FreeTrackTest.exe was created by the Free-track team.
10 | 
11 | 
12 | 
13 | The FaceTrackNoIR team:
14 | 
15 | Wim Vriend
16 | Ron Hendriks
17 | 
18 | 
19 | 
20 | Disclaimer: For usage of 3rd party software like FreeTrackTest, the FaceTrackNoIR team is not responsible. Use it at your own risk.


--------------------------------------------------------------------------------
/contrib/fs2002 and fs2004/fsuipc.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/fs2002 and fs2004/fsuipc.dll


--------------------------------------------------------------------------------
/contrib/glovepie/facetracknoir2trackir.pie:
--------------------------------------------------------------------------------
 1 | //
 2 | // 6 Degrees of Freedom Headtracking with FaceTrackNoIR
 3 | // 2010 by Wim Vriend
 4 | //
 5 | pie.FrameRate = 120Hz
 6 | var.multiply = 1.5
 7 | var.R2D = 57.295781
 8 | FakeTrackIR.pitch=(Joystick.pitch - 0.10) * var.R2D * var.multiply
 9 | FakeTrackIR.yaw=(Joystick.yaw - 0.10) * var.R2D * var.multiply
10 | FakeTrackIR.roll=(Joystick.roll - 0.10) * var.R2D * var.multiply
11 | FakeTrackIR.x=(Joystick.x - 0.10) * var.R2D * var.multiply
12 | FakeTrackIR.y=(Joystick.y - 0.10) * var.R2D * var.multiply
13 | FakeTrackIR.z=(Joystick.z - 0.10) * var.R2D * var.multiply
14 | debug = 'pitch='+FakeTrackIR.pitch+' roll='+FakeTrackIR.roll+' yaw='+FakeTrackIR.yaw+' xyz=('+FakeTrackIR.x+','+FakeTrackIR.y+','+FakeTrackIR.z+')'
15 | //debug = FakeTrackIR.active
16 | 
17 | 


--------------------------------------------------------------------------------
/contrib/hatire-test-data/README.txt:
--------------------------------------------------------------------------------
1 | The hatire test data is a serial connection dump. One can use it when
2 | debugging hatire, using it in lieu of a real Arduino. There's a
3 | preprocessor #define in hatire that sets a connection dump rather than a
4 | real device.
5 | 
6 | The data was provided by drdanilov21 on github.
7 | 
8 | sh
9 | 


--------------------------------------------------------------------------------
/contrib/hatire-test-data/puttyLog1MIN.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/hatire-test-data/puttyLog1MIN.zip


--------------------------------------------------------------------------------
/contrib/libusbK-dev-kit/libusbK-3.1.0.0-setup.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/libusbK-dev-kit/libusbK-3.1.0.0-setup.exe


--------------------------------------------------------------------------------
/contrib/libusbK-inf-wizard/libusbK-inf-wizard.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/libusbK-inf-wizard/libusbK-inf-wizard.exe


--------------------------------------------------------------------------------
/contrib/libusbK-inf-wizard/license/AUTHORS-libusb0.txt:
--------------------------------------------------------------------------------
 1 | This software is distributed under the following licenses:
 2 | Driver:           GNU General Public License (GPL)
 3 | Library:          GNU Lesser General Public (LGPL)
 4 | Test Files:       GNU Lesser General Public (LGPL)
 5 | Filter Installer: GNU Lesser General Public (LGPL) 
 6 | 
 7 | Library, Test Programs:
 8 | 
 9 | Stephan Meyer, <ste_meyer@web.de>
10 | Johannes Erdfelt, <johannes@erdfelt.com>
11 | Thomas Sailer, <sailer@ife.ee.ethz.ch>
12 | 
13 | Drivers, Installer:
14 | 
15 | Stephan Meyer, <ste_meyer@web.de>
16 | Travis Robinson, <libusbdotnet@gmail.com>
17 | 
18 | Testing, Technical support:
19 | 
20 | Xiaofan Chen, <xiaofanc@gmail.com>
21 | 


--------------------------------------------------------------------------------
/contrib/npclient/COMPILE.TXT:
--------------------------------------------------------------------------------
 1 | #!/bin/sh
 2 | 
 3 | # This makes small binaries:
 4 | 
 5 | CC=clang
 6 | 
 7 | CFLAGS='                                                                \
 8 | -Wall -Wextra -Wpedantic -Os -fomit-frame-pointer -mtune=generic        \
 9 | -ffunction-sections -fdata-sections -fvisibility=hidden                 \
10 | -Wl,--kill-at,--nxcompat,--dynamicbase,--as-needed,--gc-sections        \
11 | -Wl,--no-insert-timestamp                                               \
12 | -fno-math-errno -fno-trapping-math -fmerge-all-constants                \
13 | -fno-stack-protector                                                    \
14 | '
15 | 
16 | STRIP='strip --strip-all --remove-section=.eh_frame'
17 | 
18 | cd -- "$(dirname -- "$0")" &&
19 | PATH=/mingw32/bin:"$PATH" sh -c "$CC -m32 -march=pentium4 $CFLAGS -mdll -o NPClient.dll npclient.c && $STRIP NPClient.dll" &&
20 | PATH=/mingw64/bin:"$PATH" sh -c "$CC -m64 -Wl,--high-entropy-va $CFLAGS -mdll -o NPClient64.dll npclient.c && $STRIP NPClient64.dll" &&
21 | ls -l NPClient{,64}.dll && openssl md5 NPClient{,64}.dll && mv NPClient{,64}.dll ../../bin/
22 | 


--------------------------------------------------------------------------------
/contrib/npclient/README-CREDIT.txt:
--------------------------------------------------------------------------------
1 | The contents of the directory written by one and only, uglyDwarf.
2 | 
3 | Obtained at epoch time 1412397452 from the mithril-mine's shaft, where
4 | the elite dwarves reside.
5 | 
6 | For the latest happenings, visit <https://code.google.com/p/linux-track/>
7 | 


--------------------------------------------------------------------------------
/contrib/trackir-client/client.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/contrib/trackir-client/client.exe


--------------------------------------------------------------------------------
/coverity/.gitignore:
--------------------------------------------------------------------------------
1 | /*/
2 | /*.tar.*
3 | /*.zip
4 | /*
5 | 


--------------------------------------------------------------------------------
/coverity/aruco/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/coverity/aruco/.gitkeep


--------------------------------------------------------------------------------
/coverity/build.cmd:
--------------------------------------------------------------------------------
1 | setlocal
2 | set PATH=%path%;d:\cygwin64\usr\i686-w64-mingw32\bin;d:\cygwin64\bin
3 | cov-build --dir cov-int ninja %*
4 | exit /b %ERRORLEVEL%
5 | 


--------------------------------------------------------------------------------
/coverity/build.sh:
--------------------------------------------------------------------------------
 1 | #!/bin/sh
 2 | 
 3 | cleanup() {
 4 |     for i in cov-build ninja; do
 5 |         taskkill -f -t -im "$i.exe" 2>/dev/null 1>&2
 6 |     done
 7 |     rm -f "$myfile"
 8 | }
 9 | 
10 | signal() {
11 |     set +e
12 |     trap '' EXIT
13 |     echo "error: $1" 1>&2
14 |     cleanup
15 |     exit 1
16 | }
17 | 
18 | export PATH="/d/dev/cov-analysis-win64-8.7.0/bin:/c/msys64/mingw32/bin:/c/msys64/usr/bin:$PATH"
19 | 
20 | for k in HUP INT QUIT ILL BUS FPE SEGV PIPE; do
21 |     trap "signal 'got fatal signal SIG'$k" SIG"$k"
22 | done
23 | 
24 | trap 'signal "fatal return $?"' EXIT
25 | 
26 | set -e
27 | 
28 | mydate="$(date --iso-8601=minutes)"
29 | mydir="$(dirname -- "$0")"
30 | myfile="opentrack-$mydate.7z"
31 | 
32 | cd "$mydir"
33 | for k in opencv aruco libovr-025  libovr-042 libovr-080; do
34 |     ninja -C "./$k"
35 | done
36 | 
37 | cd "./opentrack"
38 | 
39 | cmake .
40 | ninja32 clean
41 | cov-build --dir cov-int ninja -v -j1
42 | rm -f "../$myfile" || true
43 | 7za -mx a "../$myfile" cov-int
44 | trap '' EXIT
45 | exit 0
46 | 


--------------------------------------------------------------------------------
/coverity/libovr-025/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/coverity/libovr-025/.gitkeep


--------------------------------------------------------------------------------
/coverity/libovr-042/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/coverity/libovr-042/.gitkeep


--------------------------------------------------------------------------------
/coverity/libovr-080/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/coverity/libovr-080/.gitkeep


--------------------------------------------------------------------------------
/coverity/libovr-140/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/coverity/libovr-140/.gitkeep


--------------------------------------------------------------------------------
/coverity/opencv/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/coverity/opencv/.gitkeep


--------------------------------------------------------------------------------
/coverity/opentrack/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/coverity/opentrack/.gitkeep


--------------------------------------------------------------------------------
/csv/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(csv STATIC)
2 | 


--------------------------------------------------------------------------------
/csv/csv.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | 
3 | #include <QString>
4 | 
5 | bool getGameData(int gameID, unsigned char* table, QString& gamename);
6 | 


--------------------------------------------------------------------------------
/csv/lang/de_DE.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="de_DE">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/csv/lang/nl_NL.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="nl_NL">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/csv/lang/ru_RU.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="ru_RU">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/csv/lang/stub.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/csv/lang/zh_CN.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="zh_CN">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/cv/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | include(opentrack-opencv)
 2 | find_package(OpenCV QUIET)
 3 | if(OpenCV_FOUND)
 4 |     try_compile(cv_use-ipp "${CMAKE_CURRENT_BINARY_DIR}"
 5 |                 SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/ocv-check.cxx"
 6 |                 CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${OpenCV_INCLUDE_DIRS}"
 7 |                             "-DCXX_STANDARD=20" "-DCXX_STANDARD_REQUIRED=1"
 8 |                 OUTPUT_VARIABLE krap)
 9 |     otr_module(cv STATIC)
10 |     target_link_libraries(${self} opencv_core opentrack-video)
11 |     target_include_directories(${self} SYSTEM PRIVATE ${OpenCV_INCLUDE_DIRS})
12 |     if(cv_use-ipp)
13 |         target_compile_definitions(${self} PUBLIC -DOTR_HAS_CV_IPP)
14 |     endif()
15 | endif()
16 | 


--------------------------------------------------------------------------------
/cv/affine.cpp:
--------------------------------------------------------------------------------
 1 | /* Copyright (c) 2012 Patrick Ruoff
 2 |  *
 3 |  * Permission to use, copy, modify, and/or distribute this software for any
 4 |  * purpose with or without fee is hereby granted, provided that the above
 5 |  * copyright notice and this permission notice appear in all copies.
 6 |  */
 7 | 
 8 | #include "affine.hpp"
 9 | 
10 | namespace affine_impl {
11 | 
12 | Affine::Affine() = default;
13 | Affine::Affine(const mat33& R, const vec3& t) : R(R), t(t) {}
14 | 
15 | Affine operator*(const Affine& X, const Affine& Y)
16 | {
17 |     return { X.R*Y.R, X.R*Y.t + X.t };
18 | }
19 | 
20 | Affine operator*(const mat33& X, const Affine& Y)
21 | {
22 |     return { X*Y.R, X*Y.t };
23 | }
24 | 
25 | Affine operator*(const Affine& X, const mat33& Y)
26 | {
27 |     return { X.R*Y, X.t };
28 | }
29 | 
30 | vec3 operator*(const Affine& X, const vec3& v)
31 | {
32 |     return X.R*v + X.t;
33 | }
34 | 
35 | } // ns affine_impl
36 | 


--------------------------------------------------------------------------------
/cv/affine.hpp:
--------------------------------------------------------------------------------
 1 | /* Copyright (c) 2012 Patrick Ruoff
 2 |  *
 3 |  * Permission to use, copy, modify, and/or distribute this software for any
 4 |  * purpose with or without fee is hereby granted, provided that the above
 5 |  * copyright notice and this permission notice appear in all copies.
 6 |  */
 7 | 
 8 | #pragma once
 9 | 
10 | #include "numeric.hpp"
11 | 
12 | namespace affine_impl {
13 | 
14 | using namespace numeric_types;
15 | 
16 | class Affine final
17 | {
18 | public:
19 |     Affine();
20 |     Affine(const mat33& R, const vec3& t);
21 | 
22 |     mat33 R { mat33::eye() };
23 |     vec3 t { 0, 0, 0 };
24 | };
25 | 
26 | Affine operator*(const Affine& X, const Affine& Y);
27 | Affine operator*(const mat33& X, const Affine& Y);
28 | Affine operator*(const Affine& X, const mat33& Y);
29 | vec3 operator*(const Affine& X, const vec3& v);
30 | 
31 | } // ns affine_impl
32 | 
33 | using Affine = affine_impl::Affine;
34 | //using affine_impl::operator *;
35 | 


--------------------------------------------------------------------------------
/cv/init.cpp:
--------------------------------------------------------------------------------
 1 | #include "init.hpp"
 2 | #include <type_traits>
 3 | #include <opencv2/core/base.hpp>
 4 | #include <opencv2/core/utility.hpp>
 5 | 
 6 | [[noreturn]]
 7 | static
 8 | int error_handler(int, const char* fn, const char* msg, const char* filename, int line, void*)
 9 | {
10 |     fprintf(stderr, "[%s:%d] opencv: %s at %s\n", filename, line, msg, fn);
11 |     fflush(stderr);
12 |     std::abort();
13 | }
14 | 
15 | void opencv_init()
16 | {
17 |     cv::redirectError(error_handler);
18 |     cv::setBreakOnError(false);
19 |     cv::setNumThreads(1);
20 | #ifdef OTR_HAS_CV_IPP
21 |     cv::ipp::setUseIPP(true);
22 |     cv::ipp::setUseIPP_NotExact(true);
23 | #endif
24 | }
25 | 


--------------------------------------------------------------------------------
/cv/init.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | void opencv_init();
3 | 


--------------------------------------------------------------------------------
/cv/lang/de_DE.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="de_DE">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/cv/lang/nl_NL.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="nl_NL">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/cv/lang/ru_RU.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="ru_RU">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/cv/lang/stub.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/cv/lang/zh_CN.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="zh_CN">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/cv/numeric.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include <type_traits>
 4 | #include <opencv2/core/matx.hpp>
 5 | 
 6 | namespace numeric_types {
 7 |     using f = double;
 8 | 
 9 |     static_assert(std::is_floating_point_v<f>);
10 | 
11 |     static constexpr f eps = f(1e-8);
12 |     static constexpr f pi = f(M_PI);
13 | 
14 |     template<int n> using vec = cv::Vec<f, n>;
15 |     using vec2 = vec<2>;
16 |     using vec3 = vec<3>;
17 | 
18 |     template<int y, int x> using mat = cv::Matx<f, y, x>;
19 |     using mat33 = mat<3, 3>;
20 |     using mat22 = mat<2, 2>;
21 | }
22 | 


--------------------------------------------------------------------------------
/cv/ocv-check.cxx:
--------------------------------------------------------------------------------
1 | #include <opencv2/core.hpp>
2 | 
3 | void check1()
4 | {
5 |     cv::ipp::setUseIPP(true);
6 |     cv::ipp::setUseIPP_NotExact(true);
7 | }
8 | 


--------------------------------------------------------------------------------
/cv/video-widget.hpp:
--------------------------------------------------------------------------------
 1 | /* Copyright (c) 2019 Stanislaw Halik <sthalik@misaki.pl>
 2 |  *
 3 |  * Permission to use, copy, modify, and/or distribute this software for any
 4 |  * purpose with or without fee is hereby granted, provided that the above
 5 |  * copyright notice and this permission notice appear in all copies.
 6 |  */
 7 | 
 8 | #pragma once
 9 | 
10 | #include "video/video-widget.hpp"
11 | #include <opencv2/core/mat.hpp>
12 | 
13 | struct cv_video_widget final : video_widget
14 | {
15 |     using video_widget::video_widget;
16 |     void update_image(const cv::Mat& frame);
17 | 
18 | private:
19 |     cv::Mat frame2, frame3;
20 | };
21 | 


--------------------------------------------------------------------------------
/dinput/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | if(WIN32)
2 |     otr_module(dinput BIN)
3 |     target_link_libraries(opentrack-dinput dinput8 dxguid)
4 | endif()
5 | 


--------------------------------------------------------------------------------
/dinput/export.hpp:
--------------------------------------------------------------------------------
 1 | // generates export.hpp for each module from compat/linkage.hpp
 2 | 
 3 | #pragma once
 4 | 
 5 | #include "compat/linkage-macros.hpp"
 6 | 
 7 | #ifdef BUILD_DINPUT
 8 | #   define OTR_DINPUT_EXPORT OTR_GENERIC_EXPORT
 9 | #else
10 | #   define OTR_DINPUT_EXPORT OTR_GENERIC_IMPORT
11 | #endif
12 | 


--------------------------------------------------------------------------------
/dinput/lang/de_DE.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="de_DE">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/dinput/lang/nl_NL.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="nl_NL">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/dinput/lang/ru_RU.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="ru_RU">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/dinput/lang/stub.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/dinput/lang/zh_CN.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="zh_CN">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/filter-accela-hamilton/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(filter-accela-hamilton)
2 | target_link_libraries(opentrack-filter-accela-hamilton opentrack-spline)
3 | 


--------------------------------------------------------------------------------
/filter-accela/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(filter-accela)
2 | target_link_libraries(opentrack-filter-accela opentrack-spline)
3 | 


--------------------------------------------------------------------------------
/filter-ewma2/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(filter-ewma)
2 | 


--------------------------------------------------------------------------------
/filter-hamilton/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(filter-hamilton)
2 | 


--------------------------------------------------------------------------------
/filter-hamilton/ReadMe.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/filter-hamilton/ReadMe.txt


--------------------------------------------------------------------------------
/filter-nm/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(filter-nm)
2 | 


--------------------------------------------------------------------------------
/gui/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | otr_module(user-interface BIN)
 2 | 
 3 | target_link_libraries(${self}
 4 |     opentrack-migration
 5 |     opentrack-logic
 6 |     opentrack-spline
 7 |     opentrack-pose-widget
 8 | )
 9 | 
10 | if(NOT APPLE AND NOT WIN32)
11 |     target_compile_definitions(${self} PRIVATE -DOTR_X11_THREADS)
12 |     otr_pkgconfig(${self} x11)
13 | endif()
14 | 


--------------------------------------------------------------------------------
/gui/export.hpp:
--------------------------------------------------------------------------------
 1 | // generates export.hpp for each module from compat/linkage.hpp
 2 | 
 3 | #pragma once
 4 | 
 5 | #include "compat/linkage-macros.hpp"
 6 | 
 7 | #ifdef BUILD_USER_INTERFACE
 8 | #   define OTR_GUI_EXPORT OTR_GENERIC_EXPORT
 9 | #else
10 | #   define OTR_GUI_EXPORT OTR_GENERIC_IMPORT
11 | #endif
12 | 


--------------------------------------------------------------------------------
/gui/images/curves.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/gui/images/curves.png


--------------------------------------------------------------------------------
/gui/images/english.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/gui/images/english.png


--------------------------------------------------------------------------------
/gui/images/filter-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/gui/images/filter-16.png


--------------------------------------------------------------------------------
/gui/images/no-feed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/gui/images/no-feed.png


--------------------------------------------------------------------------------
/gui/images/opentrack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/gui/images/opentrack.png


--------------------------------------------------------------------------------
/gui/images/settings16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/gui/images/settings16.png


--------------------------------------------------------------------------------
/gui/images/tools.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/gui/images/tools.png


--------------------------------------------------------------------------------
/gui/images/tracking-not-started.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/gui/images/tracking-not-started.png


--------------------------------------------------------------------------------
/gui/init.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include "export.hpp"
 4 | 
 5 | #include <functional>
 6 | #include <memory>
 7 | #include <QWidget>
 8 | 
 9 | OTR_GUI_EXPORT int otr_main(int argc, char** argv, std::function<std::unique_ptr<QWidget>()> const& make_main_window);
10 | 
11 | template<typename F>
12 | auto run_application(int argc, char** argv, F&& fun)
13 | {
14 |     return otr_main(argc, argv, fun);
15 | }
16 | 


--------------------------------------------------------------------------------
/gui/keyboard_listener.ui:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="UTF-8"?>
 2 | <ui version="4.0">
 3 |  <class>keyboard_listener</class>
 4 |  <widget class="QDialog" name="keyboard_listener">
 5 |   <property name="geometry">
 6 |    <rect>
 7 |     <x>0</x>
 8 |     <y>0</y>
 9 |     <width>587</width>
10 |     <height>273</height>
11 |    </rect>
12 |   </property>
13 |   <property name="windowTitle">
14 |    <string>Dialog</string>
15 |   </property>
16 |   <layout class="QVBoxLayout" name="verticalLayout">
17 |    <item alignment="Qt::AlignHCenter|Qt::AlignVCenter">
18 |     <widget class="QLabel" name="label">
19 |      <property name="text">
20 |       <string>Press a key or close this window to remove the keybinding.</string>
21 |      </property>
22 |     </widget>
23 |    </item>
24 |   </layout>
25 |  </widget>
26 |  <resources/>
27 |  <connections/>
28 | </ui>
29 | 


--------------------------------------------------------------------------------
/gui/mapping-dialog.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include "export.hpp"
 4 | 
 5 | #include "logic/mappings.hpp"
 6 | #include "gui/ui_mapping-dialog.h"
 7 | #include "spline/spline-widget.hpp"
 8 | 
 9 | #include <QWidget>
10 | #include <QDialog>
11 | #include <QtEvents>
12 | 
13 | class OTR_GUI_EXPORT mapping_dialog final : public QDialog
14 | {
15 |     Q_OBJECT
16 | public:
17 |     mapping_dialog(Mappings& m);
18 |     void refresh_tab();
19 |     inline bool embeddable() noexcept { return false; }
20 | private:
21 |     Ui::mapping_dialog ui;
22 |     Mappings& m;
23 |     main_settings s;
24 | 
25 |     spline_widget* widgets[6][2];
26 | 
27 |     void closeEvent(QCloseEvent*) override;
28 | 
29 |     void load();
30 | 
31 |     void save_dialog();
32 |     void invalidate_dialog();
33 | 
34 | private slots:
35 |     void doOK();
36 |     void doCancel();
37 | };
38 | 


--------------------------------------------------------------------------------
/gui/opentrack-res.qrc:
--------------------------------------------------------------------------------
 1 | <RCC>
 2 |     <qresource prefix="/">
 3 |         <file>images/tools.png</file>
 4 |         <file>images/settings16.png</file>
 5 |         <file>images/curves.png</file>
 6 |         <file>images/opentrack.png</file>
 7 |         <file>images/no-feed.png</file>
 8 |         <file>images/filter-16.png</file>
 9 |         <file>images/tracking-not-started.png</file>
10 |         <file>images/english.png</file>
11 |     </qresource>
12 | </RCC>
13 | 


--------------------------------------------------------------------------------
/gui/process-detector-fancy-table.cpp:
--------------------------------------------------------------------------------
 1 | #include "process-detector-fancy-table.hpp"
 2 | 
 3 | #include <QHeaderView>
 4 | 
 5 | void FancyTable::resizeEvent(QResizeEvent* e)
 6 | {
 7 |     QTableView::resizeEvent(e);
 8 |     int w = width();
 9 |     setContentsMargins(QMargins(0, 0, 0, 0));
10 |     w -= 64;
11 |     setColumnWidth(2, 32);
12 |     setColumnWidth(0, w / 2);
13 |     setColumnWidth(1, w / 2);
14 |     horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);
15 | }
16 | 
17 | FancyTable::FancyTable(QWidget* parent) : QTableWidget(parent) {}
18 | 


--------------------------------------------------------------------------------
/gui/process-detector-fancy-table.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include <QObject>
 4 | #include <QWidget>
 5 | #include <QTableWidget>
 6 | 
 7 | class FancyTable final : public QTableWidget
 8 | {
 9 |     Q_OBJECT
10 | public:
11 |     void resizeEvent(QResizeEvent* e) override;
12 | public:
13 |     FancyTable(QWidget* parent = nullptr);
14 | };
15 | 


--------------------------------------------------------------------------------
/installer/.gitignore:
--------------------------------------------------------------------------------
1 | /Output
2 | 


--------------------------------------------------------------------------------
/logic/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(logic BIN)
2 | target_link_libraries(${self} opentrack-spline)
3 | if(NOT WIN32)
4 |     target_link_libraries(${self} opentrack-qxt-mini)
5 | else()
6 |     target_link_libraries(${self} opentrack-dinput winmm)
7 | endif()
8 | 


--------------------------------------------------------------------------------
/logic/export.hpp:
--------------------------------------------------------------------------------
 1 | // generates export.hpp for each module from compat/linkage.hpp
 2 | 
 3 | #pragma once
 4 | 
 5 | #include "compat/linkage-macros.hpp"
 6 | 
 7 | #ifdef BUILD_LOGIC
 8 | #   define OTR_LOGIC_EXPORT OTR_GENERIC_EXPORT
 9 | #else
10 | #   define OTR_LOGIC_EXPORT OTR_GENERIC_IMPORT
11 | #endif
12 | 


--------------------------------------------------------------------------------
/logic/main-settings.cpp:
--------------------------------------------------------------------------------
 1 | #include "main-settings.hpp"
 2 | 
 3 | namespace main_settings_impl {
 4 | 
 5 | using namespace options;
 6 | 
 7 | main_settings::main_settings() = default;
 8 | module_settings::module_settings() = default;
 9 | 
10 | key_opts::key_opts(bundle b, const QString& name) :
11 |     keycode(b, QString("keycode-%1").arg(name), ""),
12 |     guid(b, QString("guid-%1").arg(name), ""),
13 |     button(b, QString("button-%1").arg(name), -1)
14 | {}
15 | 
16 | key_opts& key_opts::operator=(const key_opts& x)
17 | {
18 |     if (&x != this)
19 |     {
20 |         keycode = x.keycode;
21 |         guid = x.guid;
22 |         button = x.button;
23 |     }
24 | 
25 |     return *this;
26 | }
27 | 
28 | } // ns main_settings_impl
29 | 


--------------------------------------------------------------------------------
/logic/mappings.cpp:
--------------------------------------------------------------------------------
 1 | #include "mappings.hpp"
 2 | 
 3 | #include <utility>
 4 | 
 5 | Map::Map(const QString& spline_name, const QString& alt_spline_name, axis_opts& opts) :
 6 |     opts(opts),
 7 |     name(spline_name),
 8 |     alt_name(alt_spline_name),
 9 |     spline_main(spline_name, opts.prefix(), opts.axis()),
10 |     spline_alt(alt_spline_name, opts.prefix(), opts.axis())
11 | {
12 | }
13 | 
14 | void Map::save()
15 | {
16 |     spline_main.save();
17 |     spline_alt.save();
18 | }
19 | 
20 | void Map::load()
21 | {
22 |     spline_main.reload();
23 |     spline_alt.reload();
24 | }
25 | 
26 | 
27 | Mappings::Mappings(axis_opts_impl::axis_opts** opts) :
28 |     axes {
29 |         { "spline-X",       "alt-spline-X",    *opts[TX] },
30 |         { "spline-Y",       "alt-spline-Y",    *opts[TY] },
31 |         { "spline-Z",       "alt-spline-Z",    *opts[TZ] },
32 |         { "spline-yaw",     "alt-spline-yaw",  *opts[Yaw] },
33 |         { "spline-pitch",   "alt-spline-pitch",*opts[Pitch] },
34 |         { "spline-roll",    "alt-spline-roll", *opts[Roll] }
35 |     }
36 | {}
37 | 


--------------------------------------------------------------------------------
/logic/runtime-libraries.hpp:
--------------------------------------------------------------------------------
 1 | /* Copyright (c) 2014-2015, Stanislaw Halik <sthalik@misaki.pl>
 2 | 
 3 |  * Permission to use, copy, modify, and/or distribute this
 4 |  * software for any purpose with or without fee is hereby granted,
 5 |  * provided that the above copyright notice and this permission
 6 |  * notice appear in all copies.
 7 |  */
 8 | 
 9 | #pragma once
10 | 
11 | #include "api/plugin-support.hpp"
12 | #include "compat/tr.hpp"
13 | #include "export.hpp"
14 | 
15 | class QFrame;
16 | 
17 | class OTR_LOGIC_EXPORT runtime_libraries final : public TR
18 | {
19 |     Q_OBJECT
20 | 
21 | public:
22 |     using dylibptr = std::shared_ptr<dylib>;
23 | 
24 |     std::shared_ptr<ITracker> pTracker;
25 |     std::shared_ptr<IFilter> pFilter;
26 |     std::shared_ptr<IProtocol> pProtocol;
27 | 
28 |     runtime_libraries(QFrame* frame, dylibptr t, dylibptr p, dylibptr f);
29 |     runtime_libraries() = default;
30 | 
31 |     bool correct = false;
32 | };
33 | 


--------------------------------------------------------------------------------
/logic/tracklogger.cpp:
--------------------------------------------------------------------------------
 1 | #include "tracklogger.hpp"
 2 | #include "pipeline.hpp"
 3 | 
 4 | #include <QMessageBox>
 5 | 
 6 | TrackLogger::~TrackLogger() = default;
 7 | 
 8 | void TrackLogger::write_pose(const double* p)
 9 | {
10 |     write(p, 6);
11 | }
12 | 
13 | void TrackLogger::reset_dt()
14 | {
15 |     t.start();
16 | }
17 | 
18 | void TrackLogger::write_dt()
19 | {
20 |     const double dt = t.elapsed_seconds();
21 |     write(&dt, 1);
22 | }
23 | 
24 | void TrackLoggerCSV::handle_first_col_sep()
25 | {
26 |     if (!first_col)
27 |         out.put(',');
28 |     first_col = false;
29 | }
30 | 
31 | void TrackLoggerCSV::write(const char *s)
32 | {
33 |     handle_first_col_sep();
34 |     out << s;
35 | }
36 | 
37 | 
38 | void TrackLoggerCSV::write(const double *p, int n)
39 | {
40 |     handle_first_col_sep();
41 |     for (int i = 0; i < n-1; ++i)
42 |     {
43 |         out << p[i];
44 |         out.put(',');
45 |     }
46 |     out << p[n-1];
47 | }
48 | 
49 | void TrackLoggerCSV::next_line()
50 | {
51 |     out << std::endl;
52 |     first_col = true;
53 | }
54 | 
55 | 


--------------------------------------------------------------------------------
/logic/win32-shortcuts.h:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #ifdef _WIN32
 4 | 
 5 | #include <Qt>
 6 | #include <QKeySequence>
 7 | #include "shortcuts.h"
 8 | 
 9 | #include "export.hpp"
10 | 
11 | struct OTR_LOGIC_EXPORT win_key
12 | {
13 |     //win_key(int win, Qt::Key qt) : win(win), qt(qt) {}
14 |     int win;
15 |     Qt::Key qt;
16 |     [[nodiscard]] static bool from_qt(const QKeySequence& qt_, int& dik, Qt::KeyboardModifiers &mods);
17 |     [[nodiscard]] static bool to_qt(const Key& k, QKeySequence& qt_, Qt::KeyboardModifiers &mods);
18 | };
19 | 
20 | #endif
21 | 


--------------------------------------------------------------------------------
/macosx/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | if(APPLE)
 2 |     otr_escape_string(srcdir "${CMAKE_SOURCE_DIR}")
 3 |     otr_escape_string(instdir "${CMAKE_INSTALL_PREFIX}")
 4 |     otr_escape_string(commit "${OPENTRACK_COMMIT}")
 5 |     install(CODE "
 6 |        execute_process(COMMAND /bin/sh \"${srcdir}/macosx/make-app-bundle.sh\"
 7 |                                         \"${srcdir}/macosx\"
 8 |                                         \"${instdir}\"
 9 |                                        \"${commit}\")
10 |     ")
11 | endif()
12 | 


--------------------------------------------------------------------------------
/macosx/PkgInfo:
--------------------------------------------------------------------------------
1 | APPL????
2 | 


--------------------------------------------------------------------------------
/macosx/dmgbackground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/macosx/dmgbackground.png


--------------------------------------------------------------------------------
/macosx/install-fail-tool:
--------------------------------------------------------------------------------
 1 | #!/bin/sh
 2 | 
 3 | test -n "$1" || exit 1
 4 | 
 5 | dir="$1"
 6 | 
 7 | for i in "$dir"/*; do
 8 | 	echo $i
 9 |         { test -f "$i"; } || continue
10 |         case "$i" in
11 |             *.dll|*.exe) continue ;;
12 |             *) : ;;
13 |         esac
14 |         echo ---- $i ----
15 |         install_name_tool -id "@executable_path/$(echo "$i" | sed -e "s,^$dir/,,")" "$i"
16 | 
17 |         otool -L "$i" | awk '{ print $1 }' |
18 |         while read l; do
19 |                 j="$(basename -- "$l")"
20 |                 echo === $j ===
21 |                 if test -e "$dir/$j"; then
22 |                         install_name_tool -change "$l" "@rpath/$j" "$i"
23 |                 fi
24 |         done
25 | done
26 | 


--------------------------------------------------------------------------------
/migration/20220105_00-pt-grayscale.cpp:
--------------------------------------------------------------------------------
 1 | #include "migration.hpp"
 2 | #include "options/options.hpp"
 3 | 
 4 | using namespace migrations;
 5 | using namespace options;
 6 | 
 7 | #include "api/plugin-support.hpp"
 8 | #include "compat/library-path.hpp"
 9 | 
10 | struct pt_color_grayscale : migration
11 | {
12 |     bundle b { make_bundle("tracker-pt") };
13 |     enum : int { pt_color_average = 5, pt_color_bt709 = 2, };
14 | 
15 |     QString unique_date() const override
16 |     {
17 |         return "20220105_00";
18 |     }
19 | 
20 |     QString name() const override
21 |     {
22 |         return "pt color enum";
23 |     }
24 | 
25 |     bool should_run() const override
26 |     {
27 |         auto x = b->get_variant("blob-color").toInt();
28 |         return x == pt_color_average;
29 |     }
30 | 
31 |     void run() override
32 |     {
33 |         b->store_kv("blob-color", QVariant::fromValue((int)pt_color_bt709));
34 |         b->save();
35 |     }
36 | };
37 | 
38 | OPENTRACK_MIGRATION(pt_color_grayscale)
39 | 


--------------------------------------------------------------------------------
/migration/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(migration BIN)
2 | target_link_libraries(${self} opentrack-logic opentrack-spline)
3 | if(CMAKE_COMPILER_IS_CLANGXX)
4 |     target_compile_options(${self} PRIVATE -Wno-weak-vtables)
5 | endif()
6 | 


--------------------------------------------------------------------------------
/migration/export.hpp:
--------------------------------------------------------------------------------
 1 | // generates export.hpp for each module from compat/linkage.hpp
 2 | 
 3 | #pragma once
 4 | 
 5 | #include "compat/linkage-macros.hpp"
 6 | 
 7 | #ifdef BUILD_MIGRATION
 8 | #   define OTR_MIGRATION_EXPORT OTR_GENERIC_EXPORT
 9 | #else
10 | #   define OTR_MIGRATION_EXPORT OTR_GENERIC_IMPORT
11 | #endif
12 | 


--------------------------------------------------------------------------------
/migration/lang/de_DE.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="de_DE">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/migration/lang/nl_NL.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="nl_NL">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/migration/lang/ru_RU.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="ru_RU">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/migration/lang/stub.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/migration/lang/zh_CN.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="zh_CN">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/opentrack/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | if(MSVC)
 2 |     add_compile_options(-EHsc)
 3 |     add_definitions(-D_HAS_EXCEPTIONS=1)
 4 | endif()
 5 | 
 6 | otr_module(executable EXECUTABLE BIN)
 7 | 
 8 | set_target_properties(opentrack-executable PROPERTIES
 9 |     SUFFIX "${opentrack-binary-suffix}"
10 |     OUTPUT_NAME "opentrack"
11 |     PREFIX ""
12 | )
13 | 
14 | set_source_files_properties(resources.rc OBJECT_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/opentrack.ico")
15 | 
16 | if(APPLE)
17 |     set_source_files_properties(appnap_mac.mm PROPERTIES COMPILE_FLAGS "-fno-objc-arc")
18 |     target_sources(${self} PRIVATE appnap_mac.mm)
19 | endif()
20 | 
21 | target_link_libraries(${self} opentrack-user-interface opentrack-version)
22 | 
23 | if(APPLE)
24 |     target_link_libraries(${self} "-framework Foundation")
25 | endif()
26 | 


--------------------------------------------------------------------------------
/opentrack/appnap_mac.mm:
--------------------------------------------------------------------------------
 1 | #ifdef __APPLE__
 2 | 
 3 | #import <Foundation/Foundation.h>
 4 | 
 5 | /**
 6 |  * Used to prevent macOS from throttling the opentrack process.
 7 |  */
 8 | 
 9 | id token = nil;
10 | 
11 | void disable_appnap_start();
12 | void disable_appnap_stop();
13 | 
14 | void disable_appnap_start() {
15 | 
16 |     if(token){
17 |         NSLog(@"disable_appnap_start: already started");
18 |         return;
19 |     }
20 | 
21 | 
22 |     NSLog(@"disable_appnap_start");
23 |     token = [[NSProcessInfo processInfo]
24 |       beginActivityWithOptions: NSActivityUserInitiatedAllowingIdleSystemSleep
25 |       reason: @"Disable AppNap"];
26 |     [token retain];
27 | }
28 | 
29 | void disable_appnap_stop() {
30 |     if(!token){
31 |         NSLog(@"disable_appnap_start: not started");
32 |         return;
33 |     }
34 | 
35 |     NSLog(@"disable_appnap_stop");
36 |     [[NSProcessInfo processInfo] endActivity:token];
37 |     [token release];
38 |     token = nil;
39 | }
40 | 
41 | 
42 | 
43 | #endif
44 | 
45 | 
46 | 
47 | 
48 | 


--------------------------------------------------------------------------------
/opentrack/defs.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | //#define UI_FORCED_TRACKER "pt"
 4 | //#define UI_FORCED_FILTER "accela"
 5 | 
 6 | //#define UI_NO_TRACKER_COMBOBOX
 7 | //#define UI_NO_FILTER_COMBOBOX
 8 | 
 9 | //#define UI_NO_TRACKER_SETTINGS_BUTTON
10 | //#define UI_NO_FILTER_SETTINGS_BUTTON
11 | 
12 | //#define UI_NO_RAW_DATA
13 | //#define UI_NO_GAME_DATA
14 | //#define UI_NO_VIDEO_FEED
15 | 
16 | //define UI_ACCELA_OLD_STAIRCASE
17 | 


--------------------------------------------------------------------------------
/opentrack/main.cpp:
--------------------------------------------------------------------------------
 1 | #include "gui/init.hpp"
 2 | #include "main-window.hpp"
 3 | 
 4 | #if defined _WIN32
 5 | #   include <windows.h>
 6 | #endif
 7 | 
 8 | #ifdef __clang__
 9 | #   pragma GCC diagnostic ignored "-Wmain"
10 | #endif
11 | 
12 | int main(int argc, char** argv)
13 | {
14 |     return run_application(argc, argv, [] { return std::make_unique<main_window>(); });
15 | }
16 | 
17 | #if defined _MSC_VER
18 | 
19 | int CALLBACK WinMain(HINSTANCE, HINSTANCE, LPSTR, int /* nCmdShow */)
20 | {
21 |     return main(__argc, __argv);
22 | }
23 | #endif
24 | 


--------------------------------------------------------------------------------
/opentrack/new_file_dialog.h:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include "ui_new_config.h"
 4 | #include "options/options.hpp"
 5 | #include <QFile>
 6 | #include <QString>
 7 | #include <QMessageBox>
 8 | 
 9 | class new_file_dialog : public QDialog
10 | {
11 |     Q_OBJECT
12 | public:
13 |     new_file_dialog(QWidget* parent = nullptr);
14 |     bool is_ok(QString& name_);
15 | 
16 | private:
17 |     Ui::UI_new_config ui;
18 |     bool ok = false;
19 |     QString name;
20 | 
21 | private slots:
22 |     void cancel_clicked();
23 |     void ok_clicked();
24 | };
25 | 


--------------------------------------------------------------------------------
/opentrack/opentrack.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/opentrack/opentrack.ico


--------------------------------------------------------------------------------
/opentrack/resources.rc:
--------------------------------------------------------------------------------
1 | #include <windows.h>
2 | IDI_ICON1               ICON                    "opentrack.ico"
3 | 


--------------------------------------------------------------------------------
/options/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(options NO-COMPAT BIN)
2 | if(NOT WIN32 AND NOT APPLE)
3 |     target_link_libraries(opentrack-options rt)
4 | endif()
5 | target_link_libraries(opentrack-options opentrack-compat)
6 | 


--------------------------------------------------------------------------------
/options/base-value.cpp:
--------------------------------------------------------------------------------
 1 | #include "base-value.hpp"
 2 | #include <QThread>
 3 | 
 4 | using namespace options;
 5 | 
 6 | //#define OTR_TRACE_NOTIFY
 7 | 
 8 | const bool value_::TRACE_NOTIFY =
 9 | #ifdef OTR_TRACE_NOTIFY
10 |     true;
11 | #else
12 |     [] {
13 |     auto b = qgetenv("OTR_TRACE_NOTIFY");
14 |     return !b.isEmpty() && b != "0";
15 |     }();
16 | #endif
17 | 
18 | value_::value_(bundle const& b, const QString& name) noexcept :
19 |     b(b), self_name(name)
20 | {
21 |     b->on_value_created(this);
22 | }
23 | 
24 | value_::~value_()
25 | {
26 |     b->on_value_destructed(this);
27 | }
28 | 
29 | void value_::maybe_trace(const char* str) const
30 | {
31 |     if (TRACE_NOTIFY)
32 |         qDebug().noquote() << str << QThread::currentThreadId() << b->name() << self_name << get_variant();
33 | }
34 | 


--------------------------------------------------------------------------------
/options/defs.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | 
3 | #define OPENTRACK_PROFILE_FILENAME_KEY "settings-filename"
4 | #define OPENTRACK_DEFAULT_PROFILE "default.ini"
5 | 


--------------------------------------------------------------------------------
/options/export.hpp:
--------------------------------------------------------------------------------
 1 | // generates export.hpp for each module from compat/linkage.hpp
 2 | 
 3 | #pragma once
 4 | 
 5 | #include "compat/linkage-macros.hpp"
 6 | 
 7 | #ifdef BUILD_OPTIONS
 8 | #   define OTR_OPTIONS_EXPORT OTR_GENERIC_EXPORT
 9 | #else
10 | #   define OTR_OPTIONS_EXPORT OTR_GENERIC_IMPORT
11 | #endif
12 | 


--------------------------------------------------------------------------------
/options/group.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include "options/defs.hpp"
 4 | 
 5 | #include "compat/base-path.hpp"
 6 | #include "compat/library-path.hpp"
 7 | #include "compat/macros.h"
 8 | #include "compat/qhash.hpp"
 9 | #include "export.hpp"
10 | 
11 | #include <optional>
12 | #include <unordered_map>
13 | 
14 | #include <QString>
15 | #include <QVariant>
16 | 
17 | #include <QDebug>
18 | 
19 | // XXX TODO remove qsettings usage -sh 20180624
20 | 
21 | namespace options::detail {
22 |     // snapshot of qsettings group at given time
23 |     class OTR_OPTIONS_EXPORT group final
24 |     {
25 |         QString name;
26 | 
27 |     public:
28 |         std::unordered_map<QString, QVariant> kvs;
29 |         explicit group(const QString& name);
30 |         void save() const;
31 |         void put(const QString& s, const QVariant& d);
32 |         void put(const QString& s, QVariant&& d);
33 |         bool contains(const QString& s) const;
34 | 
35 |         never_inline QVariant get_variant(const QString& name) const;
36 |     };
37 | } // ns options::detail
38 | 
39 | 
40 | 


--------------------------------------------------------------------------------
/options/lang/de_DE.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="de_DE">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/options/lang/nl_NL.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="nl_NL">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/options/lang/ru_RU.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="ru_RU">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/options/lang/stub.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/options/lang/zh_CN.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="zh_CN">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/options/metatype.cpp:
--------------------------------------------------------------------------------
 1 | #include <QMetaType>
 2 | 
 3 | namespace options::detail {
 4 | 
 5 | template<typename t>
 6 | void declare_metatype_for_type(const char* str)
 7 | {
 8 |     qRegisterMetaType<t>(str);
 9 | }
10 | 
11 | } // ns options::detail
12 | 
13 | #define OPENTRACK_DEFINE_METATYPE3(t, ctr)                              \
14 |     static                                                              \
15 |     const char init_##ctr = /* NOLINT(misc-definitions-in-headers) */   \
16 |         (::options::detail::declare_metatype_for_type<t>(#t), 0);       \
17 | 
18 | #define OPENTRACK_DEFINE_METATYPE2(t, ctr) \
19 |     OPENTRACK_DEFINE_METATYPE3(t, ctr)
20 | 
21 | #define OPENTRACK_DEFINE_METATYPE(t) \
22 |     OPENTRACK_DEFINE_METATYPE2(t, __COUNTER__)
23 | 
24 | #define OPENTRACK_METATYPE_(x) OPENTRACK_DEFINE_METATYPE(x)
25 | #include "metatype.hpp"
26 | 


--------------------------------------------------------------------------------
/options/metatype.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include "slider.hpp"
 4 | #include "defs.hpp"
 5 | 
 6 | #include <QList>
 7 | #include <QString>
 8 | #include <QPointF>
 9 | #include <QDebug>
10 | 
11 | #include <QMetaType>
12 | 
13 | #if !defined OPENTRACK_METATYPE_
14 | #   define OPENTRACK_METATYPE(x) Q_DECLARE_METATYPE(x)
15 | #else
16 | #   define OPENTRACK_METATYPE(x) Q_DECLARE_METATYPE(x) OPENTRACK_METATYPE_(x)
17 | #endif
18 | 
19 | OPENTRACK_METATYPE(QList<double>)
20 | OPENTRACK_METATYPE(QList<float>)
21 | OPENTRACK_METATYPE(QList<int>)
22 | OPENTRACK_METATYPE(QList<bool>)
23 | OPENTRACK_METATYPE(QList<QString>)
24 | OPENTRACK_METATYPE(QList<QPointF>)
25 | OPENTRACK_METATYPE(::options::slider_value)
26 | 


--------------------------------------------------------------------------------
/options/options.hpp:
--------------------------------------------------------------------------------
 1 | /* Copyright (c) 2013-2017 Stanislaw Halik
 2 |  *
 3 |  * Permission to use, copy, modify, and/or distribute this software for any
 4 |  * purpose with or without fee is hereby granted, provided that the above
 5 |  * copyright notice and this permission notice appear in all copies.
 6 |  */
 7 | #pragma once
 8 | 
 9 | #include "defs.hpp"
10 | #include "bundle.hpp"
11 | #include "slider.hpp"
12 | #include "value.hpp"
13 | #include "tie.hpp"
14 | #include "scoped.hpp"
15 | #include "globals.hpp"
16 | 


--------------------------------------------------------------------------------
/options/scoped.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include "bundle.hpp"
 4 | #include "value.hpp"
 5 | #include <QString>
 6 | 
 7 | #include "export.hpp"
 8 | 
 9 | namespace options {
10 | 
11 | struct OTR_OPTIONS_EXPORT with_tracker_teardown final
12 | {
13 |     with_tracker_teardown();
14 |     ~with_tracker_teardown();
15 | 
16 | private:
17 |     bool old_value;
18 | };
19 | 
20 | struct OTR_OPTIONS_EXPORT opts
21 | {
22 |     template<typename t> using value = options::value<t>;
23 |     using bundle = options::bundle;
24 | 
25 |     bundle b;
26 | 
27 |     opts& operator=(const opts&) = delete;
28 |     opts(const opts&) = delete;
29 | 
30 |     void set_raii_dtor_state(bool x) { raii = x; }
31 | 
32 | protected:
33 |     explicit opts(const QString& name);
34 |     ~opts();
35 | private:
36 |     bool raii = true;
37 | };
38 | 
39 | }
40 | 


--------------------------------------------------------------------------------
/options/value.cpp:
--------------------------------------------------------------------------------
1 | // instantiate the "template class" value<t> symbols
2 | 
3 | #define OTR_OPTIONS_INST_VALUE OTR_TEMPLATE_EXPORT
4 | #include "value.hpp"
5 | 
6 | 


--------------------------------------------------------------------------------
/pose-widget/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(pose-widget BIN)
2 | target_link_libraries(${self})
3 | 


--------------------------------------------------------------------------------
/pose-widget/export.hpp:
--------------------------------------------------------------------------------
 1 | // generates export.hpp for each module from compat/linkage.hpp
 2 | 
 3 | #pragma once
 4 | 
 5 | #include "compat/linkage-macros.hpp"
 6 | 
 7 | #ifdef BUILD_POSE_WIDGET
 8 | #   define OTR_POSE_WIDGET_EXPORT OTR_GENERIC_EXPORT
 9 | #else
10 | #   define OTR_POSE_WIDGET_EXPORT OTR_GENERIC_IMPORT
11 | #endif
12 | 


--------------------------------------------------------------------------------
/pose-widget/images/side1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/pose-widget/images/side1.png


--------------------------------------------------------------------------------
/pose-widget/images/side6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/pose-widget/images/side6.png


--------------------------------------------------------------------------------
/pose-widget/lang/de_DE.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="de_DE">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/pose-widget/lang/nl_NL.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="nl_NL">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/pose-widget/lang/ru_RU.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="ru_RU">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/pose-widget/lang/stub.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/pose-widget/lang/zh_CN.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="zh_CN">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/pose-widget/posewidget.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>images/side1.png</file>
4 |         <file>images/side6.png</file>
5 |     </qresource>
6 | </RCC>
7 | 


--------------------------------------------------------------------------------
/presets/README.txt:
--------------------------------------------------------------------------------
 1 | Here you can add presets as .ini files in order to get them copied for
 2 | the end-user as profiles.
 3 | 
 4 | Additionally, a preset called 'default.ini' will be sourced into each
 5 | profile the user creates.
 6 | 
 7 | This functionality exists for hardware vendors who create their custom
 8 | distributions of opentrack.
 9 | 
10 | The user can delete the profiles in his 'Documents/opentrack-2.3'
11 | directory. The presets won't be copied again unless their modification
12 | time changes inside the opentrack's distribution.
13 | 


--------------------------------------------------------------------------------
/proto-flightgear/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(proto-fgfs)
2 | 


--------------------------------------------------------------------------------
/proto-flightgear/fg-protocol.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>images/flightgear.png</file>
4 |     </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/proto-flightgear/images/flightgear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-flightgear/images/flightgear.png


--------------------------------------------------------------------------------
/proto-fsuipc/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | if(WIN32 AND NOT opentrack-64bit AND opentrack-intel)
 2 |     set(SDK_FSUIPC "" CACHE PATH "FSUIPC for older MS FSX path")
 3 |     if(SDK_FSUIPC)
 4 |         otr_module(proto-fsuipc)
 5 |         target_link_libraries(opentrack-proto-fsuipc ${SDK_FSUIPC}/FSUIPC_User.lib)
 6 |         target_include_directories(opentrack-proto-fsuipc SYSTEM PUBLIC ${SDK_FSUIPC})
 7 |         if(MSVC)
 8 |             target_link_options(${self} PRIVATE -NODEFAULTLIB:LIBC.lib)
 9 |         endif()
10 |     endif()
11 | endif()
12 | 


--------------------------------------------------------------------------------
/proto-fsuipc/fsuipc-protocol.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>images/fs9.png</file>
4 |     </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/proto-fsuipc/images/fs9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-fsuipc/images/fs9.png


--------------------------------------------------------------------------------
/proto-fsuipc/images/fs91.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-fsuipc/images/fs91.png


--------------------------------------------------------------------------------
/proto-ft/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | if(WIN32)
2 |     otr_module(proto-freetrack)
3 |     target_link_libraries(opentrack-proto-freetrack opentrack-csv)
4 | endif()
5 | 


--------------------------------------------------------------------------------
/proto-ft/ft-protocol.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>images/freetrack.png</file>
4 |     </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/proto-ft/images/freetrack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-ft/images/freetrack.png


--------------------------------------------------------------------------------
/proto-iokit-foohid/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | if(APPLE)
2 |     otr_module(proto-iokit-foohid)
3 |     target_link_options(${self} PRIVATE -framework IOKit)
4 | endif()
5 | 


--------------------------------------------------------------------------------
/proto-iokit-foohid/README.md:
--------------------------------------------------------------------------------
 1 | # Virtual Joystick Support for macOS
 2 | 
 3 | Adds support for a virtual joystick output, based on the foohid driver for virtual HID devices.
 4 | 
 5 | ## Usage
 6 | 
 7 | Install the latest [foohid HID driver](https://github.com/unbit/foohid/releases/).
 8 | 
 9 | Select "Virtual Joystick" as the output in OpenTrack.
10 | 
11 | The X, Y, Z, Yaw, Pitch, and Roll tracking axes are mapped to the joystick's X, Y, Z, RX, RY,
12 | and RZ axes respectively.
13 | 
14 | # Building
15 | 
16 | The implementation only uses standard libraries that are pre-installed on macOS. There are no
17 | special requirements for building.
18 | 


--------------------------------------------------------------------------------
/proto-iokit-foohid/iokitprotocoldialog.h:
--------------------------------------------------------------------------------
 1 | /* Copyright (c) 2017, Eike Ziller                                               *
 2 |  *                                                                               *
 3 |  * Permission to use, copy, modify, and/or distribute this software for any      *
 4 |  * purpose with or without fee is hereby granted, provided that the above        *
 5 |  * copyright notice and this permission notice appear in all copies.             *
 6 |  */
 7 | 
 8 | #pragma once
 9 | 
10 | #include "api/plugin-api.hpp"
11 | 
12 | class IOKitProtocolDialog : public IProtocolDialog
13 | {
14 |     Q_OBJECT
15 | 
16 | public:
17 |     IOKitProtocolDialog();
18 | 
19 |     void register_protocol(IProtocol *protocol) final;
20 |     void unregister_protocol() final;
21 | };
22 | 


--------------------------------------------------------------------------------
/proto-iokit-foohid/lang/zh_CN.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="zh_CN">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/proto-libevdev/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | if(LINUX)
2 |     pkg_check_modules(libevdev QUIET libevdev)
3 |     if(libevdev_FOUND)
4 |         otr_module(proto-libevdev)
5 |         target_link_libraries(opentrack-proto-libevdev ${libevdev_LIBRARIES})
6 |         target_include_directories(opentrack-proto-libevdev SYSTEM PUBLIC ${libevdev_INCLUDE_DIRS})
7 |     endif()
8 | endif()
9 | 


--------------------------------------------------------------------------------
/proto-libevdev/ftnoir_protocol_libevdev_dialog.cpp:
--------------------------------------------------------------------------------
 1 | #include "ftnoir_protocol_libevdev.h"
 2 | #include "api/plugin-api.hpp"
 3 | 
 4 | LibevdevControls::LibevdevControls()
 5 | {
 6 | 	ui.setupUi( this );
 7 | 	connect(ui.btnOK, SIGNAL(clicked()), this, SLOT(doOK()));
 8 | 	connect(ui.btnCancel, SIGNAL(clicked()), this, SLOT(doCancel()));
 9 | }
10 | 
11 | void LibevdevControls::doOK() {
12 | 	save();
13 | 	close();
14 | }
15 | 
16 | void LibevdevControls::doCancel() {
17 |     close();
18 | }
19 | 
20 | void LibevdevControls::save() {
21 | }
22 | 


--------------------------------------------------------------------------------
/proto-libevdev/images/linux.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-libevdev/images/linux.png


--------------------------------------------------------------------------------
/proto-libevdev/libevdev-protocol.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>images/linux.png</file>
4 |     </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/proto-mouse/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | if(WIN32)
2 |     otr_module(proto-win32-mouse)
3 | endif()
4 | 


--------------------------------------------------------------------------------
/proto-mouse/ftnoir_protocol_mouse_dialog.cpp:
--------------------------------------------------------------------------------
 1 | #include "ftnoir_protocol_mouse.h"
 2 | #include "api/plugin-api.hpp"
 3 | 
 4 | MOUSEControls::MOUSEControls()
 5 | {
 6 |     ui.setupUi(this);
 7 | 
 8 |     connect(ui.buttonBox, &QDialogButtonBox::accepted, this, &MOUSEControls::doOK);
 9 |     connect(ui.buttonBox, &QDialogButtonBox::rejected, this, &MOUSEControls::doCancel);
10 | 
11 |     tie_setting(s.mouse_x, ui.axis_x);
12 |     tie_setting(s.mouse_y, ui.axis_y);
13 | 
14 |     tie_setting(s.sensitivity_x, ui.sensitivity_x);
15 |     tie_setting(s.sensitivity_y, ui.sensitivity_y);
16 | 
17 |     const int data[] = { input_direct, input_legacy };
18 |     for (unsigned k = 0; k < std::size(data); k++)
19 |         ui.input_method->setItemData(k, data[k]);
20 |     tie_setting(s.input_method, ui.input_method);
21 | }
22 | 
23 | void MOUSEControls::doOK()
24 | {
25 |     s.b->save();
26 |     close();
27 | }
28 | 
29 | void MOUSEControls::doCancel()
30 | {
31 |     close();
32 | }
33 | 


--------------------------------------------------------------------------------
/proto-mouse/images/mouse.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-mouse/images/mouse.png


--------------------------------------------------------------------------------
/proto-mouse/mouse-settings.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include "options/options.hpp"
 4 | 
 5 | enum input_method {
 6 |     input_direct = 0, input_legacy = 1,
 7 | };
 8 | 
 9 | namespace mouse_impl {
10 | 
11 | using namespace options;
12 | 
13 | struct mouse_settings : opts
14 | {
15 |     value<int> mouse_x { b, "mouse-x", 0 }, mouse_y { b, "mouse-y", 0 };
16 |     value<slider_value> sensitivity_x { b, "mouse-sensitivity-x", { 200, 25, 500 } };
17 |     value<slider_value> sensitivity_y { b, "mouse-sensitivity-y", { 200, 25, 500 } };
18 |     value<input_method> input_method { b, "input-method", input_direct };
19 | 
20 |     mouse_settings() : opts("mouse-proto") {}
21 | };
22 | 
23 | } // ns mouse_impl
24 | 
25 | using mouse_settings = mouse_impl::mouse_settings;
26 | 


--------------------------------------------------------------------------------
/proto-mouse/win32-mouse-protocol.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>images/mouse.png</file>
4 |     </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/proto-osc/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | set(SDK_OSCPACK "" CACHE PATH "oscpack build directory")
 2 | if(SDK_OSCPACK)
 3 |     if(WIN32)
 4 |         if(NOT EXISTS "${SDK_OSCPACK}/include/.")
 5 |             message(FATAL_ERROR "SDK_OSCPACK should have 'include' subdirectory (or symlink) to src dir")
 6 |         endif()
 7 |         link_directories("${SDK_OSCPACK}")
 8 |         include_directories("${SDK_OSCPACK}/include" "${SDK_OSCPACK}/include/oscpack")
 9 |     else()
10 |         link_directories("${SDK_OSCPACK}/lib" "${SDK_OSCPACK}/lib32")
11 |         include_directories("${SDK_OSCPACK}/include/oscpack")
12 |     endif()
13 |     link_libraries(oscpack)
14 |     otr_module(proto-osc)
15 | endif()
16 | 


--------------------------------------------------------------------------------
/proto-osc/dialog.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include "settings.hpp"
 4 | #include "ui_dialog.h"
 5 | #include "api/plugin-api.hpp"
 6 | 
 7 | class osc_dialog: public IProtocolDialog
 8 | {
 9 |     Q_OBJECT
10 | 
11 | public:
12 |     osc_dialog();
13 |     void register_protocol(IProtocol*) override;
14 |     void unregister_protocol() override;
15 | private:
16 |     void set_buttons_visible(bool x) noexcept override;
17 |     bool embeddable() noexcept override;
18 |     void save() override;
19 |     void reload() override;
20 | 
21 |     Ui_OSC_Dialog ui;
22 |     osc_settings s;
23 |     const QPalette pal_;
24 | 
25 | private slots:
26 |     void doOK();
27 |     void doCancel();
28 |     void host_address_edited(const QString& str);
29 | };
30 | 


--------------------------------------------------------------------------------
/proto-osc/images/osc-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-osc/images/osc-icon.png


--------------------------------------------------------------------------------
/proto-osc/metadata.cpp:
--------------------------------------------------------------------------------
1 | #include "metadata.hpp"
2 | #include "proto.hpp"
3 | #include "dialog.hpp"
4 | 
5 | QString osc_metadata::name() { return tr("Open Sound Control"); }
6 | QIcon osc_metadata::icon() { return QIcon(":/images/osc-icon.png"); }
7 | 
8 | OPENTRACK_DECLARE_PROTOCOL(osc_proto, osc_dialog, osc_metadata)
9 | 


--------------------------------------------------------------------------------
/proto-osc/metadata.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | #include "api/plugin-api.hpp"
 3 | 
 4 | class osc_metadata : public Metadata
 5 | {
 6 |     Q_OBJECT
 7 | 
 8 |     QString name() override;
 9 |     QIcon icon() override;
10 | };
11 | 


--------------------------------------------------------------------------------
/proto-osc/osc-res.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |   <qresource prefix="/">
3 |     <file>images/osc-icon.png</file>
4 |   </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/proto-osc/proto.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | /* Copyright (c) 2023 Stanislaw Halik <sthalik@misaki.pl>
 4 |  *
 5 |  * Permission to use, copy, modify, and/or distribute this software for any
 6 |  * purpose with or without fee is hereby granted, provided that the above
 7 |  * copyright notice and this permission notice appear in all copies.
 8 |  */
 9 | 
10 | #include "settings.hpp"
11 | #include "api/plugin-api.hpp"
12 | #include <QUdpSocket>
13 | #include <QHostAddress>
14 | 
15 | class osc_proto : public QObject, public IProtocol
16 | {
17 |     Q_OBJECT
18 | 
19 |     osc_settings s;
20 |     QUdpSocket sock;
21 |     QHostAddress dest;
22 |     unsigned short port = 0;
23 | 
24 | public:
25 |     osc_proto();
26 |     module_status initialize() override;
27 |     void pose(const double *headpose, const double*) override;
28 |     QString game_name() override { return tr("Open Sound Control"); }
29 | };
30 | 


--------------------------------------------------------------------------------
/proto-osc/settings.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | #include <QString>
 3 | #include "options/options.hpp"
 4 | 
 5 | using namespace options;
 6 | 
 7 | struct osc_settings : opts
 8 | {
 9 |     value<QString> address;
10 |     value<int> port;
11 |     osc_settings() : opts("proto-osc"), address{b, "address", "127.0.0.1"},
12 |         port(b, "port", 53101)
13 |     {}
14 | };
15 | 


--------------------------------------------------------------------------------
/proto-simconnect/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | if(WIN32 AND opentrack-intel)
2 |     otr_module(proto-simconnect)
3 | endif()
4 | 


--------------------------------------------------------------------------------
/proto-simconnect/fsx_p3d_sp2_xpack.manifest:
--------------------------------------------------------------------------------
1 | <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
2 | <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
3 |   <dependency>
4 |     <dependentAssembly>
5 |       <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect' version='10.0.61259.0' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' />
6 |     </dependentAssembly>
7 |   </dependency>
8 | </assembly>
9 | 


--------------------------------------------------------------------------------
/proto-simconnect/fsx_rtm.manifest:
--------------------------------------------------------------------------------
1 | <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
2 | <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
3 |   <dependency>
4 |     <dependentAssembly>
5 |       <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect' version='10.0.60905.0' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' />
6 |     </dependentAssembly>
7 |   </dependency>
8 | </assembly>
9 | 


--------------------------------------------------------------------------------
/proto-simconnect/fsx_sp1.manifest:
--------------------------------------------------------------------------------
1 | <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
2 | <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
3 |   <dependency>
4 |     <dependentAssembly>
5 |       <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect' version='10.0.61242.0' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' />
6 |     </dependentAssembly>
7 |   </dependency>
8 | </assembly>
9 | 


--------------------------------------------------------------------------------
/proto-simconnect/fsx_sp2.manifest:
--------------------------------------------------------------------------------
1 | <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
2 | <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
3 |   <dependency>
4 |     <dependentAssembly>
5 |       <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect' version='10.0.61259.0' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' />
6 |     </dependentAssembly>
7 |   </dependency>
8 | </assembly>
9 | 


--------------------------------------------------------------------------------
/proto-simconnect/fsx_steam_last.manifest:
--------------------------------------------------------------------------------
1 | <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
2 | <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
3 |   <dependency>
4 |     <dependentAssembly>
5 |       <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect' version='10.0.62615.0' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' />
6 |     </dependentAssembly>
7 |   </dependency>
8 | </assembly>
9 | 


--------------------------------------------------------------------------------
/proto-simconnect/fsx_steam_orig.manifest:
--------------------------------------------------------------------------------
1 | <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
2 | <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
3 |   <dependency>
4 |     <dependentAssembly>
5 |       <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect' version='10.0.62607.0' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' />
6 |     </dependentAssembly>
7 |   </dependency>
8 | </assembly>
9 | 


--------------------------------------------------------------------------------
/proto-simconnect/ftnoir-protocol-sc.rc:
--------------------------------------------------------------------------------
1 | #define RT_MANIFEST 24
2 | 142 RT_MANIFEST fsx_p3d_sp2_xpack.manifest
3 | 143 RT_MANIFEST fsx_rtm.manifest
4 | 144 RT_MANIFEST fsx_sp1.manifest
5 | 145 RT_MANIFEST fsx_sp2.manifest
6 | 146 RT_MANIFEST fsx_steam_orig.manifest
7 | 147 RT_MANIFEST fsx_steam_last.manifest
8 | 


--------------------------------------------------------------------------------
/proto-simconnect/images/fsx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-simconnect/images/fsx.png


--------------------------------------------------------------------------------
/proto-simconnect/images/fsx1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-simconnect/images/fsx1.png


--------------------------------------------------------------------------------
/proto-simconnect/manifest-template.in:
--------------------------------------------------------------------------------
1 | <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
2 | <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
3 |   <dependency>
4 |     <dependentAssembly>
5 |       <assemblyIdentity type='win32' name='Microsoft.FlightSimulator.SimConnect' version='VERSION' processorArchitecture='x86' publicKeyToken='67c7c14424d61b5b' />
6 |     </dependentAssembly>
7 |   </dependency>
8 | </assembly>
9 | 


--------------------------------------------------------------------------------
/proto-simconnect/sc-protocol.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>images/fsx.png</file>
4 |     </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/proto-simconnect/simconnect versions.txt:
--------------------------------------------------------------------------------
 1 | #define LVERS_ORIG "10.0.60905.0"
 2 | #define LVERS_SP1B1 "10.0.61232.0"
 3 | #define LVERS_SP1B2 "10.0.61233.0"
 4 | #define LVERS_SP1B3 "10.0.61234.0"
 5 | #define LVERS_SP1B4 "10.0.61240.0"
 6 | #define LVERS_SP1 "10.0.61242.0"
 7 | #define LVERS_ACCA1 "10.0.61245.0"
 8 | #define LVERS_ACCB1 "10.0.61246.0"
 9 | #define LVERS_ACCB2 "10.0.61247.0"
10 | #define LVERS_ACCB3 "10.0.61248.0"
11 | #define LVERS_ACCSP2 "10.0.61259.0"
12 | #define LVERS_STEAM "10.0.62607.0"
13 | #define LVERS_STEAM2 "10.0.62608.0"
14 | #define LVERS_STEAM3 "10.0.62609.0"
15 | #define LVERS_STEAM4 "10.0.62610.0"
16 | #define LVERS_STEAM5 "10.0.62611.0"
17 | #define LVERS_STEAM6 "10.0.62612.0"
18 | #define LVERS_STEAM7 "10.0.62613.0"
19 | #define LVERS_STEAM8 "10.0.62614.0"
20 | #define LVERS_STEAM9 "10.0.62615.0"
21 | 


--------------------------------------------------------------------------------
/proto-udp/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(proto-udp)
2 | 


--------------------------------------------------------------------------------
/proto-udp/lang/zh_CN.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="zh_CN">
 4 | <context>
 5 |     <name>UICFTNControls</name>
 6 |     <message>
 7 |         <source>UDP protocol settings</source>
 8 |         <translation>UDP 协议设置</translation>
 9 |     </message>
10 |     <message>
11 |         <source>Remote IP address</source>
12 |         <translation>远程 IP 地址</translation>
13 |     </message>
14 |     <message>
15 |         <source>Port</source>
16 |         <translation>端口</translation>
17 |     </message>
18 | </context>
19 | <context>
20 |     <name>udp</name>
21 |     <message>
22 |         <source>Can&apos;t bind socket: %1</source>
23 |         <translation>无法绑定套接字:%1</translation>
24 |     </message>
25 |     <message>
26 |         <source>UDP over network</source>
27 |         <translation type="unfinished"></translation>
28 |     </message>
29 | </context>
30 | <context>
31 |     <name>udp_sender_dll</name>
32 |     <message>
33 |         <source>UDP over network</source>
34 |         <translation type="unfinished"></translation>
35 |     </message>
36 | </context>
37 | </TS>
38 | 


--------------------------------------------------------------------------------
/proto-vjoystick/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | if(WIN32 AND opentrack-intel)
 2 |     set(SDK_VJOYSTICK "" CACHE PATH "vjoystick SDK path")
 3 |     if(SDK_VJOYSTICK)
 4 |         if(opentrack-64bit)
 5 |             set(arch "amd64/")
 6 |         else()
 7 |             set(arch "")
 8 |         endif()
 9 |         set(lib "${SDK_VJOYSTICK}/lib/${arch}vJoyInterface.lib")
10 |         set(dll "${SDK_VJOYSTICK}/lib/${arch}vJoyInterface.dll")
11 |         otr_module(proto-vjoy)
12 |         target_link_libraries(opentrack-proto-vjoy ${lib})
13 |         target_include_directories(opentrack-proto-vjoy SYSTEM PUBLIC "${SDK_VJOYSTICK}/inc")
14 |         install(FILES "${dll}" DESTINATION ${opentrack-libexec})
15 |     endif()
16 | endif()
17 | 


--------------------------------------------------------------------------------
/proto-vjoystick/images/vjoystick.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-vjoystick/images/vjoystick.png


--------------------------------------------------------------------------------
/proto-vjoystick/vjoystick.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>images/vjoystick.png</file>
4 |     </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/proto-vjoystick/vjoystick_dialog.cpp:
--------------------------------------------------------------------------------
 1 | #include "vjoystick.h"
 2 | #include "api/plugin-api.hpp"
 3 | 
 4 | #include <QDialogButtonBox>
 5 | 
 6 | vjoystick_dialog::vjoystick_dialog()
 7 | {
 8 |     ui.setupUi(this);
 9 |     connect(ui.buttonBox, &QDialogButtonBox::accepted, this, &QWidget::close);
10 |     connect(ui.buttonBox, &QDialogButtonBox::rejected, this, &QWidget::close);
11 | }
12 | 


--------------------------------------------------------------------------------
/proto-wine/images/wine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/proto-wine/images/wine.png


--------------------------------------------------------------------------------
/proto-wine/opentrack-wrapper-wine-posix.cxx:
--------------------------------------------------------------------------------
1 | #ifdef _WIN32
2 | #   undef _WIN32
3 | #endif
4 | 
5 | #define shm_wrapper ShmPosix
6 | #include "compat/shm.h"
7 | #include "compat/shm.cpp"
8 | 


--------------------------------------------------------------------------------
/proto-wine/proton.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | 
3 | #include <qchar.h>
4 | #include <qprocess.h>
5 | 
6 | std::tuple<QProcessEnvironment, QString, bool> make_steam_environ(const QString& proton_dist_path);
7 | std::tuple<QString, QString, bool> make_wineprefix(int appid);


--------------------------------------------------------------------------------
/proto-wine/wine-protocol.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>images/wine.png</file>
4 |     </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/proto-wine/wine-shm.h:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #define WINE_SHM_NAME "facetracknoir-wine-shm"
 4 | #define WINE_MTX_NAME "facetracknoir-wine-mtx"
 5 | 
 6 | #ifdef __clang__
 7 | #   pragma clang diagnostic push
 8 | #   pragma clang diagnostic ignored "-Wreserved-id-macro"
 9 | #endif
10 | 
11 | #ifdef __clang__
12 | #   pragma clang diagnostic pop
13 | #endif
14 | 
15 | struct WineSHM {
16 |     double data[6];
17 |     int gameid, gameid2;
18 |     unsigned char table[8];
19 |     bool stop;
20 | };
21 | 


--------------------------------------------------------------------------------
/qxt-mini/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | if(UNIX OR APPLE)
 2 |     set(self opentrack-qxt-mini)
 3 |     include_directories(SYSTEM ${Qt6Gui_PRIVATE_INCLUDE_DIRS})
 4 |     otr_module(qxt-mini NO-COMPAT BIN)
 5 |     if(APPLE)
 6 |         find_library(CoreFoundation CoreFoundation)
 7 |         find_library(Carbon Carbon)
 8 |         target_link_options(${self} PUBLIC -framework Carbon -I ${CoreFoundation})
 9 |     else()
10 |         otr_pkgconfig(${self} x11 xcb xproto)
11 |     endif()
12 |     target_compile_definitions(${self} PRIVATE -DQXT_BUILD)
13 | endif()
14 | 


--------------------------------------------------------------------------------
/qxt-mini/QxtGlobalShortcut:
--------------------------------------------------------------------------------
1 | #ifndef _WIN32
2 | #   include "qxtglobalshortcut.h"
3 | #endif
4 | 
5 | 


--------------------------------------------------------------------------------
/qxt-mini/lang/de_DE.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="de_DE">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/qxt-mini/lang/nl_NL.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="nl_NL">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/qxt-mini/lang/ru_RU.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="ru_RU">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/qxt-mini/lang/stub.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/qxt-mini/lang/zh_CN.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="zh_CN">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/qxt-mini/x11-keymap.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #if !defined __APPLE__ && !defined _WIN32
 4 | 
 5 | #undef QXT_X11_INCLUDED
 6 | #define QXT_X11_INCLUDED
 7 | 
 8 | #include <Qt>
 9 | #include <QDebug>
10 | #include <QHash>
11 | #include <QPair>
12 | 
13 | #include "qxtglobal.h"
14 | 
15 | #include <vector>
16 | #include <tuple>
17 | 
18 | #include <xcb/xcb.h>
19 | #include <X11/Xlib.h>
20 | #include <X11/Xutil.h>
21 | 
22 | std::vector<quint32>
23 | qt_key_to_x11(Display* disp, Qt::Key k, Qt::KeyboardModifiers m);
24 | 
25 | std::tuple<Qt::Key, Qt::KeyboardModifiers>
26 | x11_key_to_qt(Display* disp, quint32 keycode, quint32 mods);
27 | 
28 | QPair<KeySym, KeySym>
29 | keycode_to_keysym(Display* disp,
30 |                   quint32 keycode, quint32 keystate,
31 |                   xcb_key_press_event_t const* kev);
32 | 
33 | quint32 qt_mods_to_x11(Qt::KeyboardModifiers modifiers);
34 | 
35 | Qt::KeyboardModifiers x11_mods_to_qt(quint32 mods);
36 | quint32 xcb_mods_to_x11(quint32 mods);
37 | 
38 | #endif
39 | 


--------------------------------------------------------------------------------
/redist/x64/msvcp110.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/redist/x64/msvcp110.dll


--------------------------------------------------------------------------------
/redist/x64/msvcr110.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/redist/x64/msvcr110.dll


--------------------------------------------------------------------------------
/redist/x86/msvcp110.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/redist/x86/msvcp110.dll


--------------------------------------------------------------------------------
/redist/x86/msvcr110.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/redist/x86/msvcr110.dll


--------------------------------------------------------------------------------
/sdk-paths-runner@GNU-Linux.cmake:
--------------------------------------------------------------------------------
1 | set(SDK_WINE ON CACHE BOOL "" FORCE)
2 | set(OPENTRACK_WINE_ARCH -m64 CACHE STRING "" FORCE)
3 | set(ENV{PATH} "/usr/lib/wine:$ENV{PATH}")
4 | 


--------------------------------------------------------------------------------
/spline/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(spline BIN)
2 | 


--------------------------------------------------------------------------------
/spline/export.hpp:
--------------------------------------------------------------------------------
 1 | // generates export.hpp for each module from compat/linkage.hpp
 2 | 
 3 | #pragma once
 4 | 
 5 | #include "compat/linkage-macros.hpp"
 6 | 
 7 | #ifdef BUILD_SPLINE
 8 | #   define OTR_SPLINE_EXPORT OTR_GENERIC_EXPORT
 9 | #else
10 | #   define OTR_SPLINE_EXPORT OTR_GENERIC_IMPORT
11 | #endif
12 | 


--------------------------------------------------------------------------------
/spline/lang/de_DE.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="de_DE">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/spline/lang/nl_NL.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="nl_NL">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/spline/lang/ru_RU.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="ru_RU">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/spline/lang/stub.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/spline/lang/zh_CN.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="zh_CN">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/tracker-aruco/aruco-tracker.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>images/aruco.png</file>
4 |     </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/tracker-aruco/compile-test/abi.cpp:
--------------------------------------------------------------------------------
1 | #include <aruco/abi.h>
2 | 
3 | #if ARUCO_OPENTRACK_FORK_ABI != 2
4 | #   error "wrong ABI"
5 | #endif
6 | 
7 | int main(void) { return 0; }
8 | 


--------------------------------------------------------------------------------
/tracker-aruco/images/aruco.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-aruco/images/aruco.png


--------------------------------------------------------------------------------
/tracker-easy/Resources/cap_front.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-easy/Resources/cap_front.png


--------------------------------------------------------------------------------
/tracker-easy/Resources/cap_side.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-easy/Resources/cap_side.png


--------------------------------------------------------------------------------
/tracker-easy/Resources/clip_front.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-easy/Resources/clip_front.png


--------------------------------------------------------------------------------
/tracker-easy/Resources/clip_side.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-easy/Resources/clip_side.png


--------------------------------------------------------------------------------
/tracker-easy/Resources/easy-tracker-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-easy/Resources/easy-tracker-logo.png


--------------------------------------------------------------------------------
/tracker-easy/doc/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-easy/doc/logo.png


--------------------------------------------------------------------------------
/tracker-easy/doc/ptrack.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-easy/doc/ptrack.ico


--------------------------------------------------------------------------------
/tracker-easy/doc/settings1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-easy/doc/settings1.png


--------------------------------------------------------------------------------
/tracker-easy/doc/settings2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-easy/doc/settings2.png


--------------------------------------------------------------------------------
/tracker-easy/doc/settings3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-easy/doc/settings3.png


--------------------------------------------------------------------------------
/tracker-easy/export.hpp:
--------------------------------------------------------------------------------
 1 | // generates export.hpp for each module from compat/linkage.hpp
 2 | 
 3 | #pragma once
 4 | 
 5 | #include "compat/linkage-macros.hpp"
 6 | 
 7 | #ifdef BUILD_TRACKER_PT
 8 | #   define OTR_PT_EXPORT OTR_GENERIC_EXPORT
 9 | #else
10 | #   define OTR_PT_EXPORT OTR_GENERIC_IMPORT
11 | #endif
12 | 


--------------------------------------------------------------------------------
/tracker-easy/kalman-filter-pose.h:
--------------------------------------------------------------------------------
 1 | /* Copyright (c) 2019, Stephane Lenclud <github@lenclud.com>
 2 | 
 3 |  * Permission to use, copy, modify, and/or distribute this
 4 |  * software for any purpose with or without fee is hereby granted,
 5 |  * provided that the above copyright notice and this permission
 6 |  * notice appear in all copies.
 7 |  */
 8 | 
 9 | #pragma once
10 | 
11 | #include <opencv2/core.hpp>
12 | #include <opencv2/video/tracking.hpp>
13 | 
14 | 
15 | namespace EasyTracker
16 | {
17 | 
18 |     ///
19 |     /// TODO: do not use a constant time difference
20 |     ///
21 |     class KalmanFilterPose: public cv::KalmanFilter
22 |     {
23 |     public:
24 |         KalmanFilterPose();
25 |         void Init(int aStateCount, int aMeasurementCount, int aInputCount, double aDt);
26 |         void Update(double& aX, double& aY, double& aZ, double& aRoll, double& aPitch, double& aYaw);
27 | 
28 | 
29 |         cv::Mat iMeasurements;
30 |     };
31 | 
32 | }
33 | 


--------------------------------------------------------------------------------
/tracker-easy/module.cpp:
--------------------------------------------------------------------------------
 1 | #include "tracker-easy.h"
 2 | #include "tracker-easy-dialog.h"
 3 | #include "module.hpp"
 4 | 
 5 | #include <memory>
 6 | 
 7 | namespace EasyTracker
 8 | {
 9 |     QString Metadata::name() { return tr("Easy Tracker 1.1"); }
10 |     QIcon Metadata::icon() { return QIcon(":/Resources/easy-tracker-logo.png"); }
11 | 
12 | }
13 | 
14 | 
15 | OPENTRACK_DECLARE_TRACKER(EasyTracker::Tracker, EasyTracker::Dialog, EasyTracker::Metadata)
16 | 


--------------------------------------------------------------------------------
/tracker-easy/module.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include "api/plugin-api.hpp"
 4 | #include <QIcon>
 5 | #include <QString>
 6 | 
 7 | #include "compat/linkage-macros.hpp"
 8 | 
 9 | namespace EasyTracker
10 | {
11 | 
12 |     class OTR_GENERIC_EXPORT Metadata : public ::Metadata
13 |     {
14 |         Q_OBJECT
15 | 
16 |         QString name() override;
17 |         QIcon icon() override;
18 |     };
19 | 
20 | } // ns pt_module
21 | 


--------------------------------------------------------------------------------
/tracker-easy/ocv-check.cxx:
--------------------------------------------------------------------------------
 1 | #include <opencv2/calib3d.hpp>
 2 | void check_solvep3p()
 3 | {
 4 |     cv::Mat x;
 5 |     cv::solveP3P(x, x, x, x, x, x, 0);
 6 | }
 7 | 
 8 | #include <opencv2/video/tracking.hpp>
 9 | void check_kf()
10 | {
11 |     [[maybe_unused]] cv::KalmanFilter kf;
12 | }
13 | 
14 | #include <opencv2/highgui.hpp>
15 | void check_highgui()
16 | {
17 |     cv::imshow("foo", cv::noArray());
18 | }
19 | 


--------------------------------------------------------------------------------
/tracker-easy/tracker_easy.qrc:
--------------------------------------------------------------------------------
 1 | <RCC>
 2 |     <qresource prefix="/">
 3 |         <file>Resources/easy-tracker-logo.png</file>
 4 |         <file>Resources/cap_front.png</file>
 5 |         <file>Resources/cap_side.png</file>
 6 |         <file>Resources/clip_front.png</file>
 7 |         <file>Resources/clip_side.png</file>
 8 |     </qresource>
 9 | </RCC>
10 | 


--------------------------------------------------------------------------------
/tracker-eyeware-beam/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | # The Eyeware Beam SDK can be found at https://beam.eyeware.tech/developers/
 2 | # The latest version can be downloaded at https://eyewarecistorage.blob.core.windows.net/beam-sdk/BeamSDK-Windows64-1.1.0.zip
 3 | set(SDK_EYEWARE_BEAM "" CACHE PATH "Eyeware Beam SDK path")
 4 | if(WIN32 AND SDK_EYEWARE_BEAM)
 5 |     if(MSVC)
 6 |         add_compile_options(-EHsc)
 7 |     endif()
 8 |     otr_module(tracker-eyeware-beam)
 9 | 
10 |     if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
11 |         set(arch "x86")
12 |     else()
13 |         set(arch "x64")
14 |     endif()
15 | 
16 |     target_include_directories(${self} SYSTEM PRIVATE "${SDK_EYEWARE_BEAM}/API/cpp/include")
17 |     target_link_directories(${self} PRIVATE "${SDK_EYEWARE_BEAM}/API/cpp/lib/${arch}")
18 |     set(dll "${SDK_EYEWARE_BEAM}/API/cpp/lib/${arch}/tracker_client.dll")
19 |     set(lib tracker_client.lib)
20 | 
21 |     #message(${self})
22 |     #message(${dll})
23 |     #message(${lib})
24 | 
25 |     target_link_libraries(${self} ${lib})
26 |     install(FILES ${dll} DESTINATION ${opentrack-libexec})
27 | endif()
28 | 


--------------------------------------------------------------------------------
/tracker-eyeware-beam/eyeware_beam.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/images">
3 |         <file>eyeware_beam_logo.png</file>
4 |     </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/tracker-eyeware-beam/eyeware_beam_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-eyeware-beam/eyeware_beam_logo.png


--------------------------------------------------------------------------------
/tracker-freepie-udp/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(tracker-freepie-udp)
2 | 


--------------------------------------------------------------------------------
/tracker-freepie-udp/freepie-udp-res.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>glovepie.png</file>
4 |     </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/tracker-freepie-udp/ftnoir_tracker_freepie-udp_dialog.cpp:
--------------------------------------------------------------------------------
 1 | #include "ftnoir_tracker_freepie-udp.h"
 2 | #include "api/plugin-api.hpp"
 3 | 
 4 | dialog_freepie::dialog_freepie()
 5 | {
 6 |     ui.setupUi(this);
 7 | 
 8 |     connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK()));
 9 |     connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel()));
10 | 
11 |     tie_setting(s.port, ui.port);
12 |     tie_setting(s.idx_x, ui.input_x);
13 |     tie_setting(s.idx_y, ui.input_y);
14 |     tie_setting(s.idx_z, ui.input_z);
15 | 
16 |     tie_setting(s.add_yaw, ui.add_yaw);
17 |     tie_setting(s.add_pitch, ui.add_pitch);
18 |     tie_setting(s.add_roll, ui.add_roll);
19 | }
20 | 
21 | void dialog_freepie::doOK() {
22 |     s.b->save();
23 |     close();
24 | }
25 | 
26 | void dialog_freepie::doCancel()
27 | {
28 |     close();
29 | }
30 | 
31 | 


--------------------------------------------------------------------------------
/tracker-freepie-udp/glovepie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-freepie-udp/glovepie.png


--------------------------------------------------------------------------------
/tracker-fusion/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(tracker-fusion)
2 | 


--------------------------------------------------------------------------------
/tracker-fusion/fusion-tracker-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-fusion/fusion-tracker-logo.png


--------------------------------------------------------------------------------
/tracker-fusion/fusion.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/images">
3 |         <file>fusion-tracker-logo.png</file>
4 |     </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/tracker-fusion/fusion_dialog.cpp:
--------------------------------------------------------------------------------
1 | #include "fusion.h"
2 | 
3 | 


--------------------------------------------------------------------------------
/tracker-hatire/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | if(Qt6SerialPort_FOUND)
2 |     otr_module(tracker-hatire)
3 |     target_link_libraries(${self} ${Qt6SerialPort_LIBRARIES})
4 |     target_include_directories(${self} SYSTEM PUBLIC ${Qt6SerialPort_INCLUDE_DIRS})
5 |     if (WIN32 OR APPLE)
6 |         otr_install_lib(Qt6::SerialPort .)
7 |     endif()
8 | endif()
9 | 


--------------------------------------------------------------------------------
/tracker-hatire/ftnoir_arduino_type.h:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include <QDataStream>
 4 | 
 5 | // Arduino frame structure
 6 | #pragma pack(push,2)
 7 | struct TArduinoData
 8 | {
 9 |     quint16  Begin;    // Header frame 0xAAAA;
10 |     quint16  Code;     // 0->999 Num frame  >=2000  Info >=3000 Init  >=5000 Start Command  >=9000 Error
11 |     float Rot[3];
12 |     float Trans[3];
13 |     quint16  End;     // End frame   0x5555;
14 | } ;
15 | #pragma pack(pop) 
16 | 
17 | inline QDataStream & operator >> ( QDataStream& in, TArduinoData& out )
18 | {
19 |     in.setFloatingPointPrecision(QDataStream::SinglePrecision );
20 | 
21 |     in >> out.Begin  >> out.Code
22 |        >> out.Rot[0] >> out.Rot[1]  >> out.Rot[2]
23 |        >> out.Trans[0] >> out.Trans[1] >> out.Trans[2]
24 |        >> out.End;
25 |     return in;
26 | }
27 | 
28 | static_assert(sizeof(TArduinoData) == 30, "sizeof packet != 30");
29 | 


--------------------------------------------------------------------------------
/tracker-hatire/ftnoir_hat.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>images/hat_logo.png</file>
4 |         <file>images/hat.ico</file>
5 |         <file>images/hat.png</file>
6 |     </qresource>
7 | </RCC>
8 | 


--------------------------------------------------------------------------------
/tracker-hatire/images/hat.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-hatire/images/hat.ico


--------------------------------------------------------------------------------
/tracker-hatire/images/hat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-hatire/images/hat.png


--------------------------------------------------------------------------------
/tracker-hatire/images/hat_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-hatire/images/hat_logo.png


--------------------------------------------------------------------------------
/tracker-hydra/ftnoir_tracker_hydra_dialog.cpp:
--------------------------------------------------------------------------------
 1 | #include "ftnoir_tracker_hydra.h"
 2 | #include "api/plugin-api.hpp"
 3 | 
 4 | dialog_hydra::dialog_hydra()
 5 | {
 6 |     ui.setupUi(this);
 7 | 
 8 |     connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK()));
 9 |     connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel()));
10 | }
11 | 
12 | void dialog_hydra::doOK() {
13 |     s.b->save();
14 |     close();
15 | }
16 | 
17 | void dialog_hydra::doCancel()
18 | {
19 |     close();
20 | }
21 | 
22 | 


--------------------------------------------------------------------------------
/tracker-hydra/lang/de_DE.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="de_DE">
 4 | <context>
 5 |     <name>UIHydraControls</name>
 6 |     <message>
 7 |         <source>Sixense Hydra tracker settings FaceTrackNoIR</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 |     <message>
11 |         <source>None whatsoever</source>
12 |         <translation type="unfinished"></translation>
13 |     </message>
14 | </context>
15 | </TS>
16 | 


--------------------------------------------------------------------------------
/tracker-hydra/lang/nl_NL.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="nl_NL">
 4 | <context>
 5 |     <name>UIHydraControls</name>
 6 |     <message>
 7 |         <source>Sixense Hydra tracker settings FaceTrackNoIR</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 |     <message>
11 |         <source>None whatsoever</source>
12 |         <translation type="unfinished"></translation>
13 |     </message>
14 | </context>
15 | </TS>
16 | 


--------------------------------------------------------------------------------
/tracker-hydra/lang/ru_RU.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="ru_RU">
 4 | <context>
 5 |     <name>UIHydraControls</name>
 6 |     <message>
 7 |         <source>Sixense Hydra tracker settings FaceTrackNoIR</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 |     <message>
11 |         <source>None whatsoever</source>
12 |         <translation type="unfinished"></translation>
13 |     </message>
14 | </context>
15 | </TS>
16 | 


--------------------------------------------------------------------------------
/tracker-hydra/lang/stub.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1">
 4 | <context>
 5 |     <name>UIHydraControls</name>
 6 |     <message>
 7 |         <source>Sixense Hydra tracker settings FaceTrackNoIR</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 |     <message>
11 |         <source>None whatsoever</source>
12 |         <translation type="unfinished"></translation>
13 |     </message>
14 | </context>
15 | </TS>
16 | 


--------------------------------------------------------------------------------
/tracker-hydra/lang/zh_CN.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="zh_CN">
 4 | <context>
 5 |     <name>UIHydraControls</name>
 6 |     <message>
 7 |         <source>Sixense Hydra tracker settings FaceTrackNoIR</source>
 8 |         <translation>Sixense Hydra 跟踪器设置 (FaceTrackNoIR版)</translation>
 9 |     </message>
10 |     <message>
11 |         <source>None whatsoever</source>
12 |         <translation>什么都没有</translation>
13 |     </message>
14 | </context>
15 | </TS>
16 | 


--------------------------------------------------------------------------------
/tracker-joystick/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | if(WIN32)
2 |     otr_module(tracker-joystick)
3 |     target_link_libraries(opentrack-tracker-joystick opentrack-dinput)
4 | endif()
5 | 
6 | 


--------------------------------------------------------------------------------
/tracker-kinect-face/images/kinect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-kinect-face/images/kinect.png


--------------------------------------------------------------------------------
/tracker-kinect-face/kinect_face.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>images/kinect.png</file>
4 |     </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/tracker-kinect-face/kinect_face_settings.h:
--------------------------------------------------------------------------------
 1 | /* Copyright (c) 2019, Stephane Lenclud <github@lenclud.com>
 2 | 
 3 |  * Permission to use, copy, modify, and/or distribute this
 4 |  * software for any purpose with or without fee is hereby granted,
 5 |  * provided that the above copyright notice and this permission
 6 |  * notice appear in all copies.
 7 |  */
 8 | 
 9 | #pragma once
10 | #include "ui_kinect_face_settings.h"
11 | #include "api/plugin-api.hpp"
12 | 
13 | class KinectFaceSettings : public ITrackerDialog
14 | {
15 |     Q_OBJECT
16 | 
17 |     Ui::KinectFaceUi ui;
18 | 
19 | public:
20 |     KinectFaceSettings();
21 |     void register_tracker(ITracker *) override {}
22 |     void unregister_tracker() override {}
23 | };
24 | 
25 | class KinectFaceMetadata : public Metadata
26 | {
27 |     Q_OBJECT
28 | 
29 |     QString name() override { return tr("Kinect Face 0.1"); }
30 |     QIcon icon() override { return QIcon(":/images/kinect.png"); }
31 | };
32 | 
33 | 


--------------------------------------------------------------------------------
/tracker-linux-joystick/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | if(LINUX)
2 |     otr_module(tracker-linux-joystick)
3 |     target_link_libraries(opentrack-tracker-linux-joystick)
4 | endif()
5 | 


--------------------------------------------------------------------------------
/tracker-neuralnet/BUILD.md:
--------------------------------------------------------------------------------
 1 | ONNX Runtime
 2 | ------------
 3 | 
 4 | Recommended approach on Windws: Build a shared library from sources. Use static MSVC
 5 | runtime library. The v1.6.0 branch should work fine.
 6 | 
 7 | Source location: https://github.com/microsoft/onnxruntime
 8 | 
 9 | In order to build, execute `build.bat` as follows:
10 | 
11 | ```
12 | $ build.bat --config Release --x86 --cmake_extra_defines CMAKE_INSTALL_PREFIX="D:\Dev\onnxruntime-x86-release" --build_dir .\buildx86\ --enable_msvc_static_runtime --build_shared_lib --skip_tests --cmake_generator "Visual Studio 15 2017"
13 | $ cmake --install .\buildx64\Release
14 | ```
15 | 
16 | Replace the argument for `--cmake_generator` if needed. Also adjust the build-and install directories.
17 | 
18 | This should place all required files in the directory specified by CMAKE_INSTALL_PREFIX.
19 | 
20 | See also https://www.onnxruntime.ai/docs/how-to/build.html.


--------------------------------------------------------------------------------
/tracker-neuralnet/images/neuralnet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-neuralnet/images/neuralnet.png


--------------------------------------------------------------------------------
/tracker-neuralnet/models/head-localizer.onnx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-neuralnet/models/head-localizer.onnx


--------------------------------------------------------------------------------
/tracker-neuralnet/models/head-pose-0.2-big.onnx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-neuralnet/models/head-pose-0.2-big.onnx


--------------------------------------------------------------------------------
/tracker-neuralnet/models/head-pose-0.2-small.onnx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-neuralnet/models/head-pose-0.2-small.onnx


--------------------------------------------------------------------------------
/tracker-neuralnet/models/head-pose-0.3-big-quantized.onnx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-neuralnet/models/head-pose-0.3-big-quantized.onnx


--------------------------------------------------------------------------------
/tracker-neuralnet/neuralnet-tracker.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>images/neuralnet.png</file>
4 |     </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/tracker-neuralnet/redist/vcomp140.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-neuralnet/redist/vcomp140.dll


--------------------------------------------------------------------------------
/tracker-pt/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | include(opentrack-opencv)
 2 | find_package(OpenCV QUIET)
 3 | if(OpenCV_FOUND)
 4 |     foreach(k core)
 5 |         otr_install_lib("opencv_${k}" "${opentrack-libexec}")
 6 |     endforeach()
 7 |     otr_module(tracker-pt-base STATIC)
 8 |     target_include_directories(${self} SYSTEM PUBLIC ${OpenCV_INCLUDE_DIRS})
 9 |     target_link_libraries(${self} opentrack-cv opencv_core)
10 |     set_property(TARGET ${self} PROPERTY OUTPUT_NAME "pt-base")
11 | endif()
12 | add_subdirectory(module)
13 | 


--------------------------------------------------------------------------------
/tracker-pt/Resources/Logo_IR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/Resources/Logo_IR.png


--------------------------------------------------------------------------------
/tracker-pt/Resources/cap_front.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/Resources/cap_front.png


--------------------------------------------------------------------------------
/tracker-pt/Resources/cap_side.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/Resources/cap_side.png


--------------------------------------------------------------------------------
/tracker-pt/Resources/clip_front.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/Resources/clip_front.png


--------------------------------------------------------------------------------
/tracker-pt/Resources/clip_side.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/Resources/clip_side.png


--------------------------------------------------------------------------------
/tracker-pt/doc/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/doc/logo.png


--------------------------------------------------------------------------------
/tracker-pt/doc/ptrack.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/doc/ptrack.ico


--------------------------------------------------------------------------------
/tracker-pt/doc/settings1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/doc/settings1.png


--------------------------------------------------------------------------------
/tracker-pt/doc/settings2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/doc/settings2.png


--------------------------------------------------------------------------------
/tracker-pt/doc/settings3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/doc/settings3.png


--------------------------------------------------------------------------------
/tracker-pt/module/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | include(opentrack-opencv)
 2 | find_package(OpenCV QUIET)
 3 | if(OpenCV_FOUND)
 4 |     foreach(k core imgproc)
 5 |         otr_install_lib("opencv_${k}" "${opentrack-libexec}")
 6 |     endforeach()
 7 |     otr_module(tracker-pt)
 8 |     target_link_libraries(${self} opentrack-video opencv_imgproc opentrack-tracker-pt-base)
 9 |     target_include_directories(${self} PUBLIC "${CMAKE_SOURCE_DIR}/tracker-pt")
10 | endif()
11 | 


--------------------------------------------------------------------------------
/tracker-pt/module/Resources/Logo_IR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-pt/module/Resources/Logo_IR.png


--------------------------------------------------------------------------------
/tracker-pt/module/export.hpp:
--------------------------------------------------------------------------------
 1 | // generates export.hpp for each module from compat/linkage.hpp
 2 | 
 3 | #pragma once
 4 | 
 5 | #include "compat/linkage-macros.hpp"
 6 | 
 7 | #ifdef BUILD_TRACKER_PT
 8 | #   define OTR_PT_EXPORT OTR_GENERIC_EXPORT
 9 | #else
10 | #   define OTR_PT_EXPORT OTR_GENERIC_IMPORT
11 | #endif
12 | 


--------------------------------------------------------------------------------
/tracker-pt/module/frame.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include "pt-api.hpp"
 4 | 
 5 | #include <opencv2/core/mat.hpp>
 6 | #include <QImage>
 7 | 
 8 | #ifdef __clang__
 9 | #   pragma clang diagnostic push
10 | #   pragma clang diagnostic ignored "-Wweak-vtables"
11 | #endif
12 | 
13 | namespace pt_module {
14 | 
15 | struct Frame final : pt_frame
16 | {
17 |     cv::Mat mat;
18 | 
19 |     operator const cv::Mat&() const& { return mat; }
20 |     operator cv::Mat&() & { return mat; }
21 | };
22 | 
23 | struct Preview final : pt_preview
24 | {
25 |     Preview(int w, int h);
26 | 
27 |     void set_last_frame(const pt_frame& frame) override;
28 |     QImage get_bitmap() override;
29 |     void draw_head_center(f x, f y) override;
30 | 
31 |     operator cv::Mat&() { return frame_copy; }
32 |     operator cv::Mat const&() const { return frame_copy; }
33 | 
34 | private:
35 |     cv::Mat frame_copy, frame_out, frame_tmp;
36 | };
37 | 
38 | } // ns pt_module
39 | 
40 | #ifdef __clang__
41 | #   pragma clang diagnostic pop
42 | #endif
43 | 


--------------------------------------------------------------------------------
/tracker-pt/module/lang/de_DE.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="de_DE">
 4 | <context>
 5 |     <name>pt_module::metadata_pt</name>
 6 |     <message>
 7 |         <source>PointTracker 1.1</source>
 8 |         <translation>PointTracker 1.1</translation>
 9 |     </message>
10 | </context>
11 | </TS>
12 | 


--------------------------------------------------------------------------------
/tracker-pt/module/lang/nl_NL.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="nl_NL">
 4 | <context>
 5 |     <name>pt_module::metadata_pt</name>
 6 |     <message>
 7 |         <source>PointTracker 1.1</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | </TS>
12 | 


--------------------------------------------------------------------------------
/tracker-pt/module/lang/ru_RU.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="ru_RU">
 4 | <context>
 5 |     <name>pt_module::metadata_pt</name>
 6 |     <message>
 7 |         <source>PointTracker 1.1</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | </TS>
12 | 


--------------------------------------------------------------------------------
/tracker-pt/module/lang/stub.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1">
 4 | <context>
 5 |     <name>pt_module::metadata_pt</name>
 6 |     <message>
 7 |         <source>PointTracker 1.1</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | </TS>
12 | 


--------------------------------------------------------------------------------
/tracker-pt/module/lang/zh_CN.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="zh_CN">
 4 | <context>
 5 |     <name>pt_module::metadata_pt</name>
 6 |     <message>
 7 |         <source>PointTracker 1.1</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | </TS>
12 | 


--------------------------------------------------------------------------------
/tracker-pt/module/module.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include "api/plugin-api.hpp"
 4 | #include <QIcon>
 5 | #include <QString>
 6 | 
 7 | #include "compat/linkage-macros.hpp"
 8 | 
 9 | namespace pt_module
10 | {
11 | 
12 | class OTR_GENERIC_EXPORT metadata_pt : public Metadata
13 | {
14 |     Q_OBJECT
15 | 
16 |     QString name() override;
17 |     QIcon icon() override;
18 | };
19 | 
20 | } // ns pt_module
21 | 


--------------------------------------------------------------------------------
/tracker-pt/module/tracker_pt.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>Resources/Logo_IR.png</file>
4 |     </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/tracker-pt/point-filter.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include "cv/numeric.hpp"
 4 | #include "compat/timer.hpp"
 5 | #include "pt-settings.hpp"
 6 | #include <optional>
 7 | #include <array>
 8 | 
 9 | namespace pt_point_filter_impl {
10 | 
11 | using namespace numeric_types;
12 | using PointOrder = std::array<numeric_types::vec2, 3>;
13 | 
14 | class point_filter final
15 | {
16 |     PointOrder state_;
17 |     std::optional<Timer> t;
18 |     const pt_settings& s;
19 | 
20 | public:
21 |     void reset();
22 |     const PointOrder& operator()(const PointOrder& input, f deadzone_amount);
23 | 
24 |     explicit point_filter(const pt_settings& s);
25 |     ~point_filter() = default;
26 | 
27 |     OTR_DISABLE_MOVE_COPY(point_filter);
28 | };
29 | 
30 | } // ns pt_point_filter_impl
31 | 
32 | using point_filter = pt_point_filter_impl::point_filter;
33 | 


--------------------------------------------------------------------------------
/tracker-pt/tracker_pt_base.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>Resources/cap_front.png</file>
4 |         <file>Resources/cap_side.png</file>
5 |         <file>Resources/clip_front.png</file>
6 |         <file>Resources/clip_side.png</file>
7 |     </qresource>
8 | </RCC>
9 | 


--------------------------------------------------------------------------------
/tracker-rift-140/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | if(WIN32)
 2 |     SET(SDK_RIFT_140 "" CACHE PATH "libOVR 1.4.0 path for Oculus Rift")
 3 |     if(SDK_RIFT_140)
 4 |         include_directories("${SDK_RIFT_140}/Include")
 5 |         if(opentrack-64bit)
 6 |             link_directories("${SDK_RIFT_140}/Lib/Windows/x64/Release/VS2017")
 7 |         else()
 8 |             link_directories("${SDK_RIFT_140}/Lib/Windows/Win32/Release/VS2017")
 9 |         endif()
10 |         link_libraries(LibOVR winmm setupapi ws2_32 imagehlp wbemuuid)
11 | 
12 |         otr_module(tracker-rift)
13 |     endif()
14 | endif()
15 | 


--------------------------------------------------------------------------------
/tracker-rift-140/dialog.cpp:
--------------------------------------------------------------------------------
 1 | #include "rift-140.hpp"
 2 | #include "api/plugin-api.hpp"
 3 | 
 4 | dialog_rift_140::dialog_rift_140()
 5 | {
 6 |     ui.setupUi(this);
 7 | 
 8 |     connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK()));
 9 |     connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel()));
10 | }
11 | 
12 | void dialog_rift_140::doOK() {
13 |     s.b->save();
14 |     close();
15 | }
16 | 
17 | void dialog_rift_140::doCancel() {
18 |     close();
19 | }
20 | 
21 | 


--------------------------------------------------------------------------------
/tracker-rift-140/images/medium.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-rift-140/images/medium.png


--------------------------------------------------------------------------------
/tracker-rift-140/images/rift_medium.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-rift-140/images/rift_medium.png


--------------------------------------------------------------------------------
/tracker-rift-140/images/rift_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-rift-140/images/rift_small.png


--------------------------------------------------------------------------------
/tracker-rift-140/images/rift_tiny.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-rift-140/images/rift_tiny.png


--------------------------------------------------------------------------------
/tracker-rift-140/images/small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-rift-140/images/small.png


--------------------------------------------------------------------------------
/tracker-rift-140/images/tiny.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-rift-140/images/tiny.png


--------------------------------------------------------------------------------
/tracker-rift-140/lang/de_DE.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="de_DE">
 4 | <context>
 5 |     <name>dialog_rift_140</name>
 6 |     <message>
 7 |         <source>Oculus Rift tracker settings FaceTrackNoIR</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | <context>
12 |     <name>rift_140Dll</name>
13 |     <message>
14 |         <source>Oculus Rift runtime 1.4.0 -- HMD</source>
15 |         <translation type="unfinished"></translation>
16 |     </message>
17 | </context>
18 | </TS>
19 | 


--------------------------------------------------------------------------------
/tracker-rift-140/lang/nl_NL.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="nl_NL">
 4 | <context>
 5 |     <name>dialog_rift_140</name>
 6 |     <message>
 7 |         <source>Oculus Rift tracker settings FaceTrackNoIR</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | <context>
12 |     <name>rift_140Dll</name>
13 |     <message>
14 |         <source>Oculus Rift runtime 1.4.0 -- HMD</source>
15 |         <translation type="unfinished"></translation>
16 |     </message>
17 | </context>
18 | </TS>
19 | 


--------------------------------------------------------------------------------
/tracker-rift-140/lang/ru_RU.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="ru_RU">
 4 | <context>
 5 |     <name>dialog_rift_140</name>
 6 |     <message>
 7 |         <source>Oculus Rift tracker settings FaceTrackNoIR</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | <context>
12 |     <name>rift_140Dll</name>
13 |     <message>
14 |         <source>Oculus Rift runtime 1.4.0 -- HMD</source>
15 |         <translation type="unfinished"></translation>
16 |     </message>
17 | </context>
18 | </TS>
19 | 


--------------------------------------------------------------------------------
/tracker-rift-140/lang/stub.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1">
 4 | <context>
 5 |     <name>dialog_rift_140</name>
 6 |     <message>
 7 |         <source>Oculus Rift tracker settings FaceTrackNoIR</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | <context>
12 |     <name>rift_140Dll</name>
13 |     <message>
14 |         <source>Oculus Rift runtime 1.4.0 -- HMD</source>
15 |         <translation type="unfinished"></translation>
16 |     </message>
17 | </context>
18 | </TS>
19 | 


--------------------------------------------------------------------------------
/tracker-rift-140/lang/zh_CN.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="zh_CN">
 4 | <context>
 5 |     <name>dialog_rift_140</name>
 6 |     <message>
 7 |         <source>Oculus Rift tracker settings FaceTrackNoIR</source>
 8 |         <translation>Oculus Rift 追踪器设置 (FaceTrackNoIR版)</translation>
 9 |     </message>
10 | </context>
11 | <context>
12 |     <name>rift_140Dll</name>
13 |     <message>
14 |         <source>Oculus Rift runtime 1.4.0 -- HMD</source>
15 |         <translation type="unfinished"></translation>
16 |     </message>
17 | </context>
18 | </TS>
19 | 


--------------------------------------------------------------------------------
/tracker-rift-140/rift-140.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>images/rift_medium.png</file>
4 |         <file>images/rift_small.png</file>
5 |         <file>images/rift_tiny.png</file>
6 |     </qresource>
7 | </RCC>
8 | 


--------------------------------------------------------------------------------
/tracker-rs/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | set(SDK_REALSENSE "$ENV{RSSDK_DIR}" CACHE PATH "Intel RealSense SDK dir")
 2 | 
 3 | if(WIN32 AND SDK_REALSENSE AND opentrack-intel)
 4 |     if(CMAKE_COMPILER_IS_GNUCC)
 5 |         add_definitions(-fpermissive -Wno-error) # for SDK headers
 6 |     endif()
 7 |     otr_module(tracker-rs)
 8 |     add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/rs_impl")
 9 |     target_link_libraries(opentrack-tracker-rs opentrack-tracker-rs-impl)
10 | endif()
11 | 


--------------------------------------------------------------------------------
/tracker-rs/images/RS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-rs/images/RS.png


--------------------------------------------------------------------------------
/tracker-rs/images/intel-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-rs/images/intel-16x16.png


--------------------------------------------------------------------------------
/tracker-rs/rs_impl/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | if(WIN32)
 2 |     otr_module(tracker-rs-impl STATIC NO-QT SOURCES "${SDK_REALSENSE}/opensource/src/libpxc/libpxc.cpp")
 3 |     target_compile_definitions(opentrack-tracker-rs-impl PRIVATE -DUNICODE -D_UNICODE)
 4 |     target_include_directories(opentrack-tracker-rs-impl PRIVATE SYSTEM "${SDK_REALSENSE}/include")
 5 |     target_link_libraries(opentrack-tracker-rs-impl advapi32)
 6 | 
 7 |     # for SDK headers
 8 |     if(CMAKE_COMPILER_IS_GNUCXX)
 9 |         add_definitions(-fpermissive -Wno-error -w
10 |                         #-Wno-missing-field-initializers -Wno-switch -Wno-sign-compare
11 |                         #-Wno-unknown-pragmas -Wno-attributes
12 |         )
13 |     endif()
14 | endif()
15 | 


--------------------------------------------------------------------------------
/tracker-rs/rs_impl/attic/bin/amd64/.gitignore:
--------------------------------------------------------------------------------
1 | /*.exp
2 | /*.obj
3 | 


--------------------------------------------------------------------------------
/tracker-rs/rs_impl/attic/bin/ia32/.gitignore:
--------------------------------------------------------------------------------
1 | /*.exp
2 | /*.obj
3 | 


--------------------------------------------------------------------------------
/tracker-rs/rs_impl/attic/build.bat:
--------------------------------------------------------------------------------
 1 | @echo off
 2 | 
 3 | setlocal
 4 | 
 5 | IF DEFINED VS150COMNTOOLS (
 6 |     if exist "%VS150COMNTOOLS%\..\..\VC\vcvarsall.bat" (
 7 |         set vs_dir="%VS150COMNTOOLS%\..\..\VC"
 8 |         set vs_64=amd64
 9 |     ) else (
10 |         rem it installed vcvarsall.bat here for me for some reason -sh 20160827
11 |         set vs_dir="%VS150COMNTOOLS%\..\ide\vc"
12 |         set vs_64=amd64
13 |     )) else (
14 |         set vs_dir="%VS140COMNTOOLS%\..\..\VC"
15 |         set vs_64=amd64
16 |         )
17 | 
18 | cd /d "%~dp0"
19 | if %errorlevel% neq 0 exit /b 1
20 | 
21 | set rs_objs=ftnoir_tracker_rs_impl.obj libpxc.obj
22 | 
23 | set rs_subdir=ia32&set vs_var=x86
24 | call ".\build_common.bat" || exit /b 1
25 | 
26 | set rs_subdir=amd64&set vs_var=%vs_64%
27 | call ".\build_common.bat" || exit /b 1
28 | 
29 | exit /b 0
30 | 


--------------------------------------------------------------------------------
/tracker-rs/rs_impl/attic/build_common.bat:
--------------------------------------------------------------------------------
 1 | @echo off
 2 | 
 3 | setlocal
 4 | 
 5 | cd /d .\bin\%rs_subdir% || exit 1
 6 | 
 7 | echo --- %rs_subdir%
 8 | 
 9 | set rice_ld=/OPT:REF /OPT:ICF=10 /DEBUG /DYNAMICBASE /NXCOMPAT /LTCG
10 | set rice_lib=
11 | set rice_cc=/Ox /arch:SSE2 /EHscr /fp:fast /GS- /GF /GR- /Gy /MT /Y- /Zi /W1 /GL /Zi
12 | set libs=advapi32.lib
13 | 
14 | if not exist %vs_dir%\vcvarsall.bat exit /b 1
15 | call %vs_dir%\vcvarsall %vs_var% || exit /b 1
16 | if ["%libpath%"] == [""] exit /b 1
17 | 
18 | cl /c /nologo -DEXPORT_RS_IMPL -DUNICODE -D_UNICODE -MT %rice_cc% /I "%RSSDK_DIR%\opensource\include" ..\..\ftnoir_tracker_rs_impl.cpp "%RSSDK_DIR%\opensource\src\libpxc\libpxc.cpp" || exit /b 1
19 | lib /nologo %rice_lib% %rs_objs% %libs% /OUT:rs-impl.lib || exit /b 1
20 | 
21 | exit /b 0
22 | 


--------------------------------------------------------------------------------
/tracker-rs/rs_impl/ftnoir_tracker_rs_impl.h:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * Copyright (c) 2015, Intel Corporation
 3 |  *   Author: Xavier Hallade <xavier.hallade@intel.com>
 4 |  * 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.
 5 |  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 6 |  */
 7 | 
 8 | #pragma once
 9 | 
10 | int rs_tracker_impl_start();
11 | int rs_tracker_impl_update_pose(double *pose);
12 | int rs_tracker_impl_get_preview(void* data, int width, int height);
13 | int rs_tracker_impl_end();
14 | 


--------------------------------------------------------------------------------
/tracker-rs/rs_impl/lang/nl_NL.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="nl_NL">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/tracker-rs/rs_impl/lang/ru_RU.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="ru_RU">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/tracker-rs/rs_impl/lang/stub.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/tracker-rs/rs_tracker.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>images/RS.png</file>
4 |         <file>images/intel-16x16.png</file>
5 |     </qresource>
6 | </RCC>
7 | 


--------------------------------------------------------------------------------
/tracker-s2bot/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(tracker-s2bot)
2 | 


--------------------------------------------------------------------------------
/tracker-s2bot/ftnoir_tracker_s2bot_dialog.cpp:
--------------------------------------------------------------------------------
 1 | #include "ftnoir_tracker_s2bot.h"
 2 | #include "api/plugin-api.hpp"
 3 | 
 4 | dialog_s2bot::dialog_s2bot()
 5 | {
 6 |     ui.setupUi(this);
 7 | 
 8 |     connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK()));
 9 |     connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel()));
10 | 
11 |     tie_setting(s.freq, ui.freq);
12 |     tie_setting(s.idx_x, ui.input_x);
13 |     tie_setting(s.idx_y, ui.input_y);
14 |     tie_setting(s.idx_z, ui.input_z);
15 | 
16 |     tie_setting(s.add_yaw, ui.add_yaw);
17 |     tie_setting(s.add_pitch, ui.add_pitch);
18 |     tie_setting(s.add_roll, ui.add_roll);
19 | }
20 | 
21 | void dialog_s2bot::doOK() {
22 |     s.b->save();
23 |     close();
24 | }
25 | 
26 | void dialog_s2bot::doCancel()
27 | {
28 |     close();
29 | }
30 | 
31 | 


--------------------------------------------------------------------------------
/tracker-s2bot/s2bot-res.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>s2bot.png</file>
4 |     </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/tracker-s2bot/s2bot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-s2bot/s2bot.png


--------------------------------------------------------------------------------
/tracker-steamvr/images/steamvr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-steamvr/images/steamvr.png


--------------------------------------------------------------------------------
/tracker-steamvr/lang/de_DE.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="de_DE">
 4 | <context>
 5 |     <name>dialog</name>
 6 |     <message>
 7 |         <source>Valve SteamVR</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 |     <message>
11 |         <source>Device</source>
12 |         <translation type="unfinished"></translation>
13 |     </message>
14 | </context>
15 | <context>
16 |     <name>steamvr</name>
17 |     <message>
18 |         <source>No HMD connected</source>
19 |         <translation type="unfinished"></translation>
20 |     </message>
21 |     <message>
22 |         <source>Can&apos;t find device with that serial</source>
23 |         <translation type="unfinished"></translation>
24 |     </message>
25 | </context>
26 | <context>
27 |     <name>steamvr_metadata</name>
28 |     <message>
29 |         <source>Valve SteamVR</source>
30 |         <translation type="unfinished"></translation>
31 |     </message>
32 | </context>
33 | </TS>
34 | 


--------------------------------------------------------------------------------
/tracker-steamvr/lang/nl_NL.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="nl_NL">
 4 | <context>
 5 |     <name>dialog</name>
 6 |     <message>
 7 |         <source>Valve SteamVR</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 |     <message>
11 |         <source>Device</source>
12 |         <translation type="unfinished"></translation>
13 |     </message>
14 | </context>
15 | <context>
16 |     <name>steamvr</name>
17 |     <message>
18 |         <source>No HMD connected</source>
19 |         <translation type="unfinished"></translation>
20 |     </message>
21 |     <message>
22 |         <source>Can&apos;t find device with that serial</source>
23 |         <translation type="unfinished"></translation>
24 |     </message>
25 | </context>
26 | <context>
27 |     <name>steamvr_metadata</name>
28 |     <message>
29 |         <source>Valve SteamVR</source>
30 |         <translation type="unfinished"></translation>
31 |     </message>
32 | </context>
33 | </TS>
34 | 


--------------------------------------------------------------------------------
/tracker-steamvr/lang/ru_RU.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="ru_RU">
 4 | <context>
 5 |     <name>dialog</name>
 6 |     <message>
 7 |         <source>Valve SteamVR</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 |     <message>
11 |         <source>Device</source>
12 |         <translation type="unfinished"></translation>
13 |     </message>
14 | </context>
15 | <context>
16 |     <name>steamvr</name>
17 |     <message>
18 |         <source>No HMD connected</source>
19 |         <translation type="unfinished"></translation>
20 |     </message>
21 |     <message>
22 |         <source>Can&apos;t find device with that serial</source>
23 |         <translation type="unfinished"></translation>
24 |     </message>
25 | </context>
26 | <context>
27 |     <name>steamvr_metadata</name>
28 |     <message>
29 |         <source>Valve SteamVR</source>
30 |         <translation type="unfinished"></translation>
31 |     </message>
32 | </context>
33 | </TS>
34 | 


--------------------------------------------------------------------------------
/tracker-steamvr/lang/stub.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1">
 4 | <context>
 5 |     <name>dialog</name>
 6 |     <message>
 7 |         <source>Valve SteamVR</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 |     <message>
11 |         <source>Device</source>
12 |         <translation type="unfinished"></translation>
13 |     </message>
14 | </context>
15 | <context>
16 |     <name>steamvr</name>
17 |     <message>
18 |         <source>No HMD connected</source>
19 |         <translation type="unfinished"></translation>
20 |     </message>
21 |     <message>
22 |         <source>Can&apos;t find device with that serial</source>
23 |         <translation type="unfinished"></translation>
24 |     </message>
25 | </context>
26 | <context>
27 |     <name>steamvr_metadata</name>
28 |     <message>
29 |         <source>Valve SteamVR</source>
30 |         <translation type="unfinished"></translation>
31 |     </message>
32 | </context>
33 | </TS>
34 | 


--------------------------------------------------------------------------------
/tracker-steamvr/lang/zh_CN.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="zh_CN">
 4 | <context>
 5 |     <name>dialog</name>
 6 |     <message>
 7 |         <source>Valve SteamVR</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 |     <message>
11 |         <source>Device</source>
12 |         <translation>设备</translation>
13 |     </message>
14 | </context>
15 | <context>
16 |     <name>steamvr</name>
17 |     <message>
18 |         <source>No HMD connected</source>
19 |         <translation>未连接HMD</translation>
20 |     </message>
21 |     <message>
22 |         <source>Can&apos;t find device with that serial</source>
23 |         <translation>无法找到该序列的设备</translation>
24 |     </message>
25 | </context>
26 | <context>
27 |     <name>steamvr_metadata</name>
28 |     <message>
29 |         <source>Valve SteamVR</source>
30 |         <translation type="unfinished"></translation>
31 |     </message>
32 | </context>
33 | </TS>
34 | 


--------------------------------------------------------------------------------
/tracker-steamvr/steamvr.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>images/steamvr.png</file>
4 |     </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/tracker-test/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(tracker-test)
2 | 


--------------------------------------------------------------------------------
/tracker-test/lang/de_DE.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="de_DE">
 4 | <context>
 5 |     <name>test_metadata</name>
 6 |     <message>
 7 |         <source>Test tracker</source>
 8 |         <translation>Test-Tracker</translation>
 9 |     </message>
10 | </context>
11 | <context>
12 |     <name>test_ui</name>
13 |     <message>
14 |         <source>Sine wave</source>
15 |         <translation>Sinus-Welle</translation>
16 |     </message>
17 |     <message>
18 |         <source>Pressing &quot;Abort&quot; will immediately crash the application.</source>
19 |         <translation>Beim Klick auf „Abbrechen“ wird die Anwendung sofort abstürzen.</translation>
20 |     </message>
21 | </context>
22 | </TS>
23 | 


--------------------------------------------------------------------------------
/tracker-test/lang/nl_NL.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="nl_NL">
 4 | <context>
 5 |     <name>test_metadata</name>
 6 |     <message>
 7 |         <source>Test tracker</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | <context>
12 |     <name>test_ui</name>
13 |     <message>
14 |         <source>Sine wave</source>
15 |         <translation type="unfinished"></translation>
16 |     </message>
17 |     <message>
18 |         <source>Pressing &quot;Abort&quot; will immediately crash the application.</source>
19 |         <translation type="unfinished"></translation>
20 |     </message>
21 | </context>
22 | </TS>
23 | 


--------------------------------------------------------------------------------
/tracker-test/lang/ru_RU.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="ru_RU">
 4 | <context>
 5 |     <name>test_metadata</name>
 6 |     <message>
 7 |         <source>Test tracker</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | <context>
12 |     <name>test_ui</name>
13 |     <message>
14 |         <source>Sine wave</source>
15 |         <translation type="unfinished"></translation>
16 |     </message>
17 |     <message>
18 |         <source>Pressing &quot;Abort&quot; will immediately crash the application.</source>
19 |         <translation type="unfinished"></translation>
20 |     </message>
21 | </context>
22 | </TS>
23 | 


--------------------------------------------------------------------------------
/tracker-test/lang/stub.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1">
 4 | <context>
 5 |     <name>test_metadata</name>
 6 |     <message>
 7 |         <source>Test tracker</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | <context>
12 |     <name>test_ui</name>
13 |     <message>
14 |         <source>Sine wave</source>
15 |         <translation type="unfinished"></translation>
16 |     </message>
17 |     <message>
18 |         <source>Pressing &quot;Abort&quot; will immediately crash the application.</source>
19 |         <translation type="unfinished"></translation>
20 |     </message>
21 | </context>
22 | </TS>
23 | 


--------------------------------------------------------------------------------
/tracker-test/lang/zh_CN.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="zh_CN">
 4 | <context>
 5 |     <name>test_metadata</name>
 6 |     <message>
 7 |         <source>Test tracker</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | <context>
12 |     <name>test_ui</name>
13 |     <message>
14 |         <source>Sine wave</source>
15 |         <translation>正弦波</translation>
16 |     </message>
17 |     <message>
18 |         <source>Pressing &quot;Abort&quot; will immediately crash the application.</source>
19 |         <translation>点击 &quot;Abort&quot; 键将立即关闭程序 (未保存的数据会丢失) 。</translation>
20 |     </message>
21 | </context>
22 | </TS>
23 | 


--------------------------------------------------------------------------------
/tracker-test/test.h:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | #include "ui_test.h"
 3 | #include "api/plugin-api.hpp"
 4 | #include "compat/timer.hpp"
 5 | 
 6 | #include <cmath>
 7 | 
 8 | class test_tracker : public ITracker
 9 | {
10 | public:
11 |     test_tracker();
12 |     ~test_tracker() override;
13 |     module_status start_tracker(QFrame *) override;
14 |     void data(double *data) override;
15 | 
16 | private:
17 |     double last[6] {};
18 |     Timer t;
19 | };
20 | 
21 | class test_dialog : public ITrackerDialog
22 | {
23 |     Q_OBJECT
24 | 
25 |     Ui::test_ui ui;
26 | public:
27 |     test_dialog();
28 |     void register_tracker(ITracker *) override {}
29 |     void unregister_tracker() override {}
30 | private slots:
31 |     void doOK();
32 |     void doCancel();
33 | };
34 | 
35 | class test_metadata : public Metadata
36 | {
37 |     Q_OBJECT
38 | 
39 |     QString name() override { return tr("Test tracker"); }
40 |     QIcon icon() override { return QIcon(":/images/opentrack.png"); }
41 | };
42 | 
43 | 


--------------------------------------------------------------------------------
/tracker-test/test_dialog.cpp:
--------------------------------------------------------------------------------
1 | #include "test.h"
2 | #include "api/plugin-api.hpp"
3 | 
4 | 


--------------------------------------------------------------------------------
/tracker-tobii/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | if(WIN32)
 2 |     # https://www.nuget.org/packages/Tobii.StreamEngine.Native/
 3 |     set(SDK_TOBII "" CACHE PATH "Tobii Stream Engine path")
 4 | endif()
 5 | if(WIN32 AND SDK_TOBII)
 6 |     otr_module(tracker-tobii)
 7 | 
 8 |     if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
 9 |         set(arch "x86")
10 |     else()
11 |         set(arch "x64")
12 |     endif()
13 | 
14 |     target_include_directories(${self} SYSTEM PRIVATE "${SDK_TOBII}/include")
15 |     target_link_directories(${self} PRIVATE "${SDK_TOBII}/lib/${arch}")
16 | 
17 |     set(dll "${SDK_TOBII}/lib/${arch}/tobii_stream_engine.dll")
18 |     set(lib tobii_stream_engine.lib)
19 | 
20 |     target_link_libraries(${self} ${lib})
21 |     install(FILES ${dll} DESTINATION ${opentrack-libexec})
22 | endif()
23 | 


--------------------------------------------------------------------------------
/tracker-tobii/lang/de_DE.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="de_DE">
 4 | <context>
 5 |     <name>tobii_metadata</name>
 6 |     <message>
 7 |         <source>Tobii Eye Tracker</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | <context>
12 |     <name>tobii_ui</name>
13 |     <message>
14 |         <source>Tobii Eye Tracker</source>
15 |         <translation type="unfinished"></translation>
16 |     </message>
17 |     <message>
18 |         <source>Please make sure the Tobii Experience application is running and tracking is active.</source>
19 |         <translation type="unfinished"></translation>
20 |     </message>
21 | </context>
22 | </TS>
23 | 


--------------------------------------------------------------------------------
/tracker-tobii/lang/nl_NL.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="nl_NL">
 4 | <context>
 5 |     <name>tobii_metadata</name>
 6 |     <message>
 7 |         <source>Tobii Eye Tracker</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | <context>
12 |     <name>tobii_ui</name>
13 |     <message>
14 |         <source>Tobii Eye Tracker</source>
15 |         <translation type="unfinished"></translation>
16 |     </message>
17 |     <message>
18 |         <source>Please make sure the Tobii Experience application is running and tracking is active.</source>
19 |         <translation type="unfinished"></translation>
20 |     </message>
21 | </context>
22 | </TS>
23 | 


--------------------------------------------------------------------------------
/tracker-tobii/lang/ru_RU.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="ru_RU">
 4 | <context>
 5 |     <name>tobii_metadata</name>
 6 |     <message>
 7 |         <source>Tobii Eye Tracker</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | <context>
12 |     <name>tobii_ui</name>
13 |     <message>
14 |         <source>Tobii Eye Tracker</source>
15 |         <translation type="unfinished"></translation>
16 |     </message>
17 |     <message>
18 |         <source>Please make sure the Tobii Experience application is running and tracking is active.</source>
19 |         <translation type="unfinished"></translation>
20 |     </message>
21 | </context>
22 | </TS>
23 | 


--------------------------------------------------------------------------------
/tracker-tobii/lang/stub.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1">
 4 | <context>
 5 |     <name>tobii_metadata</name>
 6 |     <message>
 7 |         <source>Tobii Eye Tracker</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | <context>
12 |     <name>tobii_ui</name>
13 |     <message>
14 |         <source>Tobii Eye Tracker</source>
15 |         <translation type="unfinished"></translation>
16 |     </message>
17 |     <message>
18 |         <source>Please make sure the Tobii Experience application is running and tracking is active.</source>
19 |         <translation type="unfinished"></translation>
20 |     </message>
21 | </context>
22 | </TS>
23 | 


--------------------------------------------------------------------------------
/tracker-tobii/lang/zh_CN.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="zh_CN">
 4 | <context>
 5 |     <name>tobii_metadata</name>
 6 |     <message>
 7 |         <source>Tobii Eye Tracker</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | <context>
12 |     <name>tobii_ui</name>
13 |     <message>
14 |         <source>Tobii Eye Tracker</source>
15 |         <translation type="unfinished"></translation>
16 |     </message>
17 |     <message>
18 |         <source>Please make sure the Tobii Experience application is running and tracking is active.</source>
19 |         <translation>请确保 Tobii Experience 正在运行且眼动追踪功能已启用。</translation>
20 |     </message>
21 | </context>
22 | </TS>
23 | 


--------------------------------------------------------------------------------
/tracker-tobii/tobii.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/images">
3 |         <file>tobii_logo.png</file>
4 |     </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/tracker-tobii/tobii_dialog.cpp:
--------------------------------------------------------------------------------
 1 | #include "tobii.h"
 2 | 
 3 | tobii_dialog::tobii_dialog() // NOLINT(cppcoreguidelines-pro-type-member-init)
 4 | {
 5 |     ui.setupUi(this);
 6 | 
 7 |     connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK()));
 8 |     connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel()));
 9 | }
10 | 
11 | void tobii_dialog::doOK()
12 | {
13 |     // s.b->save();
14 |     close();
15 | }
16 | 
17 | void tobii_dialog::doCancel()
18 | {
19 |     close();
20 | }
21 | 


--------------------------------------------------------------------------------
/tracker-tobii/tobii_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-tobii/tobii_logo.png


--------------------------------------------------------------------------------
/tracker-trackhat/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | if(WIN32)
 2 |     include(opentrack-opencv)
 3 |     find_package(OpenCV QUIET)
 4 |     if(OpenCV_FOUND)
 5 |         foreach(k core imgproc)
 6 |             otr_install_lib("opencv_${k}" "${opentrack-libexec}")
 7 |         endforeach()
 8 |         set(SDK_TRACKHAT_SENSOR CACHE PATH "")
 9 |         if(SDK_TRACKHAT_SENSOR)
10 |             include_directories("${SDK_TRACKHAT_SENSOR}/include" ${OpenCV_INCLUDE_DIRS})
11 |             link_directories("${SDK_TRACKHAT_SENSOR}/lib")
12 |             link_libraries(opencv_imgproc opencv_core opentrack-tracker-pt-base track-hat)
13 |             otr_module(tracker-trackhat)
14 |         endif()
15 |     endif()
16 | endif()
17 | 


--------------------------------------------------------------------------------
/tracker-trackhat/dialog.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | #include "trackhat.hpp"
 3 | #include "ui_dialog.h"
 4 | #include "tracker-pt/ftnoir_tracker_pt.h"
 5 | #include "api/plugin-api.hpp"
 6 | #include <QTimer>
 7 | 
 8 | class trackhat_dialog final : public ITrackerDialog
 9 | {
10 |     Q_OBJECT
11 | 
12 | protected:
13 |     Ui_trackhat_dialog ui;
14 |     Tracker_PT* tracker = nullptr;
15 |     QTimer poll_timer{this};
16 | 
17 |     pt_settings s{trackhat_metadata::module_name};
18 |     trackhat_settings t;
19 | 
20 |     void set_buttons_visible(bool x) override;
21 |     void update_raw_data();
22 | 
23 | public:
24 |     trackhat_dialog();
25 |     ~trackhat_dialog() override;
26 |     void register_tracker(ITracker *tracker) override;
27 |     void unregister_tracker() override;
28 |     bool embeddable() noexcept override { return true; }
29 |     void save() override;
30 |     void reload() override;
31 | 
32 | public slots:
33 |     void doOK();
34 |     void doCancel();
35 |     void poll_tracker_info();
36 | };
37 | 


--------------------------------------------------------------------------------
/tracker-trackhat/extractor.cpp:
--------------------------------------------------------------------------------
 1 | #include "trackhat.hpp"
 2 | #include <algorithm>
 3 | #include <iterator>
 4 | 
 5 | void trackhat_extractor::extract_points(const pt_frame& data,
 6 |                                         pt_preview&, bool,
 7 |                                         std::vector<vec2>& points)
 8 | {
 9 |     points.clear();
10 |     points.reserve(trackhat_camera::point_count);
11 |     const auto& copy = data.as_const<trackhat_frame>()->points;
12 | 
13 |     for (const auto& pt : copy)
14 |     {
15 |         if (!pt.ok)
16 |             continue;
17 |         constexpr int sz = trackhat_camera::sensor_size;
18 |         auto [ x, y ] = to_screen_pos(pt.x, pt.y, sz, sz);
19 |         points.push_back({x, y});
20 |     }
21 | }
22 | 


--------------------------------------------------------------------------------
/tracker-trackhat/images/trackhat-64x64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-trackhat/images/trackhat-64x64.png


--------------------------------------------------------------------------------
/tracker-trackhat/images/trackhat.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-trackhat/images/trackhat.ico


--------------------------------------------------------------------------------
/tracker-trackhat/images/trackhat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-trackhat/images/trackhat.png


--------------------------------------------------------------------------------
/tracker-trackhat/metadata.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | #include "trackhat.hpp"
 3 | #include "../tracker-pt/ftnoir_tracker_pt.h"
 4 | 
 5 | class trackhat_pt final : public Tracker_PT
 6 | {
 7 |     Q_OBJECT
 8 | 
 9 | public:
10 |     trackhat_pt();
11 | };
12 | 
13 | class trackhat_module final : public Metadata
14 | {
15 |     Q_OBJECT
16 | 
17 | public:
18 |     QString name() override { return tr("TrackHat v1 Sensor"); }
19 |     QIcon icon() override { return QIcon(":/images/trackhat-64x64.png"); }
20 |     static const QString module_name;
21 | };
22 | 


--------------------------------------------------------------------------------
/tracker-trackhat/tracker_trackhat.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>images/trackhat-64x64.png</file>
4 |     </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/tracker-trackhat/trackhat-res.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |   <qresource>
3 |     <file>images/trackhat-64x64.png</file>
4 |   </qresource>
5 | </RCC>
6 | 


--------------------------------------------------------------------------------
/tracker-udp/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(tracker-udp)
2 | 


--------------------------------------------------------------------------------
/tracker-udp/ftnoir_tracker_udp_dialog.cpp:
--------------------------------------------------------------------------------
 1 | #include "ftnoir_tracker_udp.h"
 2 | #include "api/plugin-api.hpp"
 3 | 
 4 | dialog_udp::dialog_udp()
 5 | {
 6 |     ui.setupUi( this );
 7 | 
 8 |     connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK()));
 9 |     connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel()));
10 | 
11 |     tie_setting(s.port, ui.spinPortNumber);
12 |     tie_setting(s.add_yaw, ui.add_yaw);
13 |     tie_setting(s.add_pitch, ui.add_pitch);
14 |     tie_setting(s.add_roll, ui.add_roll);
15 | }
16 | 
17 | void dialog_udp::doOK() {
18 |     s.b->save();
19 |     close();
20 | }
21 | 
22 | void dialog_udp::doCancel() {
23 |     close();
24 | }
25 | 
26 | 


--------------------------------------------------------------------------------
/tracker-wii/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | if(WIN32)
 2 |     include(opentrack-opencv)
 3 |     find_package(OpenCV QUIET)
 4 |     if(OpenCV_FOUND)
 5 |         foreach(k core imgproc)
 6 |             otr_install_lib("opencv_${k}" "${opentrack-libexec}")
 7 |         endforeach()
 8 |         add_subdirectory(wiiyourself)
 9 |         otr_module(tracker-wii)
10 |         target_link_libraries(${self} opencv_imgproc opentrack-tracker-pt-base opentrack-wiiyourself bthprops)
11 |         if(MINGW32)
12 |             target_link_libraries(${self} hid)
13 |         endif()
14 |         target_include_directories(${self} PRIVATE "${CMAKE_SOURCE_DIR}/tracker-pt")
15 |     endif()
16 | endif()
17 | 


--------------------------------------------------------------------------------
/tracker-wii/Resources/on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-wii/Resources/on.png


--------------------------------------------------------------------------------
/tracker-wii/Resources/sync.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-wii/Resources/sync.png


--------------------------------------------------------------------------------
/tracker-wii/Resources/usb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-wii/Resources/usb.png


--------------------------------------------------------------------------------
/tracker-wii/Resources/wii.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-wii/Resources/wii.ico


--------------------------------------------------------------------------------
/tracker-wii/Resources/wii.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-wii/Resources/wii.png


--------------------------------------------------------------------------------
/tracker-wii/doc/XP11_opentrack_wiimote1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-wii/doc/XP11_opentrack_wiimote1.jpg


--------------------------------------------------------------------------------
/tracker-wii/doc/XP11_opentrack_wiimote2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/tracker-wii/doc/XP11_opentrack_wiimote2.jpg


--------------------------------------------------------------------------------
/tracker-wii/lang/de_DE.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="de_DE">
 4 | <context>
 5 |     <name>wii_metadata_pt</name>
 6 |     <message>
 7 |         <source>WiiPointTracker 1.1</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | </TS>
12 | 


--------------------------------------------------------------------------------
/tracker-wii/lang/nl_NL.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="nl_NL">
 4 | <context>
 5 |     <name>wii_metadata_pt</name>
 6 |     <message>
 7 |         <source>WiiPointTracker 1.1</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | </TS>
12 | 


--------------------------------------------------------------------------------
/tracker-wii/lang/ru_RU.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="ru_RU">
 4 | <context>
 5 |     <name>wii_metadata_pt</name>
 6 |     <message>
 7 |         <source>WiiPointTracker 1.1</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | </TS>
12 | 


--------------------------------------------------------------------------------
/tracker-wii/lang/stub.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1">
 4 | <context>
 5 |     <name>wii_metadata_pt</name>
 6 |     <message>
 7 |         <source>WiiPointTracker 1.1</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | </TS>
12 | 


--------------------------------------------------------------------------------
/tracker-wii/lang/zh_CN.ts:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!DOCTYPE TS>
 3 | <TS version="2.1" language="zh_CN">
 4 | <context>
 5 |     <name>wii_metadata_pt</name>
 6 |     <message>
 7 |         <source>WiiPointTracker 1.1</source>
 8 |         <translation type="unfinished"></translation>
 9 |     </message>
10 | </context>
11 | </TS>
12 | 


--------------------------------------------------------------------------------
/tracker-wii/tracker_wii.qrc:
--------------------------------------------------------------------------------
1 | <RCC>
2 |     <qresource prefix="/">
3 |         <file>Resources/wii.png</file>
4 |         <file>Resources/sync.png</file>
5 |         <file>Resources/on.png</file>
6 |         <file>Resources/usb.png</file>
7 |     </qresource>
8 | </RCC>
9 | 


--------------------------------------------------------------------------------
/tracker-wii/wii_module.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include "api/plugin-api.hpp"
 4 | 
 5 | class wii_metadata_pt : public Metadata
 6 | {
 7 |     Q_OBJECT
 8 | 
 9 |     QString name() override;
10 |     QIcon icon() override;
11 | };
12 | 


--------------------------------------------------------------------------------
/tracker-wii/wiiyourself/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(wiiyourself STATIC NO-QT NO-COMPAT)
2 | target_link_libraries(${self} PUBLIC setupapi hid winmm)
3 | 


--------------------------------------------------------------------------------
/tracker-wii/wiiyourself/lang/nl_NL.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="nl_NL">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/tracker-wii/wiiyourself/lang/ru_RU.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="ru_RU">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/tracker-wii/wiiyourself/lang/stub.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/tracker-wii/wiiyourself/lang/zh_CN.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="zh_CN">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/variant/default/_variant.cmake:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opentrack/opentrack/a47cbd05214787640bbeffa289b4d932905d213f/variant/default/_variant.cmake


--------------------------------------------------------------------------------
/video-opencv/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | include(opentrack-opencv)
 2 | find_package(OpenCV QUIET)
 3 | 
 4 | if(OpenCV_FOUND)
 5 |     foreach(k core videoio imgcodecs imgproc)
 6 |         otr_install_lib("opencv_${k}" "${opentrack-libexec}")
 7 |     endforeach()
 8 |     otr_module(video-opencv)
 9 |     target_link_libraries(${self} opencv_core opencv_imgcodecs opencv_videoio opentrack-video)
10 |     if(WIN32)
11 |         target_link_libraries(${self} strmiids)
12 |     endif()
13 | endif()
14 | 


--------------------------------------------------------------------------------
/video-opencv/lang/de_DE.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="de_DE">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/video-opencv/lang/nl_NL.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="nl_NL">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/video-opencv/lang/ru_RU.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="ru_RU">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/video-opencv/lang/stub.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/video-opencv/lang/zh_CN.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="zh_CN">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/video-opencv/video-property-page.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include <QString>
 4 | #include <opencv2/videoio.hpp>
 5 | 
 6 | struct video_property_page final
 7 | {
 8 |     video_property_page() = delete;
 9 |     static bool show(int id);
10 |     static bool show_from_capture(cv::VideoCapture& cap, int index);
11 | private:
12 | };
13 | 
14 | 


--------------------------------------------------------------------------------
/video-ps3eye/shm-layout.hpp:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | #include <cstdint>
 3 | 
 4 | namespace ps3eye {
 5 | 
 6 | static constexpr unsigned num_channels = 3;
 7 | 
 8 | struct shm_in {
 9 |     enum class mode : uint8_t { qvga, vga, };
10 | 
11 |     uint32_t settings_updated;
12 |     uint8_t framerate, channels;
13 |     mode resolution;
14 |     //uint8_t sharpness, contrast, brightness hue, saturation;
15 |     uint8_t gain, exposure, auto_gain, test_pattern;
16 |     uint8_t do_exit;
17 | };
18 | 
19 | struct shm_out
20 | {
21 |     enum class status : uint8_t { starting, running, fail, terminate, };
22 | 
23 |     uint32_t timecode;
24 |     uint32_t settings_updated_ack;
25 |     status status_;
26 |     char error_string[256];
27 |     union {
28 |         uint8_t data_320x240[320][240][num_channels];
29 |         uint8_t data_640x480[640][480][num_channels];
30 |     };
31 | };
32 | 
33 | struct alignas(64) shm {
34 |     shm_out out;
35 |     [[maybe_unused]] const char _padding[128 - sizeof(shm_out) % 128]; // NOLINT
36 |     shm_in in;
37 | };
38 | 
39 | } // ns ps3eye
40 | 


--------------------------------------------------------------------------------
/video-ps3eye/shm.cxx:
--------------------------------------------------------------------------------
1 | #include "shm.hpp"
2 | #include "../compat/shm.cpp"
3 | 


--------------------------------------------------------------------------------
/video-ps3eye/shm.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #define OTR_GENERIC_EXPORT
3 | #define OTR_GENERIC_IMPORT
4 | #include "../compat/shm.h"
5 | 


--------------------------------------------------------------------------------
/video/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | otr_module(video BIN)
2 | 


--------------------------------------------------------------------------------
/video/export.hpp:
--------------------------------------------------------------------------------
 1 | // generates export.hpp for each module from compat/linkage.hpp
 2 | 
 3 | #pragma once
 4 | 
 5 | #include "compat/linkage-macros.hpp"
 6 | 
 7 | #ifdef BUILD_VIDEO
 8 | #   define OTR_VIDEO_EXPORT OTR_GENERIC_EXPORT
 9 | #else
10 | #   define OTR_VIDEO_EXPORT OTR_GENERIC_IMPORT
11 | #endif
12 | 


--------------------------------------------------------------------------------
/video/lang/de_DE.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="de_DE">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/video/lang/nl_NL.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="nl_NL">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/video/lang/ru_RU.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="ru_RU">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/video/lang/stub.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/video/lang/zh_CN.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="zh_CN">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/x-plane-plugin/lang/nl_NL.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="nl_NL">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/x-plane-plugin/lang/ru_RU.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1" language="ru_RU">
4 | </TS>
5 | 


--------------------------------------------------------------------------------
/x-plane-plugin/lang/stub.ts:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <!DOCTYPE TS>
3 | <TS version="2.1">
4 | </TS>
5 | 


--------------------------------------------------------------------------------