/******************************************************************************** * 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 #undef FTNOIR_PROTOCOL_BASE_LIB #undef FTNOIR_TRACKER_BASE_LIB #undef FTNOIR_FILTER_BASE_LIB #define FTNOIR_PROTOCOL_BASE_EXPORT Q_DECL_IMPORT #define FTNOIR_TRACKER_BASE_EXPORT Q_DECL_IMPORT #define FTNOIR_FILTER_BASE_EXPORT Q_DECL_IMPORT #include #include #include #include #include #include #include #include #include #include #include #include #if !defined(_WIN32) && !defined(__WIN32) # include #else # include #endif #include #include #include #include "ui_facetracknoir.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" #include "global-settings.h" #include "tracker.h" #include "facetracknoir/curve-config.h" class Tracker; // pre-define class to avoid circular includes class FaceTrackNoIR; class KeybindingWorker; class FaceTrackNoIR : public QMainWindow, IDynamicLibraryProvider { Q_OBJECT public: FaceTrackNoIR(QWidget *parent = 0, Qt::WFlags flags = 0); ~FaceTrackNoIR(); void updateSettings(); // Update the settings (let Tracker read INI-file). QFrame *get_video_widget(); // Get a pointer to the video-widget, to use in the DLL Tracker *tracker; void bindKeyboardShortcuts(); DynamicLibrary* current_tracker1() { return dlopen_trackers.value(ui.iconcomboTrackerSource->currentIndex(), (DynamicLibrary*) NULL); } DynamicLibrary* current_tracker2() { return dlopen_trackers.value(ui.cbxSecondTrackerSource->currentIndex() - 1, (DynamicLibrary*) NULL); } DynamicLibrary* current_protocol() { return dlopen_protocols.value(ui.iconcomboProtocol->currentIndex(), (DynamicLibrary*) NULL); } DynamicLibrary* current_filter() { return dlopen_filters.value(ui.iconcomboFilter->currentIndex(), (DynamicLibrary*) NULL); } THeadPoseDOF& axis(int idx) { return *pose.axes[idx]; } #if defined(_WIN32) || defined(__WIN32) Key keyCenter; KeybindingWorker* keybindingWorker; #else QxtGlobalShortcut* keyCenter; #endif public slots: void shortcutRecentered(); private: HeadPoseData pose; Ui::FaceTrackNoIRClass ui; QTimer timUpdateHeadPose; // Timer to display headpose QStringList iniFileList; // List of INI-files, that are present in the Settings folder ITrackerDialog* pTrackerDialog; // Pointer to Tracker dialog instance (in DLL) ITrackerDialog* pSecondTrackerDialog; // Pointer to the second Tracker dialog instance (in DLL) IProtocolDialog* pProtocolDialog; // Pointer to Protocol dialog instance (in DLL) IFilterDialog* pFilterDialog; // Pointer to Filter dialog instance (in DLL) /** Widget variables **/ QWidget *_keyboard_shortcuts; QWidget *_curve_config; void createIconGroupBox(); // void createMessageGroupBox(); /** helper **/ bool settingsDirty; void GetCameraNameDX(); void loadSettings(); void setupFaceTrackNoIR(); QList dlopen_filters; QList dlopen_trackers; QList dlopen_protocols; bool looping; private slots: //file menu void open(); void save(); void saveAs(); void exit(); // void setIcon(int index); 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 showKeyboardShortcuts(); void showCurveConfiguration(); void setInvertAxis( Axis axis, int invert ); void setInvertYaw(int invert) { setInvertAxis(Yaw, invert); } void setInvertPitch(int invert) { setInvertAxis(Pitch, invert); } void setInvertRoll(int invert) { setInvertAxis(Roll, invert); } void setInvertX(int invert) { setInvertAxis(TX, invert); } void setInvertY(int invert) { setInvertAxis(TY, invert); } void setInvertZ(int invert) { setInvertAxis(TZ, invert); } void showHeadPose(); void startTracker(); void stopTracker(); }; #endif // FaceTrackNoIR_H