diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2024-02-08 16:06:47 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2024-02-08 19:19:06 +0100 |
commit | 9518808799cd34f3cd1497cdac5c163c1cbaf72b (patch) | |
tree | e3d58c1c63b6675daa086f7f4ed3cc36c11113ed | |
parent | 6f878a4c46a4947bb34cbdb566a9d07b676ecc48 (diff) |
add post-invert, rename invert to pre-invert
Requested by: a few people
-rw-r--r-- | gui/options-dialog.cpp | 19 | ||||
-rw-r--r-- | gui/settings-dialog.ui | 276 | ||||
-rw-r--r-- | logic/pipeline.cpp | 8 | ||||
-rw-r--r-- | spline/axis-opts.cpp | 3 | ||||
-rw-r--r-- | spline/axis-opts.hpp | 2 |
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>()); } |