summaryrefslogtreecommitdiffhomepage
path: root/ftnoir_filter_accela
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2013-09-13 14:54:32 +0200
committerStanislaw Halik <sthalik@misaki.pl>2013-09-13 14:54:32 +0200
commit3195bebe6b59b6f9dc657584570260c28d7937ec (patch)
tree0664959f4222cbcff5def55f0a99c5999690c9c1 /ftnoir_filter_accela
parentc9bfd9b3a6fd40d8d63cb25c8d746e6a4adb532f (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.cpp17
-rw-r--r--ftnoir_filter_accela/ftnoir_filter_accela.h13
-rw-r--r--ftnoir_filter_accela/ftnoir_filter_accela_dialog.cpp27
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);
}
////////////////////////////////////////////////////////////////////////////////