summaryrefslogtreecommitdiffhomepage
path: root/FaceTrackNoIR
diff options
context:
space:
mode:
authorWim Vriend <facetracknoir@gmail.com>2011-01-04 19:55:18 +0000
committerWim Vriend <facetracknoir@gmail.com>2011-01-04 19:55:18 +0000
commit63c58dae4073e4c1e2f2866aa54ade953aae24ed (patch)
tree1c4ed114e13bc3138b008ebed71618e723f901d5 /FaceTrackNoIR
parent26a42de2b739b8bf2cf9f1e1c849a681c1fcdc89 (diff)
Reviewed SVN-files: some were non-versioned, but should be...
git-svn-id: svn+ssh://svn.code.sf.net/p/facetracknoir/code@35 19e81ba0-9b1a-49c3-bd6c-561e1906d5fb
Diffstat (limited to 'FaceTrackNoIR')
-rw-r--r--FaceTrackNoIR/ClientFiles/CFS3/Readme.txt27
-rw-r--r--FaceTrackNoIR/ClientFiles/CFS3/TIRViews.dllbin0 -> 109568 bytes
-rw-r--r--FaceTrackNoIR/ClientFiles/FS2002 and FS2004/FSUIPC.dllbin0 -> 210880 bytes
-rw-r--r--FaceTrackNoIR/Debug/BuildLog.htmbin30344 -> 32430 bytes
-rw-r--r--FaceTrackNoIR/Debug/FTTypes.objbin20834 -> 0 bytes
-rw-r--r--FaceTrackNoIR/Debug/listener.objbin51848 -> 0 bytes
-rw-r--r--FaceTrackNoIR/Debug/main.objbin167871 -> 167871 bytes
-rw-r--r--FaceTrackNoIR/Debug/moc_sound.objbin68925 -> 0 bytes
-rw-r--r--FaceTrackNoIR/Debug/moc_widget.objbin155166 -> 0 bytes
-rw-r--r--FaceTrackNoIR/Debug/mt.dep2
-rw-r--r--FaceTrackNoIR/Debug/sound.objbin121219 -> 0 bytes
-rw-r--r--FaceTrackNoIR/Debug/tracker.objbin410641 -> 410641 bytes
-rw-r--r--FaceTrackNoIR/Debug/widget.objbin220578 -> 0 bytes
-rw-r--r--FaceTrackNoIR/FGServer.cpp2
-rw-r--r--FaceTrackNoIR/FSUIPCServer.cpp308
-rw-r--r--FaceTrackNoIR/FSUIPCServer.h121
-rw-r--r--FaceTrackNoIR/FTNoIR_FGcontrols.ui269
-rw-r--r--FaceTrackNoIR/FTNoIR_cxx_protocolserver.h98
-rw-r--r--FaceTrackNoIR/FaceTrackNoIR.ui581
-rw-r--r--FaceTrackNoIR/UIElements/Curves.pngbin0 -> 2850 bytes
-rw-r--r--FaceTrackNoIR/UIElements/Donate.pngbin0 -> 778 bytes
-rw-r--r--FaceTrackNoIR/images/330px-6DOF_en.pngbin0 -> 34182 bytes
-rw-r--r--FaceTrackNoIR/images/rotation_DOFs.pngbin0 -> 21601 bytes
-rw-r--r--FaceTrackNoIR/images/translation_DOFs.pngbin0 -> 23237 bytes
24 files changed, 1123 insertions, 285 deletions
diff --git a/FaceTrackNoIR/ClientFiles/CFS3/Readme.txt b/FaceTrackNoIR/ClientFiles/CFS3/Readme.txt
new file mode 100644
index 00000000..141daa27
--- /dev/null
+++ b/FaceTrackNoIR/ClientFiles/CFS3/Readme.txt
@@ -0,0 +1,27 @@
+FaceTrackNoIR for
+
+ * Combat Flight Simulator 3 (also works for Over Flanders Fields)
+ * Wings of War
+ * NASCAR Racing Season 2003
+ * Colin McRae Rally 4
+ * Race Driver 2
+ * F1 Challenge
+ * Richard Burns Rally
+
+FaceTrackNoIR was made compatible with these programs with the help of the functions TrackIR provides in the dll TIRViews.dll.
+This dll can be downloaded from the TrackIR website: http://www.naturalpoint.com/trackir/06-support/support-download-software-and-manuals.html
+
+To make the functions work, copy the dll in the FaceTrackNoIR installation folder. Then tick the 'use TIRViews.dll' checkbox for the 'fake TrackIR' game protocol.
+
+Please let us know if you like the program, if you have ideas for improvements or any questions you might have.
+
+
+
+The FaceTrackNoIR team:
+
+Wim Vriend
+Ron Hendriks
+
+
+
+Disclaimer: For usage of 3rd party software like FlightGear, the FaceTrackNoIR team is not responsible. Use it at your own risk. \ No newline at end of file
diff --git a/FaceTrackNoIR/ClientFiles/CFS3/TIRViews.dll b/FaceTrackNoIR/ClientFiles/CFS3/TIRViews.dll
new file mode 100644
index 00000000..a1fb306f
--- /dev/null
+++ b/FaceTrackNoIR/ClientFiles/CFS3/TIRViews.dll
Binary files differ
diff --git a/FaceTrackNoIR/ClientFiles/FS2002 and FS2004/FSUIPC.dll b/FaceTrackNoIR/ClientFiles/FS2002 and FS2004/FSUIPC.dll
new file mode 100644
index 00000000..264d14c5
--- /dev/null
+++ b/FaceTrackNoIR/ClientFiles/FS2002 and FS2004/FSUIPC.dll
Binary files differ
diff --git a/FaceTrackNoIR/Debug/BuildLog.htm b/FaceTrackNoIR/Debug/BuildLog.htm
index 41cc6d85..8e1ff11f 100644
--- a/FaceTrackNoIR/Debug/BuildLog.htm
+++ b/FaceTrackNoIR/Debug/BuildLog.htm
Binary files differ
diff --git a/FaceTrackNoIR/Debug/FTTypes.obj b/FaceTrackNoIR/Debug/FTTypes.obj
deleted file mode 100644
index 62cf1bef..00000000
--- a/FaceTrackNoIR/Debug/FTTypes.obj
+++ /dev/null
Binary files differ
diff --git a/FaceTrackNoIR/Debug/listener.obj b/FaceTrackNoIR/Debug/listener.obj
deleted file mode 100644
index 5838ffa6..00000000
--- a/FaceTrackNoIR/Debug/listener.obj
+++ /dev/null
Binary files differ
diff --git a/FaceTrackNoIR/Debug/main.obj b/FaceTrackNoIR/Debug/main.obj
index 8c10111b..606d4b13 100644
--- a/FaceTrackNoIR/Debug/main.obj
+++ b/FaceTrackNoIR/Debug/main.obj
Binary files differ
diff --git a/FaceTrackNoIR/Debug/moc_sound.obj b/FaceTrackNoIR/Debug/moc_sound.obj
deleted file mode 100644
index c93b19e7..00000000
--- a/FaceTrackNoIR/Debug/moc_sound.obj
+++ /dev/null
Binary files differ
diff --git a/FaceTrackNoIR/Debug/moc_widget.obj b/FaceTrackNoIR/Debug/moc_widget.obj
deleted file mode 100644
index aa0040c8..00000000
--- a/FaceTrackNoIR/Debug/moc_widget.obj
+++ /dev/null
Binary files differ
diff --git a/FaceTrackNoIR/Debug/mt.dep b/FaceTrackNoIR/Debug/mt.dep
index e3b3d65c..406f9682 100644
--- a/FaceTrackNoIR/Debug/mt.dep
+++ b/FaceTrackNoIR/Debug/mt.dep
@@ -1 +1 @@
-Manifest resource last updated at 19:09:04.43 on do 30-12-2010
+Manifest resource last updated at 21:57:49.28 on ma 03-01-2011
diff --git a/FaceTrackNoIR/Debug/sound.obj b/FaceTrackNoIR/Debug/sound.obj
deleted file mode 100644
index fa304681..00000000
--- a/FaceTrackNoIR/Debug/sound.obj
+++ /dev/null
Binary files differ
diff --git a/FaceTrackNoIR/Debug/tracker.obj b/FaceTrackNoIR/Debug/tracker.obj
index 2c70374a..f6e3d396 100644
--- a/FaceTrackNoIR/Debug/tracker.obj
+++ b/FaceTrackNoIR/Debug/tracker.obj
Binary files differ
diff --git a/FaceTrackNoIR/Debug/widget.obj b/FaceTrackNoIR/Debug/widget.obj
deleted file mode 100644
index fd60acb1..00000000
--- a/FaceTrackNoIR/Debug/widget.obj
+++ /dev/null
Binary files differ
diff --git a/FaceTrackNoIR/FGServer.cpp b/FaceTrackNoIR/FGServer.cpp
index dfcb3d21..a149a776 100644
--- a/FaceTrackNoIR/FGServer.cpp
+++ b/FaceTrackNoIR/FGServer.cpp
@@ -101,7 +101,7 @@ quint16 senderPort;
// qDebug() << "FGServer::writePendingDatagrams says: bytes send =" << no_bytes << sizeof( double );
}
else {
- qDebug() << "FGServer::writePendingDatagrams says: nothing send!";
+ qDebug() << "FGServer::writePendingDatagrams says: nothing sent!";
}
//
diff --git a/FaceTrackNoIR/FSUIPCServer.cpp b/FaceTrackNoIR/FSUIPCServer.cpp
new file mode 100644
index 00000000..3006b430
--- /dev/null
+++ b/FaceTrackNoIR/FSUIPCServer.cpp
@@ -0,0 +1,308 @@
+/********************************************************************************
+* FSUIPCServer FSUIPCServer is the Class, that communicates headpose-data *
+* to games, using the FSUIPC.dll. *
+* *
+* Copyright (C) 2010 Wim Vriend (Developing) *
+* Ron Hendriks (Testing and Research) *
+* *
+* This program is free software; you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the *
+* Free Software Foundation; either version 3 of the License, or (at your *
+* option) any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but *
+* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
+* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along *
+* with this program; if not, see <http://www.gnu.org/licenses/>. *
+* *
+********************************************************************************/
+/*
+ Modifications (last one on top):
+ 20101224 - WVR: Base class is no longer inheriting QThread. sendHeadposeToGame
+ is called from run() of Tracker.cpp
+*/
+#include "FSUIPCServer.h"
+#include <QFileDialog>
+
+/** constructor **/
+FSUIPCServer::FSUIPCServer() {
+
+ loadSettings();
+ ProgramName = "Microsoft FS2004";
+
+ prevPosX = 0.0f;
+ prevPosY = 0.0f;
+ prevPosZ = 0.0f;
+ prevRotX = 0.0f;
+ prevRotY = 0.0f;
+ prevRotZ = 0.0f;
+
+}
+
+/** destructor **/
+FSUIPCServer::~FSUIPCServer() {
+
+ //
+ // Free the DLL
+ //
+ FSUIPCLib.unload();
+}
+
+//
+// Update Headpose in Game.
+//
+void FSUIPCServer::sendHeadposeToGame() {
+DWORD result;
+TFSState pitch;
+TFSState yaw;
+TFSState roll;
+WORD FSZoom;
+
+ qDebug() << "FSUIPCServer::run() says: started!";
+
+ //
+ // Init. the FSUIPC offsets (derived from Free-track...)
+ //
+ pitch.Control = 66503;
+ yaw.Control = 66504;
+ roll.Control = 66505;
+
+ //
+ // Only do this when the data has changed. This way, the HAT-switch can be used when tracking is OFF.
+ //
+ if ((prevPosX != virtPosX) || (prevPosY != virtPosY) || (prevPosZ != virtPosZ) ||
+ (prevRotX != virtRotX) || (prevRotY != virtRotY) || (prevRotZ != virtRotZ)) {
+ //
+ // Open the connection
+ //
+ FSUIPC_Open(SIM_ANY, &result);
+
+ //
+ // Check the FS-version
+ //
+ if (((result == FSUIPC_ERR_OK) || (result == FSUIPC_ERR_OPEN)) &&
+ ((FSUIPC_FS_Version == SIM_FS2K2) || (FSUIPC_FS_Version == SIM_FS2K4))) {
+// qDebug() << "FSUIPCServer::run() says: FSUIPC opened succesfully";
+ //
+ // Write the 4! DOF-data to FS. Only rotations and zoom are possible.
+ //
+ pitch.Value = scale2AnalogLimits(virtRotX, -180, 180);
+ FSUIPC_Write(0x3110, 8, &pitch, &result);
+
+ yaw.Value = scale2AnalogLimits(virtRotY, -180, 180);
+ FSUIPC_Write(0x3110, 8, &yaw, &result);
+
+ roll.Value = scale2AnalogLimits(virtRotZ, -180, 180);
+ FSUIPC_Write(0x3110, 8, &roll, &result);
+
+ FSZoom = (WORD) (64/50) * virtPosZ + 64;
+ FSUIPC_Write(0x832E, 2, &FSZoom, &result);
+
+ //
+ // Write the data, in one go!
+ //
+ FSUIPC_Process(&result);
+ if (result == FSUIPC_ERR_SENDMSG) {
+ FSUIPC_Close(); //timeout (1 second) so assume FS closed
+ }
+ }
+ }
+
+ prevPosX = virtPosX;
+ prevPosY = virtPosY;
+ prevPosZ = virtPosZ;
+ prevRotX = virtRotX;
+ prevRotY = virtRotY;
+ prevRotZ = virtRotZ;
+
+}
+
+//
+// Check if the Client DLL exists and load it (to test it), if so.
+// Returns 'true' if all seems OK.
+//
+bool FSUIPCServer::checkServerInstallationOK()
+{
+ qDebug() << "FSUIPCCheckClientDLL says: Starting Function";
+
+ //
+ // Load the DLL.
+ //
+ FSUIPCLib.setFileName( LocationOfDLL );
+ if (FSUIPCLib.load() != true) {
+ qDebug() << "FSUIPCCheckClientDLL says: Error loading FSUIPC DLL";
+ return false;
+ }
+
+ return true;
+}
+
+//
+// Scale the measured value to the Joystick values
+//
+int FSUIPCServer::scale2AnalogLimits( float x, float min_x, float max_x ) {
+double y;
+double local_x;
+
+ local_x = x;
+ if (local_x > max_x) {
+ local_x = max_x;
+ }
+ if (local_x < min_x) {
+ local_x = min_x;
+ }
+ y = ( 16383 * local_x ) / max_x;
+
+ return (int) y;
+}
+
+//
+// Load the current Settings from the currently 'active' INI-file.
+//
+void FSUIPCServer::loadSettings() {
+
+ QSettings settings("Abbequerque Inc.", "FaceTrackNoIR"); // Registry settings (in HK_USER)
+
+ QString currentFile = settings.value ( "SettingsFile", QCoreApplication::applicationDirPath() + "/Settings/default.ini" ).toString();
+ QSettings iniFile( currentFile, QSettings::IniFormat ); // Application settings (in INI-file)
+
+ iniFile.beginGroup ( "FSUIPC" );
+ LocationOfDLL = iniFile.value ( "LocationOfDLL", FSUIPC_FILENAME ).toString();
+ iniFile.endGroup ();
+}
+
+//
+// Constructor for server-settings-dialog
+//
+FSUIPCControls::FSUIPCControls( QWidget *parent, Qt::WindowFlags f ) :
+QWidget( parent , f)
+{
+ ui.setupUi( this );
+
+ QPoint offsetpos(100, 100);
+ this->move(parent->pos() + offsetpos);
+
+ // Connect Qt signals to member-functions
+ connect(ui.btnOK, SIGNAL(clicked()), this, SLOT(doOK()));
+ connect(ui.btnCancel, SIGNAL(clicked()), this, SLOT(doCancel()));
+ connect(ui.btnFindDLL, SIGNAL(clicked()), this, SLOT(getLocationOfDLL()));
+
+ // Load the settings from the current .INI-file
+ loadSettings();
+}
+
+//
+// Destructor for server-dialog
+//
+FSUIPCControls::~FSUIPCControls() {
+ qDebug() << "~FSUIPCControls() says: started";
+}
+
+//
+// OK clicked on server-dialog
+//
+void FSUIPCControls::doOK() {
+ save();
+ this->close();
+}
+
+// override show event
+void FSUIPCControls::showEvent ( QShowEvent * event ) {
+ loadSettings();
+}
+
+//
+// Cancel clicked on server-dialog
+//
+void FSUIPCControls::doCancel() {
+ //
+ // Ask if changed Settings should be saved
+ //
+ if (settingsDirty) {
+ int ret = QMessageBox::question ( this, "Settings have changed", "Do you want to save the settings?", QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::Discard );
+
+ qDebug() << "doCancel says: answer =" << ret;
+
+ switch (ret) {
+ case QMessageBox::Save:
+ save();
+ this->close();
+ break;
+ case QMessageBox::Discard:
+ this->close();
+ break;
+ case QMessageBox::Cancel:
+ // Cancel was clicked
+ break;
+ default:
+ // should never be reached
+ break;
+ }
+ }
+ else {
+ this->close();
+ }
+}
+
+//
+// Load the current Settings from the currently 'active' INI-file.
+//
+void FSUIPCControls::loadSettings() {
+
+ qDebug() << "loadSettings says: Starting ";
+ QSettings settings("Abbequerque Inc.", "FaceTrackNoIR"); // Registry settings (in HK_USER)
+
+ QString currentFile = settings.value ( "SettingsFile", QCoreApplication::applicationDirPath() + "/Settings/default.ini" ).toString();
+ QSettings iniFile( currentFile, QSettings::IniFormat ); // Application settings (in INI-file)
+
+ qDebug() << "loadSettings says: iniFile = " << currentFile;
+
+ iniFile.beginGroup ( "FSUIPC" );
+ ui.txtLocationOfDLL->setText(iniFile.value ( "LocationOfDLL", FSUIPC_FILENAME ).toString() );
+ iniFile.endGroup ();
+
+ settingsDirty = false;
+
+}
+
+//
+// Save the current Settings to the currently 'active' INI-file.
+//
+void FSUIPCControls::save() {
+
+ qDebug() << "save() says: started";
+
+ QSettings settings("Abbequerque Inc.", "FaceTrackNoIR"); // Registry settings (in HK_USER)
+
+ QString currentFile = settings.value ( "SettingsFile", QCoreApplication::applicationDirPath() + "/Settings/default.ini" ).toString();
+ QSettings iniFile( currentFile, QSettings::IniFormat ); // Application settings (in INI-file)
+
+ iniFile.beginGroup ( "FSUIPC" );
+ iniFile.setValue ( "LocationOfDLL", ui.txtLocationOfDLL->text() );
+ iniFile.endGroup ();
+
+ settingsDirty = false;
+}
+
+//
+// Show the Dialog to set the DLL's location
+//
+void FSUIPCControls::getLocationOfDLL()
+{
+ //
+ // Get the new filename of the INI-file.
+ //
+ QString fileName = QFileDialog::getOpenFileName(this, tr("Locate file"),
+ ui.txtLocationOfDLL->text(),
+ tr("FSUIPC DLL file (FSUIPC*.dll);;All Files (*)"));
+ if (!fileName.isEmpty()) {
+ ui.txtLocationOfDLL->setText( fileName );
+ settingsDirty = true;
+ }
+}
+
+
+//END
diff --git a/FaceTrackNoIR/FSUIPCServer.h b/FaceTrackNoIR/FSUIPCServer.h
new file mode 100644
index 00000000..caba2f33
--- /dev/null
+++ b/FaceTrackNoIR/FSUIPCServer.h
@@ -0,0 +1,121 @@
+/********************************************************************************
+* FSUIPCServer FSUIPCServer is the Class, that communicates headpose-data *
+* to games, using the FSUIPC.dll. *
+* *
+* Copyright (C) 2010 Wim Vriend (Developing) *
+* Ron Hendriks (Testing and Research) *
+* *
+* This program is free software; you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the *
+* Free Software Foundation; either version 3 of the License, or (at your *
+* option) any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but *
+* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
+* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along *
+* with this program; if not, see <http://www.gnu.org/licenses/>. *
+* *
+********************************************************************************/
+#pragma once
+#ifndef INCLUDED_FSUIPCSERVER_H
+#define INCLUDED_FSUIPCSERVER_H
+
+#include "Windows.h"
+#include <stdlib.h>
+#include "FTNoIR_cxx_protocolserver.h"
+#include "FSUIPC_User.h"
+#include <QString>
+#include <QMessageBox>
+#include <QSettings>
+#include <QFile>
+#include <QApplication>
+#include <QDebug>
+#include <QThread>
+#include <QMutex>
+#include <QLibrary>
+
+#include "ui_FTNoIR_FSUIPCcontrols.h"
+
+using namespace std;
+using namespace v4friend::ftnoir;
+
+static const char* FSUIPC_FILENAME = "C:\\Program Files\\Microsoft Games\\Flight Simulator 9\\Modules\\FSUIPC.dll";
+
+//
+// Define the structures necessary for the FSUIPC_Write calls
+//
+#pragma pack(push,1) // All fields in structure must be byte aligned.
+typedef struct
+{
+ int Control; // Control identifier
+ int Value; // Value of DOF
+} TFSState;
+#pragma pack(pop)
+
+class FSUIPCServer : public ProtocolServerBase {
+ Q_OBJECT
+
+public:
+
+ // public member methods
+ FSUIPCServer();
+ ~FSUIPCServer();
+
+ // protected member methods
+protected:
+ bool checkServerInstallationOK();
+ void sendHeadposeToGame();
+
+private:
+ // Private properties
+ QString ProgramName;
+ QLibrary FSUIPCLib;
+ QString LocationOfDLL;
+ void loadSettings();
+ float prevPosX, prevPosY, prevPosZ, prevRotX, prevRotY, prevRotZ;
+
+public:
+
+ // Settings for calculating the Virtual Pose
+ void setVirtRotX(float rot) { virtRotX = -1.0f * rot; } // degrees
+ void setVirtRotY(float rot) { virtRotY = rot; }
+ void setVirtRotZ(float rot) { virtRotZ = rot; }
+
+ void setVirtPosX(float pos) { virtPosX = 0.0f; } // cm, X and Y are not working for FS2002/2004!
+ void setVirtPosY(float pos) { virtPosY = 0.0f; }
+ void setVirtPosZ(float pos) { virtPosZ = -1.0f * pos; }
+
+ static int scale2AnalogLimits( float x, float min_x, float max_x );
+};
+
+// Widget that has controls for FSUIPC server-settings.
+class FSUIPCControls: public QWidget, public Ui::UICFSUIPCControls
+{
+ Q_OBJECT
+public:
+
+ explicit FSUIPCControls( QWidget *parent=0, Qt::WindowFlags f=0 );
+ virtual ~FSUIPCControls();
+ void showEvent ( QShowEvent * event );
+
+private:
+ Ui::UICFSUIPCControls ui;
+ void loadSettings();
+ void save();
+
+ /** helper **/
+ bool settingsDirty;
+
+private slots:
+ void doOK();
+ void doCancel();
+ void getLocationOfDLL();
+
+};
+
+
+#endif//INCLUDED_FSUIPCSERVER_H
+//END
diff --git a/FaceTrackNoIR/FTNoIR_FGcontrols.ui b/FaceTrackNoIR/FTNoIR_FGcontrols.ui
new file mode 100644
index 00000000..270a0ee5
--- /dev/null
+++ b/FaceTrackNoIR/FTNoIR_FGcontrols.ui
@@ -0,0 +1,269 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>UICFGControls</class>
+ <widget class="QWidget" name="UICFGControls">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>411</width>
+ <height>194</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>FlightGear settings FaceTrackNoIR</string>
+ </property>
+ <property name="windowIcon">
+ <iconset>
+ <normaloff>images/FaceTrackNoIR.ico</normaloff>images/FaceTrackNoIR.ico</iconset>
+ </property>
+ <property name="layoutDirection">
+ <enum>Qt::LeftToRight</enum>
+ </property>
+ <property name="autoFillBackground">
+ <bool>false</bool>
+ </property>
+ <layout class="QVBoxLayout" name="_vertical_layout">
+ <item>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="2" column="4">
+ <widget class="QSpinBox" name="spinIPFourthNibble">
+ <property name="maximumSize">
+ <size>
+ <width>60</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="maximum">
+ <number>255</number>
+ </property>
+ <property name="singleStep">
+ <number>5</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QSpinBox" name="spinIPFirstNibble">
+ <property name="maximumSize">
+ <size>
+ <width>60</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="maximum">
+ <number>255</number>
+ </property>
+ <property name="singleStep">
+ <number>5</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QSpinBox" name="spinIPSecondNibble">
+ <property name="maximumSize">
+ <size>
+ <width>60</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="maximum">
+ <number>255</number>
+ </property>
+ <property name="singleStep">
+ <number>5</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="3">
+ <widget class="QSpinBox" name="spinIPThirdNibble">
+ <property name="maximumSize">
+ <size>
+ <width>60</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="maximum">
+ <number>255</number>
+ </property>
+ <property name="singleStep">
+ <number>5</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>IP-address remote PC</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QCheckBox" name="chkLocalPC">
+ <property name="layoutDirection">
+ <enum>Qt::RightToLeft</enum>
+ </property>
+ <property name="text">
+ <string>Local PC only</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string>Port-number</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QSpinBox" name="spinPortNumber">
+ <property name="minimum">
+ <number>5550</number>
+ </property>
+ <property name="maximum">
+ <number>10000</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>If FlightGear is on the same PC as FaceTrackNoIR, tick the 'Local PC only' box.</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Otherwise: enter IP-address and port-number for the remote PC.</string>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Remember: you may have to change firewall-settings too!</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="sizeConstraint">
+ <enum>QLayout::SetDefaultConstraint</enum>
+ </property>
+ <item>
+ <widget class="QPushButton" name="btnOK">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>100</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>100</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>OK</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="btnCancel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>100</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>100</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>Cancel</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>10</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+ <slots>
+ <slot>startEngineClicked()</slot>
+ <slot>stopEngineClicked()</slot>
+ <slot>cameraSettingsClicked()</slot>
+ </slots>
+</ui>
diff --git a/FaceTrackNoIR/FTNoIR_cxx_protocolserver.h b/FaceTrackNoIR/FTNoIR_cxx_protocolserver.h
new file mode 100644
index 00000000..a14b198d
--- /dev/null
+++ b/FaceTrackNoIR/FTNoIR_cxx_protocolserver.h
@@ -0,0 +1,98 @@
+/********************************************************************************
+* FTNoIR_cxx_protocolserver is the base Class for Game-protocol-servers. *
+* Using this, the tracker only needs to create one *
+* server and can use the same functions to *
+* communicate with it. *
+* *
+* Copyright (C) 2010 Wim Vriend (Developing) *
+* Ron Hendriks (Testing and Research) *
+* *
+* This program is free software; you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the *
+* Free Software Foundation; either version 3 of the License, or (at your *
+* option) any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but *
+* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
+* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along *
+* with this program; if not, see <http://www.gnu.org/licenses/>. *
+* *
+********************************************************************************/
+#ifndef FTNOIR_CXX_PROTOCOLSERVER_H
+#define FTNOIR_CXX_PROTOCOLSERVER_H
+
+#include "Windows.h"
+//#include <QThread>
+#include <QObject>
+
+namespace v4friend
+{
+ namespace ftnoir
+ {
+ class ProtocolServerBase : public QObject // : public QThread
+ {
+ Q_OBJECT
+ public:
+
+ virtual ~ProtocolServerBase() {}
+
+ //! @return true if the engine will produce data.
+ /*! @see smEngineIsLicensed() */
+ virtual bool isLicensed() const { return true; };
+ virtual QString GetProgramName() { return QString("Test"); };
+
+ virtual bool checkServerInstallationOK ( HANDLE handle ) { return true; }
+ virtual void sendHeadposeToGame() {}
+ virtual void setVirtRotX(float rot) { virtRotX = rot; }
+ virtual void setVirtRotY(float rot) { virtRotY = rot; }
+ virtual void setVirtRotZ(float rot) { virtRotZ = rot; }
+ virtual void setVirtPosX(float pos) { virtPosX = pos / 100.0f; }
+ virtual void setVirtPosY(float pos) { virtPosY = pos / 100.0f; }
+ virtual void setVirtPosZ(float pos) { virtPosZ = pos / 100.0f; }
+
+ virtual void setHeadRotX(float x) { headRotX = x; }
+ virtual void setHeadRotY(float y) { headRotY = y; }
+ virtual void setHeadRotZ(float z) { headRotZ = z; }
+ virtual void setHeadPosX(float x) { headPosX = x; }
+ virtual void setHeadPosY(float y) { headPosY = y; }
+ virtual void setHeadPosZ(float z) { headPosZ = z; }
+
+ protected:
+ ProtocolServerBase() {};
+
+ public:
+ /** member variables for saving the head pose **/
+ float virtPosX;
+ float virtPosY;
+ float virtPosZ;
+
+ float virtRotX;
+ float virtRotY;
+ float virtRotZ;
+
+ float headPosX;
+ float headPosY;
+ float headPosZ;
+
+ float headRotX;
+ float headRotY;
+ float headRotZ;
+
+ float prevPosX;
+ float prevPosY;
+ float prevPosZ;
+ float prevRotX;
+ float prevRotY;
+ float prevRotZ;
+
+ private:
+ ProtocolServerBase(const ProtocolServerBase &);
+ ProtocolServerBase &operator=(const ProtocolServerBase &);
+ bool operator==(const ProtocolServerBase &) const;
+ };
+ }
+}
+#endif
diff --git a/FaceTrackNoIR/FaceTrackNoIR.ui b/FaceTrackNoIR/FaceTrackNoIR.ui
index 2d7aad69..56660d49 100644
--- a/FaceTrackNoIR/FaceTrackNoIR.ui
+++ b/FaceTrackNoIR/FaceTrackNoIR.ui
@@ -10,8 +10,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>970</width>
- <height>421</height>
+ <width>923</width>
+ <height>371</height>
</rect>
</property>
<property name="sizePolicy">
@@ -48,15 +48,18 @@ QWidget {
/* Specials for individual widget(s) */
QWidget#widget {
- background-color: #484848;
+/* background-color: #484848;*/
+ background-color: #595959;
border-left: 1px solid #000;
}
/* Specials for individual widget(s) */
+QWidget#widget4logo {
+ background-color: #000000;
+}
+
QWidget#widget4video {
- background-color: #595959;
- border-top: 1px solid #000;
- border-bottom: 1px solid #000;
+/* background-color: #595959;*/
}
QWidget#Leftwidget {
@@ -121,8 +124,8 @@ QGroupBox {
<widget class="QWidget" name="centralWidget">
<property name="minimumSize">
<size>
- <width>800</width>
- <height>400</height>
+ <width>925</width>
+ <height>350</height>
</size>
</property>
<property name="styleSheet">
@@ -142,10 +145,16 @@ QGroupBox {
</property>
<item>
<layout class="QGridLayout" name="gridLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
<property name="spacing">
<number>6</number>
</property>
- <item row="6" column="0">
+ <item row="5" column="0">
<widget class="QWidget" name="headPoseWidget" native="true">
<property name="minimumSize">
<size>
@@ -374,63 +383,12 @@ color:#000;</string>
</widget>
</widget>
</item>
- <item row="2" column="0">
- <layout class="QHBoxLayout" name="horizontalLayout_4">
- <item>
- <widget class="QFrame" name="logoInstitute">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>90</width>
- <height>90</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>16777215</width>
- <height>90</height>
- </size>
- </property>
- <property name="styleSheet">
- <string notr="true">QFrame#logoInstitute {
- background:#595959 url(UIElements/logoFaceTrackNoIR.png) no-repeat;
-border:none;
-}</string>
- </property>
- <property name="frameShape">
- <enum>QFrame::StyledPanel</enum>
- </property>
- <property name="frameShadow">
- <enum>QFrame::Raised</enum>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </item>
- <item row="5" column="0">
+ <item row="4" column="0">
<widget class="QWidget" name="widget4video" native="true">
<property name="minimumSize">
<size>
<width>250</width>
- <height>180</height>
+ <height>150</height>
</size>
</property>
<widget class="QFrame" name="video_frame">
@@ -439,13 +397,13 @@ border:none;
<x>0</x>
<y>0</y>
<width>250</width>
- <height>180</height>
+ <height>170</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>250</width>
- <height>180</height>
+ <height>150</height>
</size>
</property>
<property name="maximumSize">
@@ -466,6 +424,93 @@ border:none;
</widget>
</widget>
</item>
+ <item row="0" column="0">
+ <layout class="QHBoxLayout" name="horizontalLayout_6">
+ <item>
+ <widget class="QWidget" name="widget4logo" native="true">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>90</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>90</height>
+ </size>
+ </property>
+ <widget class="QPushButton" name="btnDonate">
+ <property name="geometry">
+ <rect>
+ <x>100</x>
+ <y>20</y>
+ <width>145</width>
+ <height>34</height>
+ </rect>
+ </property>
+ <property name="toolTip">
+ <string>Please help us: make gaming fun...</string>
+ </property>
+ <property name="text">
+ <string>Click here to
+Support FaceTrackNoIR!</string>
+ </property>
+ <property name="icon">
+ <iconset resource="FaceTrackNoIR.qrc">
+ <normaloff>:/UIElements/Donate.png</normaloff>:/UIElements/Donate.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>18</width>
+ <height>18</height>
+ </size>
+ </property>
+ </widget>
+ <widget class="QFrame" name="logoInstitute">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>90</width>
+ <height>90</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>90</width>
+ <height>90</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>90</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">QFrame#logoInstitute {
+ background:#595959 url(UIElements/logoFaceTrackNoIR.png) no-repeat;
+border:none;
+}</string>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </item>
</layout>
</item>
<item>
@@ -500,9 +545,9 @@ border:none;
<colorrole role="Button">
<brush brushstyle="SolidPattern">
<color alpha="255">
- <red>72</red>
- <green>72</green>
- <blue>72</blue>
+ <red>89</red>
+ <green>89</green>
+ <blue>89</blue>
</color>
</brush>
</colorrole>
@@ -527,18 +572,18 @@ border:none;
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
- <red>72</red>
- <green>72</green>
- <blue>72</blue>
+ <red>89</red>
+ <green>89</green>
+ <blue>89</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
- <red>72</red>
- <green>72</green>
- <blue>72</blue>
+ <red>89</red>
+ <green>89</green>
+ <blue>89</blue>
</color>
</brush>
</colorrole>
@@ -583,9 +628,9 @@ border:none;
<colorrole role="Button">
<brush brushstyle="SolidPattern">
<color alpha="255">
- <red>72</red>
- <green>72</green>
- <blue>72</blue>
+ <red>89</red>
+ <green>89</green>
+ <blue>89</blue>
</color>
</brush>
</colorrole>
@@ -610,18 +655,18 @@ border:none;
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
- <red>72</red>
- <green>72</green>
- <blue>72</blue>
+ <red>89</red>
+ <green>89</green>
+ <blue>89</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
- <red>72</red>
- <green>72</green>
- <blue>72</blue>
+ <red>89</red>
+ <green>89</green>
+ <blue>89</blue>
</color>
</brush>
</colorrole>
@@ -666,9 +711,9 @@ border:none;
<colorrole role="Button">
<brush brushstyle="SolidPattern">
<color alpha="255">
- <red>72</red>
- <green>72</green>
- <blue>72</blue>
+ <red>89</red>
+ <green>89</green>
+ <blue>89</blue>
</color>
</brush>
</colorrole>
@@ -693,18 +738,18 @@ border:none;
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
- <red>72</red>
- <green>72</green>
- <blue>72</blue>
+ <red>89</red>
+ <green>89</green>
+ <blue>89</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
- <red>72</red>
- <green>72</green>
- <blue>72</blue>
+ <red>89</red>
+ <green>89</green>
+ <blue>89</blue>
</color>
</brush>
</colorrole>
@@ -750,33 +795,7 @@ border:none;
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<layout class="QGridLayout" name="gridLayout_2">
- <item row="1" column="2">
- <spacer name="horizontalSpacer_5">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item row="1" column="0">
- <spacer name="horizontalSpacer_6">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item row="1" column="1">
+ <item row="2" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="leftMargin">
<number>10</number>
@@ -785,6 +804,32 @@ border:none;
<number>10</number>
</property>
<item>
+ <widget class="QGroupBox" name="groupProfile">
+ <property name="title">
+ <string>Profile</string>
+ </property>
+ <widget class="QComboBox" name="iconcomboTrackerSource_2">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>20</y>
+ <width>161</width>
+ <height>22</height>
+ </rect>
+ </property>
+ <property name="styleSheet">
+ <string notr="true"/>
+ </property>
+ <property name="currentIndex">
+ <number>-1</number>
+ </property>
+ <property name="maxVisibleItems">
+ <number>3</number>
+ </property>
+ </widget>
+ </widget>
+ </item>
+ <item>
<widget class="QGroupBox" name="groupTrackerSource">
<property name="minimumSize">
<size>
@@ -939,82 +984,9 @@ border:none;
</widget>
</widget>
</item>
- <item>
- <widget class="QPushButton" name="btnEditCurves">
- <property name="toolTip">
- <string>Edit the Curve settings</string>
- </property>
- <property name="text">
- <string>Curves</string>
- </property>
- <property name="icon">
- <iconset resource="FaceTrackNoIR.qrc">
- <normaloff>:/UIElements/Curves.png</normaloff>:/UIElements/Curves.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>150</width>
- <height>32</height>
- </size>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item row="5" column="1">
- <layout class="QHBoxLayout" name="horLayoutDonate">
- <property name="rightMargin">
- <number>10</number>
- </property>
- <item>
- <spacer name="horizontalSpacer_4">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QPushButton" name="btnDonate">
- <property name="toolTip">
- <string>Please help us: make gaming fun...</string>
- </property>
- <property name="text">
- <string>Click here to Support FaceTrackNoIR!</string>
- </property>
- <property name="icon">
- <iconset resource="FaceTrackNoIR.qrc">
- <normaloff>:/UIElements/Donate.png</normaloff>:/UIElements/Donate.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>18</width>
- <height>18</height>
- </size>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer_2">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>186</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
</layout>
</item>
- <item row="4" column="1">
+ <item row="3" column="0">
<widget class="QWidget" name="bubbleBigWidget" native="true">
<property name="minimumSize">
<size>
@@ -1065,7 +1037,7 @@ background:none;</string>
<widget class="QLabel" name="lblSensYaw_5">
<property name="minimumSize">
<size>
- <width>100</width>
+ <width>95</width>
<height>0</height>
</size>
</property>
@@ -1117,17 +1089,6 @@ background:none;</string>
</property>
</widget>
</item>
- <item row="2" column="1">
- <widget class="QLabel" name="label">
- <property name="styleSheet">
- <string notr="true">color:#ccc;
-background:none;</string>
- </property>
- <property name="text">
- <string>(samples)</string>
- </property>
- </widget>
- </item>
<item row="3" column="0">
<widget class="QSlider" name="slideSmoothing">
<property name="minimumSize">
@@ -1160,7 +1121,7 @@ background:none;</string>
<widget class="QSpinBox" name="spinSmoothing">
<property name="minimumSize">
<size>
- <width>50</width>
+ <width>35</width>
<height>22</height>
</size>
</property>
@@ -1175,6 +1136,17 @@ background:none;</string>
</property>
</widget>
</item>
+ <item row="2" column="1">
+ <widget class="QLabel" name="label">
+ <property name="styleSheet">
+ <string notr="true">color:#ccc;
+background:none;</string>
+ </property>
+ <property name="text">
+ <string>(samples)</string>
+ </property>
+ </widget>
+ </item>
</layout>
</item>
<item>
@@ -1389,7 +1361,7 @@ background:none;</string>
<widget class="QSpinBox" name="spinRedYaw">
<property name="minimumSize">
<size>
- <width>50</width>
+ <width>40</width>
<height>22</height>
</size>
</property>
@@ -1411,7 +1383,7 @@ background:none;</string>
<widget class="QSpinBox" name="spinRedPitch">
<property name="minimumSize">
<size>
- <width>50</width>
+ <width>40</width>
<height>22</height>
</size>
</property>
@@ -1433,7 +1405,7 @@ background:none;</string>
<widget class="QSpinBox" name="spinRedRoll">
<property name="minimumSize">
<size>
- <width>50</width>
+ <width>40</width>
<height>22</height>
</size>
</property>
@@ -1725,7 +1697,7 @@ background:none;</string>
<widget class="QSpinBox" name="spinRedX">
<property name="minimumSize">
<size>
- <width>50</width>
+ <width>40</width>
<height>22</height>
</size>
</property>
@@ -1747,7 +1719,7 @@ background:none;</string>
<widget class="QSpinBox" name="spinRedY">
<property name="minimumSize">
<size>
- <width>50</width>
+ <width>40</width>
<height>22</height>
</size>
</property>
@@ -1769,7 +1741,7 @@ background:none;</string>
<widget class="QSpinBox" name="spinRedZ">
<property name="minimumSize">
<size>
- <width>50</width>
+ <width>40</width>
<height>22</height>
</size>
</property>
@@ -1836,7 +1808,7 @@ background:none;</string>
</property>
<property name="sizeHint" stdset="0">
<size>
- <width>5</width>
+ <width>20</width>
<height>20</height>
</size>
</property>
@@ -1845,81 +1817,124 @@ background:none;</string>
</layout>
</widget>
</item>
- <item row="3" column="1">
- <widget class="QWidget" name="bubbleSmallWidget_2" native="true">
- <property name="minimumSize">
- <size>
- <width>620</width>
- <height>67</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>667</width>
- <height>67</height>
- </size>
- </property>
- <property name="acceptDrops">
- <bool>true</bool>
- </property>
- <property name="styleSheet">
- <string notr="true">background: url(&quot;UIElements/bubble_1_small.png&quot;) no-repeat;
+ <item row="0" column="0">
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <widget class="QWidget" name="bubbleSmallWidget_2" native="true">
+ <property name="minimumSize">
+ <size>
+ <width>500</width>
+ <height>67</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>700</width>
+ <height>67</height>
+ </size>
+ </property>
+ <property name="acceptDrops">
+ <bool>true</bool>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background: url(&quot;UIElements/bubble_1_small.png&quot;) no-repeat;
opacity:100;</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_6">
- <property name="spacing">
- <number>0</number>
- </property>
- <property name="leftMargin">
- <number>15</number>
- </property>
- <property name="topMargin">
- <number>10</number>
- </property>
- <property name="rightMargin">
- <number>10</number>
- </property>
- <property name="bottomMargin">
- <number>10</number>
- </property>
- <item>
- <widget class="QLabel" name="cameraName">
- <property name="minimumSize">
- <size>
- <width>0</width>
- <height>30</height>
- </size>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_6">
+ <property name="spacing">
+ <number>0</number>
</property>
- <property name="maximumSize">
- <size>
- <width>600</width>
- <height>30</height>
- </size>
+ <property name="leftMargin">
+ <number>15</number>
</property>
- <property name="styleSheet">
- <string notr="true">color:#ccc;
-background:none;</string>
+ <property name="topMargin">
+ <number>10</number>
</property>
- <property name="text">
- <string>Camera Name</string>
+ <property name="rightMargin">
+ <number>10</number>
</property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item row="2" column="1">
- <spacer name="verticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
+ <property name="bottomMargin">
+ <number>10</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_5">
+ <item>
+ <widget class="QLabel" name="cameraName">
+ <property name="minimumSize">
+ <size>
+ <width>420</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>600</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">color:#ccc;
+background:none;</string>
+ </property>
+ <property name="text">
+ <string>Camera Name</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="btnEditCurves">
+ <property name="minimumSize">
+ <size>
+ <width>52</width>
+ <height>40</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>180</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Edit the Curve settings</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:none;</string>
+ </property>
+ <property name="text">
+ <string>Curves</string>
+ </property>
+ <property name="icon">
+ <iconset resource="FaceTrackNoIR.qrc">
+ <normaloff>:/UIElements/Curves.png</normaloff>:/UIElements/Curves.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>150</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
</item>
</layout>
</item>
@@ -1935,7 +1950,7 @@ background:none;</string>
<rect>
<x>0</x>
<y>0</y>
- <width>970</width>
+ <width>923</width>
<height>21</height>
</rect>
</property>
diff --git a/FaceTrackNoIR/UIElements/Curves.png b/FaceTrackNoIR/UIElements/Curves.png
new file mode 100644
index 00000000..fe21fa15
--- /dev/null
+++ b/FaceTrackNoIR/UIElements/Curves.png
Binary files differ
diff --git a/FaceTrackNoIR/UIElements/Donate.png b/FaceTrackNoIR/UIElements/Donate.png
new file mode 100644
index 00000000..cf4223fb
--- /dev/null
+++ b/FaceTrackNoIR/UIElements/Donate.png
Binary files differ
diff --git a/FaceTrackNoIR/images/330px-6DOF_en.png b/FaceTrackNoIR/images/330px-6DOF_en.png
new file mode 100644
index 00000000..9d1d72ff
--- /dev/null
+++ b/FaceTrackNoIR/images/330px-6DOF_en.png
Binary files differ
diff --git a/FaceTrackNoIR/images/rotation_DOFs.png b/FaceTrackNoIR/images/rotation_DOFs.png
new file mode 100644
index 00000000..68682d88
--- /dev/null
+++ b/FaceTrackNoIR/images/rotation_DOFs.png
Binary files differ
diff --git a/FaceTrackNoIR/images/translation_DOFs.png b/FaceTrackNoIR/images/translation_DOFs.png
new file mode 100644
index 00000000..886c586e
--- /dev/null
+++ b/FaceTrackNoIR/images/translation_DOFs.png
Binary files differ