From 4f05cb2af239ca8471b77c9f1d1c32e8c4cd3abc Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Fri, 22 Mar 2013 21:48:28 +0100 Subject: Remove .bat files, actually finish rename this time --- facetracknoir/facetracknoir.h | 249 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 249 insertions(+) create mode 100644 facetracknoir/facetracknoir.h (limited to 'facetracknoir/facetracknoir.h') diff --git a/facetracknoir/facetracknoir.h b/facetracknoir/facetracknoir.h new file mode 100644 index 00000000..756b5867 --- /dev/null +++ b/facetracknoir/facetracknoir.h @@ -0,0 +1,249 @@ +/******************************************************************************** +* FaceTrackNoIR This program is a private project of the some enthusiastic * +* gamers from Holland, who don't like to pay much for * +* head-tracking. * +* * +* Copyright (C) 2010 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 . * +*********************************************************************************/ + +#ifndef FaceTrackNoIR_H +#define FaceTrackNoIR_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../FTNoIR_PoseWidget/glwidget.h" + +#include "ui_FaceTrackNoIR.h" +#include "ui_FTNoIR_KeyboardShortcuts.h" +#include "ui_FTNoIR_Preferences.h" +#include "ui_FTNoIR_Curves.h" + +#include "..\ftnoir_protocol_base\FTNoIR_Protocol_base.h" +#include "..\ftnoir_tracker_base\FTNoIR_Tracker_base.h" +#include "..\ftnoir_filter_base\FTNoIR_Filter_base.h" + +typedef ITrackerDialogPtr (WINAPI *importGetTrackerDialog)(void); +typedef ITrackerDllPtr (WINAPI *importGetTrackerDll)(void); +typedef IProtocolDialogPtr (WINAPI *importGetProtocolDialog)(void); +typedef IProtocolDllPtr (WINAPI *importGetProtocolDll)(void); +typedef IFilterDialogPtr (WINAPI *importGetFilterDialog)(void); +typedef IFilterDllPtr (WINAPI *importGetFilterDll)(void); + +#include + +class Tracker; // pre-define class to avoid circular includes + +class FaceTrackNoIR : public QMainWindow +{ + Q_OBJECT + +public: + FaceTrackNoIR(QWidget *parent = 0, Qt::WFlags flags = 0); + ~FaceTrackNoIR(); + + void getGameProgramName(); // Get the ProgramName from the game and display it. + void updateSettings(); // Update the settings (let Tracker read INI-file). + + QFrame *getVideoWidget(); // Get a pointer to the video-widget, to use in the DLL + QString getCurrentProtocolName(); // Get the name of the selected protocol + QString getCurrentFilterName(); // Get the name of the selected filter + QString getCurrentTrackerName(); // Get the name of the selected face-tracker + QString getSecondTrackerName(); // Get the name of the second face-tracker ("None" if no selection) + +private: + Ui::FaceTrackNoIRClass ui; + Tracker *tracker; + QTimer *timMinimizeFTN; // Timer to Auto-minimize + QTimer *timUpdateHeadPose; // Timer to display headpose + QStringList iniFileList; // List of INI-files, that are present in the Settings folder + QStringList protocolFileList; // List of Protocol-DLL-files, that are present in the program-folder + QStringList filterFileList; // List of Filter-DLL-files, that are present in the program-folder + QStringList trackerFileList; // List of Tracker-DLL-files, that are present in the program-folder + + ITrackerDialogPtr pTrackerDialog; // Pointer to Tracker dialog instance (in DLL) + ITrackerDialogPtr pSecondTrackerDialog; // Pointer to the second Tracker dialog instance (in DLL) + IProtocolDialogPtr pProtocolDialog; // Pointer to Protocol dialog instance (in DLL) + IFilterDialogPtr pFilterDialog; // Pointer to Filter dialog instance (in DLL) + + /** Widget variables **/ + QVBoxLayout *l; + QWidget *_preferences; + QWidget *_keyboard_shortcuts; + QWidget *_curve_config; + GLWidget *_pose_display; + + /** QT objects **/ + QDialog aboutDialog; + QDesktopWidget desktop; + + QAction *minimizeAction; + QAction *restoreAction; + QAction *quitAction; + + QSystemTrayIcon *trayIcon; + QMenu *trayIconMenu; + + void createIconGroupBox(); +// void createMessageGroupBox(); + void createActions(); + void createTrayIcon(); + + /** helper **/ + bool cameraDetected; + bool settingsDirty; + + void GetCameraNameDX(); + void loadSettings(); + void setupFaceTrackNoIR(); + + private slots: + //file menu + void open(); + void save(); + void saveAs(); + void exit(); + + //about menu + void openurl_support(); + void openurl_donation(); + void about(); + +// void setIcon(int index); + void iconActivated(QSystemTrayIcon::ActivationReason reason); + void profileSelected(int index); + void protocolSelected(int index); + void filterSelected(int index); + void trackingSourceSelected(int index); + + void showVideoWidget(); + void showHeadPoseWidget(); + void showTrackerSettings(); + void showSecondTrackerSettings(); + + void showServerControls(); + void showFilterControls(); + void showPreferences(); + void showKeyboardShortcuts(); + void showCurveConfiguration(); + + void setInvertYaw( int invert ); + void setInvertPitch( int invert ); + void setInvertRoll( int invert ); + void setInvertX( int invert ); + void setInvertY( int invert ); + void setInvertZ( int invert ); + + void showHeadPose(); + + //smoothing slider + void setSmoothing( int smooth ); + + void startTracker(); + void stopTracker(); +}; + +// Widget that has controls for FaceTrackNoIR Preferences. +class PreferencesDialog: public QWidget, public Ui::UICPreferencesDialog +{ + Q_OBJECT +public: + + explicit PreferencesDialog( FaceTrackNoIR *ftnoir, QWidget *parent=0, Qt::WindowFlags f=0 ); + virtual ~PreferencesDialog(); + void showEvent ( QShowEvent * event ); + +private: + Ui::UICPreferencesDialog ui; + void loadSettings(); + void save(); + + /** helper **/ + bool settingsDirty; + FaceTrackNoIR *mainApp; + +private slots: + void doOK(); + void doCancel(); + void keyChanged( int index ) { settingsDirty = true; }; +}; + +// Widget that has controls for Keyboard shortcuts. +class KeyboardShortcutDialog: public QWidget, public Ui::UICKeyboardShortcutDialog +{ + Q_OBJECT +public: + + explicit KeyboardShortcutDialog( FaceTrackNoIR *ftnoir, QWidget *parent=0, Qt::WindowFlags f=0 ); + virtual ~KeyboardShortcutDialog(); + void showEvent ( QShowEvent * event ); + +private: + Ui::UICKeyboardShortcutDialog ui; + void loadSettings(); + void save(); + + /** helper **/ + bool settingsDirty; + FaceTrackNoIR *mainApp; + QList stringList; // List of strings, that describe the keyboard-keys + QList keyList; // List of keys, with the values of the keyboard-keys + QList stringListMouse; // List of strings, that describe the mouse-keys + +private slots: + void doOK(); + void doCancel(); + void keyChanged( int index ) { settingsDirty = true; }; + void keyChanged( bool index ) { settingsDirty = true; }; +}; + +// Widget that has controls for Keyboard shortcuts. +class CurveConfigurationDialog: public QWidget, public Ui::UICCurveConfigurationDialog +{ + Q_OBJECT +public: + + explicit CurveConfigurationDialog( FaceTrackNoIR *ftnoir, QWidget *parent=0, Qt::WindowFlags f=0 ); + virtual ~CurveConfigurationDialog(); + void showEvent ( QShowEvent * event ); + +private: + Ui::UICCurveConfigurationDialog ui; + void loadSettings(); + void save(); + + /** helper **/ + bool settingsDirty; + FaceTrackNoIR *mainApp; + +private slots: + void doOK(); + void doCancel(); + void curveChanged( bool change ) { settingsDirty = true; }; +}; + + +#endif // FaceTrackNoIR_H -- cgit v1.2.3