diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2013-09-13 14:54:32 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2013-09-13 14:54:32 +0200 |
commit | 3195bebe6b59b6f9dc657584570260c28d7937ec (patch) | |
tree | 0664959f4222cbcff5def55f0a99c5999690c9c1 /ftnoir_filter_accela | |
parent | c9bfd9b3a6fd40d8d63cb25c8d746e6a4adb532f (diff) |
Allow for editing filter settings while the software is running
Diffstat (limited to 'ftnoir_filter_accela')
-rw-r--r-- | ftnoir_filter_accela/ftnoir_filter_accela.cpp | 17 | ||||
-rw-r--r-- | ftnoir_filter_accela/ftnoir_filter_accela.h | 13 | ||||
-rw-r--r-- | ftnoir_filter_accela/ftnoir_filter_accela_dialog.cpp | 27 |
3 files changed, 44 insertions, 13 deletions
diff --git a/ftnoir_filter_accela/ftnoir_filter_accela.cpp b/ftnoir_filter_accela/ftnoir_filter_accela.cpp index f2306204..c2cda351 100644 --- a/ftnoir_filter_accela/ftnoir_filter_accela.cpp +++ b/ftnoir_filter_accela/ftnoir_filter_accela.cpp @@ -5,11 +5,13 @@ * copyright notice and this permission notice appear in all copies.
*/
#include "ftnoir_filter_accela/ftnoir_filter_accela.h"
-#include "math.h"
+#include <cmath>
#include <QDebug>
-#include <float.h>
+#include <QMutexLocker>
#include "facetracknoir/global-settings.h"
+using namespace std;
+
FTNoIR_Filter::FTNoIR_Filter()
{
first_run = true;
@@ -34,6 +36,15 @@ void FTNoIR_Filter::loadSettings() { iniFile.endGroup ();
}
+void FTNoIR_Filter::receiveSettings(double rot, double trans, double zoom_fac)
+{
+ QMutexLocker foo(&mutex);
+
+ rotation_alpha = rot;
+ translation_alpha = trans;
+ zoom_factor = zoom_fac;
+}
+
static double parabola(const double a, const double x)
{
const double a1 = 1./a;
@@ -56,6 +67,8 @@ void FTNoIR_Filter::FilterHeadPoseData(double *current_camera_position, first_run = false;
return;
}
+
+ QMutexLocker foo(&mutex);
for (int i=0;i<6;i++)
{
diff --git a/ftnoir_filter_accela/ftnoir_filter_accela.h b/ftnoir_filter_accela/ftnoir_filter_accela.h index a0b7f3ef..0c13c0e8 100644 --- a/ftnoir_filter_accela/ftnoir_filter_accela.h +++ b/ftnoir_filter_accela/ftnoir_filter_accela.h @@ -32,6 +32,7 @@ #include "ftnoir_filter_base/ftnoir_filter_base.h"
#include "ui_ftnoir_accela_filtercontrols.h"
#include "facetracknoir/global-settings.h"
+#include <QMutex>
#define ACCELA_SMOOTHING_ROTATION 6.0
#define ACCELA_SMOOTHING_TRANSLATION 3.0
@@ -48,9 +49,10 @@ public: void Initialize() {
first_run = true;
}
-
+ void receiveSettings(double rot, double trans, double zoom_fac);
private:
- void loadSettings(); // Load the settings from the INI-file
+ QMutex mutex;
+ void loadSettings();
bool first_run;
double rotation_alpha, translation_alpha, zoom_factor;
};
@@ -64,17 +66,18 @@ class FTNOIR_FILTER_BASE_EXPORT FilterControls: public QWidget, public IFilterDi {
Q_OBJECT
public:
-
explicit FilterControls();
virtual ~FilterControls();
void showEvent ( QShowEvent * event );
- void Initialize(QWidget *parent, IFilter *ptr);
-
+ void Initialize(QWidget *parent);
+ void registerFilter(IFilter* filter);
+ void unregisterFilter();
private:
Ui::AccelaUICFilterControls ui;
void loadSettings();
void save();
bool settingsDirty;
+ FTNoIR_Filter* accela_filter;
private slots:
void doOK();
void doCancel();
diff --git a/ftnoir_filter_accela/ftnoir_filter_accela_dialog.cpp b/ftnoir_filter_accela/ftnoir_filter_accela_dialog.cpp index f0641ea6..97653f94 100644 --- a/ftnoir_filter_accela/ftnoir_filter_accela_dialog.cpp +++ b/ftnoir_filter_accela/ftnoir_filter_accela_dialog.cpp @@ -39,7 +39,7 @@ // Constructor for server-settings-dialog
//
FilterControls::FilterControls() :
- QWidget()
+ QWidget(), accela_filter(NULL)
{
ui.setupUi( this );
@@ -66,9 +66,9 @@ FilterControls::~FilterControls() { //
// Initialize tracker-client-dialog
//
-void FilterControls::Initialize(QWidget *parent, IFilter* ptr) {
+void FilterControls::Initialize(QWidget *parent) {
loadSettings();
-
+
QPoint offsetpos(100, 100);
if (parent) {
this->move(parent->pos() + offsetpos);
@@ -76,6 +76,16 @@ void FilterControls::Initialize(QWidget *parent, IFilter* ptr) { show();
}
+void FilterControls::registerFilter(IFilter* filter)
+{
+ accela_filter = (FTNoIR_Filter*) filter;
+}
+
+void FilterControls::unregisterFilter()
+{
+ accela_filter = NULL;
+}
+
//
// OK clicked on server-dialog
//
@@ -154,14 +164,19 @@ void FilterControls::save() { QSettings iniFile( currentFile, QSettings::IniFormat ); // Application settings (in INI-file)
qDebug() << "FTNoIR_Filter::save() says: iniFile = " << currentFile;
+
+ double rot, trans, zoom;
iniFile.beginGroup ( "Accela" );
- iniFile.setValue("zoom-slowness", ui.slideZoom->value());
- iniFile.setValue("rotation-alpha", ui.rotation_alpha->value());
- iniFile.setValue("translation-alpha", ui.translation_alpha->value());
+ iniFile.setValue("zoom-slowness", zoom = ui.slideZoom->value());
+ iniFile.setValue("rotation-alpha", rot = ui.rotation_alpha->value());
+ iniFile.setValue("translation-alpha", trans = ui.translation_alpha->value());
iniFile.endGroup ();
settingsDirty = false;
+
+ if (accela_filter)
+ accela_filter->receiveSettings(rot, trans, zoom);
}
////////////////////////////////////////////////////////////////////////////////
|