summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorWim Vriend <facetracknoir@gmail.com>2012-09-05 17:29:23 +0000
committerWim Vriend <facetracknoir@gmail.com>2012-09-05 17:29:23 +0000
commit3f082dbee43e6dbdb5d88fceec49298d0d2bce18 (patch)
tree2e8efa00c55edb42d637e3e55542b0df58baa79d
parent30a7bbb84e563d07e1b4ef598f5b57041d5e4a8b (diff)
Put extra class in the DLL, which only return the name, description(s) and Icon. Loading the Settings dialog for these resulted in loading the entire Settings-window (without showing it). Unwanted behavior...
git-svn-id: svn+ssh://svn.code.sf.net/p/facetracknoir/code@125 19e81ba0-9b1a-49c3-bd6c-561e1906d5fb
-rw-r--r--FTNoIR_Filter_Accela/FTNoIR_FilterControls.ui27
-rw-r--r--FTNoIR_Filter_Accela/FTNoIR_Filter_accela.h43
-rw-r--r--FTNoIR_Filter_Accela/FTNoIR_Filter_accela.vcproj4
-rw-r--r--FTNoIR_Filter_Accela/ftnoir_filter_accela.cpp22
-rw-r--r--FTNoIR_Filter_Accela/ftnoir_filter_accela_dialog.cpp32
-rw-r--r--FTNoIR_Filter_Base/ftnoir_filter_base.h31
-rw-r--r--FTNoIR_Filter_EWMA2/FTNoIR_Filter_EWMA2.h39
-rw-r--r--FTNoIR_Filter_EWMA2/FTNoIR_Filter_EWMA2.vcproj4
-rw-r--r--FTNoIR_Filter_EWMA2/ftnoir_filter_ewma2.cpp22
-rw-r--r--FTNoIR_Filter_EWMA2/ftnoir_filter_ewma2_dialog.cpp27
10 files changed, 102 insertions, 149 deletions
diff --git a/FTNoIR_Filter_Accela/FTNoIR_FilterControls.ui b/FTNoIR_Filter_Accela/FTNoIR_FilterControls.ui
index 50599e4d2..6171defe2 100644
--- a/FTNoIR_Filter_Accela/FTNoIR_FilterControls.ui
+++ b/FTNoIR_Filter_Accela/FTNoIR_FilterControls.ui
@@ -9,7 +9,7 @@
<rect>
<x>0</x>
<y>0</y>
- <width>518</width>
+ <width>321</width>
<height>349</height>
</rect>
</property>
@@ -43,13 +43,13 @@
</property>
<property name="minimumSize">
<size>
- <width>500</width>
+ <width>300</width>
<height>300</height>
</size>
</property>
<property name="maximumSize">
<size>
- <width>500</width>
+ <width>300</width>
<height>300</height>
</size>
</property>
@@ -63,8 +63,8 @@
<widget class="QFunctionConfigurator" name="scalingConfig">
<property name="geometry">
<rect>
- <x>80</x>
- <y>30</y>
+ <x>20</x>
+ <y>20</y>
<width>215</width>
<height>220</height>
</rect>
@@ -102,10 +102,13 @@
</color>
</property>
<property name="stringInputEGU" stdset="0">
- <string>Input Yaw (degr.)</string>
+ <string>Input</string>
</property>
<property name="stringOutputEGU" stdset="0">
- <string>Output Yaw (degr.)</string>
+ <string>Output</string>
+ </property>
+ <property name="stringCaption" stdset="0">
+ <string>Translation</string>
</property>
</widget>
</widget>
@@ -116,7 +119,7 @@
<widget class="QFunctionConfigurator" name="translationScalingConfig">
<property name="geometry">
<rect>
- <x>30</x>
+ <x>20</x>
<y>20</y>
<width>215</width>
<height>220</height>
@@ -142,8 +145,8 @@
</property>
<property name="colorBezier">
<color>
- <red>255</red>
- <green>170</green>
+ <red>85</red>
+ <green>255</green>
<blue>0</blue>
</color>
</property>
@@ -155,10 +158,10 @@
</color>
</property>
<property name="stringInputEGU" stdset="0">
- <string>Input Yaw (degr.)</string>
+ <string>Input</string>
</property>
<property name="stringOutputEGU" stdset="0">
- <string>Output Yaw (degr.)</string>
+ <string>Output</string>
</property>
</widget>
</widget>
diff --git a/FTNoIR_Filter_Accela/FTNoIR_Filter_accela.h b/FTNoIR_Filter_Accela/FTNoIR_Filter_accela.h
index 4b918f5a7..fbc3804d5 100644
--- a/FTNoIR_Filter_Accela/FTNoIR_Filter_accela.h
+++ b/FTNoIR_Filter_Accela/FTNoIR_Filter_accela.h
@@ -29,8 +29,10 @@
#include "..\ftnoir_filter_base\ftnoir_filter_base.h"
#include "ui_FTNoIR_FilterControls.h"
#include <FunctionConfig.h>
-//#include <FunctionEditorFrame.h>
+//*******************************************************************************************************
+// FaceTrackNoIR Filter class.
+//*******************************************************************************************************
class FTNoIR_Filter : public IFilter
{
public:
@@ -42,10 +44,6 @@ public:
void StartFilter();
void FilterHeadPoseData(THeadPoseData *current_camera_position, THeadPoseData *target_camera_position, THeadPoseData *new_camera_position, bool newTarget);
- void getFullName(QString *strToBeFilled);
- void getShortName(QString *strToBeFilled);
- void getDescription(QString *strToBeFilled);
-
private:
void loadSettings(); // Load the settings from the INI-file
THeadPoseData newHeadPose; // Structure with new headpose
@@ -54,9 +52,6 @@ private:
double kFactor, kFactorTranslation;
double kSensitivity, kSensitivityTranslation;
- QString filterFullName; // Filters' name and description
- QString filterShortName;
- QString filterDescription;
FunctionConfig functionConfig;
FunctionConfig translationFunctionConfig;
};
@@ -77,10 +72,7 @@ public:
void Release(); // Member functions which are accessible from outside the DLL
void Initialize(QWidget *parent, IFilterPtr ptr);
- void getFullName(QString *strToBeFilled);
- void getShortName(QString *strToBeFilled);
- void getDescription(QString *strToBeFilled);
- void getIcon(QIcon *icon);
+
private:
Ui::UICFilterControls ui;
void loadSettings();
@@ -89,9 +81,6 @@ private:
/** helper **/
bool settingsDirty;
- QString filterFullName; // Filters' name and description
- QString filterShortName;
- QString filterDescription;
IFilterPtr pFilter; // If the filter was active when the dialog was opened, this will hold a pointer to the Filter instance
FunctionConfig functionConfig;
FunctionConfig translationFunctionConfig;
@@ -102,6 +91,30 @@ private slots:
void settingChanged(bool) { settingsDirty = true; };
};
+//*******************************************************************************************************
+// FaceTrackNoIR Filter DLL. Functions used to get general info on the Filter
+//*******************************************************************************************************
+class FTNoIR_FilterDll : public IFilterDll
+{
+public:
+ FTNoIR_FilterDll();
+ ~FTNoIR_FilterDll();
+
+ void Release();
+ void Initialize();
+
+ void getFullName(QString *strToBeFilled);
+ void getShortName(QString *strToBeFilled);
+ void getDescription(QString *strToBeFilled);
+ void getIcon(QIcon *icon);
+
+private:
+ QString filterFullName; // Filters' name and description
+ QString filterShortName;
+ QString filterDescription;
+};
+
+
#endif //INCLUDED_FTN_FILTER_H
//END
diff --git a/FTNoIR_Filter_Accela/FTNoIR_Filter_accela.vcproj b/FTNoIR_Filter_Accela/FTNoIR_Filter_accela.vcproj
index 74d39021b..b715adba4 100644
--- a/FTNoIR_Filter_Accela/FTNoIR_Filter_accela.vcproj
+++ b/FTNoIR_Filter_Accela/FTNoIR_Filter_accela.vcproj
@@ -175,6 +175,10 @@
RelativePath=".\ftnoir_filter_accela_dialog.cpp"
>
</File>
+ <File
+ RelativePath=".\ftnoir_filter_accela_dll.cpp"
+ >
+ </File>
</Filter>
<Filter
Name="Header Files"
diff --git a/FTNoIR_Filter_Accela/ftnoir_filter_accela.cpp b/FTNoIR_Filter_Accela/ftnoir_filter_accela.cpp
index fce05f33d..7b1b7008a 100644
--- a/FTNoIR_Filter_Accela/ftnoir_filter_accela.cpp
+++ b/FTNoIR_Filter_Accela/ftnoir_filter_accela.cpp
@@ -19,11 +19,6 @@ FTNoIR_Filter::FTNoIR_Filter() :
functionConfig("Accela-Scaling-Rotation", 4, 8),
translationFunctionConfig("Accela-Scaling-Translation", 4, 8)
{
- //populate the description strings
- filterFullName = "Accela Filter mkII";
- filterShortName = "Accela mkII";
- filterDescription = "Accela filter mkII";
-
first_run = true;
loadSettings(); // Load the Settings
}
@@ -155,23 +150,6 @@ void FTNoIR_Filter::FilterHeadPoseData(THeadPoseData *current_camera_position, T
current_camera_position->roll=output[5];
}
-void FTNoIR_Filter::getFullName(QString *strToBeFilled)
-{
- *strToBeFilled = filterFullName;
-};
-
-
-void FTNoIR_Filter::getShortName(QString *strToBeFilled)
-{
- *strToBeFilled = filterShortName;
-};
-
-
-void FTNoIR_Filter::getDescription(QString *strToBeFilled)
-{
- *strToBeFilled = filterDescription;
-};
-
////////////////////////////////////////////////////////////////////////////////
// Factory function that creates instances if the Filter object.
diff --git a/FTNoIR_Filter_Accela/ftnoir_filter_accela_dialog.cpp b/FTNoIR_Filter_Accela/ftnoir_filter_accela_dialog.cpp
index 44d0292e0..4f7a478bb 100644
--- a/FTNoIR_Filter_Accela/ftnoir_filter_accela_dialog.cpp
+++ b/FTNoIR_Filter_Accela/ftnoir_filter_accela_dialog.cpp
@@ -39,10 +39,6 @@ FilterControls::FilterControls() :
{
ui.setupUi( this );
- //populate the description strings
- filterFullName = "Accela Filter";
- filterShortName = "Accela";
- filterDescription = "Accela Filter";
// Load the settings from the current .INI-file
loadSettings();
connect(ui.btnOK, SIGNAL(clicked()), this, SLOT(doOK()));
@@ -153,8 +149,8 @@ void FilterControls::loadSettings() {
functionConfig.loadSettings(iniFile);
translationFunctionConfig.loadSettings(iniFile);
- ui.translationScalingConfig->setConfig(&translationFunctionConfig);
- ui.scalingConfig->setConfig(&functionConfig);
+ ui.translationScalingConfig->setConfig(&translationFunctionConfig, currentFile);
+ ui.scalingConfig->setConfig(&functionConfig, currentFile);
settingsDirty = false;
}
@@ -168,34 +164,14 @@ void FilterControls::save() {
QString currentFile = settings.value ( "SettingsFile", QCoreApplication::applicationDirPath() + "/Settings/default.ini" ).toString();
QSettings iniFile( currentFile, QSettings::IniFormat ); // Application settings (in INI-file)
+ qDebug() << "FTNoIR_Filter::save() says: iniFile = " << currentFile;
+
functionConfig.saveSettings(iniFile);
translationFunctionConfig.saveSettings(iniFile);
settingsDirty = false;
}
-void FilterControls::getFullName(QString *strToBeFilled)
-{
- *strToBeFilled = filterFullName;
-};
-
-
-void FilterControls::getShortName(QString *strToBeFilled)
-{
- *strToBeFilled = filterShortName;
-};
-
-
-void FilterControls::getDescription(QString *strToBeFilled)
-{
- *strToBeFilled = filterDescription;
-};
-
-void FilterControls::getIcon(QIcon *icon)
-{
- *icon = QIcon(":/images/filter-16.png");
-};
-
////////////////////////////////////////////////////////////////////////////////
// Factory function that creates instances if the Filter-settings dialog object.
diff --git a/FTNoIR_Filter_Base/ftnoir_filter_base.h b/FTNoIR_Filter_Base/ftnoir_filter_base.h
index 3d617abc4..600243fc8 100644
--- a/FTNoIR_Filter_Base/ftnoir_filter_base.h
+++ b/FTNoIR_Filter_Base/ftnoir_filter_base.h
@@ -22,10 +22,6 @@ struct IFilter
virtual void Release() = 0;
virtual void Initialize() = 0;
virtual void FilterHeadPoseData(THeadPoseData *current_camera_position, THeadPoseData *target_camera_position, THeadPoseData *new_camera_position, bool newTarget) = 0;
-
- virtual void getFullName(QString *strToBeFilled) = 0;
- virtual void getShortName(QString *strToBeFilled) = 0;
- virtual void getDescription(QString *strToBeFilled) = 0;
};
// Handle type. In C++ language the interface type is used.
@@ -58,6 +54,27 @@ struct IFilterDialog
{
virtual void Release() = 0; // Member required to enable Auto-remove
virtual void Initialize(QWidget *parent, IFilterPtr ptr) = 0;
+};
+
+// Handle type. In C++ language the interface type is used.
+typedef IFilterDialog* FILTERDIALOGHANDLE;
+
+// Factory function that creates instances of the Filter object.
+EXTERN_C
+FTNOIR_FILTER_BASE_EXPORT
+FILTERDIALOGHANDLE
+__stdcall
+GetFilterDialog(void);
+
+// COM-Like abstract interface.
+// This interface doesn't require __declspec(dllexport/dllimport) specifier.
+// Method calls are dispatched via virtual table.
+// Any C++ compiler can use it.
+// Instances are obtained via factory function.
+struct IFilterDll
+{
+ virtual void Release() = 0; // Member required to enable Auto-remove
+ virtual void Initialize() = 0;
virtual void getFullName(QString *strToBeFilled) = 0;
virtual void getShortName(QString *strToBeFilled) = 0;
@@ -66,14 +83,14 @@ struct IFilterDialog
};
// Handle type. In C++ language the interface type is used.
-typedef IFilterDialog* FILTERDIALOGHANDLE;
+typedef IFilterDll* FILTERDLLHANDLE;
// Factory function that creates instances of the Filter object.
EXTERN_C
FTNOIR_FILTER_BASE_EXPORT
-FILTERDIALOGHANDLE
+FILTERDLLHANDLE
__stdcall
-GetFilterDialog(void);
+GetFilterDll(void);
#endif // FTNOIR_FILTER_BASE_H
diff --git a/FTNoIR_Filter_EWMA2/FTNoIR_Filter_EWMA2.h b/FTNoIR_Filter_EWMA2/FTNoIR_Filter_EWMA2.h
index bd90c1f8e..f313d154c 100644
--- a/FTNoIR_Filter_EWMA2/FTNoIR_Filter_EWMA2.h
+++ b/FTNoIR_Filter_EWMA2/FTNoIR_Filter_EWMA2.h
@@ -45,10 +45,6 @@ public:
void StartFilter();
void FilterHeadPoseData(THeadPoseData *current_camera_position, THeadPoseData *target_camera_position, THeadPoseData *new_camera_position, bool newTarget);
- void getFullName(QString *strToBeFilled);
- void getShortName(QString *strToBeFilled);
- void getDescription(QString *strToBeFilled);
-
private:
void loadSettings(); // Load the settings from the INI-file
THeadPoseData newHeadPose; // Structure with new headpose
@@ -63,11 +59,6 @@ private:
float kMinSmoothing;
float kMaxSmoothing;
float kSmoothingScaleCurve;
-
- QString filterFullName; // Filters' name and description
- QString filterShortName;
- QString filterDescription;
-
};
//*******************************************************************************************************
@@ -86,10 +77,6 @@ public:
void Release(); // Member functions which are accessible from outside the DLL
void Initialize(QWidget *parent, IFilterPtr ptr);
- void getFullName(QString *strToBeFilled);
- void getShortName(QString *strToBeFilled);
- void getDescription(QString *strToBeFilled);
- void getIcon(QIcon *icon);
private:
Ui::UICFilterControls ui;
@@ -99,9 +86,6 @@ private:
/** helper **/
bool settingsDirty;
- QString filterFullName; // Filters' name and description
- QString filterShortName;
- QString filterDescription;
IFilterPtr pFilter; // If the filter was active when the dialog was opened, this will hold a pointer to the Filter instance
private slots:
@@ -111,6 +95,29 @@ private slots:
void settingChanged( int ) { settingsDirty = true; };
};
+//*******************************************************************************************************
+// FaceTrackNoIR Filter DLL. Functions used to get general info on the Filter
+//*******************************************************************************************************
+class FTNoIR_FilterDll : public IFilterDll
+{
+public:
+ FTNoIR_FilterDll();
+ ~FTNoIR_FilterDll();
+
+ void Release();
+ void Initialize();
+
+ void getFullName(QString *strToBeFilled);
+ void getShortName(QString *strToBeFilled);
+ void getDescription(QString *strToBeFilled);
+ void getIcon(QIcon *icon);
+
+private:
+ QString filterFullName; // Filters' name and description
+ QString filterShortName;
+ QString filterDescription;
+};
+
#endif //INCLUDED_FTN_FILTER_H
//END
diff --git a/FTNoIR_Filter_EWMA2/FTNoIR_Filter_EWMA2.vcproj b/FTNoIR_Filter_EWMA2/FTNoIR_Filter_EWMA2.vcproj
index 918f8b282..28cf8a82c 100644
--- a/FTNoIR_Filter_EWMA2/FTNoIR_Filter_EWMA2.vcproj
+++ b/FTNoIR_Filter_EWMA2/FTNoIR_Filter_EWMA2.vcproj
@@ -174,6 +174,10 @@
RelativePath=".\ftnoir_filter_ewma2_dialog.cpp"
>
</File>
+ <File
+ RelativePath=".\ftnoir_filter_ewma_dll.cpp"
+ >
+ </File>
</Filter>
<Filter
Name="Header Files"
diff --git a/FTNoIR_Filter_EWMA2/ftnoir_filter_ewma2.cpp b/FTNoIR_Filter_EWMA2/ftnoir_filter_ewma2.cpp
index 99a4bd983..965cfd73d 100644
--- a/FTNoIR_Filter_EWMA2/ftnoir_filter_ewma2.cpp
+++ b/FTNoIR_Filter_EWMA2/ftnoir_filter_ewma2.cpp
@@ -36,11 +36,6 @@
FTNoIR_Filter::FTNoIR_Filter()
{
- //populate the description strings
- filterFullName = "EWMA Filter Mk2";
- filterShortName = "EWMA";
- filterDescription = "Exponentially Weighted Moving Average filter with dynamic smoothing parameter";
-
first_run = true;
alpha_smoothing = 0.02f; // this is a constant for now, might be a parameter later
loadSettings(); // Load the Settings
@@ -226,23 +221,6 @@ void FTNoIR_Filter::FilterHeadPoseData(THeadPoseData *current_camera_position, T
return;
}
-void FTNoIR_Filter::getFullName(QString *strToBeFilled)
-{
- *strToBeFilled = filterFullName;
-};
-
-
-void FTNoIR_Filter::getShortName(QString *strToBeFilled)
-{
- *strToBeFilled = filterShortName;
-};
-
-
-void FTNoIR_Filter::getDescription(QString *strToBeFilled)
-{
- *strToBeFilled = filterDescription;
-};
-
////////////////////////////////////////////////////////////////////////////////
// Factory function that creates instances if the Filter object.
diff --git a/FTNoIR_Filter_EWMA2/ftnoir_filter_ewma2_dialog.cpp b/FTNoIR_Filter_EWMA2/ftnoir_filter_ewma2_dialog.cpp
index 7ffe8bb98..9653d4bc2 100644
--- a/FTNoIR_Filter_EWMA2/ftnoir_filter_ewma2_dialog.cpp
+++ b/FTNoIR_Filter_EWMA2/ftnoir_filter_ewma2_dialog.cpp
@@ -37,11 +37,6 @@ QWidget()
{
ui.setupUi( this );
- //populate the description strings
- filterFullName = "EWMA Filter Mk2";
- filterShortName = "EWMA";
- filterDescription = "Exponentially Weighted Moving Average filter with dynamic smoothing parameter";
-
QPoint offsetpos(100, 100);
//if (parent) {
// this->move(parent->pos() + offsetpos);
@@ -187,28 +182,6 @@ void FilterControls::save() {
settingsDirty = false;
}
-void FilterControls::getFullName(QString *strToBeFilled)
-{
- *strToBeFilled = filterFullName;
-};
-
-
-void FilterControls::getShortName(QString *strToBeFilled)
-{
- *strToBeFilled = filterShortName;
-};
-
-
-void FilterControls::getDescription(QString *strToBeFilled)
-{
- *strToBeFilled = filterDescription;
-};
-
-void FilterControls::getIcon(QIcon *icon)
-{
- *icon = QIcon(":/images/filter-16.png");
-};
-
////////////////////////////////////////////////////////////////////////////////
// Factory function that creates instances if the Filter-settings dialog object.