summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2024-02-08 16:06:47 +0100
committerStanislaw Halik <sthalik@misaki.pl>2024-02-08 19:19:06 +0100
commit9518808799cd34f3cd1497cdac5c163c1cbaf72b (patch)
treee3d58c1c63b6675daa086f7f4ed3cc36c11113ed
parent6f878a4c46a4947bb34cbdb566a9d07b676ecc48 (diff)
add post-invert, rename invert to pre-invert
Requested by: a few people
-rw-r--r--gui/options-dialog.cpp19
-rw-r--r--gui/settings-dialog.ui276
-rw-r--r--logic/pipeline.cpp8
-rw-r--r--spline/axis-opts.cpp3
-rw-r--r--spline/axis-opts.hpp2
5 files changed, 212 insertions, 96 deletions
diff --git a/gui/options-dialog.cpp b/gui/options-dialog.cpp
index 9cd416ee..76c3313a 100644
--- a/gui/options-dialog.cpp
+++ b/gui/options-dialog.cpp
@@ -103,12 +103,19 @@ options_dialog::options_dialog(std::unique_ptr<ITrackerDialog>& tracker_dialog_,
tie_setting(main.a_pitch.zero, ui.pos_ry);
tie_setting(main.a_roll.zero, ui.pos_rz);
- tie_setting(main.a_yaw.invert, ui.invert_yaw);
- tie_setting(main.a_pitch.invert, ui.invert_pitch);
- tie_setting(main.a_roll.invert, ui.invert_roll);
- tie_setting(main.a_x.invert, ui.invert_x);
- tie_setting(main.a_y.invert, ui.invert_y);
- tie_setting(main.a_z.invert, ui.invert_z);
+ tie_setting(main.a_yaw.invert_pre, ui.invert_yaw_pre);
+ tie_setting(main.a_pitch.invert_pre, ui.invert_pitch_pre);
+ tie_setting(main.a_roll.invert_pre, ui.invert_roll_pre);
+ tie_setting(main.a_x.invert_pre, ui.invert_x_pre);
+ tie_setting(main.a_y.invert_pre, ui.invert_y_pre);
+ tie_setting(main.a_z.invert_pre, ui.invert_z_pre);
+
+ tie_setting(main.a_yaw.invert_post, ui.invert_yaw_post);
+ tie_setting(main.a_pitch.invert_post, ui.invert_pitch_post);
+ tie_setting(main.a_roll.invert_post, ui.invert_roll_post);
+ tie_setting(main.a_x.invert_post, ui.invert_x_post);
+ tie_setting(main.a_y.invert_post, ui.invert_y_post);
+ tie_setting(main.a_z.invert_post, ui.invert_z_post);
tie_setting(main.a_yaw.src, ui.src_yaw);
tie_setting(main.a_pitch.src, ui.src_pitch);
diff --git a/gui/settings-dialog.ui b/gui/settings-dialog.ui
index 45f86ef4..9e2c0042 100644
--- a/gui/settings-dialog.ui
+++ b/gui/settings-dialog.ui
@@ -984,6 +984,19 @@
<property name="verticalSpacing">
<number>9</number>
</property>
+ <item row="4" column="0">
+ <widget class="QLabel" name="label_8">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
+ <horstretch>254</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Pitch</string>
+ </property>
+ </widget>
+ </item>
<item row="7" column="1">
<widget class="QComboBox" name="src_y">
<property name="sizePolicy">
@@ -1034,8 +1047,8 @@
</item>
</widget>
</item>
- <item row="6" column="0">
- <widget class="QLabel" name="label_10">
+ <item row="0" column="1">
+ <widget class="QLabel" name="label_13">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
<horstretch>254</horstretch>
@@ -1043,12 +1056,12 @@
</sizepolicy>
</property>
<property name="text">
- <string>X</string>
+ <string>Source</string>
</property>
</widget>
</item>
- <item row="5" column="0">
- <widget class="QLabel" name="label_9">
+ <item row="0" column="2">
+ <widget class="QLabel" name="label_14">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
<horstretch>254</horstretch>
@@ -1056,25 +1069,25 @@
</sizepolicy>
</property>
<property name="text">
- <string>Roll</string>
+ <string>Pre-invert</string>
</property>
</widget>
</item>
- <item row="7" column="2">
- <widget class="QCheckBox" name="invert_y">
+ <item row="6" column="0">
+ <widget class="QLabel" name="label_10">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
- <horstretch>255</horstretch>
+ <horstretch>254</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
- <string/>
+ <string>X</string>
</property>
</widget>
</item>
- <item row="4" column="2">
- <widget class="QCheckBox" name="invert_pitch">
+ <item row="3" column="2">
+ <widget class="QCheckBox" name="invert_yaw_pre">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
<horstretch>255</horstretch>
@@ -1086,21 +1099,8 @@
</property>
</widget>
</item>
- <item row="3" column="0">
- <widget class="QLabel" name="label_7">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
- <horstretch>254</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Yaw</string>
- </property>
- </widget>
- </item>
- <item row="6" column="2">
- <widget class="QCheckBox" name="invert_x">
+ <item row="5" column="2">
+ <widget class="QCheckBox" name="invert_roll_pre">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
<horstretch>255</horstretch>
@@ -1112,21 +1112,8 @@
</property>
</widget>
</item>
- <item row="0" column="1">
- <widget class="QLabel" name="label_13">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
- <horstretch>254</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Source</string>
- </property>
- </widget>
- </item>
- <item row="5" column="1">
- <widget class="QComboBox" name="src_roll">
+ <item row="3" column="1">
+ <widget class="QComboBox" name="src_yaw">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
@@ -1170,8 +1157,21 @@
</item>
</widget>
</item>
- <item row="3" column="2">
- <widget class="QCheckBox" name="invert_yaw">
+ <item row="6" column="2">
+ <widget class="QCheckBox" name="invert_x_pre">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
+ <horstretch>255</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="3">
+ <widget class="QCheckBox" name="invert_yaw_post">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
<horstretch>255</horstretch>
@@ -1228,8 +1228,8 @@
</item>
</widget>
</item>
- <item row="8" column="0">
- <widget class="QLabel" name="label_12">
+ <item row="5" column="0">
+ <widget class="QLabel" name="label_9">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
<horstretch>254</horstretch>
@@ -1237,12 +1237,25 @@
</sizepolicy>
</property>
<property name="text">
- <string>Z</string>
+ <string>Roll</string>
</property>
</widget>
</item>
- <item row="8" column="2">
- <widget class="QCheckBox" name="invert_z">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_15">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
+ <horstretch>254</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Destination</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="2">
+ <widget class="QCheckBox" name="invert_pitch_pre">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
<horstretch>255</horstretch>
@@ -1254,8 +1267,8 @@
</property>
</widget>
</item>
- <item row="8" column="1">
- <widget class="QComboBox" name="src_z">
+ <item row="6" column="1">
+ <widget class="QComboBox" name="src_x">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
@@ -1304,8 +1317,21 @@
</item>
</widget>
</item>
- <item row="3" column="1">
- <widget class="QComboBox" name="src_yaw">
+ <item row="7" column="0">
+ <widget class="QLabel" name="label_11">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
+ <horstretch>254</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Y</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="1">
+ <widget class="QComboBox" name="src_roll">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
@@ -1349,21 +1375,21 @@
</item>
</widget>
</item>
- <item row="5" column="2">
- <widget class="QCheckBox" name="invert_roll">
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_7">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
- <horstretch>255</horstretch>
+ <horstretch>254</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
- <string/>
+ <string>Yaw</string>
</property>
</widget>
</item>
- <item row="0" column="2">
- <widget class="QLabel" name="label_14">
+ <item row="0" column="3">
+ <widget class="QLabel" name="label_19">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
<horstretch>254</horstretch>
@@ -1371,12 +1397,38 @@
</sizepolicy>
</property>
<property name="text">
- <string>Invert</string>
+ <string>Post-invert</string>
</property>
</widget>
</item>
- <item row="6" column="1">
- <widget class="QComboBox" name="src_x">
+ <item row="8" column="0">
+ <widget class="QLabel" name="label_12">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
+ <horstretch>254</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Z</string>
+ </property>
+ </widget>
+ </item>
+ <item row="8" column="2">
+ <widget class="QCheckBox" name="invert_z_pre">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
+ <horstretch>255</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="8" column="1">
+ <widget class="QComboBox" name="src_z">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
@@ -1425,42 +1477,81 @@
</item>
</widget>
</item>
- <item row="0" column="0">
- <widget class="QLabel" name="label_15">
+ <item row="7" column="2">
+ <widget class="QCheckBox" name="invert_y_pre">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
- <horstretch>254</horstretch>
+ <horstretch>255</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
- <string>Destination</string>
+ <string/>
</property>
</widget>
</item>
- <item row="7" column="0">
- <widget class="QLabel" name="label_11">
+ <item row="4" column="3">
+ <widget class="QCheckBox" name="invert_pitch_post">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
- <horstretch>254</horstretch>
+ <horstretch>255</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
- <string>Y</string>
+ <string/>
</property>
</widget>
</item>
- <item row="4" column="0">
- <widget class="QLabel" name="label_8">
+ <item row="5" column="3">
+ <widget class="QCheckBox" name="invert_roll_post">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
- <horstretch>254</horstretch>
+ <horstretch>255</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
- <string>Pitch</string>
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="3">
+ <widget class="QCheckBox" name="invert_x_post">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
+ <horstretch>255</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="3">
+ <widget class="QCheckBox" name="invert_y_post">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
+ <horstretch>255</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="8" column="3">
+ <widget class="QCheckBox" name="invert_z_post">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
+ <horstretch>255</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
</property>
</widget>
</item>
@@ -1469,23 +1560,30 @@
<zorder>label_13</zorder>
<zorder>label_14</zorder>
<zorder>src_yaw</zorder>
- <zorder>invert_yaw</zorder>
+ <zorder>invert_yaw_pre</zorder>
<zorder>label_7</zorder>
<zorder>src_pitch</zorder>
<zorder>label_8</zorder>
- <zorder>invert_pitch</zorder>
+ <zorder>invert_pitch_pre</zorder>
<zorder>label_9</zorder>
<zorder>src_roll</zorder>
- <zorder>invert_roll</zorder>
+ <zorder>invert_roll_pre</zorder>
<zorder>label_10</zorder>
<zorder>src_x</zorder>
- <zorder>invert_x</zorder>
+ <zorder>invert_x_pre</zorder>
<zorder>label_11</zorder>
<zorder>src_y</zorder>
- <zorder>invert_y</zorder>
+ <zorder>invert_y_pre</zorder>
<zorder>label_12</zorder>
<zorder>src_z</zorder>
- <zorder>invert_z</zorder>
+ <zorder>invert_z_pre</zorder>
+ <zorder>label_19</zorder>
+ <zorder>invert_yaw_post</zorder>
+ <zorder>invert_pitch_post</zorder>
+ <zorder>invert_roll_post</zorder>
+ <zorder>invert_x_post</zorder>
+ <zorder>invert_y_post</zorder>
+ <zorder>invert_z_post</zorder>
</widget>
</item>
<item>
@@ -2220,17 +2318,23 @@
<tabstop>trayp</tabstop>
<tabstop>tray_start</tabstop>
<tabstop>src_yaw</tabstop>
- <tabstop>invert_yaw</tabstop>
+ <tabstop>invert_yaw_pre</tabstop>
+ <tabstop>invert_yaw_post</tabstop>
<tabstop>src_pitch</tabstop>
- <tabstop>invert_pitch</tabstop>
+ <tabstop>invert_pitch_pre</tabstop>
+ <tabstop>invert_pitch_post</tabstop>
<tabstop>src_roll</tabstop>
- <tabstop>invert_roll</tabstop>
+ <tabstop>invert_roll_pre</tabstop>
+ <tabstop>invert_roll_post</tabstop>
<tabstop>src_x</tabstop>
- <tabstop>invert_x</tabstop>
+ <tabstop>invert_x_pre</tabstop>
+ <tabstop>invert_x_post</tabstop>
<tabstop>src_y</tabstop>
- <tabstop>invert_y</tabstop>
+ <tabstop>invert_y_pre</tabstop>
+ <tabstop>invert_y_post</tabstop>
<tabstop>src_z</tabstop>
- <tabstop>invert_z</tabstop>
+ <tabstop>invert_z_pre</tabstop>
+ <tabstop>invert_z_post</tabstop>
<tabstop>pos_rx</tabstop>
<tabstop>pos_ry</tabstop>
<tabstop>pos_rz</tabstop>
diff --git a/logic/pipeline.cpp b/logic/pipeline.cpp
index 2f88c8b1..2e8efe55 100644
--- a/logic/pipeline.cpp
+++ b/logic/pipeline.cpp
@@ -349,7 +349,7 @@ Pose pipeline::apply_center(const centering_state mode, Pose value) const
for (int i = 0; i < 6; i++)
// don't invert after reltrans
// inverting here doesn't break centering
- if (m(i).opts.invert)
+ if (m(i).opts.invert_pre)
value(i) = -value(i);
return value;
@@ -391,7 +391,7 @@ Pose pipeline::maybe_apply_filter(const Pose& value) const
Pose pipeline::apply_zero_pos(Pose value) const
{
for (int i = 0; i < 6; i++)
- value(i) += m(i).opts.zero * (m(i).opts.invert ? -1 : 1);
+ value(i) += m(i).opts.zero * (m(i).opts.invert_pre ? -1 : 1);
return value;
}
@@ -504,6 +504,10 @@ ok:
last_value = value;
value = apply_zero_pos(value);
+ for (int i = 0; i < 6; i++)
+ if (m(i).opts.invert_post)
+ value(i) = -value(i);
+
libs.pProtocol->pose(value, raw);
QMutexLocker foo(&mtx);
diff --git a/spline/axis-opts.cpp b/spline/axis-opts.cpp
index 59b0c15c..ca266136 100644
--- a/spline/axis-opts.cpp
+++ b/spline/axis-opts.cpp
@@ -31,7 +31,8 @@ axis_opts::axis_opts(QString pfx, Axis idx) :
axis_(idx),
zero(b_settings_window, n(pfx, "zero-pos"), 0),
src(b_settings_window, n(pfx, "source-index"), idx),
- invert(b_settings_window, n(pfx, "invert-sign"), false),
+ invert_post(b_settings_window, n(pfx, "invert-sign-post"), false),
+ invert_pre(b_settings_window, n(pfx, "invert-sign"), false),
altp(b_mapping_window, n(pfx, "alt-axis-sign"), false),
clamp_x_(b_mapping_window, n(pfx, "max-value"), get_max_x(idx)),
clamp_y_(b_mapping_window, n(pfx, "max-output-value"), get_max_y(idx))
diff --git a/spline/axis-opts.hpp b/spline/axis-opts.hpp
index b389f4b9..437a5faa 100644
--- a/spline/axis-opts.hpp
+++ b/spline/axis-opts.hpp
@@ -55,7 +55,7 @@ public:
bundle b_mapping_window{ make_bundle(axis_ == Axis(-1) ? QString() : "opentrack-mappings") };
value<double> zero;
value<int> src;
- value<bool> invert, altp;
+ value<bool> invert_pre, invert_post, altp;
value<max_clamp> clamp_x_, clamp_y_;
double max_clamp_x() const { return std::fabs(clamp_x_.to<double>()); }
double max_clamp_y() const { return std::fabs(clamp_y_.to<double>()); }