diff options
| author | Stanislaw Halik <sthalik@misaki.pl> | 2013-03-22 20:48:17 +0100 | 
|---|---|---|
| committer | Stanislaw Halik <sthalik@misaki.pl> | 2013-03-22 20:48:17 +0100 | 
| commit | 3089c4bbc10e98d18f43e8a70e7a3d0c0eaf0900 (patch) | |
| tree | c6f985472c05372417ecd4a861f6c2f346b63fd3 /ftnoir_tracker_udp | |
| parent | 3e1515e88c6f750c193ed9b9908d8a9c09e5b025 (diff) | |
Downcase. PLEASE TURN OFF IGNORING CASE IN GIT CONFIG!!!
.git/config:
[core]
	ignorecase = false
Diffstat (limited to 'ftnoir_tracker_udp')
| -rw-r--r-- | ftnoir_tracker_udp/FTNoIR_FTNClientControls.ui | 381 | ||||
| -rw-r--r-- | ftnoir_tracker_udp/FTNoIR_Tracker_UDP.h | 99 | ||||
| -rw-r--r-- | ftnoir_tracker_udp/FTNoIR_Tracker_UDP_vc8.vcproj | 338 | ||||
| -rw-r--r-- | ftnoir_tracker_udp/FTNoIR_Tracker_UDP_vc9.vcproj | 335 | ||||
| -rw-r--r-- | ftnoir_tracker_udp/ftnoir_tracker_udp.cpp | 217 | ||||
| -rw-r--r-- | ftnoir_tracker_udp/ftnoir_tracker_udp_dialog.cpp | 181 | ||||
| -rw-r--r-- | ftnoir_tracker_udp/ftnoir_tracker_udp_dll.cpp | 85 | 
7 files changed, 1636 insertions, 0 deletions
diff --git a/ftnoir_tracker_udp/FTNoIR_FTNClientControls.ui b/ftnoir_tracker_udp/FTNoIR_FTNClientControls.ui new file mode 100644 index 00000000..7ac6c0f4 --- /dev/null +++ b/ftnoir_tracker_udp/FTNoIR_FTNClientControls.ui @@ -0,0 +1,381 @@ +<?xml version="1.0" encoding="UTF-8"?>
 +<ui version="4.0">
 + <class>UICFTNClientControls</class>
 + <widget class="QWidget" name="UICFTNClientControls">
 +  <property name="geometry">
 +   <rect>
 +    <x>0</x>
 +    <y>0</y>
 +    <width>411</width>
 +    <height>210</height>
 +   </rect>
 +  </property>
 +  <property name="windowTitle">
 +   <string>FTNoIR tracker 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="1" column="0">
 +      <widget class="QLabel" name="label_5">
 +       <property name="text">
 +        <string>Port-number</string>
 +       </property>
 +      </widget>
 +     </item>
 +     <item row="1" column="1">
 +      <widget class="QSpinBox" name="spinPortNumber">
 +       <property name="minimum">
 +        <number>5550</number>
 +       </property>
 +       <property name="maximum">
 +        <number>10000</number>
 +       </property>
 +      </widget>
 +     </item>
 +     <item row="1" column="2">
 +      <spacer name="horizontalSpacer_3">
 +       <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>
 +    <widget class="QGroupBox" name="groupBox_3">
 +     <property name="minimumSize">
 +      <size>
 +       <width>0</width>
 +       <height>85</height>
 +      </size>
 +     </property>
 +     <property name="title">
 +      <string>Enable Axis</string>
 +     </property>
 +     <widget class="QWidget" name="layoutWidget">
 +      <property name="geometry">
 +       <rect>
 +        <x>10</x>
 +        <y>20</y>
 +        <width>143</width>
 +        <height>60</height>
 +       </rect>
 +      </property>
 +      <layout class="QGridLayout" name="gridLayout_2">
 +       <item row="0" column="0">
 +        <widget class="QLabel" name="label_6">
 +         <property name="text">
 +          <string>Roll:</string>
 +         </property>
 +        </widget>
 +       </item>
 +       <item row="1" column="0">
 +        <widget class="QLabel" name="label_9">
 +         <property name="text">
 +          <string>Pitch:</string>
 +         </property>
 +        </widget>
 +       </item>
 +       <item row="2" column="0">
 +        <widget class="QLabel" name="label_11">
 +         <property name="text">
 +          <string>Yaw:</string>
 +         </property>
 +        </widget>
 +       </item>
 +       <item row="0" column="1">
 +        <widget class="QCheckBox" name="chkEnableRoll">
 +         <property name="maximumSize">
 +          <size>
 +           <width>20</width>
 +           <height>16777215</height>
 +          </size>
 +         </property>
 +         <property name="layoutDirection">
 +          <enum>Qt::LeftToRight</enum>
 +         </property>
 +         <property name="styleSheet">
 +          <string notr="true"/>
 +         </property>
 +         <property name="text">
 +          <string/>
 +         </property>
 +        </widget>
 +       </item>
 +       <item row="1" column="1">
 +        <widget class="QCheckBox" name="chkEnablePitch">
 +         <property name="maximumSize">
 +          <size>
 +           <width>20</width>
 +           <height>16777215</height>
 +          </size>
 +         </property>
 +         <property name="layoutDirection">
 +          <enum>Qt::LeftToRight</enum>
 +         </property>
 +         <property name="text">
 +          <string/>
 +         </property>
 +        </widget>
 +       </item>
 +       <item row="2" column="1">
 +        <widget class="QCheckBox" name="chkEnableYaw">
 +         <property name="maximumSize">
 +          <size>
 +           <width>20</width>
 +           <height>16777215</height>
 +          </size>
 +         </property>
 +         <property name="layoutDirection">
 +          <enum>Qt::LeftToRight</enum>
 +         </property>
 +         <property name="text">
 +          <string/>
 +         </property>
 +        </widget>
 +       </item>
 +       <item row="0" column="3">
 +        <widget class="QLabel" name="label_14">
 +         <property name="text">
 +          <string>X:</string>
 +         </property>
 +        </widget>
 +       </item>
 +       <item row="0" column="4">
 +        <widget class="QCheckBox" name="chkEnableX">
 +         <property name="maximumSize">
 +          <size>
 +           <width>20</width>
 +           <height>16777215</height>
 +          </size>
 +         </property>
 +         <property name="layoutDirection">
 +          <enum>Qt::LeftToRight</enum>
 +         </property>
 +         <property name="text">
 +          <string/>
 +         </property>
 +        </widget>
 +       </item>
 +       <item row="1" column="3">
 +        <widget class="QLabel" name="label_15">
 +         <property name="text">
 +          <string>Y:</string>
 +         </property>
 +        </widget>
 +       </item>
 +       <item row="1" column="4">
 +        <widget class="QCheckBox" name="chkEnableY">
 +         <property name="maximumSize">
 +          <size>
 +           <width>20</width>
 +           <height>16777215</height>
 +          </size>
 +         </property>
 +         <property name="layoutDirection">
 +          <enum>Qt::LeftToRight</enum>
 +         </property>
 +         <property name="text">
 +          <string/>
 +         </property>
 +        </widget>
 +       </item>
 +       <item row="2" column="3">
 +        <widget class="QLabel" name="label_16">
 +         <property name="text">
 +          <string>Z:</string>
 +         </property>
 +        </widget>
 +       </item>
 +       <item row="2" column="4">
 +        <widget class="QCheckBox" name="chkEnableZ">
 +         <property name="maximumSize">
 +          <size>
 +           <width>20</width>
 +           <height>16777215</height>
 +          </size>
 +         </property>
 +         <property name="layoutDirection">
 +          <enum>Qt::LeftToRight</enum>
 +         </property>
 +         <property name="text">
 +          <string/>
 +         </property>
 +        </widget>
 +       </item>
 +       <item row="0" column="2">
 +        <spacer name="horizontalSpacer_4">
 +         <property name="orientation">
 +          <enum>Qt::Horizontal</enum>
 +         </property>
 +         <property name="sizeType">
 +          <enum>QSizePolicy::Minimum</enum>
 +         </property>
 +         <property name="sizeHint" stdset="0">
 +          <size>
 +           <width>40</width>
 +           <height>20</height>
 +          </size>
 +         </property>
 +        </spacer>
 +       </item>
 +      </layout>
 +     </widget>
 +    </widget>
 +   </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">
 +       <property name="text">
 +        <string>Enter the 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>
 + <tabstops>
 +  <tabstop>spinPortNumber</tabstop>
 +  <tabstop>btnOK</tabstop>
 +  <tabstop>btnCancel</tabstop>
 + </tabstops>
 + <resources/>
 + <connections/>
 + <slots>
 +  <slot>startEngineClicked()</slot>
 +  <slot>stopEngineClicked()</slot>
 +  <slot>cameraSettingsClicked()</slot>
 + </slots>
 +</ui>
 diff --git a/ftnoir_tracker_udp/FTNoIR_Tracker_UDP.h b/ftnoir_tracker_udp/FTNoIR_Tracker_UDP.h new file mode 100644 index 00000000..94645c84 --- /dev/null +++ b/ftnoir_tracker_udp/FTNoIR_Tracker_UDP.h @@ -0,0 +1,99 @@ +#include "..\ftnoir_tracker_base\ftnoir_tracker_base.h"
 +#include "ui_FTNoIR_FTNClientcontrols.h"
 +#include <QThread>
 +#include <QUdpSocket>
 +#include <QMessageBox>
 +#include <QSettings>
 +#include "Windows.h"
 +#include "math.h"
 +
 +class FTNoIR_Tracker : public ITracker, QThread
 +{
 +public:
 +	FTNoIR_Tracker();
 +	~FTNoIR_Tracker();
 +
 +    void Initialize( QFrame *videoframe );
 +    void StartTracker( HWND parent_window );
 +    void StopTracker( bool exit );
 +	bool GiveHeadPoseData(THeadPoseData *data);
 +	void loadSettings();
 +
 +protected:
 +	void run();												// qthread override run method
 +
 +private:
 +	// Handles to neatly terminate thread...
 +	HANDLE m_StopThread;
 +	HANDLE m_WaitThread;
 +
 +	// UDP socket-variables
 +	QUdpSocket *inSocket;									// Receive from ...
 +	QUdpSocket *outSocket;									// Send to ...
 +	QHostAddress destIP;									// Destination IP-address
 +	int destPort;											// Destination port-number
 +	QHostAddress srcIP;										// Source IP-address
 +	int srcPort;											// Source port-number
 +
 +	THeadPoseData newHeadPose;								// Structure with new headpose
 +
 +	float portAddress;										// Port-number
 +	bool bEnableRoll;
 +	bool bEnablePitch;
 +	bool bEnableYaw;
 +	bool bEnableX;
 +	bool bEnableY;
 +	bool bEnableZ;
 +};
 +
 +// Widget that has controls for FTNoIR protocol client-settings.
 +class TrackerControls: public QWidget, Ui::UICFTNClientControls, public ITrackerDialog
 +{
 +    Q_OBJECT
 +public:
 +
 +	explicit TrackerControls();
 +    virtual ~TrackerControls();
 +	void showEvent ( QShowEvent * event );
 +
 +    void Initialize(QWidget *parent);
 +	void registerTracker(ITracker *tracker) {};
 +	void unRegisterTracker() {};
 +
 +private:
 +	Ui::UICFTNClientControls ui;
 +	void loadSettings();
 +	void save();
 +
 +	/** helper **/
 +	bool settingsDirty;
 +
 +private slots:
 +	void doOK();
 +	void doCancel();
 +	void settingChanged() { settingsDirty = true; };
 +	void settingChanged(int) { settingsDirty = true; };
 +};
 +
 +//*******************************************************************************************************
 +// FaceTrackNoIR Tracker DLL. Functions used to get general info on the Tracker
 +//*******************************************************************************************************
 +class FTNoIR_TrackerDll : public ITrackerDll
 +{
 +public:
 +	FTNoIR_TrackerDll();
 +	~FTNoIR_TrackerDll();
 +
 +    void Initialize();
 +
 +	void getFullName(QString *strToBeFilled);
 +	void getShortName(QString *strToBeFilled);
 +	void getDescription(QString *strToBeFilled);
 +	void getIcon(QIcon *icon);
 +
 +private:
 +	QString trackerFullName;									// Trackers' name and description
 +	QString trackerShortName;
 +	QString trackerDescription;
 +};
 +
 diff --git a/ftnoir_tracker_udp/FTNoIR_Tracker_UDP_vc8.vcproj b/ftnoir_tracker_udp/FTNoIR_Tracker_UDP_vc8.vcproj new file mode 100644 index 00000000..d855e3c2 --- /dev/null +++ b/ftnoir_tracker_udp/FTNoIR_Tracker_UDP_vc8.vcproj @@ -0,0 +1,338 @@ +<?xml version="1.0" encoding="Windows-1252"?>
 +<VisualStudioProject
 +	ProjectType="Visual C++"
 +	Version="8,00"
 +	Name="FTNoIR_Tracker_UDP"
 +	ProjectGUID="{507B92A6-8725-4921-9432-2864EF2B64D9}"
 +	RootNamespace="FTNoIR_Tracker_UDP"
 +	Keyword="Qt4VSv1.0"
 +	>
 +	<Platforms>
 +		<Platform
 +			Name="Win32"
 +		/>
 +	</Platforms>
 +	<ToolFiles>
 +	</ToolFiles>
 +	<Configurations>
 +		<Configuration
 +			Name="Release|Win32"
 +			OutputDirectory="$(SolutionDir)/bin"
 +			IntermediateDirectory="$(ConfigurationName)"
 +			ConfigurationType="2"
 +			>
 +			<Tool
 +				Name="VCPreBuildEventTool"
 +			/>
 +			<Tool
 +				Name="VCCustomBuildTool"
 +			/>
 +			<Tool
 +				Name="VCXMLDataGeneratorTool"
 +			/>
 +			<Tool
 +				Name="VCWebServiceProxyGeneratorTool"
 +			/>
 +			<Tool
 +				Name="VCMIDLTool"
 +			/>
 +			<Tool
 +				Name="VCCLCompilerTool"
 +				AdditionalIncludeDirectories=".\GeneratedFiles;"$(QTDIR)\include";".\GeneratedFiles\$(ConfigurationName)";"$(QTDIR)\include\qtmain";"$(QTDIR)\include\QtCore";"$(QTDIR)\include\QtNetwork";"$(QTDIR)\include\QtGui";.\"
 +				PreprocessorDefinitions="UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_THREAD_SUPPORT;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;FTNOIR_TRACKER_BASE_LIB;QT_DLL"
 +				RuntimeLibrary="2"
 +				TreatWChar_tAsBuiltInType="false"
 +				DebugInformationFormat="0"
 +			/>
 +			<Tool
 +				Name="VCManagedResourceCompilerTool"
 +			/>
 +			<Tool
 +				Name="VCResourceCompilerTool"
 +			/>
 +			<Tool
 +				Name="VCPreLinkEventTool"
 +			/>
 +			<Tool
 +				Name="VCLinkerTool"
 +				AdditionalDependencies="qtmain.lib QtCore4.lib QtGui4.lib QtNetwork4.lib"
 +				OutputFile="$(OutDir)\$(ProjectName).dll"
 +				AdditionalLibraryDirectories="$(QTDIR)\lib"
 +				GenerateDebugInformation="false"
 +				SubSystem="2"
 +				OptimizeReferences="1"
 +				EnableCOMDATFolding="1"
 +			/>
 +			<Tool
 +				Name="VCALinkTool"
 +			/>
 +			<Tool
 +				Name="VCManifestTool"
 +			/>
 +			<Tool
 +				Name="VCXDCMakeTool"
 +			/>
 +			<Tool
 +				Name="VCBscMakeTool"
 +			/>
 +			<Tool
 +				Name="VCFxCopTool"
 +			/>
 +			<Tool
 +				Name="VCAppVerifierTool"
 +			/>
 +			<Tool
 +				Name="VCWebDeploymentTool"
 +			/>
 +			<Tool
 +				Name="VCPostBuildEventTool"
 +			/>
 +		</Configuration>
 +		<Configuration
 +			Name="Debug|Win32"
 +			OutputDirectory="$(SolutionDir)/bin_dbg"
 +			IntermediateDirectory="$(ConfigurationName)"
 +			ConfigurationType="2"
 +			>
 +			<Tool
 +				Name="VCPreBuildEventTool"
 +			/>
 +			<Tool
 +				Name="VCCustomBuildTool"
 +			/>
 +			<Tool
 +				Name="VCXMLDataGeneratorTool"
 +			/>
 +			<Tool
 +				Name="VCWebServiceProxyGeneratorTool"
 +			/>
 +			<Tool
 +				Name="VCMIDLTool"
 +			/>
 +			<Tool
 +				Name="VCCLCompilerTool"
 +				Optimization="0"
 +				AdditionalIncludeDirectories=".\GeneratedFiles;"$(QTDIR)\include";".\GeneratedFiles\$(ConfigurationName)";"$(QTDIR)\include\qtmain";"$(QTDIR)\include\QtCore";"$(QTDIR)\include\QtNetwork";"$(QTDIR)\include\QtGui";.\"
 +				PreprocessorDefinitions="UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_THREAD_SUPPORT;QT_CORE_LIB;FTNOIR_TRACKER_BASE_LIB;QT_DLL"
 +				RuntimeLibrary="3"
 +				TreatWChar_tAsBuiltInType="false"
 +				DebugInformationFormat="3"
 +			/>
 +			<Tool
 +				Name="VCManagedResourceCompilerTool"
 +			/>
 +			<Tool
 +				Name="VCResourceCompilerTool"
 +			/>
 +			<Tool
 +				Name="VCPreLinkEventTool"
 +			/>
 +			<Tool
 +				Name="VCLinkerTool"
 +				AdditionalDependencies="qtmaind.lib QtCored4.lib QtGuid4.lib QtNetworkd4.lib"
 +				OutputFile="$(OutDir)\$(ProjectName).dll"
 +				AdditionalLibraryDirectories="$(QTDIR)\lib"
 +				GenerateDebugInformation="true"
 +				SubSystem="2"
 +			/>
 +			<Tool
 +				Name="VCALinkTool"
 +			/>
 +			<Tool
 +				Name="VCManifestTool"
 +			/>
 +			<Tool
 +				Name="VCXDCMakeTool"
 +			/>
 +			<Tool
 +				Name="VCBscMakeTool"
 +			/>
 +			<Tool
 +				Name="VCFxCopTool"
 +			/>
 +			<Tool
 +				Name="VCAppVerifierTool"
 +			/>
 +			<Tool
 +				Name="VCWebDeploymentTool"
 +			/>
 +			<Tool
 +				Name="VCPostBuildEventTool"
 +			/>
 +		</Configuration>
 +	</Configurations>
 +	<References>
 +	</References>
 +	<Files>
 +		<Filter
 +			Name="Source Files"
 +			Filter="cpp;cxx;c;def"
 +			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
 +			>
 +			<File
 +				RelativePath=".\ftnoir_tracker_udp.cpp"
 +				>
 +			</File>
 +			<File
 +				RelativePath=".\ftnoir_tracker_udp_dialog.cpp"
 +				>
 +			</File>
 +			<File
 +				RelativePath=".\ftnoir_tracker_udp_dll.cpp"
 +				>
 +			</File>
 +		</Filter>
 +		<Filter
 +			Name="Header Files"
 +			Filter="h"
 +			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
 +			>
 +			<File
 +				RelativePath="..\FTNoIR_Tracker_Base\ftnoir_tracker_base.h"
 +				>
 +			</File>
 +			<File
 +				RelativePath="..\FTNoIR_Tracker_Base\ftnoir_tracker_base_global.h"
 +				>
 +			</File>
 +			<File
 +				RelativePath=".\FTNoIR_Tracker_UDP.h"
 +				>
 +				<FileConfiguration
 +					Name="Release|Win32"
 +					>
 +					<Tool
 +						Name="VCCustomBuildTool"
 +						Description="Moc'ing $(InputFileName)..."
 +						CommandLine=""$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DFTNOIR_TRACKER_BASE_LIB -DQT_DLL -D_WINDLL  -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\qtmain\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtNetwork\." -I"$(QTDIR)\include\QtGui\." -I".\." ".\FTNoIR_Tracker_UDP.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"
"
 +						AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)"
 +						Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp""
 +					/>
 +				</FileConfiguration>
 +				<FileConfiguration
 +					Name="Debug|Win32"
 +					>
 +					<Tool
 +						Name="VCCustomBuildTool"
 +						Description="Moc'ing $(InputFileName)..."
 +						CommandLine=""$(QTDIR)\bin\moc.exe"  "$(InputPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DFTNOIR_TRACKER_BASE_LIB -DQT_DLL -D_WINDLL  "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtGui" "-I."
"
 +						AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)"
 +						Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp""
 +					/>
 +				</FileConfiguration>
 +			</File>
 +		</Filter>
 +		<Filter
 +			Name="Form Files"
 +			Filter="ui"
 +			UniqueIdentifier="{99349809-55BA-4b9d-BF79-8FDBB0286EB3}"
 +			>
 +			<File
 +				RelativePath=".\FTNoIR_FTNClientControls.ui"
 +				>
 +				<FileConfiguration
 +					Name="Release|Win32"
 +					>
 +					<Tool
 +						Name="VCCustomBuildTool"
 +						Description="Uic'ing $(InputFileName)..."
 +						CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
"
 +						AdditionalDependencies="$(QTDIR)\bin\uic.exe"
 +						Outputs="".\GeneratedFiles\ui_$(InputName).h""
 +					/>
 +				</FileConfiguration>
 +				<FileConfiguration
 +					Name="Debug|Win32"
 +					>
 +					<Tool
 +						Name="VCCustomBuildTool"
 +						Description="Uic'ing $(InputFileName)..."
 +						CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
"
 +						AdditionalDependencies="$(QTDIR)\bin\uic.exe"
 +						Outputs="".\GeneratedFiles\ui_$(InputName).h""
 +					/>
 +				</FileConfiguration>
 +			</File>
 +		</Filter>
 +		<Filter
 +			Name="Resource Files"
 +			Filter="qrc;*"
 +			UniqueIdentifier="{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}"
 +			ParseFiles="false"
 +			>
 +		</Filter>
 +		<Filter
 +			Name="Generated Files"
 +			Filter="moc;h;cpp"
 +			UniqueIdentifier="{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}"
 +			SourceControlFiles="false"
 +			>
 +			<File
 +				RelativePath=".\GeneratedFiles\ui_FTNoIR_FTNClientControls.h"
 +				>
 +			</File>
 +			<Filter
 +				Name="Release"
 +				Filter="cpp;moc"
 +				SourceControlFiles="false"
 +				>
 +				<File
 +					RelativePath=".\GeneratedFiles\Release\moc_FTNoIR_Tracker_UDP.cpp"
 +					>
 +					<FileConfiguration
 +						Name="Debug|Win32"
 +						ExcludedFromBuild="true"
 +						>
 +						<Tool
 +							Name="VCCLCompilerTool"
 +						/>
 +					</FileConfiguration>
 +				</File>
 +			</Filter>
 +			<Filter
 +				Name="Debug"
 +				Filter="cpp;moc"
 +				SourceControlFiles="false"
 +				>
 +				<File
 +					RelativePath=".\GeneratedFiles\Debug\moc_FTNoIR_Tracker_UDP.cpp"
 +					>
 +					<FileConfiguration
 +						Name="Release|Win32"
 +						ExcludedFromBuild="true"
 +						>
 +						<Tool
 +							Name="VCCLCompilerTool"
 +						/>
 +					</FileConfiguration>
 +				</File>
 +			</Filter>
 +		</Filter>
 +	</Files>
 +	<Globals>
 +		<Global
 +			Name="lupdateOnBuild"
 +			Value="0"
 +		/>
 +		<Global
 +			Name="MocDir"
 +			Value=".\GeneratedFiles\$(ConfigurationName)"
 +		/>
 +		<Global
 +			Name="MocOptions"
 +			Value=""
 +		/>
 +		<Global
 +			Name="QtVersion Win32"
 +			Value="qt-everywhere-opensource-src-4.6.2"
 +		/>
 +		<Global
 +			Name="RccDir"
 +			Value=".\GeneratedFiles"
 +		/>
 +		<Global
 +			Name="UicDir"
 +			Value=".\GeneratedFiles"
 +		/>
 +	</Globals>
 +</VisualStudioProject>
 diff --git a/ftnoir_tracker_udp/FTNoIR_Tracker_UDP_vc9.vcproj b/ftnoir_tracker_udp/FTNoIR_Tracker_UDP_vc9.vcproj new file mode 100644 index 00000000..fa465ec9 --- /dev/null +++ b/ftnoir_tracker_udp/FTNoIR_Tracker_UDP_vc9.vcproj @@ -0,0 +1,335 @@ +<?xml version="1.0" encoding="Windows-1252"?>
 +<VisualStudioProject
 +	ProjectType="Visual C++"
 +	Version="9,00"
 +	Name="FTNoIR_Tracker_UDP"
 +	ProjectGUID="{A42E7DE9-C1C5-48A2-8FEA-86D31CE3DA31}"
 +	RootNamespace="FTNoIR_Tracker_UDP"
 +	Keyword="Qt4VSv1.0"
 +	TargetFrameworkVersion="131072"
 +	>
 +	<Platforms>
 +		<Platform
 +			Name="Win32"
 +		/>
 +	</Platforms>
 +	<ToolFiles>
 +	</ToolFiles>
 +	<Configurations>
 +		<Configuration
 +			Name="Release|Win32"
 +			OutputDirectory="$(SolutionDir)/bin"
 +			IntermediateDirectory="$(ConfigurationName)"
 +			ConfigurationType="2"
 +			>
 +			<Tool
 +				Name="VCPreBuildEventTool"
 +			/>
 +			<Tool
 +				Name="VCCustomBuildTool"
 +			/>
 +			<Tool
 +				Name="VCXMLDataGeneratorTool"
 +			/>
 +			<Tool
 +				Name="VCWebServiceProxyGeneratorTool"
 +			/>
 +			<Tool
 +				Name="VCMIDLTool"
 +			/>
 +			<Tool
 +				Name="VCCLCompilerTool"
 +				AdditionalIncludeDirectories=".\GeneratedFiles;"$(QTDIR)\include";".\GeneratedFiles\$(ConfigurationName)";"$(QTDIR)\include\qtmain";"$(QTDIR)\include\QtCore";"$(QTDIR)\include\QtNetwork";"$(QTDIR)\include\QtGui";.\"
 +				PreprocessorDefinitions="UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_THREAD_SUPPORT;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;FTNOIR_TRACKER_BASE_LIB;QT_DLL"
 +				RuntimeLibrary="2"
 +				TreatWChar_tAsBuiltInType="false"
 +				DebugInformationFormat="0"
 +			/>
 +			<Tool
 +				Name="VCManagedResourceCompilerTool"
 +			/>
 +			<Tool
 +				Name="VCResourceCompilerTool"
 +			/>
 +			<Tool
 +				Name="VCPreLinkEventTool"
 +			/>
 +			<Tool
 +				Name="VCLinkerTool"
 +				AdditionalDependencies="qtmain.lib QtCore4.lib QtGui4.lib QtNetwork4.lib"
 +				OutputFile="$(OutDir)\$(ProjectName).dll"
 +				AdditionalLibraryDirectories="$(QTDIR)\lib"
 +				GenerateDebugInformation="false"
 +				SubSystem="2"
 +				RandomizedBaseAddress="1"
 +				DataExecutionPrevention="0"
 +			/>
 +			<Tool
 +				Name="VCALinkTool"
 +			/>
 +			<Tool
 +				Name="VCManifestTool"
 +			/>
 +			<Tool
 +				Name="VCXDCMakeTool"
 +			/>
 +			<Tool
 +				Name="VCBscMakeTool"
 +			/>
 +			<Tool
 +				Name="VCFxCopTool"
 +			/>
 +			<Tool
 +				Name="VCAppVerifierTool"
 +			/>
 +			<Tool
 +				Name="VCPostBuildEventTool"
 +			/>
 +		</Configuration>
 +		<Configuration
 +			Name="Debug|Win32"
 +			OutputDirectory="$(SolutionDir)/bin_dbg"
 +			IntermediateDirectory="$(ConfigurationName)"
 +			ConfigurationType="2"
 +			>
 +			<Tool
 +				Name="VCPreBuildEventTool"
 +			/>
 +			<Tool
 +				Name="VCCustomBuildTool"
 +			/>
 +			<Tool
 +				Name="VCXMLDataGeneratorTool"
 +			/>
 +			<Tool
 +				Name="VCWebServiceProxyGeneratorTool"
 +			/>
 +			<Tool
 +				Name="VCMIDLTool"
 +			/>
 +			<Tool
 +				Name="VCCLCompilerTool"
 +				Optimization="0"
 +				AdditionalIncludeDirectories=".\GeneratedFiles;"$(QTDIR)\include";".\GeneratedFiles\$(ConfigurationName)";"$(QTDIR)\include\qtmain";"$(QTDIR)\include\QtCore";"$(QTDIR)\include\QtNetwork";"$(QTDIR)\include\QtGui";.\"
 +				PreprocessorDefinitions="UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_THREAD_SUPPORT;QT_CORE_LIB;FTNOIR_TRACKER_BASE_LIB;QT_DLL"
 +				RuntimeLibrary="3"
 +				TreatWChar_tAsBuiltInType="false"
 +				DebugInformationFormat="3"
 +			/>
 +			<Tool
 +				Name="VCManagedResourceCompilerTool"
 +			/>
 +			<Tool
 +				Name="VCResourceCompilerTool"
 +			/>
 +			<Tool
 +				Name="VCPreLinkEventTool"
 +			/>
 +			<Tool
 +				Name="VCLinkerTool"
 +				AdditionalDependencies="qtmaind.lib QtCored4.lib QtGuid4.lib QtNetworkd4.lib"
 +				OutputFile="$(OutDir)\$(ProjectName).dll"
 +				AdditionalLibraryDirectories="$(QTDIR)\lib"
 +				GenerateDebugInformation="true"
 +				SubSystem="2"
 +				RandomizedBaseAddress="1"
 +				DataExecutionPrevention="0"
 +			/>
 +			<Tool
 +				Name="VCALinkTool"
 +			/>
 +			<Tool
 +				Name="VCManifestTool"
 +			/>
 +			<Tool
 +				Name="VCXDCMakeTool"
 +			/>
 +			<Tool
 +				Name="VCBscMakeTool"
 +			/>
 +			<Tool
 +				Name="VCFxCopTool"
 +			/>
 +			<Tool
 +				Name="VCAppVerifierTool"
 +			/>
 +			<Tool
 +				Name="VCPostBuildEventTool"
 +			/>
 +		</Configuration>
 +	</Configurations>
 +	<References>
 +	</References>
 +	<Files>
 +		<Filter
 +			Name="Source Files"
 +			Filter="cpp;cxx;c;def"
 +			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
 +			>
 +			<File
 +				RelativePath=".\ftnoir_tracker_udp.cpp"
 +				>
 +			</File>
 +			<File
 +				RelativePath=".\ftnoir_tracker_udp_dialog.cpp"
 +				>
 +			</File>
 +			<File
 +				RelativePath=".\ftnoir_tracker_udp_dll.cpp"
 +				>
 +			</File>
 +		</Filter>
 +		<Filter
 +			Name="Header Files"
 +			Filter="h"
 +			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
 +			>
 +			<File
 +				RelativePath="..\FTNoIR_Tracker_Base\ftnoir_tracker_base.h"
 +				>
 +			</File>
 +			<File
 +				RelativePath="..\FTNoIR_Tracker_Base\ftnoir_tracker_base_global.h"
 +				>
 +			</File>
 +			<File
 +				RelativePath=".\FTNoIR_Tracker_UDP.h"
 +				>
 +				<FileConfiguration
 +					Name="Release|Win32"
 +					>
 +					<Tool
 +						Name="VCCustomBuildTool"
 +						Description="Moc'ing $(InputFileName)..."
 +						CommandLine=""$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DFTNOIR_TRACKER_BASE_LIB -DQT_DLL -D_WINDLL  -I".\GeneratedFiles\." -I"$(QTDIR)\include\." -I".\GeneratedFiles\$(ConfigurationName)\." -I"$(QTDIR)\include\qtmain\." -I"$(QTDIR)\include\QtCore\." -I"$(QTDIR)\include\QtNetwork\." -I"$(QTDIR)\include\QtGui\." -I".\." ".\FTNoIR_Tracker_UDP.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"
"
 +						AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)"
 +						Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp""
 +					/>
 +				</FileConfiguration>
 +				<FileConfiguration
 +					Name="Debug|Win32"
 +					>
 +					<Tool
 +						Name="VCCustomBuildTool"
 +						Description="Moc'ing $(InputFileName)..."
 +						CommandLine=""$(QTDIR)\bin\moc.exe"  "$(InputPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp"  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DFTNOIR_TRACKER_BASE_LIB -DQT_DLL -D_WINDLL  "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtGui" "-I."
"
 +						AdditionalDependencies=""$(QTDIR)\bin\moc.exe";$(InputPath)"
 +						Outputs="".\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp""
 +					/>
 +				</FileConfiguration>
 +			</File>
 +		</Filter>
 +		<Filter
 +			Name="Form Files"
 +			Filter="ui"
 +			UniqueIdentifier="{99349809-55BA-4b9d-BF79-8FDBB0286EB3}"
 +			>
 +			<File
 +				RelativePath=".\FTNoIR_FTNClientControls.ui"
 +				>
 +				<FileConfiguration
 +					Name="Release|Win32"
 +					>
 +					<Tool
 +						Name="VCCustomBuildTool"
 +						Description="Uic'ing $(InputFileName)..."
 +						CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
"
 +						AdditionalDependencies="$(QTDIR)\bin\uic.exe"
 +						Outputs="".\GeneratedFiles\ui_$(InputName).h""
 +					/>
 +				</FileConfiguration>
 +				<FileConfiguration
 +					Name="Debug|Win32"
 +					>
 +					<Tool
 +						Name="VCCustomBuildTool"
 +						Description="Uic'ing $(InputFileName)..."
 +						CommandLine=""$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath)"
"
 +						AdditionalDependencies="$(QTDIR)\bin\uic.exe"
 +						Outputs="".\GeneratedFiles\ui_$(InputName).h""
 +					/>
 +				</FileConfiguration>
 +			</File>
 +		</Filter>
 +		<Filter
 +			Name="Resource Files"
 +			Filter="qrc;*"
 +			UniqueIdentifier="{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}"
 +			ParseFiles="false"
 +			>
 +		</Filter>
 +		<Filter
 +			Name="Generated Files"
 +			Filter="moc;h;cpp"
 +			UniqueIdentifier="{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}"
 +			SourceControlFiles="false"
 +			>
 +			<File
 +				RelativePath=".\GeneratedFiles\ui_FTNoIR_FTNClientControls.h"
 +				>
 +			</File>
 +			<Filter
 +				Name="Release"
 +				Filter="cpp;moc"
 +				SourceControlFiles="false"
 +				>
 +				<File
 +					RelativePath=".\GeneratedFiles\Release\moc_FTNoIR_Tracker_UDP.cpp"
 +					>
 +					<FileConfiguration
 +						Name="Debug|Win32"
 +						ExcludedFromBuild="true"
 +						>
 +						<Tool
 +							Name="VCCLCompilerTool"
 +						/>
 +					</FileConfiguration>
 +				</File>
 +			</Filter>
 +			<Filter
 +				Name="Debug"
 +				Filter="cpp;moc"
 +				SourceControlFiles="false"
 +				>
 +				<File
 +					RelativePath=".\GeneratedFiles\Debug\moc_FTNoIR_Tracker_UDP.cpp"
 +					>
 +					<FileConfiguration
 +						Name="Release|Win32"
 +						ExcludedFromBuild="true"
 +						>
 +						<Tool
 +							Name="VCCLCompilerTool"
 +						/>
 +					</FileConfiguration>
 +				</File>
 +			</Filter>
 +		</Filter>
 +	</Files>
 +	<Globals>
 +		<Global
 +			Name="lupdateOnBuild"
 +			Value="0"
 +		/>
 +		<Global
 +			Name="MocDir"
 +			Value=".\GeneratedFiles\$(ConfigurationName)"
 +		/>
 +		<Global
 +			Name="MocOptions"
 +			Value=""
 +		/>
 +		<Global
 +			Name="QtVersion Win32"
 +			Value="$(DefaultQtVersion)"
 +		/>
 +		<Global
 +			Name="RccDir"
 +			Value=".\GeneratedFiles"
 +		/>
 +		<Global
 +			Name="UicDir"
 +			Value=".\GeneratedFiles"
 +		/>
 +	</Globals>
 +</VisualStudioProject>
 diff --git a/ftnoir_tracker_udp/ftnoir_tracker_udp.cpp b/ftnoir_tracker_udp/ftnoir_tracker_udp.cpp new file mode 100644 index 00000000..102c85bd --- /dev/null +++ b/ftnoir_tracker_udp/ftnoir_tracker_udp.cpp @@ -0,0 +1,217 @@ +/********************************************************************************
 +* FaceTrackNoIR		This program is a private project of some enthusiastic		*
 +*					gamers from Holland, who don't like to pay much for			*
 +*					head-tracking.												*
 +*																				*
 +* Copyright (C) 2012	Wim Vriend (Developing)									*
 +*						Ron Hendriks (Researching and Testing)					*
 +*																				*
 +* Homepage:			http://facetracknoir.sourceforge.net/home/default.htm		*
 +*																				*
 +* This program is free software; you can redistribute it and/or modify it		*
 +* under the terms of the GNU General Public License as published by the			*
 +* Free Software Foundation; either version 3 of the License, or (at your		*
 +* option) any later version.													*
 +*																				*
 +* This program is distributed in the hope that it will be useful, but			*
 +* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY	*
 +* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for	*
 +* more details.																	*
 +*																				*
 +* You should have received a copy of the GNU General Public License along		*
 +* with this program; if not, see <http://www.gnu.org/licenses/>.				*
 +*																				*
 +********************************************************************************/
 +#include "ftnoir_tracker_udp.h"
 +
 +FTNoIR_Tracker::FTNoIR_Tracker()
 +{
 +	inSocket = 0;
 +	outSocket = 0;
 +
 +	// Create events
 +	m_StopThread = CreateEvent(0, TRUE, FALSE, 0);
 +	m_WaitThread = CreateEvent(0, TRUE, FALSE, 0);
 +
 +	bEnableRoll = true;
 +	bEnablePitch = true;
 +	bEnableYaw = true;
 +	bEnableX = true;
 +	bEnableY = true;
 +	bEnableZ = true;
 +	portAddress = 5551;
 +
 +	newHeadPose.x = 0.0f;
 +	newHeadPose.y = 0.0f;
 +	newHeadPose.z = 0.0f;
 +	newHeadPose.yaw   = 0.0f;
 +	newHeadPose.pitch = 0.0f;
 +	newHeadPose.roll  = 0.0f;
 +}
 +
 +FTNoIR_Tracker::~FTNoIR_Tracker()
 +{
 +	// Trigger thread to stop
 +	::SetEvent(m_StopThread);
 +
 +	// Wait until thread finished
 +	if (isRunning()) {
 +		::WaitForSingleObject(m_WaitThread, INFINITE);
 +	}
 +
 +	// Close handles
 +	::CloseHandle(m_StopThread);
 +	::CloseHandle(m_WaitThread);
 +
 +	if (inSocket) {
 +		inSocket->close();
 +		delete inSocket;
 +	}
 +
 +	if (outSocket) {
 +		outSocket->close();
 +		delete outSocket;
 +	}
 +}
 +
 +/** QThread run @override **/
 +void FTNoIR_Tracker::run() {
 +
 +int no_bytes;
 +QHostAddress sender;
 +quint16 senderPort;
 +
 +	//
 +	// Read the data that was received.
 +	//
 +	forever {
 +
 +	    // Check event for stop thread
 +		if(::WaitForSingleObject(m_StopThread, 0) == WAIT_OBJECT_0)
 +		{
 +			// Set event
 +			::SetEvent(m_WaitThread);
 +			qDebug() << "FTNoIR_Tracker::run() terminated run()";
 +			return;
 +		}
 +
 +		if (inSocket != 0) {
 +			while (inSocket->hasPendingDatagrams()) {
 +
 +				QByteArray datagram;
 +				datagram.resize(inSocket->pendingDatagramSize());
 +
 +				inSocket->readDatagram( (char * ) &newHeadPose, sizeof(newHeadPose), &sender, &senderPort);
 +			}
 +		}
 +		else {
 +			qDebug() << "FTNoIR_Tracker::run() insocket not ready: exit run()";
 +			return;
 +		}
 +
 +		//for lower cpu load 
 +		usleep(10000);
 +//		yieldCurrentThread(); 
 +	}
 +}
 +
 +void FTNoIR_Tracker::Initialize( QFrame *videoframe )
 +{
 +	qDebug() << "FTNoIR_Tracker::Initialize says: Starting ";
 +	loadSettings();
 +
 +	//
 +	// Create UDP-sockets if they don't exist already.
 +	// They must be created here, because they must be in the new thread (FTNoIR_Tracker::run())
 +	//
 +	if (inSocket == 0) {
 +		qDebug() << "FTNoIR_Tracker::Initialize() creating insocket";
 +		inSocket = new QUdpSocket();
 +		// Connect the inSocket to the port, to receive messages
 +		
 +		if (!inSocket->bind(QHostAddress::Any, (int) portAddress, QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint)) {
 +			QMessageBox::warning(0,"FaceTrackNoIR Error", "Unable to bind UDP-port",QMessageBox::Ok,QMessageBox::NoButton);
 +			delete inSocket;
 +			inSocket = 0;
 +		}
 +	}
 +
 +	return;
 +}
 +
 +void FTNoIR_Tracker::StartTracker( HWND parent_window )
 +{
 +	start( QThread::TimeCriticalPriority );
 +	return;
 +}
 +
 +void FTNoIR_Tracker::StopTracker( bool exit )
 +{
 +	//
 +	// OK, the thread is not stopped, doing this. That might be dangerous anyway...
 +	//
 +	if (exit || !exit) return;
 +	return;
 +}
 +
 +bool FTNoIR_Tracker::GiveHeadPoseData(THeadPoseData *data)
 +{
 +	if (bEnableX) {
 +		data->x = newHeadPose.x;
 +	}
 +	if (bEnableX) {
 +		data->y = newHeadPose.y;
 +	}
 +	if (bEnableX) {
 +		data->z = newHeadPose.z;
 +	}
 +	if (bEnableX) {
 +		data->yaw = newHeadPose.yaw;
 +	}
 +	if (bEnableX) {
 +		data->pitch = newHeadPose.pitch;
 +	}
 +	if (bEnableX) {
 +		data->roll = newHeadPose.roll;
 +	}
 +	return true;
 +}
 +
 +//
 +// Load the current Settings from the currently 'active' INI-file.
 +//
 +void FTNoIR_Tracker::loadSettings() {
 +
 +	qDebug() << "FTNoIR_Tracker::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() << "FTNoIR_Tracker::loadSettings says: iniFile = " << currentFile;
 +
 +	iniFile.beginGroup ( "FTNClient" );
 +	bEnableRoll = iniFile.value ( "EnableRoll", 1 ).toBool();
 +	bEnablePitch = iniFile.value ( "EnablePitch", 1 ).toBool();
 +	bEnableYaw = iniFile.value ( "EnableYaw", 1 ).toBool();
 +	bEnableX = iniFile.value ( "EnableX", 1 ).toBool();
 +	bEnableY = iniFile.value ( "EnableY", 1 ).toBool();
 +	bEnableZ = iniFile.value ( "EnableZ", 1 ).toBool();
 +	portAddress = (float) iniFile.value ( "PortNumber", 5550 ).toInt();
 +	iniFile.endGroup ();
 +}
 +
 +
 +////////////////////////////////////////////////////////////////////////////////
 +// Factory function that creates instances if the Tracker object.
 +
 +// Export both decorated and undecorated names.
 +//   GetTracker     - Undecorated name, which can be easily used with GetProcAddress
 +//                Win32 API function.
 +//   _GetTracker@0  - Common name decoration for __stdcall functions in C language.
 +#pragma comment(linker, "/export:GetTracker=_GetTracker@0")
 +
 +FTNOIR_TRACKER_BASE_EXPORT ITrackerPtr __stdcall GetTracker()
 +{
 +	return new FTNoIR_Tracker;
 +}
 diff --git a/ftnoir_tracker_udp/ftnoir_tracker_udp_dialog.cpp b/ftnoir_tracker_udp/ftnoir_tracker_udp_dialog.cpp new file mode 100644 index 00000000..b489822a --- /dev/null +++ b/ftnoir_tracker_udp/ftnoir_tracker_udp_dialog.cpp @@ -0,0 +1,181 @@ +/********************************************************************************
 +* FaceTrackNoIR		This program is a private project of some enthusiastic		*
 +*					gamers from Holland, who don't like to pay much for			*
 +*					head-tracking.												*
 +*																				*
 +* Copyright (C) 2012	Wim Vriend (Developing)									*
 +*						Ron Hendriks (Researching and Testing)					*
 +*																				*
 +* Homepage:			http://facetracknoir.sourceforge.net/home/default.htm		*
 +*																				*
 +* This program is free software; you can redistribute it and/or modify it		*
 +* under the terms of the GNU General Public License as published by the			*
 +* Free Software Foundation; either version 3 of the License, or (at your		*
 +* option) any later version.													*
 +*																				*
 +* This program is distributed in the hope that it will be useful, but			*
 +* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY	*
 +* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for	*
 +* more details.																	*
 +*																				*
 +* You should have received a copy of the GNU General Public License along		*
 +* with this program; if not, see <http://www.gnu.org/licenses/>.				*
 +*																				*
 +********************************************************************************/
 +#include "ftnoir_tracker_udp.h"
 +
 +//*******************************************************************************************************
 +// FaceTrackNoIR Client Settings-dialog.
 +//*******************************************************************************************************
 +
 +//
 +// Constructor for server-settings-dialog
 +//
 +TrackerControls::TrackerControls() :
 +QWidget()
 +{
 +	ui.setupUi( this );
 +
 +	// Connect Qt signals to member-functions
 +	connect(ui.btnOK, SIGNAL(clicked()), this, SLOT(doOK()));
 +	connect(ui.btnCancel, SIGNAL(clicked()), this, SLOT(doCancel()));
 +	connect(ui.spinPortNumber, SIGNAL(valueChanged(int)), this, SLOT(settingChanged()));
 +
 +	connect(ui.chkEnableRoll, SIGNAL(stateChanged(int)), this, SLOT(settingChanged(int)));
 +	connect(ui.chkEnablePitch, SIGNAL(stateChanged(int)), this, SLOT(settingChanged(int)));
 +	connect(ui.chkEnableYaw, SIGNAL(stateChanged(int)), this, SLOT(settingChanged(int)));
 +	connect(ui.chkEnableX, SIGNAL(stateChanged(int)), this, SLOT(settingChanged(int)));
 +	connect(ui.chkEnableY, SIGNAL(stateChanged(int)), this, SLOT(settingChanged(int)));
 +	connect(ui.chkEnableZ, SIGNAL(stateChanged(int)), this, SLOT(settingChanged(int)));
 +
 +	// Load the settings from the current .INI-file
 +	loadSettings();
 +}
 +
 +//
 +// Destructor for server-dialog
 +//
 +TrackerControls::~TrackerControls() {
 +	qDebug() << "~TrackerControls() says: started";
 +}
 +
 +//
 +// Initialize tracker-client-dialog
 +//
 +void TrackerControls::Initialize(QWidget *parent) {
 +
 +	QPoint offsetpos(100, 100);
 +	if (parent) {
 +		this->move(parent->pos() + offsetpos);
 +	}
 +	show();
 +}
 +
 +//
 +// OK clicked on server-dialog
 +//
 +void TrackerControls::doOK() {
 +	save();
 +	this->close();
 +}
 +
 +// override show event
 +void TrackerControls::showEvent ( QShowEvent * event ) {
 +	loadSettings();
 +}
 +
 +//
 +// Cancel clicked on server-dialog
 +//
 +void TrackerControls::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 TrackerControls::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 ( "FTNClient" );
 +	ui.chkEnableRoll->setChecked(iniFile.value ( "EnableRoll", 1 ).toBool());
 +	ui.chkEnablePitch->setChecked(iniFile.value ( "EnablePitch", 1 ).toBool());
 +	ui.chkEnableYaw->setChecked(iniFile.value ( "EnableYaw", 1 ).toBool());
 +	ui.chkEnableX->setChecked(iniFile.value ( "EnableX", 1 ).toBool());
 +	ui.chkEnableY->setChecked(iniFile.value ( "EnableY", 1 ).toBool());
 +	ui.chkEnableZ->setChecked(iniFile.value ( "EnableZ", 1 ).toBool());
 +
 +	ui.spinPortNumber->setValue( iniFile.value ( "PortNumber", 5550 ).toInt() );
 +	iniFile.endGroup ();
 +
 +	settingsDirty = false;
 +}
 +
 +//
 +// Save the current Settings to the currently 'active' INI-file.
 +//
 +void TrackerControls::save() {
 +	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 ( "FTNClient" );
 +	iniFile.setValue ( "EnableRoll", ui.chkEnableRoll->isChecked() );
 +	iniFile.setValue ( "EnablePitch", ui.chkEnablePitch->isChecked() );
 +	iniFile.setValue ( "EnableYaw", ui.chkEnableYaw->isChecked() );
 +	iniFile.setValue ( "EnableX", ui.chkEnableX->isChecked() );
 +	iniFile.setValue ( "EnableY", ui.chkEnableY->isChecked() );
 +	iniFile.setValue ( "EnableZ", ui.chkEnableZ->isChecked() );
 +	iniFile.setValue ( "PortNumber", ui.spinPortNumber->value() );
 +	iniFile.endGroup ();
 +
 +	settingsDirty = false;
 +}
 +////////////////////////////////////////////////////////////////////////////////
 +// Factory function that creates instances if the Tracker-settings dialog object.
 +
 +// Export both decorated and undecorated names.
 +//   GetTrackerDialog     - Undecorated name, which can be easily used with GetProcAddress
 +//                          Win32 API function.
 +//   _GetTrackerDialog@0  - Common name decoration for __stdcall functions in C language.
 +#pragma comment(linker, "/export:GetTrackerDialog=_GetTrackerDialog@0")
 +
 +FTNOIR_TRACKER_BASE_EXPORT ITrackerDialogPtr __stdcall GetTrackerDialog( )
 +{
 +	return new TrackerControls;
 +}
 diff --git a/ftnoir_tracker_udp/ftnoir_tracker_udp_dll.cpp b/ftnoir_tracker_udp/ftnoir_tracker_udp_dll.cpp new file mode 100644 index 00000000..a086a888 --- /dev/null +++ b/ftnoir_tracker_udp/ftnoir_tracker_udp_dll.cpp @@ -0,0 +1,85 @@ +/********************************************************************************
 +* FaceTrackNoIR		This program is a private project of some enthusiastic		*
 +*					gamers from Holland, who don't like to pay much for			*
 +*					head-tracking.												*
 +*																				*
 +* Copyright (C) 2012	Wim Vriend (Developing)									*
 +*						Ron Hendriks (Researching and Testing)					*
 +*																				*
 +* Homepage																		*
 +*																				*
 +* 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):
 +		20120830 - WVR: The Dialog class was used to get general info on the DLL. This
 +						had a big disadvantage: the complete dialog was loaded, just to get
 +						some data and then it was deleted again (without ever showing the dialog).
 +						The TrackerDll class solves this.
 +						The functions to get the name(s) and icon were removed from the two other classes.
 +*/
 +#include "ftnoir_tracker_udp.h"
 +#include <QDebug>
 +
 +FTNoIR_TrackerDll::FTNoIR_TrackerDll() {
 +	//populate the description strings
 +	trackerFullName = "FaceTrackNoIR UDP";
 +	trackerShortName = "UDP";
 +	trackerDescription = "FaceTrackNoIR UDP";
 +}
 +
 +FTNoIR_TrackerDll::~FTNoIR_TrackerDll()
 +{
 +
 +}
 +
 +void FTNoIR_TrackerDll::Initialize()
 +{
 +	return;
 +}
 +
 +void FTNoIR_TrackerDll::getFullName(QString *strToBeFilled)
 +{
 +	*strToBeFilled = trackerFullName;
 +};
 +
 +void FTNoIR_TrackerDll::getShortName(QString *strToBeFilled)
 +{
 +	*strToBeFilled = trackerShortName;
 +};
 +
 +void FTNoIR_TrackerDll::getDescription(QString *strToBeFilled)
 +{
 +	*strToBeFilled = trackerDescription;
 +};
 +
 +void FTNoIR_TrackerDll::getIcon(QIcon *icon)
 +{
 +	*icon = QIcon(":/images/FaceTrackNoIR.ico");
 +};
 +
 +////////////////////////////////////////////////////////////////////////////////
 +// Factory function that creates instances if the Tracker object.
 +
 +// Export both decorated and undecorated names.
 +//   GetTrackerDll     - Undecorated name, which can be easily used with GetProcAddress
 +//						Win32 API function.
 +//   _GetTrackerDll@0  - Common name decoration for __stdcall functions in C language.
 +#pragma comment(linker, "/export:GetTrackerDll=_GetTrackerDll@0")
 +
 +FTNOIR_TRACKER_BASE_EXPORT ITrackerDllPtr __stdcall GetTrackerDll()
 +{
 +	return new FTNoIR_TrackerDll;
 +}
  | 
